@mxpicture/gcp-functions-backend 1.3.88 → 2.1.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.
@@ -1 +1 @@
1
- {"version":3,"file":"FirebaseTaskSetup.d.ts","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskSetup.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"FirebaseTaskSetup.d.ts","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskSetup.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC"}
@@ -1,4 +1,5 @@
1
1
  // not usable / untested!!!!!!!
2
+ export {};
2
3
  // import { CloudTasksClient } from "@google-cloud/tasks";
3
4
  // import {
4
5
  // GeneratorEnv,
@@ -6,7 +7,6 @@
6
7
  // TaskParams,
7
8
  // } from "../common/types.common.js";
8
9
  // import { google } from "googleapis";
9
- export {};
10
10
  // export class FirebaseTaskSetup {
11
11
  // protected config: TaskConfig;
12
12
  // public constructor(
@@ -1 +1 @@
1
- {"version":3,"file":"FirebaseTaskSetup.js","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskSetup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FirebaseTaskSetup.js","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskSetup.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"firebase.express.d.ts","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,IAAI,CAAC,EAAE;gBACL,GAAG,CAAC,EAAE,MAAM,CAAC;gBACb,OAAO,CAAC,EAAE,OAAO,CAAC;gBAClB,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,KAAK,CAAC,EAAE,cAAc,CAAC;aACxB,CAAC;SACH;KACF;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAgB/B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,GAAG,IAAI,EACxB,SAAS,MAAM,EAAE,GAAG,IAAI,KACvB,kBAyDF,CAAC"}
1
+ {"version":3,"file":"firebase.express.d.ts","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"AACA,OAAO,EAAW,KAAK,cAAc,EAAE,MAAM,qBAAqB,CAAC;AACnE,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE,OAAO,CAAC,MAAM,CAAC;IAEb,UAAU,OAAO,CAAC;QAChB,UAAU,OAAO;YACf,IAAI,CAAC,EAAE;gBACL,GAAG,CAAC,EAAE,MAAM,CAAC;gBACb,OAAO,CAAC,EAAE,OAAO,CAAC;gBAClB,KAAK,CAAC,EAAE,MAAM,CAAC;gBACf,KAAK,CAAC,EAAE,cAAc,CAAC;aACxB,CAAC;SACH;KACF;CACF;AAED;;;;;;;;;;;;;GAaG;AACH,eAAO,MAAM,iBAAiB,EAAE,kBAgB/B,CAAC;AAEF;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,WAAW,MAAM,GAAG,IAAI,EACxB,SAAS,MAAM,EAAE,GAAG,IAAI,KACvB,kBA0DF,CAAC"}
@@ -84,12 +84,12 @@ export const buildCheckServiceAuth = (audience, routes) => {
84
84
  return res.status(403).send("Caller service account not allowed");
85
85
  }
86
86
  req.auth = { service: true, email: payload.email };
87
- next();
87
+ return next();
88
88
  }
89
89
  catch (e) {
90
90
  console.error("checkServiceAuth Unauthorized", e);
91
- // eslint-disable-next-line @typescript-eslint/no-explicit-any
92
- res.status(401).send(`Unauthorized: ${e?.message ?? String(e)}`);
91
+ const message = e instanceof Error ? e.message : typeof e === "string" ? e : String(e);
92
+ return res.status(401).send(`Unauthorized: ${message}`);
93
93
  }
94
94
  };
95
95
  };
@@ -1 +1 @@
1
- {"version":3,"file":"firebase.express.js","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"firebase.express.js","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,39 @@
1
+ import type { CompositeFunctionRequest, DocumentData, DocumentKeyAdmin, FunctionResponse } from "@mxpicture/gcp-functions-common/types";
2
+ import type { CallableFunction as ZCallableFunction, HttpsFunction } from "firebase-functions/v2/https";
3
+ import type { ExpressAuthHandler } from "../types/types.express.js";
4
+ import type { BackendBaseApi } from "../api/BackendBaseApi.js";
5
+ import type { IBackendFunction } from "./IBackendFunction.js";
6
+ /**
7
+ * Composite backend function that hosts multiple per-topic {@link IBackendFunction}s
8
+ * behind a single deployed Cloud Function.
9
+ *
10
+ * @remarks
11
+ * Adds one dispatch level (topic) above the per-topic route dispatch:
12
+ * - Callable envelope: `{ topic, route, data }`.
13
+ * - HTTPS path: `POST /{topic}/{route}` with body `data`.
14
+ *
15
+ * Each registered per-topic function keeps its own routes, auth, and error handling.
16
+ * The composite is purely a topic-level forwarder.
17
+ */
18
+ export declare class CompositeBackendFunction {
19
+ readonly name: string;
20
+ readonly projectId: string;
21
+ readonly region: string;
22
+ readonly serviceAccount: string;
23
+ protected readonly funcs: Map<string, IBackendFunction<any, any, any, any>>;
24
+ constructor(name: string, projectId: string, region: string, serviceAccount: string);
25
+ get url(): string;
26
+ /**
27
+ * Register a per-topic function under the given topic key.
28
+ *
29
+ * @remarks
30
+ * Sets the per-topic API's `functionUrl` to `${this.url}/${topic}` so per-topic code
31
+ * (e.g., Cloud Tasks integration) can derive correct callback URLs.
32
+ */
33
+ useTopic<STORE_DOC extends DocumentKeyAdmin, DTO extends STORE_DOC, SIDE_EFFECTS extends DocumentData, API extends BackendBaseApi<DTO, SIDE_EFFECTS>>(topic: string, func: IBackendFunction<STORE_DOC, DTO, SIDE_EFFECTS, API>): this;
34
+ /** Flattened `topic/route` strings used by `buildCheckServiceAuth` audience derivation. */
35
+ get routes(): string[];
36
+ buildCallableFunction(): ZCallableFunction<CompositeFunctionRequest<any>, Promise<FunctionResponse<any>>>;
37
+ buildHttpsFunction(auth?: ExpressAuthHandler | null): HttpsFunction;
38
+ }
39
+ //# sourceMappingURL=CompositeBackendFunction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompositeBackendFunction.d.ts","sourceRoot":"","sources":["../../src/function/CompositeBackendFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,wBAAwB,EACxB,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,gBAAgB,IAAI,iBAAiB,EACrC,aAAa,EACd,MAAM,6BAA6B,CAAC;AAGrC,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAE9D;;;;;;;;;;;GAWG;AACH,qBAAa,wBAAwB;aAKjB,IAAI,EAAE,MAAM;aACZ,SAAS,EAAE,MAAM;aACjB,MAAM,EAAE,MAAM;aACd,cAAc,EAAE,MAAM;IANxC,SAAS,CAAC,QAAQ,CAAC,KAAK,oDAA2D;gBAGjE,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM;IAGxC,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED;;;;;;OAMG;IACI,QAAQ,CACb,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EACrB,YAAY,SAAS,YAAY,EACjC,GAAG,SAAS,cAAc,CAAC,GAAG,EAAE,YAAY,CAAC,EAC7C,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,gBAAgB,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,GAAG,CAAC,GAAG,IAAI;IAMjF,2FAA2F;IAC3F,IAAW,MAAM,IAAI,MAAM,EAAE,CAK5B;IAEM,qBAAqB,IAAI,iBAAiB,CAE/C,wBAAwB,CAAC,GAAG,CAAC,EAE7B,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC/B;IAaM,kBAAkB,CAAC,IAAI,CAAC,EAAE,kBAAkB,GAAG,IAAI,GAAG,aAAa;CAqD3E"}
@@ -0,0 +1,103 @@
1
+ import { HttpsError, onCall, onRequest } from "firebase-functions/v2/https";
2
+ import express from "express";
3
+ import { buildCheckServiceAuth } from "../firebase/firebase.express.js";
4
+ /**
5
+ * Composite backend function that hosts multiple per-topic {@link IBackendFunction}s
6
+ * behind a single deployed Cloud Function.
7
+ *
8
+ * @remarks
9
+ * Adds one dispatch level (topic) above the per-topic route dispatch:
10
+ * - Callable envelope: `{ topic, route, data }`.
11
+ * - HTTPS path: `POST /{topic}/{route}` with body `data`.
12
+ *
13
+ * Each registered per-topic function keeps its own routes, auth, and error handling.
14
+ * The composite is purely a topic-level forwarder.
15
+ */
16
+ export class CompositeBackendFunction {
17
+ name;
18
+ projectId;
19
+ region;
20
+ serviceAccount;
21
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
22
+ funcs = new Map();
23
+ constructor(name, projectId, region, serviceAccount) {
24
+ this.name = name;
25
+ this.projectId = projectId;
26
+ this.region = region;
27
+ this.serviceAccount = serviceAccount;
28
+ }
29
+ get url() {
30
+ return `https://${this.region}-${this.projectId}.cloudfunctions.net/${this.name}`;
31
+ }
32
+ /**
33
+ * Register a per-topic function under the given topic key.
34
+ *
35
+ * @remarks
36
+ * Sets the per-topic API's `functionUrl` to `${this.url}/${topic}` so per-topic code
37
+ * (e.g., Cloud Tasks integration) can derive correct callback URLs.
38
+ */
39
+ useTopic(topic, func) {
40
+ this.funcs.set(topic, func);
41
+ func.api.useFunctionUrl(`${this.url}/${topic}`);
42
+ return this;
43
+ }
44
+ /** Flattened `topic/route` strings used by `buildCheckServiceAuth` audience derivation. */
45
+ get routes() {
46
+ const out = [];
47
+ for (const [topic, func] of this.funcs)
48
+ for (const route of func.routes)
49
+ out.push(`${topic}/${route}`);
50
+ return out;
51
+ }
52
+ buildCallableFunction() {
53
+ return onCall({ region: this.region, serviceAccount: this.serviceAccount }, async (req) => {
54
+ const { topic, route, data } = req.data;
55
+ const func = this.funcs.get(topic);
56
+ if (!func)
57
+ throw new HttpsError("invalid-argument", `Topic ${topic} not available`);
58
+ return func.ingress({ route, data }, !!req.auth);
59
+ });
60
+ }
61
+ buildHttpsFunction(auth) {
62
+ const app = express();
63
+ app.use(express.json());
64
+ if (auth === undefined)
65
+ auth = buildCheckServiceAuth(this.url, this.routes);
66
+ const isEmulator = process.env.FUNCTIONS_EMULATOR === "true";
67
+ if (!isEmulator && auth)
68
+ app.use(auth);
69
+ app.use(async (req, res, next) => {
70
+ if (req.method !== "POST")
71
+ return next();
72
+ try {
73
+ // Path: /{topic}/{route}
74
+ const segments = req.path.split("/").filter((s) => s.length > 0);
75
+ if (segments.length !== 2)
76
+ throw new HttpsError("invalid-argument", `Invalid path "${req.path}"; expected /{topic}/{route}`);
77
+ const [topic, route] = segments;
78
+ const func = this.funcs.get(topic);
79
+ if (!func)
80
+ throw new HttpsError("invalid-argument", `Topic ${topic} not available`);
81
+ const result = await func.ingress({ data: req.body, route }, !!req.auth || isEmulator);
82
+ res.json(result.data);
83
+ }
84
+ catch (error) {
85
+ if (error instanceof HttpsError) {
86
+ console.error("CompositeBackendFunction failed (http)", error);
87
+ res
88
+ .status(error.httpErrorCode.status)
89
+ .json({ error: error.toJSON() });
90
+ }
91
+ else {
92
+ const message = error instanceof Error ? error.message : String(error);
93
+ console.error("CompositeBackendFunction failed (other)", error);
94
+ res.status(500).json({
95
+ error: { code: "", status: "INTERNAL", message },
96
+ });
97
+ }
98
+ }
99
+ });
100
+ return onRequest({ region: this.region, serviceAccount: this.serviceAccount }, app);
101
+ }
102
+ }
103
+ //# sourceMappingURL=CompositeBackendFunction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CompositeBackendFunction.js","sourceRoot":"","sources":["../../src/function/CompositeBackendFunction.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,OAAO,MAAM,SAAS,CAAC;AAG9B,OAAO,EAAE,qBAAqB,EAAE,MAAM,iCAAiC,CAAC;AAGxE;;;;;;;;;;;GAWG;AACH,MAAM,OAAO,wBAAwB;IAKjB;IACA;IACA;IACA;IAPlB,8DAA8D;IAC3C,KAAK,GAAG,IAAI,GAAG,EAAgD,CAAC;IAEnF,YACkB,IAAY,EACZ,SAAiB,EACjB,MAAc,EACd,cAAsB;QAHtB,SAAI,GAAJ,IAAI,CAAQ;QACZ,cAAS,GAAT,SAAS,CAAQ;QACjB,WAAM,GAAN,MAAM,CAAQ;QACd,mBAAc,GAAd,cAAc,CAAQ;IACrC,CAAC;IAEJ,IAAW,GAAG;QACZ,OAAO,WAAW,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC,SAAS,uBAAuB,IAAI,CAAC,IAAI,EAAE,CAAC;IACpF,CAAC;IAED;;;;;;OAMG;IACI,QAAQ,CAKb,KAAa,EAAE,IAAyD;QACxE,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC;QAC5B,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,KAAK,EAAE,CAAC,CAAC;QAChD,OAAO,IAAI,CAAC;IACd,CAAC;IAED,2FAA2F;IAC3F,IAAW,MAAM;QACf,MAAM,GAAG,GAAa,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;YACpC,KAAK,MAAM,KAAK,IAAI,IAAI,CAAC,MAAM;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC,CAAC;QACjE,OAAO,GAAG,CAAC;IACb,CAAC;IAEM,qBAAqB;QAM1B,OAAO,MAAM,CACX,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,EAC5D,KAAK,EAAE,GAAG,EAAE,EAAE;YACZ,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,GAAG,CAAC,IAAI,CAAC;YACxC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YACnC,IAAI,CAAC,IAAI;gBACP,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,SAAS,KAAK,gBAAgB,CAAC,CAAC;YAC3E,OAAO,IAAI,CAAC,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACnD,CAAC,CACF,CAAC;IACJ,CAAC;IAEM,kBAAkB,CAAC,IAAgC;QACxD,MAAM,GAAG,GAAG,OAAO,EAAE,CAAC;QACtB,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;QAExB,IAAI,IAAI,KAAK,SAAS;YAAE,IAAI,GAAG,qBAAqB,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAE5E,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,KAAK,MAAM,CAAC;QAC7D,IAAI,CAAC,UAAU,IAAI,IAAI;YAAE,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAEvC,GAAG,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;YAC/B,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;gBAAE,OAAO,IAAI,EAAE,CAAC;YAEzC,IAAI,CAAC;gBACH,yBAAyB;gBACzB,MAAM,QAAQ,GAAG,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;gBACjE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;oBACvB,MAAM,IAAI,UAAU,CAClB,kBAAkB,EAClB,iBAAiB,GAAG,CAAC,IAAI,8BAA8B,CACxD,CAAC;gBACJ,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,GAAG,QAAQ,CAAC;gBAEhC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;gBACnC,IAAI,CAAC,IAAI;oBACP,MAAM,IAAI,UAAU,CAAC,kBAAkB,EAAE,SAAS,KAAK,gBAAgB,CAAC,CAAC;gBAE3E,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,OAAO,CAC/B,EAAE,IAAI,EAAE,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE,EACzB,CAAC,CAAC,GAAG,CAAC,IAAI,IAAI,UAAU,CACzB,CAAC;gBACF,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC;YACxB,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,KAAK,YAAY,UAAU,EAAE,CAAC;oBAChC,OAAO,CAAC,KAAK,CAAC,wCAAwC,EAAE,KAAK,CAAC,CAAC;oBAC/D,GAAG;yBACA,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,CAAC;yBAClC,IAAI,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;gBACrC,CAAC;qBAAM,CAAC;oBACN,MAAM,OAAO,GACX,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;oBACzD,OAAO,CAAC,KAAK,CAAC,yCAAyC,EAAE,KAAK,CAAC,CAAC;oBAChE,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;wBACnB,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE;qBACjD,CAAC,CAAC;gBACL,CAAC;YACH,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,OAAO,SAAS,CACd,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,cAAc,EAAE,IAAI,CAAC,cAAc,EAAE,EAC5D,GAAG,CACJ,CAAC;IACJ,CAAC;CACF"}
@@ -1,2 +1,3 @@
1
+ export * from "./CompositeBackendFunction.js";
1
2
  export * from "./IBackendFunction.js";
2
3
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/function/index.ts"],"names":[],"mappings":"AACA,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/function/index.ts"],"names":[],"mappings":"AACA,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC"}
@@ -1,3 +1,4 @@
1
1
  // This file is auto-generated by build-cli. Do not edit manually.
2
+ export * from "./CompositeBackendFunction.js";
2
3
  export * from "./IBackendFunction.js";
3
4
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/function/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,uBAAuB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/function/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,+BAA+B,CAAC;AAC9C,cAAc,uBAAuB,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mxpicture/gcp-functions-backend",
3
- "version": "1.3.88",
3
+ "version": "2.1.2",
4
4
  "description": "Utils for google cloud functions, publishing both CommonJS and ESM builds",
5
5
  "type": "module",
6
6
  "author": "MXPicture",
@@ -54,7 +54,7 @@
54
54
  },
55
55
  "dependencies": {
56
56
  "@google-cloud/tasks": "^6.2.1",
57
- "@mxpicture/gcp-functions-common": "^1.3.88",
57
+ "@mxpicture/gcp-functions-common": "^2.1.2",
58
58
  "express": "^5.2.1",
59
59
  "firebase-admin": "^13.7.0",
60
60
  "firebase-functions": "^7.0.6",