clefbase 1.1.6 → 1.2.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.
Files changed (43) hide show
  1. package/README.md +169 -103
  2. package/bin/clefbase.js +15 -0
  3. package/dist/app.d.ts +16 -32
  4. package/dist/app.d.ts.map +1 -1
  5. package/dist/app.js +29 -44
  6. package/dist/app.js.map +1 -1
  7. package/dist/auth/index.d.ts +16 -44
  8. package/dist/auth/index.d.ts.map +1 -1
  9. package/dist/auth/index.js +40 -95
  10. package/dist/auth/index.js.map +1 -1
  11. package/dist/cli-src/cli/api.js +183 -0
  12. package/dist/cli-src/cli/commands/deploy.js +285 -0
  13. package/dist/cli-src/cli/commands/info.js +67 -0
  14. package/dist/cli-src/cli/commands/init.js +226 -0
  15. package/dist/cli-src/cli/config.js +82 -0
  16. package/dist/cli-src/cli/index.js +110 -0
  17. package/dist/cli-src/types.js +17 -0
  18. package/dist/cli.js +34383 -0
  19. package/dist/db/index.d.ts +26 -62
  20. package/dist/db/index.d.ts.map +1 -1
  21. package/dist/db/index.js +34 -70
  22. package/dist/db/index.js.map +1 -1
  23. package/dist/hosting/index.d.ts +120 -0
  24. package/dist/hosting/index.d.ts.map +1 -0
  25. package/dist/hosting/index.js +214 -0
  26. package/dist/hosting/index.js.map +1 -0
  27. package/dist/http.d.ts +2 -4
  28. package/dist/http.d.ts.map +1 -1
  29. package/dist/http.js +8 -22
  30. package/dist/http.js.map +1 -1
  31. package/dist/index.d.ts +11 -7
  32. package/dist/index.d.ts.map +1 -1
  33. package/dist/index.js +13 -6
  34. package/dist/index.js.map +1 -1
  35. package/dist/storage/index.d.ts +8 -50
  36. package/dist/storage/index.d.ts.map +1 -1
  37. package/dist/storage/index.js +9 -59
  38. package/dist/storage/index.js.map +1 -1
  39. package/dist/types.d.ts +10 -4
  40. package/dist/types.d.ts.map +1 -1
  41. package/dist/types.js +0 -1
  42. package/dist/types.js.map +1 -1
  43. package/package.json +21 -5
@@ -50,27 +50,22 @@ class StorageReference {
50
50
  this.filePath = filePath;
51
51
  }
52
52
  /**
53
- * Upload a file to this path.
54
- * Accepts a Buffer (Node.js) or File/Blob (browser).
53
+ * Upload a file. Accepts Buffer (Node) or File/Blob (browser).
55
54
  *
56
55
  * @example
57
56
  * // Node.js
58
- * const meta = await ref.upload(fs.readFileSync("photo.jpg"), { contentType: "image/jpeg" });
57
+ * await ref.upload(fs.readFileSync("photo.jpg"), { contentType: "image/jpeg" });
59
58
  * // Browser
60
- * const meta = await ref.upload(fileInput.files[0]);
59
+ * await ref.upload(fileInput.files[0]);
61
60
  */
62
61
  async upload(data, opts) {
63
62
  return this.storage._upload(this.bucket, this.filePath, data, opts);
64
63
  }
65
- /**
66
- * Returns the public download URL for this file.
67
- * Uses GET /storage/path/:bucket/:filePath which takes the path as URL
68
- * segments — slashes are never percent-encoded unlike query params.
69
- */
64
+ /** Returns the public download URL for this file. */
70
65
  async getDownloadURL() {
71
66
  return this.storage._directUrl(this.bucket, this.filePath);
72
67
  }
73
- /** Fetch metadata including downloadUrl for this file. */
68
+ /** Fetch file metadata including downloadUrl. */
74
69
  async getMetadata() {
75
70
  return this.storage._resolve(this.bucket, this.filePath);
76
71
  }
@@ -78,12 +73,7 @@ class StorageReference {
78
73
  async delete() {
79
74
  return this.storage._delete(this.bucket, this.filePath);
80
75
  }
81
- /**
82
- * List files under this path prefix within the bucket.
83
- *
84
- * @example
85
- * const files = await storage.ref("avatars/").list({ limit: 50 });
86
- */
76
+ /** List files under this path prefix. */
87
77
  async list(opts) {
88
78
  return this.storage._list(this.bucket, this.filePath, opts);
89
79
  }
@@ -92,7 +82,6 @@ exports.StorageReference = StorageReference;
92
82
  // ─── BucketReference ──────────────────────────────────────────────────────────
93
83
  /**
94
84
  * A scoped helper for a named bucket.
95
- * Obtain via storage.bucket("bucket-name").
96
85
  *
97
86
  * @example
98
87
  * const ref = storage.bucket("user-uploads").ref("doc.pdf");
@@ -108,17 +97,12 @@ class BucketReference {
108
97
  }
109
98
  exports.BucketReference = BucketReference;
110
99
  // ─── ClefbaseStorage ──────────────────────────────────────────────────────────
111
- // Named ClefbaseStorage (not "Storage") to avoid colliding with the browser DOM global.
112
100
  /**
113
- * File storage service. Obtain via getStorage(app).
101
+ * File storage service. Obtain via `getStorage(app)`.
114
102
  *
115
103
  * @example
116
104
  * const storage = getStorage(app);
117
- *
118
- * // Resolve a stored path to a download URL (no auth required)
119
105
  * const url = await storage.ref("products/image.jpg").getDownloadURL();
120
- *
121
- * // Upload (requires API key)
122
106
  * await storage.bucket("media").ref("photo.jpg").upload(buffer, { contentType: "image/jpeg" });
123
107
  */
124
108
  class ClefbaseStorage {
@@ -144,39 +128,16 @@ class ClefbaseStorage {
144
128
  ref(filePath) {
145
129
  return new StorageReference(this, this._defaultBucket, filePath.replace(/^\/+/, ""));
146
130
  }
147
- // ─── Internal methods called by StorageReference ───────────────────────────
148
- /**
149
- * Build a direct inline download URL using the /storage/path/ endpoint.
150
- * Server route: GET /storage/path/:bucket/:filePath?projectId=&inline=true
151
- *
152
- * This avoids all query-param encoding issues — the path is in URL segments
153
- * so slashes are never percent-encoded by the browser or fetch.
154
- */
131
+ // ─── Internal methods called by StorageReference ──────────────────────────
155
132
  _directUrl(bucket, filePath) {
156
133
  const cleanFile = filePath.replace(/^\/+/, "");
157
134
  const base = this.http.getBaseUrl();
158
- // The server's getFileByFullPath() treats the FIRST path segment as the bucket name.
159
- // filePath is already "products/battleship.jpg" where "products" IS the bucket.
160
- // So just pass filePath directly — do NOT prepend the SDK bucket name.
161
135
  return `${base}/path/${cleanFile}?projectId=${encodeURIComponent(this.projectId)}&inline=true`;
162
136
  }
163
- /**
164
- * Resolve a full path (bucketName/filePath) → metadata + downloadUrl.
165
- * Server route: GET /storage/resolve?projectId=xxx&path=<fullPath>
166
- * This is a PUBLIC endpoint — no API key needed.
167
- */
168
137
  async _resolve(bucket, filePath) {
169
138
  const cleanFile = filePath.replace(/^\/+/, "");
170
- // filePath already contains the bucket as first segment (e.g. "products/img.jpg")
171
- // Do NOT prepend bucket — pass filePath directly.
172
- const url = `/resolve?projectId=${encodeURIComponent(this.projectId)}&path=${cleanFile}`;
173
- return this.http.get(url);
139
+ return this.http.get(`/resolve?projectId=${encodeURIComponent(this.projectId)}&path=${cleanFile}`);
174
140
  }
175
- /**
176
- * Upload a file.
177
- * Server route: POST /storage/buckets/:bucketId/files (requires x-cfx-key)
178
- * Sent as multipart/form-data with field "file", optional "folder", optional "metadata".
179
- */
180
141
  async _upload(bucket, filePath, data, opts) {
181
142
  let FormDataImpl;
182
143
  if (typeof FormData !== "undefined") {
@@ -188,7 +149,6 @@ class ClefbaseStorage {
188
149
  }
189
150
  const form = new FormDataImpl();
190
151
  const filename = filePath.split("/").pop() ?? "upload";
191
- // Extract folder from path: "products/shoes/img.jpg" → folder="products/shoes"
192
152
  const parts = filePath.split("/");
193
153
  const folder = parts.length > 1 ? parts.slice(0, -1).join("/") : undefined;
194
154
  if (typeof Buffer !== "undefined" && Buffer.isBuffer(data)) {
@@ -208,20 +168,10 @@ class ClefbaseStorage {
208
168
  headers: this.authHeaders(),
209
169
  });
210
170
  }
211
- /**
212
- * Delete a file.
213
- * Resolves the path to a fileId via _resolve, then calls:
214
- * DELETE /storage/buckets/:bucketId/files/:fileId (requires x-cfx-key)
215
- */
216
171
  async _delete(bucket, filePath) {
217
172
  const meta = await this._resolve(bucket, filePath);
218
173
  await this.http.delete(`/buckets/${bucket}/files/${meta.id}`, this.authHeaders());
219
174
  }
220
- /**
221
- * List files in a bucket, optionally filtered by folder prefix.
222
- * Server route: GET /storage/buckets/:bucketId/files?projectId=&folder=&limit=&offset=
223
- * This is a PUBLIC endpoint.
224
- */
225
175
  async _list(bucket, prefix, opts) {
226
176
  const qs = new URLSearchParams({ projectId: this.projectId });
227
177
  if (prefix)
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/storage/index.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,10 +1,16 @@
1
1
  export interface ClefbaseConfig {
2
- /** Base URL of your Clefbase server, e.g. "https://your-server.com" */
2
+ /** Base URL of your Clefbase server. Defaults to https://api.cleforyx.com */
3
3
  serverUrl: string;
4
- /** Project ID (database ID) from your Clefbase dashboard */
4
+ /** Project / database ID from your Clefbase dashboard */
5
5
  projectId: string;
6
- /** API key generated for this project */
6
+ /** API key (x-cfx-key) generated for this project */
7
7
  apiKey: string;
8
+ /**
9
+ * Admin secret (x-admin-secret).
10
+ * Required for hosting deploys and admin-only operations.
11
+ * Optional — leave empty if you don't use hosting.
12
+ */
13
+ adminSecret: string;
8
14
  }
9
15
  export interface ClefbaseDocument {
10
16
  _id: string;
@@ -65,7 +71,7 @@ export interface AuthSession {
65
71
  export interface AuthResult {
66
72
  user: AuthUser;
67
73
  session: AuthSession;
68
- /** Shorthand for session.token — convenience field */
74
+ /** Shorthand for session.token */
69
75
  token: string;
70
76
  }
71
77
  export declare class ClefbaseError extends Error {
@@ -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,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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,cAAc;IAC7B,6EAA6E;IAC7E,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf;;;;OAIG;IACH,WAAW,EAAE,MAAM,CAAC;CACrB;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,kCAAkC;IAClC,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;CAQlC"}
package/dist/types.js CHANGED
@@ -9,7 +9,6 @@ class ClefbaseError extends Error {
9
9
  this.code = code;
10
10
  this.status = status;
11
11
  this.name = "ClefbaseError";
12
- // Maintain proper stack trace in V8
13
12
  if (Error.captureStackTrace) {
14
13
  Error.captureStackTrace(this, ClefbaseError);
15
14
  }
package/dist/types.js.map CHANGED
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":";AAAA,iFAAiF;;;AAmFjF,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,IAAI,KAAK,CAAC,iBAAiB,EAAE,CAAC;YAC5B,KAAK,CAAC,iBAAiB,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;QAC/C,CAAC;IACH,CAAC;CACF;AAZD,sCAYC"}
package/package.json CHANGED
@@ -1,9 +1,12 @@
1
1
  {
2
2
  "name": "clefbase",
3
- "version": "1.1.6",
4
- "description": "Firebase-style SDK for Clefbase — database, auth, and storage in one package",
3
+ "version": "1.2.1",
4
+ "description": "Firebase-style SDK and CLI for Clefbase — database, auth, storage, and hosting",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
7
+ "bin": {
8
+ "clefbase": "./bin/clefbase.js"
9
+ },
7
10
  "exports": {
8
11
  ".": {
9
12
  "require": "./dist/index.js",
@@ -13,33 +16,46 @@
13
16
  },
14
17
  "files": [
15
18
  "dist",
19
+ "bin",
16
20
  "README.md"
17
21
  ],
18
22
  "engines": {
19
23
  "node": ">=16.0.0"
20
24
  },
21
25
  "scripts": {
22
- "build": "tsc",
26
+ "build": "npm run build:sdk && npm run build:cli",
27
+ "build:sdk": "tsc -p tsconfig.json",
28
+ "build:cli": "tsc -p tsconfig.cli.json && node scripts/bundle-cli.js",
23
29
  "dev": "tsc --watch",
24
30
  "typecheck": "tsc --noEmit",
25
31
  "prepublishOnly": "npm run build"
26
32
  },
27
33
  "keywords": [
28
34
  "clefbase",
35
+ "cleforyx",
29
36
  "database",
30
37
  "auth",
31
38
  "storage",
32
- "firebase-alternative"
39
+ "hosting",
40
+ "firebase-alternative",
41
+ "cli"
33
42
  ],
34
43
  "author": "",
35
44
  "license": "MIT",
36
45
  "dependencies": {
37
- "clefbase": "^1.0.0",
38
46
  "form-data": "^4.0.0",
39
47
  "node-fetch": "^3.3.2"
40
48
  },
41
49
  "devDependencies": {
50
+ "@types/inquirer": "^9.0.9",
42
51
  "@types/node": "^20.0.0",
52
+ "esbuild": "^0.21.0",
43
53
  "typescript": "^5.0.0"
54
+ },
55
+ "optionalDependencies": {
56
+ "chalk": "^5.3.0",
57
+ "commander": "^12.1.0",
58
+ "inquirer": "^9.2.23",
59
+ "ora": "^8.0.1"
44
60
  }
45
61
  }