@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.
Files changed (92) hide show
  1. package/.claude/worktrees/agent-a16acadaf5412dffd/jest.config.js +12 -0
  2. package/.claude/worktrees/agent-a33c3e4636d488e49/jest.config.js +12 -0
  3. package/.claude/worktrees/agent-a5b1d2ffa4ceef4a6/jest.config.js +12 -0
  4. package/.claude/worktrees/agent-aa1db4c22eabbde8e/jest.config.js +12 -0
  5. package/.claude/worktrees/agent-ac197ae8c69d7061c/jest.config.js +12 -0
  6. package/CHANGELOG.md +25 -0
  7. package/dist/actions/data-flow/preview.action.d.ts.map +1 -1
  8. package/dist/actions/data-flow/preview.action.js +18 -3
  9. package/dist/actions/data-flow/preview.action.js.map +1 -1
  10. package/dist/actions/event/on-skedulo.action.d.ts.map +1 -1
  11. package/dist/actions/event/on-skedulo.action.js +12 -1
  12. package/dist/actions/event/on-skedulo.action.js.map +1 -1
  13. package/dist/actions/event/on-vendor.action.d.ts.map +1 -1
  14. package/dist/actions/event/on-vendor.action.js +0 -3
  15. package/dist/actions/event/on-vendor.action.js.map +1 -1
  16. package/dist/actions/event/types.d.ts +2 -0
  17. package/dist/actions/event/types.d.ts.map +1 -1
  18. package/dist/actions/utils/types.d.ts +2 -0
  19. package/dist/actions/utils/types.d.ts.map +1 -1
  20. package/dist/adapters/base-adapter-handler.d.ts +2 -0
  21. package/dist/adapters/base-adapter-handler.d.ts.map +1 -1
  22. package/dist/adapters/base-adapter-handler.js +4 -1
  23. package/dist/adapters/base-adapter-handler.js.map +1 -1
  24. package/dist/adapters/skedulo.adapter.d.ts +1 -0
  25. package/dist/adapters/skedulo.adapter.d.ts.map +1 -1
  26. package/dist/adapters/skedulo.adapter.js +25 -18
  27. package/dist/adapters/skedulo.adapter.js.map +1 -1
  28. package/dist/constants.d.ts +6 -0
  29. package/dist/constants.d.ts.map +1 -1
  30. package/dist/constants.js +8 -1
  31. package/dist/constants.js.map +1 -1
  32. package/dist/handlers/metadata.handler.d.ts +17 -0
  33. package/dist/handlers/metadata.handler.d.ts.map +1 -0
  34. package/dist/handlers/metadata.handler.js +50 -0
  35. package/dist/handlers/metadata.handler.js.map +1 -0
  36. package/dist/index.d.ts +2 -1
  37. package/dist/index.d.ts.map +1 -1
  38. package/dist/index.js +5 -2
  39. package/dist/index.js.map +1 -1
  40. package/dist/services/field-mapping.service.d.ts +7 -0
  41. package/dist/services/field-mapping.service.d.ts.map +1 -1
  42. package/dist/services/field-mapping.service.js +16 -0
  43. package/dist/services/field-mapping.service.js.map +1 -1
  44. package/dist/services/sync-runner.d.ts +0 -6
  45. package/dist/services/sync-runner.d.ts.map +1 -1
  46. package/dist/services/sync-runner.js +6 -78
  47. package/dist/services/sync-runner.js.map +1 -1
  48. package/dist/services/sync.service.d.ts +11 -1
  49. package/dist/services/sync.service.d.ts.map +1 -1
  50. package/dist/services/sync.service.js +30 -4
  51. package/dist/services/sync.service.js.map +1 -1
  52. package/dist/utils/coerceFilterValues.d.ts +10 -0
  53. package/dist/utils/coerceFilterValues.d.ts.map +1 -0
  54. package/dist/utils/coerceFilterValues.js +51 -0
  55. package/dist/utils/coerceFilterValues.js.map +1 -0
  56. package/dist/utils/compileFilter.d.ts.map +1 -1
  57. package/dist/utils/compileFilter.js +13 -1
  58. package/dist/utils/compileFilter.js.map +1 -1
  59. package/dist/utils/normalizeDataFlow.d.ts +3 -0
  60. package/dist/utils/normalizeDataFlow.d.ts.map +1 -0
  61. package/dist/utils/normalizeDataFlow.js +37 -0
  62. package/dist/utils/normalizeDataFlow.js.map +1 -0
  63. package/dist/utils.d.ts +2 -0
  64. package/dist/utils.d.ts.map +1 -0
  65. package/dist/utils.js +10 -0
  66. package/dist/utils.js.map +1 -0
  67. package/package.json +2 -2
  68. package/yarn.lock +7 -7
  69. package/dist/actions/data-flow.action.d.ts +0 -62
  70. package/dist/actions/data-flow.action.d.ts.map +0 -1
  71. package/dist/actions/data-flow.action.js +0 -217
  72. package/dist/actions/data-flow.action.js.map +0 -1
  73. package/dist/actions/event.action.d.ts +0 -32
  74. package/dist/actions/event.action.d.ts.map +0 -1
  75. package/dist/actions/event.action.js +0 -113
  76. package/dist/actions/event.action.js.map +0 -1
  77. package/dist/actions/metadata.action.d.ts +0 -44
  78. package/dist/actions/metadata.action.d.ts.map +0 -1
  79. package/dist/actions/metadata.action.js +0 -96
  80. package/dist/actions/metadata.action.js.map +0 -1
  81. package/dist/actions/scheduled-job.action.d.ts +0 -73
  82. package/dist/actions/scheduled-job.action.d.ts.map +0 -1
  83. package/dist/actions/scheduled-job.action.js +0 -355
  84. package/dist/actions/scheduled-job.action.js.map +0 -1
  85. package/dist/actions/sync.action.d.ts +0 -26
  86. package/dist/actions/sync.action.d.ts.map +0 -1
  87. package/dist/actions/sync.action.js +0 -81
  88. package/dist/actions/sync.action.js.map +0 -1
  89. package/dist/services/artifact-builder.d.ts +0 -95
  90. package/dist/services/artifact-builder.d.ts.map +0 -1
  91. package/dist/services/artifact-builder.js +0 -142
  92. 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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"}