clefbase 1.0.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/db/index.ts"],"names":[],"mappings":"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"}
package/dist/http.d.ts ADDED
@@ -0,0 +1,25 @@
1
+ export interface RequestOptions {
2
+ method?: string;
3
+ body?: unknown;
4
+ /** Extra headers merged on top of the instance defaults */
5
+ headers?: Record<string, string>;
6
+ /**
7
+ * Set to true when body is a FormData instance.
8
+ * Prevents the client from JSON-encoding the body or
9
+ * setting Content-Type (the browser/node-fetch sets it with the boundary).
10
+ */
11
+ isFormData?: boolean;
12
+ }
13
+ export declare class HttpClient {
14
+ private readonly baseUrl;
15
+ private readonly defaultHeaders;
16
+ constructor(baseUrl: string, defaultHeaders?: Record<string, string>);
17
+ private mergeHeaders;
18
+ request<T>(path: string, opts?: RequestOptions): Promise<T>;
19
+ get<T>(path: string, headers?: Record<string, string>): Promise<T>;
20
+ post<T>(path: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
21
+ put<T>(path: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
22
+ patch<T>(path: string, body?: unknown, headers?: Record<string, string>): Promise<T>;
23
+ delete<T>(path: string, headers?: Record<string, string>): Promise<T>;
24
+ }
25
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"AA8BA,MAAM,WAAW,cAAc;IAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,2DAA2D;IAC3D,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAID,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,cAAc;gBADd,OAAO,EAAE,MAAM,EACf,cAAc,GAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAM;IAG9D,OAAO,CAAC,YAAY;IAed,OAAO,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,GAAE,cAAmB,GAAG,OAAO,CAAC,CAAC,CAAC;IA4CrE,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlE,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAInF,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIlF,KAAK,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;IAIpF,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC;CAGtE"}
package/dist/http.js ADDED
@@ -0,0 +1,132 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.HttpClient = void 0;
37
+ const types_1 = require("./types");
38
+ // ─── Fetch resolution ─────────────────────────────────────────────────────────
39
+ // Node 18+ ships native fetch. Older Node falls back to node-fetch v3.
40
+ async function resolveFetch() {
41
+ // Native fetch available (Node 18+, all browsers)
42
+ if (typeof globalThis.fetch === "function") {
43
+ return globalThis.fetch.bind(globalThis);
44
+ }
45
+ // Fallback: node-fetch (listed as a dependency)
46
+ try {
47
+ const mod = await Promise.resolve().then(() => __importStar(require("node-fetch")));
48
+ return mod.default;
49
+ }
50
+ catch {
51
+ throw new types_1.ClefbaseError("No fetch implementation found. Use Node 18+ or ensure node-fetch is installed.");
52
+ }
53
+ }
54
+ // Cache the resolved fetch so we only do the dynamic import once
55
+ let _fetchCache = null;
56
+ async function getFetch() {
57
+ if (!_fetchCache)
58
+ _fetchCache = await resolveFetch();
59
+ return _fetchCache;
60
+ }
61
+ // ─── HttpClient ───────────────────────────────────────────────────────────────
62
+ class HttpClient {
63
+ constructor(baseUrl, defaultHeaders = {}) {
64
+ this.baseUrl = baseUrl;
65
+ this.defaultHeaders = defaultHeaders;
66
+ }
67
+ mergeHeaders(extra, isFormData) {
68
+ const merged = {
69
+ ...this.defaultHeaders,
70
+ ...extra,
71
+ };
72
+ // Let fetch set the Content-Type (+ boundary) automatically for FormData
73
+ if (!isFormData) {
74
+ merged["Content-Type"] = "application/json";
75
+ }
76
+ return merged;
77
+ }
78
+ async request(path, opts = {}) {
79
+ const fetchFn = await getFetch();
80
+ const { method = "GET", body, headers = {}, isFormData = false } = opts;
81
+ const url = `${this.baseUrl}${path}`;
82
+ const init = {
83
+ method,
84
+ headers: this.mergeHeaders(headers, isFormData),
85
+ };
86
+ if (body !== undefined) {
87
+ init.body = isFormData
88
+ ? body
89
+ : JSON.stringify(body);
90
+ }
91
+ let res;
92
+ try {
93
+ res = await fetchFn(url, init);
94
+ }
95
+ catch (networkErr) {
96
+ throw new types_1.ClefbaseError(`Network error: ${networkErr.message ?? "unknown"}`, "NETWORK_ERROR");
97
+ }
98
+ if (!res.ok) {
99
+ let message = `Request failed: ${res.status} ${res.statusText}`;
100
+ try {
101
+ const body = (await res.json());
102
+ if (body.error)
103
+ message = body.error;
104
+ }
105
+ catch { /* keep default message */ }
106
+ throw new types_1.ClefbaseError(message, String(res.status), res.status);
107
+ }
108
+ // 204 No Content or empty body — return undefined
109
+ const contentLength = res.headers.get("content-length");
110
+ if (res.status === 204 || contentLength === "0") {
111
+ return undefined;
112
+ }
113
+ return res.json();
114
+ }
115
+ get(path, headers) {
116
+ return this.request(path, { method: "GET", headers });
117
+ }
118
+ post(path, body, headers) {
119
+ return this.request(path, { method: "POST", body, headers });
120
+ }
121
+ put(path, body, headers) {
122
+ return this.request(path, { method: "PUT", body, headers });
123
+ }
124
+ patch(path, body, headers) {
125
+ return this.request(path, { method: "PATCH", body, headers });
126
+ }
127
+ delete(path, headers) {
128
+ return this.request(path, { method: "DELETE", headers });
129
+ }
130
+ }
131
+ exports.HttpClient = HttpClient;
132
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,23 @@
1
+ /**
2
+ * clefbase — Firebase-style SDK for Clefbase
3
+ *
4
+ * @example
5
+ * import { initClefbase, getDatabase, getAuth, getStorage } from "clefbase";
6
+ *
7
+ * const app = initClefbase({
8
+ * serverUrl: "https://your-server.com",
9
+ * projectId: "my_project_1abc",
10
+ * apiKey: "cfx_abc123...",
11
+ * });
12
+ *
13
+ * const db = getDatabase(app);
14
+ * const auth = getAuth(app);
15
+ * const storage = getStorage(app);
16
+ */
17
+ export { ClefbaseApp, initClefbase, getApp, getDatabase, getAuth, getStorage, } from "./app";
18
+ export { Database, CollectionReference, DocumentReference, Query } from "./db";
19
+ export { Auth } from "./auth";
20
+ export { ClefbaseStorage, StorageReference, BucketReference, } from "./storage";
21
+ export type { ClefbaseConfig, ClefbaseDocument, QueryOptions, QueryResult, FilterOperator, WhereClause, WhereValue, AuthUser, AuthSession, AuthResult, StorageFile, } from "./types";
22
+ export { ClefbaseError } from "./types";
23
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,EACL,eAAe,EACf,gBAAgB,EAChB,eAAe,GAChB,MAAM,WAAW,CAAC;AAGnB,YAAY,EACV,cAAc,EACd,gBAAgB,EAChB,YAAY,EACZ,WAAW,EACX,cAAc,EACd,WAAW,EACX,UAAU,EACV,QAAQ,EACR,WAAW,EACX,UAAU,EACV,WAAW,GACZ,MAAM,SAAS,CAAC;AAEjB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,44 @@
1
+ "use strict";
2
+ /**
3
+ * clefbase — Firebase-style SDK for Clefbase
4
+ *
5
+ * @example
6
+ * import { initClefbase, getDatabase, getAuth, getStorage } from "clefbase";
7
+ *
8
+ * const app = initClefbase({
9
+ * serverUrl: "https://your-server.com",
10
+ * projectId: "my_project_1abc",
11
+ * apiKey: "cfx_abc123...",
12
+ * });
13
+ *
14
+ * const db = getDatabase(app);
15
+ * const auth = getAuth(app);
16
+ * const storage = getStorage(app);
17
+ */
18
+ Object.defineProperty(exports, "__esModule", { value: true });
19
+ exports.ClefbaseError = exports.BucketReference = exports.StorageReference = exports.ClefbaseStorage = exports.Auth = exports.Query = exports.DocumentReference = exports.CollectionReference = exports.Database = exports.getStorage = exports.getAuth = exports.getDatabase = exports.getApp = exports.initClefbase = exports.ClefbaseApp = void 0;
20
+ // ─── App ──────────────────────────────────────────────────────────────────────
21
+ var app_1 = require("./app");
22
+ Object.defineProperty(exports, "ClefbaseApp", { enumerable: true, get: function () { return app_1.ClefbaseApp; } });
23
+ Object.defineProperty(exports, "initClefbase", { enumerable: true, get: function () { return app_1.initClefbase; } });
24
+ Object.defineProperty(exports, "getApp", { enumerable: true, get: function () { return app_1.getApp; } });
25
+ Object.defineProperty(exports, "getDatabase", { enumerable: true, get: function () { return app_1.getDatabase; } });
26
+ Object.defineProperty(exports, "getAuth", { enumerable: true, get: function () { return app_1.getAuth; } });
27
+ Object.defineProperty(exports, "getStorage", { enumerable: true, get: function () { return app_1.getStorage; } });
28
+ // ─── Database ─────────────────────────────────────────────────────────────────
29
+ var db_1 = require("./db");
30
+ Object.defineProperty(exports, "Database", { enumerable: true, get: function () { return db_1.Database; } });
31
+ Object.defineProperty(exports, "CollectionReference", { enumerable: true, get: function () { return db_1.CollectionReference; } });
32
+ Object.defineProperty(exports, "DocumentReference", { enumerable: true, get: function () { return db_1.DocumentReference; } });
33
+ Object.defineProperty(exports, "Query", { enumerable: true, get: function () { return db_1.Query; } });
34
+ // ─── Auth ─────────────────────────────────────────────────────────────────────
35
+ var auth_1 = require("./auth");
36
+ Object.defineProperty(exports, "Auth", { enumerable: true, get: function () { return auth_1.Auth; } });
37
+ // ─── Storage ──────────────────────────────────────────────────────────────────
38
+ var storage_1 = require("./storage");
39
+ Object.defineProperty(exports, "ClefbaseStorage", { enumerable: true, get: function () { return storage_1.ClefbaseStorage; } });
40
+ Object.defineProperty(exports, "StorageReference", { enumerable: true, get: function () { return storage_1.StorageReference; } });
41
+ Object.defineProperty(exports, "BucketReference", { enumerable: true, get: function () { return storage_1.BucketReference; } });
42
+ var types_1 = require("./types");
43
+ Object.defineProperty(exports, "ClefbaseError", { enumerable: true, get: function () { return types_1.ClefbaseError; } });
44
+ //# sourceMappingURL=index.js.map
@@ -0,0 +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,qCAImB;AAHjB,0GAAA,eAAe,OAAA;AACf,2GAAA,gBAAgB,OAAA;AAChB,0GAAA,eAAe,OAAA;AAkBjB,iCAAwC;AAA/B,sGAAA,aAAa,OAAA"}
@@ -0,0 +1,105 @@
1
+ import { HttpClient } from "../http";
2
+ import type { StorageFile } from "../types";
3
+ import type { Auth } from "../auth";
4
+ /**
5
+ * A reference to a single file path inside a bucket.
6
+ *
7
+ * @example
8
+ * const ref = storage.ref("avatars/user-123.jpg");
9
+ * const meta = await ref.upload(buffer, { contentType: "image/jpeg" });
10
+ * const url = await ref.getDownloadURL();
11
+ * await ref.delete();
12
+ */
13
+ export declare class StorageReference {
14
+ private readonly storage;
15
+ readonly bucket: string;
16
+ readonly filePath: string;
17
+ constructor(storage: ClefbaseStorage, bucket: string, filePath: string);
18
+ /**
19
+ * Upload data to this path.
20
+ * Accepts a `Buffer` (Node.js) or `File` / `Blob` (browser).
21
+ *
22
+ * @example
23
+ * // Node.js
24
+ * import fs from "fs";
25
+ * const meta = await ref.upload(fs.readFileSync("photo.jpg"), {
26
+ * contentType: "image/jpeg",
27
+ * });
28
+ *
29
+ * // Browser
30
+ * const meta = await ref.upload(fileInput.files[0]);
31
+ */
32
+ upload(data: Buffer | Blob | File, opts?: {
33
+ contentType?: string;
34
+ metadata?: Record<string, unknown>;
35
+ }): Promise<StorageFile>;
36
+ /** Returns the public download URL for this file. */
37
+ getDownloadURL(): Promise<string>;
38
+ /** Returns metadata for this file (size, mimeType, url, etc.). */
39
+ getMetadata(): Promise<StorageFile>;
40
+ /** Delete this file. */
41
+ delete(): Promise<void>;
42
+ /**
43
+ * List files under this path prefix.
44
+ *
45
+ * @example
46
+ * const files = await storage.ref("avatars/").list({ limit: 50 });
47
+ */
48
+ list(opts?: {
49
+ limit?: number;
50
+ offset?: number;
51
+ }): Promise<StorageFile[]>;
52
+ }
53
+ /**
54
+ * A scoped helper for a named bucket.
55
+ * Obtain via `storage.bucket("bucket-name")`.
56
+ *
57
+ * @example
58
+ * const ref = storage.bucket("user-uploads").ref("doc.pdf");
59
+ * await ref.upload(buffer, { contentType: "application/pdf" });
60
+ */
61
+ export declare class BucketReference {
62
+ private readonly storage;
63
+ readonly name: string;
64
+ constructor(storage: ClefbaseStorage, name: string);
65
+ ref(filePath: string): StorageReference;
66
+ }
67
+ /**
68
+ * File storage service. Obtain via `getStorage(app)`.
69
+ *
70
+ * @example
71
+ * import { initClefbase, getStorage } from "clefbase";
72
+ * const app = initClefbase({ serverUrl, projectId, apiKey });
73
+ * const storage = getStorage(app);
74
+ *
75
+ * // Default bucket
76
+ * await storage.ref("images/hero.jpg").upload(buffer, { contentType: "image/jpeg" });
77
+ * const url = await storage.ref("images/hero.jpg").getDownloadURL();
78
+ *
79
+ * // Named bucket
80
+ * const ref = storage.bucket("thumbnails").ref("small.jpg");
81
+ */
82
+ export declare class ClefbaseStorage {
83
+ private readonly http;
84
+ private readonly auth;
85
+ private _defaultBucket;
86
+ constructor(http: HttpClient, auth?: Auth | null);
87
+ private authHeaders;
88
+ /** Override the default bucket name (default: "default"). */
89
+ setDefaultBucket(name: string): this;
90
+ /** Return a reference scoped to a named bucket. */
91
+ bucket(name: string): BucketReference;
92
+ /** Return a StorageReference in the default bucket. */
93
+ ref(filePath: string): StorageReference;
94
+ _upload(bucket: string, filePath: string, data: Buffer | Blob | File, opts?: {
95
+ contentType?: string;
96
+ metadata?: Record<string, unknown>;
97
+ }): Promise<StorageFile>;
98
+ _getMetadata(bucket: string, filePath: string): Promise<StorageFile>;
99
+ _delete(bucket: string, filePath: string): Promise<void>;
100
+ _list(bucket: string, prefix: string, opts?: {
101
+ limit?: number;
102
+ offset?: number;
103
+ }): Promise<StorageFile[]>;
104
+ }
105
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +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,UAAU,CAAC;AAC5C,OAAO,KAAK,EAAE,IAAI,EAAE,MAAM,SAAS,CAAC;AAIpC;;;;;;;;GAQG;AACH,qBAAa,gBAAgB;IAEzB,OAAO,CAAC,QAAQ,CAAC,OAAO;aACR,MAAM,EAAE,MAAM;aACd,QAAQ,EAAE,MAAM;gBAFf,OAAO,EAAE,eAAe,EACzB,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM;IAGlC;;;;;;;;;;;;;OAaG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC1B,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAClE,OAAO,CAAC,WAAW,CAAC;IAIvB,qDAAqD;IAC/C,cAAc,IAAI,OAAO,CAAC,MAAM,CAAC;IAKvC,kEAAkE;IAC5D,WAAW,IAAI,OAAO,CAAC,WAAW,CAAC;IAIzC,wBAAwB;IAClB,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAI7B;;;;;OAKG;IACG,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;CAG/E;AAID;;;;;;;GAOG;AACH,qBAAa,eAAe;IAExB,OAAO,CAAC,QAAQ,CAAC,OAAO;aACR,IAAI,EAAE,MAAM;gBADX,OAAO,EAAE,eAAe,EACzB,IAAI,EAAE,MAAM;IAG9B,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;CAGxC;AAKD;;;;;;;;;;;;;;GAcG;AACH,qBAAa,eAAe;IAIxB,OAAO,CAAC,QAAQ,CAAC,IAAI;IACrB,OAAO,CAAC,QAAQ,CAAC,IAAI;IAJvB,OAAO,CAAC,cAAc,CAAa;gBAGhB,IAAI,EAAE,UAAU,EAChB,IAAI,GAAE,IAAI,GAAG,IAAW;IAG3C,OAAO,CAAC,WAAW;IAInB,6DAA6D;IAC7D,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI;IAKpC,mDAAmD;IACnD,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,eAAe;IAIrC,uDAAuD;IACvD,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,gBAAgB;IAMjC,OAAO,CACX,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI,EAC1B,IAAI,CAAC,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAClE,OAAO,CAAC,WAAW,CAAC;IAuCjB,YAAY,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAOpE,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOxD,KAAK,CACT,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM,EACd,IAAI,CAAC,EAAE;QAAE,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,GACzC,OAAO,CAAC,WAAW,EAAE,CAAC;CAS1B"}
@@ -0,0 +1,201 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ClefbaseStorage = exports.BucketReference = exports.StorageReference = void 0;
37
+ // ─── StorageReference ─────────────────────────────────────────────────────────
38
+ /**
39
+ * A reference to a single file path inside a bucket.
40
+ *
41
+ * @example
42
+ * const ref = storage.ref("avatars/user-123.jpg");
43
+ * const meta = await ref.upload(buffer, { contentType: "image/jpeg" });
44
+ * const url = await ref.getDownloadURL();
45
+ * await ref.delete();
46
+ */
47
+ class StorageReference {
48
+ constructor(storage, bucket, filePath) {
49
+ this.storage = storage;
50
+ this.bucket = bucket;
51
+ this.filePath = filePath;
52
+ }
53
+ /**
54
+ * Upload data to this path.
55
+ * Accepts a `Buffer` (Node.js) or `File` / `Blob` (browser).
56
+ *
57
+ * @example
58
+ * // Node.js
59
+ * import fs from "fs";
60
+ * const meta = await ref.upload(fs.readFileSync("photo.jpg"), {
61
+ * contentType: "image/jpeg",
62
+ * });
63
+ *
64
+ * // Browser
65
+ * const meta = await ref.upload(fileInput.files[0]);
66
+ */
67
+ async upload(data, opts) {
68
+ return this.storage._upload(this.bucket, this.filePath, data, opts);
69
+ }
70
+ /** Returns the public download URL for this file. */
71
+ async getDownloadURL() {
72
+ const meta = await this.getMetadata();
73
+ return meta.url;
74
+ }
75
+ /** Returns metadata for this file (size, mimeType, url, etc.). */
76
+ async getMetadata() {
77
+ return this.storage._getMetadata(this.bucket, this.filePath);
78
+ }
79
+ /** Delete this file. */
80
+ async delete() {
81
+ return this.storage._delete(this.bucket, this.filePath);
82
+ }
83
+ /**
84
+ * List files under this path prefix.
85
+ *
86
+ * @example
87
+ * const files = await storage.ref("avatars/").list({ limit: 50 });
88
+ */
89
+ async list(opts) {
90
+ return this.storage._list(this.bucket, this.filePath, opts);
91
+ }
92
+ }
93
+ exports.StorageReference = StorageReference;
94
+ // ─── BucketReference ──────────────────────────────────────────────────────────
95
+ /**
96
+ * A scoped helper for a named bucket.
97
+ * Obtain via `storage.bucket("bucket-name")`.
98
+ *
99
+ * @example
100
+ * const ref = storage.bucket("user-uploads").ref("doc.pdf");
101
+ * await ref.upload(buffer, { contentType: "application/pdf" });
102
+ */
103
+ class BucketReference {
104
+ constructor(storage, name) {
105
+ this.storage = storage;
106
+ this.name = name;
107
+ }
108
+ ref(filePath) {
109
+ return new StorageReference(this.storage, this.name, filePath);
110
+ }
111
+ }
112
+ exports.BucketReference = BucketReference;
113
+ // ─── ClefbaseStorage ──────────────────────────────────────────────────────────
114
+ // Named ClefbaseStorage (not "Storage") to avoid colliding with the DOM global.
115
+ /**
116
+ * File storage service. Obtain via `getStorage(app)`.
117
+ *
118
+ * @example
119
+ * import { initClefbase, getStorage } from "clefbase";
120
+ * const app = initClefbase({ serverUrl, projectId, apiKey });
121
+ * const storage = getStorage(app);
122
+ *
123
+ * // Default bucket
124
+ * await storage.ref("images/hero.jpg").upload(buffer, { contentType: "image/jpeg" });
125
+ * const url = await storage.ref("images/hero.jpg").getDownloadURL();
126
+ *
127
+ * // Named bucket
128
+ * const ref = storage.bucket("thumbnails").ref("small.jpg");
129
+ */
130
+ class ClefbaseStorage {
131
+ constructor(http, auth = null) {
132
+ this.http = http;
133
+ this.auth = auth;
134
+ this._defaultBucket = "default";
135
+ }
136
+ authHeaders() {
137
+ return this.auth?.getAuthHeaders() ?? {};
138
+ }
139
+ /** Override the default bucket name (default: "default"). */
140
+ setDefaultBucket(name) {
141
+ this._defaultBucket = name;
142
+ return this;
143
+ }
144
+ /** Return a reference scoped to a named bucket. */
145
+ bucket(name) {
146
+ return new BucketReference(this, name);
147
+ }
148
+ /** Return a StorageReference in the default bucket. */
149
+ ref(filePath) {
150
+ return new StorageReference(this, this._defaultBucket, filePath);
151
+ }
152
+ // ─── Internal methods (called by StorageReference) ─────────────────────────
153
+ async _upload(bucket, filePath, data, opts) {
154
+ // Resolve FormData implementation for both Node and browser
155
+ let FormDataImpl;
156
+ if (typeof FormData !== "undefined") {
157
+ FormDataImpl = FormData;
158
+ }
159
+ else {
160
+ // node-fetch ships its own FormData-compatible class in form-data package
161
+ const mod = await Promise.resolve().then(() => __importStar(require("form-data")));
162
+ FormDataImpl = mod.default;
163
+ }
164
+ const form = new FormDataImpl();
165
+ const filename = filePath.split("/").pop() ?? "upload";
166
+ if (typeof Buffer !== "undefined" && Buffer.isBuffer(data)) {
167
+ // node-fetch's form-data accepts buffer + options object
168
+ form.append("file", data, { filename, contentType: opts?.contentType ?? "application/octet-stream" });
169
+ }
170
+ else {
171
+ // Browser: File / Blob
172
+ form.append("file", data, filename);
173
+ }
174
+ if (opts?.metadata) {
175
+ form.append("metadata", JSON.stringify(opts.metadata));
176
+ }
177
+ form.append("path", filePath);
178
+ return this.http.request(`/storage/${bucket}/upload`, {
179
+ method: "POST",
180
+ body: form,
181
+ isFormData: true,
182
+ headers: this.authHeaders(),
183
+ });
184
+ }
185
+ async _getMetadata(bucket, filePath) {
186
+ return this.http.get(`/storage/${bucket}/files/${encodeURIComponent(filePath)}`, this.authHeaders());
187
+ }
188
+ async _delete(bucket, filePath) {
189
+ await this.http.delete(`/storage/${bucket}/files/${encodeURIComponent(filePath)}`, this.authHeaders());
190
+ }
191
+ async _list(bucket, prefix, opts) {
192
+ const qs = new URLSearchParams({ prefix });
193
+ if (opts?.limit !== undefined)
194
+ qs.set("limit", String(opts.limit));
195
+ if (opts?.offset !== undefined)
196
+ qs.set("offset", String(opts.offset));
197
+ return this.http.get(`/storage/${bucket}/files?${qs}`, this.authHeaders());
198
+ }
199
+ }
200
+ exports.ClefbaseStorage = ClefbaseStorage;
201
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}