@memberjunction/integration-engine 5.38.0 → 5.40.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.
Files changed (74) hide show
  1. package/dist/ActionMetadataGenerator.d.ts +8 -1
  2. package/dist/ActionMetadataGenerator.d.ts.map +1 -1
  3. package/dist/ActionMetadataGenerator.js +22 -3
  4. package/dist/ActionMetadataGenerator.js.map +1 -1
  5. package/dist/AdaptiveConcurrency.d.ts +85 -0
  6. package/dist/AdaptiveConcurrency.d.ts.map +1 -0
  7. package/dist/AdaptiveConcurrency.js +148 -0
  8. package/dist/AdaptiveConcurrency.js.map +1 -0
  9. package/dist/BaseIntegrationConnector.d.ts +127 -3
  10. package/dist/BaseIntegrationConnector.d.ts.map +1 -1
  11. package/dist/BaseIntegrationConnector.js +126 -11
  12. package/dist/BaseIntegrationConnector.js.map +1 -1
  13. package/dist/BaseRESTIntegrationConnector.d.ts +80 -15
  14. package/dist/BaseRESTIntegrationConnector.d.ts.map +1 -1
  15. package/dist/BaseRESTIntegrationConnector.js +314 -64
  16. package/dist/BaseRESTIntegrationConnector.js.map +1 -1
  17. package/dist/ConflictRecency.d.ts +24 -0
  18. package/dist/ConflictRecency.d.ts.map +1 -0
  19. package/dist/ConflictRecency.js +25 -0
  20. package/dist/ConflictRecency.js.map +1 -0
  21. package/dist/ContentHash.d.ts +28 -0
  22. package/dist/ContentHash.d.ts.map +1 -0
  23. package/dist/ContentHash.js +54 -0
  24. package/dist/ContentHash.js.map +1 -0
  25. package/dist/EnrichSchemaConstraints.d.ts +59 -0
  26. package/dist/EnrichSchemaConstraints.d.ts.map +1 -0
  27. package/dist/EnrichSchemaConstraints.js +168 -0
  28. package/dist/EnrichSchemaConstraints.js.map +1 -0
  29. package/dist/FieldMappingEngine.d.ts +22 -0
  30. package/dist/FieldMappingEngine.d.ts.map +1 -1
  31. package/dist/FieldMappingEngine.js +66 -5
  32. package/dist/FieldMappingEngine.js.map +1 -1
  33. package/dist/HashDiff.d.ts +68 -0
  34. package/dist/HashDiff.d.ts.map +1 -0
  35. package/dist/HashDiff.js +108 -0
  36. package/dist/HashDiff.js.map +1 -0
  37. package/dist/IntegrationActionGenerator.d.ts +93 -0
  38. package/dist/IntegrationActionGenerator.d.ts.map +1 -0
  39. package/dist/IntegrationActionGenerator.js +313 -0
  40. package/dist/IntegrationActionGenerator.js.map +1 -0
  41. package/dist/IntegrationConnectorCreationPipeline.d.ts +86 -0
  42. package/dist/IntegrationConnectorCreationPipeline.d.ts.map +1 -0
  43. package/dist/IntegrationConnectorCreationPipeline.js +226 -0
  44. package/dist/IntegrationConnectorCreationPipeline.js.map +1 -0
  45. package/dist/IntegrationEngine.d.ts +199 -1
  46. package/dist/IntegrationEngine.d.ts.map +1 -1
  47. package/dist/IntegrationEngine.js +1592 -109
  48. package/dist/IntegrationEngine.js.map +1 -1
  49. package/dist/IntegrationSchemaSync.d.ts +82 -0
  50. package/dist/IntegrationSchemaSync.d.ts.map +1 -1
  51. package/dist/IntegrationSchemaSync.js +289 -42
  52. package/dist/IntegrationSchemaSync.js.map +1 -1
  53. package/dist/MatchEngine.d.ts.map +1 -1
  54. package/dist/MatchEngine.js +4 -0
  55. package/dist/MatchEngine.js.map +1 -1
  56. package/dist/RateLimiter.d.ts +117 -0
  57. package/dist/RateLimiter.d.ts.map +1 -0
  58. package/dist/RateLimiter.js +159 -0
  59. package/dist/RateLimiter.js.map +1 -0
  60. package/dist/SyncLogger.d.ts +106 -0
  61. package/dist/SyncLogger.d.ts.map +1 -0
  62. package/dist/SyncLogger.js +176 -0
  63. package/dist/SyncLogger.js.map +1 -0
  64. package/dist/WatermarkService.d.ts +36 -1
  65. package/dist/WatermarkService.d.ts.map +1 -1
  66. package/dist/WatermarkService.js +113 -3
  67. package/dist/WatermarkService.js.map +1 -1
  68. package/dist/index.d.ts +23 -6
  69. package/dist/index.d.ts.map +1 -1
  70. package/dist/index.js +11 -1
  71. package/dist/index.js.map +1 -1
  72. package/dist/types.d.ts +52 -1
  73. package/dist/types.d.ts.map +1 -1
  74. package/package.json +8 -6
@@ -3,7 +3,7 @@
3
3
  * metadata — IntegrationObjects and IntegrationObjectFields.
4
4
  *
5
5
  * For each supported object, this generator emits one action per CRUD verb
6
- * (Get, Create, Update, Delete, Search, List) with strongly-typed ActionParams
6
+ * (Get, Create, Update, Delete, Upsert, Search, List) with strongly-typed ActionParams
7
7
  * derived from the object's fields.
8
8
  *
9
9
  * Output is designed to be written directly to /metadata/ for `mj sync push`.
@@ -18,6 +18,12 @@ export interface IntegrationObjectInfo {
18
18
  Description?: string;
19
19
  /** Whether the connector supports writing to this object */
20
20
  SupportsWrite: boolean;
21
+ /**
22
+ * The unique business property to upsert this object by (e.g. 'email' for HubSpot
23
+ * contacts). When set, the connector's Upsert verb defaults to keying on this property.
24
+ * Optional — objects without a natural upsert key omit it.
25
+ */
26
+ UpsertKey?: string;
21
27
  /** Fields on this object */
22
28
  Fields: IntegrationFieldInfo[];
23
29
  /**
@@ -107,6 +113,7 @@ export declare class ActionMetadataGenerator {
107
113
  private GenerateActionsForObject;
108
114
  private BuildGetAction;
109
115
  private BuildCreateAction;
116
+ private BuildUpsertAction;
110
117
  private BuildUpdateAction;
111
118
  private BuildDeleteAction;
112
119
  private BuildSearchAction;
@@ -1 +1 @@
1
- {"version":3,"file":"ActionMetadataGenerator.d.ts","sourceRoot":"","sources":["../src/ActionMetadataGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionMetadataGenerator.d.ts","sourceRoot":"","sources":["../src/ActionMetadataGenerator.ts"],"names":[],"mappings":"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"}
@@ -3,7 +3,7 @@
3
3
  * metadata — IntegrationObjects and IntegrationObjectFields.
4
4
  *
5
5
  * For each supported object, this generator emits one action per CRUD verb
6
- * (Get, Create, Update, Delete, Search, List) with strongly-typed ActionParams
6
+ * (Get, Create, Update, Delete, Upsert, Search, List) with strongly-typed ActionParams
7
7
  * derived from the object's fields.
8
8
  *
9
9
  * Output is designed to be written directly to /metadata/ for `mj sync push`.
@@ -35,11 +35,12 @@ export class ActionMetadataGenerator {
35
35
  const displayName = obj.DisplayName || this.Humanize(obj.Name);
36
36
  // Get — always generated
37
37
  actions.push(this.BuildGetAction(config, obj, displayName));
38
- // Create/Update/Delete — only if object supports write
38
+ // Create/Update/Delete/Upsert — only if object supports write
39
39
  if (obj.SupportsWrite) {
40
40
  actions.push(this.BuildCreateAction(config, obj, displayName));
41
41
  actions.push(this.BuildUpdateAction(config, obj, displayName));
42
42
  actions.push(this.BuildDeleteAction(config, obj, displayName));
43
+ actions.push(this.BuildUpsertAction(config, obj, displayName));
43
44
  }
44
45
  // Search — if configured
45
46
  if (config.IncludeSearch !== false) {
@@ -78,6 +79,24 @@ export class ActionMetadataGenerator {
78
79
  params.push(this.BuildSystemParam('ExternalID', 'Output', false, `The external ID of the newly created ${displayName} record`));
79
80
  return this.BuildAction(config, obj, 'Create', displayName, `Creates a new ${displayName} record in ${config.IntegrationName}`, params);
80
81
  }
82
+ BuildUpsertAction(config, obj, displayName) {
83
+ const idPropertyDesc = obj.UpsertKey
84
+ ? `The unique field used to match an existing ${displayName} record (defaults to "${obj.UpsertKey}")`
85
+ : `The unique field used to match an existing ${displayName} record (connector default if omitted)`;
86
+ const params = [
87
+ this.BuildSystemParam('CompanyIntegrationID', 'Input', false, 'Optional: specific CompanyIntegration to use'),
88
+ this.BuildSystemParam('IDProperty', 'Input', false, idPropertyDesc),
89
+ ];
90
+ // Input params for writable fields
91
+ for (const field of obj.Fields) {
92
+ if (field.IsReadOnly || field.IsPrimaryKey)
93
+ continue;
94
+ params.push(this.FieldToInputParam(field, false)); // None required — upsert may match an existing record
95
+ }
96
+ // Output
97
+ params.push(this.BuildSystemParam('ExternalID', 'Output', false, `The external ID of the created or updated ${displayName} record`));
98
+ return this.BuildAction(config, obj, 'Upsert', displayName, `Creates or updates a ${displayName} in ${config.IntegrationName} (idempotent upsert keyed on a natural ID)`, params);
99
+ }
81
100
  BuildUpdateAction(config, obj, displayName) {
82
101
  const params = [
83
102
  this.BuildSystemParam('ExternalID', 'Both', true, `The external ID of the ${displayName} record to update`),
@@ -201,7 +220,7 @@ export class ActionMetadataGenerator {
201
220
  if (verb === 'Get') {
202
221
  codes.push({ fields: { ActionID: '@parent:ID', ResultCode: 'NOT_FOUND', IsSuccess: false, Description: 'Record not found' } });
203
222
  }
204
- if (verb === 'Create' || verb === 'Update' || verb === 'Delete') {
223
+ if (verb === 'Create' || verb === 'Update' || verb === 'Delete' || verb === 'Upsert') {
205
224
  codes.push({ fields: { ActionID: '@parent:ID', ResultCode: `${verb.toUpperCase()}_FAILED`, IsSuccess: false, Description: `${verb} operation failed` } });
206
225
  codes.push({ fields: { ActionID: '@parent:ID', ResultCode: 'NOT_SUPPORTED', IsSuccess: false, Description: `${verb} not supported by this connector` } });
207
226
  }
@@ -1 +1 @@
1
- {"version":3,"file":"ActionMetadataGenerator.js","sourceRoot":"","sources":["../src/ActionMetadataGenerator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActionMetadataGenerator.js","sourceRoot":"","sources":["../src/ActionMetadataGenerator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * AIMD (Additive-Increase / Multiplicative-Decrease) concurrency controller for
3
+ * plan.md §7 — "smart-but-careful peak parallelization".
4
+ *
5
+ * Rather than a fixed `syncConcurrency` config, this auto-discovers the highest
6
+ * *safe* in-flight cap at runtime: it ramps the cap up by +1 on every healthy
7
+ * outcome (additive increase) and slashes it by ÷2 on every throttle/error
8
+ * (multiplicative decrease). This is the same control law TCP congestion control
9
+ * uses to find a network's safe throughput — it converges on the source's real
10
+ * peak without tipping into sustained 429s/errors.
11
+ *
12
+ * Pure + dependency-free (no DB, no network, no timers) so it is cheaply and
13
+ * deterministically unit-testable. The engine wires `OnSuccess()` /
14
+ * `OnThrottleOrError()` from each record's per-call outcome and reads the live
15
+ * `Cap` from `RunAdaptive` to bound the promise pool.
16
+ */
17
+ /** Options for {@link AdaptiveConcurrencyController}; all bounds are clamped into a sane order. */
18
+ export interface AdaptiveConcurrencyOptions {
19
+ /** Starting cap. Defaults to {@link AdaptiveConcurrencyController.Min} (conservative ramp-up). */
20
+ start?: number;
21
+ /** Lower bound for the cap — never decreases below this. Defaults to 1. */
22
+ min?: number;
23
+ /** Upper bound for the cap — never increases above this. Defaults to 16. */
24
+ max?: number;
25
+ }
26
+ /**
27
+ * Holds a single adaptive concurrency cap and mutates it under the AIMD law.
28
+ * Stateless beyond the current cap and its bounds; safe to share across a single
29
+ * `RunAdaptive` invocation (all calls run on one async thread, so no locking).
30
+ */
31
+ export declare class AdaptiveConcurrencyController {
32
+ private readonly minCap;
33
+ private readonly maxCap;
34
+ private cap;
35
+ constructor(options?: AdaptiveConcurrencyOptions);
36
+ /** The live in-flight cap. Always within `[Min, Max]`. */
37
+ get Cap(): number;
38
+ /** Lower bound the cap can never fall below. */
39
+ get Min(): number;
40
+ /** Upper bound the cap can never rise above. */
41
+ get Max(): number;
42
+ /** Additive increase: a healthy outcome nudges the cap up by 1, clamped to Max. */
43
+ OnSuccess(): void;
44
+ /** Multiplicative decrease: a throttle/error halves the cap, floored at Min. */
45
+ OnThrottleOrError(): void;
46
+ private static normalizeMin;
47
+ private static normalizeMax;
48
+ private static normalizeStart;
49
+ }
50
+ /** Per-item outcome the worker fn reports back so the controller can adapt the cap. */
51
+ export interface AdaptiveItemOutcome {
52
+ /** True if the call succeeded (drives additive increase). */
53
+ ok: boolean;
54
+ /** True if the call was throttled/rate-limited (429 etc.) — drives multiplicative decrease. */
55
+ throttled?: boolean;
56
+ }
57
+ /** Aggregate result of a {@link RunAdaptive} pass over a batch of items. */
58
+ export interface AdaptiveRunResult {
59
+ /** Number of items whose outcome reported `ok: true`. */
60
+ succeeded: number;
61
+ /** Number of items whose outcome reported `ok: false` (errors, including throttles). */
62
+ failed: number;
63
+ /** Number of outcomes that reported `throttled: true`. */
64
+ throttled: number;
65
+ /** Total items processed (always equals `items.length`). */
66
+ processed: number;
67
+ /** The highest number of fn invocations observed in flight at once during the run. */
68
+ peakInFlight: number;
69
+ /** The cap value at the end of the run (where AIMD converged for this batch). */
70
+ finalCap: number;
71
+ }
72
+ /**
73
+ * Runs `fn` over `items` with at most `controller.Cap` invocations in flight at
74
+ * any instant, re-reading the cap on every scheduling decision so it tracks the
75
+ * controller as AIMD mutates it. Mirrors `IntegrationEngine.runBounded`'s
76
+ * promise-pool shape, but the pool size is dynamic instead of fixed.
77
+ *
78
+ * Each completed call feeds its outcome back into the controller
79
+ * (`OnThrottleOrError` when `throttled` or `!ok`, else `OnSuccess`) so a later
80
+ * item benefits from (or is protected by) what earlier items revealed about the
81
+ * source's limits. No timers are used — concurrency is bounded purely by how
82
+ * many worker promises are permitted to be active.
83
+ */
84
+ export declare function RunAdaptive<T>(items: T[], fn: (item: T) => Promise<AdaptiveItemOutcome>, controller: AdaptiveConcurrencyController): Promise<AdaptiveRunResult>;
85
+ //# sourceMappingURL=AdaptiveConcurrency.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptiveConcurrency.d.ts","sourceRoot":"","sources":["../src/AdaptiveConcurrency.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,mGAAmG;AACnG,MAAM,WAAW,0BAA0B;IACvC,kGAAkG;IAClG,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,2EAA2E;IAC3E,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,GAAG,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;GAIG;AACH,qBAAa,6BAA6B;IACtC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,GAAG,CAAS;gBAER,OAAO,GAAE,0BAA+B;IASpD,0DAA0D;IAC1D,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,gDAAgD;IAChD,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,gDAAgD;IAChD,IAAW,GAAG,IAAI,MAAM,CAEvB;IAED,mFAAmF;IAC5E,SAAS,IAAI,IAAI;IAIxB,gFAAgF;IACzE,iBAAiB,IAAI,IAAI;IAIhC,OAAO,CAAC,MAAM,CAAC,YAAY;IAK3B,OAAO,CAAC,MAAM,CAAC,YAAY;IAM3B,OAAO,CAAC,MAAM,CAAC,cAAc;CAKhC;AAED,uFAAuF;AACvF,MAAM,WAAW,mBAAmB;IAChC,6DAA6D;IAC7D,EAAE,EAAE,OAAO,CAAC;IACZ,+FAA+F;IAC/F,SAAS,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,4EAA4E;AAC5E,MAAM,WAAW,iBAAiB;IAC9B,yDAAyD;IACzD,SAAS,EAAE,MAAM,CAAC;IAClB,wFAAwF;IACxF,MAAM,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,SAAS,EAAE,MAAM,CAAC;IAClB,4DAA4D;IAC5D,SAAS,EAAE,MAAM,CAAC;IAClB,sFAAsF;IACtF,YAAY,EAAE,MAAM,CAAC;IACrB,iFAAiF;IACjF,QAAQ,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;;;;;GAWG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAC/B,KAAK,EAAE,CAAC,EAAE,EACV,EAAE,EAAE,CAAC,IAAI,EAAE,CAAC,KAAK,OAAO,CAAC,mBAAmB,CAAC,EAC7C,UAAU,EAAE,6BAA6B,GAC1C,OAAO,CAAC,iBAAiB,CAAC,CAoC5B"}
@@ -0,0 +1,148 @@
1
+ /**
2
+ * AIMD (Additive-Increase / Multiplicative-Decrease) concurrency controller for
3
+ * plan.md §7 — "smart-but-careful peak parallelization".
4
+ *
5
+ * Rather than a fixed `syncConcurrency` config, this auto-discovers the highest
6
+ * *safe* in-flight cap at runtime: it ramps the cap up by +1 on every healthy
7
+ * outcome (additive increase) and slashes it by ÷2 on every throttle/error
8
+ * (multiplicative decrease). This is the same control law TCP congestion control
9
+ * uses to find a network's safe throughput — it converges on the source's real
10
+ * peak without tipping into sustained 429s/errors.
11
+ *
12
+ * Pure + dependency-free (no DB, no network, no timers) so it is cheaply and
13
+ * deterministically unit-testable. The engine wires `OnSuccess()` /
14
+ * `OnThrottleOrError()` from each record's per-call outcome and reads the live
15
+ * `Cap` from `RunAdaptive` to bound the promise pool.
16
+ */
17
+ /**
18
+ * Holds a single adaptive concurrency cap and mutates it under the AIMD law.
19
+ * Stateless beyond the current cap and its bounds; safe to share across a single
20
+ * `RunAdaptive` invocation (all calls run on one async thread, so no locking).
21
+ */
22
+ export class AdaptiveConcurrencyController {
23
+ constructor(options = {}) {
24
+ const min = AdaptiveConcurrencyController.normalizeMin(options.min);
25
+ const max = AdaptiveConcurrencyController.normalizeMax(options.max, min);
26
+ const start = AdaptiveConcurrencyController.normalizeStart(options.start, min, max);
27
+ this.minCap = min;
28
+ this.maxCap = max;
29
+ this.cap = start;
30
+ }
31
+ /** The live in-flight cap. Always within `[Min, Max]`. */
32
+ get Cap() {
33
+ return this.cap;
34
+ }
35
+ /** Lower bound the cap can never fall below. */
36
+ get Min() {
37
+ return this.minCap;
38
+ }
39
+ /** Upper bound the cap can never rise above. */
40
+ get Max() {
41
+ return this.maxCap;
42
+ }
43
+ /** Additive increase: a healthy outcome nudges the cap up by 1, clamped to Max. */
44
+ OnSuccess() {
45
+ this.cap = Math.min(this.maxCap, this.cap + 1);
46
+ }
47
+ /** Multiplicative decrease: a throttle/error halves the cap, floored at Min. */
48
+ OnThrottleOrError() {
49
+ this.cap = Math.max(this.minCap, Math.floor(this.cap / 2));
50
+ }
51
+ static normalizeMin(min) {
52
+ const n = Number(min);
53
+ return Number.isFinite(n) && n >= 1 ? Math.floor(n) : 1;
54
+ }
55
+ static normalizeMax(max, min) {
56
+ const n = Number(max);
57
+ const candidate = Number.isFinite(n) && n >= 1 ? Math.floor(n) : 16;
58
+ return Math.max(candidate, min);
59
+ }
60
+ static normalizeStart(start, min, max) {
61
+ const n = Number(start);
62
+ const candidate = Number.isFinite(n) && n >= 1 ? Math.floor(n) : min;
63
+ return Math.min(Math.max(candidate, min), max);
64
+ }
65
+ }
66
+ /**
67
+ * Runs `fn` over `items` with at most `controller.Cap` invocations in flight at
68
+ * any instant, re-reading the cap on every scheduling decision so it tracks the
69
+ * controller as AIMD mutates it. Mirrors `IntegrationEngine.runBounded`'s
70
+ * promise-pool shape, but the pool size is dynamic instead of fixed.
71
+ *
72
+ * Each completed call feeds its outcome back into the controller
73
+ * (`OnThrottleOrError` when `throttled` or `!ok`, else `OnSuccess`) so a later
74
+ * item benefits from (or is protected by) what earlier items revealed about the
75
+ * source's limits. No timers are used — concurrency is bounded purely by how
76
+ * many worker promises are permitted to be active.
77
+ */
78
+ export async function RunAdaptive(items, fn, controller) {
79
+ const result = {
80
+ succeeded: 0,
81
+ failed: 0,
82
+ throttled: 0,
83
+ processed: 0,
84
+ peakInFlight: 0,
85
+ finalCap: controller.Cap,
86
+ };
87
+ if (items.length === 0)
88
+ return result;
89
+ const state = { nextIndex: 0, inFlight: 0 };
90
+ const runOne = async (i) => {
91
+ state.inFlight++;
92
+ if (state.inFlight > result.peakInFlight)
93
+ result.peakInFlight = state.inFlight;
94
+ try {
95
+ const outcome = await fn(items[i]);
96
+ applyOutcome(controller, result, outcome);
97
+ }
98
+ finally {
99
+ state.inFlight--;
100
+ result.processed++;
101
+ }
102
+ };
103
+ // Self-scaling pool: spawn up to Max workers (the hard ceiling). Each worker
104
+ // re-reads the LIVE cap before pulling its next item and yields itself when
105
+ // in-flight has reached the current cap — so a mid-run multiplicative
106
+ // decrease genuinely throttles back the active set, and an increase lets a
107
+ // parked worker resume. Workers exit when the batch is drained.
108
+ const workerCount = Math.min(controller.Max, items.length);
109
+ const workers = Array.from({ length: workerCount }, () => adaptiveWorker(items, controller, state, runOne));
110
+ await Promise.all(workers);
111
+ result.finalCap = controller.Cap;
112
+ return result;
113
+ }
114
+ /**
115
+ * One worker in the adaptive pool. Loops claiming items, but before claiming it
116
+ * gates on the LIVE cap: if in-flight already meets/exceeds `controller.Cap`,
117
+ * the worker yields a MACROTASK and re-checks, so the active set tracks the cap
118
+ * as AIMD shrinks or grows it without starving in-flight I/O. Returns when no items remain.
119
+ */
120
+ async function adaptiveWorker(items, controller, state, runOne) {
121
+ while (state.nextIndex < items.length) {
122
+ if (state.inFlight >= controller.Cap) {
123
+ // Over the live cap — park on a MACROTASK (not a microtask) and re-evaluate. A bare
124
+ // `await Promise.resolve()` keeps the microtask queue saturated and starves the in-flight
125
+ // network I/O callbacks (macrotasks) → event-loop stall. setTimeout yields to I/O.
126
+ await new Promise(resolve => setTimeout(resolve, 0));
127
+ continue;
128
+ }
129
+ const i = state.nextIndex++;
130
+ if (i >= items.length)
131
+ return;
132
+ await runOne(i);
133
+ }
134
+ }
135
+ /** Folds one item outcome into both the running tallies and the controller's cap. */
136
+ function applyOutcome(controller, result, outcome) {
137
+ if (outcome.throttled)
138
+ result.throttled++;
139
+ if (outcome.ok)
140
+ result.succeeded++;
141
+ else
142
+ result.failed++;
143
+ if (outcome.throttled || !outcome.ok)
144
+ controller.OnThrottleOrError();
145
+ else
146
+ controller.OnSuccess();
147
+ }
148
+ //# sourceMappingURL=AdaptiveConcurrency.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AdaptiveConcurrency.js","sourceRoot":"","sources":["../src/AdaptiveConcurrency.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import type { UserInfo } from '@memberjunction/core';
2
2
  import type { MJCompanyIntegrationEntity } from '@memberjunction/core-entities';
3
3
  import type { IntegrationObjectInfo, ActionGeneratorConfig } from './ActionMetadataGenerator.js';
4
- import type { ExternalRecord, DefaultFieldMapping, SourceSchemaInfo, IntrospectSchemaOptions, CreateRecordContext, UpdateRecordContext, DeleteRecordContext, GetRecordContext, CRUDResult, SearchContext, SearchResult, ListContext, ListResult } from './types.js';
4
+ import type { ExternalRecord, DefaultFieldMapping, SourceSchemaInfo, IntrospectSchemaOptions, CreateRecordContext, UpdateRecordContext, UpsertRecordContext, DeleteRecordContext, GetRecordContext, CRUDResult, SearchContext, SearchResult, ListContext, ListResult } from './types.js';
5
5
  /** Result of testing a connection to an external system */
6
6
  export interface ConnectionTestResult {
7
7
  /** Whether the connection was successful */
@@ -36,9 +36,32 @@ export interface ExternalFieldSchema {
36
36
  Description?: string;
37
37
  /** Field data type in the external system */
38
38
  DataType: string;
39
- /** Whether the field is required */
39
+ /**
40
+ * Whether the field must be provided when creating a new record.
41
+ * Semantically distinct from AllowsNull — required is a create-time
42
+ * constraint; nullable is a record-state constraint. Often related but
43
+ * not always (e.g. a field can be required on create and become nullable
44
+ * later via update; a field can be optional on create with a default
45
+ * applied that produces a non-null stored value).
46
+ */
40
47
  IsRequired: boolean;
41
- /** Whether the field is a unique identifier */
48
+ /**
49
+ * Whether NULL is a permitted value at rest.
50
+ * Distinct from IsRequired (see above). When the source system reports
51
+ * neither explicit nullability nor a NOT NULL constraint, leave undefined
52
+ * — consumers default to permissive (nullable). Per the framework's
53
+ * provable-only policy, don't infer NOT NULL from sample data.
54
+ */
55
+ AllowsNull?: boolean;
56
+ /**
57
+ * Whether this field is THE primary key of the object.
58
+ * Distinct from IsUniqueKey — an object can have several unique fields
59
+ * (email, phone) of which only one is the PK. Connectors that introspect
60
+ * a source whose docs distinguish PK from unique constraint should set
61
+ * BOTH flags correctly; consumers should treat them independently.
62
+ */
63
+ IsPrimaryKey?: boolean;
64
+ /** Whether the field is a unique identifier (may or may not be the PK) */
42
65
  IsUniqueKey: boolean;
43
66
  /** Whether the field is read-only */
44
67
  IsReadOnly: boolean;
@@ -73,21 +96,50 @@ export interface FetchContext {
73
96
  CurrentOffset?: number;
74
97
  /** Current cursor for cursor-based pagination. Passed by engine on subsequent calls. */
75
98
  CurrentCursor?: string;
99
+ /**
100
+ * KEYSET / seek resume position (plan.md §7): the last-seen value of the connector's
101
+ * StableOrderingKey. The connector fetches `WHERE <key> > AfterKeyValue ORDER BY <key>` so a
102
+ * mid-stream insert/delete cannot corrupt the scan position. Engine passes it on subsequent
103
+ * calls (and on restart-recovery). undefined/null on the first page.
104
+ */
105
+ AfterKeyValue?: string | null;
76
106
  /** Optional list of source field names to request from the external API. When provided, the connector should limit the returned fields to this set. */
77
107
  RequestedSourceFields?: string[];
78
108
  }
109
+ /**
110
+ * A non-fatal diagnostic a connector attaches to a fetch result so the engine surfaces it in the
111
+ * structured run artifact instead of letting it be a swallowed `console.warn`. The canonical use is
112
+ * a second-layer/association object that fetched ZERO records because its parents weren't available
113
+ * (not synced, unmapped, or DAG-ordered wrong) — the classic silent-empty.
114
+ */
115
+ export interface FetchWarning {
116
+ /** Stable machine code, e.g. 'ZERO_PARENTS'. */
117
+ Code: string;
118
+ /** Human-readable explanation. */
119
+ Message: string;
120
+ /** Optional structured context (parent object name, counts, etc.). */
121
+ Data?: Record<string, unknown>;
122
+ }
79
123
  /** Result of a FetchChanges call, containing a batch of records */
80
124
  export interface FetchBatchResult {
81
125
  /** Records retrieved in this batch */
82
126
  Records: ExternalRecord[];
83
127
  /** Whether there are more records to fetch after this batch */
84
128
  HasMore: boolean;
129
+ /**
130
+ * Non-fatal diagnostics from this fetch (e.g. a second-layer object that found zero parents).
131
+ * The engine forwards each to the structured progress artifact as a SyncWarning so the
132
+ * silent-empty case is visible over GraphQL instead of a swallowed console.warn.
133
+ */
134
+ Warnings?: FetchWarning[];
85
135
  /** Updated watermark value after this batch */
86
136
  NewWatermarkValue?: string;
87
137
  /** Next page number to pass back via FetchContext.CurrentPage on the next call (page-based pagination) */
88
138
  NextPage?: number;
89
139
  /** Next offset to pass back via FetchContext.CurrentOffset on the next call (offset-based pagination) */
90
140
  NextOffset?: number;
141
+ /** Next keyset/seek position — the highest StableOrderingKey value in this batch — to pass back via FetchContext.AfterKeyValue (plan.md §7 keyset resume). */
142
+ NextAfterKeyValue?: string;
91
143
  /** Next cursor to pass back via FetchContext.CurrentCursor on the next call (cursor-based pagination) */
92
144
  NextCursor?: string;
93
145
  }
@@ -144,6 +196,19 @@ export interface DefaultIntegrationConfig {
144
196
  * Callers can interrogate a connector instance to determine which
145
197
  * operations it supports before attempting them.
146
198
  */
199
+ /**
200
+ * A connector's declared rate-limit policy for the engine's adaptive token-bucket limiter
201
+ * (plan.md §7). The engine starts at TokensPerSec, cuts multiplicatively on a 429/limit signal,
202
+ * and ramps back up on sustained success (AIMD).
203
+ */
204
+ export interface RateLimitPolicy {
205
+ /** Sustained requests/sec ceiling for this source API. */
206
+ TokensPerSec: number;
207
+ /** Burst capacity. Defaults to TokensPerSec when omitted. */
208
+ Burst?: number;
209
+ /** Multiplicative-decrease factor applied on a throttle signal (0 < f < 1). */
210
+ ThrottleBackoffFactor?: number;
211
+ }
147
212
  export declare abstract class BaseIntegrationConnector {
148
213
  /** Whether this connector supports reading/fetching records. Always true. */
149
214
  get SupportsGet(): boolean;
@@ -151,6 +216,11 @@ export declare abstract class BaseIntegrationConnector {
151
216
  get SupportsCreate(): boolean;
152
217
  /** Whether this connector supports updating existing records in the external system. */
153
218
  get SupportsUpdate(): boolean;
219
+ /**
220
+ * Whether this connector supports idempotent upserts (create-or-update keyed
221
+ * by a unique business property). Connectors override this AND `Upsert` to enable it.
222
+ */
223
+ get SupportsUpsert(): boolean;
154
224
  /** Whether this connector supports deleting records from the external system. */
155
225
  get SupportsDelete(): boolean;
156
226
  /** Whether this connector supports searching/querying records with filters. */
@@ -169,6 +239,13 @@ export declare abstract class BaseIntegrationConnector {
169
239
  * Check `SupportsUpdate` before calling.
170
240
  */
171
241
  UpdateRecord(_ctx: UpdateRecordContext): Promise<CRUDResult>;
242
+ /**
243
+ * Upserts a record — a single idempotent create-or-update keyed by a unique
244
+ * business property (e.g. email), eliminating the search-then-create race window.
245
+ * Override in subclasses whose external system exposes a keyed upsert primitive.
246
+ * Check `SupportsUpsert` before calling.
247
+ */
248
+ Upsert(_ctx: UpsertRecordContext): Promise<CRUDResult>;
172
249
  /**
173
250
  * Deletes a record from the external system.
174
251
  * Override in subclasses that support delete operations.
@@ -192,6 +269,53 @@ export declare abstract class BaseIntegrationConnector {
192
269
  * Check `SupportsListing` before calling.
193
270
  */
194
271
  ListRecords(_ctx: ListContext): Promise<ListResult>;
272
+ /**
273
+ * Builds a CRUDResult for a record CREATE, failing LOUDLY when the external system returned
274
+ * no usable record ID. A 2xx response with an empty/undefined ID means the create did not
275
+ * durably produce a record we can track — returning Success:true there silently loses the
276
+ * record and causes duplicate creates on the next sync (the HubSpot-association class of bug,
277
+ * fixed in next commit 9f718a7e). This makes that failure explicit at the connector boundary.
278
+ */
279
+ protected BuildCreatedResult(externalID: string | undefined | null, statusCode: number, objectName: string): CRUDResult;
280
+ /**
281
+ * Token-bucket rate-limit policy for this connector's source API (plan.md §7 peak-aware rate
282
+ * limiting). `null` → the engine derives a conservative rate from Integration.BatchRequestWaitTime.
283
+ * Override to push to the source's real limits.
284
+ */
285
+ get RateLimitPolicy(): RateLimitPolicy | null;
286
+ /**
287
+ * Parse a Retry-After / rate-limit signal out of a failed response or thrown error into
288
+ * milliseconds so the engine can back off precisely. Return `undefined` when the error is not a
289
+ * throttle (or carries no hint).
290
+ */
291
+ ExtractRetryAfterMs(_error: unknown): number | undefined;
292
+ /**
293
+ * Highest SAFE per-layer concurrency the source tolerates (plan.md §7 peak parallelization) — the
294
+ * ceiling the engine's adaptive controller ramps toward. `null` → use configured syncConcurrency.
295
+ */
296
+ get MaxConcurrencyHint(): number | null;
297
+ /**
298
+ * Name of a stable, monotonic ordering key (PK/identity) usable for KEYSET/seek resume on
299
+ * watermark-less objects (plan.md §7 — resume from last-seen key, robust to mid-stream
300
+ * insert/delete). `null` → keyset resume unavailable for this object.
301
+ */
302
+ StableOrderingKey(_objectName: string): string | null;
303
+ /** Whether this connector supports batched target writes (plan.md §7 aggressive batching). */
304
+ get SupportsBatchWrite(): boolean;
305
+ /** Batch-create. Default loops single-record CreateRecord, so the engine may always call the batch form. */
306
+ BatchCreateRecords(ctxs: CreateRecordContext[]): Promise<CRUDResult[]>;
307
+ /** Batch-update. Default loops single-record UpdateRecord. */
308
+ BatchUpdateRecords(ctxs: UpdateRecordContext[]): Promise<CRUDResult[]>;
309
+ /** Batch-delete. Default loops single-record DeleteRecord. */
310
+ BatchDeleteRecords(ctxs: DeleteRecordContext[]): Promise<CRUDResult[]>;
311
+ private runBatchViaSingles;
312
+ /**
313
+ * Type-driven post-processing hook (plan.md §10): a connector may normalize/enforce a record's
314
+ * values to the resolved column formats AFTER transform/normalize and BEFORE write. Default
315
+ * returns the record unchanged. (Named for this system — NOT MCP, not `take`.) The engine ALSO
316
+ * applies target-type constraint enforcement; this is the connector-side complement.
317
+ */
318
+ PostProcessRecord(record: ExternalRecord): ExternalRecord;
195
319
  /**
196
320
  * Tests connectivity to the external system.
197
321
  * @param companyIntegration - The company integration entity with connection credentials
@@ -1 +1 @@
1
- {"version":3,"file":"BaseIntegrationConnector.d.ts","sourceRoot":"","sources":["../src/BaseIntegrationConnector.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAChF,OAAO,KAAK,EACR,qBAAqB,EACrB,qBAAqB,EACxB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACR,cAAc,EACd,mBAAmB,EACnB,gBAAgB,EAChB,uBAAuB,EACvB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EACb,MAAM,YAAY,CAAC;AAEpB,2DAA2D;AAC3D,MAAM,WAAW,oBAAoB;IACjC,4CAA4C;IAC5C,OAAO,EAAE,OAAO,CAAC;IACjB,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,4DAA4D;IAC5D,aAAa,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,kEAAkE;AAClE,MAAM,WAAW,oBAAoB;IACjC,gDAAgD;IAChD,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,yDAAyD;IACzD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,mEAAmE;IACnE,uBAAuB,EAAE,OAAO,CAAC;IACjC,gEAAgE;IAChE,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED,iEAAiE;AACjE,MAAM,WAAW,mBAAmB;IAChC,4BAA4B;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,2BAA2B;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,wDAAwD;IACxD,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6CAA6C;IAC7C,QAAQ,EAAE,MAAM,CAAC;IACjB,oCAAoC;IACpC,UAAU,EAAE,OAAO,CAAC;IACpB,+CAA+C;IAC/C,WAAW,EAAE,OAAO,CAAC;IACrB,qCAAqC;IACrC,UAAU,EAAE,OAAO,CAAC;IACpB,0CAA0C;IAC1C,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+CAA+C;IAC/C,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,gFAAgF;IAChF,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,4EAA4E;IAC5E,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,6EAA6E;IAC7E,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,oEAAoE;AACpE,MAAM,WAAW,YAAY;IACzB,kEAAkE;IAClE,kBAAkB,EAAE,0BAA0B,CAAC;IAC/C,yCAAyC;IACzC,UAAU,EAAE,MAAM,CAAC;IACnB,4EAA4E;IAC5E,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2DAA2D;IAC3D,SAAS,EAAE,MAAM,CAAC;IAClB,qCAAqC;IACrC,WAAW,EAAE,QAAQ,CAAC;IACtB,qGAAqG;IACrG,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,wFAAwF;IACxF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,uJAAuJ;IACvJ,qBAAqB,CAAC,EAAE,MAAM,EAAE,CAAC;CACpC;AAED,mEAAmE;AACnE,MAAM,WAAW,gBAAgB;IAC7B,sCAAsC;IACtC,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,+DAA+D;IAC/D,OAAO,EAAE,OAAO,CAAC;IACjB,+CAA+C;IAC/C,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,0GAA0G;IAC1G,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,yGAAyG;IACzG,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yGAAyG;IACzG,UAAU,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,2DAA2D;AAC3D,MAAM,WAAW,iBAAiB;IAC9B,gEAAgE;IAChE,gBAAgB,EAAE,MAAM,CAAC;IACzB,kEAAkE;IAClE,iBAAiB,EAAE,MAAM,CAAC;IAC1B,iEAAiE;IACjE,gBAAgB,EAAE,MAAM,CAAC;IACzB,+DAA+D;IAC/D,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,sDAAsD;AACtD,eAAO,MAAM,0BAA0B,EAAE,iBAKxC,CAAC;AAEF;;;;;;;;;GASG;AACH,wBAAsB,WAAW,CAAC,CAAC,EAC/B,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,EACnB,SAAS,EAAE,MAAM,EACjB,aAAa,EAAE,MAAM,GACtB,OAAO,CAAC,CAAC,CAAC,CAiBZ;AAED,6DAA6D;AAC7D,MAAM,WAAW,mBAAmB;IAChC,gDAAgD;IAChD,gBAAgB,EAAE,MAAM,CAAC;IACzB,oDAAoD;IACpD,eAAe,EAAE,MAAM,CAAC;IACxB,8BAA8B;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,wCAAwC;IACxC,WAAW,EAAE,OAAO,CAAC;IACrB,8BAA8B;IAC9B,aAAa,EAAE,mBAAmB,EAAE,CAAC;CACxC;AAED,yEAAyE;AACzE,MAAM,WAAW,wBAAwB;IACrC,iFAAiF;IACjF,iBAAiB,EAAE,MAAM,CAAC;IAC1B,kEAAkE;IAClE,cAAc,EAAE,mBAAmB,EAAE,CAAC;CACzC;AAED;;;;;;;;GAQG;AACH,8BAAsB,wBAAwB;IAM1C,6EAA6E;IAC7E,IAAW,WAAW,IAAI,OAAO,CAAiB;IAElD,mFAAmF;IACnF,IAAW,cAAc,IAAI,OAAO,CAAkB;IAEtD,wFAAwF;IACxF,IAAW,cAAc,IAAI,OAAO,CAAkB;IAEtD,iFAAiF;IACjF,IAAW,cAAc,IAAI,OAAO,CAAkB;IAEtD,+EAA+E;IAC/E,IAAW,cAAc,IAAI,OAAO,CAAkB;IAEtD,oEAAoE;IACpE,IAAW,eAAe,IAAI,OAAO,CAAkB;IAMvD;;;;OAIG;IACU,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIzE;;;;OAIG;IACU,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIzE;;;;OAIG;IACU,YAAY,CAAC,IAAI,EAAE,mBAAmB,GAAG,OAAO,CAAC,UAAU,CAAC;IAIzE;;;OAGG;IACU,SAAS,CAAC,IAAI,EAAE,gBAAgB,GAAG,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC;IAI9E;;;;OAIG;IACU,aAAa,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,YAAY,CAAC;IAItE;;;;OAIG;IACU,WAAW,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC;IAMhE;;;;;OAKG;aACa,cAAc,CAC1B,kBAAkB,EAAE,0BAA0B,EAC9C,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,oBAAoB,CAAC;IAEhC;;;;;OAKG;aACa,eAAe,CAC3B,kBAAkB,EAAE,0BAA0B,EAC9C,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,oBAAoB,EAAE,CAAC;IAElC;;;;;;OAMG;aACa,cAAc,CAC1B,kBAAkB,EAAE,0BAA0B,EAC9C,UAAU,EAAE,MAAM,EAClB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,mBAAmB,EAAE,CAAC;IAEjC;;;;;OAKG;aACa,YAAY,CAAC,GAAG,EAAE,YAAY,GAAG,OAAO,CAAC,gBAAgB,CAAC;IAE1E;;;;;;OAMG;IACI,uBAAuB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,GAAG,mBAAmB,EAAE;IAI/F;;;;;OAKG;IACI,uBAAuB,IAAI,wBAAwB,GAAG,IAAI;IAMjE;;;;;;;;OAQG;IACI,qBAAqB,IAAI,qBAAqB,EAAE;IAIvD;;;;;;;OAOG;IACI,wBAAwB,IAAI,qBAAqB,GAAG,IAAI;IAgB/D;;;;;;OAMG;IACH,IAAW,eAAe,IAAI,MAAM,CAEnC;IAID;;;;;;;;;;;;OAYG;IACU,gBAAgB,CACzB,kBAAkB,EAAE,0BAA0B,EAC9C,WAAW,EAAE,QAAQ,EACrB,OAAO,CAAC,EAAE,uBAAuB,GAClC,OAAO,CAAC,gBAAgB,CAAC;CA6E/B"}
1
+ {"version":3,"file":"BaseIntegrationConnector.d.ts","sourceRoot":"","sources":["../src/BaseIntegrationConnector.ts"],"names":[],"mappings":"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"}