@memberjunction/core 6.1.3 → 6.1.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,55 @@
1
+ /**
2
+ * @fileoverview Resolving the row behind a `remote-invalidate` event.
3
+ *
4
+ * Cache-invalidation events reach every connected client on one unfiltered subscription, so the
5
+ * server only attaches the row (`recordData`) for entities a deployment has explicitly opted in
6
+ * — otherwise every session would receive rows it has no right to read. See
7
+ * `cacheSettings.recordDataBroadcastEntities` in `@memberjunction/server`.
8
+ *
9
+ * That leaves consumers needing a row they no longer receive. This module is the one way to get
10
+ * it: re-read that single record through the provider, as the signed-in user, so the server's
11
+ * access control decides what comes back. A user who may not read the row gets `null`, which is
12
+ * the correct answer rather than an error.
13
+ */
14
+ import type { BaseEntityEvent } from './baseEntity.js';
15
+ import { CompositeKey } from './compositeKey.js';
16
+ import type { IMetadataProvider } from './interfaces.js';
17
+ import type { UserInfo } from './securityInfo.js';
18
+ /**
19
+ * The row behind an entity event, however it has to be obtained.
20
+ *
21
+ * Three sources, in order:
22
+ * 1. **Local event** — `event.baseEntity` is the live instance; its fields are already in hand.
23
+ * 2. **Remote event carrying `recordData`** — the entity is on the broadcast allowlist; parse it.
24
+ * 3. **Remote event without `recordData`** — re-read the one record by primary key through
25
+ * `provider`, as `contextUser`. This is the access-controlled path, and it is the only one
26
+ * that can supply fields the primary key does not carry (a detail's `ConversationID`, say).
27
+ *
28
+ * @returns the row's fields, or `null` when there is no key to read by, the read is refused, or
29
+ * the record no longer exists. Callers should treat `null` as "not mine / nothing to do"
30
+ * rather than as a failure — a refused read is the expected outcome for a session that
31
+ * may not see the record.
32
+ */
33
+ export declare function ResolveEntityEventRow(event: BaseEntityEvent, provider?: IMetadataProvider, contextUser?: UserInfo): Promise<Record<string, unknown> | null>;
34
+ /**
35
+ * Can this event's row be obtained WITHOUT a provider round-trip?
36
+ *
37
+ * True for a local event — the row IS the live entity — and for a remote event whose payload
38
+ * already carries `recordData`, because the entity is on the server's broadcast allowlist.
39
+ *
40
+ * Callers that skip hydration to avoid a read must ask this FIRST. A free row is never worth
41
+ * skipping, and skipping one is indistinguishable, downstream, from a row that could not be read:
42
+ * the handler receives `null` and reads every field as `undefined`. Whether a handler *would* use
43
+ * the row and whether obtaining it *costs* anything are two different questions, and only the
44
+ * second justifies skipping.
45
+ */
46
+ export declare function EntityEventRowIsFree(event: BaseEntityEvent): boolean;
47
+ /**
48
+ * The identity of the record an event refers to, without needing the row.
49
+ *
50
+ * Available whatever the broadcast allowlist says — the primary key is never withheld, because it
51
+ * discloses nothing a client cannot already derive and it is what every consumer needs to know
52
+ * *which* record changed. Prefer this over reading an id out of the row.
53
+ */
54
+ export declare function ResolveEntityEventKey(event: BaseEntityEvent): CompositeKey | null;
55
+ //# sourceMappingURL=remoteEventRow.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteEventRow.d.ts","sourceRoot":"","sources":["../../src/generic/remoteEventRow.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,YAAY,EAAgB,MAAM,gBAAgB,CAAC;AAC5D,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAU/C;;;;;;;;;;;;;;GAcG;AACH,wBAAsB,qBAAqB,CACvC,KAAK,EAAE,eAAe,EACtB,QAAQ,CAAC,EAAE,iBAAiB,EAC5B,WAAW,CAAC,EAAE,QAAQ,GACvB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC,CAgBzC;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,eAAe,GAAG,OAAO,CAMpE;AAED;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,eAAe,GAAG,YAAY,GAAG,IAAI,CAMjF"}
@@ -0,0 +1,110 @@
1
+ import { CompositeKey } from './compositeKey.js';
2
+ import { LogError } from './logging.js';
3
+ /**
4
+ * The row behind an entity event, however it has to be obtained.
5
+ *
6
+ * Three sources, in order:
7
+ * 1. **Local event** — `event.baseEntity` is the live instance; its fields are already in hand.
8
+ * 2. **Remote event carrying `recordData`** — the entity is on the broadcast allowlist; parse it.
9
+ * 3. **Remote event without `recordData`** — re-read the one record by primary key through
10
+ * `provider`, as `contextUser`. This is the access-controlled path, and it is the only one
11
+ * that can supply fields the primary key does not carry (a detail's `ConversationID`, say).
12
+ *
13
+ * @returns the row's fields, or `null` when there is no key to read by, the read is refused, or
14
+ * the record no longer exists. Callers should treat `null` as "not mine / nothing to do"
15
+ * rather than as a failure — a refused read is the expected outcome for a session that
16
+ * may not see the record.
17
+ */
18
+ export async function ResolveEntityEventRow(event, provider, contextUser) {
19
+ if (event.baseEntity) {
20
+ return event.baseEntity.GetAll();
21
+ }
22
+ const payload = event.payload;
23
+ if (payload?.recordData) {
24
+ try {
25
+ return JSON.parse(payload.recordData);
26
+ }
27
+ catch {
28
+ // Fall through to the re-read: a malformed payload is not a reason to give up on a
29
+ // row we can still fetch by key.
30
+ }
31
+ }
32
+ return await reReadByPrimaryKey(event, payload, provider, contextUser);
33
+ }
34
+ /**
35
+ * Can this event's row be obtained WITHOUT a provider round-trip?
36
+ *
37
+ * True for a local event — the row IS the live entity — and for a remote event whose payload
38
+ * already carries `recordData`, because the entity is on the server's broadcast allowlist.
39
+ *
40
+ * Callers that skip hydration to avoid a read must ask this FIRST. A free row is never worth
41
+ * skipping, and skipping one is indistinguishable, downstream, from a row that could not be read:
42
+ * the handler receives `null` and reads every field as `undefined`. Whether a handler *would* use
43
+ * the row and whether obtaining it *costs* anything are two different questions, and only the
44
+ * second justifies skipping.
45
+ */
46
+ export function EntityEventRowIsFree(event) {
47
+ if (event.baseEntity) {
48
+ return true;
49
+ }
50
+ const payload = event.payload;
51
+ return !!payload?.recordData;
52
+ }
53
+ /**
54
+ * The identity of the record an event refers to, without needing the row.
55
+ *
56
+ * Available whatever the broadcast allowlist says — the primary key is never withheld, because it
57
+ * discloses nothing a client cannot already derive and it is what every consumer needs to know
58
+ * *which* record changed. Prefer this over reading an id out of the row.
59
+ */
60
+ export function ResolveEntityEventKey(event) {
61
+ if (event.baseEntity) {
62
+ return event.baseEntity.PrimaryKey ?? null;
63
+ }
64
+ const payload = event.payload;
65
+ return parseKey(payload?.primaryKeyValues);
66
+ }
67
+ /** Re-read one record by key. Never throws — a consumer's event handler must not die on it. */
68
+ async function reReadByPrimaryKey(event, payload, provider, contextUser) {
69
+ const entityName = event.entityName;
70
+ // `event.provider` is populated for remote-invalidate specifically because `baseEntity` is
71
+ // null there and listeners have nothing else to read through.
72
+ const p = provider ?? event.provider;
73
+ const key = parseKey(payload?.primaryKeyValues);
74
+ if (!entityName || !p || !key) {
75
+ return null;
76
+ }
77
+ try {
78
+ const record = await p.GetEntityObject(entityName, key, contextUser);
79
+ // A refused read and a deleted record both land here, and both mean the same thing to a
80
+ // caller: there is no row to apply.
81
+ return record?.IsSaved ? record.GetAll() : null;
82
+ }
83
+ catch (e) {
84
+ LogError(`ResolveEntityEventRow: could not re-read ${entityName} by key: ${e instanceof Error ? e.message : String(e)}`);
85
+ return null;
86
+ }
87
+ }
88
+ /**
89
+ * Rebuild the key from the published `primaryKeyValues`.
90
+ *
91
+ * `FromKeyValuePairs` rather than `FromID`: the entity here is whatever the event names, so a
92
+ * composite key has to survive. See `.claude/rules/data-access.md` on not assuming a single
93
+ * `ID` column for an arbitrary entity.
94
+ */
95
+ function parseKey(primaryKeyValues) {
96
+ if (!primaryKeyValues) {
97
+ return null;
98
+ }
99
+ try {
100
+ const pairs = JSON.parse(primaryKeyValues);
101
+ if (!Array.isArray(pairs) || pairs.length === 0) {
102
+ return null;
103
+ }
104
+ return CompositeKey.FromKeyValuePairs(pairs);
105
+ }
106
+ catch {
107
+ return null;
108
+ }
109
+ }
110
+ //# sourceMappingURL=remoteEventRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"remoteEventRow.js","sourceRoot":"","sources":["../../src/generic/remoteEventRow.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -8,6 +8,7 @@ export * from "./generic/queryResultEnricher.js";
8
8
  export * from "./generic/interfaces.js";
9
9
  export * from "./generic/scoring/ReciprocalRankFusion.js";
10
10
  export * from "./generic/baseEntity.js";
11
+ export * from "./generic/remoteEventRow.js";
11
12
  export * from "./generic/entityTransactionScope.js";
12
13
  export * from "./generic/entityCompanion.js";
13
14
  export * from "./generic/entitySavePlan.js";
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AAErC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iEAAiE,CAAC;AAChF,cAAc,4DAA4D,CAAC;AAE3E,wBAAgB,WAAW,CAAC,QAAQ,KAAA,QAKnC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAKA,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AAErC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iEAAiE,CAAC;AAChF,cAAc,4DAA4D,CAAC;AAE3E,wBAAgB,WAAW,CAAC,QAAQ,KAAA,QAKnC"}
package/dist/index.js CHANGED
@@ -12,6 +12,7 @@ export * from "./generic/queryResultEnricher.js";
12
12
  export * from "./generic/interfaces.js";
13
13
  export * from "./generic/scoring/ReciprocalRankFusion.js";
14
14
  export * from "./generic/baseEntity.js";
15
+ export * from "./generic/remoteEventRow.js";
15
16
  export * from "./generic/entityTransactionScope.js";
16
17
  export * from "./generic/entityCompanion.js";
17
18
  export * from "./generic/entitySavePlan.js";
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AAErC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iEAAiE,CAAC;AAChF,cAAc,4DAA4D,CAAC;AAE3E,MAAM,UAAU,WAAW,CAAC,QAAQ;IAChC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,yDAAyD;IACvF,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,iBAAiB,CAAC;AAE1C,cAAc,oBAAoB,CAAC;AACnC,cAAc,oBAAoB,CAAC;AACnC,cAAc,sBAAsB,CAAC;AACrC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,iBAAiB,CAAC;AAChC,cAAc,oBAAoB,CAAC;AACnC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,sBAAsB,CAAC;AACrC,cAAc,wCAAwC,CAAC;AACvD,cAAc,sBAAsB,CAAC;AACrC,cAAc,0BAA0B,CAAC;AACzC,cAAc,kCAAkC,CAAC;AACjD,cAAc,2BAA2B,CAAC;AAC1C,cAAc,0BAA0B,CAAC;AACzC,cAAc,mCAAmC,CAAC;AAClD,cAAc,0BAA0B,CAAC;AACzC,cAAc,oCAAoC,CAAC;AACnD,cAAc,oCAAoC,CAAC;AACnD,cAAc,+BAA+B,CAAC;AAC9C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,wBAAwB,CAAC;AACvC,cAAc,qCAAqC,CAAC;AACpD,cAAc,kCAAkC,CAAC;AACjD,cAAc,mCAAmC,CAAC;AAClD,cAAc,sBAAsB,CAAC;AACrC,cAAc,qBAAqB,CAAC;AACpC,cAAc,6BAA6B,CAAC;AAC5C,cAAc,+BAA+B,CAAC;AAC9C,cAAc,mCAAmC,CAAC;AAClD,cAAc,wCAAwC,CAAC;AACvD,cAAc,wBAAwB,CAAC;AACvC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gBAAgB,CAAC;AAC/B,cAAc,mBAAmB,CAAC;AAClC,cAAc,qBAAqB,CAAC;AACpC,cAAc,+BAA+B,CAAC;AAC9C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,2BAA2B,CAAC;AAC1C,cAAc,4CAA4C,CAAC;AAC3D,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,sBAAsB,CAAC;AAErC,cAAc,kCAAkC,CAAC;AACjD,cAAc,wBAAwB,CAAC;AACvC,cAAc,yBAAyB,CAAC;AACxC,cAAc,mBAAmB,CAAC;AAClC,cAAc,wBAAwB,CAAC;AACvC,cAAc,2BAA2B,CAAC;AAC1C,cAAc,qBAAqB,CAAC;AACpC,cAAc,4BAA4B,CAAC;AAE3C,cAAc,uBAAuB,CAAC;AACtC,cAAc,4BAA4B,CAAC;AAC3C,cAAc,gCAAgC,CAAC;AAC/C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,6BAA6B,CAAC;AAC5C,cAAc,8BAA8B,CAAC;AAC7C,cAAc,4BAA4B,CAAC;AAC3C,cAAc,wCAAwC,CAAC;AACvD,cAAc,qBAAqB,CAAC;AACpC,cAAc,8BAA8B,CAAC;AAC7C,cAAc,sBAAsB,CAAC;AACrC,cAAc,yBAAyB,CAAC;AACxC,cAAc,gCAAgC,CAAC;AAC/C,cAAc,iCAAiC,CAAC;AAChD,cAAc,iEAAiE,CAAC;AAChF,cAAc,4DAA4D,CAAC;AAE3E,MAAM,UAAU,WAAW,CAAC,QAAQ;IAChC,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC,CAAC,yDAAyD;IACvF,UAAU,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC/B,OAAO,CAAC,QAAQ,GAAG,QAAQ,CAAC;IAC5B,QAAQ,CAAC,QAAQ,GAAG,QAAQ,CAAC;AACjC,CAAC"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/core",
3
3
  "type": "module",
4
- "version": "6.1.3",
4
+ "version": "6.1.4",
5
5
  "description": "MemberJunction: Core Library including Metadata, Application, Entity Retrieval and Manipulation, and Utilities",
6
6
  "main": "dist/index.js",
7
7
  "types": "dist/index.d.ts",
@@ -17,8 +17,8 @@
17
17
  "vitest": "^3.1.1"
18
18
  },
19
19
  "dependencies": {
20
- "@memberjunction/global": "6.1.3",
21
- "@memberjunction/sql-dialect": "6.1.3",
20
+ "@memberjunction/global": "6.1.4",
21
+ "@memberjunction/sql-dialect": "6.1.4",
22
22
  "rxjs": "^7.8.2",
23
23
  "zod": "^3.25.0",
24
24
  "debug": "^4.4.3"