@supabase/storage-js 2.85.0 → 2.85.1-canary.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (32) hide show
  1. package/README.md +64 -0
  2. package/dist/main/lib/helpers.d.ts +16 -0
  3. package/dist/main/lib/helpers.d.ts.map +1 -1
  4. package/dist/main/lib/helpers.js +41 -1
  5. package/dist/main/lib/helpers.js.map +1 -1
  6. package/dist/main/lib/version.d.ts +1 -1
  7. package/dist/main/lib/version.d.ts.map +1 -1
  8. package/dist/main/lib/version.js +1 -1
  9. package/dist/main/lib/version.js.map +1 -1
  10. package/dist/main/packages/StorageAnalyticsClient.d.ts +137 -0
  11. package/dist/main/packages/StorageAnalyticsClient.d.ts.map +1 -1
  12. package/dist/main/packages/StorageAnalyticsClient.js +156 -0
  13. package/dist/main/packages/StorageAnalyticsClient.js.map +1 -1
  14. package/dist/module/lib/helpers.d.ts +16 -0
  15. package/dist/module/lib/helpers.d.ts.map +1 -1
  16. package/dist/module/lib/helpers.js +39 -0
  17. package/dist/module/lib/helpers.js.map +1 -1
  18. package/dist/module/lib/version.d.ts +1 -1
  19. package/dist/module/lib/version.d.ts.map +1 -1
  20. package/dist/module/lib/version.js +1 -1
  21. package/dist/module/lib/version.js.map +1 -1
  22. package/dist/module/packages/StorageAnalyticsClient.d.ts +137 -0
  23. package/dist/module/packages/StorageAnalyticsClient.d.ts.map +1 -1
  24. package/dist/module/packages/StorageAnalyticsClient.js +158 -2
  25. package/dist/module/packages/StorageAnalyticsClient.js.map +1 -1
  26. package/dist/tsconfig.module.tsbuildinfo +1 -1
  27. package/dist/tsconfig.tsbuildinfo +1 -1
  28. package/dist/umd/supabase.js +1 -1
  29. package/package.json +2 -1
  30. package/src/lib/helpers.ts +44 -0
  31. package/src/lib/version.ts +1 -1
  32. package/src/packages/StorageAnalyticsClient.ts +161 -1
package/README.md CHANGED
@@ -488,6 +488,70 @@ if (error) {
488
488
 
489
489
  > **Note:** A bucket cannot be deleted if it contains data. You must empty the bucket first.
490
490
 
491
+ #### Get Iceberg Catalog for Advanced Operations
492
+
493
+ For advanced operations like creating tables, namespaces, and querying Iceberg metadata, use the `from()` method to get a configured [iceberg-js](https://github.com/supabase/iceberg-js) client:
494
+
495
+ ```typescript
496
+ // Get an Iceberg REST Catalog client for your analytics bucket
497
+ const catalog = analytics.from('analytics-data')
498
+
499
+ // Create a namespace
500
+ await catalog.createNamespace({ namespace: ['default'] }, { properties: { owner: 'data-team' } })
501
+
502
+ // Create a table with schema
503
+ await catalog.createTable(
504
+ { namespace: ['default'] },
505
+ {
506
+ name: 'events',
507
+ schema: {
508
+ type: 'struct',
509
+ fields: [
510
+ { id: 1, name: 'id', type: 'long', required: true },
511
+ { id: 2, name: 'timestamp', type: 'timestamp', required: true },
512
+ { id: 3, name: 'user_id', type: 'string', required: false },
513
+ ],
514
+ 'schema-id': 0,
515
+ 'identifier-field-ids': [1],
516
+ },
517
+ 'partition-spec': {
518
+ 'spec-id': 0,
519
+ fields: [],
520
+ },
521
+ 'write-order': {
522
+ 'order-id': 0,
523
+ fields: [],
524
+ },
525
+ properties: {
526
+ 'write.format.default': 'parquet',
527
+ },
528
+ }
529
+ )
530
+
531
+ // List tables in namespace
532
+ const tables = await catalog.listTables({ namespace: ['default'] })
533
+ console.log(tables) // [{ namespace: ['default'], name: 'events' }]
534
+
535
+ // Load table metadata
536
+ const table = await catalog.loadTable({ namespace: ['default'], name: 'events' })
537
+
538
+ // Update table properties
539
+ await catalog.updateTable(
540
+ { namespace: ['default'], name: 'events' },
541
+ { properties: { 'read.split.target-size': '134217728' } }
542
+ )
543
+
544
+ // Drop table
545
+ await catalog.dropTable({ namespace: ['default'], name: 'events' })
546
+
547
+ // Drop namespace
548
+ await catalog.dropNamespace({ namespace: ['default'] })
549
+ ```
550
+
551
+ **Returns:** `IcebergRestCatalog` instance from [iceberg-js](https://github.com/supabase/iceberg-js)
552
+
553
+ > **Note:** The `from()` method returns an Iceberg REST Catalog client that provides full access to the Apache Iceberg REST API. For complete documentation of available operations, see the [iceberg-js documentation](https://supabase.github.io/iceberg-js/).
554
+
491
555
  ### Error Handling
492
556
 
493
557
  Analytics buckets use the same error handling pattern as the rest of the Storage SDK:
@@ -8,5 +8,21 @@ export declare const recursiveToCamel: (item: Record<string, any>) => unknown;
8
8
  * source: https://github.com/sindresorhus/is-plain-obj
9
9
  */
10
10
  export declare const isPlainObject: (value: object) => boolean;
11
+ /**
12
+ * Validates if a given bucket name is valid according to Supabase Storage API rules
13
+ * Mirrors backend validation from: storage/src/storage/limits.ts:isValidBucketName()
14
+ *
15
+ * Rules:
16
+ * - Length: 1-100 characters
17
+ * - Allowed characters: alphanumeric (a-z, A-Z, 0-9), underscore (_), and safe special characters
18
+ * - Safe special characters: ! - . * ' ( ) space & $ @ = ; : + , ?
19
+ * - Forbidden: path separators (/, \), path traversal (..), leading/trailing whitespace
20
+ *
21
+ * AWS S3 Reference: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
22
+ *
23
+ * @param bucketName - The bucket name to validate
24
+ * @returns true if valid, false otherwise
25
+ */
26
+ export declare const isValidBucketName: (bucketName: string) => boolean;
11
27
  export {};
12
28
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAKlD,CAAA;AAED,eAAO,MAAM,eAAe,QAAO,OAAO,QAEzC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAc5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAa7C,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAKlD,CAAA;AAED,eAAO,MAAM,eAAe,QAAO,OAAO,QAEzC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAc5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAa7C,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,KAAG,OA2BtD,CAAA"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isPlainObject = exports.recursiveToCamel = exports.resolveResponse = exports.resolveFetch = void 0;
3
+ exports.isValidBucketName = exports.isPlainObject = exports.recursiveToCamel = exports.resolveResponse = exports.resolveFetch = void 0;
4
4
  const resolveFetch = (customFetch) => {
5
5
  if (customFetch) {
6
6
  return (...args) => customFetch(...args);
@@ -44,4 +44,44 @@ const isPlainObject = (value) => {
44
44
  !(Symbol.iterator in value));
45
45
  };
46
46
  exports.isPlainObject = isPlainObject;
47
+ /**
48
+ * Validates if a given bucket name is valid according to Supabase Storage API rules
49
+ * Mirrors backend validation from: storage/src/storage/limits.ts:isValidBucketName()
50
+ *
51
+ * Rules:
52
+ * - Length: 1-100 characters
53
+ * - Allowed characters: alphanumeric (a-z, A-Z, 0-9), underscore (_), and safe special characters
54
+ * - Safe special characters: ! - . * ' ( ) space & $ @ = ; : + , ?
55
+ * - Forbidden: path separators (/, \), path traversal (..), leading/trailing whitespace
56
+ *
57
+ * AWS S3 Reference: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
58
+ *
59
+ * @param bucketName - The bucket name to validate
60
+ * @returns true if valid, false otherwise
61
+ */
62
+ const isValidBucketName = (bucketName) => {
63
+ if (!bucketName || typeof bucketName !== 'string') {
64
+ return false;
65
+ }
66
+ // Check length constraints (1-100 characters)
67
+ if (bucketName.length === 0 || bucketName.length > 100) {
68
+ return false;
69
+ }
70
+ // Check for leading/trailing whitespace
71
+ if (bucketName.trim() !== bucketName) {
72
+ return false;
73
+ }
74
+ // Explicitly reject path separators (security)
75
+ // Note: Consecutive periods (..) are allowed by backend - the AWS restriction
76
+ // on relative paths applies to object keys, not bucket names
77
+ if (bucketName.includes('/') || bucketName.includes('\\')) {
78
+ return false;
79
+ }
80
+ // Validate against allowed character set
81
+ // Pattern matches backend regex: /^(\w|!|-|\.|\*|'|\(|\)| |&|\$|@|=|;|:|\+|,|\?)*$/
82
+ // This explicitly excludes path separators (/, \) and other problematic characters
83
+ const bucketNameRegex = /^[\w!.\*'() &$@=;:+,?-]+$/;
84
+ return bucketNameRegex.test(bucketName);
85
+ };
86
+ exports.isValidBucketName = isValidBucketName;
47
87
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":";;;AAEO,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAS,EAAE;IACzD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;AACpC,CAAC,CAAA;AALY,QAAA,YAAY,gBAKxB;AAEM,MAAM,eAAe,GAAG,GAAoB,EAAE;IACnD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAFY,QAAA,eAAe,mBAE3B;AAEM,MAAM,gBAAgB,GAAG,CAAC,IAAyB,EAAW,EAAE;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,IAAA,wBAAgB,EAAC,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,CAAA;IACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;QACxF,MAAM,CAAC,MAAM,CAAC,GAAG,IAAA,wBAAgB,EAAC,KAAK,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAdY,QAAA,gBAAgB,oBAc5B;AAED;;;;GAIG;AACI,MAAM,aAAa,GAAG,CAAC,KAAa,EAAW,EAAE;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,CACL,CAAC,SAAS,KAAK,IAAI;QACjB,SAAS,KAAK,MAAM,CAAC,SAAS;QAC9B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;QAC5C,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,CAC5B,CAAA;AACH,CAAC,CAAA;AAbY,QAAA,aAAa,iBAazB"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const version = "2.85.0";
1
+ export declare const version = "2.85.1-canary.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,WAAW,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,oBAAoB,CAAA"}
@@ -7,5 +7,5 @@ exports.version = void 0;
7
7
  // - Debugging and support (identifying which version is running)
8
8
  // - Telemetry and logging (version reporting in errors/analytics)
9
9
  // - Ensuring build artifacts match the published package version
10
- exports.version = '2.85.0';
10
+ exports.version = '2.85.1-canary.0';
11
11
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAC7E,gEAAgE;AAChE,uEAAuE;AACvE,iEAAiE;AACjE,kEAAkE;AAClE,iEAAiE;AACpD,QAAA,OAAO,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":";;;AAAA,6EAA6E;AAC7E,gEAAgE;AAChE,uEAAuE;AACvE,iEAAiE;AACjE,kEAAkE;AAClE,iEAAiE;AACpD,QAAA,OAAO,GAAG,iBAAiB,CAAA"}
@@ -1,3 +1,4 @@
1
+ import { IcebergRestCatalog } from 'iceberg-js';
1
2
  import { StorageError } from '../lib/errors';
2
3
  import { Fetch } from '../lib/fetch';
3
4
  import { AnalyticBucket } from '../lib/types';
@@ -184,5 +185,141 @@ export default class StorageAnalyticsClient {
184
185
  data: null;
185
186
  error: StorageError;
186
187
  }>;
188
+ /**
189
+ * @alpha
190
+ *
191
+ * Get an Iceberg REST Catalog client configured for a specific analytics bucket
192
+ * Use this to perform advanced table and namespace operations within the bucket
193
+ * The returned client provides full access to the Apache Iceberg REST Catalog API
194
+ *
195
+ * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.
196
+ *
197
+ * @category Analytics Buckets
198
+ * @param bucketName - The name of the analytics bucket (warehouse) to connect to
199
+ * @returns Configured IcebergRestCatalog instance for advanced Iceberg operations
200
+ *
201
+ * @example Get catalog and create table
202
+ * ```js
203
+ * // First, create an analytics bucket
204
+ * const { data: bucket, error: bucketError } = await supabase
205
+ * .storage
206
+ * .analytics
207
+ * .createBucket('analytics-data')
208
+ *
209
+ * // Get the Iceberg catalog for that bucket
210
+ * const catalog = supabase.storage.analytics.from('analytics-data')
211
+ *
212
+ * // Create a namespace
213
+ * await catalog.createNamespace({ namespace: ['default'] })
214
+ *
215
+ * // Create a table with schema
216
+ * await catalog.createTable(
217
+ * { namespace: ['default'] },
218
+ * {
219
+ * name: 'events',
220
+ * schema: {
221
+ * type: 'struct',
222
+ * fields: [
223
+ * { id: 1, name: 'id', type: 'long', required: true },
224
+ * { id: 2, name: 'timestamp', type: 'timestamp', required: true },
225
+ * { id: 3, name: 'user_id', type: 'string', required: false }
226
+ * ],
227
+ * 'schema-id': 0,
228
+ * 'identifier-field-ids': [1]
229
+ * },
230
+ * 'partition-spec': {
231
+ * 'spec-id': 0,
232
+ * fields: []
233
+ * },
234
+ * 'write-order': {
235
+ * 'order-id': 0,
236
+ * fields: []
237
+ * },
238
+ * properties: {
239
+ * 'write.format.default': 'parquet'
240
+ * }
241
+ * }
242
+ * )
243
+ * ```
244
+ *
245
+ * @example List tables in namespace
246
+ * ```js
247
+ * const catalog = supabase.storage.analytics.from('analytics-data')
248
+ *
249
+ * // List all tables in the default namespace
250
+ * const tables = await catalog.listTables({ namespace: ['default'] })
251
+ * console.log(tables) // [{ namespace: ['default'], name: 'events' }]
252
+ * ```
253
+ *
254
+ * @example Working with namespaces
255
+ * ```js
256
+ * const catalog = supabase.storage.analytics.from('analytics-data')
257
+ *
258
+ * // List all namespaces
259
+ * const namespaces = await catalog.listNamespaces()
260
+ *
261
+ * // Create namespace with properties
262
+ * await catalog.createNamespace(
263
+ * { namespace: ['production'] },
264
+ * { properties: { owner: 'data-team', env: 'prod' } }
265
+ * )
266
+ * ```
267
+ *
268
+ * @example Cleanup operations
269
+ * ```js
270
+ * const catalog = supabase.storage.analytics.from('analytics-data')
271
+ *
272
+ * // Drop table with purge option (removes all data)
273
+ * await catalog.dropTable(
274
+ * { namespace: ['default'], name: 'events' },
275
+ * { purge: true }
276
+ * )
277
+ *
278
+ * // Drop namespace (must be empty)
279
+ * await catalog.dropNamespace({ namespace: ['default'] })
280
+ * ```
281
+ *
282
+ * @example Error handling with catalog operations
283
+ * ```js
284
+ * import { IcebergError } from 'iceberg-js'
285
+ *
286
+ * const catalog = supabase.storage.analytics.from('analytics-data')
287
+ *
288
+ * try {
289
+ * await catalog.dropTable({ namespace: ['default'], name: 'events' }, { purge: true })
290
+ * } catch (error) {
291
+ * // Handle 404 errors (resource not found)
292
+ * const is404 =
293
+ * (error instanceof IcebergError && error.status === 404) ||
294
+ * error?.status === 404 ||
295
+ * error?.details?.error?.code === 404
296
+ *
297
+ * if (is404) {
298
+ * console.log('Table does not exist')
299
+ * } else {
300
+ * throw error // Re-throw other errors
301
+ * }
302
+ * }
303
+ * ```
304
+ *
305
+ * @remarks
306
+ * This method provides a bridge between Supabase's bucket management and the standard
307
+ * Apache Iceberg REST Catalog API. The bucket name maps to the Iceberg warehouse parameter.
308
+ * All authentication and configuration is handled automatically using your Supabase credentials.
309
+ *
310
+ * **Error Handling**: Operations may throw `IcebergError` from the iceberg-js library.
311
+ * Always handle 404 errors gracefully when checking for resource existence.
312
+ *
313
+ * **Cleanup Operations**: When using `dropTable`, the `purge: true` option permanently
314
+ * deletes all table data. Without it, the table is marked as deleted but data remains.
315
+ *
316
+ * **Library Dependency**: The returned catalog is an instance of `IcebergRestCatalog`
317
+ * from iceberg-js. For complete API documentation and advanced usage, refer to the
318
+ * [iceberg-js documentation](https://supabase.github.io/iceberg-js/).
319
+ *
320
+ * For advanced Iceberg operations beyond bucket management, you can also install and use
321
+ * the `iceberg-js` package directly with manual configuration.
322
+ */
323
+ from(bucketName: string): IcebergRestCatalog;
187
324
  }
188
325
  //# sourceMappingURL=StorageAnalyticsClient.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"StorageAnalyticsClient.d.ts","sourceRoot":"","sources":["../../../src/packages/StorageAnalyticsClient.ts"],"names":[],"mappings":"AACA,OAAO,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAqB,MAAM,cAAc,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACzC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;IACtB,SAAS,CAAC,kBAAkB,UAAQ;IAEpC;;;;;;;;;;;;;;;;OAgBG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,EAAE,KAAK,CAAC,EAAE,KAAK;IAM/E;;;;;;;;;;OAUG;IACI,YAAY,IAAI,IAAI;IAK3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CACrC;QACE,IAAI,EAAE,cAAc,CAAA;QACpB,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QACE,IAAI,EAAE,IAAI,CAAA;QACV,KAAK,EAAE,YAAY,CAAA;KACpB,CACJ;IAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAA;QACjD,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,OAAO,CACP;QACE,IAAI,EAAE,cAAc,EAAE,CAAA;QACtB,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QACE,IAAI,EAAE,IAAI,CAAA;QACV,KAAK,EAAE,YAAY,CAAA;KACpB,CACJ;IA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAC3C;QACE,IAAI,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;QACzB,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QACE,IAAI,EAAE,IAAI,CAAA;QACV,KAAK,EAAE,YAAY,CAAA;KACpB,CACJ;CAoBF"}
1
+ {"version":3,"file":"StorageAnalyticsClient.d.ts","sourceRoot":"","sources":["../../../src/packages/StorageAnalyticsClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAA;AAE/C,OAAO,EAAkB,YAAY,EAAE,MAAM,eAAe,CAAA;AAC5D,OAAO,EAAE,KAAK,EAAqB,MAAM,cAAc,CAAA;AAEvD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAA;AAE7C;;;GAGG;AACH,MAAM,CAAC,OAAO,OAAO,sBAAsB;IACzC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAA;IACrB,SAAS,CAAC,OAAO,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,CAAA;IAC5C,SAAS,CAAC,KAAK,EAAE,KAAK,CAAA;IACtB,SAAS,CAAC,kBAAkB,UAAQ;IAEpC;;;;;;;;;;;;;;;;OAgBG;gBACS,GAAG,EAAE,MAAM,EAAE,OAAO,GAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAO,EAAE,KAAK,CAAC,EAAE,KAAK;IAM/E;;;;;;;;;;OAUG;IACI,YAAY,IAAI,IAAI;IAK3B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;IACG,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CACrC;QACE,IAAI,EAAE,cAAc,CAAA;QACpB,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QACE,IAAI,EAAE,IAAI,CAAA;QACV,KAAK,EAAE,YAAY,CAAA;KACpB,CACJ;IAgBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6CG;IACG,WAAW,CAAC,OAAO,CAAC,EAAE;QAC1B,KAAK,CAAC,EAAE,MAAM,CAAA;QACd,MAAM,CAAC,EAAE,MAAM,CAAA;QACf,UAAU,CAAC,EAAE,MAAM,GAAG,YAAY,GAAG,YAAY,CAAA;QACjD,SAAS,CAAC,EAAE,KAAK,GAAG,MAAM,CAAA;QAC1B,MAAM,CAAC,EAAE,MAAM,CAAA;KAChB,GAAG,OAAO,CACP;QACE,IAAI,EAAE,cAAc,EAAE,CAAA;QACtB,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QACE,IAAI,EAAE,IAAI,CAAA;QACV,KAAK,EAAE,YAAY,CAAA;KACpB,CACJ;IA4BD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA8BG;IACG,YAAY,CAAC,UAAU,EAAE,MAAM,GAAG,OAAO,CAC3C;QACE,IAAI,EAAE;YAAE,OAAO,EAAE,MAAM,CAAA;SAAE,CAAA;QACzB,KAAK,EAAE,IAAI,CAAA;KACZ,GACD;QACE,IAAI,EAAE,IAAI,CAAA;QACV,KAAK,EAAE,YAAY,CAAA;KACpB,CACJ;IAqBD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAsIG;IACH,IAAI,CAAC,UAAU,EAAE,MAAM,GAAG,kBAAkB;CAuB7C"}
@@ -1,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  const tslib_1 = require("tslib");
4
+ const iceberg_js_1 = require("iceberg-js");
4
5
  const constants_1 = require("../lib/constants");
5
6
  const errors_1 = require("../lib/errors");
6
7
  const fetch_1 = require("../lib/fetch");
@@ -224,6 +225,161 @@ class StorageAnalyticsClient {
224
225
  }
225
226
  });
226
227
  }
228
+ /**
229
+ * @alpha
230
+ *
231
+ * Get an Iceberg REST Catalog client configured for a specific analytics bucket
232
+ * Use this to perform advanced table and namespace operations within the bucket
233
+ * The returned client provides full access to the Apache Iceberg REST Catalog API
234
+ *
235
+ * **Public alpha:** This API is part of a public alpha release and may not be available to your account type.
236
+ *
237
+ * @category Analytics Buckets
238
+ * @param bucketName - The name of the analytics bucket (warehouse) to connect to
239
+ * @returns Configured IcebergRestCatalog instance for advanced Iceberg operations
240
+ *
241
+ * @example Get catalog and create table
242
+ * ```js
243
+ * // First, create an analytics bucket
244
+ * const { data: bucket, error: bucketError } = await supabase
245
+ * .storage
246
+ * .analytics
247
+ * .createBucket('analytics-data')
248
+ *
249
+ * // Get the Iceberg catalog for that bucket
250
+ * const catalog = supabase.storage.analytics.from('analytics-data')
251
+ *
252
+ * // Create a namespace
253
+ * await catalog.createNamespace({ namespace: ['default'] })
254
+ *
255
+ * // Create a table with schema
256
+ * await catalog.createTable(
257
+ * { namespace: ['default'] },
258
+ * {
259
+ * name: 'events',
260
+ * schema: {
261
+ * type: 'struct',
262
+ * fields: [
263
+ * { id: 1, name: 'id', type: 'long', required: true },
264
+ * { id: 2, name: 'timestamp', type: 'timestamp', required: true },
265
+ * { id: 3, name: 'user_id', type: 'string', required: false }
266
+ * ],
267
+ * 'schema-id': 0,
268
+ * 'identifier-field-ids': [1]
269
+ * },
270
+ * 'partition-spec': {
271
+ * 'spec-id': 0,
272
+ * fields: []
273
+ * },
274
+ * 'write-order': {
275
+ * 'order-id': 0,
276
+ * fields: []
277
+ * },
278
+ * properties: {
279
+ * 'write.format.default': 'parquet'
280
+ * }
281
+ * }
282
+ * )
283
+ * ```
284
+ *
285
+ * @example List tables in namespace
286
+ * ```js
287
+ * const catalog = supabase.storage.analytics.from('analytics-data')
288
+ *
289
+ * // List all tables in the default namespace
290
+ * const tables = await catalog.listTables({ namespace: ['default'] })
291
+ * console.log(tables) // [{ namespace: ['default'], name: 'events' }]
292
+ * ```
293
+ *
294
+ * @example Working with namespaces
295
+ * ```js
296
+ * const catalog = supabase.storage.analytics.from('analytics-data')
297
+ *
298
+ * // List all namespaces
299
+ * const namespaces = await catalog.listNamespaces()
300
+ *
301
+ * // Create namespace with properties
302
+ * await catalog.createNamespace(
303
+ * { namespace: ['production'] },
304
+ * { properties: { owner: 'data-team', env: 'prod' } }
305
+ * )
306
+ * ```
307
+ *
308
+ * @example Cleanup operations
309
+ * ```js
310
+ * const catalog = supabase.storage.analytics.from('analytics-data')
311
+ *
312
+ * // Drop table with purge option (removes all data)
313
+ * await catalog.dropTable(
314
+ * { namespace: ['default'], name: 'events' },
315
+ * { purge: true }
316
+ * )
317
+ *
318
+ * // Drop namespace (must be empty)
319
+ * await catalog.dropNamespace({ namespace: ['default'] })
320
+ * ```
321
+ *
322
+ * @example Error handling with catalog operations
323
+ * ```js
324
+ * import { IcebergError } from 'iceberg-js'
325
+ *
326
+ * const catalog = supabase.storage.analytics.from('analytics-data')
327
+ *
328
+ * try {
329
+ * await catalog.dropTable({ namespace: ['default'], name: 'events' }, { purge: true })
330
+ * } catch (error) {
331
+ * // Handle 404 errors (resource not found)
332
+ * const is404 =
333
+ * (error instanceof IcebergError && error.status === 404) ||
334
+ * error?.status === 404 ||
335
+ * error?.details?.error?.code === 404
336
+ *
337
+ * if (is404) {
338
+ * console.log('Table does not exist')
339
+ * } else {
340
+ * throw error // Re-throw other errors
341
+ * }
342
+ * }
343
+ * ```
344
+ *
345
+ * @remarks
346
+ * This method provides a bridge between Supabase's bucket management and the standard
347
+ * Apache Iceberg REST Catalog API. The bucket name maps to the Iceberg warehouse parameter.
348
+ * All authentication and configuration is handled automatically using your Supabase credentials.
349
+ *
350
+ * **Error Handling**: Operations may throw `IcebergError` from the iceberg-js library.
351
+ * Always handle 404 errors gracefully when checking for resource existence.
352
+ *
353
+ * **Cleanup Operations**: When using `dropTable`, the `purge: true` option permanently
354
+ * deletes all table data. Without it, the table is marked as deleted but data remains.
355
+ *
356
+ * **Library Dependency**: The returned catalog is an instance of `IcebergRestCatalog`
357
+ * from iceberg-js. For complete API documentation and advanced usage, refer to the
358
+ * [iceberg-js documentation](https://supabase.github.io/iceberg-js/).
359
+ *
360
+ * For advanced Iceberg operations beyond bucket management, you can also install and use
361
+ * the `iceberg-js` package directly with manual configuration.
362
+ */
363
+ from(bucketName) {
364
+ // Validate bucket name using same rules as Supabase Storage API backend
365
+ if (!(0, helpers_1.isValidBucketName)(bucketName)) {
366
+ throw new errors_1.StorageError('Invalid bucket name: File, folder, and bucket names must follow AWS object key naming guidelines ' +
367
+ 'and should avoid the use of any other characters.');
368
+ }
369
+ // Construct the Iceberg REST Catalog URL
370
+ // The base URL is /storage/v1/iceberg
371
+ // Note: IcebergRestCatalog from iceberg-js automatically adds /v1/ prefix to API paths
372
+ // so we should NOT append /v1 here (it would cause double /v1/v1/ in the URL)
373
+ return new iceberg_js_1.IcebergRestCatalog({
374
+ baseUrl: this.url,
375
+ catalogName: bucketName, // Maps to the warehouse parameter in Supabase's implementation
376
+ auth: {
377
+ type: 'custom',
378
+ getHeaders: () => tslib_1.__awaiter(this, void 0, void 0, function* () { return this.headers; }),
379
+ },
380
+ fetch: this.fetch,
381
+ });
382
+ }
227
383
  }
228
384
  exports.default = StorageAnalyticsClient;
229
385
  //# sourceMappingURL=StorageAnalyticsClient.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"StorageAnalyticsClient.js","sourceRoot":"","sources":["../../../src/packages/StorageAnalyticsClient.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"StorageAnalyticsClient.js","sourceRoot":"","sources":["../../../src/packages/StorageAnalyticsClient.ts"],"names":[],"mappings":"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"}
@@ -8,5 +8,21 @@ export declare const recursiveToCamel: (item: Record<string, any>) => unknown;
8
8
  * source: https://github.com/sindresorhus/is-plain-obj
9
9
  */
10
10
  export declare const isPlainObject: (value: object) => boolean;
11
+ /**
12
+ * Validates if a given bucket name is valid according to Supabase Storage API rules
13
+ * Mirrors backend validation from: storage/src/storage/limits.ts:isValidBucketName()
14
+ *
15
+ * Rules:
16
+ * - Length: 1-100 characters
17
+ * - Allowed characters: alphanumeric (a-z, A-Z, 0-9), underscore (_), and safe special characters
18
+ * - Safe special characters: ! - . * ' ( ) space & $ @ = ; : + , ?
19
+ * - Forbidden: path separators (/, \), path traversal (..), leading/trailing whitespace
20
+ *
21
+ * AWS S3 Reference: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
22
+ *
23
+ * @param bucketName - The bucket name to validate
24
+ * @returns true if valid, false otherwise
25
+ */
26
+ export declare const isValidBucketName: (bucketName: string) => boolean;
11
27
  export {};
12
28
  //# sourceMappingURL=helpers.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAKlD,CAAA;AAED,eAAO,MAAM,eAAe,QAAO,OAAO,QAEzC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAc5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAa7C,CAAA"}
1
+ {"version":3,"file":"helpers.d.ts","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAAA,KAAK,KAAK,GAAG,OAAO,KAAK,CAAA;AAEzB,eAAO,MAAM,YAAY,GAAI,cAAc,KAAK,KAAG,KAKlD,CAAA;AAED,eAAO,MAAM,eAAe,QAAO,OAAO,QAEzC,CAAA;AAED,eAAO,MAAM,gBAAgB,GAAI,MAAM,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,KAAG,OAc5D,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,OAa7C,CAAA;AAED;;;;;;;;;;;;;;GAcG;AACH,eAAO,MAAM,iBAAiB,GAAI,YAAY,MAAM,KAAG,OA2BtD,CAAA"}
@@ -37,4 +37,43 @@ export const isPlainObject = (value) => {
37
37
  !(Symbol.toStringTag in value) &&
38
38
  !(Symbol.iterator in value));
39
39
  };
40
+ /**
41
+ * Validates if a given bucket name is valid according to Supabase Storage API rules
42
+ * Mirrors backend validation from: storage/src/storage/limits.ts:isValidBucketName()
43
+ *
44
+ * Rules:
45
+ * - Length: 1-100 characters
46
+ * - Allowed characters: alphanumeric (a-z, A-Z, 0-9), underscore (_), and safe special characters
47
+ * - Safe special characters: ! - . * ' ( ) space & $ @ = ; : + , ?
48
+ * - Forbidden: path separators (/, \), path traversal (..), leading/trailing whitespace
49
+ *
50
+ * AWS S3 Reference: https://docs.aws.amazon.com/AmazonS3/latest/userguide/object-keys.html
51
+ *
52
+ * @param bucketName - The bucket name to validate
53
+ * @returns true if valid, false otherwise
54
+ */
55
+ export const isValidBucketName = (bucketName) => {
56
+ if (!bucketName || typeof bucketName !== 'string') {
57
+ return false;
58
+ }
59
+ // Check length constraints (1-100 characters)
60
+ if (bucketName.length === 0 || bucketName.length > 100) {
61
+ return false;
62
+ }
63
+ // Check for leading/trailing whitespace
64
+ if (bucketName.trim() !== bucketName) {
65
+ return false;
66
+ }
67
+ // Explicitly reject path separators (security)
68
+ // Note: Consecutive periods (..) are allowed by backend - the AWS restriction
69
+ // on relative paths applies to object keys, not bucket names
70
+ if (bucketName.includes('/') || bucketName.includes('\\')) {
71
+ return false;
72
+ }
73
+ // Validate against allowed character set
74
+ // Pattern matches backend regex: /^(\w|!|-|\.|\*|'|\(|\)| |&|\$|@|=|;|:|\+|,|\?)*$/
75
+ // This explicitly excludes path separators (/, \) and other problematic characters
76
+ const bucketNameRegex = /^[\w!.\*'() &$@=;:+,?-]+$/;
77
+ return bucketNameRegex.test(bucketName);
78
+ };
40
79
  //# sourceMappingURL=helpers.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,WAAmB,EAAS,EAAE;IACzD,IAAI,WAAW,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAA;IAC1C,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,EAAE,EAAE,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAA;AACpC,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,eAAe,GAAG,GAAoB,EAAE;IACnD,OAAO,QAAQ,CAAA;AACjB,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,IAAyB,EAAW,EAAE;IACrE,IAAI,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAA;IAC/C,CAAC;SAAM,IAAI,OAAO,IAAI,KAAK,UAAU,IAAI,IAAI,KAAK,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/D,OAAO,IAAI,CAAA;IACb,CAAC;IAED,MAAM,MAAM,GAAwB,EAAE,CAAA;IACtC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAA;QACxF,MAAM,CAAC,MAAM,CAAC,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAA;IAC1C,CAAC,CAAC,CAAA;IAEF,OAAO,MAAM,CAAA;AACf,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,KAAa,EAAW,EAAE;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QAChD,OAAO,KAAK,CAAA;IACd,CAAC;IAED,MAAM,SAAS,GAAG,MAAM,CAAC,cAAc,CAAC,KAAK,CAAC,CAAA;IAC9C,OAAO,CACL,CAAC,SAAS,KAAK,IAAI;QACjB,SAAS,KAAK,MAAM,CAAC,SAAS;QAC9B,MAAM,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,IAAI,CAAC;QAC5C,CAAC,CAAC,MAAM,CAAC,WAAW,IAAI,KAAK,CAAC;QAC9B,CAAC,CAAC,MAAM,CAAC,QAAQ,IAAI,KAAK,CAAC,CAC5B,CAAA;AACH,CAAC,CAAA"}
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../../../src/lib/helpers.ts"],"names":[],"mappings":"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"}
@@ -1,2 +1,2 @@
1
- export declare const version = "2.85.0";
1
+ export declare const version = "2.85.1-canary.0";
2
2
  //# sourceMappingURL=version.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,WAAW,CAAA"}
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,OAAO,oBAAoB,CAAA"}
@@ -4,5 +4,5 @@
4
4
  // - Debugging and support (identifying which version is running)
5
5
  // - Telemetry and logging (version reporting in errors/analytics)
6
6
  // - Ensuring build artifacts match the published package version
7
- export const version = '2.85.0';
7
+ export const version = '2.85.1-canary.0';
8
8
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gEAAgE;AAChE,uEAAuE;AACvE,iEAAiE;AACjE,kEAAkE;AAClE,iEAAiE;AACjE,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,CAAA"}
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../../src/lib/version.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,gEAAgE;AAChE,uEAAuE;AACvE,iEAAiE;AACjE,kEAAkE;AAClE,iEAAiE;AACjE,MAAM,CAAC,MAAM,OAAO,GAAG,iBAAiB,CAAA"}