@freehour/supabase-core 2.0.2 → 2.0.3
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.
- package/dist/index.js +34 -24
- package/dist/storage-service.d.ts +1 -1
- package/dist/storage-service.d.ts.map +1 -1
- package/dist/storage.d.ts +13 -1
- package/dist/storage.d.ts.map +1 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -2,6 +2,7 @@ import { assert as e } from "@freehour/assert";
|
|
|
2
2
|
import t from "zod";
|
|
3
3
|
import { PostgrestError as n } from "@supabase/supabase-js";
|
|
4
4
|
import * as r from "@supabase/postgrest-js";
|
|
5
|
+
import "@supabase/storage-js";
|
|
5
6
|
//#region lib/errors.ts
|
|
6
7
|
var i = class extends Error {
|
|
7
8
|
constructor(e, t = {}) {
|
|
@@ -385,7 +386,18 @@ var j = class t extends r.PostgrestFilterBuilder {
|
|
|
385
386
|
view: t
|
|
386
387
|
});
|
|
387
388
|
}
|
|
388
|
-
}
|
|
389
|
+
};
|
|
390
|
+
//#endregion
|
|
391
|
+
//#region lib/storage.ts
|
|
392
|
+
function F(e) {
|
|
393
|
+
return e.bucket !== void 0 && e.path !== void 0;
|
|
394
|
+
}
|
|
395
|
+
function I(e) {
|
|
396
|
+
return e.fileId !== void 0 && e.bucket !== void 0;
|
|
397
|
+
}
|
|
398
|
+
//#endregion
|
|
399
|
+
//#region lib/storage-service.ts
|
|
400
|
+
var L = class {
|
|
389
401
|
client;
|
|
390
402
|
database;
|
|
391
403
|
constructor({ client: e, database: t }) {
|
|
@@ -394,7 +406,7 @@ var j = class t extends r.PostgrestFilterBuilder {
|
|
|
394
406
|
get files() {
|
|
395
407
|
return this.database.table("storage", "objects");
|
|
396
408
|
}
|
|
397
|
-
async getFileObject(e, t) {
|
|
409
|
+
async getFileObject({ bucket: e, path: t }) {
|
|
398
410
|
let { data: n, error: r } = await this.client.from(e).info(t);
|
|
399
411
|
if (r) throw r;
|
|
400
412
|
return n;
|
|
@@ -405,33 +417,31 @@ var j = class t extends r.PostgrestFilterBuilder {
|
|
|
405
417
|
return n;
|
|
406
418
|
}
|
|
407
419
|
async getFileStorageLocation(t) {
|
|
408
|
-
if (
|
|
409
|
-
|
|
410
|
-
|
|
420
|
+
if (I(t)) return t;
|
|
421
|
+
if (F(t)) {
|
|
422
|
+
let { id: e } = await this.getFileObject(t);
|
|
411
423
|
return {
|
|
412
|
-
fileId:
|
|
413
|
-
|
|
414
|
-
path: e.notNull(r.path_tokens, "path_tokens must not be null").join("/")
|
|
424
|
+
fileId: e,
|
|
425
|
+
...t
|
|
415
426
|
};
|
|
416
427
|
}
|
|
417
|
-
let {
|
|
428
|
+
let { fileId: n } = t, r = await this.files.get(n, ["bucket_id", "path_tokens"]);
|
|
429
|
+
if (!r) throw new a(`File with ID ${n} not found`, { fileId: n });
|
|
418
430
|
return {
|
|
419
|
-
fileId:
|
|
420
|
-
bucket:
|
|
421
|
-
path: r
|
|
431
|
+
fileId: n,
|
|
432
|
+
bucket: e.notNull(r.bucket_id, "bucket_id must not be null"),
|
|
433
|
+
path: e.notNull(r.path_tokens, "path_tokens must not be null").join("/")
|
|
422
434
|
};
|
|
423
435
|
}
|
|
424
436
|
async getFileInfo(t) {
|
|
425
|
-
let
|
|
426
|
-
return e(
|
|
427
|
-
...
|
|
428
|
-
|
|
429
|
-
|
|
430
|
-
|
|
431
|
-
|
|
432
|
-
|
|
433
|
-
type: s.mimetype,
|
|
434
|
-
lastModified: new Date(s.lastModified).getTime()
|
|
437
|
+
let n = await this.getFileStorageLocation(t), { id: r, bucketId: i, metadata: a, ...o } = await this.getFileObject(n);
|
|
438
|
+
return e(r === n.fileId, "file ID from storage client must match file ID from database"), e(i === n.bucket, "bucketId from storage client must match bucket from database"), {
|
|
439
|
+
...o,
|
|
440
|
+
...n,
|
|
441
|
+
metadata: a,
|
|
442
|
+
properties: a ? {
|
|
443
|
+
type: a.mimetype,
|
|
444
|
+
lastModified: new Date(a.lastModified).getTime()
|
|
435
445
|
} : {}
|
|
436
446
|
};
|
|
437
447
|
}
|
|
@@ -476,7 +486,7 @@ var j = class t extends r.PostgrestFilterBuilder {
|
|
|
476
486
|
let n = t.filter((e) => "fileId" in e).map((e) => e.fileId), r = (await this.files.query.select(["bucket_id", "path_tokens"]).containedBy("id", n).throwOnError()).data.map(({ bucket_id: t, path_tokens: n }) => ({
|
|
477
487
|
bucket: e.notNull(t, "bucket_id must not be null"),
|
|
478
488
|
path: e.notNull(n, "path_tokens must not be null").join("/")
|
|
479
|
-
})), i = h(p(t.filter((e) =>
|
|
489
|
+
})), i = h(p(t.filter((e) => F(e)).concat(r), (e) => e.bucket)).map(([e, t]) => ({
|
|
480
490
|
bucket: e,
|
|
481
491
|
paths: t.map((e) => e.path)
|
|
482
492
|
}));
|
|
@@ -491,4 +501,4 @@ var j = class t extends r.PostgrestFilterBuilder {
|
|
|
491
501
|
}
|
|
492
502
|
};
|
|
493
503
|
//#endregion
|
|
494
|
-
export { g as DataService, P as DatabaseService, a as FileNotFoundError, o as FileNotSupportedError, w as Filter, C as FilterChainSeparator, b as FilterOp, x as LogicalOp, S as LogicalOpSeparator, s as ParseError, N as PostgrestClient, l as PostgrestErrorInterface, j as PostgrestFilterBuilder, M as PostgrestQueryBuilder, c as RecordNotFoundError,
|
|
504
|
+
export { g as DataService, P as DatabaseService, a as FileNotFoundError, o as FileNotSupportedError, w as Filter, C as FilterChainSeparator, b as FilterOp, x as LogicalOp, S as LogicalOpSeparator, s as ParseError, N as PostgrestClient, l as PostgrestErrorInterface, j as PostgrestFilterBuilder, M as PostgrestQueryBuilder, c as RecordNotFoundError, L as StorageService, _ as TableDataService, i as TracedError, v as ViewDataService, y as assertCounted, f as coerceArray, O as encodeFilter, D as encodeFilterNode, h as entries, p as groupBy, u as isDatabaseApiError, E as negateFilterNode, T as negateOp, k as parseFilterExpression, A as parseFilterExpressionChain, m as removeElement, d as splitPath };
|
|
@@ -15,7 +15,7 @@ export declare class StorageService<BucketName extends string = string> {
|
|
|
15
15
|
private get files();
|
|
16
16
|
private getFileObject;
|
|
17
17
|
getFiles(bucket: BucketName, options?: SearchV2Options): Promise<SearchV2Result>;
|
|
18
|
-
getFileStorageLocation(
|
|
18
|
+
getFileStorageLocation(ref: FileRef<BucketName>): Promise<StorageLocation>;
|
|
19
19
|
getFileInfo(fileRef: FileRef<BucketName>): Promise<FileInfo>;
|
|
20
20
|
getPublicURL(fileRef: FileRef<BucketName>, options?: PublicURLOptions): Promise<string>;
|
|
21
21
|
existsFile(fileRef: FileRef<BucketName>): Promise<boolean>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage-service.d.ts","sourceRoot":"","sources":["../lib/storage-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"storage-service.d.ts","sourceRoot":"","sources":["../lib/storage-service.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAA0B,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAIpG,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAE1D,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,WAAW,CAAC;AAKrI,MAAM,WAAW,oBAAoB,CACjC,UAAU,SAAS,MAAM,GAAG,MAAM;IAElC,MAAM,EAAE,aAAa,CAAC,UAAU,CAAC,CAAC;IAClC,QAAQ,EAAE,eAAe,CAAC,GAAG,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,qBAAa,cAAc,CACvB,UAAU,SAAS,MAAM,GAAG,MAAM;IAElC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAA4B;IACnD,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAkB;gBAE/B,EACR,MAAM,EACN,QAAQ,GACX,EAAE,oBAAoB,CAAC,UAAU,CAAC;IAKnC,OAAO,KAAK,KAAK,GAEhB;YAEa,aAAa;IAWrB,QAAQ,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC;IAYhF,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,CAAC;IAuB1E,WAAW,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAoB5D,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC,EAAE,gBAAgB,GAAG,OAAO,CAAC,MAAM,CAAC;IAUvF,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC;IAc1D,gBAAgB,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC;IAgB7D,UAAU,CACZ,IAAI,EAAE,IAAI,EACV,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE,WAAW,CAAC,UAAU,CAAC,EACzC,EAAE,iBAAyB,EAAE,GAAE,iBAAsB,GACtD,OAAO,CAAC,eAAe,CAAC;IAsBrB,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,OAAO,CAAC,eAAe,GAAG;QAAE,IAAI,EAAE,IAAI,CAAA;KAAE,CAAC;IAoBrF,WAAW,CAAC,QAAQ,EAAE,OAAO,CAAC,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;CA2CjF"}
|
package/dist/storage.d.ts
CHANGED
|
@@ -16,7 +16,17 @@ export interface FilePointer<BucketName extends string = string> {
|
|
|
16
16
|
}
|
|
17
17
|
export type FileRef<BucketName extends string = string> = {
|
|
18
18
|
fileId: string;
|
|
19
|
-
|
|
19
|
+
bucket?: never;
|
|
20
|
+
path?: never;
|
|
21
|
+
} | {
|
|
22
|
+
fileId?: never;
|
|
23
|
+
bucket: BucketName;
|
|
24
|
+
path: string;
|
|
25
|
+
} | {
|
|
26
|
+
fileId: string;
|
|
27
|
+
bucket: BucketName;
|
|
28
|
+
path: string;
|
|
29
|
+
};
|
|
20
30
|
export interface FileInfo extends OmitFrom<Camelize<FileObjectV2>, 'id' | 'bucketId'>, StorageLocation {
|
|
21
31
|
properties: FilePropertyBag;
|
|
22
32
|
}
|
|
@@ -27,4 +37,6 @@ export interface PublicURLOptions {
|
|
|
27
37
|
export interface UploadFileOptions {
|
|
28
38
|
overwriteExisting?: boolean;
|
|
29
39
|
}
|
|
40
|
+
export declare function isFilePointer<BucketName extends string>(ref: FileRef<BucketName>): ref is FilePointer<BucketName>;
|
|
41
|
+
export declare function isStorageLocation(ref: FileRef): ref is StorageLocation;
|
|
30
42
|
//# sourceMappingURL=storage.d.ts.map
|
package/dist/storage.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../lib/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,qBAAqB;IAChG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;CACtF;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM;IAC3D,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,IAAI;IACtD,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.d.ts","sourceRoot":"","sources":["../lib/storage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACrF,OAAO,EAAE,aAAa,IAAI,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAE9E,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAGxC,MAAM,CAAC,OAAO,OAAO,aAAa,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,CAAE,SAAQ,qBAAqB;IAChG,IAAI,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,MAAM,GAAG,EAAE,CAAC,GAAG,UAAU,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;CACtF;AAED,MAAM,MAAM,aAAa,GAAG,QAAQ,CAAC,SAAS,CAAC,CAAC,QAAQ,CAAC,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC;AAE5E,MAAM,WAAW,eAAe;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM;IAC3D,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,OAAO,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,IAAI;IACtD,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,IAAI,CAAC,EAAE,KAAK,CAAC;CAChB,GAAG;IACA,MAAM,CAAC,EAAE,KAAK,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB,GAAG;IACA,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,UAAU,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,MAAM,WAAW,QAAS,SAAQ,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,IAAI,GAAG,UAAU,CAAC,EAAE,eAAe;IAClG,UAAU,EAAE,eAAe,CAAC;CAC/B;AAED,MAAM,WAAW,gBAAgB;IAC7B,QAAQ,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5B,SAAS,CAAC,EAAE,gBAAgB,CAAC;CAChC;AAED,MAAM,WAAW,iBAAiB;IAC9B,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAGD,wBAAgB,aAAa,CAAC,UAAU,SAAS,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,GAAG,IAAI,WAAW,CAAC,UAAU,CAAC,CAEjH;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,OAAO,GAAG,GAAG,IAAI,eAAe,CAEtE"}
|
package/package.json
CHANGED
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
"private": false,
|
|
4
4
|
"displayName": "Supabase-Core",
|
|
5
5
|
"description": "Lightweight services for supabase to make it easier to work with databases, tables and storage buckets",
|
|
6
|
-
"version": "2.0.
|
|
6
|
+
"version": "2.0.3",
|
|
7
7
|
"type": "module",
|
|
8
8
|
"repository": {
|
|
9
9
|
"type": "git",
|