@memberjunction/integration-engine 5.48.0 → 5.50.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 (54) hide show
  1. package/dist/BaseIntegrationConnector.d.ts.map +1 -1
  2. package/dist/BaseIntegrationConnector.js +15 -2
  3. package/dist/BaseIntegrationConnector.js.map +1 -1
  4. package/dist/BaseRESTIntegrationConnector.d.ts.map +1 -1
  5. package/dist/BaseRESTIntegrationConnector.js +16 -1
  6. package/dist/BaseRESTIntegrationConnector.js.map +1 -1
  7. package/dist/ContentHash.d.ts +21 -15
  8. package/dist/ContentHash.d.ts.map +1 -1
  9. package/dist/ContentHash.js +21 -15
  10. package/dist/ContentHash.js.map +1 -1
  11. package/dist/CustomColumnPromotion.d.ts +7 -0
  12. package/dist/CustomColumnPromotion.d.ts.map +1 -1
  13. package/dist/CustomColumnPromotion.js +17 -0
  14. package/dist/CustomColumnPromotion.js.map +1 -1
  15. package/dist/CustomOverflow.d.ts +18 -0
  16. package/dist/CustomOverflow.d.ts.map +1 -1
  17. package/dist/CustomOverflow.js +34 -0
  18. package/dist/CustomOverflow.js.map +1 -1
  19. package/dist/IntegrationConnectorCreationPipeline.d.ts.map +1 -1
  20. package/dist/IntegrationConnectorCreationPipeline.js +18 -5
  21. package/dist/IntegrationConnectorCreationPipeline.js.map +1 -1
  22. package/dist/IntegrationEngine.d.ts +106 -1
  23. package/dist/IntegrationEngine.d.ts.map +1 -1
  24. package/dist/IntegrationEngine.js +390 -65
  25. package/dist/IntegrationEngine.js.map +1 -1
  26. package/dist/IntegrationSchemaSync.d.ts +42 -0
  27. package/dist/IntegrationSchemaSync.d.ts.map +1 -1
  28. package/dist/IntegrationSchemaSync.js +126 -28
  29. package/dist/IntegrationSchemaSync.js.map +1 -1
  30. package/dist/MatchEngine.d.ts +156 -14
  31. package/dist/MatchEngine.d.ts.map +1 -1
  32. package/dist/MatchEngine.js +438 -68
  33. package/dist/MatchEngine.js.map +1 -1
  34. package/dist/RecordMapBatch.d.ts +162 -0
  35. package/dist/RecordMapBatch.d.ts.map +1 -0
  36. package/dist/RecordMapBatch.js +283 -0
  37. package/dist/RecordMapBatch.js.map +1 -0
  38. package/dist/StreamingDiscovery.d.ts +7 -1
  39. package/dist/StreamingDiscovery.d.ts.map +1 -1
  40. package/dist/StreamingDiscovery.js +10 -3
  41. package/dist/StreamingDiscovery.js.map +1 -1
  42. package/dist/index.d.ts +4 -3
  43. package/dist/index.d.ts.map +1 -1
  44. package/dist/index.js +2 -2
  45. package/dist/index.js.map +1 -1
  46. package/dist/prefetchFilter.d.ts +18 -0
  47. package/dist/prefetchFilter.d.ts.map +1 -1
  48. package/dist/prefetchFilter.js +15 -10
  49. package/dist/prefetchFilter.js.map +1 -1
  50. package/dist/types.d.ts +58 -5
  51. package/dist/types.d.ts.map +1 -1
  52. package/dist/types.js +18 -1
  53. package/dist/types.js.map +1 -1
  54. package/package.json +7 -7
package/dist/index.js CHANGED
@@ -25,8 +25,8 @@ export { IntegrationEngine } from './IntegrationEngine.js';
25
25
  export { IntegrationSchemaSync } from './IntegrationSchemaSync.js';
26
26
  // ── Restored module exports dropped by the origin/next index.ts merge (union) ──
27
27
  export { computeContentHash, CONTENT_HASH_COLUMN } from './ContentHash.js';
28
- export { CUSTOM_OVERFLOW_COLUMN, computeUnmappedFields, hasUnmappedFields } from './CustomOverflow.js';
29
- export { planPromotions, planColumnReclamations, inferColumnTypeFromSamples, buildOverflowStats, sanitizeColumnName } from './CustomColumnPromotion.js';
28
+ export { CUSTOM_OVERFLOW_COLUMN, computeUnmappedFields, hasUnmappedFields, foldCustomKeyStats, CUSTOM_KEY_SAMPLE_CAP } from './CustomOverflow.js';
29
+ export { planPromotions, planColumnReclamations, inferColumnTypeFromSamples, inferColumnTypeFromStats, buildOverflowStats, sanitizeColumnName } from './CustomColumnPromotion.js';
30
30
  export { discoverFromStream, pickPrimaryKeyFromStats } from './StreamingDiscovery.js';
31
31
  export { partitionRecords, partitionRollupHash, diffPartitions, partitionKeyForIdentity } from './HashDiff.js';
32
32
  export { mostRecentWinner, parseTimestamp } from './ConflictRecency.js';
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAgDA,+BAA+B;AAC/B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmB7D,YAAY;AACZ,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAalH,sBAAsB;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,UAAU;AACV,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGnE,4BAA4B;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,qHAAqH;AACrH,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,gFAAgF;AAChF,8GAA8G;AAC9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,uGAAuG;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,kFAAkF;AAClF,OAAO,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,sBAAsB,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACvG,OAAO,EAAE,cAAc,EAAE,sBAAsB,EAAE,0BAA0B,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AACxJ,OAAO,EAAE,kBAAkB,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAGtF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE/G,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AAEjG,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAItF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAGzE,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiDA,+BAA+B;AAC/B,OAAO,EAAE,gBAAgB,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAmB7D,YAAY;AACZ,OAAO,EAAE,wBAAwB,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,+BAA+B,CAAC;AAalH,sBAAsB;AACtB,OAAO,EAAE,4BAA4B,EAAE,MAAM,mCAAmC,CAAC;AAGjF,UAAU;AACV,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,UAAU;AACV,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAE1D,WAAW;AACX,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAEzD,QAAQ;AACR,OAAO,EAAE,SAAS,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAGnE,4BAA4B;AAC5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAGvE,qHAAqH;AACrH,OAAO,EAAE,0BAA0B,EAAE,MAAM,iCAAiC,CAAC;AAG7E,gFAAgF;AAChF,8GAA8G;AAC9G,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAE3D,uGAAuG;AACvG,OAAO,EAAE,qBAAqB,EAAE,MAAM,4BAA4B,CAAC;AAGnE,kFAAkF;AAClF,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;AAElJ,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;AAGtF,OAAO,EAAE,gBAAgB,EAAE,mBAAmB,EAAE,cAAc,EAAE,uBAAuB,EAAE,MAAM,eAAe,CAAC;AAE/G,OAAO,EAAE,gBAAgB,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAExE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AAEvE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAE/C,OAAO,EAAE,oCAAoC,EAAE,MAAM,2CAA2C,CAAC;AAEjG,OAAO,EAAE,6BAA6B,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAItF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4BAA4B,CAAC;AAGzE,qEAAqE;AACrE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,OAAO,EAAE,aAAa,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAE9E,OAAO,EAAE,yBAAyB,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}
@@ -11,11 +11,29 @@
11
11
  * targets, so it does NOT reintroduce the "SS brackets break Postgres" problem that motivated the
12
12
  * previous (unsafe) unquoted form.
13
13
  */
14
+ import type { DatabasePlatform } from '@memberjunction/core';
14
15
  /** The minimal dialect surface this builder needs; satisfied by `DatabaseProviderBase.Dialect` (SQLDialect). */
15
16
  export interface SqlQuoter {
16
17
  QuoteIdentifier(name: string): string;
17
18
  QuoteStringLiteral(value: string): string;
19
+ /** Which platform the quoter is for. Always present on a real `SQLDialect`. */
20
+ PlatformKey?: DatabasePlatform;
18
21
  }
22
+ /**
23
+ * Quotes a value as a string literal that a **Unicode text column** comparison will actually match.
24
+ *
25
+ * On SQL Server a bare `'…'` is a *varchar* literal: every character outside the database's
26
+ * collation codepage is replaced with `?` before the comparison runs. On the default
27
+ * `SQL_Latin1_General_CP1_CI_AS`, an external ID of `ünïcödé-Ω-日本語` becomes `ünïcödé-O-???`, so
28
+ * `ExternalSystemRecordID = '…'` matches the (nvarchar) row zero times — the record reads as
29
+ * unmapped and the sync creates it a second time in the customer's external system. `N'…'` makes
30
+ * the literal nvarchar, which is what every MJ string column already is, so there is no implicit
31
+ * conversion on the column and the index seek is unaffected.
32
+ *
33
+ * PostgreSQL literals are already Unicode and it has no `N` prefix, hence the platform check
34
+ * rather than an unconditional prefix.
35
+ */
36
+ export declare function quoteTextLiteral(value: string, q: SqlQuoter): string;
19
37
  /**
20
38
  * @param pkNames the entity's primary-key field name(s), in `PrimaryKeys` order.
21
39
  * @param ids the `MatchedMJRecordID` values — a single value per record for a single PK, or the
@@ -1 +1 @@
1
- {"version":3,"file":"prefetchFilter.d.ts","sourceRoot":"","sources":["../src/prefetchFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,gHAAgH;AAChH,MAAM,WAAW,SAAS;IACtB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;CAC7C;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAarG"}
1
+ {"version":3,"file":"prefetchFilter.d.ts","sourceRoot":"","sources":["../src/prefetchFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAE7D,gHAAgH;AAChH,MAAM,WAAW,SAAS;IACtB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAAC;IACtC,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC;IAC1C,+EAA+E;IAC/E,WAAW,CAAC,EAAE,gBAAgB,CAAC;CAClC;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAGpE;AAED;;;;;;GAMG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,EAAE,EAAE,CAAC,EAAE,SAAS,GAAG,MAAM,CAarG"}
@@ -1,16 +1,21 @@
1
1
  /**
2
- * Builds the WHERE filter for the content-hash prefetch (`IntegrationEngine.PrefetchContentHashes`)
3
- * — the bulk stored-hash lookup that powers the idempotent-skip fast path.
2
+ * Quotes a value as a string literal that a **Unicode text column** comparison will actually match.
4
3
  *
5
- * Both the PK identifier(s) AND the value literals are quoted through the provider's SQL dialect.
6
- * Quoting the IDENTIFIER is the fix for MJ#3047: an integration object whose PK column name is a SQL
7
- * reserved word (e.g. Zendesk `custom_objects.key`) otherwise yields `WHERE key IN (...)`, which the
8
- * database rejects. `PrefetchContentHashes` swallows that error (best-effort), so the prefetch returns
9
- * empty and the content-hash idempotency skip can never engage every unchanged record is re-written
10
- * on each sync. Dialect-aware quoting (SQL Server `[key]`, PostgreSQL `"key"`) keeps it valid on both
11
- * targets, so it does NOT reintroduce the "SS brackets break Postgres" problem that motivated the
12
- * previous (unsafe) unquoted form.
4
+ * On SQL Server a bare `'…'` is a *varchar* literal: every character outside the database's
5
+ * collation codepage is replaced with `?` before the comparison runs. On the default
6
+ * `SQL_Latin1_General_CP1_CI_AS`, an external ID of `ünïcödé-Ω-日本語` becomes `ünïcödé-O-???`, so
7
+ * `ExternalSystemRecordID = '…'` matches the (nvarchar) row zero times — the record reads as
8
+ * unmapped and the sync creates it a second time in the customer's external system. `N'…'` makes
9
+ * the literal nvarchar, which is what every MJ string column already is, so there is no implicit
10
+ * conversion on the column and the index seek is unaffected.
11
+ *
12
+ * PostgreSQL literals are already Unicode and it has no `N` prefix, hence the platform check
13
+ * rather than an unconditional prefix.
13
14
  */
15
+ export function quoteTextLiteral(value, q) {
16
+ const quoted = q.QuoteStringLiteral(value);
17
+ return q.PlatformKey === 'sqlserver' ? `N${quoted}` : quoted;
18
+ }
14
19
  /**
15
20
  * @param pkNames the entity's primary-key field name(s), in `PrimaryKeys` order.
16
21
  * @param ids the `MatchedMJRecordID` values — a single value per record for a single PK, or the
@@ -1 +1 @@
1
- {"version":3,"file":"prefetchFilter.js","sourceRoot":"","sources":["../src/prefetchFilter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAQH;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAiB,EAAE,GAAa,EAAE,CAAY;IACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,4CAA4C;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,GAAG,CAAC;IAC7D,CAAC;IACD,2FAA2F;IAC3F,mFAAmF;IACnF,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACjB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACjC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;IAC5G,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC"}
1
+ {"version":3,"file":"prefetchFilter.js","sourceRoot":"","sources":["../src/prefetchFilter.ts"],"names":[],"mappings":"AAuBA;;;;;;;;;;;;;GAaG;AACH,MAAM,UAAU,gBAAgB,CAAC,KAAa,EAAE,CAAY;IACxD,MAAM,MAAM,GAAG,CAAC,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC3C,OAAO,CAAC,CAAC,WAAW,KAAK,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;AACjE,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,8BAA8B,CAAC,OAAiB,EAAE,GAAa,EAAE,CAAY;IACzF,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACvB,4CAA4C;QAC5C,MAAM,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QACzE,OAAO,GAAG,CAAC,CAAC,eAAe,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,GAAG,CAAC;IAC7D,CAAC;IACD,2FAA2F;IAC3F,mFAAmF;IACnF,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;QACjB,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACrC,OAAO,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,CAAC,EAAE,EAAE,CACjC,GAAG,CAAC,CAAC,eAAe,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,kBAAkB,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,GAAG,CAAC;IAC5G,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC"}
package/dist/types.d.ts CHANGED
@@ -14,7 +14,7 @@ export type RecordChangeType = 'Create' | 'Update' | 'Delete' | 'Skip';
14
14
  /** Status of a running integration sync */
15
15
  export type IntegrationRunStatus = 'Pending' | 'In Progress' | 'Success' | 'Failed';
16
16
  /** Classification of sync errors for retry/alert decisions */
17
- export type SyncErrorCode = 'VALIDATION_ERROR' | 'FK_CONSTRAINT_VIOLATION' | 'DUPLICATE_KEY' | 'NETWORK_TIMEOUT' | 'RATE_LIMIT_EXCEEDED' | 'CONNECTOR_ERROR' | 'TRANSFORM_ERROR' | 'MATCH_RESOLUTION_ERROR' | 'DATABASE_ERROR' | 'WATERMARK_INVALID' | 'CONFIGURATION_ERROR' | 'UNKNOWN_ERROR';
17
+ export type SyncErrorCode = 'VALIDATION_ERROR' | 'FK_CONSTRAINT_VIOLATION' | 'DUPLICATE_KEY' | 'NETWORK_TIMEOUT' | 'RATE_LIMIT_EXCEEDED' | 'CONNECTOR_ERROR' | 'TRANSFORM_ERROR' | 'MATCH_RESOLUTION_ERROR' | 'DATABASE_ERROR' | 'WRITE_VERIFICATION_ERROR' | 'WATERMARK_INVALID' | 'CONFIGURATION_ERROR' | 'UNKNOWN_ERROR';
18
18
  /** Severity level of a sync error */
19
19
  export type ErrorSeverity = 'Critical' | 'Warning' | 'Info';
20
20
  /** Whether an error with the given code is retryable */
@@ -59,6 +59,27 @@ export interface MappedRecord {
59
59
  */
60
60
  UnmappedFields?: Record<string, unknown>;
61
61
  }
62
+ /**
63
+ * Per-key statistics for CUSTOM (unmapped) source keys observed during a sync — aggregated
64
+ * IN MEMORY across every fetched record, REGARDLESS of whether the row was written or the
65
+ * content-hash fast path skipped it. Custom-overflow behaviour: a newly-appearing custom
66
+ * column must NOT affect the row-hash match (so unchanged rows stay skip-cheap), yet its
67
+ * presence + sizing statistics must still surface as a promotion candidate at sync end. This
68
+ * out-of-band aggregation is what makes both true at once — candidates and generous sizing
69
+ * stats exist even when every row was skipped.
70
+ */
71
+ export interface CustomKeyStat {
72
+ /** The unmapped source key as it appears in `ExternalRecord.Fields`. */
73
+ Key: string;
74
+ /** Records in which the key appeared with a non-null value. */
75
+ Occurrences: number;
76
+ /** Total records scanned for this entity map this run. */
77
+ TotalRecords: number;
78
+ /** Longest observed String(value).length — sizes the future column generously. */
79
+ MaxLength: number;
80
+ /** Bounded sample of observed values, for type inference at promotion time. */
81
+ SampleValues: unknown[];
82
+ }
62
83
  /** Aggregate result of a sync operation */
63
84
  export interface SyncResult {
64
85
  /** Whether the overall sync completed without fatal errors */
@@ -99,6 +120,12 @@ export interface SyncResult {
99
120
  * case). Lets the resolver surface SchemaUpdatePending to the client.
100
121
  */
101
122
  SchemaUpdate?: SchemaPromotionResult;
123
+ /**
124
+ * Custom (unmapped) source keys observed this run, keyed by target MJ entity name — the
125
+ * out-of-band candidate statistics gathered regardless of row writes/skips (see
126
+ * {@link CustomKeyStat}). Undefined for a customs-free sync.
127
+ */
128
+ CustomKeyStats?: Record<string, CustomKeyStat[]>;
102
129
  }
103
130
  /** Outcome of the post-sync custom-column promotion pass (gaps.md §2 / M2). */
104
131
  export interface SchemaPromotionResult {
@@ -140,6 +167,13 @@ export type PostSyncSchemaPromotionCallback = (ctx: {
140
167
  ContextUser: unknown;
141
168
  SyncedEntityNames: string[];
142
169
  Provider?: unknown;
170
+ /**
171
+ * The sync's in-memory custom-key statistics (keyed by entity name). Supplements the
172
+ * overflow-column scan: with the Content-hash basis (overflow excluded from matching),
173
+ * unchanged rows never write their overflow JSON, so the column scan alone under-reports —
174
+ * these stats carry the candidates + sizing evidence for exactly those skipped rows.
175
+ */
176
+ CustomKeyStats?: Record<string, CustomKeyStat[]>;
143
177
  }) => Promise<SchemaPromotionResult>;
144
178
  /** Per-entity-map result within a sync run */
145
179
  export interface EntityMapSyncResult {
@@ -269,6 +303,13 @@ export interface IntrospectSchemaOptions {
269
303
  * user-selected subset whenever possible.
270
304
  */
271
305
  ObjectNames?: string[];
306
+ /**
307
+ * U11 — optional live progress callback: invoked after each object's describe completes
308
+ * (or is skipped) with (scanned, total). Lets a caller drive a DETERMINATE discovery bar
309
+ * ("scanned N of M objects") instead of an indeterminate spinner. Best-effort — the
310
+ * default IntrospectSchema invokes it; connector overrides may or may not.
311
+ */
312
+ OnProgress?: (scanned: number, total: number) => void;
272
313
  }
273
314
  /** One source object (table, API entity) discovered during introspection. */
274
315
  export interface SourceObjectInfo {
@@ -322,8 +363,17 @@ export interface SourceFieldInfo {
322
363
  Scale: number | null;
323
364
  /** Default value expression (null if none). */
324
365
  DefaultValue: string | null;
325
- /** Whether this field is part of the primary key. */
326
- IsPrimaryKey: boolean;
366
+ /**
367
+ * Whether this field is part of the primary key.
368
+ *
369
+ * `undefined` means the SOURCE HAD NO OPINION (a sample/list API that doesn't
370
+ * report PKs) — semantically distinct from an explicit `false` (the source
371
+ * affirmed it is NOT a PK). The persist overlay (`decideBooleanOverlay`)
372
+ * treats `undefined` as no-opinion so a Declared `true` survives; coercing
373
+ * silence to `false` here is the U1 bug that wiped declared PKs (the
374
+ * keyless-entity root). Never write `?? false` when mapping into this field.
375
+ */
376
+ IsPrimaryKey?: boolean;
327
377
  /**
328
378
  * Whether this field is constrained as unique. Distinct from IsPrimaryKey —
329
379
  * an object can have several unique fields (email, phone) of which only one
@@ -337,8 +387,11 @@ export interface SourceFieldInfo {
337
387
  * Create/Update operation bodies.
338
388
  */
339
389
  IsReadOnly?: boolean;
340
- /** Whether this field is a foreign key. */
341
- IsForeignKey: boolean;
390
+ /**
391
+ * Whether this field is a foreign key. `undefined` = the source had no
392
+ * opinion (see IsPrimaryKey) — distinct from an affirmed `false`.
393
+ */
394
+ IsForeignKey?: boolean;
342
395
  /** If FK, which source object it references (null if not a FK). */
343
396
  ForeignKeyTarget: string | null;
344
397
  }
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/dist/types.js CHANGED
@@ -18,6 +18,19 @@ export function ClassifyError(error) {
18
18
  if (lower.includes('duplicate') || lower.includes('unique constraint') || lower.includes('primary key')) {
19
19
  return { Code: 'DUPLICATE_KEY', Severity: 'Warning' };
20
20
  }
21
+ // "no rows returned" from a Create's mandatory read-back (spCreate's `SELECT * FROM vw... WHERE
22
+ // <key columns>`) is a DETERMINISTIC failure — almost always a null/mismatched key-column value
23
+ // (the U1 class of bug: a PK column silently absent from the generated INSERT/EXEC call, so
24
+ // `WHERE col = NULL` matches zero rows). Retrying the SAME write with the SAME inputs reproduces
25
+ // the SAME miss every time — this is NOT a transient condition. Checked BEFORE the generic
26
+ // 'sql'-substring catch-all below (which this message would otherwise match, since the mssql
27
+ // driver's own error text is "SQL Error: ..."), and deliberately excluded from
28
+ // `IsRetryableError` — misclassifying it as `DATABASE_ERROR` sends it through exponential-backoff
29
+ // retry for the full retry budget before dead-lettering, burning many minutes for a failure that
30
+ // was never going to resolve on retry.
31
+ if (lower.includes('no rows returned')) {
32
+ return { Code: 'WRITE_VERIFICATION_ERROR', Severity: 'Critical' };
33
+ }
21
34
  if (lower.includes('validation') || lower.includes('validate')) {
22
35
  return { Code: 'VALIDATION_ERROR', Severity: 'Warning' };
23
36
  }
@@ -33,7 +46,11 @@ export function ClassifyError(error) {
33
46
  if (lower.includes('configuration') || lower.includes('config')) {
34
47
  return { Code: 'CONFIGURATION_ERROR', Severity: 'Critical' };
35
48
  }
36
- if (lower.includes('connect') || lower.includes('econnrefused') || lower.includes('sql')) {
49
+ // Genuinely transient/connection-level signals only — NOT a bare 'sql' substring, which matches
50
+ // almost any DB-flavored error message (including the deterministic one above) and made this
51
+ // catch-all classify far too much as retryable.
52
+ if (lower.includes('connect') || lower.includes('econnrefused') || lower.includes('deadlock')
53
+ || lower.includes('connection') || lower.includes('pool')) {
37
54
  return { Code: 'DATABASE_ERROR', Severity: 'Critical' };
38
55
  }
39
56
  if (lower.includes('connector')) {
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/integration-engine",
3
3
  "type": "module",
4
- "version": "5.48.0",
4
+ "version": "5.50.0",
5
5
  "description": "MemberJunction Integration Engine - orchestration, field mapping, and connector framework",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -14,12 +14,12 @@
14
14
  "test:watch": "vitest"
15
15
  },
16
16
  "dependencies": {
17
- "@memberjunction/core": "5.48.0",
18
- "@memberjunction/core-entities": "5.48.0",
19
- "@memberjunction/global": "5.48.0",
20
- "@memberjunction/integration-engine-base": "5.48.0",
21
- "@memberjunction/integration-pk-classifier": "5.48.0",
22
- "@memberjunction/integration-progress-artifacts": "5.48.0"
17
+ "@memberjunction/core": "5.50.0",
18
+ "@memberjunction/core-entities": "5.50.0",
19
+ "@memberjunction/global": "5.50.0",
20
+ "@memberjunction/integration-engine-base": "5.50.0",
21
+ "@memberjunction/integration-pk-classifier": "5.50.0",
22
+ "@memberjunction/integration-progress-artifacts": "5.50.0"
23
23
  },
24
24
  "devDependencies": {
25
25
  "tsc-alias": "^1.8.16",