@skedulo/integration-sdk 0.8.2 → 0.9.1
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/.claude/worktrees/agent-a16acadaf5412dffd/jest.config.js +12 -0
- package/.claude/worktrees/agent-a33c3e4636d488e49/jest.config.js +12 -0
- package/.claude/worktrees/agent-a5b1d2ffa4ceef4a6/jest.config.js +12 -0
- package/.claude/worktrees/agent-aa1db4c22eabbde8e/jest.config.js +12 -0
- package/.claude/worktrees/agent-ac197ae8c69d7061c/jest.config.js +12 -0
- package/CHANGELOG.md +25 -0
- package/dist/actions/data-flow/preview.action.d.ts.map +1 -1
- package/dist/actions/data-flow/preview.action.js +18 -3
- package/dist/actions/data-flow/preview.action.js.map +1 -1
- package/dist/actions/event/on-skedulo.action.d.ts.map +1 -1
- package/dist/actions/event/on-skedulo.action.js +12 -1
- package/dist/actions/event/on-skedulo.action.js.map +1 -1
- package/dist/actions/event/on-vendor.action.d.ts.map +1 -1
- package/dist/actions/event/on-vendor.action.js +0 -3
- package/dist/actions/event/on-vendor.action.js.map +1 -1
- package/dist/actions/event/types.d.ts +2 -0
- package/dist/actions/event/types.d.ts.map +1 -1
- package/dist/actions/utils/types.d.ts +2 -0
- package/dist/actions/utils/types.d.ts.map +1 -1
- package/dist/adapters/base-adapter-handler.d.ts +2 -0
- package/dist/adapters/base-adapter-handler.d.ts.map +1 -1
- package/dist/adapters/base-adapter-handler.js +4 -1
- package/dist/adapters/base-adapter-handler.js.map +1 -1
- package/dist/adapters/skedulo.adapter.d.ts +1 -0
- package/dist/adapters/skedulo.adapter.d.ts.map +1 -1
- package/dist/adapters/skedulo.adapter.js +25 -18
- package/dist/adapters/skedulo.adapter.js.map +1 -1
- package/dist/constants.d.ts +6 -0
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +8 -1
- package/dist/constants.js.map +1 -1
- package/dist/handlers/metadata.handler.d.ts +17 -0
- package/dist/handlers/metadata.handler.d.ts.map +1 -0
- package/dist/handlers/metadata.handler.js +50 -0
- package/dist/handlers/metadata.handler.js.map +1 -0
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -2
- package/dist/index.js.map +1 -1
- package/dist/services/field-mapping.service.d.ts +7 -0
- package/dist/services/field-mapping.service.d.ts.map +1 -1
- package/dist/services/field-mapping.service.js +16 -0
- package/dist/services/field-mapping.service.js.map +1 -1
- package/dist/services/sync-runner.d.ts +0 -6
- package/dist/services/sync-runner.d.ts.map +1 -1
- package/dist/services/sync-runner.js +6 -78
- package/dist/services/sync-runner.js.map +1 -1
- package/dist/services/sync.service.d.ts +11 -1
- package/dist/services/sync.service.d.ts.map +1 -1
- package/dist/services/sync.service.js +30 -4
- package/dist/services/sync.service.js.map +1 -1
- package/dist/utils/coerceFilterValues.d.ts +10 -0
- package/dist/utils/coerceFilterValues.d.ts.map +1 -0
- package/dist/utils/coerceFilterValues.js +51 -0
- package/dist/utils/coerceFilterValues.js.map +1 -0
- package/dist/utils/compileFilter.d.ts.map +1 -1
- package/dist/utils/compileFilter.js +13 -1
- package/dist/utils/compileFilter.js.map +1 -1
- package/dist/utils/normalizeDataFlow.d.ts +3 -0
- package/dist/utils/normalizeDataFlow.d.ts.map +1 -0
- package/dist/utils/normalizeDataFlow.js +37 -0
- package/dist/utils/normalizeDataFlow.js.map +1 -0
- package/dist/utils.d.ts +2 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +10 -0
- package/dist/utils.js.map +1 -0
- package/package.json +2 -2
- package/yarn.lock +7 -7
- package/dist/actions/data-flow.action.d.ts +0 -62
- package/dist/actions/data-flow.action.d.ts.map +0 -1
- package/dist/actions/data-flow.action.js +0 -217
- package/dist/actions/data-flow.action.js.map +0 -1
- package/dist/actions/event.action.d.ts +0 -32
- package/dist/actions/event.action.d.ts.map +0 -1
- package/dist/actions/event.action.js +0 -113
- package/dist/actions/event.action.js.map +0 -1
- package/dist/actions/metadata.action.d.ts +0 -44
- package/dist/actions/metadata.action.d.ts.map +0 -1
- package/dist/actions/metadata.action.js +0 -96
- package/dist/actions/metadata.action.js.map +0 -1
- package/dist/actions/scheduled-job.action.d.ts +0 -73
- package/dist/actions/scheduled-job.action.d.ts.map +0 -1
- package/dist/actions/scheduled-job.action.js +0 -355
- package/dist/actions/scheduled-job.action.js.map +0 -1
- package/dist/actions/sync.action.d.ts +0 -26
- package/dist/actions/sync.action.d.ts.map +0 -1
- package/dist/actions/sync.action.js +0 -81
- package/dist/actions/sync.action.js.map +0 -1
- package/dist/services/artifact-builder.d.ts +0 -95
- package/dist/services/artifact-builder.d.ts.map +0 -1
- package/dist/services/artifact-builder.js +0 -142
- package/dist/services/artifact-builder.js.map +0 -1
|
@@ -1,142 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.buildArtifactName = buildArtifactName;
|
|
4
|
-
exports.intervalMinutesToCron = intervalMinutesToCron;
|
|
5
|
-
exports.buildSkeduloQuery = buildSkeduloQuery;
|
|
6
|
-
exports.buildScheduledWebhookArtifact = buildScheduledWebhookArtifact;
|
|
7
|
-
exports.buildTriggeredActionArtifact = buildTriggeredActionArtifact;
|
|
8
|
-
exports.upsertArtifact = upsertArtifact;
|
|
9
|
-
exports.deleteArtifactIfExists = deleteArtifactIfExists;
|
|
10
|
-
const action_names_1 = require("../actions/utils/action-names");
|
|
11
|
-
const MAX_NAME_LENGTH = 100;
|
|
12
|
-
function slugify(value) {
|
|
13
|
-
return value
|
|
14
|
-
.toLowerCase()
|
|
15
|
-
.replace(/[^a-z0-9]+/g, '-')
|
|
16
|
-
.replace(/^-+|-+$/g, '');
|
|
17
|
-
}
|
|
18
|
-
/**
|
|
19
|
-
* Deterministic artifact name used as the idempotency key for the
|
|
20
|
-
* webhook / triggered action provisioned for a DataFlow.
|
|
21
|
-
*
|
|
22
|
-
* Format: `sked-int-${integrationType}-${sourceObject}-to-${targetObject}-flow${id}`
|
|
23
|
-
* Throws if the result exceeds 100 chars (we don't truncate, since collisions
|
|
24
|
-
* on the prefix would cause silent cross-flow overwrites).
|
|
25
|
-
*/
|
|
26
|
-
function buildArtifactName(flow, integrationType) {
|
|
27
|
-
if (!integrationType) {
|
|
28
|
-
throw new Error('buildArtifactName requires an integrationType');
|
|
29
|
-
}
|
|
30
|
-
const name = `sked-int-${slugify(integrationType)}-${slugify(flow.sourceObject)}-to-${slugify(flow.targetObject)}-flow${flow.id}`;
|
|
31
|
-
if (name.length > MAX_NAME_LENGTH) {
|
|
32
|
-
throw new Error(`buildArtifactName produced a name of ${name.length} characters (max ${MAX_NAME_LENGTH}): "${name}"`);
|
|
33
|
-
}
|
|
34
|
-
return name;
|
|
35
|
-
}
|
|
36
|
-
/**
|
|
37
|
-
* Convert `intervalMinutes` to a 5-field cron expression.
|
|
38
|
-
* - n <= 1 → `* * * * *` (every minute)
|
|
39
|
-
* - 1 < n < 60 → `*\/n * * * *`
|
|
40
|
-
* - 60 <= n, multiples of 60 → `0 *\/h * * *` (every h hours)
|
|
41
|
-
* - otherwise → fall back to `*\/n * * * *` (cron itself rejects > 59 in min field;
|
|
42
|
-
* callers should pass a divisor of 60 for n >= 60)
|
|
43
|
-
*/
|
|
44
|
-
function intervalMinutesToCron(intervalMinutes) {
|
|
45
|
-
if (!Number.isInteger(intervalMinutes) || intervalMinutes <= 1)
|
|
46
|
-
return '* * * * *';
|
|
47
|
-
if (intervalMinutes < 60)
|
|
48
|
-
return `*/${intervalMinutes} * * * *`;
|
|
49
|
-
if (intervalMinutes % 60 === 0) {
|
|
50
|
-
const hours = intervalMinutes / 60;
|
|
51
|
-
return hours === 1 ? '0 * * * *' : `0 */${hours} * * *`;
|
|
52
|
-
}
|
|
53
|
-
return `*/${intervalMinutes} * * * *`;
|
|
54
|
-
}
|
|
55
|
-
/**
|
|
56
|
-
* GraphQL selection-set fragment for the triggered action's `action.query`.
|
|
57
|
-
* ES executes this against the Skedulo schema and POSTs the result as the
|
|
58
|
-
* function body, so it MUST include every Skedulo field the mapping reads.
|
|
59
|
-
* `UID` is always included since we use it as the record identifier.
|
|
60
|
-
*/
|
|
61
|
-
function buildSkeduloQuery(flow) {
|
|
62
|
-
var _a, _b, _c;
|
|
63
|
-
const fields = new Set(['UID']);
|
|
64
|
-
// IS does not return `sourceFields`; the Skedulo source fields are the
|
|
65
|
-
// mapping expressions (mirrors skedulo.adapter fetch).
|
|
66
|
-
const sourceFields = (_c = (_a = flow.sourceFields) !== null && _a !== void 0 ? _a : (_b = flow.mappingConfig) === null || _b === void 0 ? void 0 : _b.mappings.map((m) => m.expression)) !== null && _c !== void 0 ? _c : [];
|
|
67
|
-
for (const f of sourceFields) {
|
|
68
|
-
if (f && typeof f === 'string')
|
|
69
|
-
fields.add(f);
|
|
70
|
-
}
|
|
71
|
-
return `{ ${Array.from(fields).join(' ')} }`;
|
|
72
|
-
}
|
|
73
|
-
// ── Artifact bodies ──────────────────────────────────────────────────────────
|
|
74
|
-
const ADMIN_AUTH_HEADER = 'Bearer {{ INTEGRATION_ADMIN_TOKEN }}';
|
|
75
|
-
function buildScheduledWebhookArtifact(opts) {
|
|
76
|
-
return {
|
|
77
|
-
name: opts.name,
|
|
78
|
-
metadata: { type: 'Webhook' },
|
|
79
|
-
webhook: {
|
|
80
|
-
type: 'scheduled',
|
|
81
|
-
url: opts.url,
|
|
82
|
-
cron: opts.cron,
|
|
83
|
-
headers: {
|
|
84
|
-
Authorization: ADMIN_AUTH_HEADER,
|
|
85
|
-
[action_names_1.ACTION_HEADER]: opts.action,
|
|
86
|
-
'sked-data-flow-id': String(opts.dataFlowId),
|
|
87
|
-
},
|
|
88
|
-
},
|
|
89
|
-
};
|
|
90
|
-
}
|
|
91
|
-
function buildTriggeredActionArtifact(opts) {
|
|
92
|
-
return {
|
|
93
|
-
name: opts.name,
|
|
94
|
-
metadata: { type: 'TriggeredAction' },
|
|
95
|
-
enabled: true,
|
|
96
|
-
trigger: {
|
|
97
|
-
type: 'object_modified',
|
|
98
|
-
schemaName: opts.schemaName,
|
|
99
|
-
filter: "Operation == 'INSERT' OR Operation == 'UPDATE' OR Operation == 'DELETE'",
|
|
100
|
-
},
|
|
101
|
-
action: {
|
|
102
|
-
type: 'call_url',
|
|
103
|
-
url: opts.url,
|
|
104
|
-
headers: {
|
|
105
|
-
Authorization: ADMIN_AUTH_HEADER,
|
|
106
|
-
[action_names_1.ACTION_HEADER]: action_names_1.ACTIONS.event.onSkedulo,
|
|
107
|
-
'sked-data-flow-id': String(opts.dataFlowId),
|
|
108
|
-
},
|
|
109
|
-
query: opts.query,
|
|
110
|
-
},
|
|
111
|
-
};
|
|
112
|
-
}
|
|
113
|
-
// ── Upsert / delete helpers ──────────────────────────────────────────────────
|
|
114
|
-
/**
|
|
115
|
-
* Idempotent upsert: try `get` then `update`; on any error (including not-found)
|
|
116
|
-
* fall back to `create`. The PSS artifact API is name-keyed, so this collapses
|
|
117
|
-
* "create" and "replace" into a single safe call.
|
|
118
|
-
*/
|
|
119
|
-
async function upsertArtifact(client, name, artifact) {
|
|
120
|
-
try {
|
|
121
|
-
await client.get({ name });
|
|
122
|
-
await client.update({ name }, artifact);
|
|
123
|
-
}
|
|
124
|
-
catch (_a) {
|
|
125
|
-
await client.create({ name }, artifact);
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
/**
|
|
129
|
-
* Delete by name, swallowing not-found errors so deactivate is idempotent.
|
|
130
|
-
* The PSS client throws `Error("HTTP error! Status: 404. …")`; match on that.
|
|
131
|
-
*/
|
|
132
|
-
async function deleteArtifactIfExists(client, name) {
|
|
133
|
-
try {
|
|
134
|
-
await client.delete({ name });
|
|
135
|
-
}
|
|
136
|
-
catch (err) {
|
|
137
|
-
if (err instanceof Error && /Status:\s*404\b/.test(err.message))
|
|
138
|
-
return;
|
|
139
|
-
throw err;
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
//# sourceMappingURL=artifact-builder.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"artifact-builder.js","sourceRoot":"","sources":["../../src/services/artifact-builder.ts"],"names":[],"mappings":"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"}
|