@mj-biz-apps/common-activity-sync 5.38.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.
- package/dist/ActivitySyncEngine.d.ts +2 -0
- package/dist/ActivitySyncEngine.d.ts.map +1 -1
- package/dist/ActivitySyncEngine.js +9 -0
- package/dist/ActivitySyncEngine.js.map +1 -1
- package/dist/BaseActivitySyncProvider.d.ts +14 -0
- package/dist/BaseActivitySyncProvider.d.ts.map +1 -1
- package/dist/BaseActivitySyncProvider.js +18 -1
- package/dist/BaseActivitySyncProvider.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/providers/GraphCommunicationTransport.d.ts +110 -0
- package/dist/providers/GraphCommunicationTransport.d.ts.map +1 -0
- package/dist/providers/GraphCommunicationTransport.js +99 -0
- package/dist/providers/GraphCommunicationTransport.js.map +1 -0
- package/dist/providers/MSGraphActivitySyncProvider.d.ts +49 -6
- package/dist/providers/MSGraphActivitySyncProvider.d.ts.map +1 -1
- package/dist/providers/MSGraphActivitySyncProvider.js +145 -20
- package/dist/providers/MSGraphActivitySyncProvider.js.map +1 -1
- package/dist/providers/MessageTransport.d.ts +81 -0
- package/dist/providers/MessageTransport.d.ts.map +1 -0
- package/dist/providers/MessageTransport.js +30 -0
- package/dist/providers/MessageTransport.js.map +1 -0
- package/dist/providers/RecordedMessageTransport.d.ts +48 -0
- package/dist/providers/RecordedMessageTransport.d.ts.map +1 -0
- package/dist/providers/RecordedMessageTransport.js +49 -0
- package/dist/providers/RecordedMessageTransport.js.map +1 -0
- package/dist/types.d.ts +11 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js.map +1 -1
- package/package.json +4 -2
|
@@ -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":"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"}
|
|
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;
|
|
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
|
-
|
|
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;
|
|
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
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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
|
-
*
|
|
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
|
-
|
|
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
|
-
*
|
|
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
|
-
|
|
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":"
|
|
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.
|
|
12
|
-
*
|
|
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
|
-
*
|
|
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.
|
|
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
|
-
|
|
37
|
-
|
|
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
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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
|
-
|
|
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
|
|
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 {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -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;
|
|
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.
|
|
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,10 +23,12 @@
|
|
|
23
23
|
"vitest": "^3.2.4"
|
|
24
24
|
},
|
|
25
25
|
"dependencies": {
|
|
26
|
-
"@mj-biz-apps/common-entities": "5.
|
|
26
|
+
"@mj-biz-apps/common-entities": "5.39.0"
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
|
+
"@memberjunction/communication-types": "^6.1.0-edge.5",
|
|
29
30
|
"@memberjunction/core": "^6.1.0-edge.5",
|
|
31
|
+
"@memberjunction/credentials": "^6.1.0-edge.5",
|
|
30
32
|
"@memberjunction/global": "^6.1.0-edge.5"
|
|
31
33
|
},
|
|
32
34
|
"repository": {
|