Clean up stuff
All checks were successful
Build And Publish / BuildAndPublish (push) Successful in 3m9s

This commit is contained in:
Ryan Freeman 2025-03-21 21:25:18 +00:00
parent f6331e435a
commit 400e199c15
11 changed files with 281 additions and 281 deletions

View File

@ -3,7 +3,7 @@ import {Feed} from 'feed'
import {getAllArticles} from '@/lib/getAllArticles' import {getAllArticles} from '@/lib/getAllArticles'
export async function GET(req: NextRequest) { export async function GET(req: NextRequest) {
let siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? "" let siteUrl = process.env.NEXT_PUBLIC_SITE_URL ?? ''
let articles = await getAllArticles() let articles = await getAllArticles()
let author = { let author = {
name: 'Ryan Freeman', name: 'Ryan Freeman',

View File

@ -86,7 +86,7 @@ export default async function Reading() {
title: 'HTML and CSS', title: 'HTML and CSS',
author: 'Jon Duckett', author: 'Jon Duckett',
url: 'https://www.goodreads.com/book/show/10361330-html-and-css?from_search=true&from_srp=true&qid=OKIiricQbD&rank=1' url: 'https://www.goodreads.com/book/show/10361330-html-and-css?from_search=true&from_srp=true&qid=OKIiricQbD&rank=1'
}, }
] ]
return ( return (

View File

@ -1,12 +1,12 @@
import { MetadataRoute } from 'next' import {MetadataRoute} from 'next'
export default function robots(): MetadataRoute.Robots { export default function robots(): MetadataRoute.Robots {
return { return {
rules: { rules: {
userAgent: '*', userAgent: '*',
allow: '/', allow: '/',
disallow: '/private/', disallow: '/private/'
}, },
sitemap: 'https://ryanfreeman.dev/sitemap.xml', sitemap: 'https://ryanfreeman.dev/sitemap.xml'
} }
} }

View File

@ -1,8 +1,8 @@
export function formatDate(dateString: string) { export function formatDate(dateString: string) {
return new Date(`${dateString}T00:00:00Z`).toLocaleDateString('en-IE', { return new Date(`${dateString}`).toLocaleDateString('en-IE', {
day: 'numeric', day: 'numeric',
month: 'long', month: 'long',
year: 'numeric', year: 'numeric',
timeZone: 'UTC', timeZone: 'UTC'
}) })
} }

View File

@ -8,13 +8,13 @@ async function importArticle(articleFilename: string) {
return { return {
slug: articleFilename.replace(/(\/page)?\.mdx$/, ''), slug: articleFilename.replace(/(\/page)?\.mdx$/, ''),
...meta, ...meta,
component, component
} }
} }
export async function getAllArticles(dateDesc = true) { export async function getAllArticles(dateDesc = true) {
let articleFilenames = await glob(['*.mdx', '*/page.mdx'], { let articleFilenames = await glob(['*.mdx', '*/page.mdx'], {
cwd: path.join(process.cwd(), './app/writing'), cwd: path.join(process.cwd(), './app/writing')
}) })
let articles = await Promise.all(articleFilenames.map(importArticle)) let articles = await Promise.all(articleFilenames.map(importArticle))

View File

@ -3,7 +3,7 @@ import fetcher from '@/lib/fetcher'
const GITHUB_ACCESS_TOKEN = process.env.GITHUB_ACCESS_TOKEN const GITHUB_ACCESS_TOKEN = process.env.GITHUB_ACCESS_TOKEN
const GITHUB_USERNAME = process.env.GITHUB_USERNAME const GITHUB_USERNAME = process.env.GITHUB_USERNAME
const GITHUB_GRAPHQL = "https://api.github.com/graphql" const GITHUB_GRAPHQL = 'https://api.github.com/graphql'
type PinnedReposResponse = { type PinnedReposResponse = {
data: { data: {

View File

@ -3,9 +3,9 @@ import fetch from 'node-fetch'
const SPOTIFY_CLIENT_ID = process.env.SPOTIFY_CLIENT_ID const SPOTIFY_CLIENT_ID = process.env.SPOTIFY_CLIENT_ID
const SPOTIFY_CLIENT_SECRET = process.env.SPOTIFY_CLIENT_SECRET const SPOTIFY_CLIENT_SECRET = process.env.SPOTIFY_CLIENT_SECRET
const SPOTIFY_REFRESH_TOKEN = process.env.SPOTIFY_REFRESH_TOKEN const SPOTIFY_REFRESH_TOKEN = process.env.SPOTIFY_REFRESH_TOKEN
const SPOTIFY_TOKEN = "https://accounts.spotify.com/api/token" const SPOTIFY_TOKEN = 'https://accounts.spotify.com/api/token'
const SPOTIFY_CURRENTLY_PLAYING = "https://api.spotify.com/v1/me/player/currently-playing" const SPOTIFY_CURRENTLY_PLAYING = 'https://api.spotify.com/v1/me/player/currently-playing'
const SPOTIFY_RECENTLY_PLAYED = "https://api.spotify.com/v1/me/player/recently-played" const SPOTIFY_RECENTLY_PLAYED = 'https://api.spotify.com/v1/me/player/recently-played'
const basic = Buffer.from(`${SPOTIFY_CLIENT_ID}:${SPOTIFY_CLIENT_SECRET}`).toString('base64') const basic = Buffer.from(`${SPOTIFY_CLIENT_ID}:${SPOTIFY_CLIENT_SECRET}`).toString('base64')
@ -22,7 +22,7 @@ const getAccessToken = async () => {
method: 'POST', method: 'POST',
headers: { headers: {
Authorization: `Basic ${basic}`, Authorization: `Basic ${basic}`,
'Content-Type': 'application/x-www-form-urlencoded', 'Content-Type': 'application/x-www-form-urlencoded'
}, },
body: new URLSearchParams({ body: new URLSearchParams({
'grant_type': 'refresh_token', 'grant_type': 'refresh_token',

View File

@ -9,10 +9,10 @@ import {Heading} from './components/ui/Heading'
// This file is required to use MDX in `app` directory. // This file is required to use MDX in `app` directory.
export function useMDXComponents(components: MDXComponents): MDXComponents { export function useMDXComponents(components: MDXComponents): MDXComponents {
return { return {
h2: ({children}) => <Heading as='h2'>{children}</Heading>, h2: ({children}) => <Heading as="h2">{children}</Heading>,
h3: ({children}) => <Heading as='h3'>{children}</Heading>, h3: ({children}) => <Heading as="h3">{children}</Heading>,
// Allows customizing built-in components, e.g. to add styling. // Allows customizing built-in components, e.g. to add styling.
// h1: ({ children }) => <h1 style={{ fontSize: "100px" }}>{children}</h1>, // h1: ({ children }) => <h1 style={{ fontSize: "100px" }}>{children}</h1>,
...components, ...components
} }
} }

View File

@ -1,5 +1,5 @@
pre[class*='language-'] { pre[class*='language-'] {
color: theme('colors.zinc.100'); color: theme('colors.zinc.100');
} }
.token.tag, .token.tag,
@ -8,7 +8,7 @@ pre[class*='language-'] {
.token.selector .class, .token.selector .class,
.token.selector.class, .token.selector.class,
.token.function { .token.function {
color: theme('colors.pink.400'); color: theme('colors.pink.400');
} }
.token.attr-name, .token.attr-name,
@ -16,32 +16,32 @@ pre[class*='language-'] {
.token.rule, .token.rule,
.token.pseudo-class, .token.pseudo-class,
.token.important { .token.important {
color: theme('colors.zinc.300'); color: theme('colors.zinc.300');
} }
.token.module { .token.module {
color: theme('colors.pink.400'); color: theme('colors.pink.400');
} }
.token.attr-value, .token.attr-value,
.token.class, .token.class,
.token.string, .token.string,
.token.property { .token.property {
color: theme('colors.teal.300'); color: theme('colors.teal.300');
} }
.token.punctuation, .token.punctuation,
.token.attr-equals { .token.attr-equals {
color: theme('colors.zinc.500'); color: theme('colors.zinc.500');
} }
.token.unit, .token.unit,
.language-css .token.function { .language-css .token.function {
color: theme('colors.sky.200'); color: theme('colors.sky.200');
} }
.token.comment, .token.comment,
.token.operator, .token.operator,
.token.combinator { .token.combinator {
color: theme('colors.zinc.400'); color: theme('colors.zinc.400');
} }

View File

@ -33,7 +33,7 @@ export default {
'6xl': ['3.75rem', {lineHeight: '1'}], '6xl': ['3.75rem', {lineHeight: '1'}],
'7xl': ['4.5rem', {lineHeight: '1'}], '7xl': ['4.5rem', {lineHeight: '1'}],
'8xl': ['6rem', {lineHeight: '1'}], '8xl': ['6rem', {lineHeight: '1'}],
'9xl': ['8rem', {lineHeight: '1'}], '9xl': ['8rem', {lineHeight: '1'}]
}, },
typography: (theme: any) => ({ typography: (theme: any) => ({
invert: { invert: {
@ -57,8 +57,8 @@ export default {
'--tw-prose-pre-bg': 'var(--tw-prose-invert-pre-bg)', '--tw-prose-pre-bg': 'var(--tw-prose-invert-pre-bg)',
'--tw-prose-pre-border': 'var(--tw-prose-invert-pre-border)', '--tw-prose-pre-border': 'var(--tw-prose-invert-pre-border)',
'--tw-prose-th-borders': 'var(--tw-prose-invert-th-borders)', '--tw-prose-th-borders': 'var(--tw-prose-invert-th-borders)',
'--tw-prose-td-borders': 'var(--tw-prose-invert-td-borders)', '--tw-prose-td-borders': 'var(--tw-prose-invert-td-borders)'
}, }
}, },
DEFAULT: { DEFAULT: {
css: { css: {
@ -107,37 +107,37 @@ export default {
lineHeight: theme('lineHeight.7'), lineHeight: theme('lineHeight.7'),
'> *': { '> *': {
marginTop: theme('spacing.10'), marginTop: theme('spacing.10'),
marginBottom: theme('spacing.10'), marginBottom: theme('spacing.10')
}, },
p: { p: {
marginTop: theme('spacing.7'), marginTop: theme('spacing.7'),
marginBottom: theme('spacing.7'), marginBottom: theme('spacing.7')
}, },
// Headings // Headings
'h2, h3': { 'h2, h3': {
color: 'var(--tw-prose-headings)', color: 'var(--tw-prose-headings)',
fontWeight: theme('fontWeight.semibold'), fontWeight: theme('fontWeight.semibold')
}, },
h2: { h2: {
fontSize: theme('fontSize.xl')[0], fontSize: theme('fontSize.xl')[0],
lineHeight: theme('lineHeight.7'), lineHeight: theme('lineHeight.7'),
marginTop: theme('spacing.20'), marginTop: theme('spacing.20'),
marginBottom: theme('spacing.4'), marginBottom: theme('spacing.4')
}, },
h3: { h3: {
fontSize: theme('fontSize.base')[0], fontSize: theme('fontSize.base')[0],
lineHeight: theme('lineHeight.7'), lineHeight: theme('lineHeight.7'),
marginTop: theme('spacing.16'), marginTop: theme('spacing.16'),
marginBottom: theme('spacing.4'), marginBottom: theme('spacing.4')
}, },
':is(h2, h3) + *': { ':is(h2, h3) + *': {
marginTop: 0, marginTop: 0
}, },
// Images // Images
img: { img: {
borderRadius: theme('borderRadius.3xl'), borderRadius: theme('borderRadius.3xl')
}, },
// Inline elements // Inline elements
@ -148,15 +148,15 @@ export default {
textDecorationColor: 'var(--tw-prose-underline)', textDecorationColor: 'var(--tw-prose-underline)',
transitionProperty: 'color, text-decoration-color', transitionProperty: 'color, text-decoration-color',
transitionDuration: theme('transitionDuration.150'), transitionDuration: theme('transitionDuration.150'),
transitionTimingFunction: theme('transitionTimingFunction.in-out'), transitionTimingFunction: theme('transitionTimingFunction.in-out')
}, },
'a:hover': { 'a:hover': {
color: 'var(--tw-prose-links-hover)', color: 'var(--tw-prose-links-hover)',
textDecorationColor: 'var(--tw-prose-underline-hover)', textDecorationColor: 'var(--tw-prose-underline-hover)'
}, },
strong: { strong: {
color: 'var(--tw-prose-bold)', color: 'var(--tw-prose-bold)',
fontWeight: theme('fontWeight.semibold'), fontWeight: theme('fontWeight.semibold')
}, },
code: { code: {
display: 'inline-block', display: 'inline-block',
@ -166,13 +166,13 @@ export default {
backgroundColor: 'var(--tw-prose-code-bg)', backgroundColor: 'var(--tw-prose-code-bg)',
borderRadius: theme('borderRadius.lg'), borderRadius: theme('borderRadius.lg'),
paddingLeft: theme('spacing.1'), paddingLeft: theme('spacing.1'),
paddingRight: theme('spacing.1'), paddingRight: theme('spacing.1')
}, },
'a code': { 'a code': {
color: 'inherit', color: 'inherit'
}, },
':is(h2, h3) code': { ':is(h2, h3) code': {
fontWeight: theme('fontWeight.bold'), fontWeight: theme('fontWeight.bold')
}, },
// Quotes // Quotes
@ -180,7 +180,7 @@ export default {
paddingLeft: theme('spacing.6'), paddingLeft: theme('spacing.6'),
borderLeftWidth: theme('borderWidth.2'), borderLeftWidth: theme('borderWidth.2'),
borderLeftColor: 'var(--tw-prose-quote-borders)', borderLeftColor: 'var(--tw-prose-quote-borders)',
fontStyle: 'italic', fontStyle: 'italic'
}, },
// Figures // Figures
@ -188,44 +188,44 @@ export default {
color: 'var(--tw-prose-captions)', color: 'var(--tw-prose-captions)',
fontSize: theme('fontSize.sm')[0], fontSize: theme('fontSize.sm')[0],
lineHeight: theme('lineHeight.6'), lineHeight: theme('lineHeight.6'),
marginTop: theme('spacing.3'), marginTop: theme('spacing.3')
}, },
'figcaption > p': { 'figcaption > p': {
margin: 0, margin: 0
}, },
// Lists // Lists
ul: { ul: {
listStyleType: 'disc', listStyleType: 'disc'
}, },
ol: { ol: {
listStyleType: 'decimal', listStyleType: 'decimal'
}, },
'ul, ol': { 'ul, ol': {
paddingLeft: theme('spacing.6'), paddingLeft: theme('spacing.6')
}, },
li: { li: {
marginTop: theme('spacing.6'), marginTop: theme('spacing.6'),
marginBottom: theme('spacing.6'), marginBottom: theme('spacing.6'),
paddingLeft: theme('spacing[3.5]'), paddingLeft: theme('spacing[3.5]')
}, },
'li::marker': { 'li::marker': {
fontSize: theme('fontSize.sm')[0], fontSize: theme('fontSize.sm')[0],
fontWeight: theme('fontWeight.semibold'), fontWeight: theme('fontWeight.semibold')
}, },
'ol > li::marker': { 'ol > li::marker': {
color: 'var(--tw-prose-counters)', color: 'var(--tw-prose-counters)'
}, },
'ul > li::marker': { 'ul > li::marker': {
color: 'var(--tw-prose-bullets)', color: 'var(--tw-prose-bullets)'
}, },
'li :is(ol, ul)': { 'li :is(ol, ul)': {
marginTop: theme('spacing.4'), marginTop: theme('spacing.4'),
marginBottom: theme('spacing.4'), marginBottom: theme('spacing.4')
}, },
'li :is(li, p)': { 'li :is(li, p)': {
marginTop: theme('spacing.3'), marginTop: theme('spacing.3'),
marginBottom: theme('spacing.3'), marginBottom: theme('spacing.3')
}, },
// Code blocks // Code blocks
@ -238,7 +238,7 @@ export default {
padding: theme('spacing.8'), padding: theme('spacing.8'),
overflowX: 'auto', overflowX: 'auto',
border: '1px solid', border: '1px solid',
borderColor: 'var(--tw-prose-pre-border)', borderColor: 'var(--tw-prose-pre-border)'
}, },
'pre code': { 'pre code': {
display: 'inline', display: 'inline',
@ -247,7 +247,7 @@ export default {
fontWeight: 'inherit', fontWeight: 'inherit',
backgroundColor: 'transparent', backgroundColor: 'transparent',
borderRadius: 0, borderRadius: 0,
padding: 0, padding: 0
}, },
// Horizontal rules // Horizontal rules
@ -258,8 +258,8 @@ export default {
borderColor: 'var(--tw-prose-hr)', borderColor: 'var(--tw-prose-hr)',
'@screen lg': { '@screen lg': {
marginLeft: `calc(${theme('spacing.12')} * -1)`, marginLeft: `calc(${theme('spacing.12')} * -1)`,
marginRight: `calc(${theme('spacing.12')} * -1)`, marginRight: `calc(${theme('spacing.12')} * -1)`
}, }
}, },
// Tables // Tables
@ -267,54 +267,54 @@ export default {
width: '100%', width: '100%',
tableLayout: 'auto', tableLayout: 'auto',
textAlign: 'left', textAlign: 'left',
fontSize: theme('fontSize.sm')[0], fontSize: theme('fontSize.sm')[0]
}, },
thead: { thead: {
borderBottomWidth: '1px', borderBottomWidth: '1px',
borderBottomColor: 'var(--tw-prose-th-borders)', borderBottomColor: 'var(--tw-prose-th-borders)'
}, },
'thead th': { 'thead th': {
color: 'var(--tw-prose-headings)', color: 'var(--tw-prose-headings)',
fontWeight: theme('fontWeight.semibold'), fontWeight: theme('fontWeight.semibold'),
verticalAlign: 'bottom', verticalAlign: 'bottom',
paddingBottom: theme('spacing.2'), paddingBottom: theme('spacing.2')
}, },
'thead th:not(:first-child)': { 'thead th:not(:first-child)': {
paddingLeft: theme('spacing.2'), paddingLeft: theme('spacing.2')
}, },
'thead th:not(:last-child)': { 'thead th:not(:last-child)': {
paddingRight: theme('spacing.2'), paddingRight: theme('spacing.2')
}, },
'tbody tr': { 'tbody tr': {
borderBottomWidth: '1px', borderBottomWidth: '1px',
borderBottomColor: 'var(--tw-prose-td-borders)', borderBottomColor: 'var(--tw-prose-td-borders)'
}, },
'tbody tr:last-child': { 'tbody tr:last-child': {
borderBottomWidth: 0, borderBottomWidth: 0
}, },
'tbody td': { 'tbody td': {
verticalAlign: 'baseline', verticalAlign: 'baseline'
}, },
tfoot: { tfoot: {
borderTopWidth: '1px', borderTopWidth: '1px',
borderTopColor: 'var(--tw-prose-th-borders)', borderTopColor: 'var(--tw-prose-th-borders)'
}, },
'tfoot td': { 'tfoot td': {
verticalAlign: 'top', verticalAlign: 'top'
}, },
':is(tbody, tfoot) td': { ':is(tbody, tfoot) td': {
paddingTop: theme('spacing.2'), paddingTop: theme('spacing.2'),
paddingBottom: theme('spacing.2'), paddingBottom: theme('spacing.2')
}, },
':is(tbody, tfoot) td:not(:first-child)': { ':is(tbody, tfoot) td:not(:first-child)': {
paddingLeft: theme('spacing.2'), paddingLeft: theme('spacing.2')
}, },
':is(tbody, tfoot) td:not(:last-child)': { ':is(tbody, tfoot) td:not(:last-child)': {
paddingRight: theme('spacing.2'), paddingRight: theme('spacing.2')
}, }
}, }
}, }
}), })
}, }
} satisfies Config } satisfies Config

View File

@ -1,215 +1,215 @@
export type Json = export type Json =
| string | string
| number | number
| boolean | boolean
| null | null
| { [key: string]: Json } | { [key: string]: Json }
| Json[] | Json[]
export interface Database { export interface Database {
graphql_public: { graphql_public: {
Tables: { Tables: {
[_ in never]: never [_ in never]: never
} }
Views: { Views: {
[_ in never]: never [_ in never]: never
} }
Functions: { Functions: {
graphql: { graphql: {
Args: { Args: {
operationName?: string operationName?: string
query?: string query?: string
variables?: Json variables?: Json
extensions?: Json extensions?: Json
}
Returns: Json
}
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
} }
Returns: Json
}
} }
Enums: { public: {
[_ in never]: never Tables: {
[_ in never]: never
}
Views: {
[_ in never]: never
}
Functions: {
[_ in never]: never
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
}
} }
CompositeTypes: { storage: {
[_ in never]: never Tables: {
buckets: {
Row: {
allowed_mime_types: string[] | null
avif_autodetection: boolean | null
created_at: string | null
file_size_limit: number | null
id: string
name: string
owner: string | null
public: boolean | null
updated_at: string | null
}
Insert: {
allowed_mime_types?: string[] | null
avif_autodetection?: boolean | null
created_at?: string | null
file_size_limit?: number | null
id: string
name: string
owner?: string | null
public?: boolean | null
updated_at?: string | null
}
Update: {
allowed_mime_types?: string[] | null
avif_autodetection?: boolean | null
created_at?: string | null
file_size_limit?: number | null
id?: string
name?: string
owner?: string | null
public?: boolean | null
updated_at?: string | null
}
}
migrations: {
Row: {
executed_at: string | null
hash: string
id: number
name: string
}
Insert: {
executed_at?: string | null
hash: string
id: number
name: string
}
Update: {
executed_at?: string | null
hash?: string
id?: number
name?: string
}
}
objects: {
Row: {
bucket_id: string | null
created_at: string | null
id: string
last_accessed_at: string | null
metadata: Json | null
name: string | null
owner: string | null
path_tokens: string[] | null
updated_at: string | null
version: string | null
}
Insert: {
bucket_id?: string | null
created_at?: string | null
id?: string
last_accessed_at?: string | null
metadata?: Json | null
name?: string | null
owner?: string | null
path_tokens?: string[] | null
updated_at?: string | null
version?: string | null
}
Update: {
bucket_id?: string | null
created_at?: string | null
id?: string
last_accessed_at?: string | null
metadata?: Json | null
name?: string | null
owner?: string | null
path_tokens?: string[] | null
updated_at?: string | null
version?: string | null
}
}
}
Views: {
[_ in never]: never
}
Functions: {
can_insert_object: {
Args: {
bucketid: string
name: string
owner: string
metadata: Json
}
Returns: undefined
}
extension: {
Args: {
name: string
}
Returns: string
}
filename: {
Args: {
name: string
}
Returns: string
}
foldername: {
Args: {
name: string
}
Returns: string[]
}
get_size_by_bucket: {
Args: Record<PropertyKey, never>
Returns: {
size: number
bucket_id: string
}[]
}
search: {
Args: {
prefix: string
bucketname: string
limits?: number
levels?: number
offsets?: number
search?: string
sortcolumn?: string
sortorder?: string
}
Returns: {
name: string
id: string
updated_at: string
created_at: string
last_accessed_at: string
metadata: Json
}[]
}
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
}
} }
}
public: {
Tables: {
[_ in never]: never
}
Views: {
[_ in never]: never
}
Functions: {
[_ in never]: never
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
}
}
storage: {
Tables: {
buckets: {
Row: {
allowed_mime_types: string[] | null
avif_autodetection: boolean | null
created_at: string | null
file_size_limit: number | null
id: string
name: string
owner: string | null
public: boolean | null
updated_at: string | null
}
Insert: {
allowed_mime_types?: string[] | null
avif_autodetection?: boolean | null
created_at?: string | null
file_size_limit?: number | null
id: string
name: string
owner?: string | null
public?: boolean | null
updated_at?: string | null
}
Update: {
allowed_mime_types?: string[] | null
avif_autodetection?: boolean | null
created_at?: string | null
file_size_limit?: number | null
id?: string
name?: string
owner?: string | null
public?: boolean | null
updated_at?: string | null
}
}
migrations: {
Row: {
executed_at: string | null
hash: string
id: number
name: string
}
Insert: {
executed_at?: string | null
hash: string
id: number
name: string
}
Update: {
executed_at?: string | null
hash?: string
id?: number
name?: string
}
}
objects: {
Row: {
bucket_id: string | null
created_at: string | null
id: string
last_accessed_at: string | null
metadata: Json | null
name: string | null
owner: string | null
path_tokens: string[] | null
updated_at: string | null
version: string | null
}
Insert: {
bucket_id?: string | null
created_at?: string | null
id?: string
last_accessed_at?: string | null
metadata?: Json | null
name?: string | null
owner?: string | null
path_tokens?: string[] | null
updated_at?: string | null
version?: string | null
}
Update: {
bucket_id?: string | null
created_at?: string | null
id?: string
last_accessed_at?: string | null
metadata?: Json | null
name?: string | null
owner?: string | null
path_tokens?: string[] | null
updated_at?: string | null
version?: string | null
}
}
}
Views: {
[_ in never]: never
}
Functions: {
can_insert_object: {
Args: {
bucketid: string
name: string
owner: string
metadata: Json
}
Returns: undefined
}
extension: {
Args: {
name: string
}
Returns: string
}
filename: {
Args: {
name: string
}
Returns: string
}
foldername: {
Args: {
name: string
}
Returns: string[]
}
get_size_by_bucket: {
Args: Record<PropertyKey, never>
Returns: {
size: number
bucket_id: string
}[]
}
search: {
Args: {
prefix: string
bucketname: string
limits?: number
levels?: number
offsets?: number
search?: string
sortcolumn?: string
sortorder?: string
}
Returns: {
name: string
id: string
updated_at: string
created_at: string
last_accessed_at: string
metadata: Json
}[]
}
}
Enums: {
[_ in never]: never
}
CompositeTypes: {
[_ in never]: never
}
}
} }