firebase-tools 15.3.0 → 15.4.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/lib/apiv2.js +7 -2
- package/lib/apphosting/rollout.js +1 -1
- package/lib/commands/dataconnect-execute.js +14 -12
- package/lib/dataconnect/types.js +8 -1
- package/lib/emulator/dataconnectEmulator.js +0 -1
- package/lib/emulator/downloadableEmulatorInfo.json +24 -24
- package/lib/env.js +18 -0
- package/lib/mcp/prompts/firestore/{generate_rules.js → generate_security_rules.js} +17 -17
- package/lib/mcp/prompts/firestore/index.js +2 -2
- package/lib/mcp/prompts/storage/{generate_rules.js → generate_security_rules.js} +19 -19
- package/lib/mcp/prompts/storage/index.js +2 -2
- package/lib/track.js +1 -16
- package/lib/tsconfig.publish.tsbuildinfo +1 -1
- package/package.json +1 -1
package/lib/apiv2.js
CHANGED
|
@@ -13,15 +13,20 @@ const node_fetch_1 = require("node-fetch");
|
|
|
13
13
|
const util_1 = require("util");
|
|
14
14
|
const auth = require("./auth");
|
|
15
15
|
const error_1 = require("./error");
|
|
16
|
+
const env_1 = require("./env");
|
|
16
17
|
const logger_1 = require("./logger");
|
|
17
18
|
const responseToError_1 = require("./responseToError");
|
|
18
19
|
const FormData = require("form-data");
|
|
19
20
|
const pkg = require("../package.json");
|
|
20
21
|
const CLI_VERSION = pkg.version;
|
|
22
|
+
const agent = (0, env_1.detectAIAgent)();
|
|
23
|
+
const agentStr = agent === "unknown" ? "" : ` agent-name/${agent}`;
|
|
24
|
+
const platform = (0, env_1.isFirebaseMcp)() ? "FirebaseMCP" : "FirebaseCLI";
|
|
25
|
+
const clientVersion = `${platform}/${CLI_VERSION}${agentStr}`;
|
|
21
26
|
exports.STANDARD_HEADERS = {
|
|
22
27
|
Connection: "keep-alive",
|
|
23
|
-
"User-Agent":
|
|
24
|
-
"X-Client-Version":
|
|
28
|
+
"User-Agent": clientVersion,
|
|
29
|
+
"X-Client-Version": clientVersion,
|
|
25
30
|
};
|
|
26
31
|
const GOOG_QUOTA_USER_HEADER = "x-goog-quota-user";
|
|
27
32
|
const GOOG_USER_PROJECT_HEADER = "x-goog-user-project";
|
|
@@ -125,7 +125,7 @@ async function orchestrateRollout(args) {
|
|
|
125
125
|
throw new error_1.FirebaseError("Failed to build your app, but failed to get build logs as well. " +
|
|
126
126
|
"This is an internal error and should be reported");
|
|
127
127
|
}
|
|
128
|
-
throw new error_1.FirebaseError(`Failed to build your app. Please inspect the build logs at ${build.buildLogsUri}
|
|
128
|
+
throw new error_1.FirebaseError(`Failed to build your app. Please inspect the build logs at ${build.buildLogsUri}`, { children: [build.error] });
|
|
129
129
|
}
|
|
130
130
|
return { rollout, build };
|
|
131
131
|
}
|
|
@@ -106,13 +106,15 @@ exports.command = new command_1.Command("dataconnect:execute [file] [operationNa
|
|
|
106
106
|
operationName,
|
|
107
107
|
variables: parseJsonObject(unparsedVars, "--variables"),
|
|
108
108
|
});
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
109
|
+
const body = response.body;
|
|
110
|
+
let err = (0, responseToError_1.responseToError)(response, body);
|
|
111
|
+
if ((0, types_1.isGraphQLResponseError)(body)) {
|
|
112
|
+
const status = body.status || body.error?.status;
|
|
113
|
+
const message = body.message || body.error?.message || "unknown error";
|
|
112
114
|
if (!err) {
|
|
113
115
|
err = new error_1.FirebaseError(message, {
|
|
114
116
|
context: {
|
|
115
|
-
body:
|
|
117
|
+
body: body,
|
|
116
118
|
response: response,
|
|
117
119
|
},
|
|
118
120
|
status: response.status,
|
|
@@ -125,35 +127,35 @@ exports.command = new command_1.Command("dataconnect:execute [file] [operationNa
|
|
|
125
127
|
if (err) {
|
|
126
128
|
throw err;
|
|
127
129
|
}
|
|
128
|
-
if (!(0, types_1.isGraphQLResponse)(
|
|
130
|
+
if (!(0, types_1.isGraphQLResponse)(body)) {
|
|
129
131
|
throw new error_1.FirebaseError("Got invalid response body with neither .data or .errors", {
|
|
130
132
|
context: {
|
|
131
|
-
body:
|
|
133
|
+
body: body,
|
|
132
134
|
response: response,
|
|
133
135
|
},
|
|
134
136
|
status: response.status,
|
|
135
137
|
});
|
|
136
138
|
}
|
|
137
|
-
logger_1.logger.info(JSON.stringify(
|
|
138
|
-
if (!
|
|
139
|
+
logger_1.logger.info(JSON.stringify(body, null, 2));
|
|
140
|
+
if (!body.data) {
|
|
139
141
|
throw new error_1.FirebaseError("GraphQL request error(s). See response body (above) for details.", {
|
|
140
142
|
context: {
|
|
141
|
-
body:
|
|
143
|
+
body: body,
|
|
142
144
|
response: response,
|
|
143
145
|
},
|
|
144
146
|
status: response.status,
|
|
145
147
|
});
|
|
146
148
|
}
|
|
147
|
-
if (
|
|
149
|
+
if (body.errors && body.errors.length > 0) {
|
|
148
150
|
throw new error_1.FirebaseError("Execution completed with error(s). See response body (above) for details.", {
|
|
149
151
|
context: {
|
|
150
|
-
body:
|
|
152
|
+
body: body,
|
|
151
153
|
response: response,
|
|
152
154
|
},
|
|
153
155
|
status: response.status,
|
|
154
156
|
});
|
|
155
157
|
}
|
|
156
|
-
return
|
|
158
|
+
return body;
|
|
157
159
|
async function readQueryFromDir(dir) {
|
|
158
160
|
const opDisplay = operationName ? clc.bold(operationName) : "operation";
|
|
159
161
|
process.stderr.write(`${clc.cyan(`Executing ${opDisplay} in ${clc.bold(dir)}`)}${node_os_1.EOL}`);
|
package/lib/dataconnect/types.js
CHANGED
|
@@ -4,6 +4,7 @@ exports.isGraphQLResponseError = exports.isGraphQLResponse = exports.MAIN_SCHEMA
|
|
|
4
4
|
exports.requiresVector = requiresVector;
|
|
5
5
|
exports.toDatasource = toDatasource;
|
|
6
6
|
exports.mainSchemaYaml = mainSchemaYaml;
|
|
7
|
+
exports.secondarySchemaYamls = secondarySchemaYamls;
|
|
7
8
|
exports.mainSchema = mainSchema;
|
|
8
9
|
exports.isMainSchema = isMainSchema;
|
|
9
10
|
exports.MAIN_SCHEMA_ID = "main";
|
|
@@ -42,6 +43,12 @@ function mainSchemaYaml(dataconnectYaml) {
|
|
|
42
43
|
}
|
|
43
44
|
return mainSch;
|
|
44
45
|
}
|
|
46
|
+
function secondarySchemaYamls(dataconnectYaml) {
|
|
47
|
+
if (dataconnectYaml.schema) {
|
|
48
|
+
return [];
|
|
49
|
+
}
|
|
50
|
+
return (dataconnectYaml.schemas || []).filter((s) => s.id && s.id !== exports.MAIN_SCHEMA_ID);
|
|
51
|
+
}
|
|
45
52
|
function mainSchema(schemas) {
|
|
46
53
|
const mainSch = schemas.find((s) => isMainSchema(s));
|
|
47
54
|
if (!mainSch) {
|
|
@@ -54,5 +61,5 @@ function isMainSchema(schema) {
|
|
|
54
61
|
}
|
|
55
62
|
const isGraphQLResponse = (g) => !!g.data || !!g.errors;
|
|
56
63
|
exports.isGraphQLResponse = isGraphQLResponse;
|
|
57
|
-
const isGraphQLResponseError = (g) => !!g.error;
|
|
64
|
+
const isGraphQLResponseError = (g) => !!g.error?.message || !!g.message;
|
|
58
65
|
exports.isGraphQLResponseError = isGraphQLResponseError;
|
|
@@ -231,7 +231,6 @@ class DataConnectEmulator {
|
|
|
231
231
|
connectionString: connectionString.toString(),
|
|
232
232
|
database,
|
|
233
233
|
serviceId,
|
|
234
|
-
maxOpenConnections: 1,
|
|
235
234
|
});
|
|
236
235
|
this.logger.logLabeled("DEBUG", "Data Connect", `Successfully connected to ${connectionString}}`);
|
|
237
236
|
return true;
|
|
@@ -54,36 +54,36 @@
|
|
|
54
54
|
},
|
|
55
55
|
"dataconnect": {
|
|
56
56
|
"darwin": {
|
|
57
|
-
"version": "3.0
|
|
58
|
-
"expectedSize":
|
|
59
|
-
"expectedChecksum": "
|
|
60
|
-
"expectedChecksumSHA256": "
|
|
61
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-amd64-v3.0
|
|
62
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.0
|
|
57
|
+
"version": "3.1.0",
|
|
58
|
+
"expectedSize": 30315360,
|
|
59
|
+
"expectedChecksum": "f9bffb5f86bcff271d75e79a8439cb8d",
|
|
60
|
+
"expectedChecksumSHA256": "a9dac9a7dc90063d12ba5201d6e21cd7e62e68f1f10a537a9b302a21d9ffdef6",
|
|
61
|
+
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-amd64-v3.1.0",
|
|
62
|
+
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.0"
|
|
63
63
|
},
|
|
64
64
|
"darwin_arm64": {
|
|
65
|
-
"version": "3.0
|
|
66
|
-
"expectedSize":
|
|
67
|
-
"expectedChecksum": "
|
|
68
|
-
"expectedChecksumSHA256": "
|
|
69
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-arm64-v3.0
|
|
70
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.0
|
|
65
|
+
"version": "3.1.0",
|
|
66
|
+
"expectedSize": 29796738,
|
|
67
|
+
"expectedChecksum": "668bb418e970aa90874afa3ac4e84d48",
|
|
68
|
+
"expectedChecksumSHA256": "ab94429f31f9354ead44ff3b3e0cc548b06244da0feb1f2c971a8f9c33519623",
|
|
69
|
+
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-macos-arm64-v3.1.0",
|
|
70
|
+
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.0"
|
|
71
71
|
},
|
|
72
72
|
"win32": {
|
|
73
|
-
"version": "3.0
|
|
74
|
-
"expectedSize":
|
|
75
|
-
"expectedChecksum": "
|
|
76
|
-
"expectedChecksumSHA256": "
|
|
77
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-windows-amd64-v3.0
|
|
78
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.0.
|
|
73
|
+
"version": "3.1.0",
|
|
74
|
+
"expectedSize": 30815744,
|
|
75
|
+
"expectedChecksum": "179244e68571a7fdc97a15921eeffa16",
|
|
76
|
+
"expectedChecksumSHA256": "c8b1dbf4c21046c09ed065952523a72678644423afc99b6ea4d0f559735b3437",
|
|
77
|
+
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-windows-amd64-v3.1.0",
|
|
78
|
+
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.0.exe"
|
|
79
79
|
},
|
|
80
80
|
"linux": {
|
|
81
|
-
"version": "3.0
|
|
82
|
-
"expectedSize":
|
|
83
|
-
"expectedChecksum": "
|
|
84
|
-
"expectedChecksumSHA256": "
|
|
85
|
-
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-linux-amd64-v3.0
|
|
86
|
-
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.0
|
|
81
|
+
"version": "3.1.0",
|
|
82
|
+
"expectedSize": 30236856,
|
|
83
|
+
"expectedChecksum": "4314f5cb06307974bce9d0da1d4034fb",
|
|
84
|
+
"expectedChecksumSHA256": "6ced51471ba1dae0e0bd12263f558ce371901393ebbbb4ba8d2c298866600218",
|
|
85
|
+
"remoteUrl": "https://storage.googleapis.com/firemat-preview-drop/emulator/dataconnect-emulator-linux-amd64-v3.1.0",
|
|
86
|
+
"downloadPathRelativeToCacheDir": "dataconnect-emulator-3.1.0"
|
|
87
87
|
}
|
|
88
88
|
}
|
|
89
89
|
}
|
package/lib/env.js
CHANGED
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.isFirebaseStudio = isFirebaseStudio;
|
|
4
4
|
exports.isFirebaseMcp = isFirebaseMcp;
|
|
5
|
+
exports.detectAIAgent = detectAIAgent;
|
|
5
6
|
const fsutils_1 = require("./fsutils");
|
|
6
7
|
let googleIdxFolderExists;
|
|
7
8
|
function isFirebaseStudio() {
|
|
@@ -15,3 +16,20 @@ function isFirebaseStudio() {
|
|
|
15
16
|
function isFirebaseMcp() {
|
|
16
17
|
return !!process.env.IS_FIREBASE_MCP;
|
|
17
18
|
}
|
|
19
|
+
function detectAIAgent() {
|
|
20
|
+
if (process.env.ANTIGRAVITY_CLI_ALIAS)
|
|
21
|
+
return "antigravity";
|
|
22
|
+
if (process.env.CLAUDECODE)
|
|
23
|
+
return "claude_code";
|
|
24
|
+
if (process.env.CLINE_ACTIVE)
|
|
25
|
+
return "cline";
|
|
26
|
+
if (process.env.CODEX_SANDBOX)
|
|
27
|
+
return "codex_cli";
|
|
28
|
+
if (process.env.CURSOR_AGENT)
|
|
29
|
+
return "cursor";
|
|
30
|
+
if (process.env.GEMINI_CLI)
|
|
31
|
+
return "gemini_cli";
|
|
32
|
+
if (process.env.OPENCODE)
|
|
33
|
+
return "open_code";
|
|
34
|
+
return "unknown";
|
|
35
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.generateSecurityRules = void 0;
|
|
4
4
|
const prompt_1 = require("../../prompt");
|
|
5
|
-
exports.
|
|
6
|
-
name: "
|
|
5
|
+
exports.generateSecurityRules = (0, prompt_1.prompt)("firestore", {
|
|
6
|
+
name: "generate_security_rules",
|
|
7
7
|
description: "Generate secure Firebase Firestore Security Rules and corresponding unit tests for your project.",
|
|
8
8
|
arguments: [],
|
|
9
9
|
}, async () => {
|
|
@@ -259,7 +259,7 @@ The test suite must:
|
|
|
259
259
|
|
|
260
260
|
'''bash
|
|
261
261
|
# Step-1: Navigate to test directory
|
|
262
|
-
cd
|
|
262
|
+
cd security_rules_test_firestore
|
|
263
263
|
|
|
264
264
|
# Step-2: Install dependencies
|
|
265
265
|
npm install
|
|
@@ -294,10 +294,10 @@ Provide your response in this structure:
|
|
|
294
294
|
|
|
295
295
|
## Generated Files Structure
|
|
296
296
|
|
|
297
|
-
A complete '
|
|
297
|
+
A complete 'security_rules_test_firestore/' directory will be created as an independent Node.js project:
|
|
298
298
|
|
|
299
299
|
'''
|
|
300
|
-
|
|
300
|
+
security_rules_test_firestore/
|
|
301
301
|
├── package.json
|
|
302
302
|
├── firebase.json
|
|
303
303
|
├── firestore.rules (symlinked or copied from root)
|
|
@@ -325,11 +325,11 @@ rules_test/
|
|
|
325
325
|
- Project ID: [project-id]
|
|
326
326
|
- Files created:
|
|
327
327
|
- firestore.rules (project root)
|
|
328
|
-
-
|
|
329
|
-
-
|
|
330
|
-
-
|
|
331
|
-
-
|
|
332
|
-
-
|
|
328
|
+
- security_rules_test_firestore/package.json
|
|
329
|
+
- security_rules_test_firestore/firebase.json
|
|
330
|
+
- security_rules_test_firestore/firestore.rules
|
|
331
|
+
- security_rules_test_firestore/tests/firestore.test.js
|
|
332
|
+
- security_rules_test_firestore/README.md
|
|
333
333
|
'''
|
|
334
334
|
|
|
335
335
|
**After providing the analysis and summary, create all necessary files:**
|
|
@@ -339,26 +339,26 @@ Files to Create:
|
|
|
339
339
|
1. 'firestore.rules' (in project root)
|
|
340
340
|
- Complete Firebase Security Rules with comments
|
|
341
341
|
|
|
342
|
-
2. '
|
|
342
|
+
2. 'security_rules_test_firestore/package.json'
|
|
343
343
|
- Include dependencies: '@firebase/rules-unit-testing', 'jest'
|
|
344
344
|
- Include scripts: 'test', 'emulator:start'
|
|
345
345
|
- Use the provided Project ID
|
|
346
346
|
|
|
347
|
-
3. '
|
|
347
|
+
3. 'security_rules_test_firestore/firebase.json'
|
|
348
348
|
- Configure Firestore emulator
|
|
349
349
|
- Reference the rules file
|
|
350
350
|
- Use the provided Project ID
|
|
351
351
|
|
|
352
|
-
4. '
|
|
352
|
+
4. 'security_rules_test_firestore/firestore.rules'
|
|
353
353
|
- Copy of the generated rules
|
|
354
354
|
|
|
355
|
-
5. '
|
|
355
|
+
5. 'security_rules_test_firestore/tests/firestore.test.js' (or '.ts' if TypeScript)
|
|
356
356
|
- Complete test suite using '@firebase/rules-unit-testing'
|
|
357
357
|
- All CRUD operations tested
|
|
358
358
|
- Auth scenarios covered
|
|
359
359
|
- Clear test Descriptions
|
|
360
360
|
|
|
361
|
-
6. '
|
|
361
|
+
6. 'security_rules_test_firestore/README.md'
|
|
362
362
|
- Prerequisites checklist
|
|
363
363
|
- Step-by-step commands with exact terminal instructions
|
|
364
364
|
- Expected output
|
|
@@ -374,7 +374,7 @@ Files to Create:
|
|
|
374
374
|
5. **Do not modify rules during test validation** - only fix test code
|
|
375
375
|
6. **Always use firebase_validate_security_rules** before generating the tests
|
|
376
376
|
7. **Tests must be JavaScript / TypeScript only** - regardless of the codebase language
|
|
377
|
-
8. **Create a self-contained test environment** - the '
|
|
377
|
+
8. **Create a self-contained test environment** - the 'security_rules_test_firestore/' directory should be independently runnable
|
|
378
378
|
9. **Provide complete, runnable code** - no placeholders or TODOs
|
|
379
379
|
10. **Document all assumptions** about data structure or access patterns
|
|
380
380
|
`,
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.firestorePrompts = void 0;
|
|
4
|
-
const
|
|
4
|
+
const generate_security_rules_1 = require("./generate_security_rules");
|
|
5
5
|
exports.firestorePrompts = [];
|
|
6
|
-
exports.firestorePrompts.push(
|
|
6
|
+
exports.firestorePrompts.push(generate_security_rules_1.generateSecurityRules);
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.generateSecurityRules = void 0;
|
|
4
4
|
const prompt_1 = require("../../prompt");
|
|
5
|
-
exports.
|
|
6
|
-
name: "
|
|
5
|
+
exports.generateSecurityRules = (0, prompt_1.prompt)("storage", {
|
|
6
|
+
name: "generate_security_rules",
|
|
7
7
|
description: "Generate secure Firebase Storage Security Rules and corresponding unit tests for your project.",
|
|
8
8
|
arguments: [],
|
|
9
9
|
}, async () => {
|
|
@@ -140,10 +140,10 @@ Provide your response in this structure:
|
|
|
140
140
|
|
|
141
141
|
## Generated Files Structure
|
|
142
142
|
|
|
143
|
-
A complete '
|
|
143
|
+
A complete 'security_rules_test_storage/' directory will be created as an independent Node.js project:
|
|
144
144
|
|
|
145
145
|
'
|
|
146
|
-
|
|
146
|
+
security_rules_test_storage/
|
|
147
147
|
├── package.json
|
|
148
148
|
├── firebase.json
|
|
149
149
|
├── storage.rules (symlinked or copied from root)
|
|
@@ -175,18 +175,18 @@ storage_rules_test/
|
|
|
175
175
|
- Bucket: [bucket-name]
|
|
176
176
|
- Files created:
|
|
177
177
|
- storage.rules (project root)
|
|
178
|
-
-
|
|
179
|
-
-
|
|
180
|
-
-
|
|
181
|
-
-
|
|
182
|
-
-
|
|
183
|
-
-
|
|
178
|
+
- security_rules_test_storage/package.json
|
|
179
|
+
- security_rules_test_storage/firebase.json
|
|
180
|
+
- security_rules_test_storage/storage.rules
|
|
181
|
+
- security_rules_test_storage/tests/storage.test.js
|
|
182
|
+
- security_rules_test_storage/test-files/[mock files]
|
|
183
|
+
- security_rules_test_storage/README.md
|
|
184
184
|
|
|
185
185
|
## Setup and Run Instructions
|
|
186
186
|
|
|
187
187
|
'''bash
|
|
188
188
|
# Navigate to test directory
|
|
189
|
-
cd
|
|
189
|
+
cd security_rules_test_storage
|
|
190
190
|
|
|
191
191
|
# Install dependencies
|
|
192
192
|
npm install
|
|
@@ -207,21 +207,21 @@ Files to Create:
|
|
|
207
207
|
- File type and size validations
|
|
208
208
|
- Authentication and authorization logic
|
|
209
209
|
|
|
210
|
-
2. '
|
|
210
|
+
2. 'security_rules_test_storage/package.json'
|
|
211
211
|
- Include dependencies: '@firebase/rules-unit-testing', 'jest'
|
|
212
212
|
- Include scripts: 'test', 'emulator:start'
|
|
213
213
|
- Use the provided Project ID and Bucket Name
|
|
214
214
|
|
|
215
|
-
3. '
|
|
215
|
+
3. 'security_rules_test_storage/firebase.json'
|
|
216
216
|
- Configure Firebase Storage emulator
|
|
217
217
|
- Reference the rules file
|
|
218
218
|
- Use the provided Project ID and Bucket Name
|
|
219
219
|
- Configure emulator port (default: 9199)
|
|
220
220
|
|
|
221
|
-
4. '
|
|
221
|
+
4. 'security_rules_test_storage/storage.rules'
|
|
222
222
|
- Copy of the generated rules
|
|
223
223
|
|
|
224
|
-
5. '
|
|
224
|
+
5. 'security_rules_test_storage/tests/storage.test.js' (or '.ts' if TypeScript)
|
|
225
225
|
- Complete test suite using '@firebase/rules-unit-testing'
|
|
226
226
|
- All upload/read/delete operations tested
|
|
227
227
|
- File type validation tests
|
|
@@ -230,7 +230,7 @@ Files to Create:
|
|
|
230
230
|
- Clear test Descriptions
|
|
231
231
|
- Helper functions for creating mock files
|
|
232
232
|
|
|
233
|
-
6. '
|
|
233
|
+
6. 'security_rules_test_storage/test-files/' (directory)
|
|
234
234
|
- Create mock files for testing:
|
|
235
235
|
- 'test-image.jpg' (small valid image)
|
|
236
236
|
- 'test-image-large.jpg' (oversized image for size validation)
|
|
@@ -238,7 +238,7 @@ Files to Create:
|
|
|
238
238
|
- 'test-invalid.exe' (invalid file type)
|
|
239
239
|
- Or document how to generate these files in tests
|
|
240
240
|
|
|
241
|
-
7. '
|
|
241
|
+
7. 'security_rules_test_storage/README.md'
|
|
242
242
|
- Setup instructions
|
|
243
243
|
- How to run tests
|
|
244
244
|
- How to deploy rules
|
|
@@ -252,7 +252,7 @@ Files to Create:
|
|
|
252
252
|
3. **Do not modify rules during test validation** - only fix test code
|
|
253
253
|
4. **Always use firebase_validate_security_rules** before generating the tests
|
|
254
254
|
5. **Tests must be JavaScript / TypeScript only** - regardless of the codebase language
|
|
255
|
-
6. **Create a self-contained test environment** - the '
|
|
255
|
+
6. **Create a self-contained test environment** - the 'security_rules_test_storage/' directory should be independently runnable
|
|
256
256
|
7. **Provide complete, runnable code** - no placeholders or TODOs
|
|
257
257
|
8. **Test with realistic file scenarios** - include various file types and sizes
|
|
258
258
|
9. **Document all assumptions** about storage structure, file types, and access patterns
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.storagePrompts = void 0;
|
|
4
|
-
const
|
|
4
|
+
const generate_security_rules_1 = require("./generate_security_rules");
|
|
5
5
|
exports.storagePrompts = [];
|
|
6
|
-
exports.storagePrompts.push(
|
|
6
|
+
exports.storagePrompts.push(generate_security_rules_1.generateSecurityRules);
|
package/lib/track.js
CHANGED
|
@@ -15,21 +15,6 @@ const configstore_1 = require("./configstore");
|
|
|
15
15
|
const logger_1 = require("./logger");
|
|
16
16
|
const env_1 = require("./env");
|
|
17
17
|
const pkg = require("../package.json");
|
|
18
|
-
function detectAIAgent() {
|
|
19
|
-
if (process.env.CLAUDECODE)
|
|
20
|
-
return "claude_code";
|
|
21
|
-
if (process.env.CLINE_ACTIVE)
|
|
22
|
-
return "cline";
|
|
23
|
-
if (process.env.CODEX_SANDBOX)
|
|
24
|
-
return "codex_cli";
|
|
25
|
-
if (process.env.CURSOR_AGENT)
|
|
26
|
-
return "cursor";
|
|
27
|
-
if (process.env.GEMINI_CLI)
|
|
28
|
-
return "gemini_cli";
|
|
29
|
-
if (process.env.OPENCODE)
|
|
30
|
-
return "open_code";
|
|
31
|
-
return "unknown";
|
|
32
|
-
}
|
|
33
18
|
exports.GA4_PROPERTIES = {
|
|
34
19
|
cli: {
|
|
35
20
|
measurementId: process.env.FIREBASE_CLI_GA4_MEASUREMENT_ID || "G-PDN0QWHQJR",
|
|
@@ -67,7 +52,7 @@ const GA4_USER_PROPS = {
|
|
|
67
52
|
value: (0, env_1.isFirebaseStudio)().toString(),
|
|
68
53
|
},
|
|
69
54
|
ai_agent: {
|
|
70
|
-
value: detectAIAgent(),
|
|
55
|
+
value: (0, env_1.detectAIAgent)(),
|
|
71
56
|
},
|
|
72
57
|
};
|
|
73
58
|
async function trackGA4(eventName, params, duration = 1) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"root":["../src/accountExporter.ts","../src/accountImporter.ts","../src/api.ts","../src/apiv2.ts","../src/appUtils.ts","../src/archiveDirectory.ts","../src/auth.ts","../src/checkMinRequiredVersion.ts","../src/checkValidTargetFilters.ts","../src/command.ts","../src/config.ts","../src/configstore.ts","../src/defaultCredentials.ts","../src/deploymentTool.ts","../src/detectProjectRoot.ts","../src/downloadUtils.ts","../src/dynamicImport.js","../src/ensureApiEnabled.ts","../src/env.ts","../src/error.ts","../src/errorOut.ts","../src/experiments.ts","../src/fetchMOTD.ts","../src/fetchWebSetup.ts","../src/filterTargets.ts","../src/firebaseConfig.ts","../src/firebaseConfigValidate.ts","../src/fsAsync.ts","../src/fsutils.ts","../src/functional.ts","../src/functionsConfig.ts","../src/functionsConfigClone.ts","../src/functionsShellCommandAction.ts","../src/getDefaultDatabaseInstance.ts","../src/getDefaultHostingSite.ts","../src/getProjectNumber.ts","../src/index.ts","../src/listFiles.ts","../src/loadCJSON.ts","../src/localFunction.ts","../src/logError.ts","../src/logger.ts","../src/metaprogramming.ts","../src/operation-poller.ts","../src/options.ts","../src/profileReport.ts","../src/profiler.ts","../src/projectPath.ts","../src/projectUtils.ts","../src/prompt.ts","../src/rc.ts","../src/requireAuth.ts","../src/requireConfig.ts","../src/requireDatabaseInstance.ts","../src/requireHostingSite.ts","../src/requireInteractive.ts","../src/requirePermissions.ts","../src/requireTosAcceptance.ts","../src/responseToError.ts","../src/rtdb.ts","../src/rulesDeploy.ts","../src/scopes.ts","../src/shortenUrl.ts","../src/templates.ts","../src/timeout.ts","../src/track.ts","../src/unzip.ts","../src/utils.ts","../src/vsCodeUtils.ts","../src/appdistribution/client.ts","../src/appdistribution/distribution.ts","../src/appdistribution/options-parser-util.ts","../src/appdistribution/types.ts","../src/appdistribution/yaml_helper.ts","../src/apphosting/app.ts","../src/apphosting/backend.ts","../src/apphosting/config.ts","../src/apphosting/constants.ts","../src/apphosting/githubConnections.ts","../src/apphosting/index.ts","../src/apphosting/localbuilds.ts","../src/apphosting/repo.ts","../src/apphosting/rollout.ts","../src/apphosting/utils.ts","../src/apphosting/yaml.ts","../src/apphosting/secrets/dialogs.ts","../src/apphosting/secrets/index.ts","../src/apptesting/ensureProjectConfigured.ts","../src/apptesting/invokeTests.ts","../src/apptesting/parseTestFiles.ts","../src/apptesting/types.ts","../src/bin/cli.ts","../src/bin/firebase.ts","../src/bin/mcp.ts","../src/commands/appdistribution-distribute.ts","../src/commands/appdistribution-groups-create.ts","../src/commands/appdistribution-groups-delete.ts","../src/commands/appdistribution-groups-list.ts","../src/commands/appdistribution-testcases-export.ts","../src/commands/appdistribution-testcases-import.ts","../src/commands/appdistribution-testers-add.ts","../src/commands/appdistribution-testers-list.ts","../src/commands/appdistribution-testers-remove.ts","../src/commands/apphosting-backends-create.ts","../src/commands/apphosting-backends-delete.ts","../src/commands/apphosting-backends-get.ts","../src/commands/apphosting-backends-list.ts","../src/commands/apphosting-builds-create.ts","../src/commands/apphosting-builds-get.ts","../src/commands/apphosting-repos-create.ts","../src/commands/apphosting-rollouts-create.ts","../src/commands/apphosting-rollouts-list.ts","../src/commands/apphosting-secrets-access.ts","../src/commands/apphosting-secrets-describe.ts","../src/commands/apphosting-secrets-grantaccess.ts","../src/commands/apphosting-secrets-set.ts","../src/commands/apps-android-sha-create.ts","../src/commands/apps-android-sha-delete.ts","../src/commands/apps-android-sha-list.ts","../src/commands/apps-create.ts","../src/commands/apps-init.ts","../src/commands/apps-list.ts","../src/commands/apps-sdkconfig.ts","../src/commands/apptesting-wata.ts","../src/commands/auth-export.ts","../src/commands/auth-import.ts","../src/commands/crashlytics-mappingfile-generateid.ts","../src/commands/crashlytics-mappingfile-upload.ts","../src/commands/crashlytics-symbols-upload.ts","../src/commands/database-get.ts","../src/commands/database-import.ts","../src/commands/database-instances-create.ts","../src/commands/database-instances-list.ts","../src/commands/database-profile.ts","../src/commands/database-push.ts","../src/commands/database-remove.ts","../src/commands/database-rules-canary.ts","../src/commands/database-rules-get.ts","../src/commands/database-rules-list.ts","../src/commands/database-rules-release.ts","../src/commands/database-rules-stage.ts","../src/commands/database-set.ts","../src/commands/database-settings-get.ts","../src/commands/database-settings-set.ts","../src/commands/database-update.ts","../src/commands/dataconnect-execute.ts","../src/commands/dataconnect-sdk-generate.ts","../src/commands/dataconnect-services-list.ts","../src/commands/dataconnect-sql-diff.ts","../src/commands/dataconnect-sql-grant.ts","../src/commands/dataconnect-sql-migrate.ts","../src/commands/dataconnect-sql-setup.ts","../src/commands/dataconnect-sql-shell.ts","../src/commands/deploy.ts","../src/commands/emulators-exec.ts","../src/commands/emulators-export.ts","../src/commands/emulators-start.ts","../src/commands/experiments-describe.ts","../src/commands/experiments-disable.ts","../src/commands/experiments-enable.ts","../src/commands/experiments-list.ts","../src/commands/ext-configure.ts","../src/commands/ext-dev-deprecate.ts","../src/commands/ext-dev-init.ts","../src/commands/ext-dev-list.ts","../src/commands/ext-dev-register.ts","../src/commands/ext-dev-undeprecate.ts","../src/commands/ext-dev-upload.ts","../src/commands/ext-dev-usage.ts","../src/commands/ext-export.ts","../src/commands/ext-info.ts","../src/commands/ext-install.ts","../src/commands/ext-list.ts","../src/commands/ext-sdk-install.ts","../src/commands/ext-uninstall.ts","../src/commands/ext-update.ts","../src/commands/ext.ts","../src/commands/firestore-backups-delete.ts","../src/commands/firestore-backups-get.ts","../src/commands/firestore-backups-list.ts","../src/commands/firestore-backups-schedules-create.ts","../src/commands/firestore-backups-schedules-delete.ts","../src/commands/firestore-backups-schedules-list.ts","../src/commands/firestore-backups-schedules-update.ts","../src/commands/firestore-bulkdelete.ts","../src/commands/firestore-databases-clone.ts","../src/commands/firestore-databases-create.ts","../src/commands/firestore-databases-delete.ts","../src/commands/firestore-databases-get.ts","../src/commands/firestore-databases-list.ts","../src/commands/firestore-databases-restore.ts","../src/commands/firestore-databases-update.ts","../src/commands/firestore-delete.ts","../src/commands/firestore-indexes-list.ts","../src/commands/firestore-locations.ts","../src/commands/firestore-operations-cancel.ts","../src/commands/firestore-operations-describe.ts","../src/commands/firestore-operations-list.ts","../src/commands/firestore-utils.ts","../src/commands/functions-artifacts-setpolicy.ts","../src/commands/functions-config-clone.ts","../src/commands/functions-config-export.ts","../src/commands/functions-config-get.ts","../src/commands/functions-config-set.ts","../src/commands/functions-config-unset.ts","../src/commands/functions-delete.ts","../src/commands/functions-deletegcfartifacts.ts","../src/commands/functions-list.ts","../src/commands/functions-log.ts","../src/commands/functions-secrets-access.ts","../src/commands/functions-secrets-describe.ts","../src/commands/functions-secrets-destroy.ts","../src/commands/functions-secrets-get.ts","../src/commands/functions-secrets-prune.ts","../src/commands/functions-secrets-set.ts","../src/commands/functions-shell.ts","../src/commands/help.ts","../src/commands/hosting-channel-create.ts","../src/commands/hosting-channel-delete.ts","../src/commands/hosting-channel-deploy.ts","../src/commands/hosting-channel-list.ts","../src/commands/hosting-channel-open.ts","../src/commands/hosting-clone.ts","../src/commands/hosting-disable.ts","../src/commands/hosting-sites-create.ts","../src/commands/hosting-sites-delete.ts","../src/commands/hosting-sites-get.ts","../src/commands/hosting-sites-list.ts","../src/commands/index.ts","../src/commands/init.ts","../src/commands/internaltesting-frameworks-compose.ts","../src/commands/internaltesting-functions-discover.ts","../src/commands/login-add.ts","../src/commands/login-ci.ts","../src/commands/login-list.ts","../src/commands/login-use.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/mcp.ts","../src/commands/open.ts","../src/commands/projects-addfirebase.ts","../src/commands/projects-create.ts","../src/commands/projects-list.ts","../src/commands/remoteconfig-experiments-delete.ts","../src/commands/remoteconfig-experiments-get.ts","../src/commands/remoteconfig-experiments-list.ts","../src/commands/remoteconfig-get.ts","../src/commands/remoteconfig-rollback.ts","../src/commands/remoteconfig-rollouts-delete.ts","../src/commands/remoteconfig-rollouts-get.ts","../src/commands/remoteconfig-rollouts-list.ts","../src/commands/remoteconfig-versions-list.ts","../src/commands/serve.ts","../src/commands/setup-emulators-database.ts","../src/commands/setup-emulators-dataconnect.ts","../src/commands/setup-emulators-firestore.ts","../src/commands/setup-emulators-pubsub.ts","../src/commands/setup-emulators-storage.ts","../src/commands/setup-emulators-ui.ts","../src/commands/target-apply.ts","../src/commands/target-clear.ts","../src/commands/target-remove.ts","../src/commands/target.ts","../src/commands/use.ts","../src/crashlytics/buildToolsJarHelper.ts","../src/crashlytics/events.ts","../src/crashlytics/filters.ts","../src/crashlytics/issues.ts","../src/crashlytics/notes.ts","../src/crashlytics/reports.ts","../src/crashlytics/types.ts","../src/crashlytics/utils.ts","../src/database/api.ts","../src/database/import.ts","../src/database/listRemote.ts","../src/database/metadata.ts","../src/database/remove.ts","../src/database/removeRemote.ts","../src/database/rulesConfig.ts","../src/database/settings.ts","../src/dataconnect/build.ts","../src/dataconnect/checkIam.ts","../src/dataconnect/client.ts","../src/dataconnect/cloudAICompanionTypes.ts","../src/dataconnect/dataplaneClient.ts","../src/dataconnect/ensureApis.ts","../src/dataconnect/errors.ts","../src/dataconnect/filters.ts","../src/dataconnect/freeTrial.ts","../src/dataconnect/graphqlError.ts","../src/dataconnect/load.ts","../src/dataconnect/names.ts","../src/dataconnect/prompts.ts","../src/dataconnect/provisionCloudSql.ts","../src/dataconnect/schemaMigration.ts","../src/dataconnect/types.ts","../src/dataconnect/webhook.ts","../src/deploy/index.ts","../src/deploy/lifecycleHooks.ts","../src/deploy/apphosting/args.ts","../src/deploy/apphosting/deploy.ts","../src/deploy/apphosting/index.ts","../src/deploy/apphosting/prepare.ts","../src/deploy/apphosting/release.ts","../src/deploy/apphosting/util.ts","../src/deploy/database/deploy.ts","../src/deploy/database/index.ts","../src/deploy/database/prepare.ts","../src/deploy/database/release.ts","../src/deploy/dataconnect/context.ts","../src/deploy/dataconnect/deploy.ts","../src/deploy/dataconnect/index.ts","../src/deploy/dataconnect/prepare.ts","../src/deploy/dataconnect/release.ts","../src/deploy/extensions/args.ts","../src/deploy/extensions/deploy.ts","../src/deploy/extensions/deploymentSummary.ts","../src/deploy/extensions/errors.ts","../src/deploy/extensions/index.ts","../src/deploy/extensions/planner.ts","../src/deploy/extensions/prepare.ts","../src/deploy/extensions/release.ts","../src/deploy/extensions/secrets.ts","../src/deploy/extensions/tasks.ts","../src/deploy/extensions/v2FunctionHelper.ts","../src/deploy/extensions/validate.ts","../src/deploy/firestore/deploy.ts","../src/deploy/firestore/index.ts","../src/deploy/firestore/prepare.ts","../src/deploy/firestore/release.ts","../src/deploy/functions/args.ts","../src/deploy/functions/backend.ts","../src/deploy/functions/build.ts","../src/deploy/functions/cel.ts","../src/deploy/functions/checkIam.ts","../src/deploy/functions/containerCleaner.ts","../src/deploy/functions/deploy.ts","../src/deploy/functions/ensure.ts","../src/deploy/functions/ensureCloudBuildEnabled.ts","../src/deploy/functions/functionsDeployHelper.ts","../src/deploy/functions/index.ts","../src/deploy/functions/params.ts","../src/deploy/functions/prepare.ts","../src/deploy/functions/prepareFunctionsUpload.ts","../src/deploy/functions/pricing.ts","../src/deploy/functions/prompts.ts","../src/deploy/functions/remoteSource.ts","../src/deploy/functions/triggerRegionHelper.ts","../src/deploy/functions/validate.ts","../src/deploy/functions/cache/applyHash.ts","../src/deploy/functions/cache/hash.ts","../src/deploy/functions/release/executor.ts","../src/deploy/functions/release/fabricator.ts","../src/deploy/functions/release/index.ts","../src/deploy/functions/release/planner.ts","../src/deploy/functions/release/reporter.ts","../src/deploy/functions/release/sourceTokenScraper.ts","../src/deploy/functions/release/timer.ts","../src/deploy/functions/runtimes/index.ts","../src/deploy/functions/runtimes/discovery/index.ts","../src/deploy/functions/runtimes/discovery/mockDiscoveryServer.ts","../src/deploy/functions/runtimes/discovery/parsing.ts","../src/deploy/functions/runtimes/discovery/v1alpha1.ts","../src/deploy/functions/runtimes/node/index.ts","../src/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.ts","../src/deploy/functions/runtimes/node/validate.ts","../src/deploy/functions/runtimes/node/versioning.ts","../src/deploy/functions/runtimes/python/index.ts","../src/deploy/functions/runtimes/supported/index.ts","../src/deploy/functions/runtimes/supported/types.ts","../src/deploy/functions/services/auth.ts","../src/deploy/functions/services/database.ts","../src/deploy/functions/services/dataconnect.ts","../src/deploy/functions/services/firebaseAlerts.ts","../src/deploy/functions/services/firestore.ts","../src/deploy/functions/services/index.ts","../src/deploy/functions/services/remoteConfig.ts","../src/deploy/functions/services/storage.ts","../src/deploy/functions/services/testLab.ts","../src/deploy/hosting/args.ts","../src/deploy/hosting/context.ts","../src/deploy/hosting/convertConfig.ts","../src/deploy/hosting/deploy.ts","../src/deploy/hosting/hashcache.ts","../src/deploy/hosting/index.ts","../src/deploy/hosting/prepare.ts","../src/deploy/hosting/release.ts","../src/deploy/hosting/uploader.ts","../src/deploy/remoteconfig/deploy.ts","../src/deploy/remoteconfig/functions.ts","../src/deploy/remoteconfig/index.ts","../src/deploy/remoteconfig/prepare.ts","../src/deploy/remoteconfig/release.ts","../src/deploy/storage/deploy.ts","../src/deploy/storage/index.ts","../src/deploy/storage/prepare.ts","../src/deploy/storage/release.ts","../src/emulator/ExpressBasedEmulator.ts","../src/emulator/adminSdkConfig.ts","../src/emulator/commandUtils.ts","../src/emulator/constants.ts","../src/emulator/controller.ts","../src/emulator/databaseEmulator.ts","../src/emulator/dataconnectEmulator.ts","../src/emulator/dataconnectToolkitController.ts","../src/emulator/dns.ts","../src/emulator/download.ts","../src/emulator/downloadableEmulators.ts","../src/emulator/emulatorLogger.ts","../src/emulator/env.ts","../src/emulator/eventarcEmulator.ts","../src/emulator/eventarcEmulatorUtils.ts","../src/emulator/extensionsEmulator.ts","../src/emulator/firestoreEmulator.ts","../src/emulator/functionsEmulator.ts","../src/emulator/functionsEmulatorRuntime.ts","../src/emulator/functionsEmulatorShared.ts","../src/emulator/functionsEmulatorShell.ts","../src/emulator/functionsEmulatorUtils.ts","../src/emulator/functionsRuntimeWorker.ts","../src/emulator/hostingEmulator.ts","../src/emulator/hub.ts","../src/emulator/hubClient.ts","../src/emulator/hubExport.ts","../src/emulator/initEmulators.ts","../src/emulator/loggingEmulator.ts","../src/emulator/portUtils.ts","../src/emulator/pubsubEmulator.ts","../src/emulator/registry.ts","../src/emulator/taskQueue.ts","../src/emulator/tasksEmulator.ts","../src/emulator/types.ts","../src/emulator/ui.ts","../src/emulator/workQueue.ts","../src/emulator/apphosting/config.ts","../src/emulator/apphosting/developmentServer.ts","../src/emulator/apphosting/index.ts","../src/emulator/apphosting/serve.ts","../src/emulator/auth/apiSpec.ts","../src/emulator/auth/cloudFunctions.ts","../src/emulator/auth/errors.ts","../src/emulator/auth/handlers.ts","../src/emulator/auth/index.ts","../src/emulator/auth/operations.ts","../src/emulator/auth/schema.ts","../src/emulator/auth/server.ts","../src/emulator/auth/state.ts","../src/emulator/auth/types.ts","../src/emulator/auth/utils.ts","../src/emulator/auth/widget_ui.ts","../src/emulator/dataconnect/pgliteServer.ts","../src/emulator/events/types.ts","../src/emulator/extensions/postinstall.ts","../src/emulator/extensions/validation.ts","../src/emulator/shared/request.ts","../src/emulator/storage/cloudFunctions.ts","../src/emulator/storage/crc.ts","../src/emulator/storage/errors.ts","../src/emulator/storage/files.ts","../src/emulator/storage/index.ts","../src/emulator/storage/metadata.ts","../src/emulator/storage/multipart.ts","../src/emulator/storage/persistence.ts","../src/emulator/storage/rfc.ts","../src/emulator/storage/server.ts","../src/emulator/storage/upload.ts","../src/emulator/storage/apis/firebase.ts","../src/emulator/storage/apis/gcloud.ts","../src/emulator/storage/apis/shared.ts","../src/emulator/storage/rules/config.ts","../src/emulator/storage/rules/expressionValue.ts","../src/emulator/storage/rules/manager.ts","../src/emulator/storage/rules/runtime.ts","../src/emulator/storage/rules/types.ts","../src/emulator/storage/rules/utils.ts","../src/extensions/askUserForEventsConfig.ts","../src/extensions/askUserForParam.ts","../src/extensions/change-log.ts","../src/extensions/checkProjectBilling.ts","../src/extensions/diagnose.ts","../src/extensions/displayExtensionInfo.ts","../src/extensions/etags.ts","../src/extensions/export.ts","../src/extensions/extensionsApi.ts","../src/extensions/extensionsHelper.ts","../src/extensions/listExtensions.ts","../src/extensions/localHelper.ts","../src/extensions/manifest.ts","../src/extensions/metricsTypeDef.ts","../src/extensions/metricsUtils.ts","../src/extensions/paramHelper.ts","../src/extensions/provisioningHelper.ts","../src/extensions/publishHelpers.ts","../src/extensions/publisherApi.ts","../src/extensions/refs.ts","../src/extensions/secretsUtils.ts","../src/extensions/tos.ts","../src/extensions/types.ts","../src/extensions/updateHelper.ts","../src/extensions/utils.ts","../src/extensions/versionHelper.ts","../src/extensions/warnings.ts","../src/extensions/emulator/optionsHelper.ts","../src/extensions/emulator/specHelper.ts","../src/extensions/emulator/triggerHelper.ts","../src/extensions/runtimes/common.ts","../src/extensions/runtimes/node.ts","../src/firestore/api-sort.ts","../src/firestore/api-spec.ts","../src/firestore/api-types.ts","../src/firestore/api.ts","../src/firestore/backupUtils.ts","../src/firestore/checkDatabaseType.ts","../src/firestore/delete.ts","../src/firestore/encodeFirestoreValue.ts","../src/firestore/fsConfig.ts","../src/firestore/options.ts","../src/firestore/pretty-print.ts","../src/firestore/util.ts","../src/firestore/validator.ts","../src/frameworks/constants.ts","../src/frameworks/frameworks.ts","../src/frameworks/index.ts","../src/frameworks/interfaces.ts","../src/frameworks/utils.ts","../src/frameworks/angular/index.ts","../src/frameworks/angular/interfaces.ts","../src/frameworks/angular/utils.ts","../src/frameworks/astro/index.ts","../src/frameworks/astro/utils.ts","../src/frameworks/compose/index.ts","../src/frameworks/compose/interfaces.ts","../src/frameworks/compose/discover/filesystem.ts","../src/frameworks/compose/discover/frameworkMatcher.ts","../src/frameworks/compose/discover/frameworkSpec.ts","../src/frameworks/compose/discover/index.ts","../src/frameworks/compose/discover/mockFileSystem.ts","../src/frameworks/compose/discover/types.ts","../src/frameworks/compose/discover/runtime/node.ts","../src/frameworks/compose/driver/docker.ts","../src/frameworks/compose/driver/hooks.ts","../src/frameworks/compose/driver/index.ts","../src/frameworks/compose/driver/local.ts","../src/frameworks/docs/index.ts","../src/frameworks/express/index.ts","../src/frameworks/flutter/constants.ts","../src/frameworks/flutter/index.ts","../src/frameworks/flutter/utils.ts","../src/frameworks/lit/index.ts","../src/frameworks/next/constants.ts","../src/frameworks/next/index.ts","../src/frameworks/next/interfaces.ts","../src/frameworks/next/utils.ts","../src/frameworks/nuxt/index.ts","../src/frameworks/nuxt/interfaces.ts","../src/frameworks/nuxt/utils.ts","../src/frameworks/nuxt2/index.ts","../src/frameworks/preact/index.ts","../src/frameworks/react/index.ts","../src/frameworks/svelte/index.ts","../src/frameworks/sveltekit/index.ts","../src/frameworks/sveltekit/interfaces.ts","../src/frameworks/vite/index.ts","../src/functions/artifacts.ts","../src/functions/constants.ts","../src/functions/ensureTargeted.ts","../src/functions/env.ts","../src/functions/functionslog.ts","../src/functions/projectConfig.ts","../src/functions/python.ts","../src/functions/secrets.ts","../src/functions/events/index.ts","../src/functions/events/v1.ts","../src/functions/events/v2.ts","../src/gcp/apphosting.ts","../src/gcp/apptesting.ts","../src/gcp/artifactregistry.ts","../src/gcp/auth.ts","../src/gcp/cloudbilling.ts","../src/gcp/cloudbuild.ts","../src/gcp/cloudfunctions.ts","../src/gcp/cloudfunctionsv2.ts","../src/gcp/cloudlogging.ts","../src/gcp/cloudmonitoring.ts","../src/gcp/cloudscheduler.ts","../src/gcp/cloudtasks.ts","../src/gcp/computeEngine.ts","../src/gcp/devConnect.ts","../src/gcp/docker.ts","../src/gcp/eventarc.ts","../src/gcp/firedata.ts","../src/gcp/firestore.ts","../src/gcp/iam.ts","../src/gcp/identityPlatform.ts","../src/gcp/index.ts","../src/gcp/k8s.ts","../src/gcp/location.ts","../src/gcp/proto.ts","../src/gcp/pubsub.ts","../src/gcp/resourceManager.ts","../src/gcp/rules.ts","../src/gcp/run.ts","../src/gcp/runtimeconfig.ts","../src/gcp/runv2.ts","../src/gcp/secretManager.ts","../src/gcp/serviceusage.ts","../src/gcp/storage.ts","../src/gcp/cloudsql/cloudsqladmin.ts","../src/gcp/cloudsql/connect.ts","../src/gcp/cloudsql/fbToolsAuthClient.ts","../src/gcp/cloudsql/interactive.ts","../src/gcp/cloudsql/permissions.ts","../src/gcp/cloudsql/permissionsSetup.ts","../src/gcp/cloudsql/types.ts","../src/gemini/fdcExperience.ts","../src/gemini/types.ts","../src/hosting/api.ts","../src/hosting/cloudRunProxy.ts","../src/hosting/config.ts","../src/hosting/expireUtils.ts","../src/hosting/functionsProxy.ts","../src/hosting/implicitInit.ts","../src/hosting/initMiddleware.ts","../src/hosting/interactive.ts","../src/hosting/options.ts","../src/hosting/proxy.ts","../src/hosting/runTags.ts","../src/init/index.ts","../src/init/spawn.ts","../src/init/features/account.ts","../src/init/features/aitools.ts","../src/init/features/apphosting.ts","../src/init/features/database.ts","../src/init/features/emulators.ts","../src/init/features/index.ts","../src/init/features/project.ts","../src/init/features/remoteconfig.ts","../src/init/features/storage.ts","../src/init/features/ailogic/index.ts","../src/init/features/ailogic/utils.ts","../src/init/features/aitools/claude.ts","../src/init/features/aitools/cursor.ts","../src/init/features/aitools/gemini.ts","../src/init/features/aitools/index.ts","../src/init/features/aitools/promptUpdater.ts","../src/init/features/aitools/studio.ts","../src/init/features/aitools/types.ts","../src/init/features/apptesting/index.ts","../src/init/features/dataconnect/create_app.ts","../src/init/features/dataconnect/index.ts","../src/init/features/dataconnect/resolver.ts","../src/init/features/dataconnect/sdk.ts","../src/init/features/extensions/index.ts","../src/init/features/firestore/index.ts","../src/init/features/firestore/indexes.ts","../src/init/features/firestore/rules.ts","../src/init/features/functions/index.ts","../src/init/features/functions/javascript.ts","../src/init/features/functions/npm-dependencies.ts","../src/init/features/functions/python.ts","../src/init/features/functions/typescript.ts","../src/init/features/genkit/index.ts","../src/init/features/hosting/github.ts","../src/init/features/hosting/index.ts","../src/management/apps.ts","../src/management/database.ts","../src/management/projects.ts","../src/management/studio.ts","../src/management/provisioning/errorHandler.ts","../src/management/provisioning/provision.ts","../src/management/provisioning/types.ts","../src/mcp/errors.ts","../src/mcp/index.ts","../src/mcp/logging-transport.ts","../src/mcp/prompt.ts","../src/mcp/resource.ts","../src/mcp/tool.ts","../src/mcp/types.ts","../src/mcp/util.test.ts","../src/mcp/util.ts","../src/mcp/prompts/index.ts","../src/mcp/prompts/apptesting/index.ts","../src/mcp/prompts/apptesting/run_test.ts","../src/mcp/prompts/core/deploy.ts","../src/mcp/prompts/core/index.ts","../src/mcp/prompts/core/init.ts","../src/mcp/prompts/crashlytics/connect.ts","../src/mcp/prompts/crashlytics/index.ts","../src/mcp/prompts/dataconnect/index.ts","../src/mcp/prompts/dataconnect/schema.ts","../src/mcp/prompts/firestore/generate_rules.ts","../src/mcp/prompts/firestore/index.ts","../src/mcp/prompts/storage/generate_rules.ts","../src/mcp/prompts/storage/index.ts","../src/mcp/resources/docs.ts","../src/mcp/resources/index.ts","../src/mcp/resources/guides/app_id.ts","../src/mcp/resources/guides/crashlytics_connect.ts","../src/mcp/resources/guides/crashlytics_investigations.ts","../src/mcp/resources/guides/crashlytics_issues.ts","../src/mcp/resources/guides/crashlytics_reports.ts","../src/mcp/resources/guides/init_ai.ts","../src/mcp/resources/guides/init_auth.ts","../src/mcp/resources/guides/init_backend.ts","../src/mcp/resources/guides/init_data_connect.ts","../src/mcp/resources/guides/init_firestore.ts","../src/mcp/resources/guides/init_firestore_rules.ts","../src/mcp/resources/guides/init_hosting.ts","../src/mcp/resources/guides/init_rtdb.ts","../src/mcp/tools/index.ts","../src/mcp/tools/apphosting/fetch_logs.ts","../src/mcp/tools/apphosting/index.ts","../src/mcp/tools/apphosting/list_backends.ts","../src/mcp/tools/apptesting/index.ts","../src/mcp/tools/apptesting/tests.ts","../src/mcp/tools/auth/get_users.ts","../src/mcp/tools/auth/index.ts","../src/mcp/tools/auth/set_sms_region_policy.ts","../src/mcp/tools/auth/update_user.ts","../src/mcp/tools/core/create_android_sha.ts","../src/mcp/tools/core/create_app.ts","../src/mcp/tools/core/create_project.ts","../src/mcp/tools/core/get_environment.ts","../src/mcp/tools/core/get_project.ts","../src/mcp/tools/core/get_sdk_config.ts","../src/mcp/tools/core/get_security_rules.ts","../src/mcp/tools/core/index.ts","../src/mcp/tools/core/init.ts","../src/mcp/tools/core/list_apps.ts","../src/mcp/tools/core/list_projects.ts","../src/mcp/tools/core/login.ts","../src/mcp/tools/core/logout.ts","../src/mcp/tools/core/read_resources.ts","../src/mcp/tools/core/update_environment.ts","../src/mcp/tools/core/validate_security_rules.ts","../src/mcp/tools/crashlytics/events.ts","../src/mcp/tools/crashlytics/index.ts","../src/mcp/tools/crashlytics/issues.ts","../src/mcp/tools/crashlytics/notes.ts","../src/mcp/tools/crashlytics/reports.ts","../src/mcp/tools/dataconnect/compile.ts","../src/mcp/tools/dataconnect/execute.ts","../src/mcp/tools/dataconnect/index.ts","../src/mcp/tools/dataconnect/list_services.ts","../src/mcp/tools/firestore/converter.ts","../src/mcp/tools/firestore/delete_document.ts","../src/mcp/tools/firestore/get_documents.ts","../src/mcp/tools/firestore/index.ts","../src/mcp/tools/firestore/list_collections.ts","../src/mcp/tools/firestore/query_collection.ts","../src/mcp/tools/functions/get_logs.ts","../src/mcp/tools/functions/index.ts","../src/mcp/tools/functions/list_functions.ts","../src/mcp/tools/messaging/index.ts","../src/mcp/tools/messaging/send_message.ts","../src/mcp/tools/realtime_database/get_data.ts","../src/mcp/tools/realtime_database/index.ts","../src/mcp/tools/realtime_database/set_data.ts","../src/mcp/tools/remoteconfig/get_template.ts","../src/mcp/tools/remoteconfig/index.ts","../src/mcp/tools/remoteconfig/update_template.ts","../src/mcp/tools/storage/get_download_url.ts","../src/mcp/tools/storage/index.ts","../src/mcp/util/availability.ts","../src/mcp/util/apptesting/availability.ts","../src/mcp/util/crashlytics/availability.ts","../src/mcp/util/dataconnect/compile.ts","../src/mcp/util/dataconnect/content.ts","../src/mcp/util/dataconnect/converter.ts","../src/mcp/util/dataconnect/emulator.ts","../src/messaging/interfaces.ts","../src/messaging/sendMessage.ts","../src/remoteconfig/deleteExperiment.ts","../src/remoteconfig/deleteRollout.ts","../src/remoteconfig/get.ts","../src/remoteconfig/getExperiment.ts","../src/remoteconfig/getRollout.ts","../src/remoteconfig/interfaces.ts","../src/remoteconfig/listExperiments.ts","../src/remoteconfig/listRollouts.ts","../src/remoteconfig/options.ts","../src/remoteconfig/publish.ts","../src/remoteconfig/rollback.ts","../src/remoteconfig/versionslist.ts","../src/serve/functions.ts","../src/serve/hosting.ts","../src/serve/index.ts","../src/throttler/queue.ts","../src/throttler/stack.ts","../src/throttler/throttler.ts","../src/throttler/errors/retries-exhausted-error.ts","../src/throttler/errors/task-error.ts","../src/throttler/errors/timeout-error.ts","../src/types/extractTriggers.d.ts","../src/types/update-notifier-cjs.d.ts","../src/types/auth/index.d.ts","../src/types/project/index.d.ts","../src/types/proxy/index.d.ts"],"version":"5.9.3"}
|
|
1
|
+
{"root":["../src/accountExporter.ts","../src/accountImporter.ts","../src/api.ts","../src/apiv2.ts","../src/appUtils.ts","../src/archiveDirectory.ts","../src/auth.ts","../src/checkMinRequiredVersion.ts","../src/checkValidTargetFilters.ts","../src/command.ts","../src/config.ts","../src/configstore.ts","../src/defaultCredentials.ts","../src/deploymentTool.ts","../src/detectProjectRoot.ts","../src/downloadUtils.ts","../src/dynamicImport.js","../src/ensureApiEnabled.ts","../src/env.ts","../src/error.ts","../src/errorOut.ts","../src/experiments.ts","../src/fetchMOTD.ts","../src/fetchWebSetup.ts","../src/filterTargets.ts","../src/firebaseConfig.ts","../src/firebaseConfigValidate.ts","../src/fsAsync.ts","../src/fsutils.ts","../src/functional.ts","../src/functionsConfig.ts","../src/functionsConfigClone.ts","../src/functionsShellCommandAction.ts","../src/getDefaultDatabaseInstance.ts","../src/getDefaultHostingSite.ts","../src/getProjectNumber.ts","../src/index.ts","../src/listFiles.ts","../src/loadCJSON.ts","../src/localFunction.ts","../src/logError.ts","../src/logger.ts","../src/metaprogramming.ts","../src/operation-poller.ts","../src/options.ts","../src/profileReport.ts","../src/profiler.ts","../src/projectPath.ts","../src/projectUtils.ts","../src/prompt.ts","../src/rc.ts","../src/requireAuth.ts","../src/requireConfig.ts","../src/requireDatabaseInstance.ts","../src/requireHostingSite.ts","../src/requireInteractive.ts","../src/requirePermissions.ts","../src/requireTosAcceptance.ts","../src/responseToError.ts","../src/rtdb.ts","../src/rulesDeploy.ts","../src/scopes.ts","../src/shortenUrl.ts","../src/templates.ts","../src/timeout.ts","../src/track.ts","../src/unzip.ts","../src/utils.ts","../src/vsCodeUtils.ts","../src/appdistribution/client.ts","../src/appdistribution/distribution.ts","../src/appdistribution/options-parser-util.ts","../src/appdistribution/types.ts","../src/appdistribution/yaml_helper.ts","../src/apphosting/app.ts","../src/apphosting/backend.ts","../src/apphosting/config.ts","../src/apphosting/constants.ts","../src/apphosting/githubConnections.ts","../src/apphosting/index.ts","../src/apphosting/localbuilds.ts","../src/apphosting/repo.ts","../src/apphosting/rollout.ts","../src/apphosting/utils.ts","../src/apphosting/yaml.ts","../src/apphosting/secrets/dialogs.ts","../src/apphosting/secrets/index.ts","../src/apptesting/ensureProjectConfigured.ts","../src/apptesting/invokeTests.ts","../src/apptesting/parseTestFiles.ts","../src/apptesting/types.ts","../src/bin/cli.ts","../src/bin/firebase.ts","../src/bin/mcp.ts","../src/commands/appdistribution-distribute.ts","../src/commands/appdistribution-groups-create.ts","../src/commands/appdistribution-groups-delete.ts","../src/commands/appdistribution-groups-list.ts","../src/commands/appdistribution-testcases-export.ts","../src/commands/appdistribution-testcases-import.ts","../src/commands/appdistribution-testers-add.ts","../src/commands/appdistribution-testers-list.ts","../src/commands/appdistribution-testers-remove.ts","../src/commands/apphosting-backends-create.ts","../src/commands/apphosting-backends-delete.ts","../src/commands/apphosting-backends-get.ts","../src/commands/apphosting-backends-list.ts","../src/commands/apphosting-builds-create.ts","../src/commands/apphosting-builds-get.ts","../src/commands/apphosting-repos-create.ts","../src/commands/apphosting-rollouts-create.ts","../src/commands/apphosting-rollouts-list.ts","../src/commands/apphosting-secrets-access.ts","../src/commands/apphosting-secrets-describe.ts","../src/commands/apphosting-secrets-grantaccess.ts","../src/commands/apphosting-secrets-set.ts","../src/commands/apps-android-sha-create.ts","../src/commands/apps-android-sha-delete.ts","../src/commands/apps-android-sha-list.ts","../src/commands/apps-create.ts","../src/commands/apps-init.ts","../src/commands/apps-list.ts","../src/commands/apps-sdkconfig.ts","../src/commands/apptesting-wata.ts","../src/commands/auth-export.ts","../src/commands/auth-import.ts","../src/commands/crashlytics-mappingfile-generateid.ts","../src/commands/crashlytics-mappingfile-upload.ts","../src/commands/crashlytics-symbols-upload.ts","../src/commands/database-get.ts","../src/commands/database-import.ts","../src/commands/database-instances-create.ts","../src/commands/database-instances-list.ts","../src/commands/database-profile.ts","../src/commands/database-push.ts","../src/commands/database-remove.ts","../src/commands/database-rules-canary.ts","../src/commands/database-rules-get.ts","../src/commands/database-rules-list.ts","../src/commands/database-rules-release.ts","../src/commands/database-rules-stage.ts","../src/commands/database-set.ts","../src/commands/database-settings-get.ts","../src/commands/database-settings-set.ts","../src/commands/database-update.ts","../src/commands/dataconnect-execute.ts","../src/commands/dataconnect-sdk-generate.ts","../src/commands/dataconnect-services-list.ts","../src/commands/dataconnect-sql-diff.ts","../src/commands/dataconnect-sql-grant.ts","../src/commands/dataconnect-sql-migrate.ts","../src/commands/dataconnect-sql-setup.ts","../src/commands/dataconnect-sql-shell.ts","../src/commands/deploy.ts","../src/commands/emulators-exec.ts","../src/commands/emulators-export.ts","../src/commands/emulators-start.ts","../src/commands/experiments-describe.ts","../src/commands/experiments-disable.ts","../src/commands/experiments-enable.ts","../src/commands/experiments-list.ts","../src/commands/ext-configure.ts","../src/commands/ext-dev-deprecate.ts","../src/commands/ext-dev-init.ts","../src/commands/ext-dev-list.ts","../src/commands/ext-dev-register.ts","../src/commands/ext-dev-undeprecate.ts","../src/commands/ext-dev-upload.ts","../src/commands/ext-dev-usage.ts","../src/commands/ext-export.ts","../src/commands/ext-info.ts","../src/commands/ext-install.ts","../src/commands/ext-list.ts","../src/commands/ext-sdk-install.ts","../src/commands/ext-uninstall.ts","../src/commands/ext-update.ts","../src/commands/ext.ts","../src/commands/firestore-backups-delete.ts","../src/commands/firestore-backups-get.ts","../src/commands/firestore-backups-list.ts","../src/commands/firestore-backups-schedules-create.ts","../src/commands/firestore-backups-schedules-delete.ts","../src/commands/firestore-backups-schedules-list.ts","../src/commands/firestore-backups-schedules-update.ts","../src/commands/firestore-bulkdelete.ts","../src/commands/firestore-databases-clone.ts","../src/commands/firestore-databases-create.ts","../src/commands/firestore-databases-delete.ts","../src/commands/firestore-databases-get.ts","../src/commands/firestore-databases-list.ts","../src/commands/firestore-databases-restore.ts","../src/commands/firestore-databases-update.ts","../src/commands/firestore-delete.ts","../src/commands/firestore-indexes-list.ts","../src/commands/firestore-locations.ts","../src/commands/firestore-operations-cancel.ts","../src/commands/firestore-operations-describe.ts","../src/commands/firestore-operations-list.ts","../src/commands/firestore-utils.ts","../src/commands/functions-artifacts-setpolicy.ts","../src/commands/functions-config-clone.ts","../src/commands/functions-config-export.ts","../src/commands/functions-config-get.ts","../src/commands/functions-config-set.ts","../src/commands/functions-config-unset.ts","../src/commands/functions-delete.ts","../src/commands/functions-deletegcfartifacts.ts","../src/commands/functions-list.ts","../src/commands/functions-log.ts","../src/commands/functions-secrets-access.ts","../src/commands/functions-secrets-describe.ts","../src/commands/functions-secrets-destroy.ts","../src/commands/functions-secrets-get.ts","../src/commands/functions-secrets-prune.ts","../src/commands/functions-secrets-set.ts","../src/commands/functions-shell.ts","../src/commands/help.ts","../src/commands/hosting-channel-create.ts","../src/commands/hosting-channel-delete.ts","../src/commands/hosting-channel-deploy.ts","../src/commands/hosting-channel-list.ts","../src/commands/hosting-channel-open.ts","../src/commands/hosting-clone.ts","../src/commands/hosting-disable.ts","../src/commands/hosting-sites-create.ts","../src/commands/hosting-sites-delete.ts","../src/commands/hosting-sites-get.ts","../src/commands/hosting-sites-list.ts","../src/commands/index.ts","../src/commands/init.ts","../src/commands/internaltesting-frameworks-compose.ts","../src/commands/internaltesting-functions-discover.ts","../src/commands/login-add.ts","../src/commands/login-ci.ts","../src/commands/login-list.ts","../src/commands/login-use.ts","../src/commands/login.ts","../src/commands/logout.ts","../src/commands/mcp.ts","../src/commands/open.ts","../src/commands/projects-addfirebase.ts","../src/commands/projects-create.ts","../src/commands/projects-list.ts","../src/commands/remoteconfig-experiments-delete.ts","../src/commands/remoteconfig-experiments-get.ts","../src/commands/remoteconfig-experiments-list.ts","../src/commands/remoteconfig-get.ts","../src/commands/remoteconfig-rollback.ts","../src/commands/remoteconfig-rollouts-delete.ts","../src/commands/remoteconfig-rollouts-get.ts","../src/commands/remoteconfig-rollouts-list.ts","../src/commands/remoteconfig-versions-list.ts","../src/commands/serve.ts","../src/commands/setup-emulators-database.ts","../src/commands/setup-emulators-dataconnect.ts","../src/commands/setup-emulators-firestore.ts","../src/commands/setup-emulators-pubsub.ts","../src/commands/setup-emulators-storage.ts","../src/commands/setup-emulators-ui.ts","../src/commands/target-apply.ts","../src/commands/target-clear.ts","../src/commands/target-remove.ts","../src/commands/target.ts","../src/commands/use.ts","../src/crashlytics/buildToolsJarHelper.ts","../src/crashlytics/events.ts","../src/crashlytics/filters.ts","../src/crashlytics/issues.ts","../src/crashlytics/notes.ts","../src/crashlytics/reports.ts","../src/crashlytics/types.ts","../src/crashlytics/utils.ts","../src/database/api.ts","../src/database/import.ts","../src/database/listRemote.ts","../src/database/metadata.ts","../src/database/remove.ts","../src/database/removeRemote.ts","../src/database/rulesConfig.ts","../src/database/settings.ts","../src/dataconnect/build.ts","../src/dataconnect/checkIam.ts","../src/dataconnect/client.ts","../src/dataconnect/cloudAICompanionTypes.ts","../src/dataconnect/dataplaneClient.ts","../src/dataconnect/ensureApis.ts","../src/dataconnect/errors.ts","../src/dataconnect/filters.ts","../src/dataconnect/freeTrial.ts","../src/dataconnect/graphqlError.ts","../src/dataconnect/load.ts","../src/dataconnect/names.ts","../src/dataconnect/prompts.ts","../src/dataconnect/provisionCloudSql.ts","../src/dataconnect/schemaMigration.ts","../src/dataconnect/types.ts","../src/dataconnect/webhook.ts","../src/deploy/index.ts","../src/deploy/lifecycleHooks.ts","../src/deploy/apphosting/args.ts","../src/deploy/apphosting/deploy.ts","../src/deploy/apphosting/index.ts","../src/deploy/apphosting/prepare.ts","../src/deploy/apphosting/release.ts","../src/deploy/apphosting/util.ts","../src/deploy/database/deploy.ts","../src/deploy/database/index.ts","../src/deploy/database/prepare.ts","../src/deploy/database/release.ts","../src/deploy/dataconnect/context.ts","../src/deploy/dataconnect/deploy.ts","../src/deploy/dataconnect/index.ts","../src/deploy/dataconnect/prepare.ts","../src/deploy/dataconnect/release.ts","../src/deploy/extensions/args.ts","../src/deploy/extensions/deploy.ts","../src/deploy/extensions/deploymentSummary.ts","../src/deploy/extensions/errors.ts","../src/deploy/extensions/index.ts","../src/deploy/extensions/planner.ts","../src/deploy/extensions/prepare.ts","../src/deploy/extensions/release.ts","../src/deploy/extensions/secrets.ts","../src/deploy/extensions/tasks.ts","../src/deploy/extensions/v2FunctionHelper.ts","../src/deploy/extensions/validate.ts","../src/deploy/firestore/deploy.ts","../src/deploy/firestore/index.ts","../src/deploy/firestore/prepare.ts","../src/deploy/firestore/release.ts","../src/deploy/functions/args.ts","../src/deploy/functions/backend.ts","../src/deploy/functions/build.ts","../src/deploy/functions/cel.ts","../src/deploy/functions/checkIam.ts","../src/deploy/functions/containerCleaner.ts","../src/deploy/functions/deploy.ts","../src/deploy/functions/ensure.ts","../src/deploy/functions/ensureCloudBuildEnabled.ts","../src/deploy/functions/functionsDeployHelper.ts","../src/deploy/functions/index.ts","../src/deploy/functions/params.ts","../src/deploy/functions/prepare.ts","../src/deploy/functions/prepareFunctionsUpload.ts","../src/deploy/functions/pricing.ts","../src/deploy/functions/prompts.ts","../src/deploy/functions/remoteSource.ts","../src/deploy/functions/triggerRegionHelper.ts","../src/deploy/functions/validate.ts","../src/deploy/functions/cache/applyHash.ts","../src/deploy/functions/cache/hash.ts","../src/deploy/functions/release/executor.ts","../src/deploy/functions/release/fabricator.ts","../src/deploy/functions/release/index.ts","../src/deploy/functions/release/planner.ts","../src/deploy/functions/release/reporter.ts","../src/deploy/functions/release/sourceTokenScraper.ts","../src/deploy/functions/release/timer.ts","../src/deploy/functions/runtimes/index.ts","../src/deploy/functions/runtimes/discovery/index.ts","../src/deploy/functions/runtimes/discovery/mockDiscoveryServer.ts","../src/deploy/functions/runtimes/discovery/parsing.ts","../src/deploy/functions/runtimes/discovery/v1alpha1.ts","../src/deploy/functions/runtimes/node/index.ts","../src/deploy/functions/runtimes/node/parseRuntimeAndValidateSDK.ts","../src/deploy/functions/runtimes/node/validate.ts","../src/deploy/functions/runtimes/node/versioning.ts","../src/deploy/functions/runtimes/python/index.ts","../src/deploy/functions/runtimes/supported/index.ts","../src/deploy/functions/runtimes/supported/types.ts","../src/deploy/functions/services/auth.ts","../src/deploy/functions/services/database.ts","../src/deploy/functions/services/dataconnect.ts","../src/deploy/functions/services/firebaseAlerts.ts","../src/deploy/functions/services/firestore.ts","../src/deploy/functions/services/index.ts","../src/deploy/functions/services/remoteConfig.ts","../src/deploy/functions/services/storage.ts","../src/deploy/functions/services/testLab.ts","../src/deploy/hosting/args.ts","../src/deploy/hosting/context.ts","../src/deploy/hosting/convertConfig.ts","../src/deploy/hosting/deploy.ts","../src/deploy/hosting/hashcache.ts","../src/deploy/hosting/index.ts","../src/deploy/hosting/prepare.ts","../src/deploy/hosting/release.ts","../src/deploy/hosting/uploader.ts","../src/deploy/remoteconfig/deploy.ts","../src/deploy/remoteconfig/functions.ts","../src/deploy/remoteconfig/index.ts","../src/deploy/remoteconfig/prepare.ts","../src/deploy/remoteconfig/release.ts","../src/deploy/storage/deploy.ts","../src/deploy/storage/index.ts","../src/deploy/storage/prepare.ts","../src/deploy/storage/release.ts","../src/emulator/ExpressBasedEmulator.ts","../src/emulator/adminSdkConfig.ts","../src/emulator/commandUtils.ts","../src/emulator/constants.ts","../src/emulator/controller.ts","../src/emulator/databaseEmulator.ts","../src/emulator/dataconnectEmulator.ts","../src/emulator/dataconnectToolkitController.ts","../src/emulator/dns.ts","../src/emulator/download.ts","../src/emulator/downloadableEmulators.ts","../src/emulator/emulatorLogger.ts","../src/emulator/env.ts","../src/emulator/eventarcEmulator.ts","../src/emulator/eventarcEmulatorUtils.ts","../src/emulator/extensionsEmulator.ts","../src/emulator/firestoreEmulator.ts","../src/emulator/functionsEmulator.ts","../src/emulator/functionsEmulatorRuntime.ts","../src/emulator/functionsEmulatorShared.ts","../src/emulator/functionsEmulatorShell.ts","../src/emulator/functionsEmulatorUtils.ts","../src/emulator/functionsRuntimeWorker.ts","../src/emulator/hostingEmulator.ts","../src/emulator/hub.ts","../src/emulator/hubClient.ts","../src/emulator/hubExport.ts","../src/emulator/initEmulators.ts","../src/emulator/loggingEmulator.ts","../src/emulator/portUtils.ts","../src/emulator/pubsubEmulator.ts","../src/emulator/registry.ts","../src/emulator/taskQueue.ts","../src/emulator/tasksEmulator.ts","../src/emulator/types.ts","../src/emulator/ui.ts","../src/emulator/workQueue.ts","../src/emulator/apphosting/config.ts","../src/emulator/apphosting/developmentServer.ts","../src/emulator/apphosting/index.ts","../src/emulator/apphosting/serve.ts","../src/emulator/auth/apiSpec.ts","../src/emulator/auth/cloudFunctions.ts","../src/emulator/auth/errors.ts","../src/emulator/auth/handlers.ts","../src/emulator/auth/index.ts","../src/emulator/auth/operations.ts","../src/emulator/auth/schema.ts","../src/emulator/auth/server.ts","../src/emulator/auth/state.ts","../src/emulator/auth/types.ts","../src/emulator/auth/utils.ts","../src/emulator/auth/widget_ui.ts","../src/emulator/dataconnect/pgliteServer.ts","../src/emulator/events/types.ts","../src/emulator/extensions/postinstall.ts","../src/emulator/extensions/validation.ts","../src/emulator/shared/request.ts","../src/emulator/storage/cloudFunctions.ts","../src/emulator/storage/crc.ts","../src/emulator/storage/errors.ts","../src/emulator/storage/files.ts","../src/emulator/storage/index.ts","../src/emulator/storage/metadata.ts","../src/emulator/storage/multipart.ts","../src/emulator/storage/persistence.ts","../src/emulator/storage/rfc.ts","../src/emulator/storage/server.ts","../src/emulator/storage/upload.ts","../src/emulator/storage/apis/firebase.ts","../src/emulator/storage/apis/gcloud.ts","../src/emulator/storage/apis/shared.ts","../src/emulator/storage/rules/config.ts","../src/emulator/storage/rules/expressionValue.ts","../src/emulator/storage/rules/manager.ts","../src/emulator/storage/rules/runtime.ts","../src/emulator/storage/rules/types.ts","../src/emulator/storage/rules/utils.ts","../src/extensions/askUserForEventsConfig.ts","../src/extensions/askUserForParam.ts","../src/extensions/change-log.ts","../src/extensions/checkProjectBilling.ts","../src/extensions/diagnose.ts","../src/extensions/displayExtensionInfo.ts","../src/extensions/etags.ts","../src/extensions/export.ts","../src/extensions/extensionsApi.ts","../src/extensions/extensionsHelper.ts","../src/extensions/listExtensions.ts","../src/extensions/localHelper.ts","../src/extensions/manifest.ts","../src/extensions/metricsTypeDef.ts","../src/extensions/metricsUtils.ts","../src/extensions/paramHelper.ts","../src/extensions/provisioningHelper.ts","../src/extensions/publishHelpers.ts","../src/extensions/publisherApi.ts","../src/extensions/refs.ts","../src/extensions/secretsUtils.ts","../src/extensions/tos.ts","../src/extensions/types.ts","../src/extensions/updateHelper.ts","../src/extensions/utils.ts","../src/extensions/versionHelper.ts","../src/extensions/warnings.ts","../src/extensions/emulator/optionsHelper.ts","../src/extensions/emulator/specHelper.ts","../src/extensions/emulator/triggerHelper.ts","../src/extensions/runtimes/common.ts","../src/extensions/runtimes/node.ts","../src/firestore/api-sort.ts","../src/firestore/api-spec.ts","../src/firestore/api-types.ts","../src/firestore/api.ts","../src/firestore/backupUtils.ts","../src/firestore/checkDatabaseType.ts","../src/firestore/delete.ts","../src/firestore/encodeFirestoreValue.ts","../src/firestore/fsConfig.ts","../src/firestore/options.ts","../src/firestore/pretty-print.ts","../src/firestore/util.ts","../src/firestore/validator.ts","../src/frameworks/constants.ts","../src/frameworks/frameworks.ts","../src/frameworks/index.ts","../src/frameworks/interfaces.ts","../src/frameworks/utils.ts","../src/frameworks/angular/index.ts","../src/frameworks/angular/interfaces.ts","../src/frameworks/angular/utils.ts","../src/frameworks/astro/index.ts","../src/frameworks/astro/utils.ts","../src/frameworks/compose/index.ts","../src/frameworks/compose/interfaces.ts","../src/frameworks/compose/discover/filesystem.ts","../src/frameworks/compose/discover/frameworkMatcher.ts","../src/frameworks/compose/discover/frameworkSpec.ts","../src/frameworks/compose/discover/index.ts","../src/frameworks/compose/discover/mockFileSystem.ts","../src/frameworks/compose/discover/types.ts","../src/frameworks/compose/discover/runtime/node.ts","../src/frameworks/compose/driver/docker.ts","../src/frameworks/compose/driver/hooks.ts","../src/frameworks/compose/driver/index.ts","../src/frameworks/compose/driver/local.ts","../src/frameworks/docs/index.ts","../src/frameworks/express/index.ts","../src/frameworks/flutter/constants.ts","../src/frameworks/flutter/index.ts","../src/frameworks/flutter/utils.ts","../src/frameworks/lit/index.ts","../src/frameworks/next/constants.ts","../src/frameworks/next/index.ts","../src/frameworks/next/interfaces.ts","../src/frameworks/next/utils.ts","../src/frameworks/nuxt/index.ts","../src/frameworks/nuxt/interfaces.ts","../src/frameworks/nuxt/utils.ts","../src/frameworks/nuxt2/index.ts","../src/frameworks/preact/index.ts","../src/frameworks/react/index.ts","../src/frameworks/svelte/index.ts","../src/frameworks/sveltekit/index.ts","../src/frameworks/sveltekit/interfaces.ts","../src/frameworks/vite/index.ts","../src/functions/artifacts.ts","../src/functions/constants.ts","../src/functions/ensureTargeted.ts","../src/functions/env.ts","../src/functions/functionslog.ts","../src/functions/projectConfig.ts","../src/functions/python.ts","../src/functions/secrets.ts","../src/functions/events/index.ts","../src/functions/events/v1.ts","../src/functions/events/v2.ts","../src/gcp/apphosting.ts","../src/gcp/apptesting.ts","../src/gcp/artifactregistry.ts","../src/gcp/auth.ts","../src/gcp/cloudbilling.ts","../src/gcp/cloudbuild.ts","../src/gcp/cloudfunctions.ts","../src/gcp/cloudfunctionsv2.ts","../src/gcp/cloudlogging.ts","../src/gcp/cloudmonitoring.ts","../src/gcp/cloudscheduler.ts","../src/gcp/cloudtasks.ts","../src/gcp/computeEngine.ts","../src/gcp/devConnect.ts","../src/gcp/docker.ts","../src/gcp/eventarc.ts","../src/gcp/firedata.ts","../src/gcp/firestore.ts","../src/gcp/iam.ts","../src/gcp/identityPlatform.ts","../src/gcp/index.ts","../src/gcp/k8s.ts","../src/gcp/location.ts","../src/gcp/proto.ts","../src/gcp/pubsub.ts","../src/gcp/resourceManager.ts","../src/gcp/rules.ts","../src/gcp/run.ts","../src/gcp/runtimeconfig.ts","../src/gcp/runv2.ts","../src/gcp/secretManager.ts","../src/gcp/serviceusage.ts","../src/gcp/storage.ts","../src/gcp/cloudsql/cloudsqladmin.ts","../src/gcp/cloudsql/connect.ts","../src/gcp/cloudsql/fbToolsAuthClient.ts","../src/gcp/cloudsql/interactive.ts","../src/gcp/cloudsql/permissions.ts","../src/gcp/cloudsql/permissionsSetup.ts","../src/gcp/cloudsql/types.ts","../src/gemini/fdcExperience.ts","../src/gemini/types.ts","../src/hosting/api.ts","../src/hosting/cloudRunProxy.ts","../src/hosting/config.ts","../src/hosting/expireUtils.ts","../src/hosting/functionsProxy.ts","../src/hosting/implicitInit.ts","../src/hosting/initMiddleware.ts","../src/hosting/interactive.ts","../src/hosting/options.ts","../src/hosting/proxy.ts","../src/hosting/runTags.ts","../src/init/index.ts","../src/init/spawn.ts","../src/init/features/account.ts","../src/init/features/aitools.ts","../src/init/features/apphosting.ts","../src/init/features/database.ts","../src/init/features/emulators.ts","../src/init/features/index.ts","../src/init/features/project.ts","../src/init/features/remoteconfig.ts","../src/init/features/storage.ts","../src/init/features/ailogic/index.ts","../src/init/features/ailogic/utils.ts","../src/init/features/aitools/claude.ts","../src/init/features/aitools/cursor.ts","../src/init/features/aitools/gemini.ts","../src/init/features/aitools/index.ts","../src/init/features/aitools/promptUpdater.ts","../src/init/features/aitools/studio.ts","../src/init/features/aitools/types.ts","../src/init/features/apptesting/index.ts","../src/init/features/dataconnect/create_app.ts","../src/init/features/dataconnect/index.ts","../src/init/features/dataconnect/resolver.ts","../src/init/features/dataconnect/sdk.ts","../src/init/features/extensions/index.ts","../src/init/features/firestore/index.ts","../src/init/features/firestore/indexes.ts","../src/init/features/firestore/rules.ts","../src/init/features/functions/index.ts","../src/init/features/functions/javascript.ts","../src/init/features/functions/npm-dependencies.ts","../src/init/features/functions/python.ts","../src/init/features/functions/typescript.ts","../src/init/features/genkit/index.ts","../src/init/features/hosting/github.ts","../src/init/features/hosting/index.ts","../src/management/apps.ts","../src/management/database.ts","../src/management/projects.ts","../src/management/studio.ts","../src/management/provisioning/errorHandler.ts","../src/management/provisioning/provision.ts","../src/management/provisioning/types.ts","../src/mcp/errors.ts","../src/mcp/index.ts","../src/mcp/logging-transport.ts","../src/mcp/prompt.ts","../src/mcp/resource.ts","../src/mcp/tool.ts","../src/mcp/types.ts","../src/mcp/util.test.ts","../src/mcp/util.ts","../src/mcp/prompts/index.ts","../src/mcp/prompts/apptesting/index.ts","../src/mcp/prompts/apptesting/run_test.ts","../src/mcp/prompts/core/deploy.ts","../src/mcp/prompts/core/index.ts","../src/mcp/prompts/core/init.ts","../src/mcp/prompts/crashlytics/connect.ts","../src/mcp/prompts/crashlytics/index.ts","../src/mcp/prompts/dataconnect/index.ts","../src/mcp/prompts/dataconnect/schema.ts","../src/mcp/prompts/firestore/generate_security_rules.ts","../src/mcp/prompts/firestore/index.ts","../src/mcp/prompts/storage/generate_security_rules.ts","../src/mcp/prompts/storage/index.ts","../src/mcp/resources/docs.ts","../src/mcp/resources/index.ts","../src/mcp/resources/guides/app_id.ts","../src/mcp/resources/guides/crashlytics_connect.ts","../src/mcp/resources/guides/crashlytics_investigations.ts","../src/mcp/resources/guides/crashlytics_issues.ts","../src/mcp/resources/guides/crashlytics_reports.ts","../src/mcp/resources/guides/init_ai.ts","../src/mcp/resources/guides/init_auth.ts","../src/mcp/resources/guides/init_backend.ts","../src/mcp/resources/guides/init_data_connect.ts","../src/mcp/resources/guides/init_firestore.ts","../src/mcp/resources/guides/init_firestore_rules.ts","../src/mcp/resources/guides/init_hosting.ts","../src/mcp/resources/guides/init_rtdb.ts","../src/mcp/tools/index.ts","../src/mcp/tools/apphosting/fetch_logs.ts","../src/mcp/tools/apphosting/index.ts","../src/mcp/tools/apphosting/list_backends.ts","../src/mcp/tools/apptesting/index.ts","../src/mcp/tools/apptesting/tests.ts","../src/mcp/tools/auth/get_users.ts","../src/mcp/tools/auth/index.ts","../src/mcp/tools/auth/set_sms_region_policy.ts","../src/mcp/tools/auth/update_user.ts","../src/mcp/tools/core/create_android_sha.ts","../src/mcp/tools/core/create_app.ts","../src/mcp/tools/core/create_project.ts","../src/mcp/tools/core/get_environment.ts","../src/mcp/tools/core/get_project.ts","../src/mcp/tools/core/get_sdk_config.ts","../src/mcp/tools/core/get_security_rules.ts","../src/mcp/tools/core/index.ts","../src/mcp/tools/core/init.ts","../src/mcp/tools/core/list_apps.ts","../src/mcp/tools/core/list_projects.ts","../src/mcp/tools/core/login.ts","../src/mcp/tools/core/logout.ts","../src/mcp/tools/core/read_resources.ts","../src/mcp/tools/core/update_environment.ts","../src/mcp/tools/core/validate_security_rules.ts","../src/mcp/tools/crashlytics/events.ts","../src/mcp/tools/crashlytics/index.ts","../src/mcp/tools/crashlytics/issues.ts","../src/mcp/tools/crashlytics/notes.ts","../src/mcp/tools/crashlytics/reports.ts","../src/mcp/tools/dataconnect/compile.ts","../src/mcp/tools/dataconnect/execute.ts","../src/mcp/tools/dataconnect/index.ts","../src/mcp/tools/dataconnect/list_services.ts","../src/mcp/tools/firestore/converter.ts","../src/mcp/tools/firestore/delete_document.ts","../src/mcp/tools/firestore/get_documents.ts","../src/mcp/tools/firestore/index.ts","../src/mcp/tools/firestore/list_collections.ts","../src/mcp/tools/firestore/query_collection.ts","../src/mcp/tools/functions/get_logs.ts","../src/mcp/tools/functions/index.ts","../src/mcp/tools/functions/list_functions.ts","../src/mcp/tools/messaging/index.ts","../src/mcp/tools/messaging/send_message.ts","../src/mcp/tools/realtime_database/get_data.ts","../src/mcp/tools/realtime_database/index.ts","../src/mcp/tools/realtime_database/set_data.ts","../src/mcp/tools/remoteconfig/get_template.ts","../src/mcp/tools/remoteconfig/index.ts","../src/mcp/tools/remoteconfig/update_template.ts","../src/mcp/tools/storage/get_download_url.ts","../src/mcp/tools/storage/index.ts","../src/mcp/util/availability.ts","../src/mcp/util/apptesting/availability.ts","../src/mcp/util/crashlytics/availability.ts","../src/mcp/util/dataconnect/compile.ts","../src/mcp/util/dataconnect/content.ts","../src/mcp/util/dataconnect/converter.ts","../src/mcp/util/dataconnect/emulator.ts","../src/messaging/interfaces.ts","../src/messaging/sendMessage.ts","../src/remoteconfig/deleteExperiment.ts","../src/remoteconfig/deleteRollout.ts","../src/remoteconfig/get.ts","../src/remoteconfig/getExperiment.ts","../src/remoteconfig/getRollout.ts","../src/remoteconfig/interfaces.ts","../src/remoteconfig/listExperiments.ts","../src/remoteconfig/listRollouts.ts","../src/remoteconfig/options.ts","../src/remoteconfig/publish.ts","../src/remoteconfig/rollback.ts","../src/remoteconfig/versionslist.ts","../src/serve/functions.ts","../src/serve/hosting.ts","../src/serve/index.ts","../src/throttler/queue.ts","../src/throttler/stack.ts","../src/throttler/throttler.ts","../src/throttler/errors/retries-exhausted-error.ts","../src/throttler/errors/task-error.ts","../src/throttler/errors/timeout-error.ts","../src/types/extractTriggers.d.ts","../src/types/update-notifier-cjs.d.ts","../src/types/auth/index.d.ts","../src/types/project/index.d.ts","../src/types/proxy/index.d.ts"],"version":"5.9.3"}
|