@mxpicture/gcp-functions-backend 1.1.91 → 1.2.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/dist/api/BackendApi.d.ts +1 -1
- package/dist/api/BackendApi.d.ts.map +1 -1
- package/dist/api/IBackendApi.d.ts +1 -1
- package/dist/api/IBackendApi.d.ts.map +1 -1
- package/dist/firebase/FirebaseTaskHandler.d.ts +72 -1
- package/dist/firebase/FirebaseTaskHandler.d.ts.map +1 -1
- package/dist/firebase/FirebaseTaskHandler.js +71 -0
- package/dist/firebase/FirebaseTaskHandler.js.map +1 -1
- package/dist/firebase/firebase.express.d.ts +14 -1
- package/dist/firebase/firebase.express.d.ts.map +1 -1
- package/dist/firebase/firebase.express.js +13 -0
- package/dist/firebase/firebase.express.js.map +1 -1
- package/dist/firebase/firebase.tasks.d.ts +14 -1
- package/dist/firebase/firebase.tasks.d.ts.map +1 -1
- package/dist/firebase/firebase.tasks.js +13 -0
- package/dist/firebase/firebase.tasks.js.map +1 -1
- package/dist/function/IBackendFunction.d.ts +3 -3
- package/dist/function/IBackendFunction.d.ts.map +1 -1
- package/dist/function/IBackendFunction.js +1 -1
- package/dist/function/IBackendFunction.js.map +1 -1
- package/dist/store/Store.d.ts +1 -1
- package/dist/store/Store.d.ts.map +1 -1
- package/dist/types/types.express.d.ts +1 -0
- package/dist/types/types.express.d.ts.map +1 -1
- package/dist/types/types.tasks.d.ts +15 -0
- package/dist/types/types.tasks.d.ts.map +1 -1
- package/package.json +2 -2
package/dist/api/BackendApi.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { ApiFromRoutes, CrudRoutes, DocumentKey, ApiFilter, DocumentKeyAdmin, CreateInput, UpdateInput, DocumentData } from "@mxpicture/gcp-functions-common/types";
|
|
2
|
-
import { Store } from "../store/Store.js";
|
|
2
|
+
import type { Store } from "../store/Store.js";
|
|
3
3
|
import type { Validation } from "../validation/Validation.js";
|
|
4
4
|
import { IBackendApi } from "./IBackendApi.js";
|
|
5
5
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"BackendApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"BackendApi.d.ts","sourceRoot":"","sources":["../../src/api/BackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,aAAa,EACb,UAAU,EACV,WAAW,EACX,SAAS,EACT,gBAAgB,EAChB,WAAW,EACX,WAAW,EACX,YAAY,EACb,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAM/C;;;;;;;;;;GAUG;AACH,8BAAsB,UAAU,CAC9B,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EACrB,YAAY,SAAS,YAAY,GAAG,YAAY,EAChD,KAAK,SAAS,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,EACjD,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC,CAE7C,SAAQ,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,EAAE,KAAK,EAAE,GAAG,CAC5D,YAAW,aAAa,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;IAEzC,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;cAGlD,oBAAoB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAAC,SAAS,CAAC;IAQlE,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CACnC,OAAO,EAAE,GAAG,EACZ,IAAI,EAAE,GAAG,GAAG,IAAI,EAChB,WAAW,EAAE,OAAO,CAAC,YAAY,CAAC,GACjC,OAAO,CAAC,GAAG,CAAC;IAEf;;;;;OAKG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,IAAI,CAAA;KAAE,CAAC;IAKrE;;;;;OAKG;IACU,GAAG,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;IAIpD;;;;;OAKG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAI9D;;;;;OAKG;IACU,KAAK,CAAC,OAAO,CAAC,EAAE,SAAS,GAAG,IAAI,GAAG,OAAO,CAAC;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAI1E;;;;;OAKG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC;IAIvE;;;;;;OAMG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAO5D;;;;;;OAMG;IACU,MAAM,CAAC,OAAO,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;cAW5C,KAAK,CAAC,GAAG,EAAE,SAAS,GAAG,OAAO,CAAC,GAAG,CAAC;cAOnC,MAAM,CAAC,IAAI,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;cAIzC,OAAO,CACrB,GAAG,EAAE,GAAG,EACR,OAAO,EAAE,GAAG,GAAG,IAAI,EACnB,YAAY,GAAE,MAAM,EAAO,GAC1B,OAAO,CAAC,SAAS,CAAC;cA+BL,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;cAYxD,aAAa,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,CAAC;CAIzE"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { DecoPropertyVirtual, DocumentData, DocumentKeyAdmin } from "@mxpicture/gcp-functions-common/types";
|
|
2
|
-
import { Store } from "../store/Store.js";
|
|
2
|
+
import type { Store } from "../store/Store.js";
|
|
3
3
|
import type { Validation } from "../validation/Validation.js";
|
|
4
4
|
/**
|
|
5
5
|
* Abstract base class for backend API implementations.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IBackendApi.d.ts","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"IBackendApi.d.ts","sourceRoot":"","sources":["../../src/api/IBackendApi.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC/C,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAE9D;;;;;;;;;;;;GAYG;AACH,8BAAsB,WAAW,CAC/B,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EAErB,YAAY,SAAS,YAAY,GAAG,YAAY,EAChD,KAAK,SAAS,KAAK,CAAC,SAAS,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,EACjD,GAAG,SAAS,UAAU,CAAC,GAAG,CAAC,GAAG,UAAU,CAAC,GAAG,CAAC;aAY3B,IAAI,EAAE,MAAM;IAC5B,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;IACtC,SAAS,CAAC,QAAQ,CAAC,QAAQ,EAAE,mBAAmB,EAAE;IAClD,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM,EAAE;IAb1C,SAAS,CAAC,MAAM,CAAC,EAAE,KAAK,CAAC;IACzB,SAAS,CAAC,WAAW,CAAC,EAAE,GAAG,CAAC;IAE5B;;;;;OAKG;gBAEe,IAAI,EAAE,MAAM,EACT,SAAS,EAAE,MAAM,EAAE,EACnB,QAAQ,EAAE,mBAAmB,EAAE,EAC/B,WAAW,EAAE,MAAM,EAAE;IAG1C;;;;OAIG;IACI,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAInC;;;;OAIG;IACI,aAAa,CAAC,UAAU,EAAE,GAAG,GAAG,IAAI;IAI3C;;;;;OAKG;IACH,SAAS,CAAC,KAAK,IAAI,KAAK;IAQxB;;;;;OAKG;IACH,SAAS,CAAC,UAAU,IAAI,GAAG;CAO5B"}
|
|
@@ -1,19 +1,90 @@
|
|
|
1
1
|
import { CloudTasksClient } from "@google-cloud/tasks";
|
|
2
|
-
import { FirebaseQueueNameParts, FirebaseTask, FirebaseTaskEnv, FirebaseTaskNameParts, FirebaseTaskParams, FirebaseTaskTimestamp } from "../types/types.tasks.js";
|
|
2
|
+
import type { FirebaseQueueNameParts, FirebaseTask, FirebaseTaskEnv, FirebaseTaskNameParts, FirebaseTaskParams, FirebaseTaskTimestamp } from "../types/types.tasks.js";
|
|
3
|
+
/**
|
|
4
|
+
* Client wrapper around Google Cloud Tasks for scheduling, retrieving, and managing HTTP-targeted tasks.
|
|
5
|
+
*
|
|
6
|
+
* @remarks
|
|
7
|
+
* All queue and task paths are derived from the {@link FirebaseTaskEnv} provided at construction.
|
|
8
|
+
* Task payloads are sent as base64-encoded JSON via `POST` with OIDC authentication.
|
|
9
|
+
*/
|
|
3
10
|
export declare class FirebaseTaskHandler {
|
|
4
11
|
protected readonly env: FirebaseTaskEnv;
|
|
5
12
|
protected tasksClient: CloudTasksClient;
|
|
13
|
+
/**
|
|
14
|
+
* Create a new task handler.
|
|
15
|
+
*
|
|
16
|
+
* @param env - Environment configuration containing `projectId`, `region`, and `serviceAccount`.
|
|
17
|
+
*/
|
|
6
18
|
constructor(env: FirebaseTaskEnv);
|
|
19
|
+
/**
|
|
20
|
+
* Delete an existing task (if present) and create a new one with the same ID at a new schedule time.
|
|
21
|
+
*
|
|
22
|
+
* @param p - Task parameters including the mandatory `taskId` to reschedule.
|
|
23
|
+
* @param scheduleTime - The new schedule timestamp.
|
|
24
|
+
* @returns The full task resource name, or `null` if the task has no name.
|
|
25
|
+
*/
|
|
7
26
|
reschedule(p: FirebaseTaskParams & {
|
|
8
27
|
taskId: string;
|
|
9
28
|
}, scheduleTime: FirebaseTaskTimestamp): Promise<string | null>;
|
|
29
|
+
/**
|
|
30
|
+
* Create a new Cloud Task scheduled for the given time.
|
|
31
|
+
*
|
|
32
|
+
* @param p - Task parameters: target URL, optional payload, optional task ID, and queue ID.
|
|
33
|
+
* @param scheduleTime - When the task should be dispatched.
|
|
34
|
+
* @returns The full task resource name, or `null` if the created task has no name.
|
|
35
|
+
*/
|
|
10
36
|
schedule(p: FirebaseTaskParams, scheduleTime: FirebaseTaskTimestamp): Promise<string | null>;
|
|
37
|
+
/**
|
|
38
|
+
* List all tasks in a queue.
|
|
39
|
+
*
|
|
40
|
+
* @param queueId - The queue identifier.
|
|
41
|
+
* @returns An array of tasks with parsed `nameParts`.
|
|
42
|
+
*/
|
|
11
43
|
getTasks(queueId: string): Promise<FirebaseTask[]>;
|
|
44
|
+
/**
|
|
45
|
+
* Retrieve a single task by queue and task ID.
|
|
46
|
+
*
|
|
47
|
+
* @param queueId - The queue identifier.
|
|
48
|
+
* @param taskId - The task identifier.
|
|
49
|
+
* @returns The task with parsed `nameParts`.
|
|
50
|
+
*/
|
|
12
51
|
getTask(queueId: string, taskId: string): Promise<FirebaseTask>;
|
|
52
|
+
/**
|
|
53
|
+
* Check whether a task exists (is currently scheduled) in a queue.
|
|
54
|
+
*
|
|
55
|
+
* @param queueId - The queue identifier.
|
|
56
|
+
* @param taskId - The task identifier.
|
|
57
|
+
* @returns `true` if the task exists, `false` otherwise.
|
|
58
|
+
*/
|
|
13
59
|
isScheduled(queueId: string, taskId: string): Promise<boolean>;
|
|
60
|
+
/**
|
|
61
|
+
* Build the fully-qualified Cloud Tasks task resource path.
|
|
62
|
+
*
|
|
63
|
+
* @param queueId - The queue identifier.
|
|
64
|
+
* @param taskId - The task identifier.
|
|
65
|
+
* @returns The resource path string.
|
|
66
|
+
*/
|
|
14
67
|
taskPath(queueId: string, taskId: string): string;
|
|
68
|
+
/**
|
|
69
|
+
* Parse a fully-qualified task resource path into its constituent parts.
|
|
70
|
+
*
|
|
71
|
+
* @param path - The task resource path to parse.
|
|
72
|
+
* @returns The parsed parts, or `null` if the path does not match the expected format.
|
|
73
|
+
*/
|
|
15
74
|
taskFromPath(path: string): FirebaseTaskNameParts | null;
|
|
75
|
+
/**
|
|
76
|
+
* Build the fully-qualified Cloud Tasks queue resource path.
|
|
77
|
+
*
|
|
78
|
+
* @param queueId - The queue identifier.
|
|
79
|
+
* @returns The resource path string.
|
|
80
|
+
*/
|
|
16
81
|
queuePath(queueId: string): string;
|
|
82
|
+
/**
|
|
83
|
+
* Parse a fully-qualified queue resource path into its constituent parts.
|
|
84
|
+
*
|
|
85
|
+
* @param path - The queue resource path to parse.
|
|
86
|
+
* @returns The parsed parts, or `null` if the path does not match the expected format.
|
|
87
|
+
*/
|
|
17
88
|
queueFromPath(path: string): FirebaseQueueNameParts | null;
|
|
18
89
|
protected mapTaskFromFirebase(task: FirebaseTask): FirebaseTask;
|
|
19
90
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirebaseTaskHandler.d.ts","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,
|
|
1
|
+
{"version":3,"file":"FirebaseTaskHandler.d.ts","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EACV,sBAAsB,EACtB,YAAY,EACZ,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAOjC;;;;;;GAMG;AACH,qBAAa,mBAAmB;IAQX,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,eAAe;IAP1D,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC;IAExC;;;;OAIG;gBACmC,GAAG,EAAE,eAAe;IAI1D;;;;;;OAMG;IACU,UAAU,CACrB,CAAC,EAAE,kBAAkB,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAC1C,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBzB;;;;;;OAMG;IACU,QAAQ,CACnB,CAAC,EAAE,kBAAkB,EACrB,YAAY,EAAE,qBAAqB,GAClC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmCzB;;;;;OAKG;IACU,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAO/D;;;;;;OAMG;IACU,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,YAAY,CAAC;IAO5E;;;;;;OAMG;IACU,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAS3E;;;;;;OAMG;IACI,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM;IASxD;;;;;OAKG;IACI,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,qBAAqB,GAAG,IAAI;IAW/D;;;;;OAKG;IACI,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM;IAQzC;;;;;OAKG;IACI,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,sBAAsB,GAAG,IAAI;IAUjE,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,YAAY,GAAG,YAAY;CAOhE"}
|
|
@@ -1,13 +1,32 @@
|
|
|
1
1
|
import { CloudTasksClient } from "@google-cloud/tasks";
|
|
2
2
|
const taskPathRegex = /^projects\/([a-zA-Z0-9-_]+)\/locations\/([a-zA-Z0-9-_]+)\/queues\/([a-zA-Z0-9-_]+)\/tasks\/([a-zA-Z0-9-_]+)$/;
|
|
3
3
|
const queuePathRegex = /^projects\/([a-zA-Z0-9-_]+)\/locations\/([a-zA-Z0-9-_]+)\/queues\/([a-zA-Z0-9-_]+)$/;
|
|
4
|
+
/**
|
|
5
|
+
* Client wrapper around Google Cloud Tasks for scheduling, retrieving, and managing HTTP-targeted tasks.
|
|
6
|
+
*
|
|
7
|
+
* @remarks
|
|
8
|
+
* All queue and task paths are derived from the {@link FirebaseTaskEnv} provided at construction.
|
|
9
|
+
* Task payloads are sent as base64-encoded JSON via `POST` with OIDC authentication.
|
|
10
|
+
*/
|
|
4
11
|
export class FirebaseTaskHandler {
|
|
5
12
|
env;
|
|
6
13
|
tasksClient;
|
|
14
|
+
/**
|
|
15
|
+
* Create a new task handler.
|
|
16
|
+
*
|
|
17
|
+
* @param env - Environment configuration containing `projectId`, `region`, and `serviceAccount`.
|
|
18
|
+
*/
|
|
7
19
|
constructor(env) {
|
|
8
20
|
this.env = env;
|
|
9
21
|
this.tasksClient = new CloudTasksClient();
|
|
10
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Delete an existing task (if present) and create a new one with the same ID at a new schedule time.
|
|
25
|
+
*
|
|
26
|
+
* @param p - Task parameters including the mandatory `taskId` to reschedule.
|
|
27
|
+
* @param scheduleTime - The new schedule timestamp.
|
|
28
|
+
* @returns The full task resource name, or `null` if the task has no name.
|
|
29
|
+
*/
|
|
11
30
|
async reschedule(p, scheduleTime) {
|
|
12
31
|
try {
|
|
13
32
|
const taskPath = this.taskPath(p.queueId, p.taskId);
|
|
@@ -21,6 +40,13 @@ export class FirebaseTaskHandler {
|
|
|
21
40
|
queueId: p.queueId,
|
|
22
41
|
}, scheduleTime);
|
|
23
42
|
}
|
|
43
|
+
/**
|
|
44
|
+
* Create a new Cloud Task scheduled for the given time.
|
|
45
|
+
*
|
|
46
|
+
* @param p - Task parameters: target URL, optional payload, optional task ID, and queue ID.
|
|
47
|
+
* @param scheduleTime - When the task should be dispatched.
|
|
48
|
+
* @returns The full task resource name, or `null` if the created task has no name.
|
|
49
|
+
*/
|
|
24
50
|
async schedule(p, scheduleTime) {
|
|
25
51
|
const queuePath = this.queuePath(p.queueId);
|
|
26
52
|
const taskPath = p.taskId ? this.taskPath(p.queueId, p.taskId) : null;
|
|
@@ -52,14 +78,34 @@ export class FirebaseTaskHandler {
|
|
|
52
78
|
});
|
|
53
79
|
return task.name ?? null;
|
|
54
80
|
}
|
|
81
|
+
/**
|
|
82
|
+
* List all tasks in a queue.
|
|
83
|
+
*
|
|
84
|
+
* @param queueId - The queue identifier.
|
|
85
|
+
* @returns An array of tasks with parsed `nameParts`.
|
|
86
|
+
*/
|
|
55
87
|
async getTasks(queueId) {
|
|
56
88
|
const tasks = (await this.tasksClient.listTasks({ parent: this.queuePath(queueId) }))[0];
|
|
57
89
|
return tasks.map((task) => this.mapTaskFromFirebase(task));
|
|
58
90
|
}
|
|
91
|
+
/**
|
|
92
|
+
* Retrieve a single task by queue and task ID.
|
|
93
|
+
*
|
|
94
|
+
* @param queueId - The queue identifier.
|
|
95
|
+
* @param taskId - The task identifier.
|
|
96
|
+
* @returns The task with parsed `nameParts`.
|
|
97
|
+
*/
|
|
59
98
|
async getTask(queueId, taskId) {
|
|
60
99
|
const task = (await this.tasksClient.getTask({ name: this.taskPath(queueId, taskId) }))[0];
|
|
61
100
|
return this.mapTaskFromFirebase(task);
|
|
62
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Check whether a task exists (is currently scheduled) in a queue.
|
|
104
|
+
*
|
|
105
|
+
* @param queueId - The queue identifier.
|
|
106
|
+
* @param taskId - The task identifier.
|
|
107
|
+
* @returns `true` if the task exists, `false` otherwise.
|
|
108
|
+
*/
|
|
63
109
|
async isScheduled(queueId, taskId) {
|
|
64
110
|
try {
|
|
65
111
|
await this.getTask(queueId, taskId);
|
|
@@ -69,9 +115,22 @@ export class FirebaseTaskHandler {
|
|
|
69
115
|
return false;
|
|
70
116
|
}
|
|
71
117
|
}
|
|
118
|
+
/**
|
|
119
|
+
* Build the fully-qualified Cloud Tasks task resource path.
|
|
120
|
+
*
|
|
121
|
+
* @param queueId - The queue identifier.
|
|
122
|
+
* @param taskId - The task identifier.
|
|
123
|
+
* @returns The resource path string.
|
|
124
|
+
*/
|
|
72
125
|
taskPath(queueId, taskId) {
|
|
73
126
|
return this.tasksClient.taskPath(this.env.projectId, this.env.region, queueId, taskId);
|
|
74
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Parse a fully-qualified task resource path into its constituent parts.
|
|
130
|
+
*
|
|
131
|
+
* @param path - The task resource path to parse.
|
|
132
|
+
* @returns The parsed parts, or `null` if the path does not match the expected format.
|
|
133
|
+
*/
|
|
75
134
|
taskFromPath(path) {
|
|
76
135
|
const found = path.match(taskPathRegex);
|
|
77
136
|
if (!found)
|
|
@@ -83,9 +142,21 @@ export class FirebaseTaskHandler {
|
|
|
83
142
|
taskId: found[4],
|
|
84
143
|
};
|
|
85
144
|
}
|
|
145
|
+
/**
|
|
146
|
+
* Build the fully-qualified Cloud Tasks queue resource path.
|
|
147
|
+
*
|
|
148
|
+
* @param queueId - The queue identifier.
|
|
149
|
+
* @returns The resource path string.
|
|
150
|
+
*/
|
|
86
151
|
queuePath(queueId) {
|
|
87
152
|
return this.tasksClient.queuePath(this.env.projectId, this.env.region, queueId);
|
|
88
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Parse a fully-qualified queue resource path into its constituent parts.
|
|
156
|
+
*
|
|
157
|
+
* @param path - The queue resource path to parse.
|
|
158
|
+
* @returns The parsed parts, or `null` if the path does not match the expected format.
|
|
159
|
+
*/
|
|
89
160
|
queueFromPath(path) {
|
|
90
161
|
const found = path.match(queuePathRegex);
|
|
91
162
|
if (!found)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FirebaseTaskHandler.js","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAUvD,MAAM,aAAa,GACjB,8GAA8G,CAAC;AACjH,MAAM,cAAc,GAClB,qFAAqF,CAAC;AAExF,MAAM,OAAO,mBAAmB;
|
|
1
|
+
{"version":3,"file":"FirebaseTaskHandler.js","sourceRoot":"","sources":["../../src/firebase/FirebaseTaskHandler.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
import { ExpressAuthHandler } from "../types/types.express.js";
|
|
1
|
+
import type { ExpressAuthHandler } from "../types/types.express.js";
|
|
2
|
+
/**
|
|
3
|
+
* Express middleware that verifies Google OIDC bearer tokens for service-to-service authentication.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Only `POST` requests are allowed; all other methods receive a `405` response.
|
|
7
|
+
* The token audience is read from the `INTERNAL_FUNCTION_URL` environment variable.
|
|
8
|
+
* An optional `ALLOWED_CALLER_SA_EMAIL` environment variable can restrict access to
|
|
9
|
+
* a single service account.
|
|
10
|
+
*
|
|
11
|
+
* @param req - The incoming Express request.
|
|
12
|
+
* @param res - The Express response object.
|
|
13
|
+
* @param next - The next middleware function.
|
|
14
|
+
*/
|
|
2
15
|
export declare const checkServiceAuth: ExpressAuthHandler;
|
|
3
16
|
//# sourceMappingURL=firebase.express.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.express.d.ts","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"firebase.express.d.ts","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAEpE;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,gBAAgB,EAAE,kBAmC9B,CAAC"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { GoogleAuth } from "google-auth-library";
|
|
2
|
+
/**
|
|
3
|
+
* Express middleware that verifies Google OIDC bearer tokens for service-to-service authentication.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* Only `POST` requests are allowed; all other methods receive a `405` response.
|
|
7
|
+
* The token audience is read from the `INTERNAL_FUNCTION_URL` environment variable.
|
|
8
|
+
* An optional `ALLOWED_CALLER_SA_EMAIL` environment variable can restrict access to
|
|
9
|
+
* a single service account.
|
|
10
|
+
*
|
|
11
|
+
* @param req - The incoming Express request.
|
|
12
|
+
* @param res - The Express response object.
|
|
13
|
+
* @param next - The next middleware function.
|
|
14
|
+
*/
|
|
2
15
|
export const checkServiceAuth = async (req, res, next) => {
|
|
3
16
|
// (Optional) allow only POST to reduce accidental hits
|
|
4
17
|
if (req.method !== "POST")
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.express.js","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD,MAAM,CAAC,MAAM,gBAAgB,GAAuB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC3E,uDAAuD;IACvD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YACR,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEzB,0DAA0D;QAC1D,iEAAiE;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACnD,IAAI,CAAC,QAAQ;YACX,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEnE,wEAAwE;QACxE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC1D,IAAI,aAAa,IAAI,OAAO,CAAC,KAAK,KAAK,aAAa;YAClD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEpE,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,8DAA8D;QAC9D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAkB,CAAS,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"firebase.express.js","sourceRoot":"","sources":["../../src/firebase/firebase.express.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAC;AAGjD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAAuB,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,IAAI,EAAE,EAAE;IAC3E,uDAAuD;IACvD,IAAI,GAAG,CAAC,MAAM,KAAK,MAAM;QAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;IAE7E,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,GAAG,CAAC,MAAM,CAAC,eAAe,CAAC,IAAI,EAAE,CAAC;QACrD,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACjD,IAAI,CAAC,KAAK;YACR,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC;QACvE,MAAM,OAAO,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAEzB,0DAA0D;QAC1D,iEAAiE;QACjE,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC;QACnD,IAAI,CAAC,QAAQ;YACX,OAAO,GAAG;iBACP,MAAM,CAAC,GAAG,CAAC;iBACX,IAAI,CAAC,gDAAgD,CAAC,CAAC;QAE5D,MAAM,IAAI,GAAG,IAAI,UAAU,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,QAAQ,CAAC,CAAC;QACrD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CAAC,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,CAAC;QACjE,MAAM,OAAO,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;QACpC,IAAI,CAAC,OAAO;YAAE,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAEnE,wEAAwE;QACxE,MAAM,aAAa,GAAG,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC;QAC1D,IAAI,aAAa,IAAI,OAAO,CAAC,KAAK,KAAK,aAAa;YAClD,OAAO,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,oCAAoC,CAAC,CAAC;QAEpE,IAAI,EAAE,CAAC;IACT,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,8DAA8D;QAC9D,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,iBAAkB,CAAS,EAAE,OAAO,IAAI,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5E,CAAC;AACH,CAAC,CAAC"}
|
|
@@ -1,3 +1,16 @@
|
|
|
1
|
-
import { FirebaseTaskDurationParams, FirebaseTaskTimestamp } from "../types/types.tasks.js";
|
|
1
|
+
import type { FirebaseTaskDurationParams, FirebaseTaskTimestamp } from "../types/types.tasks.js";
|
|
2
|
+
/**
|
|
3
|
+
* Compute a Cloud Tasks schedule timestamp from a duration specification or an absolute `Date`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* When a {@link FirebaseTaskDurationParams} is provided, the target time is calculated as
|
|
7
|
+
* `now + days + hours + minutes + seconds`. If `targetHoursFrom` and `targetHoursTo` are
|
|
8
|
+
* set, the time is further adjusted via {@link computeScheduleTimeUtc} to land within the
|
|
9
|
+
* specified UTC hour window.
|
|
10
|
+
*
|
|
11
|
+
* @param duration_date - Either a `Date` for an absolute schedule time, or a
|
|
12
|
+
* {@link FirebaseTaskDurationParams} specifying a relative offset.
|
|
13
|
+
* @returns A {@link FirebaseTaskTimestamp} containing the computed `seconds` value.
|
|
14
|
+
*/
|
|
2
15
|
export declare const taskScheduleTimestamp: (duration_date: FirebaseTaskDurationParams | Date) => FirebaseTaskTimestamp;
|
|
3
16
|
//# sourceMappingURL=firebase.tasks.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.tasks.d.ts","sourceRoot":"","sources":["../../src/firebase/firebase.tasks.ts"],"names":[],"mappings":"AACA,OAAO,
|
|
1
|
+
{"version":3,"file":"firebase.tasks.d.ts","sourceRoot":"","sources":["../../src/firebase/firebase.tasks.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,0BAA0B,EAC1B,qBAAqB,EACtB,MAAM,yBAAyB,CAAC;AAEjC;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,GAChC,eAAe,0BAA0B,GAAG,IAAI,KAC/C,qBAuBF,CAAC"}
|
|
@@ -1,4 +1,17 @@
|
|
|
1
1
|
import { computeScheduleTimeUtc } from "@mxpicture/gcp-functions-common/helper";
|
|
2
|
+
/**
|
|
3
|
+
* Compute a Cloud Tasks schedule timestamp from a duration specification or an absolute `Date`.
|
|
4
|
+
*
|
|
5
|
+
* @remarks
|
|
6
|
+
* When a {@link FirebaseTaskDurationParams} is provided, the target time is calculated as
|
|
7
|
+
* `now + days + hours + minutes + seconds`. If `targetHoursFrom` and `targetHoursTo` are
|
|
8
|
+
* set, the time is further adjusted via {@link computeScheduleTimeUtc} to land within the
|
|
9
|
+
* specified UTC hour window.
|
|
10
|
+
*
|
|
11
|
+
* @param duration_date - Either a `Date` for an absolute schedule time, or a
|
|
12
|
+
* {@link FirebaseTaskDurationParams} specifying a relative offset.
|
|
13
|
+
* @returns A {@link FirebaseTaskTimestamp} containing the computed `seconds` value.
|
|
14
|
+
*/
|
|
2
15
|
export const taskScheduleTimestamp = (duration_date) => {
|
|
3
16
|
let targetAt = null;
|
|
4
17
|
if (duration_date instanceof Date) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"firebase.tasks.js","sourceRoot":"","sources":["../../src/firebase/firebase.tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAMhF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,aAAgD,EACzB,EAAE;IACzB,IAAI,QAAQ,GAAgB,IAAI,CAAC;IAEjC,IAAI,aAAa,YAAY,IAAI,EAAE,CAAC;QAClC,QAAQ,GAAG,aAAa,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACzD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAClD,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC/C,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAE1C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,QAAQ;YACN,CAAC,CAAC,aAAa,CAAC,eAAe,IAAI,CAAC,CAAC,aAAa,CAAC,aAAa;gBAC9D,CAAC,CAAC,sBAAsB,CACpB,IAAI,EACJ,aAAa,CAAC,eAAe,EAC7B,aAAa,CAAC,aAAa,CAC5B;gBACH,CAAC,CAAC,IAAI,CAAC;IACb,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"firebase.tasks.js","sourceRoot":"","sources":["../../src/firebase/firebase.tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAMhF;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,aAAgD,EACzB,EAAE;IACzB,IAAI,QAAQ,GAAgB,IAAI,CAAC;IAEjC,IAAI,aAAa,YAAY,IAAI,EAAE,CAAC;QAClC,QAAQ,GAAG,aAAa,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,IAAI,EAAE,GAAG,CAAC,aAAa,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QACzD,EAAE,IAAI,CAAC,aAAa,CAAC,KAAK,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;QAClD,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC;QAC/C,EAAE,IAAI,CAAC,aAAa,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC;QAE1C,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,CAAC,CAAC;QACvC,QAAQ;YACN,CAAC,CAAC,aAAa,CAAC,eAAe,IAAI,CAAC,CAAC,aAAa,CAAC,aAAa;gBAC9D,CAAC,CAAC,sBAAsB,CACpB,IAAI,EACJ,aAAa,CAAC,eAAe,EAC7B,aAAa,CAAC,aAAa,CAC5B;gBACH,CAAC,CAAC,IAAI,CAAC;IACb,CAAC;IAED,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;AAC5D,CAAC,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { DocumentData, DocumentKeyAdmin, FunctionRequest, FunctionResponse } from "@mxpicture/gcp-functions-common/types";
|
|
2
|
-
import { CallableFunction, HttpsFunction } from "firebase-functions/v2/https";
|
|
3
|
-
import { ExpressAuthHandler } from "../types/types.express.js";
|
|
4
|
-
import { IBackendApi } from "../api/IBackendApi.js";
|
|
2
|
+
import type { CallableFunction, HttpsFunction } from "firebase-functions/v2/https";
|
|
3
|
+
import type { ExpressAuthHandler } from "../types/types.express.js";
|
|
4
|
+
import type { IBackendApi } from "../api/IBackendApi.js";
|
|
5
5
|
/**
|
|
6
6
|
* Abstract base class for Firebase callable backend functions.
|
|
7
7
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IBackendFunction.d.ts","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,
|
|
1
|
+
{"version":3,"file":"IBackendFunction.d.ts","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,eAAe,EACf,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAC/C,OAAO,KAAK,EACV,gBAAgB,EAChB,aAAa,EAAC,MAAM,6BAA6B,CAAC;AAYpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AAEzD;;;;;;;;;;GAUG;AACH,8BAAsB,gBAAgB,CACpC,SAAS,SAAS,gBAAgB,EAClC,GAAG,SAAS,SAAS,EACrB,YAAY,SAAS,YAAY,EACjC,GAAG,SAAS,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,YAAY,CAAC;aAcnC,IAAI,EAAE,MAAM;aACZ,MAAM,EAAE,MAAM;aACd,cAAc,EAAE,MAAM;IACtC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE;IAfxC,SAAS,CAAC,IAAI,CAAC,EAAE,GAAG,CAAC;IACrB,SAAS,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IAE7B;;;;;;;OAOG;gBAEe,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EACd,cAAc,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,EAAE;IAGxC;;;;OAIG;IACI,MAAM,CAAC,GAAG,EAAE,GAAG,GAAG,IAAI;IAI7B;;;;OAIG;IACI,SAAS,CAAC,MAAM,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAA;KAAE,GAAG,MAAM,EAAE,GAAG,IAAI;IAIpE;;;;;OAKG;IACH,SAAS,CAAC,GAAG,IAAI,GAAG;IAMpB;;;;;OAKG;IACH,SAAS,CAAC,MAAM,IAAI,MAAM,EAAE;IAQ5B;;;;;;;;;;;;;OAaG;IACU,OAAO,CAAC,GAAG,EAAE,GAAG,SAAS,YAAY,EAChD,OAAO,EAAE,eAAe,CAAC,GAAG,CAAC,GAC5B,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC;IAsBjC;;;;;;;;OAQG;IACI,qBAAqB,IAAI,gBAAgB,CAE9C,eAAe,CAAC,GAAG,CAAC,EAEpB,OAAO,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAC/B;IAOD;;;;;;;;OAQG;IACI,kBAAkB,CACvB,IAAI,GAAE,kBAAkB,GAAG,IAAuB,GACjD,aAAa;CAkBjB"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { onCall, HttpsError, onRequest
|
|
1
|
+
import { onCall, HttpsError, onRequest } from "firebase-functions/v2/https";
|
|
2
2
|
import express from "express";
|
|
3
3
|
import { toDatesDeep, toTimestampsDeep, } from "@mxpicture/gcp-functions-common/helper";
|
|
4
4
|
import { checkServiceAuth } from "../firebase/firebase.express.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"IBackendFunction.js","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"IBackendFunction.js","sourceRoot":"","sources":["../../src/function/IBackendFunction.ts"],"names":[],"mappings":"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"}
|
package/dist/store/Store.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { CollectionReference, DocumentReference, FirestoreDataConverter, Query, QuerySnapshot } from "firebase-admin/firestore";
|
|
1
|
+
import type { CollectionReference, DocumentReference, FirestoreDataConverter, Query, QuerySnapshot } from "firebase-admin/firestore";
|
|
2
2
|
import type { ApiFilterItems, CreateInput, DocumentKeyAdmin } from "@mxpicture/gcp-functions-common/types";
|
|
3
3
|
/**
|
|
4
4
|
* Firestore-backed data store for a document type.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/store/Store.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"Store.d.ts","sourceRoot":"","sources":["../../src/store/Store.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,mBAAmB,EACnB,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,EACL,aAAa,EACd,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,EACV,cAAc,EACd,WAAW,EACX,gBAAgB,EACjB,MAAM,uCAAuC,CAAC;AAE/C;;;;;;;;GAQG;AACH,qBAAa,KAAK,CAAC,GAAG,SAAS,gBAAgB;aAW3B,cAAc,EAAE,MAAM;aACtB,SAAS,EAAE,MAAM;IACjC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,sBAAsB,CAAC,GAAG,CAAC;IAZ5D,SAAS,CAAC,GAAG,CAAC,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC;IAEzC;;;;;;OAMG;gBAEe,cAAc,EAAE,MAAM,EACtB,SAAS,EAAE,MAAM,EACd,SAAS,CAAC,EAAE,sBAAsB,CAAC,GAAG,CAAC,YAAA;IAG5D;;;;OAIG;IACI,EAAE,IAAI,mBAAmB,CAAC,GAAG,CAAC;IAarC;;;;;OAKG;IACU,KAAK,CAAC,CAAC,CAAC,EAAE,cAAc,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IActD;;;;;;;;OAQG;cACa,aAAa,CAC3B,CAAC,CAAC,EAAE,cAAc,GACjB,OAAO,CAAC,aAAa,CAAC,GAAG,CAAC,CAAC;IAc9B;;;;;OAKG;IACU,KAAK,CAAC,CAAC,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,MAAM,CAAC;IAS9D;;;;;OAKG;IACI,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,iBAAiB,CAAC,GAAG,CAAC;IAI9C;;;;;;OAMG;IACU,GAAG,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC;IAW1C;;;;;OAKG;IACU,MAAM,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAIjD;;;;;OAKG;IACU,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAOjD,QAAQ,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM;IAIpC;;;;;;OAMG;IACU,MAAM,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,GAAG,CAAC;IAMhE;;;;OAIG;IACU,MAAM,CAAC,GAAG,GAAG,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD;;;;OAIG;IACU,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAK5D;;;;;OAKG;IACI,WAAW,CAAC,QAAQ,EAAE,MAAM;CAGpC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { Request, Response, NextFunction } from "express";
|
|
2
|
+
/** Express middleware signature for authentication handlers. */
|
|
2
3
|
export type ExpressAuthHandler = (req: Request, res: Response, next: NextFunction) => Promise<unknown>;
|
|
3
4
|
//# sourceMappingURL=types.express.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.express.d.ts","sourceRoot":"","sources":["../../src/types/types.express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"types.express.d.ts","sourceRoot":"","sources":["../../src/types/types.express.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAE/D,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAAG,CAC/B,GAAG,EAAE,OAAO,EACZ,GAAG,EAAE,QAAQ,EACb,IAAI,EAAE,YAAY,KACf,OAAO,CAAC,OAAO,CAAC,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
/** Environment configuration required by {@link FirebaseTaskHandler}. */
|
|
1
2
|
export interface FirebaseTaskEnv {
|
|
2
3
|
projectId: string;
|
|
3
4
|
/** The GCP region for Cloud Functions deployment. */
|
|
@@ -5,12 +6,14 @@ export interface FirebaseTaskEnv {
|
|
|
5
6
|
/** The GCP service account email used by Cloud Functions. */
|
|
6
7
|
serviceAccount: string;
|
|
7
8
|
}
|
|
9
|
+
/** Parameters for creating or rescheduling a Cloud Task. */
|
|
8
10
|
export interface FirebaseTaskParams {
|
|
9
11
|
targetUrl: string;
|
|
10
12
|
payload?: string;
|
|
11
13
|
taskId?: string;
|
|
12
14
|
queueId: string;
|
|
13
15
|
}
|
|
16
|
+
/** Relative time offset parameters used by {@link taskScheduleTimestamp}. */
|
|
14
17
|
export interface FirebaseTaskDurationParams {
|
|
15
18
|
days?: number;
|
|
16
19
|
hours?: number;
|
|
@@ -19,14 +22,22 @@ export interface FirebaseTaskDurationParams {
|
|
|
19
22
|
targetHoursFrom?: number;
|
|
20
23
|
targetHoursTo?: number;
|
|
21
24
|
}
|
|
25
|
+
/** Parsed components of a fully-qualified Cloud Tasks task resource path. */
|
|
22
26
|
export interface FirebaseTaskNameParts extends FirebaseQueueNameParts {
|
|
23
27
|
taskId: string;
|
|
24
28
|
}
|
|
29
|
+
/** Parsed components of a fully-qualified Cloud Tasks queue resource path. */
|
|
25
30
|
export interface FirebaseQueueNameParts {
|
|
26
31
|
projectId: string;
|
|
27
32
|
region: string;
|
|
28
33
|
queueId: string;
|
|
29
34
|
}
|
|
35
|
+
/**
|
|
36
|
+
* Represents a Cloud Task as returned by the Cloud Tasks API.
|
|
37
|
+
*
|
|
38
|
+
* @remarks
|
|
39
|
+
* Field shapes are adapted from the `@google-cloud/tasks` protobuf definitions.
|
|
40
|
+
*/
|
|
30
41
|
export interface FirebaseTask {
|
|
31
42
|
nameParts?: FirebaseTaskNameParts | null;
|
|
32
43
|
/** Task name */
|
|
@@ -46,17 +57,21 @@ export interface FirebaseTask {
|
|
|
46
57
|
/** Task lastAttempt */
|
|
47
58
|
lastAttempt?: FirebaseTaskAttempt | null;
|
|
48
59
|
}
|
|
60
|
+
/** Attempt metadata for a single task dispatch. */
|
|
49
61
|
export interface FirebaseTaskAttempt {
|
|
50
62
|
scheduleTime?: FirebaseTaskTimestamp | null;
|
|
51
63
|
dispatchTime?: FirebaseTaskTimestamp | null;
|
|
52
64
|
responseTime?: FirebaseTaskTimestamp | null;
|
|
53
65
|
responseStatus?: FirebaseTaskStatus | null;
|
|
54
66
|
}
|
|
67
|
+
/** Seconds/nanoseconds timestamp pair compatible with Cloud Tasks protobuf. */
|
|
55
68
|
export interface FirebaseTaskTimestamp {
|
|
56
69
|
seconds?: number | Long | string | null;
|
|
57
70
|
nanos?: number | null;
|
|
58
71
|
}
|
|
72
|
+
/** Alias for {@link FirebaseTaskTimestamp} representing a protobuf Duration. */
|
|
59
73
|
export type FirebaseTaskDuration = FirebaseTaskTimestamp;
|
|
74
|
+
/** gRPC status code and message from a task dispatch response. */
|
|
60
75
|
export interface FirebaseTaskStatus {
|
|
61
76
|
code?: number | null;
|
|
62
77
|
message?: string | null;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.tasks.d.ts","sourceRoot":"","sources":["../../src/types/types.tasks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;
|
|
1
|
+
{"version":3,"file":"types.tasks.d.ts","sourceRoot":"","sources":["../../src/types/types.tasks.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,4DAA4D;AAC5D,MAAM,WAAW,kBAAkB;IACjC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,6EAA6E;AAC7E,MAAM,WAAW,0BAA0B;IACzC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAMD,6EAA6E;AAC7E,MAAM,WAAW,qBAAsB,SAAQ,sBAAsB;IACnE,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,8EAA8E;AAC9E,MAAM,WAAW,sBAAsB;IACrC,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;GAKG;AACH,MAAM,WAAW,YAAY;IAC3B,SAAS,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IACzC,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wBAAwB;IACxB,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C,sBAAsB;IACtB,UAAU,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC1C,4BAA4B;IAC5B,gBAAgB,CAAC,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC/C,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,yBAAyB;IACzB,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,wBAAwB;IACxB,YAAY,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;IAC1C,uBAAuB;IACvB,WAAW,CAAC,EAAE,mBAAmB,GAAG,IAAI,CAAC;CAC1C;AAED,mDAAmD;AACnD,MAAM,WAAW,mBAAmB;IAClC,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C,YAAY,CAAC,EAAE,qBAAqB,GAAG,IAAI,CAAC;IAC5C,cAAc,CAAC,EAAE,kBAAkB,GAAG,IAAI,CAAC;CAC5C;AAED,+EAA+E;AAC/E,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,gFAAgF;AAChF,MAAM,MAAM,oBAAoB,GAAG,qBAAqB,CAAC;AAEzD,kEAAkE;AAClE,MAAM,WAAW,kBAAkB;IACjC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mxpicture/gcp-functions-backend",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.2.2",
|
|
4
4
|
"description": "Utils for google cloud functions, publishing both CommonJS and ESM builds",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"author": "MXPicture",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
},
|
|
37
37
|
"dependencies": {
|
|
38
38
|
"@google-cloud/tasks": "^6.2.1",
|
|
39
|
-
"@mxpicture/gcp-functions-common": "^1.
|
|
39
|
+
"@mxpicture/gcp-functions-common": "^1.2.2",
|
|
40
40
|
"express": "^5.2.1",
|
|
41
41
|
"firebase-admin": "^13.7.0",
|
|
42
42
|
"firebase-functions": "^7.0.6",
|