@firebase-function-kits/delete-user-data 0.0.2-rc.1 → 0.0.2-rc.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -182,12 +182,14 @@ The extension deployed to the location you picked at install time. This kit
182
182
  sets no region, so its functions deploy to your codebase's default
183
183
  (`us-central1` unless you have changed it).
184
184
 
185
- ### Pub/Sub handlers are 2nd gen
186
-
187
- `handleSearch` and `handleDeletion` are now 2nd gen functions. `clearData`
188
- stays 1st gen, because the Firebase Auth `user.delete` trigger has no 2nd gen
189
- equivalent. This mainly matters if you have infrastructure or alerting keyed to
190
- function generation.
185
+ ### All functions are 2nd gen
186
+
187
+ `clearData`, `handleSearch` and `handleDeletion` are all 2nd gen functions. Kits
188
+ do not support 1st gen endpoints, so `clearData` listens on the 2nd gen Firebase
189
+ Auth event `google.firebase.auth.user.v2.deleted` instead of the 1st gen
190
+ `user.delete` trigger. That event type is still beta in `firebase-functions`.
191
+ This mainly matters if you have infrastructure or alerting keyed to function
192
+ generation.
191
193
 
192
194
  ### Empty search fields no longer error
193
195
 
package/lib/index.d.ts CHANGED
@@ -1,6 +1,5 @@
1
- import * as functionsV1 from "firebase-functions/v1";
2
1
  export * from "./lib";
3
- export declare const clearData: functionsV1.CloudFunction<import("firebase-admin/auth").UserRecord>;
2
+ export declare const clearData: import("firebase-functions/core").CloudFunction<import("firebase-functions/core").CloudEvent<import("firebase-admin/auth").UserRecord>>;
4
3
  export declare const handleSearch: import("firebase-functions/core").CloudFunction<import("firebase-functions/core").CloudEvent<import("firebase-functions/v2/pubsub").MessagePublishedData<any>>>;
5
4
  export declare const handleDeletion: import("firebase-functions/core").CloudFunction<import("firebase-functions/core").CloudEvent<import("firebase-functions/v2/pubsub").MessagePublishedData<any>>>;
6
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAmBA,OAAO,KAAK,WAAW,MAAM,uBAAuB,CAAC;AAerD,cAAc,OAAO,CAAC;AAiDtB,eAAO,MAAM,SAAS,qEAEpB,CAAC;AAEH,eAAO,MAAM,YAAY,iKAKxB,CAAC;AAEF,eAAO,MAAM,cAAc,iKAK1B,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAkCA,cAAc,OAAO,CAAC;AAiDtB,eAAO,MAAM,SAAS,yIASpB,CAAC;AAEH,eAAO,MAAM,YAAY,iKAKxB,CAAC;AAEF,eAAO,MAAM,cAAc,iKAK1B,CAAC"}
package/lib/index.js CHANGED
@@ -55,8 +55,8 @@ exports.handleDeletion = exports.handleSearch = exports.clearData = void 0;
55
55
  const pubsub_1 = require("@google-cloud/pubsub");
56
56
  const admin = __importStar(require("firebase-admin"));
57
57
  const firestore_1 = require("firebase-admin/firestore");
58
- const functionsV1 = __importStar(require("firebase-functions/v1"));
59
58
  const v2_1 = require("firebase-functions/v2");
59
+ const identity_1 = require("firebase-functions/v2/identity");
60
60
  const pubsub_2 = require("firebase-functions/v2/pubsub");
61
61
  const config_1 = require("./config");
62
62
  const events = __importStar(require("./events"));
@@ -100,8 +100,15 @@ function getContext() {
100
100
  };
101
101
  return ctx;
102
102
  }
103
- exports.clearData = functionsV1.auth.user().onDelete((user) => {
104
- return (0, handlers_1.handleClear)(user.uid, getContext());
103
+ exports.clearData = (0, identity_1.onUserDeleted)((event) => {
104
+ // The Auth event delivers no user record when the payload envelope is empty,
105
+ // so bail before getContext() rather than initialising the SDKs for nothing.
106
+ const uid = event.data?.uid;
107
+ if (!uid) {
108
+ logs.deletionEventMissingUid(event.id);
109
+ return;
110
+ }
111
+ return (0, handlers_1.handleClear)(uid, getContext());
105
112
  });
106
113
  exports.handleSearch = (0, pubsub_2.onMessagePublished)({
107
114
  topic: config_1.CONFIG_EXPRESSIONS.discoveryTopicName,
package/lib/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAA8C;AAC9C,MAAY,KAAK,2CAAuB;AACxC,wDAAwD;AACxD,MAAY,WAAW,kDAA8B;AAErD,8CAAqD;AACrD,yDAAkE;AAClE,qCAA6D;AAC7D,MAAY,MAAM,qCAAiB;AACnC,mDAA8E;AAC9E,yCAKoB;AACpB,MAAY,IAAI,mCAAe;AAE/B,wCAAsB;AAEtB,MAAM,cAAc,GAAwB;IAC1C,uBAAuB;IACvB,8BAA8B;IAC9B,qBAAqB;IACrB,oBAAoB;IACpB,gFAAgF;IAChF,8BAA8B;IAC9B,mBAAmB;CACpB,CAAC;AAEF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;IAClC,IAAA,iBAAY,EAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,IAAI,GAA+B,CAAC;AAEpC,SAAS,UAAU;IACjB,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,2CAA2B,EAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAA,8BAAc,EAChC,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,YAAY,CACtB,CAAC;IAEF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,aAAa,CAAC;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE;YACjD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpB,GAAG,GAAG;QACJ,SAAS,EAAE,IAAA,wBAAY,EAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrD,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;QAC1B,MAAM,EAAE,IAAI,eAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QACrD,MAAM,EAAE,QAAQ;KACjB,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAEY,QAAA,SAAS,GAAG,WAAW,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,EAAE;IACjE,OAAO,IAAA,sBAAW,EAAC,IAAI,CAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AAC7C,CAAC,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,IAAA,2BAAkB,EAC5C;IACE,KAAK,EAAE,2BAAkB,CAAC,kBAAkB;CAC7C,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,uBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAC5D,CAAC;AAEW,QAAA,cAAc,GAAG,IAAA,2BAAkB,EAC9C;IACE,KAAK,EAAE,2BAAkB,CAAC,iBAAiB;CAC5C,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,yBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAC9D,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;GAcG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEH,iDAA8C;AAC9C,MAAY,KAAK,2CAAuB;AACxC,wDAAwD;AAExD,8CAAqD;AACrD,6DAA+D;AAC/D,yDAAkE;AAClE,qCAA6D;AAC7D,MAAY,MAAM,qCAAiB;AACnC,mDAA8E;AAC9E,yCAKoB;AACpB,MAAY,IAAI,mCAAe;AAE/B,wCAAsB;AAEtB,MAAM,cAAc,GAAwB;IAC1C,uBAAuB;IACvB,8BAA8B;IAC9B,qBAAqB;IACrB,oBAAoB;IACpB,gFAAgF;IAChF,8BAA8B;IAC9B,mBAAmB;CACpB,CAAC;AAEF,KAAK,MAAM,IAAI,IAAI,cAAc,EAAE,CAAC;IAClC,IAAA,iBAAY,EAAC,IAAI,CAAC,CAAC;AACrB,CAAC;AAED,IAAI,GAA+B,CAAC;AAEpC,SAAS,UAAU;IACjB,IAAI,GAAG,EAAE,CAAC;QACR,OAAO,GAAG,CAAC;IACb,CAAC;IAED,MAAM,QAAQ,GAAG,IAAA,2CAA2B,EAAC,IAAA,sBAAa,GAAE,CAAC,CAAC;IAC9D,MAAM,WAAW,GAAG,IAAA,8BAAc,EAChC,QAAQ,CAAC,YAAY,EACrB,QAAQ,CAAC,YAAY,CACtB,CAAC;IAEF,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC5B,KAAK,CAAC,aAAa,CAAC;YAClB,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC,kBAAkB,EAAE;YACjD,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,CAAC,iBAAiB,EAAE,CAAC;IAC3B,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IAEpB,GAAG,GAAG;QACJ,SAAS,EAAE,IAAA,wBAAY,EAAC,QAAQ,CAAC,mBAAmB,CAAC;QACrD,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE;QACxB,QAAQ,EAAE,KAAK,CAAC,QAAQ,EAAE;QAC1B,MAAM,EAAE,IAAI,eAAM,CAAC,EAAE,SAAS,EAAE,QAAQ,CAAC,SAAS,EAAE,CAAC;QACrD,MAAM,EAAE,QAAQ;KACjB,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC;AAEY,QAAA,SAAS,GAAG,IAAA,wBAAa,EAAC,CAAC,KAAK,EAAE,EAAE;IAC/C,6EAA6E;IAC7E,6EAA6E;IAC7E,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,GAAG,CAAC;IAC5B,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,IAAI,CAAC,uBAAuB,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QACvC,OAAO;IACT,CAAC;IACD,OAAO,IAAA,sBAAW,EAAC,GAAG,EAAE,UAAU,EAAE,CAAC,CAAC;AACxC,CAAC,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,IAAA,2BAAkB,EAC5C;IACE,KAAK,EAAE,2BAAkB,CAAC,kBAAkB;CAC7C,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,uBAAS,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAC5D,CAAC;AAEW,QAAA,cAAc,GAAG,IAAA,2BAAkB,EAC9C;IACE,KAAK,EAAE,2BAAkB,CAAC,iBAAiB;CAC5C,EACD,CAAC,KAAK,EAAE,EAAE,CAAC,IAAA,yBAAW,EAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,UAAU,EAAE,CAAC,CAC9D,CAAC"}
package/lib/logs.d.ts CHANGED
@@ -22,5 +22,6 @@ export declare const storagePathDeleting: (path: string) => void;
22
22
  export declare const storagePath404: (path: string) => void;
23
23
  export declare const storagePathError: (path: string, err: Error) => void;
24
24
  export declare const customFunctionError: (err: Error) => void;
25
+ export declare const deletionEventMissingUid: (eventId: string) => void;
25
26
  export declare function warnInvalidPaths(invalidPathCount: number, uid: string): void;
26
27
  //# sourceMappingURL=logs.d.ts.map
package/lib/logs.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAEpE,eAAO,MAAM,QAAQ,QAAS,MAAM,SAEnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAE7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,YAElC,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,MAAM,aAAa,OAAO,SAMpE,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,MAAM,aAAa,OAAO,SAMrE,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,MAAM,OAAO,KAAK,SAE1D,CAAC;AAEF,eAAO,MAAM,IAAI,WAAY,4BAA4B,SAExD,CAAC;AAEF,eAAO,MAAM,WAAW,YAEvB,CAAC;AAEF,eAAO,MAAM,YAAY,YAExB,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,MAAM,SAE3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAE7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,SAE5C,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,MAAM,OAAO,KAAK,SAKrD,CAAC;AAEF,eAAO,MAAM,KAAK,WAAY,4BAA4B,SAEzD,CAAC;AAEF,eAAO,MAAM,cAAc,YAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,YAE3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAEhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,MAAM,SAE9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,SAAU,MAAM,SAE/C,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,SAE1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,OAAO,KAAK,SAExD,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAS,KAAK,SAE7C,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAIrE"}
1
+ {"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,4BAA4B,EAAE,MAAM,iBAAiB,CAAC;AAEpE,eAAO,MAAM,QAAQ,QAAS,MAAM,SAEnC,CAAC;AAEF,eAAO,MAAM,gBAAgB,YAE5B,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAE7B,CAAC;AAEF,eAAO,MAAM,sBAAsB,YAElC,CAAC;AAEF,eAAO,MAAM,oBAAoB,SAAU,MAAM,aAAa,OAAO,SAMpE,CAAC;AAEF,eAAO,MAAM,qBAAqB,SAAU,MAAM,aAAa,OAAO,SAMrE,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,MAAM,OAAO,KAAK,SAE1D,CAAC;AAEF,eAAO,MAAM,IAAI,WAAY,4BAA4B,SAExD,CAAC;AAEF,eAAO,MAAM,WAAW,YAEvB,CAAC;AAEF,eAAO,MAAM,YAAY,YAExB,CAAC;AAEF,eAAO,MAAM,eAAe,SAAU,MAAM,SAE3C,CAAC;AAEF,eAAO,MAAM,iBAAiB,YAE7B,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,SAE5C,CAAC;AAEF,eAAO,MAAM,aAAa,SAAU,MAAM,OAAO,KAAK,SAKrD,CAAC;AAEF,eAAO,MAAM,KAAK,WAAY,4BAA4B,SAEzD,CAAC;AAEF,eAAO,MAAM,cAAc,YAE1B,CAAC;AAEF,eAAO,MAAM,eAAe,YAE3B,CAAC;AAEF,eAAO,MAAM,oBAAoB,YAEhC,CAAC;AAEF,eAAO,MAAM,kBAAkB,SAAU,MAAM,SAE9C,CAAC;AAEF,eAAO,MAAM,mBAAmB,SAAU,MAAM,SAE/C,CAAC;AAEF,eAAO,MAAM,cAAc,SAAU,MAAM,SAE1C,CAAC;AAEF,eAAO,MAAM,gBAAgB,SAAU,MAAM,OAAO,KAAK,SAExD,CAAC;AAEF,eAAO,MAAM,mBAAmB,QAAS,KAAK,SAE7C,CAAC;AAEF,eAAO,MAAM,uBAAuB,YAAa,MAAM,SAItD,CAAC;AAEF,wBAAgB,gBAAgB,CAAC,gBAAgB,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,QAIrE"}
package/lib/logs.js CHANGED
@@ -15,7 +15,7 @@
15
15
  * limitations under the License.
16
16
  */
17
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
- exports.customFunctionError = exports.storagePathError = exports.storagePath404 = exports.storagePathDeleting = exports.storagePathDeleted = exports.storageNotConfigured = exports.storageDeleting = exports.storageDeleted = exports.start = exports.rtdbPathError = exports.rtdbPathDeleting = exports.rtdbNotConfigured = exports.rtdbPathDeleted = exports.rtdbDeleting = exports.rtdbDeleted = exports.init = exports.firestorePathError = exports.firestorePathDeleting = exports.firestorePathDeleted = exports.firestoreNotConfigured = exports.firestoreDeleting = exports.firestoreDeleted = exports.complete = void 0;
18
+ exports.deletionEventMissingUid = exports.customFunctionError = exports.storagePathError = exports.storagePath404 = exports.storagePathDeleting = exports.storagePathDeleted = exports.storageNotConfigured = exports.storageDeleting = exports.storageDeleted = exports.start = exports.rtdbPathError = exports.rtdbPathDeleting = exports.rtdbNotConfigured = exports.rtdbPathDeleted = exports.rtdbDeleting = exports.rtdbDeleted = exports.init = exports.firestorePathError = exports.firestorePathDeleting = exports.firestorePathDeleted = exports.firestoreNotConfigured = exports.firestoreDeleting = exports.firestoreDeleted = exports.complete = void 0;
19
19
  exports.warnInvalidPaths = warnInvalidPaths;
20
20
  const firebase_functions_1 = require("firebase-functions");
21
21
  const complete = (uid) => {
@@ -110,6 +110,10 @@ const customFunctionError = (err) => {
110
110
  firebase_functions_1.logger.error(`Call to custom hook function threw an error`, err);
111
111
  };
112
112
  exports.customFunctionError = customFunctionError;
113
+ const deletionEventMissingUid = (eventId) => {
114
+ firebase_functions_1.logger.error(`Auth deletion event ${eventId} carried no user id, so no data was deleted`);
115
+ };
116
+ exports.deletionEventMissingUid = deletionEventMissingUid;
113
117
  function warnInvalidPaths(invalidPathCount, uid) {
114
118
  firebase_functions_1.logger.warn(`Attempted to delete ${invalidPathCount} invalid paths for deleted user ${uid}`);
115
119
  }
package/lib/logs.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"logs.js","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@firebase-function-kits/delete-user-data",
3
- "version": "0.0.2-rc.1",
3
+ "version": "0.0.2-rc.2",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@firebase-function-kits/delete-user-data",
9
- "version": "0.0.2-rc.1",
9
+ "version": "0.0.2-rc.2",
10
10
  "license": "Apache-2.0",
11
11
  "dependencies": {
12
12
  "@google-cloud/pubsub": "^4.3.3",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@firebase-function-kits/delete-user-data",
3
- "version": "0.0.2-rc.1",
3
+ "version": "0.0.2-rc.2",
4
4
  "repository": {
5
5
  "type": "git",
6
6
  "url": "https://github.com/firebase/extensions.git",
@@ -0,0 +1,32 @@
1
+ /*
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import type { UserRecord } from "firebase-functions/v1/auth";
18
+ import type { CloudEvent, CloudFunction } from "firebase-functions/v2";
19
+
20
+ /**
21
+ * `onUserDeleted` ships in firebase-functions 7.3.2 and emits a `gcfv2`
22
+ * endpoint, but is marked `@beta @internal` upstream and so is stripped from
23
+ * the published type declarations. It is the only 2nd gen Firebase Auth
24
+ * deletion trigger, and kits reject 1st gen endpoints. Keep `firebase-functions`
25
+ * pinned exactly: this signature carries no stability guarantee. Delete this
26
+ * file once the export is public.
27
+ */
28
+ declare module "firebase-functions/v2/identity" {
29
+ export function onUserDeleted(
30
+ handler: (event: CloudEvent<UserRecord>) => unknown
31
+ ): CloudFunction<CloudEvent<UserRecord>>;
32
+ }
package/src/index.ts CHANGED
@@ -17,9 +17,9 @@
17
17
  import { PubSub } from "@google-cloud/pubsub";
18
18
  import * as admin from "firebase-admin";
19
19
  import { getFirestore } from "firebase-admin/firestore";
20
- import * as functionsV1 from "firebase-functions/v1";
21
20
  import type { Role } from "firebase-functions/v2";
22
21
  import { requiresRole } from "firebase-functions/v2";
22
+ import { onUserDeleted } from "firebase-functions/v2/identity";
23
23
  import { onMessagePublished } from "firebase-functions/v2/pubsub";
24
24
  import { CONFIG_EXPRESSIONS, configFromEnv } from "./config";
25
25
  import * as events from "./events";
@@ -81,8 +81,15 @@ function getContext(): HandlerContext {
81
81
  return ctx;
82
82
  }
83
83
 
84
- export const clearData = functionsV1.auth.user().onDelete((user) => {
85
- return handleClear(user.uid, getContext());
84
+ export const clearData = onUserDeleted((event) => {
85
+ // The Auth event delivers no user record when the payload envelope is empty,
86
+ // so bail before getContext() rather than initialising the SDKs for nothing.
87
+ const uid = event.data?.uid;
88
+ if (!uid) {
89
+ logs.deletionEventMissingUid(event.id);
90
+ return;
91
+ }
92
+ return handleClear(uid, getContext());
86
93
  });
87
94
 
88
95
  export const handleSearch = onMessagePublished(
package/src/logs.ts CHANGED
@@ -120,6 +120,12 @@ export const customFunctionError = (err: Error) => {
120
120
  logger.error(`Call to custom hook function threw an error`, err);
121
121
  };
122
122
 
123
+ export const deletionEventMissingUid = (eventId: string) => {
124
+ logger.error(
125
+ `Auth deletion event ${eventId} carried no user id, so no data was deleted`
126
+ );
127
+ };
128
+
123
129
  export function warnInvalidPaths(invalidPathCount: number, uid: string) {
124
130
  logger.warn(
125
131
  `Attempted to delete ${invalidPathCount} invalid paths for deleted user ${uid}`
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Copyright 2026 Google LLC
3
+ *
4
+ * Licensed under the Apache License, Version 2.0 (the "License");
5
+ * you may not use this file except in compliance with the License.
6
+ * You may obtain a copy of the License at
7
+ *
8
+ * https://www.apache.org/licenses/LICENSE-2.0
9
+ *
10
+ * Unless required by applicable law or agreed to in writing, software
11
+ * distributed under the License is distributed on an "AS IS" BASIS,
12
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
+ * See the License for the specific language governing permissions and
14
+ * limitations under the License.
15
+ */
16
+
17
+ import { beforeEach, describe, expect, test, vi } from "vitest";
18
+
19
+ vi.mock("../src/logs");
20
+ vi.mock("../src/handlers", async (importOriginal) => ({
21
+ ...(await importOriginal<typeof import("../src/handlers")>()),
22
+ handleClear: vi.fn(),
23
+ }));
24
+
25
+ import { handleClear } from "../src/handlers";
26
+ import { clearData } from "../src/index";
27
+ import * as logs from "../src/logs";
28
+
29
+ function deletionEvent(data: unknown) {
30
+ return {
31
+ specversion: "1.0",
32
+ id: "event-id",
33
+ type: "google.firebase.auth.user.v2.deleted",
34
+ source: "//identitytoolkit.googleapis.com/projects/test-project",
35
+ time: "2026-01-01T00:00:00.000Z",
36
+ data,
37
+ } as any;
38
+ }
39
+
40
+ describe("clearData", () => {
41
+ beforeEach(() => {
42
+ vi.clearAllMocks();
43
+ });
44
+
45
+ // Kits reject gen1 endpoints, so the deploy fails if this regresses.
46
+ test("registers a gen2 Firebase Auth deletion trigger", () => {
47
+ const endpoint = (clearData as any).__endpoint;
48
+
49
+ expect(endpoint.platform).toBe("gcfv2");
50
+ expect(endpoint.eventTrigger.eventType).toBe(
51
+ "google.firebase.auth.user.v2.deleted"
52
+ );
53
+ });
54
+
55
+ test("logs and skips deletion when the event carries no user record", () => {
56
+ expect(() => clearData(deletionEvent(undefined))).not.toThrow();
57
+
58
+ expect(handleClear).not.toHaveBeenCalled();
59
+ expect(logs.deletionEventMissingUid).toHaveBeenCalledWith("event-id");
60
+ });
61
+
62
+ test("logs and skips deletion when the user record has no uid", () => {
63
+ expect(() =>
64
+ clearData(deletionEvent({ email: "user@example.com" }))
65
+ ).not.toThrow();
66
+
67
+ expect(handleClear).not.toHaveBeenCalled();
68
+ expect(logs.deletionEventMissingUid).toHaveBeenCalledWith("event-id");
69
+ });
70
+ });
@@ -1 +1 @@
1
- {"version":"7.0.2","root":["./src/config.ts","./src/events.ts","./src/export-config.ts","./src/handlers.ts","./src/helpers.ts","./src/index.ts","./src/lib.ts","./src/logs.ts","./src/recursiveDelete.ts","./src/runBatchPubSubDeletions.ts","./src/runCustomSearchFunction.ts","./src/search.ts"],"packageJsons":["./node_modules/@firebase/app-types/package.json","./node_modules/@firebase/component/package.json","./node_modules/@firebase/database-types/package.json","./node_modules/@firebase/logger/package.json","./node_modules/@firebase/util/package.json","./node_modules/@google-cloud/firestore/package.json","./node_modules/@google-cloud/precise-date/package.json","./node_modules/@google-cloud/pubsub/package.json","./node_modules/@google-cloud/storage/build/cjs/package.json","./node_modules/@google-cloud/storage/package.json","./node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader/package.json","./node_modules/@grpc/grpc-js/package.json","./node_modules/@grpc/proto-loader/package.json","./node_modules/@js-sdsl/ordered-map/package.json","./node_modules/@opentelemetry/api/package.json","./node_modules/@types/body-parser/package.json","./node_modules/@types/connect/package.json","./node_modules/@types/cors/package.json","./node_modules/@types/express-serve-static-core/package.json","./node_modules/@types/express/package.json","./node_modules/@types/http-errors/package.json","./node_modules/@types/lodash.chunk/package.json","./node_modules/@types/lodash/package.json","./node_modules/@types/node-fetch/package.json","./node_modules/@types/node/package.json","./node_modules/@types/qs/package.json","./node_modules/@types/range-parser/package.json","./node_modules/@types/send/package.json","./node_modules/@types/serve-static/package.json","./node_modules/abort-controller/package.json","./node_modules/body-parser/package.json","./node_modules/cors/package.json","./node_modules/event-target-shim/package.json","./node_modules/express/package.json","./node_modules/firebase-admin/package.json","./node_modules/firebase-functions/package.json","./node_modules/form-data/package.json","./node_modules/gaxios/package.json","./node_modules/gcp-metadata/package.json","./node_modules/google-auth-library/package.json","./node_modules/google-gax/package.json","./node_modules/gtoken/package.json","./node_modules/http-errors/package.json","./node_modules/lodash.chunk/package.json","./node_modules/long/package.json","./node_modules/long/umd/package.json","./node_modules/node-fetch/package.json","./node_modules/p-defer/package.json","./node_modules/proto3-json-serializer/package.json","./node_modules/protobufjs/package.json","./node_modules/qs/package.json","./node_modules/range-parser/package.json","./node_modules/send/package.json","./node_modules/serve-static/package.json","./node_modules/string_decoder/package.json","./node_modules/teeny-request/package.json","./node_modules/undici-types/package.json","./package.json"],"missingPackageJsons":["./node_modules/@apollo/server/package.json","./node_modules/@as-integrations/express4/package.json","./node_modules/@firebase/logger/dist/package.json","./node_modules/@firebase/logger/dist/src/package.json","./node_modules/@firebase/util/dist/package.json","./node_modules/@google-cloud/firestore/types/package.json","./node_modules/@google-cloud/firestore/types/protos/package.json","./node_modules/@google-cloud/firestore/types/v1/package.json","./node_modules/@google-cloud/firestore/types/v1beta1/package.json","./node_modules/@google-cloud/precise-date/build/package.json","./node_modules/@google-cloud/precise-date/build/src/package.json","./node_modules/@google-cloud/pubsub/build/package.json","./node_modules/@google-cloud/pubsub/build/protos/package.json","./node_modules/@google-cloud/pubsub/build/src/package.json","./node_modules/@google-cloud/pubsub/build/src/publisher/package.json","./node_modules/@google-cloud/pubsub/build/src/v1/package.json","./node_modules/@google-cloud/storage/build/cjs/src/nodejs-common/package.json","./node_modules/@google-cloud/storage/build/cjs/src/package.json","./node_modules/@grpc/grpc-js/build/package.json","./node_modules/@grpc/grpc-js/build/src/client/package.json","./node_modules/@grpc/grpc-js/build/src/generated/google/package.json","./node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/package.json","./node_modules/@grpc/grpc-js/build/src/generated/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/v3/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/v3/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/package.json","./node_modules/@grpc/grpc-js/build/src/package.json","./node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader/build/package.json","./node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader/build/src/package.json","./node_modules/@grpc/grpc-js/node_modules/@js-sdsl/ordered-map/package.json","./node_modules/@grpc/grpc-js/node_modules/events/package.json","./node_modules/@grpc/grpc-js/node_modules/http2/package.json","./node_modules/@grpc/grpc-js/node_modules/long/package.json","./node_modules/@grpc/grpc-js/node_modules/net/package.json","./node_modules/@grpc/grpc-js/node_modules/protobufjs/ext/descriptor/package.json","./node_modules/@grpc/grpc-js/node_modules/protobufjs/package.json","./node_modules/@grpc/grpc-js/node_modules/stream/package.json","./node_modules/@grpc/grpc-js/node_modules/tls/package.json","./node_modules/@grpc/proto-loader/build/package.json","./node_modules/@grpc/proto-loader/build/src/package.json","./node_modules/@js-sdsl/ordered-map/dist/esm/package.json","./node_modules/@js-sdsl/ordered-map/dist/package.json","./node_modules/@opentelemetry/api/build/package.json","./node_modules/@opentelemetry/api/build/src/api/package.json","./node_modules/@opentelemetry/api/build/src/baggage/internal/package.json","./node_modules/@opentelemetry/api/build/src/baggage/package.json","./node_modules/@opentelemetry/api/build/src/common/package.json","./node_modules/@opentelemetry/api/build/src/context/package.json","./node_modules/@opentelemetry/api/build/src/diag/package.json","./node_modules/@opentelemetry/api/build/src/metrics/package.json","./node_modules/@opentelemetry/api/build/src/package.json","./node_modules/@opentelemetry/api/build/src/propagation/package.json","./node_modules/@opentelemetry/api/build/src/trace/internal/package.json","./node_modules/@opentelemetry/api/build/src/trace/package.json","./node_modules/@types/assert/package.json","./node_modules/@types/assert/strict/package.json","./node_modules/@types/async_hooks/package.json","./node_modules/@types/buffer/package.json","./node_modules/@types/child_process/package.json","./node_modules/@types/cluster/package.json","./node_modules/@types/console/package.json","./node_modules/@types/constants/package.json","./node_modules/@types/crypto/package.json","./node_modules/@types/dgram/package.json","./node_modules/@types/diagnostics_channel/package.json","./node_modules/@types/dns/package.json","./node_modules/@types/dns/promises/package.json","./node_modules/@types/domain/package.json","./node_modules/@types/events/package.json","./node_modules/@types/fs/package.json","./node_modules/@types/fs/promises/package.json","./node_modules/@types/http/package.json","./node_modules/@types/http2/package.json","./node_modules/@types/https/package.json","./node_modules/@types/inspector/package.json","./node_modules/@types/inspector/promises/package.json","./node_modules/@types/lodash/common/package.json","./node_modules/@types/module/package.json","./node_modules/@types/net/package.json","./node_modules/@types/node/assert/package.json","./node_modules/@types/node/dns/package.json","./node_modules/@types/node/fs/package.json","./node_modules/@types/node/inspector/package.json","./node_modules/@types/node/path/package.json","./node_modules/@types/node/readline/package.json","./node_modules/@types/node/stream/package.json","./node_modules/@types/node/test/package.json","./node_modules/@types/node/timers/package.json","./node_modules/@types/node/util/package.json","./node_modules/@types/node/web-globals/package.json","./node_modules/@types/node/zlib/package.json","./node_modules/@types/os/package.json","./node_modules/@types/path/package.json","./node_modules/@types/path/posix/package.json","./node_modules/@types/path/win32/package.json","./node_modules/@types/perf_hooks/package.json","./node_modules/@types/process/package.json","./node_modules/@types/punycode/package.json","./node_modules/@types/querystring/package.json","./node_modules/@types/readline/package.json","./node_modules/@types/readline/promises/package.json","./node_modules/@types/repl/package.json","./node_modules/@types/stream/consumers/package.json","./node_modules/@types/stream/iter/package.json","./node_modules/@types/stream/package.json","./node_modules/@types/stream/promises/package.json","./node_modules/@types/stream/web/package.json","./node_modules/@types/string_decoder/package.json","./node_modules/@types/timers/package.json","./node_modules/@types/timers/promises/package.json","./node_modules/@types/tls/package.json","./node_modules/@types/trace_events/package.json","./node_modules/@types/tty/package.json","./node_modules/@types/url/package.json","./node_modules/@types/util/package.json","./node_modules/@types/util/types/package.json","./node_modules/@types/v8/package.json","./node_modules/@types/vm/package.json","./node_modules/@types/wasi/package.json","./node_modules/@types/worker_threads/package.json","./node_modules/@types/zlib/package.json","./node_modules/abort-controller/dist/package.json","./node_modules/assert/package.json","./node_modules/assert/strict/package.json","./node_modules/async_hooks/package.json","./node_modules/buffer/package.json","./node_modules/child_process/package.json","./node_modules/cluster/package.json","./node_modules/connect/package.json","./node_modules/console/package.json","./node_modules/constants/package.json","./node_modules/crypto/package.json","./node_modules/dgram/package.json","./node_modules/diagnostics_channel/package.json","./node_modules/dns/package.json","./node_modules/dns/promises/package.json","./node_modules/domain/package.json","./node_modules/events/package.json","./node_modules/express-serve-static-core/package.json","./node_modules/firebase-admin/app-check/package.json","./node_modules/firebase-admin/app/package.json","./node_modules/firebase-admin/auth/package.json","./node_modules/firebase-admin/database/package.json","./node_modules/firebase-admin/eventarc/package.json","./node_modules/firebase-admin/firestore/package.json","./node_modules/firebase-admin/lib/app-check/package.json","./node_modules/firebase-admin/lib/app/package.json","./node_modules/firebase-admin/lib/auth/package.json","./node_modules/firebase-admin/lib/credential/package.json","./node_modules/firebase-admin/lib/database/package.json","./node_modules/firebase-admin/lib/eventarc/package.json","./node_modules/firebase-admin/lib/firestore/package.json","./node_modules/firebase-admin/lib/installations/package.json","./node_modules/firebase-admin/lib/instance-id/package.json","./node_modules/firebase-admin/lib/machine-learning/package.json","./node_modules/firebase-admin/lib/messaging/package.json","./node_modules/firebase-admin/lib/package.json","./node_modules/firebase-admin/lib/project-management/package.json","./node_modules/firebase-admin/lib/remote-config/package.json","./node_modules/firebase-admin/lib/security-rules/package.json","./node_modules/firebase-admin/lib/storage/package.json","./node_modules/firebase-admin/lib/utils/package.json","./node_modules/firebase-admin/node_modules/@firebase/database-types/package.json","./node_modules/firebase-admin/node_modules/@google-cloud/firestore/package.json","./node_modules/firebase-admin/node_modules/@google-cloud/storage/package.json","./node_modules/firebase-admin/node_modules/http/package.json","./node_modules/firebase-functions/lib/common/package.json","./node_modules/firebase-functions/lib/common/providers/package.json","./node_modules/firebase-functions/lib/logger/package.json","./node_modules/firebase-functions/lib/package.json","./node_modules/firebase-functions/lib/params/package.json","./node_modules/firebase-functions/lib/runtime/package.json","./node_modules/firebase-functions/lib/v1/package.json","./node_modules/firebase-functions/lib/v1/providers/package.json","./node_modules/firebase-functions/lib/v2/package.json","./node_modules/firebase-functions/lib/v2/providers/alerts/package.json","./node_modules/firebase-functions/lib/v2/providers/dataconnect/package.json","./node_modules/firebase-functions/lib/v2/providers/package.json","./node_modules/firebase-functions/params/package.json","./node_modules/firebase-functions/v1/package.json","./node_modules/firebase-functions/v2/package.json","./node_modules/firebase-functions/v2/pubsub/package.json","./node_modules/form-data/node_modules/http/package.json","./node_modules/form-data/node_modules/stream/package.json","./node_modules/fs/package.json","./node_modules/fs/promises/package.json","./node_modules/gaxios/build/package.json","./node_modules/gaxios/build/src/package.json","./node_modules/gcp-metadata/build/package.json","./node_modules/gcp-metadata/build/src/package.json","./node_modules/google-auth-library/build/package.json","./node_modules/google-auth-library/build/src/auth/googleauth/package.json","./node_modules/google-auth-library/build/src/auth/package.json","./node_modules/google-auth-library/build/src/crypto/package.json","./node_modules/google-auth-library/build/src/package.json","./node_modules/google-gax/build/package.json","./node_modules/google-gax/build/protos/package.json","./node_modules/google-gax/build/src/bundlingCalls/package.json","./node_modules/google-gax/build/src/longRunningCalls/package.json","./node_modules/google-gax/build/src/normalCalls/package.json","./node_modules/google-gax/build/src/package.json","./node_modules/google-gax/build/src/paginationCalls/package.json","./node_modules/google-gax/build/src/streamingCalls/package.json","./node_modules/graphql/package.json","./node_modules/gtoken/build/package.json","./node_modules/gtoken/build/src/package.json","./node_modules/http/package.json","./node_modules/http2/package.json","./node_modules/https/package.json","./node_modules/inspector/package.json","./node_modules/inspector/promises/package.json","./node_modules/lodash/package.json","./node_modules/module/package.json","./node_modules/net/package.json","./node_modules/os/package.json","./node_modules/path/package.json","./node_modules/path/posix/package.json","./node_modules/path/win32/package.json","./node_modules/perf_hooks/package.json","./node_modules/process/package.json","./node_modules/proto3-json-serializer/build/package.json","./node_modules/proto3-json-serializer/build/src/package.json","./node_modules/protobufjs/ext/descriptor/package.json","./node_modules/protobufjs/ext/package.json","./node_modules/protobufjs/minimal/package.json","./node_modules/punycode/package.json","./node_modules/querystring/package.json","./node_modules/readline/package.json","./node_modules/readline/promises/package.json","./node_modules/repl/package.json","./node_modules/stream/consumers/package.json","./node_modules/stream/iter/package.json","./node_modules/stream/package.json","./node_modules/stream/promises/package.json","./node_modules/stream/web/package.json","./node_modules/teeny-request/build/package.json","./node_modules/teeny-request/build/src/package.json","./node_modules/teeny-request/node_modules/http/package.json","./node_modules/teeny-request/node_modules/https/package.json","./node_modules/teeny-request/node_modules/stream/package.json","./node_modules/timers/package.json","./node_modules/timers/promises/package.json","./node_modules/tls/package.json","./node_modules/trace_events/package.json","./node_modules/tty/package.json","./node_modules/url/package.json","./node_modules/util/package.json","./node_modules/util/types/package.json","./node_modules/v8/package.json","./node_modules/vm/package.json","./node_modules/wasi/package.json","./node_modules/worker_threads/package.json","./node_modules/zlib/package.json"]}
1
+ {"version":"7.0.2","root":["./src/config.ts","./src/events.ts","./src/export-config.ts","./src/handlers.ts","./src/helpers.ts","./src/identity-shim.d.ts","./src/index.ts","./src/lib.ts","./src/logs.ts","./src/recursiveDelete.ts","./src/runBatchPubSubDeletions.ts","./src/runCustomSearchFunction.ts","./src/search.ts"],"packageJsons":["./node_modules/@firebase/app-types/package.json","./node_modules/@firebase/component/package.json","./node_modules/@firebase/database-types/package.json","./node_modules/@firebase/logger/package.json","./node_modules/@firebase/util/package.json","./node_modules/@google-cloud/firestore/package.json","./node_modules/@google-cloud/precise-date/package.json","./node_modules/@google-cloud/pubsub/package.json","./node_modules/@google-cloud/storage/build/cjs/package.json","./node_modules/@google-cloud/storage/package.json","./node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader/package.json","./node_modules/@grpc/grpc-js/package.json","./node_modules/@grpc/proto-loader/package.json","./node_modules/@js-sdsl/ordered-map/package.json","./node_modules/@opentelemetry/api/package.json","./node_modules/@types/body-parser/package.json","./node_modules/@types/connect/package.json","./node_modules/@types/cors/package.json","./node_modules/@types/express-serve-static-core/package.json","./node_modules/@types/express/package.json","./node_modules/@types/http-errors/package.json","./node_modules/@types/lodash.chunk/package.json","./node_modules/@types/lodash/package.json","./node_modules/@types/node-fetch/package.json","./node_modules/@types/node/package.json","./node_modules/@types/qs/package.json","./node_modules/@types/range-parser/package.json","./node_modules/@types/send/package.json","./node_modules/@types/serve-static/package.json","./node_modules/abort-controller/package.json","./node_modules/body-parser/package.json","./node_modules/cors/package.json","./node_modules/event-target-shim/package.json","./node_modules/express/package.json","./node_modules/firebase-admin/package.json","./node_modules/firebase-functions/package.json","./node_modules/form-data/package.json","./node_modules/gaxios/package.json","./node_modules/gcp-metadata/package.json","./node_modules/google-auth-library/package.json","./node_modules/google-gax/package.json","./node_modules/gtoken/package.json","./node_modules/http-errors/package.json","./node_modules/lodash.chunk/package.json","./node_modules/long/package.json","./node_modules/long/umd/package.json","./node_modules/node-fetch/package.json","./node_modules/p-defer/package.json","./node_modules/proto3-json-serializer/package.json","./node_modules/protobufjs/package.json","./node_modules/qs/package.json","./node_modules/range-parser/package.json","./node_modules/send/package.json","./node_modules/serve-static/package.json","./node_modules/string_decoder/package.json","./node_modules/teeny-request/package.json","./node_modules/undici-types/package.json","./package.json"],"missingPackageJsons":["./node_modules/@apollo/server/package.json","./node_modules/@as-integrations/express4/package.json","./node_modules/@firebase/logger/dist/package.json","./node_modules/@firebase/logger/dist/src/package.json","./node_modules/@firebase/util/dist/package.json","./node_modules/@google-cloud/firestore/types/package.json","./node_modules/@google-cloud/firestore/types/protos/package.json","./node_modules/@google-cloud/firestore/types/v1/package.json","./node_modules/@google-cloud/firestore/types/v1beta1/package.json","./node_modules/@google-cloud/precise-date/build/package.json","./node_modules/@google-cloud/precise-date/build/src/package.json","./node_modules/@google-cloud/pubsub/build/package.json","./node_modules/@google-cloud/pubsub/build/protos/package.json","./node_modules/@google-cloud/pubsub/build/src/package.json","./node_modules/@google-cloud/pubsub/build/src/publisher/package.json","./node_modules/@google-cloud/pubsub/build/src/v1/package.json","./node_modules/@google-cloud/storage/build/cjs/src/nodejs-common/package.json","./node_modules/@google-cloud/storage/build/cjs/src/package.json","./node_modules/@grpc/grpc-js/build/package.json","./node_modules/@grpc/grpc-js/build/src/client/package.json","./node_modules/@grpc/grpc-js/build/src/generated/google/package.json","./node_modules/@grpc/grpc-js/build/src/generated/google/protobuf/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/channelz/v1/package.json","./node_modules/@grpc/grpc-js/build/src/generated/grpc/package.json","./node_modules/@grpc/grpc-js/build/src/generated/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/orca/v3/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/data/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/orca/v3/package.json","./node_modules/@grpc/grpc-js/build/src/generated/xds/service/package.json","./node_modules/@grpc/grpc-js/build/src/package.json","./node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader/build/package.json","./node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader/build/src/package.json","./node_modules/@grpc/grpc-js/node_modules/@js-sdsl/ordered-map/package.json","./node_modules/@grpc/grpc-js/node_modules/events/package.json","./node_modules/@grpc/grpc-js/node_modules/http2/package.json","./node_modules/@grpc/grpc-js/node_modules/long/package.json","./node_modules/@grpc/grpc-js/node_modules/net/package.json","./node_modules/@grpc/grpc-js/node_modules/protobufjs/ext/descriptor/package.json","./node_modules/@grpc/grpc-js/node_modules/protobufjs/package.json","./node_modules/@grpc/grpc-js/node_modules/stream/package.json","./node_modules/@grpc/grpc-js/node_modules/tls/package.json","./node_modules/@grpc/proto-loader/build/package.json","./node_modules/@grpc/proto-loader/build/src/package.json","./node_modules/@js-sdsl/ordered-map/dist/esm/package.json","./node_modules/@js-sdsl/ordered-map/dist/package.json","./node_modules/@opentelemetry/api/build/package.json","./node_modules/@opentelemetry/api/build/src/api/package.json","./node_modules/@opentelemetry/api/build/src/baggage/internal/package.json","./node_modules/@opentelemetry/api/build/src/baggage/package.json","./node_modules/@opentelemetry/api/build/src/common/package.json","./node_modules/@opentelemetry/api/build/src/context/package.json","./node_modules/@opentelemetry/api/build/src/diag/package.json","./node_modules/@opentelemetry/api/build/src/metrics/package.json","./node_modules/@opentelemetry/api/build/src/package.json","./node_modules/@opentelemetry/api/build/src/propagation/package.json","./node_modules/@opentelemetry/api/build/src/trace/internal/package.json","./node_modules/@opentelemetry/api/build/src/trace/package.json","./node_modules/@types/assert/package.json","./node_modules/@types/assert/strict/package.json","./node_modules/@types/async_hooks/package.json","./node_modules/@types/buffer/package.json","./node_modules/@types/child_process/package.json","./node_modules/@types/cluster/package.json","./node_modules/@types/console/package.json","./node_modules/@types/constants/package.json","./node_modules/@types/crypto/package.json","./node_modules/@types/dgram/package.json","./node_modules/@types/diagnostics_channel/package.json","./node_modules/@types/dns/package.json","./node_modules/@types/dns/promises/package.json","./node_modules/@types/domain/package.json","./node_modules/@types/events/package.json","./node_modules/@types/fs/package.json","./node_modules/@types/fs/promises/package.json","./node_modules/@types/http/package.json","./node_modules/@types/http2/package.json","./node_modules/@types/https/package.json","./node_modules/@types/inspector/package.json","./node_modules/@types/inspector/promises/package.json","./node_modules/@types/lodash/common/package.json","./node_modules/@types/module/package.json","./node_modules/@types/net/package.json","./node_modules/@types/node/assert/package.json","./node_modules/@types/node/dns/package.json","./node_modules/@types/node/fs/package.json","./node_modules/@types/node/inspector/package.json","./node_modules/@types/node/path/package.json","./node_modules/@types/node/readline/package.json","./node_modules/@types/node/stream/package.json","./node_modules/@types/node/test/package.json","./node_modules/@types/node/timers/package.json","./node_modules/@types/node/util/package.json","./node_modules/@types/node/web-globals/package.json","./node_modules/@types/node/zlib/package.json","./node_modules/@types/os/package.json","./node_modules/@types/path/package.json","./node_modules/@types/path/posix/package.json","./node_modules/@types/path/win32/package.json","./node_modules/@types/perf_hooks/package.json","./node_modules/@types/process/package.json","./node_modules/@types/punycode/package.json","./node_modules/@types/querystring/package.json","./node_modules/@types/readline/package.json","./node_modules/@types/readline/promises/package.json","./node_modules/@types/repl/package.json","./node_modules/@types/stream/consumers/package.json","./node_modules/@types/stream/iter/package.json","./node_modules/@types/stream/package.json","./node_modules/@types/stream/promises/package.json","./node_modules/@types/stream/web/package.json","./node_modules/@types/string_decoder/package.json","./node_modules/@types/timers/package.json","./node_modules/@types/timers/promises/package.json","./node_modules/@types/tls/package.json","./node_modules/@types/trace_events/package.json","./node_modules/@types/tty/package.json","./node_modules/@types/url/package.json","./node_modules/@types/util/package.json","./node_modules/@types/util/types/package.json","./node_modules/@types/v8/package.json","./node_modules/@types/vm/package.json","./node_modules/@types/wasi/package.json","./node_modules/@types/worker_threads/package.json","./node_modules/@types/zlib/package.json","./node_modules/abort-controller/dist/package.json","./node_modules/assert/package.json","./node_modules/assert/strict/package.json","./node_modules/async_hooks/package.json","./node_modules/buffer/package.json","./node_modules/child_process/package.json","./node_modules/cluster/package.json","./node_modules/connect/package.json","./node_modules/console/package.json","./node_modules/constants/package.json","./node_modules/crypto/package.json","./node_modules/dgram/package.json","./node_modules/diagnostics_channel/package.json","./node_modules/dns/package.json","./node_modules/dns/promises/package.json","./node_modules/domain/package.json","./node_modules/events/package.json","./node_modules/express-serve-static-core/package.json","./node_modules/firebase-admin/app-check/package.json","./node_modules/firebase-admin/app/package.json","./node_modules/firebase-admin/auth/package.json","./node_modules/firebase-admin/database/package.json","./node_modules/firebase-admin/eventarc/package.json","./node_modules/firebase-admin/firestore/package.json","./node_modules/firebase-admin/lib/app-check/package.json","./node_modules/firebase-admin/lib/app/package.json","./node_modules/firebase-admin/lib/auth/package.json","./node_modules/firebase-admin/lib/credential/package.json","./node_modules/firebase-admin/lib/database/package.json","./node_modules/firebase-admin/lib/eventarc/package.json","./node_modules/firebase-admin/lib/firestore/package.json","./node_modules/firebase-admin/lib/installations/package.json","./node_modules/firebase-admin/lib/instance-id/package.json","./node_modules/firebase-admin/lib/machine-learning/package.json","./node_modules/firebase-admin/lib/messaging/package.json","./node_modules/firebase-admin/lib/package.json","./node_modules/firebase-admin/lib/project-management/package.json","./node_modules/firebase-admin/lib/remote-config/package.json","./node_modules/firebase-admin/lib/security-rules/package.json","./node_modules/firebase-admin/lib/storage/package.json","./node_modules/firebase-admin/lib/utils/package.json","./node_modules/firebase-admin/node_modules/@firebase/database-types/package.json","./node_modules/firebase-admin/node_modules/@google-cloud/firestore/package.json","./node_modules/firebase-admin/node_modules/@google-cloud/storage/package.json","./node_modules/firebase-admin/node_modules/http/package.json","./node_modules/firebase-functions/lib/common/package.json","./node_modules/firebase-functions/lib/common/providers/package.json","./node_modules/firebase-functions/lib/logger/package.json","./node_modules/firebase-functions/lib/package.json","./node_modules/firebase-functions/lib/params/package.json","./node_modules/firebase-functions/lib/runtime/package.json","./node_modules/firebase-functions/lib/v1/package.json","./node_modules/firebase-functions/lib/v1/providers/package.json","./node_modules/firebase-functions/lib/v2/package.json","./node_modules/firebase-functions/lib/v2/providers/alerts/package.json","./node_modules/firebase-functions/lib/v2/providers/dataconnect/package.json","./node_modules/firebase-functions/lib/v2/providers/package.json","./node_modules/firebase-functions/params/package.json","./node_modules/firebase-functions/v1/auth/package.json","./node_modules/firebase-functions/v2/identity/package.json","./node_modules/firebase-functions/v2/package.json","./node_modules/firebase-functions/v2/pubsub/package.json","./node_modules/form-data/node_modules/http/package.json","./node_modules/form-data/node_modules/stream/package.json","./node_modules/fs/package.json","./node_modules/fs/promises/package.json","./node_modules/gaxios/build/package.json","./node_modules/gaxios/build/src/package.json","./node_modules/gcp-metadata/build/package.json","./node_modules/gcp-metadata/build/src/package.json","./node_modules/google-auth-library/build/package.json","./node_modules/google-auth-library/build/src/auth/googleauth/package.json","./node_modules/google-auth-library/build/src/auth/package.json","./node_modules/google-auth-library/build/src/crypto/package.json","./node_modules/google-auth-library/build/src/package.json","./node_modules/google-gax/build/package.json","./node_modules/google-gax/build/protos/package.json","./node_modules/google-gax/build/src/bundlingCalls/package.json","./node_modules/google-gax/build/src/longRunningCalls/package.json","./node_modules/google-gax/build/src/normalCalls/package.json","./node_modules/google-gax/build/src/package.json","./node_modules/google-gax/build/src/paginationCalls/package.json","./node_modules/google-gax/build/src/streamingCalls/package.json","./node_modules/graphql/package.json","./node_modules/gtoken/build/package.json","./node_modules/gtoken/build/src/package.json","./node_modules/http/package.json","./node_modules/http2/package.json","./node_modules/https/package.json","./node_modules/inspector/package.json","./node_modules/inspector/promises/package.json","./node_modules/lodash/package.json","./node_modules/module/package.json","./node_modules/net/package.json","./node_modules/os/package.json","./node_modules/path/package.json","./node_modules/path/posix/package.json","./node_modules/path/win32/package.json","./node_modules/perf_hooks/package.json","./node_modules/process/package.json","./node_modules/proto3-json-serializer/build/package.json","./node_modules/proto3-json-serializer/build/src/package.json","./node_modules/protobufjs/ext/descriptor/package.json","./node_modules/protobufjs/ext/package.json","./node_modules/protobufjs/minimal/package.json","./node_modules/punycode/package.json","./node_modules/querystring/package.json","./node_modules/readline/package.json","./node_modules/readline/promises/package.json","./node_modules/repl/package.json","./node_modules/stream/consumers/package.json","./node_modules/stream/iter/package.json","./node_modules/stream/package.json","./node_modules/stream/promises/package.json","./node_modules/stream/web/package.json","./node_modules/teeny-request/build/package.json","./node_modules/teeny-request/build/src/package.json","./node_modules/teeny-request/node_modules/http/package.json","./node_modules/teeny-request/node_modules/https/package.json","./node_modules/teeny-request/node_modules/stream/package.json","./node_modules/timers/package.json","./node_modules/timers/promises/package.json","./node_modules/tls/package.json","./node_modules/trace_events/package.json","./node_modules/tty/package.json","./node_modules/url/package.json","./node_modules/util/package.json","./node_modules/util/types/package.json","./node_modules/v8/package.json","./node_modules/vm/package.json","./node_modules/wasi/package.json","./node_modules/worker_threads/package.json","./node_modules/zlib/package.json"]}