Skip to content

Commit 2e1b45a

Browse files
authored
Provide default values for namespace and database for v2 Firestore triggers in extensions (#8395)
* Provide default values for namespace and database for v2 Firestore triggers in extensions * Update src/emulator/functionsEmulator.ts
1 parent 6c00567 commit 2e1b45a

File tree

3 files changed

+8
-3
lines changed

3 files changed

+8
-3
lines changed

CHANGELOG.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
- Fixed an issue where the Extensions emulator did not provide fall back values for v2 Firestore event triggers. (#8390)
12
- Fixed issue with prompt when Data Connect prompts user for framework generation.
23
- Fixed a bug where the Admin SDK fails with ENOTFOUND when automatically connecting to the Data Connect emulator when run in the Functions emulator. (#8379)
34
- Updated the Firebase Data Connect local toolkit to v2.1.0 which includes the following changes: (#8400)

src/emulator/functionsEmulator.ts

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1098,11 +1098,11 @@ export class FunctionsEmulator implements EmulatorInstance {
10981098
logger.debug("Found a v2 firestore trigger.");
10991099
const database = eventTrigger.eventFilters?.database;
11001100
if (!database) {
1101-
throw new FirebaseError("A database must be supplied.");
1101+
throw new FirebaseError(`A database must be supplied for event trigger ${key}`);
11021102
}
11031103
const namespace = eventTrigger.eventFilters?.namespace;
11041104
if (!namespace) {
1105-
throw new FirebaseError("A namespace must be supplied.");
1105+
throw new FirebaseError(`A namespace must be supplied for event trigger ${key}`);
11061106
}
11071107
let doc;
11081108
let match;
@@ -1140,7 +1140,6 @@ export class FunctionsEmulator implements EmulatorInstance {
11401140
if (!EmulatorRegistry.isRunning(Emulators.FIRESTORE)) {
11411141
return Promise.resolve(false);
11421142
}
1143-
11441143
const { bundle, path } =
11451144
signature === "cloudevent"
11461145
? this.getV2FirestoreAttributes(projectId, key, eventTrigger)

src/extensions/emulator/triggerHelper.ts

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,11 @@ export function functionResourceToEmulatedTriggerDefintion(
138138
eventFilterPathPatterns[filter.attribute] = filter.value;
139139
}
140140
}
141+
if (properties.eventTrigger.eventType.includes("google.cloud.firestore")) {
142+
// Fall back to '(default)' if unset, to match https://github.com/firebase/firebase-functions/blob/e3f9772a530860f7469434a91d344e3faa371765/src/v2/providers/firestore.ts#L511
143+
eventFilters["database"] = eventFilters["database"] ?? "(default)";
144+
eventFilters["namespace"] = eventFilters["namespace"] ?? "(default)";
145+
}
141146
etd.eventTrigger.eventFilters = eventFilters;
142147
etd.eventTrigger.eventFilterPathPatterns = eventFilterPathPatterns;
143148
}

0 commit comments

Comments
 (0)