Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/fix-typos.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ concurrency:
cancel-in-progress: true

permissions:
contents: read
contents: write
pull-requests: write

jobs:
Expand Down
5 changes: 3 additions & 2 deletions .github/workflows/studio-e2e-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,9 @@ jobs:
test:
timeout-minutes: 60
runs-on: blacksmith-4vcpu-ubuntu-2404
# Require approval only for pull requests from forks
environment: ${{ github.event_name == 'pull_request' && github.event.pull_request.head.repo.fork && 'Studio E2E Tests' || '' }}

env:
OPENAI_API_KEY: ${{ secrets.OPENAI_API_KEY }}

steps:
- uses: actions/checkout@08eba0b27e820071cde6df949e0beb9ba4906955 # v4.3.0
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -71,7 +71,7 @@ export default function PageLayoutList(): React.JSX.Element {
<Input
placeholder="Search for a function"
size="tiny"
icon={<Search size={14} />}
icon={<Search />}
className="w-full lg:w-52"
/>
</div>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -84221,6 +84221,63 @@ exports[`TS type spec parsing > matches snapshot 1`] = `
]
}
},
"@supabase/storage-js.packages/StorageAnalyticsClient.default.from": {
"name": "@supabase/storage-js.packages/StorageAnalyticsClient.default.from",
"params": [
{
"name": "bucketName",
"type": {
"type": "intrinsic",
"name": "string"
},
"comment": {
"shortText": "The name of the analytics bucket (warehouse) to connect to"
}
}
],
"ret": {
"type": {
"type": "nameOnly",
"name": "IcebergRestCatalog"
}
},
"comment": {
"shortText": "Get an Iceberg REST Catalog client configured for a specific analytics bucket\\nUse this to perform advanced table and namespace operations within the bucket\\nThe returned client provides full access to the Apache Iceberg REST Catalog API\\n\\n**Public alpha:** This API is part of a public alpha release and may not be available to your account type.",
"tags": [
{
"tag": "alpha",
"text": ""
}
],
"examples": [
{
"id": "get-catalog-and-create-table",
"name": "Get catalog and create table",
"code": "\`\`\`js\\n// First, create an analytics bucket\\nconst { data: bucket, error: bucketError } = await supabase\\n .storage\\n .analytics\\n .createBucket('analytics-data')\\n\\n// Get the Iceberg catalog for that bucket\\nconst catalog = supabase.storage.analytics.from('analytics-data')\\n\\n// Create a namespace\\nawait catalog.createNamespace({ namespace: ['default'] })\\n\\n// Create a table with schema\\nawait catalog.createTable(\\n { namespace: ['default'] },\\n {\\n name: 'events',\\n schema: {\\n type: 'struct',\\n fields: [\\n { id: 1, name: 'id', type: 'long', required: true },\\n { id: 2, name: 'timestamp', type: 'timestamp', required: true },\\n { id: 3, name: 'user_id', type: 'string', required: false }\\n ],\\n 'schema-id': 0,\\n 'identifier-field-ids': [1]\\n },\\n 'partition-spec': {\\n 'spec-id': 0,\\n fields: []\\n },\\n 'write-order': {\\n 'order-id': 0,\\n fields: []\\n },\\n properties: {\\n 'write.format.default': 'parquet'\\n }\\n }\\n)\\n\`\`\`"
},
{
"id": "list-tables-in-namespace",
"name": "List tables in namespace",
"code": "\`\`\`js\\nconst catalog = supabase.storage.analytics.from('analytics-data')\\n\\n// List all tables in the default namespace\\nconst tables = await catalog.listTables({ namespace: ['default'] })\\nconsole.log(tables) // [{ namespace: ['default'], name: 'events' }]\\n\`\`\`"
},
{
"id": "working-with-namespaces",
"name": "Working with namespaces",
"code": "\`\`\`js\\nconst catalog = supabase.storage.analytics.from('analytics-data')\\n\\n// List all namespaces\\nconst namespaces = await catalog.listNamespaces()\\n\\n// Create namespace with properties\\nawait catalog.createNamespace(\\n { namespace: ['production'] },\\n { properties: { owner: 'data-team', env: 'prod' } }\\n)\\n\`\`\`"
},
{
"id": "cleanup-operations",
"name": "Cleanup operations",
"code": "\`\`\`js\\nconst catalog = supabase.storage.analytics.from('analytics-data')\\n\\n// Drop table with purge option (removes all data)\\nawait catalog.dropTable(\\n { namespace: ['default'], name: 'events' },\\n { purge: true }\\n)\\n\\n// Drop namespace (must be empty)\\nawait catalog.dropNamespace({ namespace: ['default'] })\\n\`\`\`"
},
{
"id": "error-handling-with-catalog-operations",
"name": "Error handling with catalog operations",
"code": "\`\`\`js\\nimport { IcebergError } from 'iceberg-js'\\n\\nconst catalog = supabase.storage.analytics.from('analytics-data')\\n\\ntry {\\n await catalog.dropTable({ namespace: ['default'], name: 'events' }, { purge: true })\\n} catch (error) {\\n // Handle 404 errors (resource not found)\\n const is404 =\\n (error instanceof IcebergError && error.status === 404) ||\\n error?.status === 404 ||\\n error?.details?.error?.code === 404\\n\\n if (is404) {\\n console.log('Table does not exist')\\n } else {\\n throw error // Re-throw other errors\\n }\\n}\\n\`\`\`"
}
]
}
},
"@supabase/storage-js.packages/StorageAnalyticsClient.default.listBuckets": {
"name": "@supabase/storage-js.packages/StorageAnalyticsClient.default.listBuckets",
"params": [
Expand Down
2 changes: 2 additions & 0 deletions apps/docs/public/humans.txt
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ Alan De Los Santos
Aleksi Immonen
Alexander Korotkov
Ali Waseem
Allan S
Amy Q
Andrew Valleteau
Andrey A
Expand Down Expand Up @@ -111,6 +112,7 @@ Leonardo Santiago
Long Hoang
Luca Forstner
Łukasz Niemier
Maksym Ionutsa
Manan Gupta
Margarita Sandomirskaia
Mark Burggraf
Expand Down
7 changes: 7 additions & 0 deletions apps/docs/spec/common-client-libs-sections.json
Original file line number Diff line number Diff line change
Expand Up @@ -1059,6 +1059,13 @@
"product": "storage",
"type": "function",
"items": [
{
"id": "storageanalytics-from",
"title": "Access an analytics bucket",
"slug": "storageanalytics-from",
"type": "function",
"product": "storage"
},
{
"id": "storageanalytics-createbucket",
"title": "Create a new analytics bucket",
Expand Down
Loading
Loading