@mxpicture/gcp-functions-backend 1.1.79 → 1.1.81

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,20 +1,20 @@
1
1
  import { CloudTasksClient } from "@google-cloud/tasks";
2
- import { TaskEnv, TaskParams } from "../types/types.tasks.js";
3
- export declare const scheduleTask: (params: TaskParams, env: TaskEnv) => Promise<string | null>;
4
- export declare const rescheduleTask: (params: TaskParams & {
5
- taskId: string;
6
- }, env: TaskEnv) => Promise<string | null>;
2
+ import { QueueNameParts, Task, TaskEnv, TaskNameParts, TaskParams, TaskTimestamp } from "../types/types.tasks.js";
7
3
  export declare class TaskHandler {
8
4
  protected readonly env: TaskEnv;
9
5
  protected tasksClient: CloudTasksClient;
10
6
  constructor(env: TaskEnv);
11
7
  reschedule(p: TaskParams & {
12
8
  taskId: string;
13
- }): Promise<string | null>;
14
- schedule(p: TaskParams): Promise<string | null>;
15
- readTasks(): Promise<import("@google-cloud/tasks/build/protos").google.cloud.tasks.v2.ITask[]>;
9
+ }, scheduleTime: TaskTimestamp): Promise<string | null>;
10
+ schedule(p: TaskParams, scheduleTime: TaskTimestamp): Promise<string | null>;
11
+ getTasks(): Promise<Task[]>;
12
+ getTask(taskId: string): Promise<Task>;
13
+ isScheduled(taskId: string): Promise<boolean>;
16
14
  taskPath(taskId: string): string;
15
+ taskFromPath(path: string): TaskNameParts | null;
17
16
  queuePath(): string;
18
- protected assertDays(days: number): void;
17
+ queueFromPath(path: string): QueueNameParts | null;
18
+ protected mapTaskFromFirebase(task: Task): Task;
19
19
  }
20
20
  //# sourceMappingURL=TaskHandler.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskHandler.d.ts","sourceRoot":"","sources":["../../src/tasks/TaskHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAG9D,eAAO,MAAM,YAAY,GACvB,QAAQ,UAAU,EAClB,KAAK,OAAO,KACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAA0C,CAAC;AAEnE,eAAO,MAAM,cAAc,GACzB,QAAQ,UAAU,GAAG;IAAE,MAAM,EAAE,MAAM,CAAA;CAAE,EACvC,KAAK,OAAO,KACX,OAAO,CAAC,MAAM,GAAG,IAAI,CAA4C,CAAC;AAErE,qBAAa,WAAW;IAGH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO;IAFlD,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC;gBAEF,GAAG,EAAE,OAAO;IAIrC,UAAU,CACrB,CAAC,EAAE,UAAU,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,GACjC,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAQZ,QAAQ,CAAC,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgD/C,SAAS;IAIf,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAShC,SAAS,IAAI,MAAM;IAQ1B,SAAS,CAAC,UAAU,CAAC,IAAI,EAAE,MAAM;CAIlC"}
1
+ {"version":3,"file":"TaskHandler.d.ts","sourceRoot":"","sources":["../../src/tasks/TaskHandler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EACL,cAAc,EACd,IAAI,EACJ,OAAO,EACP,aAAa,EACb,UAAU,EACV,aAAa,EACd,MAAM,yBAAyB,CAAC;AAOjC,qBAAa,WAAW;IAGH,SAAS,CAAC,QAAQ,CAAC,GAAG,EAAE,OAAO;IAFlD,SAAS,CAAC,WAAW,EAAE,gBAAgB,CAAC;gBAEF,GAAG,EAAE,OAAO;IAIrC,UAAU,CACrB,CAAC,EAAE,UAAU,GAAG;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,EAClC,YAAY,EAAE,aAAa,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAeZ,QAAQ,CACnB,CAAC,EAAE,UAAU,EACb,YAAY,EAAE,aAAa,GAC1B,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAmCZ,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAO3B,OAAO,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAOtC,WAAW,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IASnD,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM;IAShC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAWhD,SAAS,IAAI,MAAM;IAQnB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI;IAUzD,SAAS,CAAC,mBAAmB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI;CAOhD"}
@@ -1,7 +1,6 @@
1
1
  import { CloudTasksClient } from "@google-cloud/tasks";
2
- import { computeScheduleTimeUtc } from "@mxpicture/gcp-functions-common/helper";
3
- export const scheduleTask = async (params, env) => new TaskHandler(env).schedule(params);
4
- export const rescheduleTask = async (params, env) => new TaskHandler(env).reschedule(params);
2
+ const taskPathRegex = /^projects\/([a-zA-Z0-9-_]+)\/locations\/([a-zA-Z0-9-_]+)\/queues\/([a-zA-Z0-9-_]+)\/tasks\/([a-zA-Z0-9-_]+)$/;
3
+ const queuePathRegex = /^projects\/([a-zA-Z0-9-_]+)\/locations\/([a-zA-Z0-9-_]+)\/queues\/([a-zA-Z0-9-_]+)$/;
5
4
  export class TaskHandler {
6
5
  env;
7
6
  tasksClient;
@@ -9,24 +8,19 @@ export class TaskHandler {
9
8
  this.env = env;
10
9
  this.tasksClient = new CloudTasksClient();
11
10
  }
12
- async reschedule(p) {
11
+ async reschedule(p, scheduleTime) {
13
12
  try {
14
13
  const taskPath = this.taskPath(p.taskId);
15
14
  await this.tasksClient.deleteTask({ name: taskPath });
16
15
  }
17
16
  catch { }
18
- return this.schedule(p);
17
+ return this.schedule({
18
+ targetUrl: p.targetUrl,
19
+ payload: p.payload,
20
+ taskId: p.taskId,
21
+ }, scheduleTime);
19
22
  }
20
- async schedule(p) {
21
- // this.assertDays(p.days); // todo needed?
22
- let ms = (p.days ?? 0) * 24 * 60 * 60 * 1000;
23
- ms += (p.hours ?? 0) * 60 * 60 * 1000;
24
- ms += (p.minutes ?? 0) * 60 * 1000;
25
- ms += (p.seconds ?? 0) * 1000;
26
- const base = new Date(Date.now() + ms);
27
- const targetAt = !!p.targetHoursFrom && !!p.targetHoursTo
28
- ? computeScheduleTimeUtc(base, p.targetHoursFrom, p.targetHoursTo)
29
- : base;
23
+ async schedule(p, scheduleTime) {
30
24
  const queuePath = this.queuePath();
31
25
  const taskPath = p.taskId ? this.taskPath(p.taskId) : null;
32
26
  let body = null;
@@ -40,7 +34,7 @@ export class TaskHandler {
40
34
  const [task] = await this.tasksClient.createTask({
41
35
  parent: queuePath,
42
36
  task: {
43
- scheduleTime: { seconds: Math.floor(targetAt.getTime() / 1000) },
37
+ scheduleTime,
44
38
  name: taskPath,
45
39
  httpRequest: {
46
40
  httpMethod: "POST",
@@ -57,18 +51,58 @@ export class TaskHandler {
57
51
  });
58
52
  return task.name ?? null;
59
53
  }
60
- async readTasks() {
61
- return (await this.tasksClient.listTasks({ parent: this.queuePath() }))[0];
54
+ async getTasks() {
55
+ const tasks = (await this.tasksClient.listTasks({ parent: this.queuePath() }))[0];
56
+ return tasks.map((task) => this.mapTaskFromFirebase(task));
57
+ }
58
+ async getTask(taskId) {
59
+ const task = (await this.tasksClient.getTask({ name: this.taskPath(taskId) }))[0];
60
+ return this.mapTaskFromFirebase(task);
61
+ }
62
+ async isScheduled(taskId) {
63
+ try {
64
+ await this.getTask(taskId);
65
+ return true;
66
+ }
67
+ catch {
68
+ return false;
69
+ }
62
70
  }
63
71
  taskPath(taskId) {
64
72
  return this.tasksClient.taskPath(this.env.projectId, this.env.region, this.env.queueId, taskId);
65
73
  }
74
+ taskFromPath(path) {
75
+ const found = path.match(taskPathRegex);
76
+ if (!found)
77
+ return null;
78
+ return {
79
+ projectId: found[1],
80
+ region: found[2],
81
+ queueId: found[3],
82
+ taskId: found[4],
83
+ };
84
+ }
66
85
  queuePath() {
67
86
  return this.tasksClient.queuePath(this.env.projectId, this.env.region, this.env.queueId);
68
87
  }
69
- assertDays(days) {
70
- if (!Number.isInteger(days) || days < 1 || days > 100)
71
- throw new Error("days must be an integer between 1 and 100");
88
+ queueFromPath(path) {
89
+ const found = path.match(queuePathRegex);
90
+ if (!found)
91
+ return null;
92
+ return {
93
+ projectId: found[1],
94
+ region: found[2],
95
+ queueId: found[3],
96
+ };
97
+ }
98
+ mapTaskFromFirebase(task) {
99
+ const cloned = structuredClone(task);
100
+ if (!cloned.name)
101
+ return cloned;
102
+ const parts = this.taskFromPath(cloned.name);
103
+ if (parts)
104
+ cloned.nameParts = parts;
105
+ return cloned;
72
106
  }
73
107
  }
74
108
  //# sourceMappingURL=TaskHandler.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"TaskHandler.js","sourceRoot":"","sources":["../../src/tasks/TaskHandler.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"TaskHandler.js","sourceRoot":"","sources":["../../src/tasks/TaskHandler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { TaskDurationParams, TaskTimestamp } from "../types/types.tasks.js";
2
+ export declare const taskScheduleTimestamp: (duration_date: TaskDurationParams | Date) => TaskTimestamp;
3
+ //# sourceMappingURL=helper.tasks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.tasks.d.ts","sourceRoot":"","sources":["../../src/tasks/helper.tasks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAE5E,eAAO,MAAM,qBAAqB,GAChC,eAAe,kBAAkB,GAAG,IAAI,KACvC,aAuBF,CAAC"}
@@ -0,0 +1,20 @@
1
+ import { computeScheduleTimeUtc } from "@mxpicture/gcp-functions-common/helper";
2
+ export const taskScheduleTimestamp = (duration_date) => {
3
+ let targetAt = null;
4
+ if (duration_date instanceof Date) {
5
+ targetAt = duration_date;
6
+ }
7
+ else {
8
+ let ms = (duration_date.days ?? 0) * 24 * 60 * 60 * 1000;
9
+ ms += (duration_date.hours ?? 0) * 60 * 60 * 1000;
10
+ ms += (duration_date.minutes ?? 0) * 60 * 1000;
11
+ ms += (duration_date.seconds ?? 0) * 1000;
12
+ const base = new Date(Date.now() + ms);
13
+ targetAt =
14
+ !!duration_date.targetHoursFrom && !!duration_date.targetHoursTo
15
+ ? computeScheduleTimeUtc(base, duration_date.targetHoursFrom, duration_date.targetHoursTo)
16
+ : base;
17
+ }
18
+ return { seconds: Math.floor(targetAt.getTime() / 1000) };
19
+ };
20
+ //# sourceMappingURL=helper.tasks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helper.tasks.js","sourceRoot":"","sources":["../../src/tasks/helper.tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,wCAAwC,CAAC;AAGhF,MAAM,CAAC,MAAM,qBAAqB,GAAG,CACnC,aAAwC,EACzB,EAAE;IACjB,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,3 +1,4 @@
1
1
  export * from "./TaskHandler.js";
2
2
  export * from "./TaskSetup.js";
3
+ export * from "./helper.tasks.js";
3
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AACA,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  // This file is auto-generated by build-cli. Do not edit manually.
2
2
  export * from "./TaskHandler.js";
3
3
  export * from "./TaskSetup.js";
4
+ export * from "./helper.tasks.js";
4
5
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tasks/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,cAAc,kBAAkB,CAAC;AACjC,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC"}
@@ -8,13 +8,57 @@ export interface TaskEnv {
8
8
  }
9
9
  export interface TaskParams {
10
10
  targetUrl: string;
11
+ payload?: string;
12
+ taskId?: string;
13
+ }
14
+ export interface TaskDurationParams {
11
15
  days?: number;
12
16
  hours?: number;
13
17
  minutes?: number;
14
18
  seconds?: number;
15
19
  targetHoursFrom?: number;
16
20
  targetHoursTo?: number;
17
- payload?: string;
18
- taskId?: string;
21
+ }
22
+ export interface TaskNameParts extends QueueNameParts {
23
+ taskId: string;
24
+ }
25
+ export interface QueueNameParts {
26
+ projectId: string;
27
+ region: string;
28
+ queueId: string;
29
+ }
30
+ export interface Task {
31
+ nameParts?: TaskNameParts | null;
32
+ /** Task name */
33
+ name?: string | null;
34
+ /** Task scheduleTime */
35
+ scheduleTime?: TaskTimestamp | null;
36
+ /** Task createTime */
37
+ createTime?: TaskTimestamp | null;
38
+ /** Task dispatchDeadline */
39
+ dispatchDeadline?: TaskDuration | null;
40
+ /** Task dispatchCount */
41
+ dispatchCount?: number | null;
42
+ /** Task responseCount */
43
+ responseCount?: number | null;
44
+ /** Task firstAttempt */
45
+ firstAttempt?: TaskAttempt | null;
46
+ /** Task lastAttempt */
47
+ lastAttempt?: TaskAttempt | null;
48
+ }
49
+ export interface TaskAttempt {
50
+ scheduleTime?: TaskTimestamp | null;
51
+ dispatchTime?: TaskTimestamp | null;
52
+ responseTime?: TaskTimestamp | null;
53
+ responseStatus?: TaskStatus | null;
54
+ }
55
+ export interface TaskTimestamp {
56
+ seconds?: number | Long | string | null;
57
+ nanos?: number | null;
58
+ }
59
+ export type TaskDuration = TaskTimestamp;
60
+ export interface TaskStatus {
61
+ code?: number | null;
62
+ message?: string | null;
19
63
  }
20
64
  //# sourceMappingURL=types.tasks.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.tasks.d.ts","sourceRoot":"","sources":["../../src/types/types.tasks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,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;IACvB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB"}
1
+ {"version":3,"file":"types.tasks.d.ts","sourceRoot":"","sources":["../../src/types/types.tasks.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,OAAO;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,MAAM,EAAE,MAAM,CAAC;IACf,6DAA6D;IAC7D,cAAc,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,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,aAAc,SAAQ,cAAc;IACnD,MAAM,EAAE,MAAM,CAAC;CAChB;AACD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;CACjB;AAGD,MAAM,WAAW,IAAI;IACnB,SAAS,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACjC,gBAAgB;IAChB,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,wBAAwB;IACxB,YAAY,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,sBAAsB;IACtB,UAAU,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IAClC,4BAA4B;IAC5B,gBAAgB,CAAC,EAAE,YAAY,GAAG,IAAI,CAAC;IACvC,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,WAAW,GAAG,IAAI,CAAC;IAClC,uBAAuB;IACvB,WAAW,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAClC;AAED,MAAM,WAAW,WAAW;IAC1B,YAAY,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,YAAY,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,cAAc,CAAC,EAAE,UAAU,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACxC,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAED,MAAM,MAAM,YAAY,GAAG,aAAa,CAAC;AAEzC,MAAM,WAAW,UAAU;IACzB,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.1.79",
3
+ "version": "1.1.81",
4
4
  "description": "Utils for google cloud functions, publishing both CommonJS and ESM builds",
5
5
  "type": "module",
6
6
  "author": "MXPicture",
@@ -37,7 +37,7 @@
37
37
  },
38
38
  "dependencies": {
39
39
  "@google-cloud/tasks": "^6.2.1",
40
- "@mxpicture/gcp-functions-common": "^1.1.79",
40
+ "@mxpicture/gcp-functions-common": "^1.1.81",
41
41
  "express": "^5.2.1",
42
42
  "firebase-admin": "^13.7.0",
43
43
  "firebase-functions": "^7.0.6",