clefbase 1.0.0 → 1.1.1
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/app.d.ts +8 -7
- package/dist/app.d.ts.map +1 -1
- package/dist/app.js +18 -11
- package/dist/app.js.map +1 -1
- package/dist/auth/index.d.ts.map +1 -1
- package/dist/auth/index.js +11 -10
- package/dist/auth/index.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/storage/index.d.ts +52 -25
- package/dist/storage/index.d.ts.map +1 -1
- package/dist/storage/index.js +61 -42
- package/dist/storage/index.js.map +1 -1
- package/dist/types.d.ts +0 -11
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +3 -2
package/dist/app.d.ts
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { HttpClient } from "./http";
|
|
2
|
-
import { Database } from "./db
|
|
3
|
-
import { Auth } from "./auth
|
|
4
|
-
import { ClefbaseStorage } from "./storage
|
|
2
|
+
import { Database } from "./db";
|
|
3
|
+
import { Auth } from "./auth";
|
|
4
|
+
import { ClefbaseStorage } from "./storage";
|
|
5
5
|
import type { ClefbaseConfig } from "./types";
|
|
6
6
|
/**
|
|
7
7
|
* A Clefbase application instance.
|
|
@@ -9,8 +9,9 @@ import type { ClefbaseConfig } from "./types";
|
|
|
9
9
|
*/
|
|
10
10
|
export declare class ClefbaseApp {
|
|
11
11
|
readonly config: ClefbaseConfig;
|
|
12
|
-
/** @internal */
|
|
13
|
-
readonly
|
|
12
|
+
/** @internal */ readonly _dbHttp: HttpClient;
|
|
13
|
+
/** @internal */ readonly _authHttp: HttpClient;
|
|
14
|
+
/** @internal */ readonly _storageHttp: HttpClient;
|
|
14
15
|
private _db;
|
|
15
16
|
private _auth;
|
|
16
17
|
private _storage;
|
|
@@ -33,7 +34,7 @@ export declare class ClefbaseApp {
|
|
|
33
34
|
* apiKey: "cfx_abc123...",
|
|
34
35
|
* });
|
|
35
36
|
*
|
|
36
|
-
* // Named (multiple projects)
|
|
37
|
+
* // Named app (multiple projects)
|
|
37
38
|
* const admin = initClefbase({ ... }, "admin");
|
|
38
39
|
*/
|
|
39
40
|
export declare function initClefbase(config: ClefbaseConfig, name?: string): ClefbaseApp;
|
|
@@ -63,7 +64,7 @@ export declare function getAuth(app?: ClefbaseApp): Auth;
|
|
|
63
64
|
*
|
|
64
65
|
* @example
|
|
65
66
|
* const storage = getStorage(app);
|
|
66
|
-
* await storage.ref("files/doc.pdf").
|
|
67
|
+
* const url = await storage.ref("files/doc.pdf").getDownloadURL();
|
|
67
68
|
*/
|
|
68
69
|
export declare function getStorage(app?: ClefbaseApp): ClefbaseStorage;
|
|
69
70
|
//# sourceMappingURL=app.d.ts.map
|
package/dist/app.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,QAAQ,CAAC;AACpC,OAAO,EAAE,QAAQ,EAAE,MAAM,MAAM,CAAC;AAChC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAC5C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAI9C;;;GAGG;AACH,qBAAa,WAAW;IACtB,QAAQ,CAAC,MAAM,EAAE,cAAc,CAAC;IAGhC,gBAAgB,CAAC,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC;IAC9C,gBAAgB,CAAC,QAAQ,CAAC,SAAS,EAAE,UAAU,CAAC;IAChD,gBAAgB,CAAC,QAAQ,CAAC,YAAY,EAAE,UAAU,CAAC;IAEnD,OAAO,CAAC,GAAG,CAAuB;IAClC,OAAO,CAAC,KAAK,CAAmB;IAChC,OAAO,CAAC,QAAQ,CAA8B;gBAElC,MAAM,EAAE,cAAc;IAelC,gBAAgB;IAChB,MAAM,IAAI,QAAQ;IAKlB,gBAAgB;IAChB,QAAQ,IAAI,IAAI;IAKhB,gBAAgB;IAChB,WAAW,IAAI,eAAe;CAS/B;AAOD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAC1B,MAAM,EAAE,cAAc,EACtB,IAAI,GAAE,MAAgB,GACrB,WAAW,CAKb;AAED;;;GAGG;AACH,wBAAgB,MAAM,CAAC,IAAI,GAAE,MAAgB,GAAG,WAAW,CAQ1D;AAID;;;;;;GAMG;AACH,wBAAgB,WAAW,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,QAAQ,CAEvD;AAED;;;;;;GAMG;AACH,wBAAgB,OAAO,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,IAAI,CAE/C;AAED;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,GAAG,CAAC,EAAE,WAAW,GAAG,eAAe,CAE7D"}
|
package/dist/app.js
CHANGED
|
@@ -7,9 +7,9 @@ exports.getDatabase = getDatabase;
|
|
|
7
7
|
exports.getAuth = getAuth;
|
|
8
8
|
exports.getStorage = getStorage;
|
|
9
9
|
const http_1 = require("./http");
|
|
10
|
-
const
|
|
11
|
-
const
|
|
12
|
-
const
|
|
10
|
+
const db_1 = require("./db");
|
|
11
|
+
const auth_1 = require("./auth");
|
|
12
|
+
const storage_1 = require("./storage");
|
|
13
13
|
// ─── App ──────────────────────────────────────────────────────────────────────
|
|
14
14
|
/**
|
|
15
15
|
* A Clefbase application instance.
|
|
@@ -19,26 +19,33 @@ class ClefbaseApp {
|
|
|
19
19
|
constructor(config) {
|
|
20
20
|
this.config = config;
|
|
21
21
|
const base = config.serverUrl.replace(/\/+$/, "");
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
22
|
+
const keyHeader = { "x-cfx-key": config.apiKey };
|
|
23
|
+
// Server mounts (from index.ts):
|
|
24
|
+
// app.use("/db", ..., dbApiKeyMiddleware, createExternalDbRouter())
|
|
25
|
+
// app.use("/auth", ..., dbApiKeyMiddleware, createExternalAuthRouter())
|
|
26
|
+
// app.use("/storage", ..., createPublicStorageRouter()) ← public reads
|
|
27
|
+
// app.use("/storage", ..., dbApiKeyMiddleware, createExternalStorageRouter()) ← writes
|
|
28
|
+
this._dbHttp = new http_1.HttpClient(`${base}/db`, keyHeader);
|
|
29
|
+
this._authHttp = new http_1.HttpClient(`${base}/auth`, keyHeader);
|
|
30
|
+
this._storageHttp = new http_1.HttpClient(`${base}/storage`, keyHeader);
|
|
25
31
|
}
|
|
26
32
|
/** @internal */
|
|
27
33
|
_getDb() {
|
|
28
34
|
if (!this._db)
|
|
29
|
-
this._db = new
|
|
35
|
+
this._db = new db_1.Database(this._dbHttp);
|
|
30
36
|
return this._db;
|
|
31
37
|
}
|
|
32
38
|
/** @internal */
|
|
33
39
|
_getAuth() {
|
|
34
40
|
if (!this._auth)
|
|
35
|
-
this._auth = new
|
|
41
|
+
this._auth = new auth_1.Auth(this._authHttp);
|
|
36
42
|
return this._auth;
|
|
37
43
|
}
|
|
38
44
|
/** @internal */
|
|
39
45
|
_getStorage() {
|
|
40
46
|
if (!this._storage)
|
|
41
|
-
this._storage = new
|
|
47
|
+
this._storage = new storage_1.ClefbaseStorage(this._storageHttp, this.config.projectId, // passed as ?projectId= on public storage reads
|
|
48
|
+
this._getAuth());
|
|
42
49
|
return this._storage;
|
|
43
50
|
}
|
|
44
51
|
}
|
|
@@ -57,7 +64,7 @@ const registry = new Map();
|
|
|
57
64
|
* apiKey: "cfx_abc123...",
|
|
58
65
|
* });
|
|
59
66
|
*
|
|
60
|
-
* // Named (multiple projects)
|
|
67
|
+
* // Named app (multiple projects)
|
|
61
68
|
* const admin = initClefbase({ ... }, "admin");
|
|
62
69
|
*/
|
|
63
70
|
function initClefbase(config, name = DEFAULT) {
|
|
@@ -104,7 +111,7 @@ function getAuth(app) {
|
|
|
104
111
|
*
|
|
105
112
|
* @example
|
|
106
113
|
* const storage = getStorage(app);
|
|
107
|
-
* await storage.ref("files/doc.pdf").
|
|
114
|
+
* const url = await storage.ref("files/doc.pdf").getDownloadURL();
|
|
108
115
|
*/
|
|
109
116
|
function getStorage(app) {
|
|
110
117
|
return (app ?? getApp())._getStorage();
|
package/dist/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../src/app.ts"],"names":[],"mappings":"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"}
|
package/dist/auth/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA4DrD,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,IAAI;IAIH,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,SAAS,CAA2B;gBAEf,IAAI,EAAE,UAAU;IAO7C,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IAUpB,6EAA6E;IAC7E,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOxC,kEAAkE;IAClE,IAAI,WAAW,IAAI,QAAQ,GAAG,IAAI,CAEjC;IAED,4DAA4D;IAC5D,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,OAAO,CAAC,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AA4DrD,KAAK,iBAAiB,GAAG,CAAC,IAAI,EAAE,QAAQ,GAAG,IAAI,KAAK,IAAI,CAAC;AAEzD;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,IAAI;IAIH,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAsB;IAC5C,OAAO,CAAC,SAAS,CAA2B;gBAEf,IAAI,EAAE,UAAU;IAO7C,OAAO,CAAC,MAAM;IAMd,OAAO,CAAC,YAAY;IAUpB,6EAA6E;IAC7E,cAAc,IAAI,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC;IAOxC,kEAAkE;IAClE,IAAI,WAAW,IAAI,QAAQ,GAAG,IAAI,CAEjC;IAED,4DAA4D;IAC5D,IAAI,YAAY,IAAI,MAAM,GAAG,IAAI,CAEhC;IAED;;;;;;;;OAQG;IACG,MAAM,CACV,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;QACR,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GACA,OAAO,CAAC,UAAU,CAAC;IAUtB;;;;;OAKG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC;IAQlE;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAe9B;;;OAGG;IACG,kBAAkB,IAAI,OAAO,CAAC,QAAQ,GAAG,IAAI,CAAC;IAgBpD;;;;;OAKG;IACG,aAAa,CAAC,OAAO,EAAE;QAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACpC,GAAG,OAAO,CAAC,QAAQ,CAAC;IAYrB;;;OAGG;IACG,cAAc,CAClB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAUhB;;;OAGG;IACG,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAI1D;;OAEG;IACG,oBAAoB,CACxB,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC;IAOhB;;OAEG;IACG,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAQ5C;;;;;OAKG;IACG,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC;IAIlD;;;;;;;;;;;;OAYG;IACH,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,MAAM,IAAI;CAQ5D"}
|
package/dist/auth/index.js
CHANGED
|
@@ -117,7 +117,8 @@ class Auth {
|
|
|
117
117
|
* });
|
|
118
118
|
*/
|
|
119
119
|
async signUp(email, password, profile) {
|
|
120
|
-
|
|
120
|
+
// base is serverUrl/auth → path is /signup → full: serverUrl/auth/signup
|
|
121
|
+
const result = await this.http.post("/signup", {
|
|
121
122
|
email,
|
|
122
123
|
password,
|
|
123
124
|
...profile,
|
|
@@ -131,7 +132,7 @@ class Auth {
|
|
|
131
132
|
* const { user, token } = await auth.signIn("alice@example.com", "pass123");
|
|
132
133
|
*/
|
|
133
134
|
async signIn(email, password) {
|
|
134
|
-
const result = await this.http.post("/
|
|
135
|
+
const result = await this.http.post("/signin", {
|
|
135
136
|
email,
|
|
136
137
|
password,
|
|
137
138
|
});
|
|
@@ -144,7 +145,7 @@ class Auth {
|
|
|
144
145
|
const token = this.currentToken;
|
|
145
146
|
if (token) {
|
|
146
147
|
try {
|
|
147
|
-
await this.http.post("/
|
|
148
|
+
await this.http.post("/signout", undefined, {
|
|
148
149
|
Authorization: `Bearer ${token}`,
|
|
149
150
|
});
|
|
150
151
|
}
|
|
@@ -164,7 +165,7 @@ class Auth {
|
|
|
164
165
|
if (!token)
|
|
165
166
|
return null;
|
|
166
167
|
try {
|
|
167
|
-
const user = await this.http.get("/
|
|
168
|
+
const user = await this.http.get("/me", {
|
|
168
169
|
Authorization: `Bearer ${token}`,
|
|
169
170
|
});
|
|
170
171
|
const session = this.store.load();
|
|
@@ -187,7 +188,7 @@ class Auth {
|
|
|
187
188
|
const token = this.currentToken;
|
|
188
189
|
if (!token)
|
|
189
190
|
throw new Error("No user is currently signed in.");
|
|
190
|
-
const user = await this.http.patch("/
|
|
191
|
+
const user = await this.http.patch("/me", updates, {
|
|
191
192
|
Authorization: `Bearer ${token}`,
|
|
192
193
|
});
|
|
193
194
|
const session = this.store.load();
|
|
@@ -204,20 +205,20 @@ class Auth {
|
|
|
204
205
|
const token = this.currentToken;
|
|
205
206
|
if (!token)
|
|
206
207
|
throw new Error("No user is currently signed in.");
|
|
207
|
-
await this.http.post("/
|
|
208
|
+
await this.http.post("/change-password", { currentPassword, newPassword }, { Authorization: `Bearer ${token}` });
|
|
208
209
|
}
|
|
209
210
|
/**
|
|
210
211
|
* Request a password-reset email. Safe to call even if the address
|
|
211
212
|
* is not registered (server returns the same response either way).
|
|
212
213
|
*/
|
|
213
214
|
async sendPasswordResetEmail(email) {
|
|
214
|
-
await this.http.post("/
|
|
215
|
+
await this.http.post("/forgot-password", { email });
|
|
215
216
|
}
|
|
216
217
|
/**
|
|
217
218
|
* Complete a password reset with the token from the reset email.
|
|
218
219
|
*/
|
|
219
220
|
async confirmPasswordReset(resetToken, newPassword) {
|
|
220
|
-
await this.http.post("/
|
|
221
|
+
await this.http.post("/reset-password", {
|
|
221
222
|
token: resetToken,
|
|
222
223
|
newPassword,
|
|
223
224
|
});
|
|
@@ -229,7 +230,7 @@ class Auth {
|
|
|
229
230
|
const token = this.currentToken;
|
|
230
231
|
if (!token)
|
|
231
232
|
throw new Error("No user is currently signed in.");
|
|
232
|
-
await this.http.post("/
|
|
233
|
+
await this.http.post("/send-verification", undefined, {
|
|
233
234
|
Authorization: `Bearer ${token}`,
|
|
234
235
|
});
|
|
235
236
|
}
|
|
@@ -240,7 +241,7 @@ class Auth {
|
|
|
240
241
|
* const user = await auth.verifyEmail("ABC123");
|
|
241
242
|
*/
|
|
242
243
|
async verifyEmail(code) {
|
|
243
|
-
return this.http.post("/
|
|
244
|
+
return this.http.post("/verify-email", { code });
|
|
244
245
|
}
|
|
245
246
|
/**
|
|
246
247
|
* Subscribe to auth state changes.
|
package/dist/auth/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/auth/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -17,7 +17,8 @@
|
|
|
17
17
|
export { ClefbaseApp, initClefbase, getApp, getDatabase, getAuth, getStorage, } from "./app";
|
|
18
18
|
export { Database, CollectionReference, DocumentReference, Query } from "./db";
|
|
19
19
|
export { Auth } from "./auth";
|
|
20
|
-
export { ClefbaseStorage, StorageReference, BucketReference
|
|
21
|
-
export type { ClefbaseConfig, ClefbaseDocument, QueryOptions, QueryResult, FilterOperator, WhereClause, WhereValue, AuthUser, AuthSession, AuthResult,
|
|
20
|
+
export { ClefbaseStorage, StorageReference, BucketReference } from "./storage";
|
|
21
|
+
export type { ClefbaseConfig, ClefbaseDocument, QueryOptions, QueryResult, FilterOperator, WhereClause, WhereValue, AuthUser, AuthSession, AuthResult, } from "./types";
|
|
22
|
+
export type { StorageFile } from "./storage";
|
|
22
23
|
export { ClefbaseError } from "./types";
|
|
23
24
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAG/E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,OAAO,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAGH,OAAO,EACL,WAAW,EACX,YAAY,EACZ,MAAM,EACN,WAAW,EACX,OAAO,EACP,UAAU,GACX,MAAM,OAAO,CAAC;AAGf,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,KAAK,EAAE,MAAM,MAAM,CAAC;AAG/E,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAG9B,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AAG/E,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,GACX,MAAM,SAAS,CAAC;AAGjB,YAAY,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAE7C,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,iFAAiF;AACjF,6BAOe;AANb,kGAAA,WAAW,OAAA;AACX,mGAAA,YAAY,OAAA;AACZ,6FAAA,MAAM,OAAA;AACN,kGAAA,WAAW,OAAA;AACX,8FAAA,OAAO,OAAA;AACP,iGAAA,UAAU,OAAA;AAGZ,iFAAiF;AACjF,2BAA+E;AAAtE,8FAAA,QAAQ,OAAA;AAAE,yGAAA,mBAAmB,OAAA;AAAE,uGAAA,iBAAiB,OAAA;AAAE,2FAAA,KAAK,OAAA;AAEhE,iFAAiF;AACjF,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAEb,iFAAiF;AACjF,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;GAeG;;;AAEH,iFAAiF;AACjF,6BAOe;AANb,kGAAA,WAAW,OAAA;AACX,mGAAA,YAAY,OAAA;AACZ,6FAAA,MAAM,OAAA;AACN,kGAAA,WAAW,OAAA;AACX,8FAAA,OAAO,OAAA;AACP,iGAAA,UAAU,OAAA;AAGZ,iFAAiF;AACjF,2BAA+E;AAAtE,8FAAA,QAAQ,OAAA;AAAE,yGAAA,mBAAmB,OAAA;AAAE,uGAAA,iBAAiB,OAAA;AAAE,2FAAA,KAAK,OAAA;AAEhE,iFAAiF;AACjF,+BAA8B;AAArB,4FAAA,IAAI,OAAA;AAEb,iFAAiF;AACjF,qCAA+E;AAAtE,0GAAA,eAAe,OAAA;AAAE,2GAAA,gBAAgB,OAAA;AAAE,0GAAA,eAAe,OAAA;AAmB3D,iCAAwC;AAA/B,sGAAA,aAAa,OAAA"}
|
package/dist/storage/index.d.ts
CHANGED
|
@@ -1,12 +1,23 @@
|
|
|
1
1
|
import { HttpClient } from "../http";
|
|
2
|
-
import type { StorageFile } from "../types";
|
|
3
2
|
import type { Auth } from "../auth";
|
|
3
|
+
export interface StorageFile {
|
|
4
|
+
id: string;
|
|
5
|
+
name: string;
|
|
6
|
+
bucket: string;
|
|
7
|
+
path: string;
|
|
8
|
+
size: number;
|
|
9
|
+
mimeType: string;
|
|
10
|
+
md5?: string;
|
|
11
|
+
createdAt: string;
|
|
12
|
+
metadata?: Record<string, unknown>;
|
|
13
|
+
/** Only present on /resolve response */
|
|
14
|
+
downloadUrl?: string;
|
|
15
|
+
}
|
|
4
16
|
/**
|
|
5
|
-
* A reference to a
|
|
17
|
+
* A reference to a file at a given path inside a bucket.
|
|
6
18
|
*
|
|
7
19
|
* @example
|
|
8
20
|
* const ref = storage.ref("avatars/user-123.jpg");
|
|
9
|
-
* const meta = await ref.upload(buffer, { contentType: "image/jpeg" });
|
|
10
21
|
* const url = await ref.getDownloadURL();
|
|
11
22
|
* await ref.delete();
|
|
12
23
|
*/
|
|
@@ -16,16 +27,12 @@ export declare class StorageReference {
|
|
|
16
27
|
readonly filePath: string;
|
|
17
28
|
constructor(storage: ClefbaseStorage, bucket: string, filePath: string);
|
|
18
29
|
/**
|
|
19
|
-
* Upload
|
|
20
|
-
* Accepts a
|
|
30
|
+
* Upload a file to this path.
|
|
31
|
+
* Accepts a Buffer (Node.js) or File/Blob (browser).
|
|
21
32
|
*
|
|
22
33
|
* @example
|
|
23
34
|
* // Node.js
|
|
24
|
-
*
|
|
25
|
-
* const meta = await ref.upload(fs.readFileSync("photo.jpg"), {
|
|
26
|
-
* contentType: "image/jpeg",
|
|
27
|
-
* });
|
|
28
|
-
*
|
|
35
|
+
* const meta = await ref.upload(fs.readFileSync("photo.jpg"), { contentType: "image/jpeg" });
|
|
29
36
|
* // Browser
|
|
30
37
|
* const meta = await ref.upload(fileInput.files[0]);
|
|
31
38
|
*/
|
|
@@ -33,14 +40,17 @@ export declare class StorageReference {
|
|
|
33
40
|
contentType?: string;
|
|
34
41
|
metadata?: Record<string, unknown>;
|
|
35
42
|
}): Promise<StorageFile>;
|
|
36
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Returns the public download URL for this file.
|
|
45
|
+
* Uses GET /storage/resolve which is a public endpoint (no API key needed).
|
|
46
|
+
*/
|
|
37
47
|
getDownloadURL(): Promise<string>;
|
|
38
|
-
/**
|
|
48
|
+
/** Fetch metadata including downloadUrl for this file. */
|
|
39
49
|
getMetadata(): Promise<StorageFile>;
|
|
40
50
|
/** Delete this file. */
|
|
41
51
|
delete(): Promise<void>;
|
|
42
52
|
/**
|
|
43
|
-
* List files under this path prefix.
|
|
53
|
+
* List files under this path prefix within the bucket.
|
|
44
54
|
*
|
|
45
55
|
* @example
|
|
46
56
|
* const files = await storage.ref("avatars/").list({ limit: 50 });
|
|
@@ -52,11 +62,10 @@ export declare class StorageReference {
|
|
|
52
62
|
}
|
|
53
63
|
/**
|
|
54
64
|
* A scoped helper for a named bucket.
|
|
55
|
-
* Obtain via
|
|
65
|
+
* Obtain via storage.bucket("bucket-name").
|
|
56
66
|
*
|
|
57
67
|
* @example
|
|
58
68
|
* const ref = storage.bucket("user-uploads").ref("doc.pdf");
|
|
59
|
-
* await ref.upload(buffer, { contentType: "application/pdf" });
|
|
60
69
|
*/
|
|
61
70
|
export declare class BucketReference {
|
|
62
71
|
private readonly storage;
|
|
@@ -65,25 +74,23 @@ export declare class BucketReference {
|
|
|
65
74
|
ref(filePath: string): StorageReference;
|
|
66
75
|
}
|
|
67
76
|
/**
|
|
68
|
-
* File storage service. Obtain via
|
|
77
|
+
* File storage service. Obtain via getStorage(app).
|
|
69
78
|
*
|
|
70
79
|
* @example
|
|
71
|
-
* import { initClefbase, getStorage } from "clefbase";
|
|
72
|
-
* const app = initClefbase({ serverUrl, projectId, apiKey });
|
|
73
80
|
* const storage = getStorage(app);
|
|
74
81
|
*
|
|
75
|
-
* //
|
|
76
|
-
* await storage.ref("
|
|
77
|
-
* const url = await storage.ref("images/hero.jpg").getDownloadURL();
|
|
82
|
+
* // Resolve a stored path to a download URL (no auth required)
|
|
83
|
+
* const url = await storage.ref("products/image.jpg").getDownloadURL();
|
|
78
84
|
*
|
|
79
|
-
* //
|
|
80
|
-
*
|
|
85
|
+
* // Upload (requires API key)
|
|
86
|
+
* await storage.bucket("media").ref("photo.jpg").upload(buffer, { contentType: "image/jpeg" });
|
|
81
87
|
*/
|
|
82
88
|
export declare class ClefbaseStorage {
|
|
83
89
|
private readonly http;
|
|
90
|
+
private readonly projectId;
|
|
84
91
|
private readonly auth;
|
|
85
92
|
private _defaultBucket;
|
|
86
|
-
constructor(http: HttpClient, auth?: Auth | null);
|
|
93
|
+
constructor(http: HttpClient, projectId: string, auth?: Auth | null);
|
|
87
94
|
private authHeaders;
|
|
88
95
|
/** Override the default bucket name (default: "default"). */
|
|
89
96
|
setDefaultBucket(name: string): this;
|
|
@@ -91,12 +98,32 @@ export declare class ClefbaseStorage {
|
|
|
91
98
|
bucket(name: string): BucketReference;
|
|
92
99
|
/** Return a StorageReference in the default bucket. */
|
|
93
100
|
ref(filePath: string): StorageReference;
|
|
101
|
+
/**
|
|
102
|
+
* Resolve a full path (bucketName/filePath) → metadata + downloadUrl.
|
|
103
|
+
* Server route: GET /storage/resolve?projectId=xxx&path=<fullPath>
|
|
104
|
+
* This is a PUBLIC endpoint — no API key needed.
|
|
105
|
+
*/
|
|
106
|
+
_resolve(fullPath: string): Promise<StorageFile>;
|
|
107
|
+
/**
|
|
108
|
+
* Upload a file.
|
|
109
|
+
* Server route: POST /storage/buckets/:bucketId/files (requires x-cfx-key)
|
|
110
|
+
* Sent as multipart/form-data with field "file", optional "folder", optional "metadata".
|
|
111
|
+
*/
|
|
94
112
|
_upload(bucket: string, filePath: string, data: Buffer | Blob | File, opts?: {
|
|
95
113
|
contentType?: string;
|
|
96
114
|
metadata?: Record<string, unknown>;
|
|
97
115
|
}): Promise<StorageFile>;
|
|
98
|
-
|
|
116
|
+
/**
|
|
117
|
+
* Delete a file.
|
|
118
|
+
* Resolves the path to a fileId via _resolve, then calls:
|
|
119
|
+
* DELETE /storage/buckets/:bucketId/files/:fileId (requires x-cfx-key)
|
|
120
|
+
*/
|
|
99
121
|
_delete(bucket: string, filePath: string): Promise<void>;
|
|
122
|
+
/**
|
|
123
|
+
* List files in a bucket, optionally filtered by folder prefix.
|
|
124
|
+
* Server route: GET /storage/buckets/:bucketId/files?projectId=&folder=&limit=&offset=
|
|
125
|
+
* This is a PUBLIC endpoint.
|
|
126
|
+
*/
|
|
100
127
|
_list(bucket: string, prefix: string, opts?: {
|
|
101
128
|
limit?: number;
|
|
102
129
|
offset?: number;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACrC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
|
package/dist/storage/index.js
CHANGED
|
@@ -36,11 +36,10 @@ Object.defineProperty(exports, "__esModule", { value: true });
|
|
|
36
36
|
exports.ClefbaseStorage = exports.BucketReference = exports.StorageReference = void 0;
|
|
37
37
|
// ─── StorageReference ─────────────────────────────────────────────────────────
|
|
38
38
|
/**
|
|
39
|
-
* A reference to a
|
|
39
|
+
* A reference to a file at a given path inside a bucket.
|
|
40
40
|
*
|
|
41
41
|
* @example
|
|
42
42
|
* const ref = storage.ref("avatars/user-123.jpg");
|
|
43
|
-
* const meta = await ref.upload(buffer, { contentType: "image/jpeg" });
|
|
44
43
|
* const url = await ref.getDownloadURL();
|
|
45
44
|
* await ref.delete();
|
|
46
45
|
*/
|
|
@@ -51,37 +50,36 @@ class StorageReference {
|
|
|
51
50
|
this.filePath = filePath;
|
|
52
51
|
}
|
|
53
52
|
/**
|
|
54
|
-
* Upload
|
|
55
|
-
* Accepts a
|
|
53
|
+
* Upload a file to this path.
|
|
54
|
+
* Accepts a Buffer (Node.js) or File/Blob (browser).
|
|
56
55
|
*
|
|
57
56
|
* @example
|
|
58
57
|
* // Node.js
|
|
59
|
-
*
|
|
60
|
-
* const meta = await ref.upload(fs.readFileSync("photo.jpg"), {
|
|
61
|
-
* contentType: "image/jpeg",
|
|
62
|
-
* });
|
|
63
|
-
*
|
|
58
|
+
* const meta = await ref.upload(fs.readFileSync("photo.jpg"), { contentType: "image/jpeg" });
|
|
64
59
|
* // Browser
|
|
65
60
|
* const meta = await ref.upload(fileInput.files[0]);
|
|
66
61
|
*/
|
|
67
62
|
async upload(data, opts) {
|
|
68
63
|
return this.storage._upload(this.bucket, this.filePath, data, opts);
|
|
69
64
|
}
|
|
70
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Returns the public download URL for this file.
|
|
67
|
+
* Uses GET /storage/resolve which is a public endpoint (no API key needed).
|
|
68
|
+
*/
|
|
71
69
|
async getDownloadURL() {
|
|
72
70
|
const meta = await this.getMetadata();
|
|
73
|
-
return meta.
|
|
71
|
+
return meta.downloadUrl ?? meta.path;
|
|
74
72
|
}
|
|
75
|
-
/**
|
|
73
|
+
/** Fetch metadata including downloadUrl for this file. */
|
|
76
74
|
async getMetadata() {
|
|
77
|
-
return this.storage.
|
|
75
|
+
return this.storage._resolve(`${this.bucket}/${this.filePath}`);
|
|
78
76
|
}
|
|
79
77
|
/** Delete this file. */
|
|
80
78
|
async delete() {
|
|
81
79
|
return this.storage._delete(this.bucket, this.filePath);
|
|
82
80
|
}
|
|
83
81
|
/**
|
|
84
|
-
* List files under this path prefix.
|
|
82
|
+
* List files under this path prefix within the bucket.
|
|
85
83
|
*
|
|
86
84
|
* @example
|
|
87
85
|
* const files = await storage.ref("avatars/").list({ limit: 50 });
|
|
@@ -94,11 +92,10 @@ exports.StorageReference = StorageReference;
|
|
|
94
92
|
// ─── BucketReference ──────────────────────────────────────────────────────────
|
|
95
93
|
/**
|
|
96
94
|
* A scoped helper for a named bucket.
|
|
97
|
-
* Obtain via
|
|
95
|
+
* Obtain via storage.bucket("bucket-name").
|
|
98
96
|
*
|
|
99
97
|
* @example
|
|
100
98
|
* const ref = storage.bucket("user-uploads").ref("doc.pdf");
|
|
101
|
-
* await ref.upload(buffer, { contentType: "application/pdf" });
|
|
102
99
|
*/
|
|
103
100
|
class BucketReference {
|
|
104
101
|
constructor(storage, name) {
|
|
@@ -111,27 +108,25 @@ class BucketReference {
|
|
|
111
108
|
}
|
|
112
109
|
exports.BucketReference = BucketReference;
|
|
113
110
|
// ─── ClefbaseStorage ──────────────────────────────────────────────────────────
|
|
114
|
-
// Named ClefbaseStorage (not "Storage") to avoid colliding with the DOM global.
|
|
111
|
+
// Named ClefbaseStorage (not "Storage") to avoid colliding with the browser DOM global.
|
|
115
112
|
/**
|
|
116
|
-
* File storage service. Obtain via
|
|
113
|
+
* File storage service. Obtain via getStorage(app).
|
|
117
114
|
*
|
|
118
115
|
* @example
|
|
119
|
-
* import { initClefbase, getStorage } from "clefbase";
|
|
120
|
-
* const app = initClefbase({ serverUrl, projectId, apiKey });
|
|
121
116
|
* const storage = getStorage(app);
|
|
122
117
|
*
|
|
123
|
-
* //
|
|
124
|
-
* await storage.ref("
|
|
125
|
-
* const url = await storage.ref("images/hero.jpg").getDownloadURL();
|
|
118
|
+
* // Resolve a stored path to a download URL (no auth required)
|
|
119
|
+
* const url = await storage.ref("products/image.jpg").getDownloadURL();
|
|
126
120
|
*
|
|
127
|
-
* //
|
|
128
|
-
*
|
|
121
|
+
* // Upload (requires API key)
|
|
122
|
+
* await storage.bucket("media").ref("photo.jpg").upload(buffer, { contentType: "image/jpeg" });
|
|
129
123
|
*/
|
|
130
124
|
class ClefbaseStorage {
|
|
131
|
-
constructor(http, auth = null) {
|
|
125
|
+
constructor(http, projectId, auth = null) {
|
|
132
126
|
this.http = http;
|
|
127
|
+
this.projectId = projectId;
|
|
133
128
|
this.auth = auth;
|
|
134
|
-
this._defaultBucket = "
|
|
129
|
+
this._defaultBucket = "";
|
|
135
130
|
}
|
|
136
131
|
authHeaders() {
|
|
137
132
|
return this.auth?.getAuthHeaders() ?? {};
|
|
@@ -149,52 +144,76 @@ class ClefbaseStorage {
|
|
|
149
144
|
ref(filePath) {
|
|
150
145
|
return new StorageReference(this, this._defaultBucket, filePath);
|
|
151
146
|
}
|
|
152
|
-
// ─── Internal methods
|
|
147
|
+
// ─── Internal methods called by StorageReference ───────────────────────────
|
|
148
|
+
/**
|
|
149
|
+
* Resolve a full path (bucketName/filePath) → metadata + downloadUrl.
|
|
150
|
+
* Server route: GET /storage/resolve?projectId=xxx&path=<fullPath>
|
|
151
|
+
* This is a PUBLIC endpoint — no API key needed.
|
|
152
|
+
*/
|
|
153
|
+
async _resolve(fullPath) {
|
|
154
|
+
const qs = new URLSearchParams({ projectId: this.projectId, path: fullPath });
|
|
155
|
+
return this.http.get(`/resolve?${qs}`);
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Upload a file.
|
|
159
|
+
* Server route: POST /storage/buckets/:bucketId/files (requires x-cfx-key)
|
|
160
|
+
* Sent as multipart/form-data with field "file", optional "folder", optional "metadata".
|
|
161
|
+
*/
|
|
153
162
|
async _upload(bucket, filePath, data, opts) {
|
|
154
|
-
// Resolve FormData implementation for both Node and browser
|
|
155
163
|
let FormDataImpl;
|
|
156
164
|
if (typeof FormData !== "undefined") {
|
|
157
165
|
FormDataImpl = FormData;
|
|
158
166
|
}
|
|
159
167
|
else {
|
|
160
|
-
// node-fetch ships its own FormData-compatible class in form-data package
|
|
161
168
|
const mod = await Promise.resolve().then(() => __importStar(require("form-data")));
|
|
162
169
|
FormDataImpl = mod.default;
|
|
163
170
|
}
|
|
164
171
|
const form = new FormDataImpl();
|
|
165
172
|
const filename = filePath.split("/").pop() ?? "upload";
|
|
173
|
+
// Extract folder from path: "products/shoes/img.jpg" → folder="products/shoes"
|
|
174
|
+
const parts = filePath.split("/");
|
|
175
|
+
const folder = parts.length > 1 ? parts.slice(0, -1).join("/") : undefined;
|
|
166
176
|
if (typeof Buffer !== "undefined" && Buffer.isBuffer(data)) {
|
|
167
|
-
// node-fetch's form-data accepts buffer + options object
|
|
168
177
|
form.append("file", data, { filename, contentType: opts?.contentType ?? "application/octet-stream" });
|
|
169
178
|
}
|
|
170
179
|
else {
|
|
171
|
-
// Browser: File / Blob
|
|
172
180
|
form.append("file", data, filename);
|
|
173
181
|
}
|
|
174
|
-
if (
|
|
182
|
+
if (folder)
|
|
183
|
+
form.append("folder", folder);
|
|
184
|
+
if (opts?.metadata)
|
|
175
185
|
form.append("metadata", JSON.stringify(opts.metadata));
|
|
176
|
-
}
|
|
177
|
-
form.append("path", filePath);
|
|
178
|
-
return this.http.request(`/storage/${bucket}/upload`, {
|
|
186
|
+
return this.http.request(`/buckets/${bucket}/files`, {
|
|
179
187
|
method: "POST",
|
|
180
188
|
body: form,
|
|
181
189
|
isFormData: true,
|
|
182
190
|
headers: this.authHeaders(),
|
|
183
191
|
});
|
|
184
192
|
}
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
193
|
+
/**
|
|
194
|
+
* Delete a file.
|
|
195
|
+
* Resolves the path to a fileId via _resolve, then calls:
|
|
196
|
+
* DELETE /storage/buckets/:bucketId/files/:fileId (requires x-cfx-key)
|
|
197
|
+
*/
|
|
188
198
|
async _delete(bucket, filePath) {
|
|
189
|
-
await this.
|
|
199
|
+
const meta = await this._resolve(`${bucket}/${filePath}`);
|
|
200
|
+
await this.http.delete(`/buckets/${bucket}/files/${meta.id}`, this.authHeaders());
|
|
190
201
|
}
|
|
202
|
+
/**
|
|
203
|
+
* List files in a bucket, optionally filtered by folder prefix.
|
|
204
|
+
* Server route: GET /storage/buckets/:bucketId/files?projectId=&folder=&limit=&offset=
|
|
205
|
+
* This is a PUBLIC endpoint.
|
|
206
|
+
*/
|
|
191
207
|
async _list(bucket, prefix, opts) {
|
|
192
|
-
const qs = new URLSearchParams({
|
|
208
|
+
const qs = new URLSearchParams({ projectId: this.projectId });
|
|
209
|
+
if (prefix)
|
|
210
|
+
qs.set("folder", prefix);
|
|
193
211
|
if (opts?.limit !== undefined)
|
|
194
212
|
qs.set("limit", String(opts.limit));
|
|
195
213
|
if (opts?.offset !== undefined)
|
|
196
214
|
qs.set("offset", String(opts.offset));
|
|
197
|
-
|
|
215
|
+
const result = await this.http.get(`/buckets/${bucket}/files?${qs}`);
|
|
216
|
+
return Array.isArray(result) ? result : result.data;
|
|
198
217
|
}
|
|
199
218
|
}
|
|
200
219
|
exports.ClefbaseStorage = ClefbaseStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -68,17 +68,6 @@ export interface AuthResult {
|
|
|
68
68
|
/** Shorthand for session.token — convenience field */
|
|
69
69
|
token: string;
|
|
70
70
|
}
|
|
71
|
-
export interface StorageFile {
|
|
72
|
-
id: string;
|
|
73
|
-
name: string;
|
|
74
|
-
bucket: string;
|
|
75
|
-
path: string;
|
|
76
|
-
size: number;
|
|
77
|
-
mimeType: string;
|
|
78
|
-
url: string;
|
|
79
|
-
createdAt: string;
|
|
80
|
-
metadata?: Record<string, unknown>;
|
|
81
|
-
}
|
|
82
71
|
export declare class ClefbaseError extends Error {
|
|
83
72
|
readonly code?: string | undefined;
|
|
84
73
|
readonly status?: number | undefined;
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,gBAAgB;IAC/C,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GACtB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,GAChB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1B,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,cAAc,CAAC;AAE3E,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7B;AAID,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;CACf;AAID,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,uEAAuE;IACvE,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,yCAAyC;IACzC,MAAM,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,gBAAgB;IAC/B,GAAG,EAAE,MAAM,CAAC;IACZ,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW,CAAC,CAAC,GAAG,gBAAgB;IAC/C,IAAI,EAAE,CAAC,EAAE,CAAC;IACV,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACjC,IAAI,CAAC,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,GAAG,EAAE,KAAK,GAAG,MAAM,CAAA;KAAE,CAAC;IAC9C,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,+DAA+D;AAC/D,MAAM,MAAM,cAAc,GACtB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,GAAG,EAAE,MAAM,CAAA;CAAE,GACf;IAAE,IAAI,EAAE,MAAM,CAAA;CAAE,GAChB;IAAE,GAAG,EAAE,OAAO,CAAA;CAAE,GAChB;IAAE,SAAS,EAAE,MAAM,CAAA;CAAE,CAAC;AAE1B,2EAA2E;AAC3E,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,GAAG,cAAc,CAAC;AAE3E,8DAA8D;AAC9D,MAAM,WAAW,WAAW;IAC1B,CAAC,KAAK,EAAE,MAAM,GAAG,UAAU,CAAC;CAC7B;AAID,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,OAAO,CAAC;IACvB,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,OAAO,EAAE,WAAW,CAAC;IACrB,sDAAsD;IACtD,KAAK,EAAE,MAAM,CAAC;CACf;AAID,qBAAa,aAAc,SAAQ,KAAK;aAGpB,IAAI,CAAC,EAAE,MAAM;aACb,MAAM,CAAC,EAAE,MAAM;gBAF/B,OAAO,EAAE,MAAM,EACC,IAAI,CAAC,EAAE,MAAM,YAAA,EACb,MAAM,CAAC,EAAE,MAAM,YAAA;CASlC"}
|
package/dist/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,iFAAiF;;;
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,iFAAiF;;;AA6EjF,iFAAiF;AAEjF,MAAa,aAAc,SAAQ,KAAK;IACtC,YACE,OAAe,EACC,IAAa,EACb,MAAe;QAE/B,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAS;QACb,WAAM,GAAN,MAAM,CAAS;QAG/B,IAAI,CAAC,IAAI,GAAG,eAAe,CAAC;QAC5B,oCAAoC;QACpC,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAbD,sCAaC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "clefbase",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.1",
|
|
4
4
|
"description": "Firebase-style SDK for Clefbase — database, auth, and storage in one package",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -34,6 +34,7 @@
|
|
|
34
34
|
"author": "",
|
|
35
35
|
"license": "MIT",
|
|
36
36
|
"dependencies": {
|
|
37
|
+
"clefbase": "^1.0.0",
|
|
37
38
|
"form-data": "^4.0.0",
|
|
38
39
|
"node-fetch": "^3.3.2"
|
|
39
40
|
},
|
|
@@ -41,4 +42,4 @@
|
|
|
41
42
|
"@types/node": "^20.0.0",
|
|
42
43
|
"typescript": "^5.0.0"
|
|
43
44
|
}
|
|
44
|
-
}
|
|
45
|
+
}
|