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.
- package/README.md +265 -0
- package/dist/app.d.ts +69 -0
- package/dist/app.d.ts.map +1 -0
- package/dist/app.js +112 -0
- package/dist/app.js.map +1 -0
- package/dist/auth/index.d.ts +115 -0
- package/dist/auth/index.d.ts.map +1 -0
- package/dist/auth/index.js +271 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/db/index.d.ts +165 -0
- package/dist/db/index.d.ts.map +1 -0
- package/dist/db/index.js +230 -0
- package/dist/db/index.js.map +1 -0
- package/dist/http.d.ts +25 -0
- package/dist/http.d.ts.map +1 -0
- package/dist/http.js +132 -0
- package/dist/http.js.map +1 -0
- package/dist/index.d.ts +23 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +44 -0
- package/dist/index.js.map +1 -0
- package/dist/storage/index.d.ts +105 -0
- package/dist/storage/index.d.ts.map +1 -0
- package/dist/storage/index.js +201 -0
- package/dist/storage/index.js.map +1 -0
- package/dist/types.d.ts +87 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +19 -0
- package/dist/types.js.map +1 -0
- package/package.json +44 -0
|
@@ -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
|
package/dist/http.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"http.js","sourceRoot":"","sources":["../src/http.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -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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"}
|