@mj-biz-apps/common-activity-sync 5.37.0 → 5.39.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 (32) hide show
  1. package/dist/ActivitySyncEngine.d.ts +2 -0
  2. package/dist/ActivitySyncEngine.d.ts.map +1 -1
  3. package/dist/ActivitySyncEngine.js +9 -0
  4. package/dist/ActivitySyncEngine.js.map +1 -1
  5. package/dist/BaseActivitySyncProvider.d.ts +14 -0
  6. package/dist/BaseActivitySyncProvider.d.ts.map +1 -1
  7. package/dist/BaseActivitySyncProvider.js +18 -1
  8. package/dist/BaseActivitySyncProvider.js.map +1 -1
  9. package/dist/index.d.ts +3 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +3 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/providers/GraphCommunicationTransport.d.ts +110 -0
  14. package/dist/providers/GraphCommunicationTransport.d.ts.map +1 -0
  15. package/dist/providers/GraphCommunicationTransport.js +99 -0
  16. package/dist/providers/GraphCommunicationTransport.js.map +1 -0
  17. package/dist/providers/MSGraphActivitySyncProvider.d.ts +49 -6
  18. package/dist/providers/MSGraphActivitySyncProvider.d.ts.map +1 -1
  19. package/dist/providers/MSGraphActivitySyncProvider.js +145 -20
  20. package/dist/providers/MSGraphActivitySyncProvider.js.map +1 -1
  21. package/dist/providers/MessageTransport.d.ts +81 -0
  22. package/dist/providers/MessageTransport.d.ts.map +1 -0
  23. package/dist/providers/MessageTransport.js +30 -0
  24. package/dist/providers/MessageTransport.js.map +1 -0
  25. package/dist/providers/RecordedMessageTransport.d.ts +48 -0
  26. package/dist/providers/RecordedMessageTransport.d.ts.map +1 -0
  27. package/dist/providers/RecordedMessageTransport.js +49 -0
  28. package/dist/providers/RecordedMessageTransport.js.map +1 -0
  29. package/dist/types.d.ts +11 -0
  30. package/dist/types.d.ts.map +1 -1
  31. package/dist/types.js.map +1 -1
  32. package/package.json +6 -4
@@ -41,6 +41,8 @@ interface ConnectionRow {
41
41
  Status: string;
42
42
  Provider: string | null;
43
43
  Mailbox: string | null;
44
+ /** MJ Credentials engine KEY, never a secret. Read by `BaseActivitySyncProvider.Configure`. */
45
+ CredentialsRef: string | null;
44
46
  StartAt: Date | string | null;
45
47
  EndAt: Date | string | null;
46
48
  LastSyncAt: Date | string | null;
@@ -1 +1 @@
1
- {"version":3,"file":"ActivitySyncEngine.d.ts","sourceRoot":"","sources":["../src/ActivitySyncEngine.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ActivitySyncEngine.d.ts","sourceRoot":"","sources":["../src/ActivitySyncEngine.ts"],"names":[],"mappings":"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"}
@@ -129,6 +129,15 @@ export class ActivitySyncEngine {
129
129
  : 'Provider type is missing and no provider was injected.');
130
130
  return result;
131
131
  }
132
+ // Tell the plugin which connection this run is for BEFORE it fetches. This is the only
133
+ // moment it can learn which credential the connection named: ClassFactory builds plugins
134
+ // with no arguments, so nothing is injectable at construction.
135
+ plugin.Configure({
136
+ CredentialsRef: connection.CredentialsRef ?? null,
137
+ Mailbox: connection.Mailbox ?? null,
138
+ DriverClass: typeRow?.DriverClass ?? plugin.ProviderTypeCode,
139
+ ContextUser: contextUser,
140
+ });
132
141
  const sourceSystem = typeRow?.Code ?? plugin.ProviderTypeCode;
133
142
  const since = SurfaceWatermark(plugin.Kind, connection.LastSyncAt, connection.Settings);
134
143
  const extensions = await this.loadExtensions(connection.ID, typeRow?.ID ?? null, contextUser);
@@ -1 +1 @@
1
- {"version":3,"file":"ActivitySyncEngine.js","sourceRoot":"","sources":["../src/ActivitySyncEngine.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACH,QAAQ,EACR,OAAO,GAGV,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,QAAQ,EAAE,MAAM,wBAAwB,CAAC;AAQlD,OAAO,EAAE,yBAAyB,EAAE,MAAM,gCAAgC,CAAC;AAC3E,OAAO,EAAE,wBAAwB,EAAE,MAAM,+BAA+B,CAAC;AACzE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EACH,qBAAqB,EACrB,uBAAuB,GAG1B,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,EACH,0BAA0B,GAI7B,MAAM,aAAa,CAAC;AACrB,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EAAE,2BAA2B,EAAE,MAAM,4CAA4C,CAAC;AACzF,OAAO,EACH,6BAA6B,EAC7B,uBAAuB,GAG1B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACH,gBAAgB,EAChB,kBAAkB,GAGrB,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,WAAW,EAAE,MAAM,UAAU,CAAC;AAEvC,OAAO,EACH,mBAAmB,EACnB,sBAAsB,EACtB,aAAa,EACb,gBAAgB,GAEnB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,qBAAqB,EAAE,WAAW,EAAE,gBAAgB,EAAiB,MAAM,WAAW,CAAC;AAChG,OAAO,EAAE,cAAc,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAsBpE,sHAAsH;AACtH,MAAM,CAAC,MAAM,wBAAwB,GAAG,GAAG,CAAC;AAsC5C;;;GAGG;AACH,MAAM,UAAU,sBAAsB,CAAC,OAAoC;IACvE,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;IACjD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACrC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAClF,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,2BAA2B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9E,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,uBAAuB,CAAC,MAAiC;IACrE,MAAM,IAAI,GAAG,IAAI,GAAG,EAAyB,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;QAChC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;YAClB,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;QACxC,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC5B,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;QAC7B,CAAC;IACL,CAAC;IACD,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC,CAAC;AAC7E,CAAC;AAED,SAAS,mBAAmB,CAAC,MAAyB;IAClD,OAAO;QACH,OAAO,EAAE,KAAK;QACd,KAAK,EAAE,IAAI;QACX,OAAO,EAAE,CAAC;QACV,QAAQ,EAAE,CAAC;QACX,QAAQ,EAAE,CAAC;QACX,UAAU,EAAE,CAAC;QACb,MAAM,EAAE,CAAC;QACT,eAAe,EAAE,CAAC;QAClB,mBAAmB,EAAE,IAAI;QACzB,MAAM,EAAE,CAAC,GAAG,MAAM,CAAC;KACtB,CAAC;AACN,CAAC;AAED,MAAM,OAAO,kBAAkB;IAC3B,YACqB,WAA6B,IAAI,gBAAgB,EAAE,EACnD,SAAyB,IAAI,cAAc,EAAE,EAC7C,SAAgC,0BAA0B,EAAE;QAF5D,aAAQ,GAAR,QAAQ,CAA2C;QACnD,WAAM,GAAN,MAAM,CAAuC;QAC7C,WAAM,GAAN,MAAM,CAAsD;IAC9E,CAAC;IAEG,KAAK,CAAC,GAAG,CACZ,YAAoB,EACpB,OAAuB,EACvB,QAA2B,EAC3B,WAAqB,EACrB,MAAiC,EACjC,OAA2B;QAE3B,MAAM,WAAW,GAAG,OAAO,EAAE,WAAW,IAAI,IAAI,CAAC;QACjD,MAAM,MAAM,GAAqB;YAC7B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI;YACX,OAAO,EAAE,CAAC;YACV,QAAQ,EAAE,CAAC;YACX,QAAQ,EAAE,CAAC;YACX,UAAU,EAAE,CAAC;YACb,MAAM,EAAE,CAAC;YACT,eAAe,EAAE,CAAC;YAClB,mBAAmB,EAAE,IAAI;YACzB,MAAM,EAAE,EAAE;SACb,CAAC;QAEF,IAAI,UAAU,GAAG,OAAO,EAAE,UAAU,CAAC;QACrC,IAAI,CAAC,UAAU,IAAI,UAAU,CAAC,EAAE,KAAK,YAAY,EAAE,CAAC;YAChD,MAAM,gBAAgB,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YAC9E,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;gBAC3C,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,UAAU,GAAG,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,IAAI,CAAC,UAAU,EAAE,CAAC;YACd,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,8BAA8B,YAAY,IAAI,CAAC,CAAC;YACnE,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,IACI,CAAC,kBAAkB,CACf,UAAU,CAAC,MAAoD,EAC/D,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EACxD,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EACpD,GAAG,CACN,EACH,CAAC;YACC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,cAAc,YAAY,+BAA+B,CAAC,CAAC;YAC9E,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,IAAI,OAAO,GAA2B,IAAI,CAAC;QAC3C,IAAI,OAAO,IAAI,MAAM,CAAC,SAAS,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,EAAE,CAAC;YACtE,OAAO,GAAG,OAAO,CAAC,OAAO,IAAI,IAAI,CAAC;QACtC,CAAC;aAAM,IAAI,UAAU,CAAC,0BAA0B,EAAE,CAAC;YAC/C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC;YACnG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;gBACpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;gBACrC,OAAO,MAAM,CAAC;YAClB,CAAC;YACD,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QACzC,CAAC;QACD,2EAA2E;QAC3E,kCAAkC;QAClC,MAAM,aAAa,GAAG,6BAA6B,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;QAEzF,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,IAAI,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;QACzG,IAAI,CAAC,MAAM,EAAE,CAAC;YACV,MAAM,CAAC,MAAM,CAAC,IAAI,CACd,OAAO;gBACH,CAAC,CAAC,2DAA2D,OAAO,CAAC,WAAW,IAAI;gBACpF,CAAC,CAAC,wDAAwD,CACjE,CAAC;YACF,OAAO,MAAM,CAAC;QAClB,CAAC;QACD,MAAM,YAAY,GAAG,OAAO,EAAE,IAAI,IAAI,MAAM,CAAC,gBAAgB,CAAC;QAC9D,MAAM,KAAK,GAAG,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,UAAU,CAAC,UAAU,EAAE,UAAU,CAAC,QAAQ,CAAC,CAAC;QAExF,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,EAAE,IAAI,IAAI,EAAE,WAAW,CAAC,CAAC;QAC9F,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACrH,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,KAAK,CAAC;YAC7B,OAAO,EAAE,UAAU,CAAC,OAAO,IAAI,EAAE;YACjC,KAAK,EAAE,KAAK;YACZ,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAC,CAAC;QACH,MAAM,CAAC,OAAO,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;QACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;QACpC,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,UAAU,CAClB,UAAU,EACV,OAAO,EACP,MAAM,EACN,KAAK,EACL,QAAQ,EACR,WAAW,EACX,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,wBAAwB,EACpD,WAAW,CACd,CAAC;QACN,CAAC;QAED,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,eAAe,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;QACpE,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChH,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QACtE,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;YACpB,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,UAAU,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QACrH,CAAC;QACD,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,SAAS,CAAC,YAAY,EAAE,KAAK,CAAC,IAAI,EAAE,WAAW,CAAC,CAAC;QAC1E,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;YACf,OAAO,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,KAAK,CAAC,KAAK,EAAE,WAAW,CAAC,CAAC;QAChH,CAAC;QAED,MAAM,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QACnE,MAAM,eAAe,GAAqB,EAAE,CAAC;QAC7C,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,eAAe,EAAE,WAAW,CAAC,CAAC;QAC7E,IAAI,UAAU,CAAC,YAAY,EAAE,CAAC;YAC1B,MAAM,CAAC,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;YACpC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,2DAA2D,CAAC,CAAC;YAChF,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;YAC3F,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;gBACjC,MAAM,IAAI,CAAC,qBAAqB,CAC5B,UAAU,CAAC,EAAE,EACb,KAAK,EACL,2DAA2D,EAC3D,WAAW,EACX,QAAQ,CACX,CAAC;YACN,CAAC;YACD,OAAO,MAAM,CAAC;QAClB,CAAC;QAED,MAAM,OAAO,GAQR,EAAE,CAAC;QAER,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,EAAE,CAAC;YAC7B,MAAM,GAAG,GAA+B;gBACpC,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,gBAAgB,EAAE,YAAY;gBAC9B,UAAU,EAAE,UAAU,CAAC,IAAI;gBAC3B,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,eAAe,EAAE,EAAE;gBACnB,cAAc,EAAE,UAAU,CAAC,KAAK;aACnC,CAAC;YACF,IAAI,OAAO,CAAC;YACZ,IAAI,CAAC;gBACD,OAAO,GAAG,MAAM,uBAAuB,CACnC,IAAI,CAAC,MAAM,EACX,IAAI,EACJ,GAAG,EACH,aAAa,CAChB,CAAC;YACN,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;gBAChC,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,eAAe;oBACtB,MAAM,EAAE,MAAM,CAAC,GAAG,CAAC;iBACtB,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;oBACtD,KAAK,EAAE,OAAO,CAAC,SAAS;oBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,MAAM,EAAE,OAAO,CAAC,kBAAkB;oBAClC,WAAW,EAAE,OAAO,CAAC,uBAAuB;iBAC/C,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YAED,IAAI,OAAO,CAAC,QAAQ,KAAK,SAAS,EAAE,CAAC;gBACjC,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC,CAAC,UAAU;oBACtD,KAAK,EAAE,OAAO,CAAC,SAAS;oBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;iBACzB,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YAED,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACjB,MAAM,CAAC,QAAQ,EAAE,CAAC;gBAClB,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,cAAc;oBACxB,KAAK,EAAE,OAAO,CAAC,SAAS;oBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;oBACtB,MAAM,EAAE,OAAO,CAAC,kBAAkB;iBACrC,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YAED,MAAM,cAAc,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,EAAE,WAAW,CAAC,CAAC;YACnF,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;gBAC9B,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,SAAS;oBAChB,MAAM,EAAE,6BAA6B;iBACxC,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,QAAQ,CAAC;YAC7D,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,CACnC;gBACI,IAAI,EAAE,IAAI;gBACV,YAAY,EAAE,UAAU,CAAC,EAAE;gBAC3B,YAAY,EAAE,YAAY;gBAC1B,MAAM,EAAE,WAAW;gBACnB,QAAQ,EAAE,cAAc,CAAC,QAAQ;gBACjC,UAAU,EAAE,cAAc,CAAC,UAAU;gBACrC,SAAS,EAAE,qBAAqB,CAAC,UAAU,CAAC,QAAQ,CAAC;aACxD,EACD,QAAQ,EACR,WAAW,EACX;gBACI,gBAAgB,EAAE,YAAY;gBAC9B,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE;oBAC1B,MAAM,GAAG,GAAG,MAAM,uBAAuB,CACrC,QAAQ,EACR,UAAU,CAAC,IAAI,EACf,CAAC,WAAW,EAAE,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,WAAW,CAAC,CACtD,CAAC;oBACF,MAAM,CAAC,eAAe,IAAI,GAAG,CAAC,MAAM,CAAC;oBACrC,eAAe,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,CAAC;oBACpC,IAAI,GAAG,CAAC,OAAO,EAAE,CAAC;wBACd,MAAM,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;wBAC/C,MAAM,IAAI,KAAK,CAAC,IAAI,EAAE,SAAS,IAAI,6CAA6C,CAAC,CAAC;oBACtF,CAAC;gBACL,CAAC;aACJ,CACJ,CAAC;YACF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnB,MAAM,CAAC,MAAM,EAAE,CAAC;gBAChB,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,cAAc;iBACtD,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YACD,IAAI,OAAO,CAAC,cAAc,EAAE,CAAC;gBACzB,MAAM,CAAC,UAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,IAAI,CAAC;oBACT,IAAI,EAAE,IAAI;oBACV,QAAQ,EAAE,WAAW;oBACrB,KAAK,EAAE,OAAO;oBACd,MAAM,EAAE,yCAAyC;oBACjD,UAAU,EAAE,OAAO,CAAC,UAAU;iBACjC,CAAC,CAAC;gBACH,SAAS;YACb,CAAC;YACD,MAAM,CAAC,QAAQ,EAAE,CAAC;YAClB,OAAO,CAAC,IAAI,CAAC;gBACT,IAAI,EAAE,IAAI;gBACV,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,OAAO,CAAC,SAAS;gBACxB,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,MAAM,EAAE,OAAO,CAAC,kBAAkB;gBAClC,UAAU,EAAE,OAAO,CAAC,UAAU;aACjC,CAAC,CAAC;QACP,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAClB,MAAM,IAAI,CAAC,eAAe,CAAC,uBAAuB,CAAC,eAAe,CAAC,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAChG,CAAC;QAED,MAAM,OAAO,GAAe;YACxB,OAAO,EAAE,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,UAAU;YAC5C,SAAS,EAAE,MAAM,CAAC,QAAQ;YAC1B,MAAM,EAAE,MAAM,CAAC,MAAM;SACxB,CAAC;QACF,MAAM,SAAS,GAAG,KAAK,CAAC,aAAa,CAAC;QACtC,MAAM,IAAI,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC;QAC/E,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,IAAI,IAAI,mBAAmB,CAAC,OAAO,CAAC,IAAI,SAAS,EAAE,CAAC;YACvE,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAC5C,YAAY,EACZ,IAAI,EACJ,MAAM,CAAC,IAAI,EACX,WAAW,EACX,QAAQ,CACX,CAAC;YACF,IAAI,OAAO,EAAE,CAAC;gBACV,MAAM,CAAC,mBAAmB,GAAG,IAAI,CAAC;YACtC,CAAC;iBAAM,CAAC;gBACJ,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;YACzF,CAAC;QACL,CAAC;QAED,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,mBAAmB,EAAE,QAAQ,EAAE,WAAW,EAAE,OAAO,CAAC,CAAC;QAC9I,MAAM,CAAC,OAAO,GAAG,MAAM,CAAC,MAAM,KAAK,CAAC,CAAC;QACrC,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,qBAAqB,CAC5B,YAAY,EACZ,MAAM,CAAC,OAAO,EACd,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,EAChC,WAAW,EACX,QAAQ,CACX,CAAC;QACN,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAED;;;;;;;;OAQG;IACI,KAAK,CAAC,cAAc,CACvB,OAAuB,EACvB,QAA2B,EAC3B,WAAqB;QAErB,MAAM,KAAK,GAAmB,EAAE,OAAO,EAAE,IAAI,EAAE,oBAAoB,EAAE,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC;QAClG,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,uBAAuB,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAChB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YAChC,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAC;QACjB,CAAC;QACD,IAAI,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC;QACvB,IAAI,IAAI,CAAC,MAAM,GAAG,wBAAwB,EAAE,CAAC;YACzC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;YACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CACb,6CAA6C,wBAAwB,6CAA6C,CACrH,CAAC;YACF,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,wBAAwB,CAAC,CAAC;QACnD,CAAC;QACD,KAAK,MAAM,UAAU,IAAI,IAAI,EAAE,CAAC;YAC5B,KAAK,CAAC,oBAAoB,EAAE,CAAC;YAC7B,IAAI,OAAO,GAA2B,IAAI,CAAC;YAC3C,IAAI,UAAU,CAAC,0BAA0B,EAAE,CAAC;gBACxC,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,gBAAgB,CAAC,UAAU,CAAC,0BAA0B,EAAE,WAAW,CAAC,CAAC;gBACnG,IAAI,UAAU,CAAC,MAAM,EAAE,CAAC;oBACpB,MAAM,MAAM,GAAG,mBAAmB,CAAC,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;oBACvD,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC;oBACxF,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;oBACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;oBACpC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;wBAClB,MAAM,IAAI,CAAC,qBAAqB,CAC5B,UAAU,CAAC,EAAE,EACb,KAAK,EACL,sBAAsB,CAAC,CAAC,MAAM,CAAC,CAAC,EAChC,WAAW,EACX,QAAQ,CACX,CAAC;oBACN,CAAC;oBACD,SAAS;gBACb,CAAC;gBACD,OAAO,GAAG,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;YACzC,CAAC;YACD,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;gBACrF,WAAW,EAAE,KAAK;gBAClB,UAAU;gBACV,OAAO;aACV,CAAC,CAAC;YACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;YACzF,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gBACnB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;gBACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;YACzC,CAAC;YACD,MAAM,QAAQ,GAAuB,CAAC,OAAO,CAAC,CAAC;YAC/C,MAAM,cAAc,GAAG,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,CAAC;YAC5D,IAAI,cAAc,EAAE,CAAC;gBACjB,MAAM,cAAc,GAAG,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;gBAC1D,IAAI,CAAC,cAAc,EAAE,CAAC;oBAClB,MAAM,OAAO,GAAG,mBAAmB,CAAC;wBAChC,mEAAmE,cAAc,IAAI;qBACxF,CAAC,CAAC;oBACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC,CAAC;oBAC1F,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;oBACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;oBACrC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;gBAC3B,CAAC;qBAAM,CAAC;oBACJ,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE,WAAW,EAAE,SAAS,EAAE;wBACtF,WAAW,EAAE,KAAK;wBAClB,UAAU;wBACV,OAAO;wBACP,MAAM,EAAE,cAAc;qBACzB,CAAC,CAAC;oBACH,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,EAAE,UAAU,CAAC,EAAE,EAAE,OAAO,EAAE,UAAU,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;oBAC3F,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC;wBACpB,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC;wBACtB,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC;oBAC1C,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;gBAC5B,CAAC;YACL,CAAC;YACD,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBAClB,MAAM,eAAe,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;gBACzD,MAAM,IAAI,CAAC,qBAAqB,CAC5B,UAAU,CAAC,EAAE,EACb,eAAe,EACf,sBAAsB,CAAC,QAAQ,CAAC,EAChC,WAAW,EACX,QAAQ,CACX,CAAC;YACN,CAAC;QACL,CAAC;QACD,OAAO,KAAK,CAAC;IACjB,CAAC;IAEO,aAAa,CAAC,WAAmB;QACrC,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAC5D,wBAAwB,EACxB,WAAW,CACd,CAAC;YACF,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;YAClE,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACL,IAAI,WAAW,KAAK,SAAS,EAAE,CAAC;gBAC5B,OAAO,IAAI,2BAA2B,EAAE,CAAC;YAC7C,CAAC;YACD,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,UAAU,CACpB,UAAyB,EACzB,OAAuB,EACvB,MAAwB,EACxB,KAAkB,EAClB,QAA2B,EAC3B,WAAqB,EACrB,KAAa,EACb,WAAoB;QAEpB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,OAAO,CAAC;QAChC,IAAI,MAAM,CAAC,MAAM,GAAG,CAAC;YAAE,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC;QACzC,MAAM,IAAI,CAAC,UAAU,CAAC,UAAU,EAAE,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,EAAE,CAAC,CAAC;QAC3F,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,WAAW,EAAE,CAAC;YACjC,MAAM,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;QACzF,CAAC;QACD,OAAO,MAAM,CAAC;IAClB,CAAC;IAEO,gBAAgB,CAAC,WAAmB;QACxC,IAAI,CAAC;YACD,MAAM,OAAO,GAAG,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,iBAAiB,CAC5D,yBAAyB,EACzB,WAAW,CACd,CAAC;YACF,IAAI,OAAO,CAAC,QAAQ,IAAI,OAAO,CAAC,QAAQ;gBAAE,OAAO,OAAO,CAAC,QAAQ,CAAC;YAClE,OAAO,IAAI,CAAC;QAChB,CAAC;QAAC,MAAM,CAAC;YACL,OAAO,IAAI,CAAC;QAChB,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CACxB,YAAoB,EACpB,cAA6B,EAC7B,IAAc;QAEd,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CACxB;YACI,UAAU,EAAE,sBAAsB,CAAC,UAAU;YAC7C,WAAW,EAAE,qBAAqB,CAAC,YAAY,EAAE,cAAc,CAAC;YAChE,OAAO,EAAE,cAAc;YACvB,UAAU,EAAE,QAAQ;SACvB,EACD,IAAI,CACP,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IAEO,KAAK,CAAC,eAAe,CACzB,MAAiC,EACjC,QAA2B,EAC3B,IAAc;QAEd,MAAM,GAAG,GAAG,IAAI,IAAI,EAAE,CAAC;QACvB,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YACzB,IAAI,CAAC;gBACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,eAAe,CACtC,sBAAsB,CAAC,UAAU,EACjC,IAAI,CACP,CAAC;gBACF,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;oBAAE,SAAS;gBAC1C,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC;gBACpB,GAAG,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;gBAChC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;YACrB,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACX,QAAQ,CAAC,iDAAiD,KAAK,CAAC,EAAE,KAAK,GAAG,EAAE,CAAC,CAAC;YAClF,CAAC;QACL,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAC/B,YAAoB,EACpB,OAAgB,EAChB,KAAoB,EACpB,IAAc,EACd,QAA2B;QAE3B,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,eAAe,CACtC,sBAAsB,CAAC,WAAW,EAClC,IAAI,CACP,CAAC;YACF,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBAAE,OAAO;YAC5C,IAAI,OAAO,EAAE,CAAC;gBACV,GAAG,CAAC,SAAS,GAAG,IAAI,CAAC;gBACrB,IAAI,GAAG,CAAC,MAAM,KAAK,OAAO;oBAAE,GAAG,CAAC,MAAM,GAAG,QAAQ,CAAC;YACtD,CAAC;iBAAM,CAAC;gBACJ,GAAG,CAAC,MAAM,GAAG,OAAO,CAAC;gBACrB,GAAG,CAAC,SAAS,GAAG,CAAC,KAAK,IAAI,2BAA2B,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC1E,CAAC;YACD,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC;QACrB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,QAAQ,CAAC,oDAAoD,GAAG,EAAE,CAAC,CAAC;QACxE,CAAC;IACL,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,EAAU,EAAE,IAAc;QACnD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CACxB;YACI,UAAU,EAAE,sBAAsB,CAAC,WAAW;YAC9C,WAAW,EAAE,SAAS,WAAW,CAAC,EAAE,EAAE,0BAA0B,CAAC,GAAG;YACpE,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,QAAQ;SACvB,EACD,IAAI,CACP,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,uBAAuB,CAAC,IAAc;QAChD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CACxB;YACI,UAAU,EAAE,sBAAsB,CAAC,WAAW;YAC9C,WAAW,EAAE,uCAAuC;YACpD,OAAO,EAAE,wBAAwB,GAAG,CAAC;YACrC,UAAU,EAAE,QAAQ;SACvB,EACD,IAAI,CACP,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAC;IAC3E,CAAC;IAEO,KAAK,CAAC,gBAAgB,CAAC,EAAU,EAAE,IAAc;QACrD,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CACxB;YACI,UAAU,EAAE,sBAAsB,CAAC,aAAa;YAChD,WAAW,EAAE,SAAS,WAAW,CAAC,EAAE,EAAE,4BAA4B,CAAC,GAAG;YACtE,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,aAAa,EAAE,4BAA4B,EAAE,qBAAqB,CAAC;YAC1F,OAAO,EAAE,CAAC;YACV,UAAU,EAAE,QAAQ;SACvB,EACD,IAAI,CACP,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,0BAA0B,CAAC,CAAC;IAC7E,CAAC;IAEO,KAAK,CAAC,eAAe,CAAC,YAAoB,EAAE,IAAc;QAC9D,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,MAAM,EAAE,CAAC,OAAO,CAC1B;YACI,UAAU,EAAE,sBAAsB,CAAC,kBAAkB;YACrD,WAAW,EAAE,+BAA+B,WAAW,CAAC,YAAY,EAAE,0BAA0B,CAAC,GAAG;YACpG,UAAU,EAAE,QAAQ;SACvB,EACD,IAAI,CACP,CAAC;QACF,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;YACjB,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,8CAA8C,EAAE,CAAC;QACnF,CAAC;QACD,OAAO;YACH,MAAM,EAAE,KAAK;YACb,IAAI,EAAE,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,qBAAqB,CAAC;SAClE,CAAC;IACN,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,MAAyB,EAAE,IAAc;QAClE,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CACxB;YACI,UAAU,EAAE,sBAAsB,CAAC,UAAU;YAC7C,WAAW,EAAE,qBAAqB,CAAC,MAAM,CAAC;YAC1C,UAAU,EAAE,QAAQ;SACvB,EACD,IAAI,CACP,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IAEO,KAAK,CAAC,SAAS,CACnB,YAAoB,EACpB,MAAyB,EACzB,IAAc;QAEd,MAAM,EAAE,GAAG,IAAI,OAAO,EAAE,CAAC;QACzB,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,OAAO,CACxB;YACI,UAAU,EAAE,sBAAsB,CAAC,KAAK;YACxC,WAAW,EAAE,gBAAgB,CAAC,MAAM,EAAE,YAAY,CAAC;YACnD,UAAU,EAAE,QAAQ;SACvB,EACD,IAAI,CACP,CAAC;QACF,OAAO,WAAW,CAAC,GAAG,CAAC,OAAO,EAAE,GAAG,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IACrE,CAAC;IAEO,KAAK,CAAC,qBAAqB,CAC/B,YAAoB,EACpB,EAAQ,EACR,IAAwB,EACxB,IAAc,EACd,QAA2B;QAE3B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,eAAe,CACtC,sBAAsB,CAAC,WAAW,EAClC,IAAI,CACP,CAAC;QACF,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAClD,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACtB,GAAG,CAAC,QAAQ,GAAG,sBAAsB,CAAC,GAAG,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;QAC5D,CAAC;aAAM,CAAC;YACJ,GAAG,CAAC,UAAU,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;IACtB,CAAC;IAEO,KAAK,CAAC,UAAU,CACpB,UAAyB,EACzB,OAAuB,EACvB,MAAwB,EACxB,eAA4B,EAC5B,cAA2B,EAC3B,QAA2B,EAC3B,IAAc,EACd,OAQE;QAEF,IAAI,CAAC;YACD,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,eAAe,CACtC,sBAAsB,CAAC,IAAI,EAC3B,IAAI,CACP,CAAC;YACF,GAAG,CAAC,SAAS,EAAE,CAAC;YAChB,GAAG,CAAC,wBAAwB,GAAG,UAAU,CAAC,EAAE,CAAC;YAC7C,GAAG,CAAC,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;YACtC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC;YAC9B,GAAG,CAAC,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC;YAC7B,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC/B,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC;YAC/B,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,UAAU,CAAC;YACnC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC;YAC3B,GAAG,CAAC,eAAe,GAAG,MAAM,CAAC,eAAe,CAAC;YAC7C,GAAG,CAAC,eAAe,GAAG,eAAe,CAAC;YACtC,GAAG,CAAC,cAAc,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,cAAc,CAAC;YAC5D,GAAG,CAAC,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC;YAC3B,GAAG,CAAC,OAAO,GAAG,IAAI,IAAI,EAAE,CAAC;YACzB,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW,CAAC;YACxD,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;gBACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,EAAE,eAAe,IAAI,8BAA8B,CAAC,CAAC;gBACxF,OAAO;YACX,CAAC;YACD,MAAM,CAAC,KAAK,GAAG,GAAG,CAAC,EAAE,CAAC;YACtB,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;gBAC3B,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,eAAe,CACtC,sBAAsB,CAAC,UAAU,EACjC,IAAI,CACP,CAAC;gBACF,GAAG,CAAC,SAAS,EAAE,CAAC;gBAChB,GAAG,CAAC,iBAAiB,GAAG,GAAG,CAAC,EAAE,CAAC;gBAC/B,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC;gBACxC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,gBAAgB,CAAC;gBACpD,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC;gBACvC,GAAG,CAAC,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,gBAAgB,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACpF,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,KAAK,CAAC;gBAClC,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;gBACzC,GAAG,CAAC,kBAAkB,GAAG,MAAM,CAAC,MAAM,IAAI,IAAI,CAAC;gBAC/C,GAAG,CAAC,uBAAuB,GAAG,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC;gBACzD,GAAG,CAAC,UAAU,GAAG,MAAM,CAAC,QAAQ,KAAK,UAAU,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;gBACrF,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC;oBACtB,MAAM,CAAC,MAAM,CAAC,IAAI,CACd,GAAG,CAAC,YAAY,EAAE,eAAe;wBAC7B,yCAAyC,MAAM,CAAC,IAAI,CAAC,UAAU,GAAG,CACzE,CAAC;gBACN,CAAC;YACL,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACX,QAAQ,CAAC,yCAAyC,GAAG,EAAE,CAAC,CAAC;YACzD,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QACpC,CAAC;IACL,CAAC;CACJ;AAED,MAAM,UAAU,sBAAsB;IAClC,KAAK,kBAAkB,CAAC;IACxB,KAAK,yBAAyB,CAAC;IAC/B,KAAK,2BAA2B,CAAC;IACjC,KAAK,2BAA2B,CAAC;IACjC,KAAK,2BAA2B,CAAC;AACrC,CAAC"}
1
+ {"version":3,"file":"ActivitySyncEngine.js","sourceRoot":"","sources":["../src/ActivitySyncEngine.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
+ import type { ActivityTransportContext } from './providers/MessageTransport.js';
1
2
  import type { ActivitySourceBatch, ActivitySourceKind, ActivitySourceQuery, NormalizedItem, RawBatch } from './types.js';
2
3
  export declare abstract class BaseActivitySyncProvider {
3
4
  /** Which surface this reads. Selects the watermark basis — see `WatermarkBasisForKind`. */
@@ -31,6 +32,19 @@ export declare abstract class BaseActivitySyncProvider {
31
32
  protected ComputeHighWatermark(items: readonly NormalizedItem[], observedAt: Date): Date | null;
32
33
  /** Seam for tests. Everything stored is UTC; a JS Date is a UTC instant. */
33
34
  protected Now(): Date;
35
+ /**
36
+ * Told what connection this run is for, BEFORE any fetch.
37
+ *
38
+ * The plugin is built by `MJGlobal.ClassFactory` with no arguments, so this is the only point at
39
+ * which a provider learns which credential the connection named. A no-op by default: a fixture
40
+ * provider has nothing to configure, and every existing provider keeps working untouched.
41
+ *
42
+ * NOT allowed to throw. A provider that cannot configure itself should record the reason and
43
+ * refuse at fetch time, where the refusal reaches the run's Issues and the watermark is
44
+ * preserved — the engine's existing distinction between 'looked, found nothing' and 'could not
45
+ * look' does the rest.
46
+ */
47
+ Configure(_context: ActivityTransportContext): void;
34
48
  protected OnBeforeFetch(_query: ActivitySourceQuery): Promise<void>;
35
49
  protected OnAfterFetch(_raw: RawBatch, _query: ActivitySourceQuery): Promise<void>;
36
50
  protected OnBeforeNormalize(_raw: RawBatch, _query: ActivitySourceQuery): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"BaseActivitySyncProvider.d.ts","sourceRoot":"","sources":["../src/BaseActivitySyncProvider.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACX,MAAM,YAAY,CAAC;AAEpB,8BAAsB,wBAAwB;IAC1C,2FAA2F;IAC3F,kBAAyB,IAAI,EAAE,kBAAkB,CAAC;IAElD,qDAAqD;IACrD,kBAAyB,gBAAgB,EAAE,MAAM,CAAC;IAElD;;;;;;OAMG;IACH,kBAAyB,MAAM,EAAE,OAAO,CAAC;IAEzC,+EAA+E;IAC/E,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE1E,iGAAiG;IACjG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,cAAc,EAAE;IAEzF;;;OAGG;IACU,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IA6B5E;;;;;;OAMG;IACH,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAI/F,4EAA4E;IAC5E,SAAS,CAAC,GAAG,IAAI,IAAI;cAML,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cACzD,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cACxE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cAC7E,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cACtF,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CACvF"}
1
+ {"version":3,"file":"BaseActivitySyncProvider.d.ts","sourceRoot":"","sources":["../src/BaseActivitySyncProvider.ts"],"names":[],"mappings":"AAyBA,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,iCAAiC,CAAC;AAChF,OAAO,KAAK,EACR,mBAAmB,EACnB,kBAAkB,EAClB,mBAAmB,EACnB,cAAc,EACd,QAAQ,EACX,MAAM,YAAY,CAAC;AAEpB,8BAAsB,wBAAwB;IAC1C,2FAA2F;IAC3F,kBAAyB,IAAI,EAAE,kBAAkB,CAAC;IAElD,qDAAqD;IACrD,kBAAyB,gBAAgB,EAAE,MAAM,CAAC;IAElD;;;;;;OAMG;IACH,kBAAyB,MAAM,EAAE,OAAO,CAAC;IAEzC,+EAA+E;IAC/E,SAAS,CAAC,QAAQ,CAAC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAE1E,iGAAiG;IACjG,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,cAAc,EAAE;IAEzF;;;OAGG;IACU,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,mBAAmB,CAAC;IAiC5E;;;;;;OAMG;IACH,SAAS,CAAC,oBAAoB,CAAC,KAAK,EAAE,SAAS,cAAc,EAAE,EAAE,UAAU,EAAE,IAAI,GAAG,IAAI,GAAG,IAAI;IAI/F,4EAA4E;IAC5E,SAAS,CAAC,GAAG,IAAI,IAAI;IAIrB;;;;;;;;;;;OAWG;IACI,SAAS,CAAC,QAAQ,EAAE,wBAAwB,GAAG,IAAI;cAI1C,aAAa,CAAC,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cACzD,YAAY,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cACxE,iBAAiB,CAAC,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cAC7E,gBAAgB,CAAC,MAAM,EAAE,cAAc,EAAE,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;cACtF,OAAO,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;CACvF"}
@@ -38,7 +38,11 @@ export class BaseActivitySyncProvider {
38
38
  await this.OnAfterNormalize(items, query);
39
39
  return {
40
40
  Items: items,
41
- HighWatermark: this.ComputeHighWatermark(items, observedAt),
41
+ // A CAPPED read earns no advance. `NextWatermark` treats null as 'stay put', so the
42
+ // next pass re-reads the window rather than stepping over mail it never fetched.
43
+ // The items in hand are still returned and still written — only the claim to have
44
+ // seen everything up to their newest is withheld, because it is not true.
45
+ HighWatermark: raw.Capped ? null : this.ComputeHighWatermark(items, observedAt),
42
46
  Issues: raw.Issues,
43
47
  };
44
48
  }
@@ -66,6 +70,19 @@ export class BaseActivitySyncProvider {
66
70
  Now() {
67
71
  return new Date();
68
72
  }
73
+ /**
74
+ * Told what connection this run is for, BEFORE any fetch.
75
+ *
76
+ * The plugin is built by `MJGlobal.ClassFactory` with no arguments, so this is the only point at
77
+ * which a provider learns which credential the connection named. A no-op by default: a fixture
78
+ * provider has nothing to configure, and every existing provider keeps working untouched.
79
+ *
80
+ * NOT allowed to throw. A provider that cannot configure itself should record the reason and
81
+ * refuse at fetch time, where the refusal reaches the run's Issues and the watermark is
82
+ * preserved — the engine's existing distinction between 'looked, found nothing' and 'could not
83
+ * look' does the rest.
84
+ */
85
+ Configure(_context) { }
69
86
  // ── Hooks. All no-ops; override any subset. ────────────────────────────────────────────────
70
87
  async OnBeforeFetch(_query) { }
71
88
  async OnAfterFetch(_raw, _query) { }
@@ -1 +1 @@
1
- {"version":3,"file":"BaseActivitySyncProvider.js","sourceRoot":"","sources":["../src/BaseActivitySyncProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAStD,MAAM,OAAgB,wBAAwB;IAsB1C;;;OAGG;IACI,KAAK,CAAC,KAAK,CAAC,KAA0B;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAEpC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE1C,OAAO;gBACH,KAAK,EAAE,KAAK;gBACZ,aAAa,EAAE,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC;gBAC3D,MAAM,EAAE,GAAG,CAAC,MAAM;aACrB,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,QAAQ,CACJ,uDAAuD,IAAI,CAAC,gBAAgB,IAAI;gBAC5E,eAAe,KAAK,CAAC,OAAO,MAAM,OAAO,EAAE,CAClD,CAAC;YACF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjC,iFAAiF;YACjF,6EAA6E;YAC7E,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACO,oBAAoB,CAAC,KAAgC,EAAE,UAAgB;QAC7E,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,4EAA4E;IAClE,GAAG;QACT,OAAO,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC;IAED,8FAA8F;IAEpF,KAAK,CAAC,aAAa,CAAC,MAA2B,IAAkB,CAAC;IAClE,KAAK,CAAC,YAAY,CAAC,IAAc,EAAE,MAA2B,IAAkB,CAAC;IACjF,KAAK,CAAC,iBAAiB,CAAC,IAAc,EAAE,MAA2B,IAAkB,CAAC;IACtF,KAAK,CAAC,gBAAgB,CAAC,MAAwB,EAAE,MAA2B,IAAkB,CAAC;IAC/F,KAAK,CAAC,OAAO,CAAC,MAAe,EAAE,MAA2B,IAAkB,CAAC;CAC1F"}
1
+ {"version":3,"file":"BaseActivitySyncProvider.js","sourceRoot":"","sources":["../src/BaseActivitySyncProvider.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAEhD,OAAO,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAUtD,MAAM,OAAgB,wBAAwB;IAsB1C;;;OAGG;IACI,KAAK,CAAC,KAAK,CAAC,KAA0B;QACzC,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC;YACD,MAAM,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;YAChC,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YAEpC,MAAM,IAAI,CAAC,iBAAiB,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;YACzC,MAAM,IAAI,CAAC,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAE1C,OAAO;gBACH,KAAK,EAAE,KAAK;gBACZ,oFAAoF;gBACpF,iFAAiF;gBACjF,kFAAkF;gBAClF,0EAA0E;gBAC1E,aAAa,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,oBAAoB,CAAC,KAAK,EAAE,UAAU,CAAC;gBAC/E,MAAM,EAAE,GAAG,CAAC,MAAM;aACrB,CAAC;QACN,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACb,MAAM,OAAO,GAAG,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;YACvE,QAAQ,CACJ,uDAAuD,IAAI,CAAC,gBAAgB,IAAI;gBAC5E,eAAe,KAAK,CAAC,OAAO,MAAM,OAAO,EAAE,CAClD,CAAC;YACF,MAAM,IAAI,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YACjC,iFAAiF;YACjF,6EAA6E;YAC7E,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC/E,CAAC;IACL,CAAC;IAED;;;;;;OAMG;IACO,oBAAoB,CAAC,KAAgC,EAAE,UAAgB;QAC7E,OAAO,oBAAoB,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;IAED,4EAA4E;IAClE,GAAG;QACT,OAAO,IAAI,IAAI,EAAE,CAAC;IACtB,CAAC;IAED;;;;;;;;;;;OAWG;IACI,SAAS,CAAC,QAAkC,IAAS,CAAC;IAE7D,8FAA8F;IAEpF,KAAK,CAAC,aAAa,CAAC,MAA2B,IAAkB,CAAC;IAClE,KAAK,CAAC,YAAY,CAAC,IAAc,EAAE,MAA2B,IAAkB,CAAC;IACjF,KAAK,CAAC,iBAAiB,CAAC,IAAc,EAAE,MAA2B,IAAkB,CAAC;IACtF,KAAK,CAAC,gBAAgB,CAAC,MAAwB,EAAE,MAA2B,IAAkB,CAAC;IAC/F,KAAK,CAAC,OAAO,CAAC,MAAe,EAAE,MAA2B,IAAkB,CAAC;CAC1F"}
package/dist/index.d.ts CHANGED
@@ -26,4 +26,7 @@ export * from './providers/FixtureActivitySyncProvider.js';
26
26
  export * from './providers/MSGraphActivitySyncProvider.js';
27
27
  export * from './providers/MSGraphCalendarSyncProvider.js';
28
28
  export * from './providers/GraphMessageMapper.js';
29
+ export * from './providers/MessageTransport.js';
30
+ export * from './providers/GraphCommunicationTransport.js';
31
+ export * from './providers/RecordedMessageTransport.js';
29
32
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC"}
package/dist/index.js CHANGED
@@ -26,4 +26,7 @@ export * from './providers/FixtureActivitySyncProvider.js';
26
26
  export * from './providers/MSGraphActivitySyncProvider.js';
27
27
  export * from './providers/MSGraphCalendarSyncProvider.js';
28
28
  export * from './providers/GraphMessageMapper.js';
29
+ export * from './providers/MessageTransport.js';
30
+ export * from './providers/GraphCommunicationTransport.js';
31
+ export * from './providers/RecordedMessageTransport.js';
29
32
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,UAAU,CAAC;AACzB,cAAc,+BAA+B,CAAC;AAC9C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,mBAAmB,CAAC;AAClC,cAAc,eAAe,CAAC;AAC9B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,cAAc,aAAa,CAAC;AAC5B,cAAc,yBAAyB,CAAC;AACxC,cAAc,oBAAoB,CAAC;AACnC,cAAc,iBAAiB,CAAC;AAChC,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,4CAA4C,CAAC;AAC3D,cAAc,mCAAmC,CAAC;AAClD,cAAc,iCAAiC,CAAC;AAChD,cAAc,4CAA4C,CAAC;AAC3D,cAAc,yCAAyC,CAAC"}
@@ -0,0 +1,110 @@
1
+ /**
2
+ * The live transport: MJ's Communication MS Graph provider, with credentials from MJ's Credentials
3
+ * engine.
4
+ *
5
+ * WRAPS, DOES NOT REIMPLEMENT. `BaseActivitySyncProvider` already states the rule — "Providers WRAP
6
+ * existing plumbing rather than reinventing transport: MJ Communication providers for Gmail and
7
+ * Microsoft Graph" — and this is that rule finally being followed. MJ's `MSGraphProvider` already
8
+ * owns token acquisition (`ClientSecretCredential`), the client cache, paging and `$filter`
9
+ * construction. Rebuilding any of it here would fork behaviour MJ maintains.
10
+ *
11
+ * WHY IT READS SourceData RATHER THAN Messages. `GetMessagesResult.Messages` is MJ's normalized
12
+ * shape, and it is lossy for this purpose: `GetMessages` sets `To` from `replyTo[0]`, which is right
13
+ * for replying and wrong for recording who a message was addressed to. `SourceData` carries Graph's
14
+ * own payload verbatim, which is what `GraphMessageMapper` is written against and what
15
+ * `NormalizedItem.Raw` is meant to preserve.
16
+ *
17
+ * THE CREDENTIAL IS NEVER HELD. It is resolved per fetch and passed straight into the call.
18
+ * `clientSecret` is flagged `isSecret` on the "Azure Service Principal" credential type, so MJ
19
+ * decrypts it at load and it lives only for the duration of the request. It is never logged, never
20
+ * cached on this object, and never interpolated into an issue string.
21
+ *
22
+ * @module @mj-biz-apps/common-activity-sync
23
+ */
24
+ import type { BaseCommunicationProvider } from '@memberjunction/communication-types';
25
+ import type { UserInfo } from '@memberjunction/core';
26
+ import type { ActivitySourceQuery, RawBatch } from '../types.js';
27
+ import type { ActivityMessageTransport } from './MessageTransport.js';
28
+ /**
29
+ * The credential type used, BY NAME. "Azure Service Principal" rather than "OAuth2 Client
30
+ * Credentials": both are seeded, but only this one carries `tenantId`, and MJ's `MSGraphProvider`
31
+ * needs a tenant to build its authority URL.
32
+ */
33
+ export declare const GRAPH_CREDENTIAL_TYPE = "Azure Service Principal";
34
+ /** The name MJ registers its Graph communication provider under. Must match its `@RegisterClass`. */
35
+ export declare const GRAPH_COMMUNICATION_PROVIDER = "Microsoft Graph";
36
+ /** What this transport needs from MJ's Credentials engine. */
37
+ export interface GraphServicePrincipal {
38
+ tenantId: string;
39
+ clientId: string;
40
+ clientSecret: string;
41
+ }
42
+ /** The slice of MJ's communication provider this uses. Structural, to avoid a hard runtime import. */
43
+ export interface GraphMessageReader {
44
+ GetMessages(params: {
45
+ Identifier?: string;
46
+ NumMessages: number;
47
+ UnreadOnly?: boolean;
48
+ ContextData?: Record<string, unknown>;
49
+ }, credentials?: unknown): Promise<{
50
+ Success: boolean;
51
+ Messages?: unknown[];
52
+ SourceData?: unknown[];
53
+ ErrorMessage?: string;
54
+ AppliedFilters?: unknown;
55
+ }>;
56
+ }
57
+ /**
58
+ * COMPILE-TIME PROOF THAT THE STRUCTURAL TYPE ABOVE IS NOT FICTION.
59
+ *
60
+ * `GraphMessageReader` is declared structurally so this package takes no runtime dependency on the
61
+ * Communication provider. The cost of that choice is that nothing checked the shape against MJ: the
62
+ * only value ever assigned to it is a test stub, and that stub is cast with `as unknown as`, which
63
+ * bypasses checking entirely. A drift in MJ's `GetMessages` would therefore have surfaced on the
64
+ * FIRST LIVE CALL and nowhere earlier — the exact class of silent failure this package keeps being
65
+ * designed against.
66
+ *
67
+ * So the compiler is made to check it instead. `@memberjunction/communication-types` is already a
68
+ * declared peer and this is a TYPE-only import, so no runtime dependency is added and these lines
69
+ * emit no JavaScript. If MJ changes the signature, the BUILD breaks here rather than a live sync.
70
+ */
71
+ type AssertTrue<T extends true> = T;
72
+ export type GraphMessageReaderMatchesMJ = AssertTrue<BaseCommunicationProvider extends GraphMessageReader ? true : false>;
73
+ /**
74
+ * How the two collaborators are obtained.
75
+ *
76
+ * Injected rather than imported so this package takes no hard RUNTIME dependency on the
77
+ * Communication or Credentials engines — a host that syncs only fixtures should not have to install
78
+ * either. Both are peer dependencies, for their types.
79
+ */
80
+ export interface GraphTransportDeps {
81
+ ResolveCredential(): Promise<GraphServicePrincipal>;
82
+ ResolveProvider(): Promise<GraphMessageReader>;
83
+ ContextUser?: UserInfo;
84
+ }
85
+ export declare class GraphCommunicationTransport implements ActivityMessageTransport {
86
+ private readonly Deps;
87
+ readonly Describe = "Microsoft Graph (live, via MJ Communication)";
88
+ readonly IsLive = true;
89
+ constructor(Deps: GraphTransportDeps);
90
+ Fetch(query: ActivitySourceQuery): Promise<RawBatch>;
91
+ }
92
+ /**
93
+ * Build the deps from MJ's engines, resolving both lazily.
94
+ *
95
+ * Separate from the class so the class stays testable with neither engine loaded — the tests inject
96
+ * their own deps, which is also how the recorded path avoids dragging the Credentials engine into a
97
+ * demo that has no credential to resolve.
98
+ */
99
+ export declare function MJGraphTransportDeps(args: {
100
+ CredentialName: string;
101
+ ContextUser?: UserInfo;
102
+ GetCredentialEngine: () => {
103
+ getCredential<T>(name: string, options?: Record<string, unknown>): Promise<{
104
+ values: T;
105
+ }>;
106
+ };
107
+ GetCommunicationProvider: (name: string) => GraphMessageReader | null | undefined;
108
+ }): GraphTransportDeps;
109
+ export {};
110
+ //# sourceMappingURL=GraphCommunicationTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphCommunicationTransport.d.ts","sourceRoot":"","sources":["../../src/providers/GraphCommunicationTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,OAAO,KAAK,EAAE,yBAAyB,EAAE,MAAM,qCAAqC,CAAC;AACrF,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,qBAAqB,4BAA4B,CAAC;AAE/D,qGAAqG;AACrG,eAAO,MAAM,4BAA4B,oBAAoB,CAAC;AAE9D,8DAA8D;AAC9D,MAAM,WAAW,qBAAqB;IAClC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,sGAAsG;AACtG,MAAM,WAAW,kBAAkB;IAC/B,WAAW,CACP,MAAM,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACzC,EACD,WAAW,CAAC,EAAE,OAAO,GACtB,OAAO,CAAC;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,QAAQ,CAAC,EAAE,OAAO,EAAE,CAAC;QACrB,UAAU,CAAC,EAAE,OAAO,EAAE,CAAC;QACvB,YAAY,CAAC,EAAE,MAAM,CAAC;QACtB,cAAc,CAAC,EAAE,OAAO,CAAC;KAC5B,CAAC,CAAC;CACN;AAED;;;;;;;;;;;;;GAaG;AACH,KAAK,UAAU,CAAC,CAAC,SAAS,IAAI,IAAI,CAAC,CAAC;AACpC,MAAM,MAAM,2BAA2B,GAAG,UAAU,CAChD,yBAAyB,SAAS,kBAAkB,GAAG,IAAI,GAAG,KAAK,CACtE,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,WAAW,kBAAkB;IAC/B,iBAAiB,IAAI,OAAO,CAAC,qBAAqB,CAAC,CAAC;IACpD,eAAe,IAAI,OAAO,CAAC,kBAAkB,CAAC,CAAC;IAC/C,WAAW,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED,qBAAa,2BAA4B,YAAW,wBAAwB;IAIrD,OAAO,CAAC,QAAQ,CAAC,IAAI;IAHxC,SAAgB,QAAQ,kDAAkD;IAC1E,SAAgB,MAAM,QAAQ;gBAEM,IAAI,EAAE,kBAAkB;IAE/C,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;CAoEpE;AAED;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE;IACvC,cAAc,EAAE,MAAM,CAAC;IACvB,WAAW,CAAC,EAAE,QAAQ,CAAC;IACvB,mBAAmB,EAAE,MAAM;QACvB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC;YAAE,MAAM,EAAE,CAAC,CAAA;SAAE,CAAC,CAAC;KAC7F,CAAC;IACF,wBAAwB,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,kBAAkB,GAAG,IAAI,GAAG,SAAS,CAAC;CACrF,GAAG,kBAAkB,CAyBrB"}
@@ -0,0 +1,99 @@
1
+ /**
2
+ * The credential type used, BY NAME. "Azure Service Principal" rather than "OAuth2 Client
3
+ * Credentials": both are seeded, but only this one carries `tenantId`, and MJ's `MSGraphProvider`
4
+ * needs a tenant to build its authority URL.
5
+ */
6
+ export const GRAPH_CREDENTIAL_TYPE = 'Azure Service Principal';
7
+ /** The name MJ registers its Graph communication provider under. Must match its `@RegisterClass`. */
8
+ export const GRAPH_COMMUNICATION_PROVIDER = 'Microsoft Graph';
9
+ export class GraphCommunicationTransport {
10
+ constructor(Deps) {
11
+ this.Deps = Deps;
12
+ this.Describe = 'Microsoft Graph (live, via MJ Communication)';
13
+ this.IsLive = true;
14
+ }
15
+ async Fetch(query) {
16
+ const issues = [];
17
+ const credential = await this.Deps.ResolveCredential();
18
+ const missing = ['tenantId', 'clientId', 'clientSecret'].filter((k) => !String(credential?.[k] ?? '').trim());
19
+ if (missing.length > 0) {
20
+ // Field NAMES are reported, never values. The names are what an operator needs in order
21
+ // to fix it, and one of the values is a secret.
22
+ throw new Error(`The "${GRAPH_CREDENTIAL_TYPE}" credential is missing required field(s): ${missing.join(', ')}. ` +
23
+ 'Complete it in MJ before enabling live fetch.');
24
+ }
25
+ const provider = await this.Deps.ResolveProvider();
26
+ // NO DATE BOUND IS SENT YET, DELIBERATELY. `GetMessages` has no date parameter, and the
27
+ // one operation that does — `SearchMessages`, whose FromDate/ToDate become a plain
28
+ // `receivedDateTime` $filter — returns only MJ's normalized Messages with no SourceData,
29
+ // which this transport cannot use (see the module header). Expressing "since the
30
+ // watermark" on GetMessages today would mean ContextData.Filter — a provider-specific
31
+ // escape hatch that ALSO silently discarded any other clause. MemberJunction/MJ#4123 adds
32
+ // ReceivedAfter to GetMessages and fixes that overwrite. Until it publishes, the window is
33
+ // applied downstream in Normalize, which already filters on query.Since. The cost is
34
+ // over-fetching rather than a correctness gap — EXCEPT that Limit bounds the read, so a
35
+ // mailbox holding more than Limit messages newer than the watermark will not drain in one
36
+ // pass. Hence the issue recorded below rather than silence.
37
+ //
38
+ // `accountEmail` IS REQUIRED BY MJ. `MSGraphProvider.resolveCredentials` validates four
39
+ // fields — tenantId, clientId, clientSecret AND accountEmail — before it does anything, and
40
+ // the "Azure Service Principal" credential carries only the first three. Without this the
41
+ // very first live call fails with "Missing required credentials: accountEmail" on any host
42
+ // that does not happen to export AZURE_ACCOUNT_EMAIL, which is exactly the machine-specific
43
+ // failure this transport exists to end. The request path already targets `Identifier`, so
44
+ // the value here only satisfies validation — and the mailbox named in the query is the one
45
+ // correct value per connection, where a host-wide environment variable could never be.
46
+ //
47
+ // `disableEnvironmentFallback` MAKES THE HEADER'S PROMISE ENFORCED. MJ resolves each field as
48
+ // "the value passed, else the AZURE_* environment variable". Without this flag a credential
49
+ // with a blank field would silently borrow the host's, and read whatever mailbox THAT points
50
+ // at. With it, an incomplete credential fails loudly on the field name instead.
51
+ const result = await provider.GetMessages({ Identifier: query.Mailbox, NumMessages: query.Limit }, { ...credential, accountEmail: query.Mailbox, disableEnvironmentFallback: true });
52
+ if (!result?.Success) {
53
+ throw new Error(result?.ErrorMessage?.trim() || `Graph returned no result for mailbox "${query.Mailbox}".`);
54
+ }
55
+ const payloads = (result.SourceData ?? []);
56
+ const capped = !!query.Since && payloads.length >= query.Limit;
57
+ if (capped) {
58
+ issues.push(`Fetched the maximum of ${query.Limit} message(s) for "${query.Mailbox}" while a watermark was set, ` +
59
+ 'so older items may remain unread. Re-run to continue, or raise the limit. A server-side date ' +
60
+ 'bound (MemberJunction/MJ#4123) removes this entirely.');
61
+ }
62
+ // `Capped` is what actually protects the mail; the issue above only TELLS someone. Without
63
+ // it the watermark advanced to the newest item in a truncated batch and the remainder was
64
+ // never read again.
65
+ return { Payloads: payloads, Issues: issues, Capped: capped };
66
+ }
67
+ }
68
+ /**
69
+ * Build the deps from MJ's engines, resolving both lazily.
70
+ *
71
+ * Separate from the class so the class stays testable with neither engine loaded — the tests inject
72
+ * their own deps, which is also how the recorded path avoids dragging the Credentials engine into a
73
+ * demo that has no credential to resolve.
74
+ */
75
+ export function MJGraphTransportDeps(args) {
76
+ return {
77
+ ContextUser: args.ContextUser,
78
+ async ResolveCredential() {
79
+ const resolved = await args
80
+ .GetCredentialEngine()
81
+ .getCredential(args.CredentialName, { contextUser: args.ContextUser });
82
+ if (!resolved?.values) {
83
+ throw new Error(`Credential "${args.CredentialName}" resolved with no values.`);
84
+ }
85
+ return resolved.values;
86
+ },
87
+ async ResolveProvider() {
88
+ const provider = args.GetCommunicationProvider(GRAPH_COMMUNICATION_PROVIDER);
89
+ if (!provider) {
90
+ // A REGISTRATION problem, not a credential one. Saying which keeps an operator from
91
+ // hunting for a secret that is present and correct.
92
+ throw new Error(`MJ communication provider "${GRAPH_COMMUNICATION_PROVIDER}" is not registered. ` +
93
+ 'Ensure @memberjunction/communication-ms-graph is loaded in this host.');
94
+ }
95
+ return provider;
96
+ },
97
+ };
98
+ }
99
+ //# sourceMappingURL=GraphCommunicationTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphCommunicationTransport.js","sourceRoot":"","sources":["../../src/providers/GraphCommunicationTransport.ts"],"names":[],"mappings":"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"}
@@ -1,21 +1,64 @@
1
1
  import { BaseActivitySyncProvider } from '../BaseActivitySyncProvider.js';
2
2
  import type { ActivitySourceQuery, NormalizedItem, RawBatch } from '../types.js';
3
+ import type { ActivityMessageTransport, ActivityTransportContext, ActivityTransportFactory } from './MessageTransport.js';
3
4
  export declare const LIVE_GRAPH_REFUSAL: string;
5
+ export declare const NO_TRANSPORT_REFUSAL: string;
6
+ export declare const NO_CREDENTIAL_REF_REFUSAL: string;
4
7
  export declare class MSGraphActivitySyncProvider extends BaseActivitySyncProvider {
5
8
  /**
6
- * Default FALSE. Turning it on is a deliberate act by someone who has confirmed
7
- * the Application Access Policy exists. This PR never does that.
9
+ * Default FALSE. Turning it on is a deliberate act by someone who has confirmed the
10
+ * Application Access Policy exists. Nothing in this package does that for you.
11
+ *
12
+ * It gates the LIVE transport only — a recorded transport needs no such confirmation
13
+ * because it reaches no mailbox, and is allowed through below.
8
14
  */
9
15
  private readonly AllowLiveFetch;
16
+ /** Where messages come from. Without one this provider refuses rather than pretending. */
17
+ private Transport?;
18
+ /** How a host builds a transport for a connection. See {@link Configure}. */
19
+ private readonly Factory?;
10
20
  readonly Kind: "Message";
11
21
  readonly ProviderTypeCode = "Microsoft365";
12
- readonly IsLive = true;
22
+ /**
23
+ * Reflects the TRANSPORT rather than being hard-coded true.
24
+ *
25
+ * The engine refuses to write `Source: 'Integration'` rows from a non-live provider without
26
+ * being told to. While this class always claimed `IsLive = true`, a replayed run would have been
27
+ * indistinguishable from a real one in the database afterwards. Deferring to the transport is
28
+ * what makes the recorded path safe to demo with.
29
+ *
30
+ * Defaults to true when there is no transport, so an unconfigured provider is treated as the
31
+ * stricter case rather than quietly downgrading the engine's guard.
32
+ */
33
+ get IsLive(): boolean;
13
34
  constructor(
14
35
  /**
15
- * Default FALSE. Turning it on is a deliberate act by someone who has confirmed
16
- * the Application Access Policy exists. This PR never does that.
36
+ * Default FALSE. Turning it on is a deliberate act by someone who has confirmed the
37
+ * Application Access Policy exists. Nothing in this package does that for you.
38
+ *
39
+ * It gates the LIVE transport only — a recorded transport needs no such confirmation
40
+ * because it reaches no mailbox, and is allowed through below.
41
+ */
42
+ AllowLiveFetch?: boolean,
43
+ /** Where messages come from. Without one this provider refuses rather than pretending. */
44
+ Transport?: ActivityMessageTransport | undefined,
45
+ /** How a host builds a transport for a connection. See {@link Configure}. */
46
+ Factory?: ActivityTransportFactory | undefined);
47
+ /** Why this provider cannot fetch, decided at Configure time and reported at fetch time. */
48
+ private ConfigurationRefusal;
49
+ /**
50
+ * Reads `ActivitySyncConnection.CredentialsRef` and builds this connection's transport from it.
51
+ *
52
+ * THE COLUMN EXISTED AND NOTHING READ IT. Its own description says it holds an "MJ Credentials
53
+ * engine key. NEVER a secret value at rest" — and no code anywhere consumed it. A connection
54
+ * could name the credential it wanted and be silently ignored, which is worse than the column
55
+ * being absent: the configuration looked complete and the provider refused for what looked like
56
+ * an unrelated reason.
57
+ *
58
+ * A transport passed to the CONSTRUCTOR wins and is never replaced. Tests and the demo supply
59
+ * one directly, and a database row should not be able to reach in and swap it.
17
60
  */
18
- AllowLiveFetch?: boolean);
61
+ Configure(context: ActivityTransportContext): void;
19
62
  protected FetchRaw(query: ActivitySourceQuery): Promise<RawBatch>;
20
63
  protected Normalize(raw: RawBatch, query: ActivitySourceQuery): NormalizedItem[];
21
64
  }
@@ -1 +1 @@
1
- {"version":3,"file":"MSGraphActivitySyncProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MSGraphActivitySyncProvider.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGjF,eAAO,MAAM,kBAAkB,QAI4B,CAAC;AAE5D,qBACa,2BAA4B,SAAQ,wBAAwB;IAMjE;;;OAGG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc;IATnC,SAAgB,IAAI,EAAG,SAAS,CAAU;IAC1C,SAAgB,gBAAgB,kBAAkB;IAClD,SAAgB,MAAM,QAAQ;;IAG1B;;;OAGG;IACc,cAAc,GAAE,OAAe;cAKpC,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAcvE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,cAAc,EAAE;CAOnF"}
1
+ {"version":3,"file":"MSGraphActivitySyncProvider.d.ts","sourceRoot":"","sources":["../../src/providers/MSGraphActivitySyncProvider.ts"],"names":[],"mappings":"AAsBA,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAC1E,OAAO,KAAK,EAAE,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAGjF,OAAO,KAAK,EACR,wBAAwB,EACxB,wBAAwB,EACxB,wBAAwB,EAC3B,MAAM,uBAAuB,CAAC;AAE/B,eAAO,MAAM,kBAAkB,QAIoD,CAAC;AAEpF,eAAO,MAAM,oBAAoB,QAEmB,CAAC;AAErD,eAAO,MAAM,yBAAyB,QAGX,CAAC;AAE5B,qBACa,2BAA4B,SAAQ,wBAAwB;IAoBjE;;;;;;OAMG;IACH,OAAO,CAAC,QAAQ,CAAC,cAAc;IAC/B,0FAA0F;IAC1F,OAAO,CAAC,SAAS,CAAC;IAClB,6EAA6E;IAC7E,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC;IA9B7B,SAAgB,IAAI,EAAG,SAAS,CAAU;IAC1C,SAAgB,gBAAgB,kBAAkB;IAElD;;;;;;;;;;OAUG;IACH,IAAW,MAAM,IAAI,OAAO,CAE3B;;IAGG;;;;;;OAMG;IACc,cAAc,GAAE,OAAe;IAChD,0FAA0F;IAClF,SAAS,CAAC,EAAE,wBAAwB,YAAA;IAC5C,6EAA6E;IAC5D,OAAO,CAAC,EAAE,wBAAwB,YAAA;IAKvD,4FAA4F;IAC5F,OAAO,CAAC,oBAAoB,CAAuB;IAEnD;;;;;;;;;;;OAWG;IACa,SAAS,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI;cAkClD,QAAQ,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;IAsCvE,SAAS,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,mBAAmB,GAAG,cAAc,EAAE;CAuBnF"}
@@ -8,47 +8,172 @@ var __metadata = (this && this.__metadata) || function (k, v) {
8
8
  if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
9
  };
10
10
  /**
11
- * Microsoft Graph mail. Written, typechecked, and refused until an Exchange Application
12
- * Access Policy scopes app-only Mail.Read. Fixture is how the engine is exercised.
11
+ * Microsoft Graph mail.
12
+ *
13
+ * WHAT CHANGED AND WHY. This class previously had no transport at all: both `FetchRaw` returns
14
+ * handed back `Payloads: []`, one behind an opt-in flag and one behind a "not supported in this
15
+ * build" log. It was written, typechecked and refused. The consequence was not only that live sync
16
+ * did not work — it was that nothing ever exercised the path that needs a credential, so the absence
17
+ * of any configured credential went unnoticed until someone asked for a live demo.
18
+ *
19
+ * It now delegates to an `ActivityMessageTransport`. The live one wraps MJ's Communication MS Graph
20
+ * provider and MJ's Credentials engine; a recorded one replays captured payloads through the same
21
+ * mapping. Only the outermost call differs between them.
22
+ *
23
+ * THE TENANT-WIDE READ IS STILL REFUSED BY DEFAULT. `AllowLiveFetch` remains false, and the reason
24
+ * is unchanged: app-only `Mail.Read` reads EVERY mailbox in the tenant until an Exchange Application
25
+ * Access Policy scopes the app registration to a security group. Wiring a transport does not make
26
+ * that safe, so the gate stays, and stays default-off.
27
+ *
28
+ * @module @mj-biz-apps/common-activity-sync
13
29
  */
14
- import { LogError } from '@memberjunction/core';
15
30
  import { RegisterClass } from '@memberjunction/global';
16
31
  import { BaseActivitySyncProvider } from '../BaseActivitySyncProvider.js';
17
32
  import { MapGraphMessages } from './GraphMessageMapper.js';
33
+ import { HostActivityTransportFactory } from './MessageTransport.js';
18
34
  export const LIVE_GRAPH_REFUSAL = 'Live Graph fetch is disabled. MSGraphProvider uses app-only auth, so Mail.Read reads ' +
19
35
  'EVERY mailbox in the tenant until an Exchange Application Access Policy scopes the ' +
20
36
  'app registration to a security group. Confirm that policy exists before enabling ' +
21
- 'this, and use FixtureActivitySyncProvider until then.';
37
+ 'this, and use a recorded transport or FixtureActivitySyncProvider until then.';
38
+ export const NO_TRANSPORT_REFUSAL = 'No mailbox transport was supplied. Construct this provider with a GraphCommunicationTransport ' +
39
+ '(live) or a RecordedMessageTransport (replay).';
40
+ export const NO_CREDENTIAL_REF_REFUSAL = 'This ActivitySyncConnection names no credential. Set its CredentialsRef to the NAME of an ' +
41
+ '"Azure Service Principal" credential in MJ — that column holds a Credentials engine key, ' +
42
+ 'never a secret value.';
22
43
  let MSGraphActivitySyncProvider = class MSGraphActivitySyncProvider extends BaseActivitySyncProvider {
44
+ /**
45
+ * Reflects the TRANSPORT rather than being hard-coded true.
46
+ *
47
+ * The engine refuses to write `Source: 'Integration'` rows from a non-live provider without
48
+ * being told to. While this class always claimed `IsLive = true`, a replayed run would have been
49
+ * indistinguishable from a real one in the database afterwards. Deferring to the transport is
50
+ * what makes the recorded path safe to demo with.
51
+ *
52
+ * Defaults to true when there is no transport, so an unconfigured provider is treated as the
53
+ * stricter case rather than quietly downgrading the engine's guard.
54
+ */
55
+ get IsLive() {
56
+ return this.Transport?.IsLive ?? true;
57
+ }
23
58
  constructor(
24
59
  /**
25
- * Default FALSE. Turning it on is a deliberate act by someone who has confirmed
26
- * the Application Access Policy exists. This PR never does that.
60
+ * Default FALSE. Turning it on is a deliberate act by someone who has confirmed the
61
+ * Application Access Policy exists. Nothing in this package does that for you.
62
+ *
63
+ * It gates the LIVE transport only — a recorded transport needs no such confirmation
64
+ * because it reaches no mailbox, and is allowed through below.
27
65
  */
28
- AllowLiveFetch = false) {
66
+ AllowLiveFetch = false,
67
+ /** Where messages come from. Without one this provider refuses rather than pretending. */
68
+ Transport,
69
+ /** How a host builds a transport for a connection. See {@link Configure}. */
70
+ Factory) {
29
71
  super();
30
72
  this.AllowLiveFetch = AllowLiveFetch;
73
+ this.Transport = Transport;
74
+ this.Factory = Factory;
31
75
  this.Kind = 'Message';
32
76
  this.ProviderTypeCode = 'Microsoft365';
33
- this.IsLive = true;
77
+ /** Why this provider cannot fetch, decided at Configure time and reported at fetch time. */
78
+ this.ConfigurationRefusal = null;
79
+ }
80
+ /**
81
+ * Reads `ActivitySyncConnection.CredentialsRef` and builds this connection's transport from it.
82
+ *
83
+ * THE COLUMN EXISTED AND NOTHING READ IT. Its own description says it holds an "MJ Credentials
84
+ * engine key. NEVER a secret value at rest" — and no code anywhere consumed it. A connection
85
+ * could name the credential it wanted and be silently ignored, which is worse than the column
86
+ * being absent: the configuration looked complete and the provider refused for what looked like
87
+ * an unrelated reason.
88
+ *
89
+ * A transport passed to the CONSTRUCTOR wins and is never replaced. Tests and the demo supply
90
+ * one directly, and a database row should not be able to reach in and swap it.
91
+ */
92
+ Configure(context) {
93
+ if (this.Transport) {
94
+ return;
95
+ }
96
+ const ref = (context.CredentialsRef ?? '').trim();
97
+ if (!ref) {
98
+ this.ConfigurationRefusal = NO_CREDENTIAL_REF_REFUSAL;
99
+ return;
100
+ }
101
+ // A CONSTRUCTOR factory wins; otherwise ask the host registry. Only the second of these is
102
+ // reachable through the engine, because ClassFactory passes no arguments — see
103
+ // RegisterActivityTransportFactory.
104
+ const factory = this.Factory ?? HostActivityTransportFactory();
105
+ if (!factory) {
106
+ this.ConfigurationRefusal =
107
+ `This connection names credential "${ref}", but no transport factory is registered in ` +
108
+ 'this host, so the credential cannot be resolved.';
109
+ return;
110
+ }
111
+ // NOT caught. A factory that throws is a host wiring fault, and swallowing it here would
112
+ // recreate the silent misconfiguration this whole change exists to end.
113
+ const built = factory(context);
114
+ if (!built) {
115
+ this.ConfigurationRefusal =
116
+ `The transport factory served no transport for credential "${ref}" on driver ` +
117
+ `"${context.DriverClass}".`;
118
+ return;
119
+ }
120
+ this.Transport = built;
121
+ this.ConfigurationRefusal = null;
34
122
  }
35
123
  async FetchRaw(query) {
36
- if (!this.AllowLiveFetch) {
37
- return { Payloads: [], Issues: [LIVE_GRAPH_REFUSAL] };
124
+ // THE TENANT-WIDE REFUSAL IS CHECKED FIRST, and deliberately so. With no transport and no
125
+ // opt-in the default construction — the useful thing to say is WHY live fetch is off, not
126
+ // that a transport is missing. Reordering these makes the security-relevant message
127
+ // unreachable in the exact configuration most people will encounter.
128
+ //
129
+ // A recorded transport is exempt: the refusal exists to prevent reading mailboxes we are not
130
+ // scoped to, and a replay reads none. Gating it as well would make the safe path as awkward
131
+ // as the dangerous one, which is how people end up flipping the dangerous flag.
132
+ if ((this.Transport?.IsLive ?? true) && !this.AllowLiveFetch) {
133
+ // The tenant refusal stays FIRST for the reason above. But a Configure-time fault is
134
+ // ALSO true and has a DIFFERENT fix, and reporting only the first sends an operator to
135
+ // chase an Exchange policy when what is actually missing is a CredentialsRef or a
136
+ // factory. Since AllowLiveFetch defaults false and ClassFactory builds this provider
137
+ // with no arguments, returning early here made every Configure-time message below
138
+ // unreachable through the engine — the exact silent misconfiguration this class exists
139
+ // to end. Both are reported, most severe first.
140
+ const issues = [LIVE_GRAPH_REFUSAL];
141
+ if (!this.Transport && this.ConfigurationRefusal) {
142
+ issues.push(this.ConfigurationRefusal);
143
+ }
144
+ return { Payloads: [], Issues: issues };
145
+ }
146
+ if (!this.Transport) {
147
+ // The Configure-time refusal is the specific one when there is one: a connection with no
148
+ // CredentialsRef needs a different fix from a host with no factory, and from a provider
149
+ // simply constructed without a transport. Saying which saves a wrong hunt.
150
+ return { Payloads: [], Issues: [this.ConfigurationRefusal ?? NO_TRANSPORT_REFUSAL] };
38
151
  }
39
- LogError(`MSGraphActivitySyncProvider.FetchRaw was enabled for ${query.Mailbox} not supported in this build.`);
40
- return {
41
- Payloads: [],
42
- Issues: [
43
- 'Live Graph fetch was opted in but no mailbox transport is wired in this package. ' +
44
- 'Keep AllowLiveFetch false and use FixtureActivitySyncProvider.',
45
- ],
46
- };
152
+ // Deliberately NOT caught here. `BaseActivitySyncProvider.Fetch` already distinguishes a
153
+ // throw ("could not look" — Failed: true, LastError preserved) from an empty batch ("looked,
154
+ // found nothing"). Swallowing a transport failure into an empty batch would report a
155
+ // successful sync of a mailbox we never reached.
156
+ return await this.Transport.Fetch(query);
47
157
  }
48
158
  Normalize(raw, query) {
49
159
  if (raw.Payloads.length === 0)
50
160
  return [];
51
- const mapped = MapGraphMessages(raw.Payloads.length === 1 ? raw.Payloads[0] : raw.Payloads, query.Mailbox);
161
+ // `Payloads` is a FLAT array of Graph message objects — that is what MJ's `SourceData`
162
+ // carries, since it is `response.value` verbatim.
163
+ //
164
+ // The previous form, `Payloads.length === 1 ? Payloads[0] : Payloads`, was wrong at both
165
+ // ends and silently so. `MapGraphMessages` accepts an array of messages OR a single response
166
+ // envelope (`{ value: [...] }`), and nothing else. Unwrapping a one-element array therefore
167
+ // handed it a BARE MESSAGE, which matches neither shape, so a mailbox with exactly one new
168
+ // message normalized to nothing at all and reported a clean, empty, successful sync. Read
169
+ // the other way — as a list of envelopes — it broke at two or more instead. It could not be
170
+ // right for both, and it was never right for one message.
171
+ //
172
+ // The envelope case is still honoured because a transport may reasonably hand back a raw
173
+ // Graph response; it is detected explicitly rather than inferred from the array's length.
174
+ const only = raw.Payloads.length === 1 ? raw.Payloads[0] : null;
175
+ const isEnvelope = !!only && Array.isArray(only.value);
176
+ const mapped = MapGraphMessages(isEnvelope ? only : raw.Payloads, query.Mailbox);
52
177
  raw.Issues.push(...mapped.Issues);
53
178
  const since = query.Since ? query.Since.getTime() : null;
54
179
  return since === null ? mapped.Items : mapped.Items.filter((i) => i.StartedAt.getTime() > since);
@@ -56,7 +181,7 @@ let MSGraphActivitySyncProvider = class MSGraphActivitySyncProvider extends Base
56
181
  };
57
182
  MSGraphActivitySyncProvider = __decorate([
58
183
  RegisterClass(BaseActivitySyncProvider, 'Microsoft365'),
59
- __metadata("design:paramtypes", [Boolean])
184
+ __metadata("design:paramtypes", [Boolean, Object, Function])
60
185
  ], MSGraphActivitySyncProvider);
61
186
  export { MSGraphActivitySyncProvider };
62
187
  //# sourceMappingURL=MSGraphActivitySyncProvider.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"MSGraphActivitySyncProvider.js","sourceRoot":"","sources":["../../src/providers/MSGraphActivitySyncProvider.ts"],"names":[],"mappings":";;;;;;;;;AAAA;;;GAGG;AACH,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAChD,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAEvD,OAAO,EAAE,wBAAwB,EAAE,MAAM,gCAAgC,CAAC;AAE1E,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAE3D,MAAM,CAAC,MAAM,kBAAkB,GAC3B,uFAAuF;IACvF,qFAAqF;IACrF,mFAAmF;IACnF,uDAAuD,CAAC;AAGrD,IAAM,2BAA2B,GAAjC,MAAM,2BAA4B,SAAQ,wBAAwB;IAKrE;IACI;;;OAGG;IACc,iBAA0B,KAAK;QAEhD,KAAK,EAAE,CAAC;QAFS,mBAAc,GAAd,cAAc,CAAiB;QATpC,SAAI,GAAG,SAAkB,CAAC;QAC1B,qBAAgB,GAAG,cAAc,CAAC;QAClC,WAAM,GAAG,IAAI,CAAC;IAU9B,CAAC;IAES,KAAK,CAAC,QAAQ,CAAC,KAA0B;QAC/C,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;YACvB,OAAO,EAAE,QAAQ,EAAE,EAAE,EAAE,MAAM,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;QAC1D,CAAC;QACD,QAAQ,CAAC,wDAAwD,KAAK,CAAC,OAAO,iCAAiC,CAAC,CAAC;QACjH,OAAO;YACH,QAAQ,EAAE,EAAE;YACZ,MAAM,EAAE;gBACJ,mFAAmF;oBAC/E,gEAAgE;aACvE;SACJ,CAAC;IACN,CAAC;IAES,SAAS,CAAC,GAAa,EAAE,KAA0B;QACzD,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,EAAE,CAAC;QACzC,MAAM,MAAM,GAAG,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,EAAE,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3G,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;QACzD,OAAO,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,OAAO,EAAE,GAAG,KAAK,CAAC,CAAC;IACrG,CAAC;CACJ,CAAA;AApCY,2BAA2B;IADvC,aAAa,CAAC,wBAAwB,EAAE,cAAc,CAAC;;GAC3C,2BAA2B,CAoCvC"}
1
+ {"version":3,"file":"MSGraphActivitySyncProvider.js","sourceRoot":"","sources":["../../src/providers/MSGraphActivitySyncProvider.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,81 @@
1
+ /**
2
+ * The seam between this engine and however messages actually arrive.
3
+ *
4
+ * WHY THIS EXISTS AS A SEAM. `MSGraphActivitySyncProvider` had no transport at all — both of its
5
+ * `FetchRaw` returns handed back `Payloads: []`, so every live path was a refusal and the only thing
6
+ * that ever produced data was `FixtureActivitySyncProvider`, a DIFFERENT provider that bypasses the
7
+ * Graph mapping entirely. That is why the credential gap went unnoticed: nothing exercised the code
8
+ * that would have needed a credential.
9
+ *
10
+ * Splitting the transport out fixes that specific failure. The provider, the Graph mapping, the
11
+ * participant resolution, the watermark and the writes are the same code on every path; only the
12
+ * outermost call — the one that reaches the network — is substitutable. A run against recorded
13
+ * payloads therefore proves everything except the network hop, which is a far stronger claim than a
14
+ * fixture that proves only the engine.
15
+ *
16
+ * @module @mj-biz-apps/common-activity-sync
17
+ */
18
+ import type { UserInfo } from '@memberjunction/core';
19
+ import type { ActivitySourceQuery, RawBatch } from '../types.js';
20
+ /**
21
+ * Fetch raw provider payloads for one mailbox.
22
+ *
23
+ * Returns `RawBatch` rather than throwing on a partial failure: a batch that arrived with some
24
+ * issues is still worth filing, and `BaseActivitySyncProvider.Fetch` distinguishes "looked and found
25
+ * nothing" from "could not look" by whether this throws.
26
+ */
27
+ export interface ActivityMessageTransport {
28
+ /** Human-readable, for issue text. Names WHERE the messages came from, so a run is attributable. */
29
+ readonly Describe: string;
30
+ /**
31
+ * True only when this transport reached the real service. The engine refuses to write
32
+ * `Source: 'Integration'` rows from a non-live provider without being told to, and that guard is
33
+ * worthless if a recorded transport can claim to be live.
34
+ */
35
+ readonly IsLive: boolean;
36
+ Fetch(query: ActivitySourceQuery): Promise<RawBatch>;
37
+ }
38
+ /**
39
+ * What a connection knows about itself that a transport needs.
40
+ *
41
+ * `CredentialsRef` is the column's whole purpose — its own description says "MJ Credentials engine
42
+ * key. NEVER a secret value at rest" — and until now nothing read it. A connection could name the
43
+ * credential it wanted and be ignored, which is worse than having no column at all: the
44
+ * configuration looked complete.
45
+ */
46
+ export interface ActivityTransportContext {
47
+ /** `ActivitySyncConnection.CredentialsRef` — a KEY into MJ's Credentials engine, never a secret. */
48
+ CredentialsRef: string | null;
49
+ /** `ActivitySyncConnection.Mailbox`, so a factory can scope or validate what it builds. */
50
+ Mailbox: string | null;
51
+ /** The plugin key this connection resolved to, for a factory serving more than one provider. */
52
+ DriverClass: string;
53
+ /**
54
+ * Who the run is acting as.
55
+ *
56
+ * MJ's Credentials engine documents `contextUser` as REQUIRED server-side, so a factory that
57
+ * resolves a credential cannot do its job without it. It is optional here because a factory that
58
+ * serves recordings needs no user at all, and requiring one would make the safe path the awkward
59
+ * one.
60
+ */
61
+ ContextUser?: UserInfo;
62
+ }
63
+ /**
64
+ * How a HOST supplies a transport for a connection.
65
+ *
66
+ * Providers are constructed by `MJGlobal.ClassFactory` with no arguments, so nothing can be injected
67
+ * at construction. A factory is the seam that respects that: the host owns the Communication and
68
+ * Credentials engines, and hands back a transport for a given connection or null if it cannot serve
69
+ * one. Returning null is not an error — a host that syncs only fixtures legitimately has none.
70
+ */
71
+ export type ActivityTransportFactory = (context: ActivityTransportContext) => ActivityMessageTransport | null;
72
+ /**
73
+ * Register the factory this host serves transports from. Pass null to clear it.
74
+ *
75
+ * Idempotent and last-call-wins, deliberately: a host that boots twice in one process (tests, a
76
+ * reload) must not end up with two, and there is no sensible way to merge them.
77
+ */
78
+ export declare function RegisterActivityTransportFactory(factory: ActivityTransportFactory | null): void;
79
+ /** The registered factory, or null when this host serves none. */
80
+ export declare function HostActivityTransportFactory(): ActivityTransportFactory | null;
81
+ //# sourceMappingURL=MessageTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageTransport.d.ts","sourceRoot":"","sources":["../../src/providers/MessageTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAErD,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAEjE;;;;;;GAMG;AACH,MAAM,WAAW,wBAAwB;IACrC,oGAAoG;IACpG,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAE1B;;;;OAIG;IACH,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IAEzB,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;CACxD;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,wBAAwB;IACrC,oGAAoG;IACpG,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,2FAA2F;IAC3F,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,gGAAgG;IAChG,WAAW,EAAE,MAAM,CAAC;IACpB;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,QAAQ,CAAC;CAC1B;AAED;;;;;;;GAOG;AACH,MAAM,MAAM,wBAAwB,GAAG,CAAC,OAAO,EAAE,wBAAwB,KAAK,wBAAwB,GAAG,IAAI,CAAC;AAmB9G;;;;;GAKG;AACH,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,wBAAwB,GAAG,IAAI,GAAG,IAAI,CAE/F;AAED,kEAAkE;AAClE,wBAAgB,4BAA4B,IAAI,wBAAwB,GAAG,IAAI,CAE9E"}
@@ -0,0 +1,30 @@
1
+ /**
2
+ * THE HOST REGISTRY, and why a constructor parameter was not enough.
3
+ *
4
+ * `ActivityTransportFactory` was declared as "how a HOST supplies a transport" and reachable only as
5
+ * the third constructor argument — which `MJGlobal.ClassFactory` never passes, because it builds
6
+ * plugins with no arguments. So through the engine, the only path that matters in production, no
7
+ * factory could ever arrive. The seam was described, exported, and unreachable.
8
+ *
9
+ * A module-level registry is the shape that fits the constraint rather than fighting it: the host
10
+ * owns the Communication and Credentials engines and registers once at bootstrap, and the provider
11
+ * asks for one at Configure time.
12
+ *
13
+ * A transport or factory passed to the CONSTRUCTOR still wins. Tests and the demo supply their own,
14
+ * and a process-wide registration must not be able to reach in and replace it.
15
+ */
16
+ let hostFactory = null;
17
+ /**
18
+ * Register the factory this host serves transports from. Pass null to clear it.
19
+ *
20
+ * Idempotent and last-call-wins, deliberately: a host that boots twice in one process (tests, a
21
+ * reload) must not end up with two, and there is no sensible way to merge them.
22
+ */
23
+ export function RegisterActivityTransportFactory(factory) {
24
+ hostFactory = factory;
25
+ }
26
+ /** The registered factory, or null when this host serves none. */
27
+ export function HostActivityTransportFactory() {
28
+ return hostFactory;
29
+ }
30
+ //# sourceMappingURL=MessageTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MessageTransport.js","sourceRoot":"","sources":["../../src/providers/MessageTransport.ts"],"names":[],"mappings":"AA8EA;;;;;;;;;;;;;;GAcG;AACH,IAAI,WAAW,GAAoC,IAAI,CAAC;AAExD;;;;;GAKG;AACH,MAAM,UAAU,gCAAgC,CAAC,OAAwC;IACrF,WAAW,GAAG,OAAO,CAAC;AAC1B,CAAC;AAED,kEAAkE;AAClE,MAAM,UAAU,4BAA4B;IACxC,OAAO,WAAW,CAAC;AACvB,CAAC"}
@@ -0,0 +1,48 @@
1
+ /**
2
+ * A transport that replays Graph payloads captured earlier, instead of reaching the network.
3
+ *
4
+ * WHAT THIS IS NOT. It is not a fixture and it is not a mock of the engine. `FixtureActivitySyncProvider`
5
+ * is a DIFFERENT provider — it substitutes for the whole Graph path, so a run against it proves the
6
+ * engine works and proves nothing whatever about the Graph mapping, the credential resolution or the
7
+ * provider. That is exactly how the credential gap survived unnoticed: everything green, nothing
8
+ * exercised.
9
+ *
10
+ * This replaces only the outermost call, the one that reaches the network. Everything downstream —
11
+ * `MapGraphMessages`, direction inference, participant resolution, identity matching, de-duplication,
12
+ * the watermark, the writes — is the same code running on the same shapes as a live run. What a
13
+ * replayed run does NOT prove is precisely one thing: that the network call and its auth succeed.
14
+ *
15
+ * WHY IT IS DELIBERATELY NOT LIVE. `IsLive` is false, so the engine's existing guard refuses to
16
+ * write `Source: 'Integration'` rows from it without being told to. A replayed run cannot be
17
+ * mistaken for a real one in the database afterwards, which is the property that makes it safe to
18
+ * demo with.
19
+ *
20
+ * THE PAYLOADS MUST BE REAL GRAPH JSON. Hand-written approximations would re-introduce the failure
21
+ * this file exists to avoid — a shape that agrees with our mapper rather than with Microsoft. Capture
22
+ * them from an actual `GET /users/{id}/messages` response.
23
+ *
24
+ * @module @mj-biz-apps/common-activity-sync
25
+ */
26
+ import type { ActivitySourceQuery, RawBatch } from '../types.js';
27
+ import type { ActivityMessageTransport } from './MessageTransport.js';
28
+ /** A captured Graph response, keyed by the mailbox it was captured from. */
29
+ export interface RecordedMailbox {
30
+ /** Lower-cased on construction; mailbox matching is case-insensitive everywhere else too. */
31
+ Mailbox: string;
32
+ /** Verbatim entries from a Graph `value` array. */
33
+ Payloads: Record<string, unknown>[];
34
+ /** Where and when this was captured. Reported as an issue so a run is always attributable. */
35
+ Provenance: string;
36
+ }
37
+ export declare class RecordedMessageTransport implements ActivityMessageTransport {
38
+ readonly Describe: string;
39
+ /**
40
+ * FALSE, and not configurable. A recorded run that could claim to be live would defeat the
41
+ * engine's guard against writing Integration-sourced rows from a non-live provider.
42
+ */
43
+ readonly IsLive = false;
44
+ private readonly ByMailbox;
45
+ constructor(recordings: RecordedMailbox[]);
46
+ Fetch(query: ActivitySourceQuery): Promise<RawBatch>;
47
+ }
48
+ //# sourceMappingURL=RecordedMessageTransport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordedMessageTransport.d.ts","sourceRoot":"","sources":["../../src/providers/RecordedMessageTransport.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,OAAO,KAAK,EAAE,mBAAmB,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAC;AAEtE,4EAA4E;AAC5E,MAAM,WAAW,eAAe;IAC5B,6FAA6F;IAC7F,OAAO,EAAE,MAAM,CAAC;IAChB,mDAAmD;IACnD,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,8FAA8F;IAC9F,UAAU,EAAE,MAAM,CAAC;CACtB;AAED,qBAAa,wBAAyB,YAAW,wBAAwB;IACrE,SAAgB,QAAQ,EAAE,MAAM,CAAC;IAEjC;;;OAGG;IACH,SAAgB,MAAM,SAAS;IAE/B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAA+B;gBAEtC,UAAU,EAAE,eAAe,EAAE;IAKnC,KAAK,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,QAAQ,CAAC;CA6CpE"}
@@ -0,0 +1,49 @@
1
+ export class RecordedMessageTransport {
2
+ constructor(recordings) {
3
+ /**
4
+ * FALSE, and not configurable. A recorded run that could claim to be live would defeat the
5
+ * engine's guard against writing Integration-sourced rows from a non-live provider.
6
+ */
7
+ this.IsLive = false;
8
+ this.ByMailbox = new Map(recordings.map((r) => [r.Mailbox.trim().toLowerCase(), r]));
9
+ this.Describe = `recorded Graph payloads (${recordings.length} mailbox(es))`;
10
+ }
11
+ async Fetch(query) {
12
+ const key = (query.Mailbox ?? '').trim().toLowerCase();
13
+ const recording = this.ByMailbox.get(key);
14
+ if (!recording) {
15
+ // THROW rather than return empty. An empty batch means "looked, found nothing", which
16
+ // would report a successful sync of a mailbox that was never recorded — the silent
17
+ // success this codebase keeps having to design against.
18
+ throw new Error(`No recorded payloads for mailbox "${query.Mailbox}". ` +
19
+ `Recorded mailboxes: ${[...this.ByMailbox.keys()].join(', ') || '(none)'}.`);
20
+ }
21
+ // The window is applied downstream in Normalize, exactly as it is for the live transport, so
22
+ // the two paths differ in nothing but where the bytes came from.
23
+ const payloads = recording.Payloads.slice(0, query.Limit);
24
+ const issues = [
25
+ `REPLAYED, NOT LIVE: ${recording.Provenance}. Nothing was read from Microsoft 365 on this run.`,
26
+ ];
27
+ const capped = recording.Payloads.length > query.Limit;
28
+ if (capped) {
29
+ issues.push(`Recording holds ${recording.Payloads.length} message(s); Limit is ${query.Limit}, so ` +
30
+ `${recording.Payloads.length - query.Limit} were not returned.`);
31
+ }
32
+ /**
33
+ * A CAPPED REPLAY WITHHOLDS THE WATERMARK TOO, and not only for symmetry.
34
+ *
35
+ * The live transport already does this: Graph returns newest-first, so a truncated live batch
36
+ * strands everything between the old watermark and its oldest item. A replay truncates the
37
+ * other way — `slice(0, Limit)` takes the FIRST N of the recording — so if a recording happens
38
+ * to be ordered oldest-first, the batch IS contiguous with the watermark and advancing would
39
+ * be safe.
40
+ *
41
+ * That safety is an accident of file order, and nothing enforces it. A recording captured
42
+ * newest-first, or re-sorted by an editor, silently becomes the live bug with no code change
43
+ * anywhere. Withholding costs a re-read that de-duplication absorbs, so the flag is set
44
+ * whenever the limit binds and a watermark is in play, exactly as on the live path.
45
+ */
46
+ return { Payloads: payloads, Issues: issues, Capped: capped && !!query.Since };
47
+ }
48
+ }
49
+ //# sourceMappingURL=RecordedMessageTransport.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"RecordedMessageTransport.js","sourceRoot":"","sources":["../../src/providers/RecordedMessageTransport.ts"],"names":[],"mappings":"AAsCA,MAAM,OAAO,wBAAwB;IAWjC,YAAmB,UAA6B;QARhD;;;WAGG;QACa,WAAM,GAAG,KAAK,CAAC;QAK3B,IAAI,CAAC,SAAS,GAAG,IAAI,GAAG,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QACrF,IAAI,CAAC,QAAQ,GAAG,4BAA4B,UAAU,CAAC,MAAM,eAAe,CAAC;IACjF,CAAC;IAEM,KAAK,CAAC,KAAK,CAAC,KAA0B;QACzC,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACvD,MAAM,SAAS,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAE1C,IAAI,CAAC,SAAS,EAAE,CAAC;YACb,sFAAsF;YACtF,mFAAmF;YACnF,wDAAwD;YACxD,MAAM,IAAI,KAAK,CACX,qCAAqC,KAAK,CAAC,OAAO,KAAK;gBACnD,uBAAuB,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,QAAQ,GAAG,CAClF,CAAC;QACN,CAAC;QAED,6FAA6F;QAC7F,iEAAiE;QACjE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1D,MAAM,MAAM,GAAG;YACX,uBAAuB,SAAS,CAAC,UAAU,oDAAoD;SAClG,CAAC;QACF,MAAM,MAAM,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,CAAC;QACvD,IAAI,MAAM,EAAE,CAAC;YACT,MAAM,CAAC,IAAI,CACP,mBAAmB,SAAS,CAAC,QAAQ,CAAC,MAAM,yBAAyB,KAAK,CAAC,KAAK,OAAO;gBACnF,GAAG,SAAS,CAAC,QAAQ,CAAC,MAAM,GAAG,KAAK,CAAC,KAAK,qBAAqB,CACtE,CAAC;QACN,CAAC;QAED;;;;;;;;;;;;;WAaG;QACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,IAAI,CAAC,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;IACnF,CAAC;CACJ"}
package/dist/types.d.ts CHANGED
@@ -99,6 +99,17 @@ export interface RawBatch {
99
99
  Payloads: Record<string, unknown>[];
100
100
  /** Reported, never thrown — a partial batch is still worth filing. */
101
101
  Issues: string[];
102
+ /**
103
+ * The read hit its limit while a watermark was in play, so items OLDER than the ones returned
104
+ * may still be unread. The watermark must NOT advance past a capped batch: Graph returns
105
+ * newest-first, so the newest item in a capped batch is the newest in the mailbox, and
106
+ * advancing to it steps over everything between the old watermark and the oldest item
107
+ * returned — losing that mail permanently and silently.
108
+ *
109
+ * Withholding the watermark instead costs a re-read that de-duplication absorbs. Those two
110
+ * costs are not comparable, which is the rule `watermark.ts` already states.
111
+ */
112
+ Capped?: boolean;
102
113
  }
103
114
  /** One provider pass. */
104
115
  export interface ActivitySourceBatch {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEpE,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GACtB,WAAW,GACX,aAAa,GACb,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,WAAW,GACX,UAAU,GACV,WAAW,CAAC;AAElB,8CAA8C;AAC9C,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAU1D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAAuC,CAAC;AAE3G;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE5D,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC5B,uGAAuG;IACvG,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,0DAA0D;IAC1D,YAAY,EAAE,oBAAoB,CAAC;CACtC;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC3B;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAChC,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,yEAAyE;AACzE,MAAM,WAAW,QAAQ;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,yBAAyB;AACzB,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;;;OAKG;IACH,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAE9E"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,uCAAuC;AACvC,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,CAAC;AAEpE,sCAAsC;AACtC,MAAM,MAAM,gBAAgB,GACtB,WAAW,GACX,aAAa,GACb,MAAM,GACN,IAAI,GACJ,IAAI,GACJ,KAAK,GACL,WAAW,GACX,UAAU,GACV,WAAW,CAAC;AAElB,8CAA8C;AAC9C,MAAM,MAAM,oBAAoB,GAAG,OAAO,GAAG,OAAO,GAAG,cAAc,CAAC;AAEtE;;;;GAIG;AACH,eAAO,MAAM,mBAAmB,EAAE,SAAS,gBAAgB,EAU1D,CAAC;AAEF,eAAO,MAAM,uBAAuB,EAAE,SAAS,oBAAoB,EAAuC,CAAC;AAE3G;;;;GAIG;AACH,MAAM,MAAM,kBAAkB,GAAG,SAAS,GAAG,UAAU,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE5E;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,UAAU,GAAG,iBAAiB,CAAC;AAE5D,uFAAuF;AACvF,MAAM,WAAW,eAAe;IAC5B,uGAAuG;IACvG,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,IAAI,EAAE,gBAAgB,CAAC;IACvB,0DAA0D;IAC1D,YAAY,EAAE,oBAAoB,CAAC;CACtC;AAED,wDAAwD;AACxD,MAAM,WAAW,cAAc;IAC3B;;;;;;OAMG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB,2DAA2D;IAC3D,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,wFAAwF;IACxF,QAAQ,EAAE,MAAM,CAAC;IACjB,gCAAgC;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,uDAAuD;IACvD,IAAI,EAAE,MAAM,GAAG,IAAI,CAAC;IACpB,SAAS,EAAE,IAAI,CAAC;IAChB,iDAAiD;IACjD,OAAO,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,SAAS,EAAE,iBAAiB,CAAC;IAC7B,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC;;;;;;OAMG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB,2EAA2E;IAC3E,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC;AAED,2CAA2C;AAC3C,MAAM,WAAW,mBAAmB;IAChC,iFAAiF;IACjF,OAAO,EAAE,MAAM,CAAC;IAChB;;;;;;;OAOG;IACH,KAAK,EAAE,IAAI,GAAG,IAAI,CAAC;IACnB,kCAAkC;IAClC,KAAK,EAAE,MAAM,CAAC;CACjB;AAED,yEAAyE;AACzE,MAAM,WAAW,QAAQ;IACrB,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,sEAAsE;IACtE,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;;;;;;OASG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,yBAAyB;AACzB,MAAM,WAAW,mBAAmB;IAChC,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB;;;;;OAKG;IACH,aAAa,EAAE,IAAI,GAAG,IAAI,CAAC;IAC3B,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,kBAAkB,GAAG,cAAc,CAE9E"}
package/dist/types.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC5D,WAAW;IACX,aAAa;IACb,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,WAAW;IACX,UAAU;IACV,WAAW;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAoC,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AA2G3G;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC1D,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC;AAChE,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAoBH;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAgC;IAC5D,WAAW;IACX,aAAa;IACb,MAAM;IACN,IAAI;IACJ,IAAI;IACJ,KAAK;IACL,WAAW;IACX,UAAU;IACV,WAAW;CACd,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAoC,CAAC,OAAO,EAAE,OAAO,EAAE,cAAc,CAAC,CAAC;AAsH3G;;;;;;;GAOG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAwB;IAC1D,OAAO,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,UAAU,CAAC;AAChE,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@mj-biz-apps/common-activity-sync",
3
3
  "type": "module",
4
- "version": "5.37.0",
4
+ "version": "5.39.0",
5
5
  "description": "Activity Sync Engine contracts for BizApps Common — provider plugin base class, qualification cascade, and the in-process extension contract that lets downstream apps enrich an Activity inside its own write transaction.",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -23,11 +23,13 @@
23
23
  "vitest": "^3.2.4"
24
24
  },
25
25
  "dependencies": {
26
- "@mj-biz-apps/common-entities": "5.37.0"
26
+ "@mj-biz-apps/common-entities": "5.39.0"
27
27
  },
28
28
  "peerDependencies": {
29
- "@memberjunction/core": "^6.1.0-edge.3",
30
- "@memberjunction/global": "^6.1.0-edge.3"
29
+ "@memberjunction/communication-types": "^6.1.0-edge.5",
30
+ "@memberjunction/core": "^6.1.0-edge.5",
31
+ "@memberjunction/credentials": "^6.1.0-edge.5",
32
+ "@memberjunction/global": "^6.1.0-edge.5"
31
33
  },
32
34
  "repository": {
33
35
  "type": "git",