@mj-biz-apps/common-activity-sync 5.41.0 → 5.43.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 (49) hide show
  1. package/dist/ActivitySyncEngine.d.ts +59 -1
  2. package/dist/ActivitySyncEngine.d.ts.map +1 -1
  3. package/dist/ActivitySyncEngine.js +159 -6
  4. package/dist/ActivitySyncEngine.js.map +1 -1
  5. package/dist/attachments.d.ts +106 -0
  6. package/dist/attachments.d.ts.map +1 -0
  7. package/dist/attachments.js +147 -0
  8. package/dist/attachments.js.map +1 -0
  9. package/dist/index.d.ts +2 -0
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/participants.d.ts +30 -0
  14. package/dist/participants.d.ts.map +1 -1
  15. package/dist/participants.js +48 -0
  16. package/dist/participants.js.map +1 -1
  17. package/dist/providers/GraphCalendarTransport.d.ts +115 -0
  18. package/dist/providers/GraphCalendarTransport.d.ts.map +1 -0
  19. package/dist/providers/GraphCalendarTransport.js +139 -0
  20. package/dist/providers/GraphCalendarTransport.js.map +1 -0
  21. package/dist/providers/GraphCommunicationTransport.d.ts.map +1 -1
  22. package/dist/providers/GraphCommunicationTransport.js +18 -4
  23. package/dist/providers/GraphCommunicationTransport.js.map +1 -1
  24. package/dist/providers/GraphMessageMapper.d.ts +2 -0
  25. package/dist/providers/GraphMessageMapper.d.ts.map +1 -1
  26. package/dist/providers/GraphMessageMapper.js +3 -0
  27. package/dist/providers/GraphMessageMapper.js.map +1 -1
  28. package/dist/providers/MSGraphActivitySyncProvider.d.ts +39 -4
  29. package/dist/providers/MSGraphActivitySyncProvider.d.ts.map +1 -1
  30. package/dist/providers/MSGraphActivitySyncProvider.js +45 -10
  31. package/dist/providers/MSGraphActivitySyncProvider.js.map +1 -1
  32. package/dist/providers/MSGraphCalendarSyncProvider.d.ts +55 -14
  33. package/dist/providers/MSGraphCalendarSyncProvider.d.ts.map +1 -1
  34. package/dist/providers/MSGraphCalendarSyncProvider.js +112 -38
  35. package/dist/providers/MSGraphCalendarSyncProvider.js.map +1 -1
  36. package/dist/providers/MessageTransport.d.ts +90 -0
  37. package/dist/providers/MessageTransport.d.ts.map +1 -1
  38. package/dist/providers/MessageTransport.js +72 -0
  39. package/dist/providers/MessageTransport.js.map +1 -1
  40. package/dist/providers/RecordedMessageTransport.d.ts.map +1 -1
  41. package/dist/providers/RecordedMessageTransport.js +25 -11
  42. package/dist/providers/RecordedMessageTransport.js.map +1 -1
  43. package/dist/stages.d.ts +11 -0
  44. package/dist/stages.d.ts.map +1 -1
  45. package/dist/stages.js.map +1 -1
  46. package/dist/types.d.ts +14 -0
  47. package/dist/types.d.ts.map +1 -1
  48. package/dist/types.js.map +1 -1
  49. package/package.json +6 -6
@@ -78,4 +78,94 @@ export type ActivityTransportFactory = (context: ActivityTransportContext) => Ac
78
78
  export declare function RegisterActivityTransportFactory(factory: ActivityTransportFactory | null): void;
79
79
  /** The registered factory, or null when this host serves none. */
80
80
  export declare function HostActivityTransportFactory(): ActivityTransportFactory | null;
81
+ /**
82
+ * WHAT A HOST MUST WRITE DOWN BEFORE IT MAY READ A REAL MAILBOX.
83
+ *
84
+ * `MSGraphProvider` authenticates app-only, so the `Mail.Read` APPLICATION permission is granted
85
+ * against the tenant and not against a mailbox: it reads EVERY mailbox in the organisation. The
86
+ * `Mailbox` on a connection narrows what we ASK for, not what we are ALLOWED to read. The only thing
87
+ * that narrows the grant is an Exchange Application Access Policy binding the app registration to a
88
+ * mail-enabled security group.
89
+ *
90
+ * So the opt-in is not a boolean. A boolean records that somebody wanted live fetch; this records
91
+ * that somebody CHECKED, which group they found, and who is answerable for it — the things an audit
92
+ * actually asks for, and the things a person is forced to look up rather than guess. `Confirmed` is
93
+ * the literal `true` rather than `boolean` deliberately: a variable that happens to be false will
94
+ * not type-check, so the attestation cannot be satisfied by passing a flag through.
95
+ */
96
+ interface AttestationBase {
97
+ /** Literal `true`. See above — a `boolean` variable is rejected by the compiler. */
98
+ Confirmed: true;
99
+ /** Who decided. A person, so the decision has an owner. */
100
+ ConfirmedBy: string;
101
+ /** When they decided. Policies get deleted; a stale attestation should be visible as stale. */
102
+ ConfirmedAt: Date;
103
+ }
104
+ /**
105
+ * The app registration is restricted, and this names the restriction.
106
+ */
107
+ export interface ScopedMailboxAttestation extends AttestationBase {
108
+ Scope: 'RestrictedToGroup';
109
+ /** The mail-enabled security group the Exchange assignment binds the app to. */
110
+ ScopedToGroup: string;
111
+ }
112
+ /**
113
+ * The tenant-wide grant was looked at and ACCEPTED. A real outcome, not a failure state.
114
+ *
115
+ * WHY THIS EXISTS AT ALL. The first version of this type demanded `ScopedToGroup`, which quietly
116
+ * assumed every deployment would create an Exchange RBAC assignment. Most do not — adding an API
117
+ * permission in Entra is one team's five-minute job, and Exchange RBAC for Applications is a
118
+ * different system that often nobody owns. A gate that only accepts "scoped" leaves an organisation
119
+ * that decided otherwise with two options: invent a group name, or bypass the gate. Both are worse
120
+ * than what it was protecting, because both destroy the record.
121
+ *
122
+ * So the shape now matches the decisions people actually make. What stays impossible is the third
123
+ * state — nobody looked — because neither variant can be satisfied without a name, a date, and
124
+ * either a group or a written reason.
125
+ */
126
+ export interface TenantWideMailboxAttestation extends AttestationBase {
127
+ Scope: 'TenantWideAccepted';
128
+ /**
129
+ * What is being accepted, in the deciding person's own words.
130
+ *
131
+ * Free text and REQUIRED, deliberately. A boolean here would be a tick-box, and a tick-box records
132
+ * that somebody clicked rather than that somebody understood. Writing the sentence is the point:
133
+ * it is what an audit reads, and what the next person finds when they ask why this app can read
134
+ * every mailbox in the tenant.
135
+ */
136
+ AcceptedRisk: string;
137
+ }
138
+ export type LiveMailboxPolicyAttestation = ScopedMailboxAttestation | TenantWideMailboxAttestation;
139
+ /**
140
+ * Record that this host is scoped, and may therefore read real mailboxes. Pass null to revoke.
141
+ *
142
+ * DELIBERATELY NOT DRIVEN BY DATA. `ActivitySyncConnection` is an ordinary editable entity, and
143
+ * anyone who can edit a row could otherwise turn on tenant-wide mail reading by typing in a form.
144
+ * The same reasoning already applies to the transport itself — "a database row should not be able to
145
+ * reach in and swap it" — and it applies with more force here. This is a bootstrap-time decision in
146
+ * code, made by whoever deploys the host.
147
+ *
148
+ * The blank checks are the point rather than defensive noise: an attestation with an empty group or
149
+ * no name records nothing, and silently accepting one would turn this back into a boolean.
150
+ *
151
+ * ── EVERY INVARIANT IS ENFORCED HERE, NOT ONLY IN THE ENV LOADER ────────────────────────────────
152
+ *
153
+ * `LoadLiveMailboxPolicyFromEnv` validates all of this and is the path a deployment takes. It is not
154
+ * the only path: this function is exported, and a host bootstrap, a `.mjs` harness or any TypeScript
155
+ * caller with a cast reaches it directly — where `Confirmed: true` and `ConfirmedAt: Date` are
156
+ * compile-time shapes that enforce nothing at runtime. Checking them only in the loader made the
157
+ * guarantee a property of one caller rather than of the gate, so an attestation with no date, or with
158
+ * `Confirmed: false`, was accepted and opened tenant-wide mail AND calendar for the whole host.
159
+ *
160
+ * WHAT IS DELIBERATELY NOT CHECKED is staleness. An attestation that expired on a date boundary would
161
+ * turn live fetch off on a working deployment with no one having changed anything, which trades a
162
+ * reviewed decision for a silent outage. The date is required so the record is honest about WHEN, not
163
+ * so it can lapse.
164
+ */
165
+ export declare function AllowLiveMailboxFetch(attestation: LiveMailboxPolicyAttestation | null): void;
166
+ /** The recorded attestation, or null when this host has not opted in. */
167
+ export declare function HostLiveMailboxPolicy(): LiveMailboxPolicyAttestation | null;
168
+ /** Whether this host has attested that its app registration is scoped. */
169
+ export declare function HostAllowsLiveMailboxFetch(): boolean;
170
+ export {};
81
171
  //# sourceMappingURL=MessageTransport.d.ts.map
@@ -1 +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"}
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;AAED;;;;;;;;;;;;;;GAcG;AACH,UAAU,eAAe;IACrB,oFAAoF;IACpF,SAAS,EAAE,IAAI,CAAC;IAChB,2DAA2D;IAC3D,WAAW,EAAE,MAAM,CAAC;IACpB,+FAA+F;IAC/F,WAAW,EAAE,IAAI,CAAC;CACrB;AAED;;GAEG;AACH,MAAM,WAAW,wBAAyB,SAAQ,eAAe;IAC7D,KAAK,EAAE,mBAAmB,CAAC;IAC3B,gFAAgF;IAChF,aAAa,EAAE,MAAM,CAAC;CACzB;AAED;;;;;;;;;;;;;GAaG;AACH,MAAM,WAAW,4BAA6B,SAAQ,eAAe;IACjE,KAAK,EAAE,oBAAoB,CAAC;IAC5B;;;;;;;OAOG;IACH,YAAY,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,4BAA4B,GAAG,wBAAwB,GAAG,4BAA4B,CAAC;AAInG;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,4BAA4B,GAAG,IAAI,GAAG,IAAI,CA2C5F;AAED,yEAAyE;AACzE,wBAAgB,qBAAqB,IAAI,4BAA4B,GAAG,IAAI,CAE3E;AAED,0EAA0E;AAC1E,wBAAgB,0BAA0B,IAAI,OAAO,CAEpD"}
@@ -27,4 +27,76 @@ export function RegisterActivityTransportFactory(factory) {
27
27
  export function HostActivityTransportFactory() {
28
28
  return hostFactory;
29
29
  }
30
+ let hostLivePolicy = null;
31
+ /**
32
+ * Record that this host is scoped, and may therefore read real mailboxes. Pass null to revoke.
33
+ *
34
+ * DELIBERATELY NOT DRIVEN BY DATA. `ActivitySyncConnection` is an ordinary editable entity, and
35
+ * anyone who can edit a row could otherwise turn on tenant-wide mail reading by typing in a form.
36
+ * The same reasoning already applies to the transport itself — "a database row should not be able to
37
+ * reach in and swap it" — and it applies with more force here. This is a bootstrap-time decision in
38
+ * code, made by whoever deploys the host.
39
+ *
40
+ * The blank checks are the point rather than defensive noise: an attestation with an empty group or
41
+ * no name records nothing, and silently accepting one would turn this back into a boolean.
42
+ *
43
+ * ── EVERY INVARIANT IS ENFORCED HERE, NOT ONLY IN THE ENV LOADER ────────────────────────────────
44
+ *
45
+ * `LoadLiveMailboxPolicyFromEnv` validates all of this and is the path a deployment takes. It is not
46
+ * the only path: this function is exported, and a host bootstrap, a `.mjs` harness or any TypeScript
47
+ * caller with a cast reaches it directly — where `Confirmed: true` and `ConfirmedAt: Date` are
48
+ * compile-time shapes that enforce nothing at runtime. Checking them only in the loader made the
49
+ * guarantee a property of one caller rather than of the gate, so an attestation with no date, or with
50
+ * `Confirmed: false`, was accepted and opened tenant-wide mail AND calendar for the whole host.
51
+ *
52
+ * WHAT IS DELIBERATELY NOT CHECKED is staleness. An attestation that expired on a date boundary would
53
+ * turn live fetch off on a working deployment with no one having changed anything, which trades a
54
+ * reviewed decision for a silent outage. The date is required so the record is honest about WHEN, not
55
+ * so it can lapse.
56
+ */
57
+ export function AllowLiveMailboxFetch(attestation) {
58
+ if (attestation === null) {
59
+ hostLivePolicy = null;
60
+ return;
61
+ }
62
+ // `Confirmed: true` is a literal type, so TypeScript rejects `false` at a typed call site and
63
+ // nothing rejects it anywhere else. An unconfirmed attestation is a decision not yet made.
64
+ if (attestation.Confirmed !== true) {
65
+ throw new Error('AllowLiveMailboxFetch requires Confirmed === true. An attestation that does not confirm ' +
66
+ 'anything is not a decision, and live fetch stays off until one is made.');
67
+ }
68
+ if (!attestation.ConfirmedBy?.trim()) {
69
+ throw new Error('AllowLiveMailboxFetch requires ConfirmedBy — who made this decision.');
70
+ }
71
+ // WHEN, and a real date. The whole point of the record is that someone can later ask when this was
72
+ // agreed; an Invalid Date answers that question with silence.
73
+ const confirmedAt = attestation.ConfirmedAt;
74
+ if (!(confirmedAt instanceof Date) || Number.isNaN(confirmedAt.getTime())) {
75
+ throw new Error('AllowLiveMailboxFetch requires ConfirmedAt — a valid Date saying when this was decided. ' +
76
+ 'Reading the mail of an entire organisation on an undated say-so is not auditable.');
77
+ }
78
+ if (attestation.Scope === 'RestrictedToGroup') {
79
+ if (!attestation.ScopedToGroup?.trim()) {
80
+ throw new Error('A RestrictedToGroup attestation requires ScopedToGroup — the mail-enabled security ' +
81
+ 'group the Exchange assignment binds the app registration to. Run ' +
82
+ 'Get-ManagementRoleAssignment (or Get-ApplicationAccessPolicy on older tenants) to find it.');
83
+ }
84
+ }
85
+ else {
86
+ if (!attestation.AcceptedRisk?.trim()) {
87
+ throw new Error('A TenantWideAccepted attestation requires AcceptedRisk — a sentence saying what is ' +
88
+ 'being accepted. Accepting that this app can read every mailbox in the tenant is a ' +
89
+ 'legitimate decision; recording it as a bare flag is not.');
90
+ }
91
+ }
92
+ hostLivePolicy = attestation;
93
+ }
94
+ /** The recorded attestation, or null when this host has not opted in. */
95
+ export function HostLiveMailboxPolicy() {
96
+ return hostLivePolicy;
97
+ }
98
+ /** Whether this host has attested that its app registration is scoped. */
99
+ export function HostAllowsLiveMailboxFetch() {
100
+ return hostLivePolicy !== null;
101
+ }
30
102
  //# sourceMappingURL=MessageTransport.js.map
@@ -1 +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"}
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;AAgED,IAAI,cAAc,GAAwC,IAAI,CAAC;AAE/D;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,qBAAqB,CAAC,WAAgD;IAClF,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACvB,cAAc,GAAG,IAAI,CAAC;QACtB,OAAO;IACX,CAAC;IACD,8FAA8F;IAC9F,2FAA2F;IAC3F,IAAI,WAAW,CAAC,SAAS,KAAK,IAAI,EAAE,CAAC;QACjC,MAAM,IAAI,KAAK,CACX,0FAA0F;YACtF,yEAAyE,CAChF,CAAC;IACN,CAAC;IACD,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,IAAI,EAAE,EAAE,CAAC;QACnC,MAAM,IAAI,KAAK,CAAC,sEAAsE,CAAC,CAAC;IAC5F,CAAC;IACD,mGAAmG;IACnG,8DAA8D;IAC9D,MAAM,WAAW,GAAG,WAAW,CAAC,WAAW,CAAC;IAC5C,IAAI,CAAC,CAAC,WAAW,YAAY,IAAI,CAAC,IAAI,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,EAAE,CAAC;QACxE,MAAM,IAAI,KAAK,CACX,0FAA0F;YACtF,mFAAmF,CAC1F,CAAC;IACN,CAAC;IACD,IAAI,WAAW,CAAC,KAAK,KAAK,mBAAmB,EAAE,CAAC;QAC5C,IAAI,CAAC,WAAW,CAAC,aAAa,EAAE,IAAI,EAAE,EAAE,CAAC;YACrC,MAAM,IAAI,KAAK,CACX,qFAAqF;gBACjF,mEAAmE;gBACnE,4FAA4F,CACnG,CAAC;QACN,CAAC;IACL,CAAC;SAAM,CAAC;QACJ,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,IAAI,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,KAAK,CACX,qFAAqF;gBACjF,oFAAoF;gBACpF,0DAA0D,CACjE,CAAC;QACN,CAAC;IACL,CAAC;IACD,cAAc,GAAG,WAAW,CAAC;AACjC,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,qBAAqB;IACjC,OAAO,cAAc,CAAC;AAC1B,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,0BAA0B;IACtC,OAAO,cAAc,KAAK,IAAI,CAAC;AACnC,CAAC"}
@@ -1 +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"}
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;CA2DpE"}
@@ -30,20 +30,34 @@ export class RecordedMessageTransport {
30
30
  `${recording.Payloads.length - query.Limit} were not returned.`);
31
31
  }
32
32
  /**
33
- * A CAPPED REPLAY WITHHOLDS THE WATERMARK TOO, and not only for symmetry.
33
+ * A CAPPED REPLAY WITHHOLDS THE WATERMARK. ON EVERY RUN, INCLUDING THE FIRST.
34
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.
35
+ * This used to read `capped && !!query.Since`, on the reasoning that a first run has no
36
+ * watermark and so nothing to strand behind one. That reasoning is wrong, and the way it is
37
+ * wrong is worth writing down, because it is the same shape as the live-path defect this
38
+ * package was just fixed for.
40
39
  *
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.
40
+ * The loss on a first run is not about an EXISTING watermark. It is about the watermark the
41
+ * run CREATES. Nothing enforces the order of a recording, and a NEWEST-FIRST one truncated to
42
+ * Limit returns the newest N and withholds the oldest; a watermark computed from what it DID
43
+ * return is then NEWER than the payloads it did not, and those are buried behind a mark that
44
+ * claims to cover them. That is the live bug exactly, reached without a prior watermark.
45
+ *
46
+ * It matters past the fixture because the mark is DURABLE and the transport behind it is
47
+ * swappable: a host that replays a truncated recording and later points the same connection
48
+ * at the live transport inherits the claim, and the live run skips real mail.
49
+ *
50
+ * So the flag is set whenever the limit binds, exactly as the live path now does. Withholding
51
+ * costs a re-read that de-duplication absorbs. Advancing costs correctness of the watermark.
52
+ *
53
+ * WHAT THIS DOES NOT FIX, so nobody reads more into it. `slice(0, Limit)` is POSITIONAL and
54
+ * the window is applied downstream, so a truncated replay re-takes the same first N payloads
55
+ * on every run whatever `Since` says. A recording longer than Limit cannot be replayed in
56
+ * full, in any order, capped or not — measured, not assumed. This flag keeps that from
57
+ * becoming a false watermark in the database; giving the fixture transport real paging is a
58
+ * separate change, and the Issues above already name the shortfall on every run.
45
59
  */
46
- return { Payloads: payloads, Issues: issues, Capped: capped && !!query.Since };
60
+ return { Payloads: payloads, Issues: issues, Capped: capped };
47
61
  }
48
62
  }
49
63
  //# sourceMappingURL=RecordedMessageTransport.js.map
@@ -1 +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"}
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;;;;;;;;;;;;;;;;;;;;;;;;;;;WA2BG;QACH,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAClE,CAAC;CACJ"}
package/dist/stages.d.ts CHANGED
@@ -44,6 +44,17 @@ export interface RuleRow {
44
44
  DateTo: Date | string | null;
45
45
  ParticipantScope: ParticipantScope | null;
46
46
  ActivitySyncRuleSetID: string | null;
47
+ /**
48
+ * `1 = also pull attachments into ActivityFile rows` — the column's own description.
49
+ *
50
+ * On the RULE rather than the connection because it is a per-decision choice: a rule that files
51
+ * customer threads may well want the contract attached, while one filing internal chatter does
52
+ * not. It is read at WRITE time from the rule that decided, not at fetch time, because rules run
53
+ * after the fetch.
54
+ */
55
+ IncludeAttachments: boolean;
56
+ /** Attachments larger than this are skipped and REPORTED. Null means no cap. */
57
+ MaxAttachmentBytes: number | null;
47
58
  }
48
59
  export interface KnownAddressHit {
49
60
  Address: string;
@@ -1 +1 @@
1
- {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAA2D,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,KAAK,EACR,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;OASG;IACH,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,aAAa,CAAC,EAC5E,UAAU,EAAE,IAAI,GACjB,OAAO,CAOT;AAED,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IACtD,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;CACxC;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACpE,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAChD;AAmBD,uEAAuE;AACvE,qBAAa,cAAe,YAAW,mBAAmB;IACtD,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,iBAAiB,SAAS;IAE7B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAyB5G;AAED,6CAA6C;AAC7C,qBAAa,UAAW,YAAW,mBAAmB;IAClD,SAAgB,IAAI,WAAW;IAC/B,SAAgB,iBAAiB,SAAS;IAE7B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA0B5G;AAED;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAC7D,SAAgB,IAAI,sBAAsB;IAC1C,SAAgB,iBAAiB,SAAS;IAE7B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAmB5G;AAED,wBAAgB,0BAA0B,IAAI,mBAAmB,EAAE,CAElE"}
1
+ {"version":3,"file":"stages.d.ts","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAA2D,KAAK,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACnH,OAAO,KAAK,EACR,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACvB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,WAAW,YAAY;IACzB,EAAE,EAAE,MAAM,CAAC;IACX,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;OAGG;IACH,SAAS,EAAE,OAAO,CAAC;IACnB;;;;;;;;;OASG;IACH,aAAa,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IACpC,WAAW,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;CACrC;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAC9B,SAAS,EAAE,IAAI,CAAC,YAAY,EAAE,WAAW,GAAG,eAAe,GAAG,aAAa,CAAC,EAC5E,UAAU,EAAE,IAAI,GACjB,OAAO,CAOT;AAED,MAAM,WAAW,OAAO;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,SAAS,EAAE,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,IAAI,CAAC;IACtD,QAAQ,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAC/B,MAAM,EAAE,IAAI,GAAG,MAAM,GAAG,IAAI,CAAC;IAC7B,gBAAgB,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC1C,qBAAqB,EAAE,MAAM,GAAG,IAAI,CAAC;IACrC;;;;;;;OAOG;IACH,kBAAkB,EAAE,OAAO,CAAC;IAC5B,gFAAgF;IAChF,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;CACrC;AAED,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,0BAA2B,SAAQ,oBAAoB;IACpE,UAAU,EAAE,YAAY,EAAE,CAAC;IAC3B,KAAK,EAAE,OAAO,EAAE,CAAC;IACjB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;CAChD;AAmBD,uEAAuE;AACvE,qBAAa,cAAe,YAAW,mBAAmB;IACtD,SAAgB,IAAI,gBAAgB;IACpC,SAAgB,iBAAiB,SAAS;IAE7B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAyB5G;AAED,6CAA6C;AAC7C,qBAAa,UAAW,YAAW,mBAAmB;IAClD,SAAgB,IAAI,WAAW;IAC/B,SAAgB,iBAAiB,SAAS;IAE7B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CA0B5G;AAED;;;GAGG;AACH,qBAAa,qBAAsB,YAAW,mBAAmB;IAC7D,SAAgB,IAAI,sBAAsB;IAC1C,SAAgB,iBAAiB,SAAS;IAE7B,QAAQ,CAAC,IAAI,EAAE,cAAc,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,oBAAoB,CAAC;CAmB5G;AAED,wBAAgB,0BAA0B,IAAI,mBAAmB,EAAE,CAElE"}
@@ -1 +1 @@
1
- {"version":3,"file":"stages.js","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"stages.js","sourceRoot":"","sources":["../src/stages.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -65,6 +65,20 @@ export interface NormalizedItem {
65
65
  EndedAt: Date | null;
66
66
  /** Set for calendar items. */
67
67
  Location: string | null;
68
+ /**
69
+ * Whether the source says this item carries attachments.
70
+ *
71
+ * A FLAG, NOT THE ATTACHMENTS. Graph does not include attachment content in a message payload,
72
+ * and listing them costs a call PER MESSAGE — which would be paid for every item fetched, including
73
+ * the ones the rules go on to exclude. Rules are evaluated after fetch, so the cheap boolean rides
74
+ * along here and the expensive fetch happens later, only for items that were actually included and
75
+ * only when the deciding rule asked for attachments.
76
+ *
77
+ * False when the source does not say. Absent information is not the same as "no attachments", but
78
+ * a provider that cannot tell us has given us nothing to act on, and guessing would mean a call per
79
+ * message on the chance there is something there.
80
+ */
81
+ HasAttachments: boolean;
68
82
  Direction: ActivityDirection;
69
83
  Participants: ItemParticipant[];
70
84
  /**
@@ -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;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"}
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;;;;;;;;;;;;OAYG;IACH,cAAc,EAAE,OAAO,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;AAsH3G;;;;;;;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;AAoI3G;;;;;;;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.41.0",
4
+ "version": "5.43.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",
@@ -18,13 +18,13 @@
18
18
  "vitest": "^3.2.4"
19
19
  },
20
20
  "dependencies": {
21
- "@mj-biz-apps/common-entities": "5.41.0"
21
+ "@mj-biz-apps/common-entities": "5.43.0"
22
22
  },
23
23
  "peerDependencies": {
24
- "@memberjunction/communication-types": "^6.1.0-edge.5",
25
- "@memberjunction/core": "^6.1.0-edge.5",
26
- "@memberjunction/credentials": "^6.1.0-edge.5",
27
- "@memberjunction/global": "^6.1.0-edge.5"
24
+ "@memberjunction/communication-types": "^6.1.0-edge.6",
25
+ "@memberjunction/core": "^6.1.0-edge.6",
26
+ "@memberjunction/credentials": "^6.1.0-edge.6",
27
+ "@memberjunction/global": "^6.1.0-edge.6"
28
28
  },
29
29
  "repository": {
30
30
  "type": "git",