@motherbase/client 1.2.4 → 1.2.5
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/README.md +95 -42
- package/dist/auth.d.ts +0 -5
- package/dist/auth.d.ts.map +1 -1
- package/dist/auth.js +0 -15
- package/dist/auth.js.map +1 -1
- package/dist/database.d.ts +169 -0
- package/dist/database.d.ts.map +1 -0
- package/dist/database.js +2 -0
- package/dist/database.js.map +1 -0
- package/dist/http.d.ts +11 -0
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +10 -1
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +49 -6
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +52 -2
- package/dist/index.js.map +1 -1
- package/dist/postgrest.d.ts +207 -32
- package/dist/postgrest.d.ts.map +1 -1
- package/dist/postgrest.js +349 -54
- package/dist/postgrest.js.map +1 -1
- package/dist/storage.d.ts +20 -14
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +56 -18
- package/dist/storage.js.map +1 -1
- package/package.json +1 -1
package/dist/storage.js
CHANGED
|
@@ -1,17 +1,33 @@
|
|
|
1
1
|
import { toError } from './http.js';
|
|
2
2
|
import { HTTP_ROUTES, contractPath } from '@motherbase/contracts';
|
|
3
3
|
/**
|
|
4
|
-
* Supabase-compatible storage bucket handle
|
|
5
|
-
* `/api/files` endpoints.
|
|
6
|
-
*
|
|
7
|
-
*
|
|
4
|
+
* Supabase-compatible storage bucket handle over the authenticated
|
|
5
|
+
* `/api/files` endpoints.
|
|
6
|
+
*
|
|
7
|
+
* Objects are addressed by path: `upload('123/pic.png')` then
|
|
8
|
+
* `download('123/pic.png')`. The server-issued file id still works everywhere a
|
|
9
|
+
* path does, because that is what every caller written before path addressing
|
|
10
|
+
* has stored.
|
|
8
11
|
*/
|
|
12
|
+
const UUID = /^[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}$/i;
|
|
9
13
|
export class StorageBucket {
|
|
10
14
|
constructor(http, baseUrl, bucket) {
|
|
11
15
|
this.http = http;
|
|
12
16
|
this.baseUrl = baseUrl;
|
|
13
17
|
this.bucket = bucket;
|
|
14
18
|
}
|
|
19
|
+
/**
|
|
20
|
+
* Route for one object. A bare uuid is treated as a file id (the pre-path
|
|
21
|
+
* addressing form, which existing callers have stored); anything else is a
|
|
22
|
+
* key inside this bucket.
|
|
23
|
+
*/
|
|
24
|
+
objectPath(pathOrId, kind) {
|
|
25
|
+
if (UUID.test(pathOrId)) {
|
|
26
|
+
return contractPath.file(pathOrId, kind === 'object-url' ? 'url' : 'raw');
|
|
27
|
+
}
|
|
28
|
+
const key = pathOrId.split('/').map(encodeURIComponent).join('/');
|
|
29
|
+
return `${HTTP_ROUTES.files}/${kind}/${encodeURIComponent(this.bucket)}/${key}`;
|
|
30
|
+
}
|
|
15
31
|
async upload(path, file, options = {}) {
|
|
16
32
|
try {
|
|
17
33
|
const form = new FormData();
|
|
@@ -24,12 +40,15 @@ export class StorageBucket {
|
|
|
24
40
|
if (options.visibility)
|
|
25
41
|
form.append('visibility', options.visibility);
|
|
26
42
|
form.append('bucket', this.bucket);
|
|
43
|
+
form.append('path', path);
|
|
44
|
+
if (options.upsert)
|
|
45
|
+
form.append('upsert', 'true');
|
|
27
46
|
const created = await this.http.request(`${HTTP_ROUTES.files}/`, { method: 'POST', form });
|
|
28
47
|
return {
|
|
29
48
|
data: {
|
|
30
|
-
path
|
|
49
|
+
path,
|
|
31
50
|
id: created.file.id,
|
|
32
|
-
fullPath: `${this.bucket}/${
|
|
51
|
+
fullPath: `${this.bucket}/${path}`,
|
|
33
52
|
},
|
|
34
53
|
error: null,
|
|
35
54
|
};
|
|
@@ -40,7 +59,7 @@ export class StorageBucket {
|
|
|
40
59
|
}
|
|
41
60
|
async download(path) {
|
|
42
61
|
try {
|
|
43
|
-
const res = await this.http.requestRaw(
|
|
62
|
+
const res = await this.http.requestRaw(this.objectPath(path, 'object'));
|
|
44
63
|
return { data: await res.blob(), error: null };
|
|
45
64
|
}
|
|
46
65
|
catch (err) {
|
|
@@ -49,22 +68,41 @@ export class StorageBucket {
|
|
|
49
68
|
}
|
|
50
69
|
async remove(paths) {
|
|
51
70
|
try {
|
|
52
|
-
const removed = await Promise.all(paths.map(p => this.http.request(
|
|
71
|
+
const removed = await Promise.all(paths.map(p => this.http.request(UUID.test(p)
|
|
72
|
+
? contractPath.file(p)
|
|
73
|
+
: `${HTTP_ROUTES.files}/object/${encodeURIComponent(this.bucket)}/${p
|
|
74
|
+
.split('/')
|
|
75
|
+
.map(encodeURIComponent)
|
|
76
|
+
.join('/')}`, { method: 'DELETE' })));
|
|
53
77
|
return { data: removed, error: null };
|
|
54
78
|
}
|
|
55
79
|
catch (err) {
|
|
56
80
|
return { data: null, error: toError(err) };
|
|
57
81
|
}
|
|
58
82
|
}
|
|
59
|
-
/**
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
83
|
+
/** Objects under a prefix, in the Supabase response shape. */
|
|
84
|
+
async list(prefix = '', options = {}) {
|
|
85
|
+
try {
|
|
86
|
+
const query = new URLSearchParams();
|
|
87
|
+
if (prefix)
|
|
88
|
+
query.set('prefix', prefix);
|
|
89
|
+
if (options.limit !== undefined)
|
|
90
|
+
query.set('limit', String(options.limit));
|
|
91
|
+
if (options.offset !== undefined)
|
|
92
|
+
query.set('offset', String(options.offset));
|
|
93
|
+
if (options.search)
|
|
94
|
+
query.set('search', options.search);
|
|
95
|
+
if (options.sortBy?.column)
|
|
96
|
+
query.set('sortColumn', options.sortBy.column);
|
|
97
|
+
if (options.sortBy?.order)
|
|
98
|
+
query.set('sortOrder', options.sortBy.order);
|
|
99
|
+
const suffix = query.toString() ? `?${query}` : '';
|
|
100
|
+
const res = await this.http.request(`${HTTP_ROUTES.files}/list/${encodeURIComponent(this.bucket)}${suffix}`);
|
|
101
|
+
return { data: res.objects, error: null };
|
|
102
|
+
}
|
|
103
|
+
catch (err) {
|
|
104
|
+
return { data: null, error: toError(err) };
|
|
105
|
+
}
|
|
68
106
|
}
|
|
69
107
|
/** Synchronous public URL (Supabase parity). Serves through the public bucket endpoint. */
|
|
70
108
|
getPublicUrl(path) {
|
|
@@ -78,7 +116,7 @@ export class StorageBucket {
|
|
|
78
116
|
/** A (possibly signed) download URL for the object. */
|
|
79
117
|
async createSignedUrl(path, _expiresIn) {
|
|
80
118
|
try {
|
|
81
|
-
const res = await this.http.request(
|
|
119
|
+
const res = await this.http.request(this.objectPath(path, 'object-url'));
|
|
82
120
|
return { data: { signedUrl: res.url }, error: null };
|
|
83
121
|
}
|
|
84
122
|
catch (err) {
|
package/dist/storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"storage.js","sourceRoot":"","sources":["../src/storage.ts"],"names":[],"mappings":"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"}
|