@pristine-ts/gcp-scheduling 2.0.16

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.
@@ -0,0 +1,104 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ var __param = (this && this.__param) || function (paramIndex, decorator) {
11
+ return function (target, key) { decorator(target, key, paramIndex); }
12
+ };
13
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
14
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15
+ return new (P || (P = Promise))(function (resolve, reject) {
16
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
18
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
19
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20
+ });
21
+ };
22
+ import { inject, injectable } from "tsyringe";
23
+ import { moduleScoped, ServiceDefinitionTagEnum, tag } from "@pristine-ts/common";
24
+ import { EventResponse } from "@pristine-ts/core";
25
+ import { PubSubEventPayload, PubSubEventType } from "@pristine-ts/gcp";
26
+ import { CloudFunctionGen1HttpEventPayload, CloudFunctionGen2HttpEventPayload, CloudRunHttpEventPayload, GcpFunctionsEventTypeEnum, } from "@pristine-ts/gcp-functions";
27
+ import { GcpSchedulingModuleKeyname } from "../gcp-scheduling.module.keyname";
28
+ /**
29
+ * Handler that picks up Cloud Scheduler ticks. Cloud Scheduler can deliver in two ways:
30
+ *
31
+ * 1. **Pub/Sub target** — the scheduler publishes to a topic; the function/service
32
+ * receives a normal Pub/Sub push delivery. The message attribute `userAgent`
33
+ * starts with `Google-Cloud-Scheduler`, and the message attribute or body
34
+ * carries the job name.
35
+ *
36
+ * 2. **HTTP target** — the scheduler hits an HTTP endpoint with the
37
+ * `X-CloudScheduler: true` and `X-CloudScheduler-JobName` headers set.
38
+ *
39
+ * Both paths end up calling `SchedulerInterface.runTasks(jobName)`. Mirror of
40
+ * `EventBridgeCronEventHandler` in `@pristine-ts/aws-scheduling`.
41
+ */
42
+ let CloudSchedulerEventHandler = class CloudSchedulerEventHandler {
43
+ constructor(scheduler) {
44
+ this.scheduler = scheduler;
45
+ }
46
+ handle(event) {
47
+ return __awaiter(this, void 0, void 0, function* () {
48
+ const jobName = this.extractJobName(event);
49
+ yield this.scheduler.runTasks(jobName !== null && jobName !== void 0 ? jobName : event.id);
50
+ return new EventResponse(event, {});
51
+ });
52
+ }
53
+ supports(event) {
54
+ var _a, _b;
55
+ if (event.payload instanceof PubSubEventPayload && event.type === PubSubEventType.Message) {
56
+ const userAgent = (_a = event.payload.attributes) === null || _a === void 0 ? void 0 : _a["userAgent"];
57
+ return typeof userAgent === "string" && userAgent.startsWith("Google-Cloud-Scheduler");
58
+ }
59
+ if (event.type === GcpFunctionsEventTypeEnum.CloudFunctionGen1HttpEvent ||
60
+ event.type === GcpFunctionsEventTypeEnum.CloudFunctionGen2HttpEvent ||
61
+ event.type === GcpFunctionsEventTypeEnum.CloudRunHttpEvent) {
62
+ const headers = this.getHeaders(event);
63
+ if (!headers) {
64
+ return false;
65
+ }
66
+ const flag = ((_b = headers["x-cloudscheduler"]) !== null && _b !== void 0 ? _b : headers["X-CloudScheduler"]);
67
+ return typeof flag === "string" && flag.toLowerCase() === "true";
68
+ }
69
+ return false;
70
+ }
71
+ extractJobName(event) {
72
+ var _a, _b, _c, _d, _e;
73
+ if (event.payload instanceof PubSubEventPayload) {
74
+ return (_d = (_b = (_a = event.payload.attributes) === null || _a === void 0 ? void 0 : _a["jobName"]) !== null && _b !== void 0 ? _b : (_c = event.payload.attributes) === null || _c === void 0 ? void 0 : _c["job-name"]) !== null && _d !== void 0 ? _d : event.payload.body;
75
+ }
76
+ const headers = this.getHeaders(event);
77
+ if (headers) {
78
+ const job = (_e = headers["x-cloudscheduler-jobname"]) !== null && _e !== void 0 ? _e : headers["X-CloudScheduler-JobName"];
79
+ if (typeof job === "string") {
80
+ return job;
81
+ }
82
+ }
83
+ return undefined;
84
+ }
85
+ getHeaders(event) {
86
+ if (event.payload instanceof CloudFunctionGen1HttpEventPayload
87
+ || event.payload instanceof CloudRunHttpEventPayload) {
88
+ return event.payload.headers;
89
+ }
90
+ if (event.payload instanceof CloudFunctionGen2HttpEventPayload) {
91
+ return event.payload.headers;
92
+ }
93
+ return undefined;
94
+ }
95
+ };
96
+ CloudSchedulerEventHandler = __decorate([
97
+ moduleScoped(GcpSchedulingModuleKeyname),
98
+ tag(ServiceDefinitionTagEnum.EventHandler),
99
+ injectable(),
100
+ __param(0, inject("SchedulerInterface")),
101
+ __metadata("design:paramtypes", [Object])
102
+ ], CloudSchedulerEventHandler);
103
+ export { CloudSchedulerEventHandler };
104
+ //# sourceMappingURL=cloud-scheduler.event-handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-scheduler.event-handler.js","sourceRoot":"","sources":["../../../../src/event-handlers/cloud-scheduler.event-handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from "./cloud-scheduler.event-handler";
2
+ //# sourceMappingURL=event-handlers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"event-handlers.js","sourceRoot":"","sources":["../../../../src/event-handlers/event-handlers.ts"],"names":[],"mappings":"AAAA,cAAc,iCAAiC,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { GcpModule } from "@pristine-ts/gcp";
2
+ import { GcpFunctionsModule } from "@pristine-ts/gcp-functions";
3
+ import { LoggingModule } from "@pristine-ts/logging";
4
+ import { SchedulingModule } from "@pristine-ts/scheduling";
5
+ import { GcpSchedulingModuleKeyname } from "./gcp-scheduling.module.keyname";
6
+ export * from "./event-handlers/event-handlers";
7
+ export * from "./gcp-scheduling.module.keyname";
8
+ export const GcpSchedulingModule = {
9
+ keyname: GcpSchedulingModuleKeyname,
10
+ configurationDefinitions: [],
11
+ importModules: [
12
+ GcpModule,
13
+ GcpFunctionsModule,
14
+ SchedulingModule,
15
+ LoggingModule,
16
+ ],
17
+ providerRegistrations: [],
18
+ };
19
+ //# sourceMappingURL=gcp-scheduling.module.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp-scheduling.module.js","sourceRoot":"","sources":["../../../src/gcp-scheduling.module.ts"],"names":[],"mappings":"AACA,OAAO,EAAC,SAAS,EAAC,MAAM,kBAAkB,CAAC;AAC3C,OAAO,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAC,aAAa,EAAC,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAC,gBAAgB,EAAC,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAC,0BAA0B,EAAC,MAAM,iCAAiC,CAAC;AAE3E,cAAc,iCAAiC,CAAC;AAChD,cAAc,iCAAiC,CAAC;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAoB;IAClD,OAAO,EAAE,0BAA0B;IACnC,wBAAwB,EAAE,EAAE;IAC5B,aAAa,EAAE;QACb,SAAS;QACT,kBAAkB;QAClB,gBAAgB;QAChB,aAAa;KACd;IACD,qBAAqB,EAAE,EAAE;CAC1B,CAAC"}
@@ -0,0 +1,2 @@
1
+ export const GcpSchedulingModuleKeyname = "pristine.gcp-scheduling";
2
+ //# sourceMappingURL=gcp-scheduling.module.keyname.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gcp-scheduling.module.keyname.js","sourceRoot":"","sources":["../../../src/gcp-scheduling.module.keyname.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,0BAA0B,GAAW,yBAAyB,CAAC"}