@skedulo/integration-sdk 0.3.3 → 0.4.0
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/CHANGELOG.md +15 -0
- package/README.md +38 -19
- package/dist/actions/action-registry.d.ts.map +1 -1
- package/dist/actions/action-registry.js +27 -23
- package/dist/actions/action-registry.js.map +1 -1
- package/dist/actions/data-flow/activate.action.d.ts +10 -0
- package/dist/actions/data-flow/activate.action.d.ts.map +1 -0
- package/dist/actions/data-flow/activate.action.js +22 -0
- package/dist/actions/data-flow/activate.action.js.map +1 -0
- package/dist/actions/data-flow/create.action.d.ts +9 -0
- package/dist/actions/data-flow/create.action.d.ts.map +1 -0
- package/dist/actions/data-flow/create.action.js +55 -0
- package/dist/actions/data-flow/create.action.js.map +1 -0
- package/dist/actions/data-flow/deactivate.action.d.ts +9 -0
- package/dist/actions/data-flow/deactivate.action.d.ts.map +1 -0
- package/dist/actions/data-flow/deactivate.action.js +21 -0
- package/dist/actions/data-flow/deactivate.action.js.map +1 -0
- package/dist/actions/data-flow/delete.action.d.ts +10 -0
- package/dist/actions/data-flow/delete.action.d.ts.map +1 -0
- package/dist/actions/data-flow/delete.action.js +33 -0
- package/dist/actions/data-flow/delete.action.js.map +1 -0
- package/dist/actions/data-flow/get.action.d.ts +5 -0
- package/dist/actions/data-flow/get.action.d.ts.map +1 -0
- package/dist/actions/data-flow/get.action.js +22 -0
- package/dist/actions/data-flow/get.action.js.map +1 -0
- package/dist/actions/data-flow/index.d.ts +9 -0
- package/dist/actions/data-flow/index.d.ts.map +1 -0
- package/dist/actions/data-flow/index.js +33 -0
- package/dist/actions/data-flow/index.js.map +1 -0
- package/dist/actions/data-flow/list.action.d.ts +6 -0
- package/dist/actions/data-flow/list.action.d.ts.map +1 -0
- package/dist/actions/data-flow/list.action.js +25 -0
- package/dist/actions/data-flow/list.action.js.map +1 -0
- package/dist/actions/data-flow/shared.d.ts +3 -0
- package/dist/actions/data-flow/shared.d.ts.map +1 -0
- package/dist/actions/data-flow/shared.js +16 -0
- package/dist/actions/data-flow/shared.js.map +1 -0
- package/dist/actions/data-flow/types.d.ts +21 -0
- package/dist/actions/data-flow/types.d.ts.map +1 -0
- package/dist/actions/data-flow/types.js +3 -0
- package/dist/actions/data-flow/types.js.map +1 -0
- package/dist/actions/data-flow/update.action.d.ts +16 -0
- package/dist/actions/data-flow/update.action.d.ts.map +1 -0
- package/dist/actions/data-flow/update.action.js +62 -0
- package/dist/actions/data-flow/update.action.js.map +1 -0
- package/dist/actions/data-flow.action.d.ts.map +1 -1
- package/dist/actions/data-flow.action.js +5 -9
- package/dist/actions/data-flow.action.js.map +1 -1
- package/dist/actions/event/index.d.ts +4 -0
- package/dist/actions/event/index.d.ts.map +1 -0
- package/dist/actions/event/index.js +23 -0
- package/dist/actions/event/index.js.map +1 -0
- package/dist/actions/event/on-skedulo.action.d.ts +4 -0
- package/dist/actions/event/on-skedulo.action.d.ts.map +1 -0
- package/dist/actions/event/on-skedulo.action.js +81 -0
- package/dist/actions/event/on-skedulo.action.js.map +1 -0
- package/dist/actions/event/on-vendor.action.d.ts +4 -0
- package/dist/actions/event/on-vendor.action.d.ts.map +1 -0
- package/dist/actions/event/on-vendor.action.js +39 -0
- package/dist/actions/event/on-vendor.action.js.map +1 -0
- package/dist/actions/event/types.d.ts +28 -0
- package/dist/actions/event/types.d.ts.map +1 -0
- package/dist/actions/event/types.js +3 -0
- package/dist/actions/event/types.js.map +1 -0
- package/dist/actions/event.action.d.ts +9 -4
- package/dist/actions/event.action.d.ts.map +1 -1
- package/dist/actions/event.action.js +57 -33
- package/dist/actions/event.action.js.map +1 -1
- package/dist/actions/metadata/get-fields.action.d.ts +5 -0
- package/dist/actions/metadata/get-fields.action.d.ts.map +1 -0
- package/dist/actions/metadata/get-fields.action.js +26 -0
- package/dist/actions/metadata/get-fields.action.js.map +1 -0
- package/dist/actions/metadata/get-objects.action.d.ts +5 -0
- package/dist/actions/metadata/get-objects.action.d.ts.map +1 -0
- package/dist/actions/metadata/get-objects.action.js +18 -0
- package/dist/actions/metadata/get-objects.action.js.map +1 -0
- package/dist/actions/metadata/get-sample-apis.action.d.ts +5 -0
- package/dist/actions/metadata/get-sample-apis.action.d.ts.map +1 -0
- package/dist/actions/metadata/get-sample-apis.action.js +19 -0
- package/dist/actions/metadata/get-sample-apis.action.js.map +1 -0
- package/dist/actions/metadata/get-sample-records.action.d.ts +5 -0
- package/dist/actions/metadata/get-sample-records.action.d.ts.map +1 -0
- package/dist/actions/metadata/get-sample-records.action.js +33 -0
- package/dist/actions/metadata/get-sample-records.action.js.map +1 -0
- package/dist/actions/metadata/get-templates.action.d.ts +5 -0
- package/dist/actions/metadata/get-templates.action.d.ts.map +1 -0
- package/dist/actions/metadata/get-templates.action.js +19 -0
- package/dist/actions/metadata/get-templates.action.js.map +1 -0
- package/dist/actions/metadata/index.d.ts +7 -0
- package/dist/actions/metadata/index.d.ts.map +1 -0
- package/dist/actions/metadata/index.js +29 -0
- package/dist/actions/metadata/index.js.map +1 -0
- package/dist/actions/metadata/shared.d.ts +6 -0
- package/dist/actions/metadata/shared.d.ts.map +1 -0
- package/dist/actions/metadata/shared.js +11 -0
- package/dist/actions/metadata/shared.js.map +1 -0
- package/dist/actions/metadata/types.d.ts +38 -0
- package/dist/actions/metadata/types.d.ts.map +1 -0
- package/dist/actions/metadata/types.js +3 -0
- package/dist/actions/metadata/types.js.map +1 -0
- package/dist/actions/scheduled-job/create.action.d.ts +5 -0
- package/dist/actions/scheduled-job/create.action.d.ts.map +1 -0
- package/dist/actions/scheduled-job/create.action.js +53 -0
- package/dist/actions/scheduled-job/create.action.js.map +1 -0
- package/dist/actions/scheduled-job/delete.action.d.ts +15 -0
- package/dist/actions/scheduled-job/delete.action.d.ts.map +1 -0
- package/dist/actions/scheduled-job/delete.action.js +42 -0
- package/dist/actions/scheduled-job/delete.action.js.map +1 -0
- package/dist/actions/scheduled-job/get.action.d.ts +7 -0
- package/dist/actions/scheduled-job/get.action.d.ts.map +1 -0
- package/dist/actions/scheduled-job/get.action.js +23 -0
- package/dist/actions/scheduled-job/get.action.js.map +1 -0
- package/dist/actions/scheduled-job/index.d.ts +7 -0
- package/dist/actions/scheduled-job/index.d.ts.map +1 -0
- package/dist/actions/scheduled-job/index.js +29 -0
- package/dist/actions/scheduled-job/index.js.map +1 -0
- package/dist/actions/scheduled-job/list.action.d.ts +5 -0
- package/dist/actions/scheduled-job/list.action.d.ts.map +1 -0
- package/dist/actions/scheduled-job/list.action.js +18 -0
- package/dist/actions/scheduled-job/list.action.js.map +1 -0
- package/dist/actions/scheduled-job/shared.d.ts +30 -0
- package/dist/actions/scheduled-job/shared.d.ts.map +1 -0
- package/dist/actions/scheduled-job/shared.js +129 -0
- package/dist/actions/scheduled-job/shared.js.map +1 -0
- package/dist/actions/scheduled-job/types.d.ts +23 -0
- package/dist/actions/scheduled-job/types.d.ts.map +1 -0
- package/dist/actions/scheduled-job/types.js +3 -0
- package/dist/actions/scheduled-job/types.js.map +1 -0
- package/dist/actions/scheduled-job/update.action.d.ts +5 -0
- package/dist/actions/scheduled-job/update.action.d.ts.map +1 -0
- package/dist/actions/scheduled-job/update.action.js +64 -0
- package/dist/actions/scheduled-job/update.action.js.map +1 -0
- package/dist/actions/scheduled-job.action.d.ts +73 -0
- package/dist/actions/scheduled-job.action.d.ts.map +1 -0
- package/dist/actions/scheduled-job.action.js +355 -0
- package/dist/actions/scheduled-job.action.js.map +1 -0
- package/dist/actions/setup.action.js +1 -1
- package/dist/actions/setup.action.js.map +1 -1
- package/dist/actions/sync/index.d.ts +4 -0
- package/dist/actions/sync/index.d.ts.map +1 -0
- package/dist/actions/sync/index.js +23 -0
- package/dist/actions/sync/index.js.map +1 -0
- package/dist/actions/sync/run-flow.action.d.ts +8 -0
- package/dist/actions/sync/run-flow.action.d.ts.map +1 -0
- package/dist/actions/sync/run-flow.action.js +81 -0
- package/dist/actions/sync/run-flow.action.js.map +1 -0
- package/dist/actions/sync/run-job.action.d.ts +11 -0
- package/dist/actions/sync/run-job.action.d.ts.map +1 -0
- package/dist/actions/sync/run-job.action.js +75 -0
- package/dist/actions/sync/run-job.action.js.map +1 -0
- package/dist/actions/sync/types.d.ts +41 -0
- package/dist/actions/sync/types.d.ts.map +1 -0
- package/dist/actions/sync/types.js +3 -0
- package/dist/actions/sync/types.js.map +1 -0
- package/dist/actions/sync.action.d.ts +8 -47
- package/dist/actions/sync.action.d.ts.map +1 -1
- package/dist/actions/sync.action.js +30 -150
- package/dist/actions/sync.action.js.map +1 -1
- package/dist/actions/utils/action-names.d.ts +23 -4
- package/dist/actions/utils/action-names.d.ts.map +1 -1
- package/dist/actions/utils/action-names.js +23 -4
- package/dist/actions/utils/action-names.js.map +1 -1
- package/dist/actions/utils/define-action.d.ts +36 -0
- package/dist/actions/utils/define-action.d.ts.map +1 -0
- package/dist/actions/utils/define-action.js +43 -0
- package/dist/actions/utils/define-action.js.map +1 -0
- package/dist/actions/utils/errors.d.ts +54 -8
- package/dist/actions/utils/errors.d.ts.map +1 -1
- package/dist/actions/utils/errors.js +104 -14
- package/dist/actions/utils/errors.js.map +1 -1
- package/dist/actions/utils/helpers.d.ts.map +1 -1
- package/dist/actions/utils/helpers.js +2 -1
- package/dist/actions/utils/helpers.js.map +1 -1
- package/dist/actions/utils/metrics.d.ts +12 -0
- package/dist/actions/utils/metrics.d.ts.map +1 -0
- package/dist/actions/utils/metrics.js +12 -0
- package/dist/actions/utils/metrics.js.map +1 -0
- package/dist/actions/utils/middleware.d.ts +39 -0
- package/dist/actions/utils/middleware.d.ts.map +1 -0
- package/dist/actions/utils/middleware.js +85 -0
- package/dist/actions/utils/middleware.js.map +1 -0
- package/dist/actions/utils/types.d.ts +18 -6
- package/dist/actions/utils/types.d.ts.map +1 -1
- package/dist/adapters/base-adapter-handler.d.ts +10 -0
- package/dist/adapters/base-adapter-handler.d.ts.map +1 -1
- package/dist/adapters/base-adapter-handler.js +30 -33
- package/dist/adapters/base-adapter-handler.js.map +1 -1
- package/dist/browser.d.ts +2 -0
- package/dist/browser.d.ts.map +1 -1
- package/dist/browser.js +3 -1
- package/dist/browser.js.map +1 -1
- package/dist/clients/integration-config.client.d.ts +21 -0
- package/dist/clients/integration-config.client.d.ts.map +1 -0
- package/dist/clients/integration-config.client.js +44 -0
- package/dist/clients/integration-config.client.js.map +1 -0
- package/dist/context.d.ts +18 -3
- package/dist/context.d.ts.map +1 -1
- package/dist/context.js +21 -5
- package/dist/context.js.map +1 -1
- package/dist/index.d.ts +11 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +30 -1
- package/dist/index.js.map +1 -1
- package/dist/interfaces/data-flow-spec.interface.d.ts +14 -21
- package/dist/interfaces/data-flow-spec.interface.d.ts.map +1 -1
- package/dist/interfaces/data-flow-spec.interface.js +10 -26
- package/dist/interfaces/data-flow-spec.interface.js.map +1 -1
- package/dist/interfaces/integration-capabilities.interface.d.ts +2 -2
- package/dist/interfaces/scheduled-job.interface.d.ts +40 -0
- package/dist/interfaces/scheduled-job.interface.d.ts.map +1 -0
- package/dist/interfaces/scheduled-job.interface.js +38 -0
- package/dist/interfaces/scheduled-job.interface.js.map +1 -0
- package/dist/services/dataflow.service.d.ts +13 -6
- package/dist/services/dataflow.service.d.ts.map +1 -1
- package/dist/services/dataflow.service.js +34 -57
- package/dist/services/dataflow.service.js.map +1 -1
- package/dist/services/sync-runner.d.ts +7 -0
- package/dist/services/sync-runner.d.ts.map +1 -1
- package/dist/services/sync-runner.js +38 -45
- package/dist/services/sync-runner.js.map +1 -1
- package/dist/types.d.ts +2 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +4 -1
- package/dist/types.js.map +1 -1
- package/dist/utils/artifact-builder.d.ts +41 -16
- package/dist/utils/artifact-builder.d.ts.map +1 -1
- package/dist/utils/artifact-builder.js +93 -18
- package/dist/utils/artifact-builder.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.readConfig = readConfig;
|
|
4
|
+
exports.jobCron = jobCron;
|
|
5
|
+
exports.jobShouldRun = jobShouldRun;
|
|
6
|
+
exports.reconcileJobArtifact = reconcileJobArtifact;
|
|
7
|
+
exports.validateFlowIds = validateFlowIds;
|
|
8
|
+
exports.writeConfigThenArtifact = writeConfigThenArtifact;
|
|
9
|
+
exports.asRecord = asRecord;
|
|
10
|
+
exports.parseName = parseName;
|
|
11
|
+
exports.parseIntervalUnit = parseIntervalUnit;
|
|
12
|
+
exports.parseFlowIds = parseFlowIds;
|
|
13
|
+
exports.parseWebhookName = parseWebhookName;
|
|
14
|
+
const pulse_solution_services_1 = require("@skedulo/pulse-solution-services");
|
|
15
|
+
const scheduled_job_interface_1 = require("../../interfaces/scheduled-job.interface");
|
|
16
|
+
const artifact_builder_1 = require("../../utils/artifact-builder");
|
|
17
|
+
const errors_1 = require("../utils/errors");
|
|
18
|
+
function readConfig(ctx, integrationType) {
|
|
19
|
+
return ctx.integrationConfigClient.get(integrationType).then((raw) => (0, scheduled_job_interface_1.asIntegrationConfig)(raw));
|
|
20
|
+
}
|
|
21
|
+
function jobCron(job) {
|
|
22
|
+
return (0, artifact_builder_1.intervalMinutesToCron)((0, artifact_builder_1.jobIntervalToMinutes)(job));
|
|
23
|
+
}
|
|
24
|
+
/** A job fires only when enabled with at least one flow. */
|
|
25
|
+
function jobShouldRun(job) {
|
|
26
|
+
return job.enabled && job.flow_ids.length > 0;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Reconcile the ES webhook for a job: provision when it should run, otherwise
|
|
30
|
+
* tear it down (404-tolerant). `webhook_name` is both the artifact name and the
|
|
31
|
+
* job-id header.
|
|
32
|
+
*/
|
|
33
|
+
async function reconcileJobArtifact(ctx, job) {
|
|
34
|
+
const client = ctx.newArtifactClient(pulse_solution_services_1.ArtifactType.WEBHOOK);
|
|
35
|
+
if (jobShouldRun(job)) {
|
|
36
|
+
await (0, artifact_builder_1.upsertArtifact)(client, job.webhook_name, (0, artifact_builder_1.buildJobWebhookArtifact)({
|
|
37
|
+
webhookName: job.webhook_name,
|
|
38
|
+
url: (0, artifact_builder_1.functionCallbackUrl)(ctx.integrationType),
|
|
39
|
+
cron: jobCron(job),
|
|
40
|
+
}));
|
|
41
|
+
}
|
|
42
|
+
else {
|
|
43
|
+
await (0, artifact_builder_1.deleteArtifactIfExists)(client, job.webhook_name);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Validate that every `flow_id` belongs to this integration and that no id is
|
|
48
|
+
* already claimed by another job (J5 — the per-flow cursor can't be shared).
|
|
49
|
+
*/
|
|
50
|
+
async function validateFlowIds(ctx, integrationType, flowIds, otherJobs) {
|
|
51
|
+
const claimed = new Map();
|
|
52
|
+
for (const j of otherJobs) {
|
|
53
|
+
for (const id of j.flow_ids)
|
|
54
|
+
claimed.set(id, j.webhook_name);
|
|
55
|
+
}
|
|
56
|
+
for (const id of flowIds) {
|
|
57
|
+
const owner = claimed.get(id);
|
|
58
|
+
if (owner) {
|
|
59
|
+
throw new errors_1.InvalidInputError(`Flow ${id} is already in scheduled job '${owner}'`);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
if (flowIds.length === 0)
|
|
63
|
+
return;
|
|
64
|
+
const existing = await ctx.dataFlowService.list({ integrationType });
|
|
65
|
+
const validIds = new Set(existing.map((f) => f.id));
|
|
66
|
+
for (const id of flowIds) {
|
|
67
|
+
if (!validIds.has(id)) {
|
|
68
|
+
throw new errors_1.InvalidInputError(`Flow ${id} does not exist for integration '${integrationType}'`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Two-phase fail-closed write for create/update: persist config first, then
|
|
74
|
+
* reconcile the ES artifact. If the artifact step throws, roll the config back
|
|
75
|
+
* to `prev` (IS uses replace semantics) before re-raising — no orphaned webhook,
|
|
76
|
+
* no lost config.
|
|
77
|
+
*/
|
|
78
|
+
async function writeConfigThenArtifact(ctx, integrationType, prev, next, job) {
|
|
79
|
+
await ctx.integrationConfigClient.replace(integrationType, next);
|
|
80
|
+
try {
|
|
81
|
+
await reconcileJobArtifact(ctx, job);
|
|
82
|
+
}
|
|
83
|
+
catch (err) {
|
|
84
|
+
try {
|
|
85
|
+
await ctx.integrationConfigClient.replace(integrationType, prev);
|
|
86
|
+
}
|
|
87
|
+
catch (_a) {
|
|
88
|
+
// best-effort rollback; surface the original artifact error
|
|
89
|
+
}
|
|
90
|
+
throw err;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
// ── input parsing helpers ────────────────────────────────────────────────────
|
|
94
|
+
function asRecord(raw) {
|
|
95
|
+
return (raw !== null && raw !== void 0 ? raw : {});
|
|
96
|
+
}
|
|
97
|
+
function parseName(value) {
|
|
98
|
+
if (typeof value !== 'string' || value.trim().length === 0) {
|
|
99
|
+
throw new errors_1.InvalidInputError('name must be a non-empty string');
|
|
100
|
+
}
|
|
101
|
+
return value;
|
|
102
|
+
}
|
|
103
|
+
function parseIntervalUnit(value) {
|
|
104
|
+
if (value === scheduled_job_interface_1.JobIntervalUnit.MINUTES || value === scheduled_job_interface_1.JobIntervalUnit.HOURS)
|
|
105
|
+
return value;
|
|
106
|
+
throw new errors_1.InvalidInputError('interval_unit must be "minutes" or "hours"');
|
|
107
|
+
}
|
|
108
|
+
function parseFlowIds(value) {
|
|
109
|
+
if (!Array.isArray(value) || value.some((id) => !Number.isInteger(id) || id <= 0)) {
|
|
110
|
+
throw new errors_1.InvalidInputError('flow_ids must be an array of positive integers');
|
|
111
|
+
}
|
|
112
|
+
// Reject duplicates within the same job — ordering must be unambiguous.
|
|
113
|
+
if (new Set(value).size !== value.length) {
|
|
114
|
+
throw new errors_1.InvalidInputError('flow_ids must not contain duplicates');
|
|
115
|
+
}
|
|
116
|
+
return value;
|
|
117
|
+
}
|
|
118
|
+
function parseWebhookName(raw) {
|
|
119
|
+
var _a;
|
|
120
|
+
const obj = asRecord(raw);
|
|
121
|
+
// Accept both casings at the wire boundary: the persisted shape uses
|
|
122
|
+
// `webhook_name`, while UI/TS callers send `webhookName`.
|
|
123
|
+
const name = (_a = obj.webhook_name) !== null && _a !== void 0 ? _a : obj.webhookName;
|
|
124
|
+
if (typeof name !== 'string' || name.length === 0) {
|
|
125
|
+
throw new errors_1.InvalidInputError('webhook_name must be a non-empty string');
|
|
126
|
+
}
|
|
127
|
+
return name;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=shared.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"shared.js","sourceRoot":"","sources":["../../../src/actions/scheduled-job/shared.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Adapter } from '../../interfaces/adapter.interface';
|
|
2
|
+
import type { AdapterRegistry } from '../../adapters/adapter-registry';
|
|
3
|
+
import type { JobIntervalUnit } from '../../interfaces/scheduled-job.interface';
|
|
4
|
+
export type JobDeps = {
|
|
5
|
+
adapter: Adapter;
|
|
6
|
+
registry: AdapterRegistry;
|
|
7
|
+
};
|
|
8
|
+
export interface CreateJobInput {
|
|
9
|
+
name: string;
|
|
10
|
+
interval_value: number;
|
|
11
|
+
interval_unit: JobIntervalUnit;
|
|
12
|
+
flow_ids: number[];
|
|
13
|
+
enabled: boolean;
|
|
14
|
+
}
|
|
15
|
+
export interface UpdateJobInput {
|
|
16
|
+
webhook_name: string;
|
|
17
|
+
name?: string;
|
|
18
|
+
interval_value?: number;
|
|
19
|
+
interval_unit?: JobIntervalUnit;
|
|
20
|
+
flow_ids?: number[];
|
|
21
|
+
enabled?: boolean;
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/actions/scheduled-job/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,oCAAoC,CAAC;AAClE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,0CAA0C,CAAC;AAEhF,MAAM,MAAM,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAAC;AAEtE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/actions/scheduled-job/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { ScheduledJob } from '../../interfaces/scheduled-job.interface';
|
|
2
|
+
import type { Action } from '../utils/types';
|
|
3
|
+
import type { JobDeps, UpdateJobInput } from './types';
|
|
4
|
+
export declare function makeScheduledJobUpdateAction(deps: JobDeps): Action<UpdateJobInput, ScheduledJob>;
|
|
5
|
+
//# sourceMappingURL=update.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.action.d.ts","sourceRoot":"","sources":["../../../src/actions/scheduled-job/update.action.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAqB,YAAY,EAAE,MAAM,0CAA0C,CAAC;AAKhG,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAW7C,OAAO,KAAK,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEvD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAyDhG"}
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.makeScheduledJobUpdateAction = makeScheduledJobUpdateAction;
|
|
4
|
+
const artifact_builder_1 = require("../../utils/artifact-builder");
|
|
5
|
+
const helpers_1 = require("../../utils/helpers");
|
|
6
|
+
const action_names_1 = require("../utils/action-names");
|
|
7
|
+
const errors_1 = require("../utils/errors");
|
|
8
|
+
const shared_1 = require("./shared");
|
|
9
|
+
function makeScheduledJobUpdateAction(deps) {
|
|
10
|
+
return {
|
|
11
|
+
name: action_names_1.ACTIONS.scheduledJob.update,
|
|
12
|
+
parseInput(raw) {
|
|
13
|
+
const obj = (0, shared_1.asRecord)(raw);
|
|
14
|
+
const input = { webhook_name: (0, shared_1.parseWebhookName)(raw) };
|
|
15
|
+
if (obj.name !== undefined)
|
|
16
|
+
input.name = (0, shared_1.parseName)(obj.name);
|
|
17
|
+
if (obj.interval_value !== undefined) {
|
|
18
|
+
if (typeof obj.interval_value !== 'number') {
|
|
19
|
+
throw new errors_1.InvalidInputError('interval_value must be a number');
|
|
20
|
+
}
|
|
21
|
+
input.interval_value = obj.interval_value;
|
|
22
|
+
}
|
|
23
|
+
if (obj.interval_unit !== undefined)
|
|
24
|
+
input.interval_unit = (0, shared_1.parseIntervalUnit)(obj.interval_unit);
|
|
25
|
+
if (obj.flow_ids !== undefined)
|
|
26
|
+
input.flow_ids = (0, shared_1.parseFlowIds)(obj.flow_ids);
|
|
27
|
+
if (obj.enabled !== undefined)
|
|
28
|
+
input.enabled = Boolean(obj.enabled);
|
|
29
|
+
return input;
|
|
30
|
+
},
|
|
31
|
+
async handler(input, ctx) {
|
|
32
|
+
var _a, _b, _c, _d, _e;
|
|
33
|
+
if (!(0, helpers_1.isAdminRequest)(ctx.skedContext)) {
|
|
34
|
+
throw new errors_1.ForbiddenError('scheduled-job.update requires admin privileges');
|
|
35
|
+
}
|
|
36
|
+
const integrationType = deps.adapter.integrationType;
|
|
37
|
+
const prev = await (0, shared_1.readConfig)(ctx, integrationType);
|
|
38
|
+
const existing = prev.scheduled_jobs.find((j) => j.webhook_name === input.webhook_name);
|
|
39
|
+
if (!existing) {
|
|
40
|
+
throw new errors_1.NotFoundError('JOB_NOT_FOUND', `Scheduled job '${input.webhook_name}' not found`);
|
|
41
|
+
}
|
|
42
|
+
// webhook_name is immutable — only the mutable fields change.
|
|
43
|
+
const merged = {
|
|
44
|
+
webhook_name: existing.webhook_name,
|
|
45
|
+
name: (_a = input.name) !== null && _a !== void 0 ? _a : existing.name,
|
|
46
|
+
interval_value: (_b = input.interval_value) !== null && _b !== void 0 ? _b : existing.interval_value,
|
|
47
|
+
interval_unit: (_c = input.interval_unit) !== null && _c !== void 0 ? _c : existing.interval_unit,
|
|
48
|
+
flow_ids: (_d = input.flow_ids) !== null && _d !== void 0 ? _d : existing.flow_ids,
|
|
49
|
+
enabled: (_e = input.enabled) !== null && _e !== void 0 ? _e : existing.enabled,
|
|
50
|
+
};
|
|
51
|
+
(0, artifact_builder_1.jobIntervalToMinutes)(merged); // re-validate bounds after merge
|
|
52
|
+
const others = prev.scheduled_jobs.filter((j) => j.webhook_name !== input.webhook_name);
|
|
53
|
+
if (input.flow_ids !== undefined) {
|
|
54
|
+
await (0, shared_1.validateFlowIds)(ctx, integrationType, merged.flow_ids, others);
|
|
55
|
+
}
|
|
56
|
+
const next = {
|
|
57
|
+
scheduled_jobs: prev.scheduled_jobs.map((j) => j.webhook_name === merged.webhook_name ? merged : j),
|
|
58
|
+
};
|
|
59
|
+
await (0, shared_1.writeConfigThenArtifact)(ctx, integrationType, prev, next, merged);
|
|
60
|
+
return merged;
|
|
61
|
+
},
|
|
62
|
+
};
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=update.action.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.action.js","sourceRoot":"","sources":["../../../src/actions/scheduled-job/update.action.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
import type { Adapter } from '../interfaces/adapter.interface';
|
|
2
|
+
import type { AdapterRegistry } from '../adapters/adapter-registry';
|
|
3
|
+
import type { BatchResult } from '../interfaces/sync-result.interface';
|
|
4
|
+
import { JobIntervalUnit, type ScheduledJob } from '../interfaces/scheduled-job.interface';
|
|
5
|
+
import type { Action } from './utils/types';
|
|
6
|
+
type JobDeps = {
|
|
7
|
+
adapter: Adapter;
|
|
8
|
+
registry: AdapterRegistry;
|
|
9
|
+
};
|
|
10
|
+
interface RunJobInput {
|
|
11
|
+
webhookName: string;
|
|
12
|
+
}
|
|
13
|
+
type PerFlowResultBase = {
|
|
14
|
+
flowId: number;
|
|
15
|
+
sourceObject?: string;
|
|
16
|
+
targetObject?: string;
|
|
17
|
+
};
|
|
18
|
+
export type PerFlowResult = PerFlowResultBase & ({
|
|
19
|
+
skipped: true;
|
|
20
|
+
reason: string;
|
|
21
|
+
} | {
|
|
22
|
+
error: string;
|
|
23
|
+
} | (BatchResult & {
|
|
24
|
+
durationMs: number;
|
|
25
|
+
}));
|
|
26
|
+
export interface RunJobOutput {
|
|
27
|
+
webhookName: string;
|
|
28
|
+
skipped?: boolean;
|
|
29
|
+
results: PerFlowResult[];
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Run a scheduled job: load it from config by `webhook_name`, then run its
|
|
33
|
+
* `flow_ids` sequentially in order. Continue-on-error — one flow failing does
|
|
34
|
+
* not stop the rest; the failed flow's cursor holds (SyncRunner only advances on
|
|
35
|
+
* zero failures) so it retries next cycle. Per-flow direction is decided by the
|
|
36
|
+
* flow's own `sourceSystem`.
|
|
37
|
+
*/
|
|
38
|
+
export declare function makeRunJobAction(deps: JobDeps): Action<RunJobInput, RunJobOutput>;
|
|
39
|
+
export declare function makeScheduledJobListAction(deps: JobDeps): Action<void, ScheduledJob[]>;
|
|
40
|
+
export declare function makeScheduledJobGetAction(deps: JobDeps): Action<{
|
|
41
|
+
webhookName: string;
|
|
42
|
+
}, ScheduledJob>;
|
|
43
|
+
interface CreateJobInput {
|
|
44
|
+
name: string;
|
|
45
|
+
interval_value: number;
|
|
46
|
+
interval_unit: JobIntervalUnit;
|
|
47
|
+
flow_ids: number[];
|
|
48
|
+
enabled: boolean;
|
|
49
|
+
}
|
|
50
|
+
export declare function makeScheduledJobCreateAction(deps: JobDeps): Action<CreateJobInput, ScheduledJob>;
|
|
51
|
+
interface UpdateJobInput {
|
|
52
|
+
webhook_name: string;
|
|
53
|
+
name?: string;
|
|
54
|
+
interval_value?: number;
|
|
55
|
+
interval_unit?: JobIntervalUnit;
|
|
56
|
+
flow_ids?: number[];
|
|
57
|
+
enabled?: boolean;
|
|
58
|
+
}
|
|
59
|
+
export declare function makeScheduledJobUpdateAction(deps: JobDeps): Action<UpdateJobInput, ScheduledJob>;
|
|
60
|
+
/**
|
|
61
|
+
* Delete a scheduled job. Config is the source of truth, so the job is dropped
|
|
62
|
+
* from config first, then the webhook is torn down (404-tolerant, best-effort).
|
|
63
|
+
* If ES returns a 5xx the config write still stands and an orphan webhook may
|
|
64
|
+
* remain — safe to retry the delete, which is idempotent.
|
|
65
|
+
*/
|
|
66
|
+
export declare function makeScheduledJobDeleteAction(deps: JobDeps): Action<{
|
|
67
|
+
webhookName: string;
|
|
68
|
+
}, {
|
|
69
|
+
webhookName: string;
|
|
70
|
+
deleted: boolean;
|
|
71
|
+
}>;
|
|
72
|
+
export {};
|
|
73
|
+
//# sourceMappingURL=scheduled-job.action.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduled-job.action.d.ts","sourceRoot":"","sources":["../../src/actions/scheduled-job.action.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,iCAAiC,CAAC;AAC/D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AACpE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qCAAqC,CAAC;AAEvE,OAAO,EAEL,eAAe,EAEf,KAAK,YAAY,EAClB,MAAM,uCAAuC,CAAC;AAe/C,OAAO,KAAK,EAAE,MAAM,EAAa,MAAM,eAAe,CAAC;AAGvD,KAAK,OAAO,GAAG;IAAE,OAAO,EAAE,OAAO,CAAC;IAAC,QAAQ,EAAE,eAAe,CAAA;CAAE,CAAC;AAgH/D,UAAU,WAAW;IACnB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,KAAK,iBAAiB,GAAG;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,YAAY,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AAC1F,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAC3C,CAAC;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,GAAG,CAAC,WAAW,GAAG;IAAE,UAAU,EAAE,MAAM,CAAA;CAAE,CAAC,CAAC,CAAC;AAEnG,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,EAAE,aAAa,EAAE,CAAC;CAC1B;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,WAAW,EAAE,YAAY,CAAC,CA0EjF;AAID,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,YAAY,EAAE,CAAC,CAWtF;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE,YAAY,CAAC,CAe/C;AAID,UAAU,cAAc;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,eAAe,CAAC;IAC/B,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CA+ChG;AAID,UAAU,cAAc;IACtB,YAAY,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,eAAe,CAAC;IAChC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC,cAAc,EAAE,YAAY,CAAC,CAyDhG;AAID;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,OAAO,GACZ,MAAM,CAAC;IAAE,WAAW,EAAE,MAAM,CAAA;CAAE,EAAE;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,CAAC,CA8B5E"}
|