clawfire 0.6.3 → 0.6.4
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/cli.js +1 -1
- package/dist/{dev-server-NWB66EJT.js → dev-server-7JCKX7OD.js} +61 -0
- package/dist/dev.cjs +61 -0
- package/dist/dev.cjs.map +1 -1
- package/dist/dev.js +61 -0
- package/dist/dev.js.map +1 -1
- package/package.json +1 -1
package/dist/dev.js
CHANGED
|
@@ -3377,8 +3377,48 @@ var FirebaseSetup = class {
|
|
|
3377
3377
|
return { success: true, message: `${service} enabled in firebase.json.` };
|
|
3378
3378
|
}
|
|
3379
3379
|
// ─── Firestore Database Automation ──────────────────────────────────
|
|
3380
|
+
/**
|
|
3381
|
+
* Enable Firestore API via gcloud CLI.
|
|
3382
|
+
* Required before creating a database for the first time.
|
|
3383
|
+
*/
|
|
3384
|
+
async enableFirestoreApi() {
|
|
3385
|
+
const state = this.loadState();
|
|
3386
|
+
let projectId = state.projectId || "";
|
|
3387
|
+
if (!projectId) {
|
|
3388
|
+
const firebasercPath = resolve5(this.projectDir, ".firebaserc");
|
|
3389
|
+
if (existsSync6(firebasercPath)) {
|
|
3390
|
+
try {
|
|
3391
|
+
const rc = JSON.parse(readFileSync4(firebasercPath, "utf-8"));
|
|
3392
|
+
projectId = rc?.projects?.default || "";
|
|
3393
|
+
} catch {
|
|
3394
|
+
}
|
|
3395
|
+
}
|
|
3396
|
+
}
|
|
3397
|
+
if (!projectId) {
|
|
3398
|
+
return { success: false, message: "No project ID found. Select a project first." };
|
|
3399
|
+
}
|
|
3400
|
+
try {
|
|
3401
|
+
await this.execTimeout(
|
|
3402
|
+
"gcloud",
|
|
3403
|
+
["services", "enable", "firestore.googleapis.com", "--project", projectId],
|
|
3404
|
+
6e4
|
|
3405
|
+
);
|
|
3406
|
+
return { success: true, message: "Firestore API enabled." };
|
|
3407
|
+
} catch (err) {
|
|
3408
|
+
const msg = err instanceof Error ? err.message : "Unknown error";
|
|
3409
|
+
if (msg.includes("ENOENT") || msg.includes("not found") || msg.includes("command not found")) {
|
|
3410
|
+
return {
|
|
3411
|
+
success: false,
|
|
3412
|
+
message: `gcloud CLI not found. Please enable the Firestore API manually:
|
|
3413
|
+
https://console.developers.google.com/apis/api/firestore.googleapis.com/overview?project=${projectId}`
|
|
3414
|
+
};
|
|
3415
|
+
}
|
|
3416
|
+
return { success: false, message: `Failed to enable Firestore API: ${msg}` };
|
|
3417
|
+
}
|
|
3418
|
+
}
|
|
3380
3419
|
/**
|
|
3381
3420
|
* Create Firestore database via CLI.
|
|
3421
|
+
* Automatically enables Firestore API if needed.
|
|
3382
3422
|
* Handles "ALREADY_EXISTS" gracefully — returns success.
|
|
3383
3423
|
*/
|
|
3384
3424
|
async createFirestoreDatabase(location = "nam5") {
|
|
@@ -3394,6 +3434,27 @@ var FirebaseSetup = class {
|
|
|
3394
3434
|
if (msg.includes("ALREADY_EXISTS") || msg.includes("already exists")) {
|
|
3395
3435
|
return { success: true, message: "Firestore database already exists." };
|
|
3396
3436
|
}
|
|
3437
|
+
if (msg.includes("403") || msg.includes("has not been used") || msg.includes("is disabled")) {
|
|
3438
|
+
const enableResult = await this.enableFirestoreApi();
|
|
3439
|
+
if (!enableResult.success) {
|
|
3440
|
+
return enableResult;
|
|
3441
|
+
}
|
|
3442
|
+
await new Promise((r) => setTimeout(r, 5e3));
|
|
3443
|
+
try {
|
|
3444
|
+
await this.execTimeout(
|
|
3445
|
+
"firebase",
|
|
3446
|
+
["firestore:databases:create", "(default)", "--location", location, "--json"],
|
|
3447
|
+
6e4
|
|
3448
|
+
);
|
|
3449
|
+
return { success: true, message: `Firestore API enabled and database created (location: ${location}).` };
|
|
3450
|
+
} catch (retryErr) {
|
|
3451
|
+
const retryMsg = retryErr instanceof Error ? retryErr.message : "Unknown error";
|
|
3452
|
+
if (retryMsg.includes("ALREADY_EXISTS") || retryMsg.includes("already exists")) {
|
|
3453
|
+
return { success: true, message: "Firestore database already exists." };
|
|
3454
|
+
}
|
|
3455
|
+
return { success: false, message: `Failed to create Firestore database after enabling API: ${retryMsg}` };
|
|
3456
|
+
}
|
|
3457
|
+
}
|
|
3397
3458
|
return { success: false, message: `Failed to create Firestore database: ${msg}` };
|
|
3398
3459
|
}
|
|
3399
3460
|
}
|