@memberjunction/integration-engine 6.1.0-edge.3 → 6.1.0-edge.4
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/dist/BaseIntegrationConnector.d.ts +19 -2
- package/dist/BaseIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseIntegrationConnector.js +112 -21
- package/dist/BaseIntegrationConnector.js.map +1 -1
- package/dist/BaseRESTIntegrationConnector.d.ts +14 -1
- package/dist/BaseRESTIntegrationConnector.d.ts.map +1 -1
- package/dist/BaseRESTIntegrationConnector.js +40 -3
- package/dist/BaseRESTIntegrationConnector.js.map +1 -1
- package/dist/BatchIdentity.d.ts +47 -0
- package/dist/BatchIdentity.d.ts.map +1 -0
- package/dist/BatchIdentity.js +78 -0
- package/dist/BatchIdentity.js.map +1 -0
- package/dist/DiscoveryWatchdog.d.ts +103 -0
- package/dist/DiscoveryWatchdog.d.ts.map +1 -0
- package/dist/DiscoveryWatchdog.js +166 -0
- package/dist/DiscoveryWatchdog.js.map +1 -0
- package/dist/FieldMapValidation.d.ts +40 -0
- package/dist/FieldMapValidation.d.ts.map +1 -0
- package/dist/FieldMapValidation.js +58 -0
- package/dist/FieldMapValidation.js.map +1 -0
- package/dist/FieldMappingEngine.d.ts +1 -13
- package/dist/FieldMappingEngine.d.ts.map +1 -1
- package/dist/FieldMappingEngine.js +18 -3
- package/dist/FieldMappingEngine.js.map +1 -1
- package/dist/IntegrationConnectorCreationPipeline.d.ts.map +1 -1
- package/dist/IntegrationConnectorCreationPipeline.js +13 -0
- package/dist/IntegrationConnectorCreationPipeline.js.map +1 -1
- package/dist/IntegrationEngine.d.ts +37 -0
- package/dist/IntegrationEngine.d.ts.map +1 -1
- package/dist/IntegrationEngine.js +481 -177
- package/dist/IntegrationEngine.js.map +1 -1
- package/dist/IntegrationSchemaSync.d.ts +8 -0
- package/dist/IntegrationSchemaSync.d.ts.map +1 -1
- package/dist/IntegrationSchemaSync.js +39 -2
- package/dist/IntegrationSchemaSync.js.map +1 -1
- package/dist/KeylessRecordGuard.d.ts +56 -0
- package/dist/KeylessRecordGuard.d.ts.map +1 -0
- package/dist/KeylessRecordGuard.js +80 -0
- package/dist/KeylessRecordGuard.js.map +1 -0
- package/dist/ResumeConcurrency.d.ts +46 -0
- package/dist/ResumeConcurrency.d.ts.map +1 -0
- package/dist/ResumeConcurrency.js +74 -0
- package/dist/ResumeConcurrency.js.map +1 -0
- package/dist/RetryAfter.d.ts +50 -0
- package/dist/RetryAfter.d.ts.map +1 -0
- package/dist/RetryAfter.js +127 -0
- package/dist/RetryAfter.js.map +1 -0
- package/dist/RetryRunner.d.ts +26 -2
- package/dist/RetryRunner.d.ts.map +1 -1
- package/dist/RetryRunner.js +11 -3
- package/dist/RetryRunner.js.map +1 -1
- package/dist/SyncDirectives.d.ts +66 -0
- package/dist/SyncDirectives.d.ts.map +1 -0
- package/dist/SyncDirectives.js +123 -0
- package/dist/SyncDirectives.js.map +1 -0
- package/dist/SyncLogger.d.ts +1 -1
- package/dist/SyncLogger.d.ts.map +1 -1
- package/dist/SyncLogger.js.map +1 -1
- package/dist/WatermarkService.d.ts +8 -0
- package/dist/WatermarkService.d.ts.map +1 -1
- package/dist/WatermarkService.js +18 -0
- package/dist/WatermarkService.js.map +1 -1
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -1
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +66 -1
- package/dist/types.js.map +1 -1
- package/package.json +7 -7
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @fileoverview Standard `Retry-After` extraction, so a connector that writes no rate-limit code
|
|
3
|
+
* still backs off by the amount the vendor actually asked for.
|
|
4
|
+
*
|
|
5
|
+
* `BaseIntegrationConnector.ExtractRetryAfterMs` returned `undefined` unconditionally and no
|
|
6
|
+
* connector in this repo overrode it. The engine's limiter therefore always fell back to its own
|
|
7
|
+
* multiplicative decrease — correct in direction, but blind to a number the vendor had already
|
|
8
|
+
* supplied in the response.
|
|
9
|
+
*
|
|
10
|
+
* `Retry-After` is defined by RFC 9110 §10.2.3 and is the header a 429 (RFC 6585) and a 503 carry.
|
|
11
|
+
* Parsing it is not a heuristic and not vendor-specific, which is exactly why it belongs in the
|
|
12
|
+
* base class rather than in each connector: there is one correct reading of it, and every HTTP
|
|
13
|
+
* connector benefits from having it read.
|
|
14
|
+
*
|
|
15
|
+
* Deliberately NOT a message-text parser. Guessing a duration out of prose ("try again in a bit")
|
|
16
|
+
* risks inventing a number, and a wrong Retry-After is worse than none — it would freeze the bucket
|
|
17
|
+
* for a made-up interval. Text-shaped signals stay the connector's job (see PheedLoop, whose vendor
|
|
18
|
+
* puts its delay in the body rather than a header); this reads the standard header only.
|
|
19
|
+
*/
|
|
20
|
+
/**
|
|
21
|
+
* Upper bound on an honored `Retry-After`, in milliseconds (5 minutes).
|
|
22
|
+
*
|
|
23
|
+
* A vendor occasionally returns an enormous or malformed value — a Unix timestamp mistaken for
|
|
24
|
+
* delay-seconds, a date years out. Freezing a sync's token bucket for hours on the strength of one
|
|
25
|
+
* response is a worse failure than backing off by the limiter's own decrease, so anything beyond
|
|
26
|
+
* this is treated as unusable and the limiter's default applies.
|
|
27
|
+
*/
|
|
28
|
+
export const MAX_HONORED_RETRY_AFTER_MS = 5 * 60_000;
|
|
29
|
+
/**
|
|
30
|
+
* Reads one header by name from a `Headers` instance, a `Map`, or a plain object, case-insensitively.
|
|
31
|
+
* Returns undefined when the container is not one of those or the header is absent.
|
|
32
|
+
*/
|
|
33
|
+
function readHeader(container, name) {
|
|
34
|
+
if (!container || typeof container !== 'object')
|
|
35
|
+
return undefined;
|
|
36
|
+
// fetch's Headers (and anything else exposing a case-insensitive get)
|
|
37
|
+
const getter = container.get;
|
|
38
|
+
if (typeof getter === 'function') {
|
|
39
|
+
try {
|
|
40
|
+
const v = container.get(name);
|
|
41
|
+
if (typeof v === 'string' && v.length > 0)
|
|
42
|
+
return v;
|
|
43
|
+
}
|
|
44
|
+
catch { /* not a Headers-like after all */ }
|
|
45
|
+
}
|
|
46
|
+
// Plain object / axios-style header bag. Node lower-cases response header names, but a hand-built
|
|
47
|
+
// object may not, so compare case-insensitively rather than trusting the spelling.
|
|
48
|
+
const target = name.toLowerCase();
|
|
49
|
+
for (const [k, v] of Object.entries(container)) {
|
|
50
|
+
if (k.toLowerCase() !== target)
|
|
51
|
+
continue;
|
|
52
|
+
// Node can hand back string[] for a repeated header; the first value is the one that counts.
|
|
53
|
+
const raw = Array.isArray(v) ? v[0] : v;
|
|
54
|
+
if (typeof raw === 'string' && raw.length > 0)
|
|
55
|
+
return raw;
|
|
56
|
+
if (typeof raw === 'number' && Number.isFinite(raw))
|
|
57
|
+
return String(raw);
|
|
58
|
+
}
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Parses a `Retry-After` value into milliseconds. RFC 9110 permits two forms:
|
|
63
|
+
* - delay-seconds: a non-negative integer, e.g. `120`
|
|
64
|
+
* - HTTP-date: e.g. `Wed, 21 Oct 2015 07:28:00 GMT`
|
|
65
|
+
*
|
|
66
|
+
* @param value the raw header value
|
|
67
|
+
* @param nowMs clock reading used to convert an HTTP-date into a delay; injectable for tests
|
|
68
|
+
* @returns milliseconds to wait, or undefined when the value is unusable
|
|
69
|
+
*/
|
|
70
|
+
export function ParseRetryAfterValue(value, nowMs = Date.now()) {
|
|
71
|
+
if (!value)
|
|
72
|
+
return undefined;
|
|
73
|
+
const trimmed = value.trim();
|
|
74
|
+
if (trimmed.length === 0)
|
|
75
|
+
return undefined;
|
|
76
|
+
// delay-seconds. Accept only a bare integer: a decimal or anything with trailing junk is not
|
|
77
|
+
// what the spec defines, and Number() would happily coerce forms that mean something else.
|
|
78
|
+
if (/^\d+$/.test(trimmed)) {
|
|
79
|
+
const ms = Number(trimmed) * 1000;
|
|
80
|
+
return ms > 0 && ms <= MAX_HONORED_RETRY_AFTER_MS ? ms : undefined;
|
|
81
|
+
}
|
|
82
|
+
// HTTP-date. `Date.parse` is extremely permissive — it happily reads '1.5' as a date and
|
|
83
|
+
// returns a real timestamp — so gate it on the string actually LOOKING like one first.
|
|
84
|
+
// Every form RFC 9110 permits (IMF-fixdate, obsolete RFC 850, asctime) carries a three-letter
|
|
85
|
+
// day or month name AND a digit; the junk that reaches here ('1.5', '30s', '1e3', 'soon')
|
|
86
|
+
// carries at most one of the two. Falling through to a misparsed date would invent a delay,
|
|
87
|
+
// which is the one outcome worse than having none.
|
|
88
|
+
if (!/[A-Za-z]{3}/.test(trimmed) || !/\d/.test(trimmed))
|
|
89
|
+
return undefined;
|
|
90
|
+
// A date already in the past means "retry now" — no wait, but also not a parse failure, so it
|
|
91
|
+
// must not fall through to the limiter's default as though nothing was said.
|
|
92
|
+
const at = Date.parse(trimmed);
|
|
93
|
+
if (Number.isNaN(at))
|
|
94
|
+
return undefined;
|
|
95
|
+
const ms = at - nowMs;
|
|
96
|
+
if (ms <= 0)
|
|
97
|
+
return 0;
|
|
98
|
+
return ms <= MAX_HONORED_RETRY_AFTER_MS ? ms : undefined;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Extracts a `Retry-After` delay, in milliseconds, from a thrown error or a failed response.
|
|
102
|
+
*
|
|
103
|
+
* Walks the shapes HTTP clients actually throw: the error itself carrying `headers`, an axios-style
|
|
104
|
+
* `error.response.headers`, and one level of `error.cause` (how a wrapper preserves the original).
|
|
105
|
+
*
|
|
106
|
+
* @param error the thrown value
|
|
107
|
+
* @param nowMs clock reading for HTTP-date conversion; injectable for tests
|
|
108
|
+
* @returns milliseconds to wait, or undefined when no usable header is present
|
|
109
|
+
*/
|
|
110
|
+
export function ExtractRetryAfterFromError(error, nowMs = Date.now()) {
|
|
111
|
+
if (!error || typeof error !== 'object')
|
|
112
|
+
return undefined;
|
|
113
|
+
const e = error;
|
|
114
|
+
const candidates = [
|
|
115
|
+
e.headers,
|
|
116
|
+
e.response?.headers,
|
|
117
|
+
e.cause?.headers,
|
|
118
|
+
e.cause?.response?.headers,
|
|
119
|
+
];
|
|
120
|
+
for (const container of candidates) {
|
|
121
|
+
const parsed = ParseRetryAfterValue(readHeader(container, 'retry-after'), nowMs);
|
|
122
|
+
if (parsed !== undefined)
|
|
123
|
+
return parsed;
|
|
124
|
+
}
|
|
125
|
+
return undefined;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=RetryAfter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"RetryAfter.js","sourceRoot":"","sources":["../src/RetryAfter.ts"],"names":[],"mappings":"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"}
|
package/dist/RetryRunner.d.ts
CHANGED
|
@@ -13,15 +13,39 @@ export interface RetryConfig {
|
|
|
13
13
|
}
|
|
14
14
|
/** Default retry configuration */
|
|
15
15
|
export declare const DEFAULT_RETRY_CONFIG: RetryConfig;
|
|
16
|
+
/**
|
|
17
|
+
* Optional hooks that let a caller make the wait between attempts smarter than blind backoff.
|
|
18
|
+
*
|
|
19
|
+
* Both exist for rate limiting. Exponential backoff is the right default for a network blip, but it
|
|
20
|
+
* is the WRONG answer to a 429: the source has usually told us exactly how long to wait, and
|
|
21
|
+
* retrying sooner is what turns a soft throttle into a hard one.
|
|
22
|
+
*/
|
|
23
|
+
export interface RetryHooks {
|
|
24
|
+
/**
|
|
25
|
+
* Derive the wait from the error itself — e.g. a `Retry-After` header. Return `null`/`undefined`
|
|
26
|
+
* to keep the computed exponential backoff. The larger of the two is NOT taken automatically;
|
|
27
|
+
* returning a value replaces the backoff, so a caller can honour a source that asks for a
|
|
28
|
+
* SHORTER wait as well as a longer one.
|
|
29
|
+
*/
|
|
30
|
+
DelayForError?: (error: unknown, attempt: number, backoffMs: number) => number | null | undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Awaited after the delay and before the next attempt — e.g. re-acquiring a rate-limit token, so
|
|
33
|
+
* a retry passes through the same gate the first attempt did instead of bypassing it.
|
|
34
|
+
*/
|
|
35
|
+
BeforeRetry?: (attempt: number, error: unknown) => Promise<void> | void;
|
|
36
|
+
}
|
|
16
37
|
/**
|
|
17
38
|
* Executes an operation with retry logic using exponential backoff.
|
|
18
39
|
*
|
|
19
40
|
* @param operation - The async operation to execute
|
|
20
41
|
* @param config - Retry configuration (uses defaults if not provided)
|
|
21
42
|
* @param isRetryable - Predicate to determine if a caught error should trigger a retry
|
|
22
|
-
* @param onRetry - Optional callback invoked before each retry with attempt number, error, and delay
|
|
43
|
+
* @param onRetry - Optional callback invoked before each retry with attempt number, error, and delay.
|
|
44
|
+
* Runs BEFORE the wait, so it is the right place to report the failure onward (e.g.
|
|
45
|
+
* backing off a shared limiter) rather than after the retries are spent.
|
|
46
|
+
* @param hooks - Optional {@link RetryHooks} for source-directed delays and pre-attempt gating
|
|
23
47
|
* @returns The result of the operation
|
|
24
48
|
* @throws The last error encountered if all attempts fail
|
|
25
49
|
*/
|
|
26
|
-
export declare function WithRetry<T>(operation: () => Promise<T>, config?: RetryConfig, isRetryable?: (error: unknown) => boolean, onRetry?: (attempt: number, error: unknown, delayMs: number) => void): Promise<T>;
|
|
50
|
+
export declare function WithRetry<T>(operation: () => Promise<T>, config?: RetryConfig, isRetryable?: (error: unknown) => boolean, onRetry?: (attempt: number, error: unknown, delayMs: number) => void, hooks?: RetryHooks): Promise<T>;
|
|
27
51
|
//# sourceMappingURL=RetryRunner.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetryRunner.d.ts","sourceRoot":"","sources":["../src/RetryRunner.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAC;AAeF
|
|
1
|
+
{"version":3,"file":"RetryRunner.d.ts","sourceRoot":"","sources":["../src/RetryRunner.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,WAAW;IACxB,yEAAyE;IACzE,WAAW,EAAE,MAAM,CAAC;IACpB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,CAAC;IACzB,4DAA4D;IAC5D,YAAY,EAAE,MAAM,CAAC;IACrB,oDAAoD;IACpD,cAAc,EAAE,MAAM,CAAC;CAC1B;AAED,kCAAkC;AAClC,eAAO,MAAM,oBAAoB,EAAE,WAKlC,CAAC;AAeF;;;;;;GAMG;AACH,MAAM,WAAW,UAAU;IACvB;;;;;OAKG;IACH,aAAa,CAAC,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,KAAK,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClG;;;OAGG;IACH,WAAW,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAsB,SAAS,CAAC,CAAC,EAC7B,SAAS,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EAC3B,MAAM,GAAE,WAAkC,EAC1C,WAAW,GAAE,CAAC,KAAK,EAAE,OAAO,KAAK,OAAoB,EACrD,OAAO,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,KAAK,IAAI,EACpE,KAAK,CAAC,EAAE,UAAU,GACnB,OAAO,CAAC,CAAC,CAAC,CA+BZ"}
|
package/dist/RetryRunner.js
CHANGED
|
@@ -23,11 +23,14 @@ function computeDelay(attempt, config) {
|
|
|
23
23
|
* @param operation - The async operation to execute
|
|
24
24
|
* @param config - Retry configuration (uses defaults if not provided)
|
|
25
25
|
* @param isRetryable - Predicate to determine if a caught error should trigger a retry
|
|
26
|
-
* @param onRetry - Optional callback invoked before each retry with attempt number, error, and delay
|
|
26
|
+
* @param onRetry - Optional callback invoked before each retry with attempt number, error, and delay.
|
|
27
|
+
* Runs BEFORE the wait, so it is the right place to report the failure onward (e.g.
|
|
28
|
+
* backing off a shared limiter) rather than after the retries are spent.
|
|
29
|
+
* @param hooks - Optional {@link RetryHooks} for source-directed delays and pre-attempt gating
|
|
27
30
|
* @returns The result of the operation
|
|
28
31
|
* @throws The last error encountered if all attempts fail
|
|
29
32
|
*/
|
|
30
|
-
export async function WithRetry(operation, config = DEFAULT_RETRY_CONFIG, isRetryable = () => true, onRetry) {
|
|
33
|
+
export async function WithRetry(operation, config = DEFAULT_RETRY_CONFIG, isRetryable = () => true, onRetry, hooks) {
|
|
31
34
|
let lastError;
|
|
32
35
|
for (let attempt = 1; attempt <= config.MaxAttempts; attempt++) {
|
|
33
36
|
try {
|
|
@@ -39,11 +42,16 @@ export async function WithRetry(operation, config = DEFAULT_RETRY_CONFIG, isRetr
|
|
|
39
42
|
if (isLastAttempt || !isRetryable(err)) {
|
|
40
43
|
throw err;
|
|
41
44
|
}
|
|
42
|
-
const
|
|
45
|
+
const backoffMs = computeDelay(attempt, config);
|
|
46
|
+
const directed = hooks?.DelayForError?.(err, attempt, backoffMs);
|
|
47
|
+
const delayMs = typeof directed === 'number' && Number.isFinite(directed) && directed >= 0
|
|
48
|
+
? directed
|
|
49
|
+
: backoffMs;
|
|
43
50
|
if (onRetry) {
|
|
44
51
|
onRetry(attempt, err, delayMs);
|
|
45
52
|
}
|
|
46
53
|
await sleep(delayMs);
|
|
54
|
+
await hooks?.BeforeRetry?.(attempt, err);
|
|
47
55
|
}
|
|
48
56
|
}
|
|
49
57
|
// Should not reach here, but TypeScript needs this
|
package/dist/RetryRunner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RetryRunner.js","sourceRoot":"","sources":["../src/RetryRunner.ts"],"names":[],"mappings":"AAcA,kCAAkC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC7C,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,KAAK;IACnB,cAAc,EAAE,GAAG;CACtB,CAAC;AAEF;;;;;GAKG;AACH,SAAS,YAAY,CAAC,OAAe,EAAE,MAAmB;IACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9D,OAAO,MAAM,GAAG,MAAM,CAAC;AAC3B,CAAC;
|
|
1
|
+
{"version":3,"file":"RetryRunner.js","sourceRoot":"","sources":["../src/RetryRunner.ts"],"names":[],"mappings":"AAcA,kCAAkC;AAClC,MAAM,CAAC,MAAM,oBAAoB,GAAgB;IAC7C,WAAW,EAAE,CAAC;IACd,gBAAgB,EAAE,IAAI;IACtB,YAAY,EAAE,KAAK;IACnB,cAAc,EAAE,GAAG;CACtB,CAAC;AAEF;;;;;GAKG;AACH,SAAS,YAAY,CAAC,OAAe,EAAE,MAAmB;IACtD,MAAM,gBAAgB,GAAG,MAAM,CAAC,gBAAgB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAC5E,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,MAAM,CAAC,YAAY,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,GAAG,MAAM,CAAC,cAAc,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;IAC9D,OAAO,MAAM,GAAG,MAAM,CAAC;AAC3B,CAAC;AAwBD;;;;;;;;;;;;GAYG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAC3B,SAA2B,EAC3B,SAAsB,oBAAoB,EAC1C,cAA2C,GAAG,EAAE,CAAC,IAAI,EACrD,OAAoE,EACpE,KAAkB;IAElB,IAAI,SAAkB,CAAC;IAEvB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,MAAM,CAAC,WAAW,EAAE,OAAO,EAAE,EAAE,CAAC;QAC7D,IAAI,CAAC;YACD,OAAO,MAAM,SAAS,EAAE,CAAC;QAC7B,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,SAAS,GAAG,GAAG,CAAC;YAEhB,MAAM,aAAa,GAAG,OAAO,KAAK,MAAM,CAAC,WAAW,CAAC;YACrD,IAAI,aAAa,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC;gBACrC,MAAM,GAAG,CAAC;YACd,CAAC;YAED,MAAM,SAAS,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;YAChD,MAAM,QAAQ,GAAG,KAAK,EAAE,aAAa,EAAE,CAAC,GAAG,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;YACjE,MAAM,OAAO,GAAG,OAAO,QAAQ,KAAK,QAAQ,IAAI,MAAM,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,CAAC;gBACtF,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,SAAS,CAAC;YAEhB,IAAI,OAAO,EAAE,CAAC;gBACV,OAAO,CAAC,OAAO,EAAE,GAAG,EAAE,OAAO,CAAC,CAAC;YACnC,CAAC;YAED,MAAM,KAAK,CAAC,OAAO,CAAC,CAAC;YACrB,MAAM,KAAK,EAAE,WAAW,EAAE,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;QAC7C,CAAC;IACL,CAAC;IAED,mDAAmD;IACnD,MAAM,SAAS,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAS,KAAK,CAAC,EAAU;IACrB,OAAO,IAAI,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC;AAC3D,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field-level sync directives.
|
|
3
|
+
*
|
|
4
|
+
* A connector can now declare that a source field should not be synced at all
|
|
5
|
+
* (`SourceFieldInfo.SyncDirective: 'Exclude'`). The directive is persisted into
|
|
6
|
+
* `IntegrationObjectField.Configuration` (a JSON column that already exists, so no
|
|
7
|
+
* migration is required) and honoured by the mapping stage, which strips excluded
|
|
8
|
+
* keys from the record BEFORE field mapping runs.
|
|
9
|
+
*
|
|
10
|
+
* Why stripping must happen there and not by deactivating a field map: an unmapped
|
|
11
|
+
* source key does not disappear — `computeUnmappedFields` captures it and the writer
|
|
12
|
+
* parks it in `__mj_integration_CustomOverflow`. Deactivating the map therefore
|
|
13
|
+
* REROUTES the value instead of excluding it, and the custom-column promoter will
|
|
14
|
+
* happily resurrect it as a real column later. Stripping before mapping keeps the
|
|
15
|
+
* key out of MappedFields, out of the overflow, and out of the content hash (whose
|
|
16
|
+
* basis is MappedFields), so an excluded field stops influencing change detection
|
|
17
|
+
* entirely.
|
|
18
|
+
*
|
|
19
|
+
* What this is for, concretely (measured on a live tenant, 2026-08-19):
|
|
20
|
+
* - `preferences` on Totara Users / Enrolled_Users: Moodle UI widget state
|
|
21
|
+
* (file-picker recents, user-selector toggles), identical nine keys on 100% of
|
|
22
|
+
* rows — ~2.5M expanded values of nothing.
|
|
23
|
+
* - `courseformatoptions` on Courses: course theming (header colours, tile icons).
|
|
24
|
+
* - `enrolledcourses` on Enrolled_Users: re-derives the Enrolled_Users table
|
|
25
|
+
* itself — ~7.6M expanded values that duplicate an object already synced.
|
|
26
|
+
*
|
|
27
|
+
* The directive lives in Configuration rather than a new column so that existing
|
|
28
|
+
* installs pick it up on their next schema sync with no DDL. Absence of a directive
|
|
29
|
+
* means Sync — connectors that never heard of this feature behave exactly as before.
|
|
30
|
+
*/
|
|
31
|
+
/** The Configuration key under which a field's sync directive is stored. */
|
|
32
|
+
export declare const SYNC_DIRECTIVE_CONFIG_KEY = "syncDirective";
|
|
33
|
+
/** Recognised directive values. Anything unrecognised is treated as 'Sync'. */
|
|
34
|
+
export type FieldSyncDirective = 'Sync' | 'Exclude';
|
|
35
|
+
/** Minimal shape of an IntegrationObjectField row this module needs. */
|
|
36
|
+
export interface FieldWithConfiguration {
|
|
37
|
+
Name: string;
|
|
38
|
+
Configuration: string | null;
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Reads the sync directive out of an IntegrationObjectField.Configuration JSON blob.
|
|
42
|
+
* Malformed JSON, a missing key, or an unrecognised value all mean 'Sync' — the
|
|
43
|
+
* directive can only ever narrow what is synced, never break a sync by its absence.
|
|
44
|
+
*/
|
|
45
|
+
export declare function ReadFieldSyncDirective(configuration: string | null | undefined): FieldSyncDirective;
|
|
46
|
+
/**
|
|
47
|
+
* Merges a directive into an existing Configuration JSON string, preserving every
|
|
48
|
+
* other key. Returns the new JSON, or the original string when nothing changes
|
|
49
|
+
* (so callers can cheaply detect no-op writes). Setting 'Sync' REMOVES the key
|
|
50
|
+
* rather than storing the default.
|
|
51
|
+
*/
|
|
52
|
+
export declare function WriteFieldSyncDirective(configuration: string | null | undefined, directive: FieldSyncDirective): string | null;
|
|
53
|
+
/**
|
|
54
|
+
* The set of source field names to strip for one integration object, derived from
|
|
55
|
+
* its IntegrationObjectField rows. Empty set when nothing is excluded — the
|
|
56
|
+
* mapping engine's fast path.
|
|
57
|
+
*/
|
|
58
|
+
export declare function ComputeExcludedSourceNames(fields: ReadonlyArray<FieldWithConfiguration>): Set<string>;
|
|
59
|
+
/**
|
|
60
|
+
* Returns a copy of `fields` without the excluded keys, or the ORIGINAL object when
|
|
61
|
+
* no key matches (so the no-exclusions path allocates nothing). Matching is exact:
|
|
62
|
+
* source field names are the connector's own spelling, already used verbatim as
|
|
63
|
+
* field-map SourceFieldName and overflow keys.
|
|
64
|
+
*/
|
|
65
|
+
export declare function StripExcludedFields(fields: Record<string, unknown>, excluded: ReadonlySet<string>): Record<string, unknown>;
|
|
66
|
+
//# sourceMappingURL=SyncDirectives.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncDirectives.d.ts","sourceRoot":"","sources":["../src/SyncDirectives.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAEH,4EAA4E;AAC5E,eAAO,MAAM,yBAAyB,kBAAkB,CAAC;AAEzD,+EAA+E;AAC/E,MAAM,MAAM,kBAAkB,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpD,wEAAwE;AACxE,MAAM,WAAW,sBAAsB;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,kBAAkB,CAYnG;AAED;;;;;GAKG;AACH,wBAAgB,uBAAuB,CACnC,aAAa,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACxC,SAAS,EAAE,kBAAkB,GAC9B,MAAM,GAAG,IAAI,CAqBf;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,aAAa,CAAC,sBAAsB,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAQrG;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAC/B,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,QAAQ,EAAE,WAAW,CAAC,MAAM,CAAC,GAC9B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYzB"}
|
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Field-level sync directives.
|
|
3
|
+
*
|
|
4
|
+
* A connector can now declare that a source field should not be synced at all
|
|
5
|
+
* (`SourceFieldInfo.SyncDirective: 'Exclude'`). The directive is persisted into
|
|
6
|
+
* `IntegrationObjectField.Configuration` (a JSON column that already exists, so no
|
|
7
|
+
* migration is required) and honoured by the mapping stage, which strips excluded
|
|
8
|
+
* keys from the record BEFORE field mapping runs.
|
|
9
|
+
*
|
|
10
|
+
* Why stripping must happen there and not by deactivating a field map: an unmapped
|
|
11
|
+
* source key does not disappear — `computeUnmappedFields` captures it and the writer
|
|
12
|
+
* parks it in `__mj_integration_CustomOverflow`. Deactivating the map therefore
|
|
13
|
+
* REROUTES the value instead of excluding it, and the custom-column promoter will
|
|
14
|
+
* happily resurrect it as a real column later. Stripping before mapping keeps the
|
|
15
|
+
* key out of MappedFields, out of the overflow, and out of the content hash (whose
|
|
16
|
+
* basis is MappedFields), so an excluded field stops influencing change detection
|
|
17
|
+
* entirely.
|
|
18
|
+
*
|
|
19
|
+
* What this is for, concretely (measured on a live tenant, 2026-08-19):
|
|
20
|
+
* - `preferences` on Totara Users / Enrolled_Users: Moodle UI widget state
|
|
21
|
+
* (file-picker recents, user-selector toggles), identical nine keys on 100% of
|
|
22
|
+
* rows — ~2.5M expanded values of nothing.
|
|
23
|
+
* - `courseformatoptions` on Courses: course theming (header colours, tile icons).
|
|
24
|
+
* - `enrolledcourses` on Enrolled_Users: re-derives the Enrolled_Users table
|
|
25
|
+
* itself — ~7.6M expanded values that duplicate an object already synced.
|
|
26
|
+
*
|
|
27
|
+
* The directive lives in Configuration rather than a new column so that existing
|
|
28
|
+
* installs pick it up on their next schema sync with no DDL. Absence of a directive
|
|
29
|
+
* means Sync — connectors that never heard of this feature behave exactly as before.
|
|
30
|
+
*/
|
|
31
|
+
/** The Configuration key under which a field's sync directive is stored. */
|
|
32
|
+
export const SYNC_DIRECTIVE_CONFIG_KEY = 'syncDirective';
|
|
33
|
+
/**
|
|
34
|
+
* Reads the sync directive out of an IntegrationObjectField.Configuration JSON blob.
|
|
35
|
+
* Malformed JSON, a missing key, or an unrecognised value all mean 'Sync' — the
|
|
36
|
+
* directive can only ever narrow what is synced, never break a sync by its absence.
|
|
37
|
+
*/
|
|
38
|
+
export function ReadFieldSyncDirective(configuration) {
|
|
39
|
+
if (!configuration)
|
|
40
|
+
return 'Sync';
|
|
41
|
+
try {
|
|
42
|
+
const parsed = JSON.parse(configuration);
|
|
43
|
+
if (parsed && typeof parsed === 'object') {
|
|
44
|
+
const v = parsed[SYNC_DIRECTIVE_CONFIG_KEY];
|
|
45
|
+
if (typeof v === 'string' && v.toLowerCase() === 'exclude')
|
|
46
|
+
return 'Exclude';
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
// Malformed Configuration is not this feature's problem to surface.
|
|
51
|
+
}
|
|
52
|
+
return 'Sync';
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Merges a directive into an existing Configuration JSON string, preserving every
|
|
56
|
+
* other key. Returns the new JSON, or the original string when nothing changes
|
|
57
|
+
* (so callers can cheaply detect no-op writes). Setting 'Sync' REMOVES the key
|
|
58
|
+
* rather than storing the default.
|
|
59
|
+
*/
|
|
60
|
+
export function WriteFieldSyncDirective(configuration, directive) {
|
|
61
|
+
let obj = {};
|
|
62
|
+
if (configuration) {
|
|
63
|
+
try {
|
|
64
|
+
const parsed = JSON.parse(configuration);
|
|
65
|
+
if (parsed && typeof parsed === 'object' && !Array.isArray(parsed)) {
|
|
66
|
+
obj = parsed;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch {
|
|
70
|
+
// Unparseable existing Configuration: preserve it untouched rather than
|
|
71
|
+
// destroy whatever it held. The directive is not worth data loss.
|
|
72
|
+
return configuration;
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
if (directive === 'Exclude') {
|
|
76
|
+
obj[SYNC_DIRECTIVE_CONFIG_KEY] = 'Exclude';
|
|
77
|
+
}
|
|
78
|
+
else {
|
|
79
|
+
delete obj[SYNC_DIRECTIVE_CONFIG_KEY];
|
|
80
|
+
}
|
|
81
|
+
const out = Object.keys(obj).length > 0 ? JSON.stringify(obj) : null;
|
|
82
|
+
return out;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* The set of source field names to strip for one integration object, derived from
|
|
86
|
+
* its IntegrationObjectField rows. Empty set when nothing is excluded — the
|
|
87
|
+
* mapping engine's fast path.
|
|
88
|
+
*/
|
|
89
|
+
export function ComputeExcludedSourceNames(fields) {
|
|
90
|
+
const out = new Set();
|
|
91
|
+
for (const f of fields) {
|
|
92
|
+
if (ReadFieldSyncDirective(f.Configuration) === 'Exclude') {
|
|
93
|
+
out.add(f.Name);
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
return out;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Returns a copy of `fields` without the excluded keys, or the ORIGINAL object when
|
|
100
|
+
* no key matches (so the no-exclusions path allocates nothing). Matching is exact:
|
|
101
|
+
* source field names are the connector's own spelling, already used verbatim as
|
|
102
|
+
* field-map SourceFieldName and overflow keys.
|
|
103
|
+
*/
|
|
104
|
+
export function StripExcludedFields(fields, excluded) {
|
|
105
|
+
if (excluded.size === 0)
|
|
106
|
+
return fields;
|
|
107
|
+
let hit = false;
|
|
108
|
+
for (const k of Object.keys(fields)) {
|
|
109
|
+
if (excluded.has(k)) {
|
|
110
|
+
hit = true;
|
|
111
|
+
break;
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
if (!hit)
|
|
115
|
+
return fields;
|
|
116
|
+
const out = {};
|
|
117
|
+
for (const [k, v] of Object.entries(fields)) {
|
|
118
|
+
if (!excluded.has(k))
|
|
119
|
+
out[k] = v;
|
|
120
|
+
}
|
|
121
|
+
return out;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=SyncDirectives.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SyncDirectives.js","sourceRoot":"","sources":["../src/SyncDirectives.ts"],"names":[],"mappings":"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"}
|
package/dist/SyncLogger.d.ts
CHANGED
|
@@ -35,7 +35,7 @@
|
|
|
35
35
|
* tail -f /tmp/mjapi.log | grep '"event":"sync\.push\.' # only outbound writes
|
|
36
36
|
* tail -f /tmp/mjapi.log | grep '"event":"sync\..*\.error"' # only errors
|
|
37
37
|
*/
|
|
38
|
-
export type SyncLogEvent = 'sync.run.start' | 'sync.config.loaded' | 'sync.connector.built' | 'sync.connector.test' | 'sync.entity-map.start' | 'sync.resume.keyset' | 'sync.partition.reconcile' | 'sync.fetch.batch.start' | 'sync.fetch.batch.complete' | 'sync.fetch.retry' | 'sync.record.decision' | 'sync.record.saved' | 'sync.record.error' | 'sync.record.retry' | 'sync.record.archived' | 'sync.record.conflict' | 'sync.push.candidates' | 'sync.push.record' | 'sync.push.response' | 'sync.entity-map.complete' | 'sync.run.complete' | 'sync.run.fail' | 'sync.run.cancelled' | 'sync.schema_update' | 'sync.warning';
|
|
38
|
+
export type SyncLogEvent = 'sync.run.start' | 'sync.config.loaded' | 'sync.connector.built' | 'sync.connector.test' | 'sync.entity-map.start' | 'sync.entity-map.exclusions' | 'sync.resume.keyset' | 'sync.partition.reconcile' | 'sync.fetch.batch.start' | 'sync.fetch.batch.complete' | 'sync.fetch.retry' | 'sync.record.decision' | 'sync.record.saved' | 'sync.record.error' | 'sync.record.retry' | 'sync.record.archived' | 'sync.record.conflict' | 'sync.push.candidates' | 'sync.push.record' | 'sync.push.response' | 'sync.entity-map.complete' | 'sync.run.complete' | 'sync.run.fail' | 'sync.run.cancelled' | 'sync.schema_update' | 'sync.warning';
|
|
39
39
|
import type { IntegrationProgressEmitter } from '@memberjunction/integration-progress-artifacts';
|
|
40
40
|
export interface SyncLoggerContext {
|
|
41
41
|
/** CompanyIntegration ID — the per-run anchor for filtering. */
|
package/dist/SyncLogger.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncLogger.d.ts","sourceRoot":"","sources":["../src/SyncLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,MAAM,YAAY,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,uBAAuB,GACvB,oBAAoB,GACpB,0BAA0B,GAC1B,wBAAwB,GACxB,2BAA2B,GAC3B,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GACpB,0BAA0B,GAC1B,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,CAAC;AAErB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAEjG,MAAM,WAAW,iBAAiB;IAC9B,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAkBD;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAC,CAA6B;gBAEjC,GAAG,EAAE,iBAAiB;IAIlC,6DAA6D;IACtD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,6EAA6E;IACtE,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAInE;;;;;;;OAOG;IACI,aAAa,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAI/D;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E;;;;;;;OAOG;IACI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3F,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAuB1E;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyDxB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,GAAG;IAIX,qFAAqF;IACrF,OAAO,CAAC,QAAQ;CAGnB"}
|
|
1
|
+
{"version":3,"file":"SyncLogger.d.ts","sourceRoot":"","sources":["../src/SyncLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;AAEH,MAAM,MAAM,YAAY,GAClB,gBAAgB,GAChB,oBAAoB,GACpB,sBAAsB,GACtB,qBAAqB,GACrB,uBAAuB,GACvB,4BAA4B,GAC5B,oBAAoB,GACpB,0BAA0B,GAC1B,wBAAwB,GACxB,2BAA2B,GAC3B,kBAAkB,GAClB,sBAAsB,GACtB,mBAAmB,GACnB,mBAAmB,GACnB,mBAAmB,GACnB,sBAAsB,GACtB,sBAAsB,GACtB,sBAAsB,GACtB,kBAAkB,GAClB,oBAAoB,GACpB,0BAA0B,GAC1B,mBAAmB,GACnB,eAAe,GACf,oBAAoB,GACpB,oBAAoB,GACpB,cAAc,CAAC;AAErB,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,gDAAgD,CAAC;AAEjG,MAAM,WAAW,iBAAiB;IAC9B,gEAAgE;IAChE,IAAI,EAAE,MAAM,CAAC;IACb,uDAAuD;IACvD,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACvC,+DAA+D;IAC/D,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,YAAY,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,iDAAiD;IACjD,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAkBD;;;;GAIG;AACH,qBAAa,UAAU;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAoB;IACxC,OAAO,CAAC,OAAO,CAAC,CAA6B;gBAEjC,GAAG,EAAE,iBAAiB;IAIlC,6DAA6D;IACtD,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAIvC,6EAA6E;IACtE,qBAAqB,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,IAAI;IAInE;;;;;;;OAOG;IACI,aAAa,CAAC,OAAO,EAAE,0BAA0B,GAAG,IAAI;IAI/D;;;;;OAKG;IACI,UAAU,CAAC,KAAK,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI/E;;;;;;;OAOG;IACI,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;IAI3F,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,GAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAM,GAAG,IAAI;IAuB1E;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAyDxB,OAAO,CAAC,UAAU;IAKlB,OAAO,CAAC,GAAG;IAIX,qFAAqF;IACrF,OAAO,CAAC,QAAQ;CAGnB"}
|
package/dist/SyncLogger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SyncLogger.js","sourceRoot":"","sources":["../src/SyncLogger.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAoCG;
|
|
1
|
+
{"version":3,"file":"SyncLogger.js","sourceRoot":"","sources":["../src/SyncLogger.ts"],"names":[],"mappings":"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"}
|
|
@@ -24,6 +24,14 @@ export declare class WatermarkService {
|
|
|
24
24
|
* @param contextUser - User context for data access
|
|
25
25
|
*/
|
|
26
26
|
Update(entityMapID: string, newValue: string, contextUser: UserInfo, direction?: 'Pull' | 'Push'): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* Puts the watermark VALUE back to a prior state — the undo for a mid-run durability floor
|
|
29
|
+
* (IntegrationEngine §8a) after a page-skip gap makes that floor unsafe. Accepts null because
|
|
30
|
+
* the prior state may be "no watermark yet" (first run / the row was created BY the floor);
|
|
31
|
+
* a null value re-triggers a full window fetch on the next run, which is exactly the hold
|
|
32
|
+
* semantics the gap requires. A missing row means no floor was ever written — nothing to do.
|
|
33
|
+
*/
|
|
34
|
+
RestoreValue(entityMapID: string, value: string | null, contextUser: UserInfo, direction?: 'Pull' | 'Push'): Promise<void>;
|
|
27
35
|
/**
|
|
28
36
|
* Updates the progress fields on an existing watermark mid-sync without changing
|
|
29
37
|
* the WatermarkValue. Updates RecordsSynced to the cumulative total written so far
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WatermarkService.d.ts","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,qBAAa,gBAAgB;IACzB;;;;;;OAMG;IACU,IAAI,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,EACrB,SAAS,GAAE,MAAM,GAAG,MAAe,GACpC,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;IAsBnD;;;;;;;;OAQG;IACU,MAAM,CACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,EACrB,SAAS,GAAE,MAAM,GAAG,MAAe,GACpC,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;;;;OASG;IACU,cAAc,CACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO;IAkBvF;;;;;;;;OAQG;IACU,kBAAkB,CAC3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAehB;;;;;OAKG;IACU,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3F;;;;;OAKG;IACU,oBAAoB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAchB;;;OAGG;IACU,oBAAoB,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa/B;;OAEG;YACW,uBAAuB;IAYrC;;;OAGG;YACW,kBAAkB;IAShC;;;OAGG;YACW,eAAe;CAsChC"}
|
|
1
|
+
{"version":3,"file":"WatermarkService.d.ts","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"AAAA,OAAO,EAAqB,KAAK,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,KAAK,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;GAGG;AACH,qBAAa,gBAAgB;IACzB;;;;;;OAMG;IACU,IAAI,CACb,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,EACrB,SAAS,GAAE,MAAM,GAAG,MAAe,GACpC,OAAO,CAAC,gCAAgC,GAAG,IAAI,CAAC;IAsBnD;;;;;;;;OAQG;IACU,MAAM,CACf,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,EACrB,SAAS,GAAE,MAAM,GAAG,MAAe,GACpC,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;IACU,YAAY,CACrB,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,GAAG,IAAI,EACpB,WAAW,EAAE,QAAQ,EACrB,SAAS,GAAE,MAAM,GAAG,MAAe,GACpC,OAAO,CAAC,IAAI,CAAC;IAWhB;;;;;;;;;OASG;IACU,cAAc,CACvB,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAShB;;;;;;OAMG;IACI,iBAAiB,CAAC,cAAc,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,GAAG,OAAO;IAkBvF;;;;;;;;OAQG;IACU,kBAAkB,CAC3B,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAehB;;;;;OAKG;IACU,mBAAmB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;IAY3F;;;;;OAKG;IACU,oBAAoB,CAC7B,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IAchB;;;OAGG;IACU,oBAAoB,CAC7B,WAAW,EAAE,MAAM,EACnB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAa/B;;OAEG;YACW,uBAAuB;IAYrC;;;OAGG;YACW,kBAAkB;IAShC;;;OAGG;YACW,eAAe;CAsChC"}
|
package/dist/WatermarkService.js
CHANGED
|
@@ -50,6 +50,24 @@ export class WatermarkService {
|
|
|
50
50
|
await this.CreateNewWatermark(entityMapID, newValue, contextUser, direction);
|
|
51
51
|
}
|
|
52
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Puts the watermark VALUE back to a prior state — the undo for a mid-run durability floor
|
|
55
|
+
* (IntegrationEngine §8a) after a page-skip gap makes that floor unsafe. Accepts null because
|
|
56
|
+
* the prior state may be "no watermark yet" (first run / the row was created BY the floor);
|
|
57
|
+
* a null value re-triggers a full window fetch on the next run, which is exactly the hold
|
|
58
|
+
* semantics the gap requires. A missing row means no floor was ever written — nothing to do.
|
|
59
|
+
*/
|
|
60
|
+
async RestoreValue(entityMapID, value, contextUser, direction = 'Pull') {
|
|
61
|
+
const existing = await this.Load(entityMapID, contextUser, direction);
|
|
62
|
+
if (!existing)
|
|
63
|
+
return;
|
|
64
|
+
existing.WatermarkValue = value;
|
|
65
|
+
existing.LastSyncAt = new Date();
|
|
66
|
+
const saved = await existing.Save();
|
|
67
|
+
if (!saved) {
|
|
68
|
+
throw new Error(`Failed to restore watermark for EntityMapID=${entityMapID}`);
|
|
69
|
+
}
|
|
70
|
+
}
|
|
53
71
|
/**
|
|
54
72
|
* Updates the progress fields on an existing watermark mid-sync without changing
|
|
55
73
|
* the WatermarkValue. Updates RecordsSynced to the cumulative total written so far
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"WatermarkService.js","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"WatermarkService.js","sourceRoot":"","sources":["../src/WatermarkService.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export type { IIntegrationSourceType, ICompanyIntegrationEntityMap, ICompanyIntegrationFieldMap, ICompanyIntegrationSyncWatermark } from './entity-types.js';
|
|
2
2
|
export type { SyncDirection, SyncTriggerType, WatermarkType, ConflictResolution, DeleteBehavior, RecordChangeType, IntegrationRunStatus, ExternalRecord, MappedRecord, SyncResult, SyncRecordError, DefaultFieldMapping, SyncErrorCode, ErrorSeverity, SyncProgress, SyncProgressSnapshot, OnProgressCallback, SyncNotificationEvent, SyncNotificationSeverity, SyncNotification, OnNotificationCallback, IntegrationSyncOptions, EntityMapSyncResult, SourceSchemaInfo, SourceObjectInfo, SourceFieldInfo, SourceRelationshipInfo, IntrospectSchemaOptions, CRUDContext, CreateRecordContext, UpdateRecordContext, UpsertRecordContext, DeleteRecordContext, GetRecordContext, CRUDResult, SearchContext, SearchResult, ListContext, ListResult, SchemaPromotionResult, PostSyncSchemaPromotionCallback, CustomKeyStat, } from './types.js';
|
|
3
3
|
export { IsRetryableError, ClassifyError } from './types.js';
|
|
4
|
+
export { ExtractRetryAfterFromError, ParseRetryAfterValue, MAX_HONORED_RETRY_AFTER_MS } from './RetryAfter.js';
|
|
4
5
|
export type { TransformType, TransformOnError, TransformStep, TransformConfig, DirectConfig, RegexConfig, SplitConfig, CombineConfig, LookupConfig, FormatConfig, CoerceConfig, SubstringConfig, CustomConfig, } from './transforms.js';
|
|
5
6
|
export { BaseIntegrationConnector, WithTimeout, OperationTimeoutError, DEFAULT_OPERATION_TIMEOUTS } from './BaseIntegrationConnector.js';
|
|
6
7
|
export type { ConnectionTestResult, ExternalObjectSchema, ExternalFieldSchema, FetchContext, FetchBatchResult, OperationTimeouts, DefaultIntegrationConfig, DefaultObjectConfig, RateLimitPolicy, } from './BaseIntegrationConnector.js';
|
|
@@ -23,8 +24,14 @@ export type { RenewResult, BoundaryCheckResult, HeartbeatOptions, TerminalRunSta
|
|
|
23
24
|
export { IntegrationSchemaSync } from './IntegrationSchemaSync.js';
|
|
24
25
|
export type { PersistSchemaOptions, PersistSchemaResult } from './IntegrationSchemaSync.js';
|
|
25
26
|
export { computeContentHash, CONTENT_HASH_COLUMN } from './ContentHash.js';
|
|
27
|
+
export { CollapseDuplicateIdentities } from './BatchIdentity.js';
|
|
26
28
|
export { CUSTOM_OVERFLOW_COLUMN, computeUnmappedFields, hasUnmappedFields, foldCustomKeyStats, CUSTOM_KEY_SAMPLE_CAP } from './CustomOverflow.js';
|
|
29
|
+
export { SYNC_DIRECTIVE_CONFIG_KEY, ReadFieldSyncDirective, WriteFieldSyncDirective, ComputeExcludedSourceNames, StripExcludedFields } from './SyncDirectives.js';
|
|
30
|
+
export type { FieldSyncDirective, FieldWithConfiguration } from './SyncDirectives.js';
|
|
31
|
+
export { FindUnbindableFieldMaps, DescribeUnbindableFieldMaps } from './FieldMapValidation.js';
|
|
32
|
+
export type { ValidatableFieldMap, UnbindableFieldMap } from './FieldMapValidation.js';
|
|
27
33
|
export type { CustomKeyAccumulator } from './CustomOverflow.js';
|
|
34
|
+
export type { HasExternalID, BatchIdentityResult } from './BatchIdentity.js';
|
|
28
35
|
export { planPromotions, planColumnReclamations, inferColumnTypeFromSamples, inferColumnTypeFromStats, buildOverflowStats, sanitizeColumnName } from './CustomColumnPromotion.js';
|
|
29
36
|
export { discoverFromStream, pickPrimaryKeyFromStats } from './StreamingDiscovery.js';
|
|
30
37
|
export type { StreamDiscoveryOptions, DiscoveredColumnStat, StreamDiscoveryResult, PkPickOptions, PkStatVerdict } from './StreamingDiscovery.js';
|
|
@@ -39,6 +46,8 @@ export { RateLimiter } from './RateLimiter.js';
|
|
|
39
46
|
export type { RateLimiterOptions, RateLimiterKeyState, NowFn, SleepFn } from './RateLimiter.js';
|
|
40
47
|
export { IntegrationConnectorCreationPipeline } from './IntegrationConnectorCreationPipeline.js';
|
|
41
48
|
export type { ConnectorCreationPipelineOptions, ConnectorCreationPipelineResult } from './IntegrationConnectorCreationPipeline.js';
|
|
49
|
+
export { DiscoveryWatchdog, ResolveWatchdogIntervalMs } from './DiscoveryWatchdog.js';
|
|
50
|
+
export type { DiscoveryWatchEntry, DiscoveryWatchPatch, DiscoveryWatchdogOptions } from './DiscoveryWatchdog.js';
|
|
42
51
|
export { AdaptiveConcurrencyController, RunAdaptive } from './AdaptiveConcurrency.js';
|
|
43
52
|
export type { AdaptiveConcurrencyOptions, AdaptiveItemOutcome, AdaptiveRunResult } from './AdaptiveConcurrency.js';
|
|
44
53
|
export type { FetchWarning } from './BaseIntegrationConnector.js';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,YAAY,EAAE,sBAAsB,EAAE,4BAA4B,EAAE,2BAA2B,EAAE,gCAAgC,EAAE,MAAM,mBAAmB,CAAC;AAG7J,YAAY,EACV,aAAa,EACb,eAAe,EACf,aAAa,EACb,kBAAkB,EAClB,cAAc,EACd,gBAAgB,EAChB,oBAAoB,EACpB,cAAc,EACd,YAAY,EACZ,UAAU,EACV,eAAe,EACf,mBAAmB,EACnB,aAAa,EACb,aAAa,EACb,YAAY,EACZ,oBAAoB,EACpB,kBAAkB,EAClB,qBAAqB,EACrB,wBAAwB,EACxB,gBAAgB,EAChB,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,gBAAgB,EAChB,gBAAgB,EAChB,eAAe,EACf,sBAAsB,EACtB,uBAAuB,EACvB,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,mBAAmB,EACnB,gBAAgB,EAChB,UAAU,EACV,aAAa,EACb,YAAY,EACZ,WAAW,EACX,UAAU,EACV,qBAAqB,EACrB,+BAA+B,EAC/B,aAAa,GACd,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAG7D,YAAY,EACV,aAAa,EACb,gBAAgB,EAChB,aAAa,EACb,eAAe,EACf,YAAY,EACZ,WAAW,EACX,WAAW,EACX,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,eAAe,EACf,YAAY,GACb,MAAM,iBAAiB,CAAC;AAGzB,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,qBAAqB,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AACzI,YAAY,EACV,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,EACnB,YAAY,EACZ,gBAAgB,EAChB,iBAAiB,EACjB,wBAAwB,EACxB,mBAAmB,EACnB,eAAe,GAChB,MAAM,+BAA+B,CAAC;AAGvC,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AACjF,YAAY,EAAE,eAAe,EAAE,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,mCAAmC,CAAC;AAGxH,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAG1D,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AACnE,YAAY,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAGpD,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,qBAAqB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGhJ,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAC7E,YAAY,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AAI9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAC3D,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,0BAA0B,CAAC;AAItF,YAAY,EAAE,WAAW,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAGtH,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AACnE,YAAY,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,4BAA4B,CAAC;AAG5F,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,kBAAkB,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAClJ,YAAY,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,wBAAwB,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAClL,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AACtF,YAAY,EAAE,sBAAsB,EAAE,oBAAoB,EAAE,qBAAqB,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACjJ,YAAY,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC5L,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAC/G,YAAY,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AACnD,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACxE,YAAY,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,YAAY,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,8BAA8B,CAAC;AAC5F,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,YAAY,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAChG,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AACjG,YAAY,EAAE,gCAAgC,EAAE,+BAA+B,EAAE,MAAM,2CAA2C,CAAC;AACnI,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACtF,YAAY,EAAE,0BAA0B,EAAE,mBAAmB,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AACnH,YAAY,EAAE,YAAY,EAAE,MAAM,+BAA+B,CAAC;AAClE,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,4BAA4B,CAAC;AAChF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AACzE,YAAY,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,YAAY,EAAE,eAAe,EAAE,kBAAkB,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAChG,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC9E,YAAY,EAAE,kBAAkB,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAC1F,YAAY,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|