@memberjunction/core 5.50.0 → 6.1.0-edge.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.
@@ -42,6 +42,54 @@ export interface MagicLinkScope {
42
42
  /** ResourceType name/id of the shared resource. */
43
43
  ResourceType?: string;
44
44
  }
45
+ /**
46
+ * Per-request acting context for an API-key session, carried on {@link UserInfo}.
47
+ * Consumed by API-key-scoped RLS filters via the `{{Acting*}}` tokens in
48
+ * {@link RowLevelSecurityFilterInfo.MarkupFilterText}.
49
+ *
50
+ * TRUST BOUNDARY: these values MUST be derived server-side from an authenticated
51
+ * identity. The engine binds what it is given and cannot validate provenance —
52
+ * never populate from a client-supplied header, argument, or GraphQL variable,
53
+ * and never expose via a resolver. A client-settable acting context is a total
54
+ * bypass of API-key row filtering.
55
+ *
56
+ * Cardinality is a one-way door, decided per token at registration: the three
57
+ * scalar tokens are scalar forever (moving to a set later changes the token's
58
+ * shape and breaks every filter authored against it), and ActingCompanyIDs is
59
+ * list-capable from day one for exactly that reason.
60
+ */
61
+ export interface APIKeyActingContext {
62
+ /** Organization / tenant the caller is acting on behalf of (GUID, scalar forever). */
63
+ ActingOrganizationID?: string;
64
+ /** Person / contact the caller is acting on behalf of (GUID, scalar forever). */
65
+ ActingPersonID?: string;
66
+ /** Opaque per-integration scope value (bounded identifier, scalar forever). */
67
+ ActingScopeID?: string;
68
+ /**
69
+ * Companies the caller is acting for — LIST-capable. Renders inside
70
+ * `Col IN ({{ActingCompanyIDs}})` as a sorted, per-element-validated,
71
+ * quoted and escaped list; an empty or absent set resolves the whole
72
+ * filter to `(1=0)` (match nothing), same as any unresolved token.
73
+ */
74
+ ActingCompanyIDs?: string[];
75
+ }
76
+ /**
77
+ * One API-key row-filter binding carried on {@link UserInfo}: for the named
78
+ * entity and permission type, the referenced Row Level Security Filter applies
79
+ * IN ADDITION TO (AND-composed with) role RLS — and independently of the
80
+ * role-RLS exemption, because a key ceiling exists precisely to bind
81
+ * principals whose roles are unrestricted. Resolved server-side per request
82
+ * from the validated API key's scope rules; plain data so MJCore can consume
83
+ * it without depending on the APIKeys packages.
84
+ */
85
+ export interface APIKeyRowFilterBinding {
86
+ /** ID of the entity the filtered scope rule targets (exact entity — patterns are rejected at rule save). */
87
+ EntityID: string;
88
+ /** Which operation the binding constrains, resolved from the rule's scope path at stamp time. */
89
+ PermissionType: 'Read' | 'Create' | 'Update' | 'Delete';
90
+ /** FK into the RowLevelSecurityFilter catalog (same catalog role RLS uses). */
91
+ FilterID: string;
92
+ }
45
93
  /**
46
94
  * Returning-visitor context carried on {@link UserInfo} for a public web-widget guest session,
47
95
  * sourced from the verified session token's claims. Lets a server-created conversation (the voice
@@ -180,6 +228,31 @@ export declare class UserInfo extends BaseInfo {
180
228
  */
181
229
  get MagicLinkScope(): MagicLinkScope | undefined;
182
230
  set MagicLinkScope(value: MagicLinkScope | undefined);
231
+ private _APIKeyActingContext?;
232
+ /**
233
+ * Per-request acting context for an API-key session. Set server-side in the
234
+ * API-key auth path from an authenticated identity, ON A CLONED UserInfo
235
+ * (the resolved userRecord may be the shared UserCache instance — stamping
236
+ * it in place leaks one session's scope to every concurrent session of the
237
+ * same user). Consumed by API-key row filters via the {{Acting*}} tokens.
238
+ * Same getter/setter (non-enumerable accessor) rationale as TenantContext —
239
+ * not a DB/GraphQL field, and it must NEVER be exposed via a resolver.
240
+ */
241
+ get APIKeyActingContext(): APIKeyActingContext | undefined;
242
+ set APIKeyActingContext(value: APIKeyActingContext | undefined);
243
+ private _APIKeyRowFilters?;
244
+ /**
245
+ * Row-filter bindings for the API key this session authenticated with,
246
+ * resolved per request from the key's scope rules and stamped on the CLONED
247
+ * per-request UserInfo. Consumed by
248
+ * {@link EntityInfo.GetEffectiveRowFilterWhereClause}, which AND-composes
249
+ * each matching binding's filter with role RLS — outside the role-RLS
250
+ * exemption. Plain data on purpose: MJCore cannot depend on the APIKeys
251
+ * packages, so the bridge is this carrier. Never a DB/GraphQL field; never
252
+ * exposed to or settable by a client.
253
+ */
254
+ get APIKeyRowFilters(): APIKeyRowFilterBinding[] | undefined;
255
+ set APIKeyRowFilters(value: APIKeyRowFilterBinding[] | undefined);
183
256
  private _ReturningVisitorContext?;
184
257
  /**
185
258
  * Returning-visitor context for a public web-widget guest session. Set at request time from the
@@ -342,7 +415,32 @@ export declare class RowLevelSecurityFilterInfo extends BaseInfo {
342
415
  * @param {UserInfo} user - The user whose properties will be substituted into the filter text
343
416
  * @returns {string} The filter text with all user tokens replaced with actual values
344
417
  */
345
- MarkupFilterText(user: UserInfo): string;
418
+ MarkupFilterText(user: UserInfo, options?: MarkupFilterOptions): string;
419
+ /**
420
+ * Resolves the `{{Acting*}}` token family from {@link UserInfo.APIKeyActingContext}.
421
+ * Scalars substitute escaped; the list token renders as a canonical (sorted),
422
+ * per-element-escaped, quoted list for use inside `IN (...)`. Sorting is not
423
+ * cosmetic: the resolved clause participates in the RunView cache fingerprint,
424
+ * so the same set must always produce the same clause bytes (INV-2). An absent
425
+ * context or empty list leaves tokens unresolved, which the caller's
426
+ * unresolved-token handling turns into a match-nothing filter for key filters.
427
+ */
428
+ private resolveActingTokens;
429
+ }
430
+ /**
431
+ * Options for {@link RowLevelSecurityFilterInfo.MarkupFilterText}.
432
+ */
433
+ export interface MarkupFilterOptions {
434
+ /**
435
+ * How an unresolved token is handled after markup:
436
+ * - `'legacy'` (default): log the error and return the text with the token in
437
+ * place — the resulting SQL fails to match/parse, which is fail-closed but
438
+ * produces an unexplainable result. Role-RLS behavior, unchanged.
439
+ * - `'match-nothing'`: the entire filter resolves to `(1=0)` — required for
440
+ * API-key row filters, where an unresolved token must deny regardless of the
441
+ * expression's operator shapes.
442
+ */
443
+ unresolvedBehavior?: 'legacy' | 'match-nothing';
346
444
  }
347
445
  /**
348
446
  * Stores the fundamental permissions and access rights that can be granted to users and roles throughout the system.
@@ -1 +1 @@
1
- {"version":3,"file":"securityInfo.d.ts","sourceRoot":"","sources":["../../src/generic/securityInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"securityInfo.d.ts","sourceRoot":"","sources":["../../src/generic/securityInfo.ts"],"names":[],"mappings":"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"}
@@ -44,6 +44,37 @@ export class UserInfo extends BaseInfo {
44
44
  set MagicLinkScope(value) {
45
45
  this._MagicLinkScope = value;
46
46
  }
47
+ /**
48
+ * Per-request acting context for an API-key session. Set server-side in the
49
+ * API-key auth path from an authenticated identity, ON A CLONED UserInfo
50
+ * (the resolved userRecord may be the shared UserCache instance — stamping
51
+ * it in place leaks one session's scope to every concurrent session of the
52
+ * same user). Consumed by API-key row filters via the {{Acting*}} tokens.
53
+ * Same getter/setter (non-enumerable accessor) rationale as TenantContext —
54
+ * not a DB/GraphQL field, and it must NEVER be exposed via a resolver.
55
+ */
56
+ get APIKeyActingContext() {
57
+ return this._APIKeyActingContext;
58
+ }
59
+ set APIKeyActingContext(value) {
60
+ this._APIKeyActingContext = value;
61
+ }
62
+ /**
63
+ * Row-filter bindings for the API key this session authenticated with,
64
+ * resolved per request from the key's scope rules and stamped on the CLONED
65
+ * per-request UserInfo. Consumed by
66
+ * {@link EntityInfo.GetEffectiveRowFilterWhereClause}, which AND-composes
67
+ * each matching binding's filter with role RLS — outside the role-RLS
68
+ * exemption. Plain data on purpose: MJCore cannot depend on the APIKeys
69
+ * packages, so the bridge is this carrier. Never a DB/GraphQL field; never
70
+ * exposed to or settable by a client.
71
+ */
72
+ get APIKeyRowFilters() {
73
+ return this._APIKeyRowFilters;
74
+ }
75
+ set APIKeyRowFilters(value) {
76
+ this._APIKeyRowFilters = value;
77
+ }
47
78
  /**
48
79
  * Returning-visitor context for a public web-widget guest session. Set at request time from the
49
80
  * verified session token's claims (the widget mint embeds the resolved VisitorKey / prior
@@ -182,6 +213,8 @@ export class UserInfo extends BaseInfo {
182
213
  this.EmployeeSupervisorEmail = null;
183
214
  this._TenantContext = undefined;
184
215
  this._MagicLinkScope = undefined;
216
+ this._APIKeyActingContext = undefined;
217
+ this._APIKeyRowFilters = undefined;
185
218
  this._ReturningVisitorContext = undefined;
186
219
  this._WidgetGuestContext = undefined;
187
220
  this._IsMagicLinkAnonymous = false;
@@ -327,30 +360,79 @@ export class RowLevelSecurityFilterInfo extends BaseInfo {
327
360
  * @param {UserInfo} user - The user whose properties will be substituted into the filter text
328
361
  * @returns {string} The filter text with all user tokens replaced with actual values
329
362
  */
330
- MarkupFilterText(user) {
363
+ MarkupFilterText(user, options) {
331
364
  let ret = this.FilterText;
332
365
  if (user) {
333
366
  const keys = Object.keys(user);
334
367
  for (let i = 0; i < keys.length; i++) {
335
368
  const key = keys[i];
336
369
  const val = user[key];
337
- if (val !== null && typeof val !== 'object') {
338
- ret = ret.replace(new RegExp(`{{User${key}}}`, 'g'), String(val));
370
+ // `val != null` deliberately excludes BOTH null and undefined. The old
371
+ // `val !== null` guard let `undefined` through, substituting the literal
372
+ // string "undefined" — which made negation-shaped filters
373
+ // (Col <> '{{UserX}}') match every row. Undefined is unresolved, period.
374
+ if (val != null && typeof val !== 'object') {
375
+ // Escape embedded quotes in the substituted value: a user-sourced value
376
+ // containing an apostrophe must not break (or rewrite) the predicate —
377
+ // the same defect class as the tenant-header injection, in the engine
378
+ // every RLS filter depends on.
379
+ ret = ret.replace(new RegExp(`{{User${key}}}`, 'g'), String(val).replace(/'/g, "''"));
339
380
  }
340
381
  }
341
382
  // Per-session magic-link resource scope. Fail-closed: an absent scope resolves
342
383
  // to '' so a resource-pinned predicate (e.g. ID = '{{ScopeResourceID}}') matches
343
384
  // NO rows rather than leaking — a session without the scope sees nothing.
344
385
  const scope = user.MagicLinkScope;
345
- ret = ret.replace(/\{\{ScopeResourceID\}\}/g, scope?.ResourceID ?? '');
346
- ret = ret.replace(/\{\{ScopeResourceType\}\}/g, scope?.ResourceType ?? '');
386
+ ret = ret.replace(/\{\{ScopeResourceID\}\}/g, (scope?.ResourceID ?? '').replace(/'/g, "''"));
387
+ ret = ret.replace(/\{\{ScopeResourceType\}\}/g, (scope?.ResourceType ?? '').replace(/'/g, "''"));
388
+ ret = this.resolveActingTokens(ret, user);
347
389
  }
348
- const unresolvedMatch = ret.match(/\{\{User\w+\}\}/);
390
+ const unresolvedMatch = ret.match(/\{\{(?:User|Acting)\w+\}\}/);
349
391
  if (unresolvedMatch) {
392
+ if (options?.unresolvedBehavior === 'match-nothing') {
393
+ // API-key row filters fail closed AND diagnosably: '' substitution is only
394
+ // safe for equality shapes (Col <> '' or LIKE '%%' match everything), so an
395
+ // unresolved token collapses the ENTIRE filter to a predicate that matches
396
+ // nothing regardless of the expression's operators.
397
+ LogError('Row filter has unresolved token after markup — resolving filter to (1=0): ' + unresolvedMatch[0] + ' in filter: ' + this.FilterText);
398
+ return '(1=0)';
399
+ }
350
400
  LogError('RLS filter has unresolved token after markup: ' + unresolvedMatch[0] + ' in filter: ' + this.FilterText);
351
401
  }
352
402
  return ret;
353
403
  }
404
+ /**
405
+ * Resolves the `{{Acting*}}` token family from {@link UserInfo.APIKeyActingContext}.
406
+ * Scalars substitute escaped; the list token renders as a canonical (sorted),
407
+ * per-element-escaped, quoted list for use inside `IN (...)`. Sorting is not
408
+ * cosmetic: the resolved clause participates in the RunView cache fingerprint,
409
+ * so the same set must always produce the same clause bytes (INV-2). An absent
410
+ * context or empty list leaves tokens unresolved, which the caller's
411
+ * unresolved-token handling turns into a match-nothing filter for key filters.
412
+ */
413
+ resolveActingTokens(text, user) {
414
+ const acting = user.APIKeyActingContext;
415
+ let ret = text;
416
+ const scalars = [
417
+ ['ActingOrganizationID', acting?.ActingOrganizationID],
418
+ ['ActingPersonID', acting?.ActingPersonID],
419
+ ['ActingScopeID', acting?.ActingScopeID],
420
+ ];
421
+ for (const [token, value] of scalars) {
422
+ if (value != null && value.length > 0) {
423
+ ret = ret.replace(new RegExp(`\\{\\{${token}\\}\\}`, 'g'), value.replace(/'/g, "''"));
424
+ }
425
+ }
426
+ const companies = acting?.ActingCompanyIDs;
427
+ if (companies && companies.length > 0) {
428
+ const rendered = [...companies]
429
+ .sort()
430
+ .map(c => `'${c.replace(/'/g, "''")}'`)
431
+ .join(',');
432
+ ret = ret.replace(/\{\{ActingCompanyIDs\}\}/g, rendered);
433
+ }
434
+ return ret;
435
+ }
354
436
  }
355
437
  /**
356
438
  * Stores the fundamental permissions and access rights that can be granted to users and roles throughout the system.
@@ -1 +1 @@
1
- {"version":3,"file":"securityInfo.js","sourceRoot":"","sources":["../../src/generic/securityInfo.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"securityInfo.js","sourceRoot":"","sources":["../../src/generic/securityInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,kEAAkE;AAClE,mEAAmE;AACnE,iEAAiE;AACjE,6DAA6D;AAC7D,4DAA4D;AAC5D,sDAAsD;AACtD,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AAEtC,OAAO,EAAE,qBAAqB,EAAwB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AACzG,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AA8HpD;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,QAAQ;IAwGlC;;;;;;;;OAQG;IACH,IAAW,aAAa;QACpB,OAAO,IAAI,CAAC,cAAc,CAAC;IAC/B,CAAC;IACD,IAAW,aAAa,CAAC,KAAgC;QACrD,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;IAChC,CAAC;IAID;;;;;;;;OAQG;IACH,IAAW,cAAc;QACrB,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IACD,IAAW,cAAc,CAAC,KAAiC;QACvD,IAAI,CAAC,eAAe,GAAG,KAAK,CAAC;IACjC,CAAC;IAID;;;;;;;;OAQG;IACH,IAAW,mBAAmB;QAC1B,OAAO,IAAI,CAAC,oBAAoB,CAAC;IACrC,CAAC;IACD,IAAW,mBAAmB,CAAC,KAAsC;QACjE,IAAI,CAAC,oBAAoB,GAAG,KAAK,CAAC;IACtC,CAAC;IAID;;;;;;;;;OASG;IACH,IAAW,gBAAgB;QACvB,OAAO,IAAI,CAAC,iBAAiB,CAAC;IAClC,CAAC;IACD,IAAW,gBAAgB,CAAC,KAA2C;QACnE,IAAI,CAAC,iBAAiB,GAAG,KAAK,CAAC;IACnC,CAAC;IAID;;;;;;OAMG;IACH,IAAW,uBAAuB;QAC9B,OAAO,IAAI,CAAC,wBAAwB,CAAC;IACzC,CAAC;IACD,IAAW,uBAAuB,CAAC,KAA0C;QACzE,IAAI,CAAC,wBAAwB,GAAG,KAAK,CAAC;IAC1C,CAAC;IAID;;;;;OAKG;IACH,IAAW,kBAAkB;QACzB,OAAO,IAAI,CAAC,mBAAmB,CAAC;IACpC,CAAC;IACD,IAAW,kBAAkB,CAAC,KAAqC;QAC/D,IAAI,CAAC,mBAAmB,GAAG,KAAK,CAAC;IACrC,CAAC;IAID;;;;;;;OAOG;IACH,IAAW,oBAAoB;QAC3B,OAAO,IAAI,CAAC,qBAAqB,CAAC;IACtC,CAAC;IACD,IAAW,oBAAoB,CAAC,KAAc;QAC1C,IAAI,CAAC,qBAAqB,GAAG,KAAK,CAAC;IACvC,CAAC;IAGD;;;OAGG;IACH,IAAW,SAAS;QAChB,OAAO,IAAI,CAAC,UAAU,CAAC;IAC3B,CAAC;IAED;;;;;;OAMG;IACH,YAAa,KAAwB,IAAI,EAAE,WAAgB,IAAI;QAC3D,KAAK,EAAE,CAAC;QA/OZ;;WAEG;QACH,OAAE,GAAW,IAAI,CAAC;QAElB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,cAAS,GAAW,IAAI,CAAA;QAExB;;WAEG;QACH,aAAQ,GAAW,IAAI,CAAA;QAEvB;;WAEG;QACH,UAAK,GAAW,IAAI,CAAA;QAEpB;;WAEG;QACH,UAAK,GAAW,IAAI,CAAA;QAEpB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,aAAQ,GAAY,IAAI,CAAA;QAExB;;WAEG;QACH,qBAAgB,GAAkC,IAAI,CAAA;QAEtD;;WAEG;QACH,eAAU,GAAW,IAAI,CAAA;QAEzB;;WAEG;QACH,mBAAc,GAAW,IAAI,CAAA;QAE7B;;WAEG;QACH,yBAAoB,GAAW,IAAI,CAAA;QAEnC;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B,iDAAiD;QACjD;;WAEG;QACH,cAAS,GAAW,IAAI,CAAA;QAExB;;WAEG;QACH,sBAAiB,GAAW,IAAI,CAAA;QAEhC;;WAEG;QACH,kBAAa,GAAW,IAAI,CAAA;QAE5B;;WAEG;QACH,kBAAa,GAAW,IAAI,CAAA;QAE5B;;WAEG;QACH,uBAAkB,GAAW,IAAI,CAAA;QAEjC;;WAEG;QACH,4BAAuB,GAAW,IAAI,CAAA;QAE9B,mBAAc,GAAmB,SAAS,CAAC;QAkB3C,oBAAe,GAAoB,SAAS,CAAC;QAkB7C,yBAAoB,GAAyB,SAAS,CAAC;QAkBvD,sBAAiB,GAA8B,SAAS,CAAC;QAmBzD,6BAAwB,GAA6B,SAAS,CAAC;QAgB/D,wBAAmB,GAAwB,SAAS,CAAC;QAerD,0BAAqB,GAAY,KAAK,CAAC;QAiBvC,eAAU,GAAmB,EAAE,CAAA;QAkBnC,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;QAC5B,IAAI,QAAQ,EAAC,CAAC;YACV,IAAI,CAAC,UAAU,GAAG,QAAQ,CAAC,SAAS,IAAI,QAAQ,CAAC,UAAU,CAAC;QAChE,CAAC;IACL,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,YAAa,SAAQ,QAAQ;IAgCtC,YAAa,QAAa;QACtB,KAAK,EAAE,CAAC;QAhCZ;;WAEG;QACH,WAAM,GAAW,IAAI,CAAA;QAErB;;WAEG;QACH,WAAM,GAAW,IAAI,CAAA;QAErB;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B,iDAAiD;QACjD;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAIf,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACJ;AAED;;;GAGG;AACH,MAAM,OAAO,QAAS,SAAQ,QAAQ;IAoClC,YAAa,QAAa;QACtB,KAAK,EAAE,CAAC;QApCZ;;WAEG;QACH,OAAE,GAAW,IAAI,CAAA;QAEjB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,gBAAW,GAAW,IAAI,CAAA;QAE1B;;WAEG;QACH,gBAAW,GAAW,IAAI,CAAA;QAE1B;;WAEG;QACH,YAAO,GAAW,IAAI,CAAA;QAEtB;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAIvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACJ;AAED;;GAEG;AACH,MAAM,OAAO,0BAA2B,SAAQ,QAAQ;IAoCpD,YAAa,QAAa;QACtB,KAAK,EAAE,CAAC;QApCZ;;WAEG;QACH,OAAE,GAAW,IAAI,CAAA;QAEjB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,gBAAW,GAAW,IAAI,CAAA;QAE1B;;WAEG;QACH,eAAU,GAAW,IAAI,CAAA;QACzB;;;WAGG;QACH,qBAAgB,GAAkB,IAAI,CAAA;QAEtC;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAOnB,oBAAe,GAA4C,SAAS,CAAC;QAHzE,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;IAGD;;OAEG;IACH,IAAY,cAAc;QACtB,IAAI,IAAI,CAAC,eAAe,KAAK,SAAS,EAAE,CAAC;YACrC,IAAI,CAAC,eAAe,GAAG,qBAAqB,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QACxE,CAAC;QACD,OAAO,IAAI,CAAC,eAAe,CAAC;IAChC,CAAC;IAED;;;;;OAKG;IACI,qBAAqB,CAAC,QAA0B;QACnD,MAAM,OAAO,GAAG,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,YAAY,EAAE,QAAQ,CAAC,CAAC;QACpF,OAAO,OAAO,IAAI,IAAI,CAAC,UAAU,CAAC;IACtC,CAAC;IAED;;;;;OAKG;IACI,gBAAgB,CAAC,IAAc,EAAE,OAA6B;QACjE,IAAI,GAAG,GAAG,IAAI,CAAC,UAAU,CAAA;QACzB,IAAI,IAAI,EAAE,CAAC;YACP,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;YAC9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACnC,MAAM,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;gBACpB,MAAM,GAAG,GAAI,IAA2C,CAAC,GAAG,CAAC,CAAA;gBAC7D,uEAAuE;gBACvE,yEAAyE;gBACzE,0DAA0D;gBAC1D,yEAAyE;gBACzE,IAAI,GAAG,IAAI,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBACzC,wEAAwE;oBACxE,uEAAuE;oBACvE,sEAAsE;oBACtE,+BAA+B;oBAC/B,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAA;gBACzF,CAAC;YACL,CAAC;YACD,+EAA+E;YAC/E,iFAAiF;YACjF,0EAA0E;YAC1E,MAAM,KAAK,GAAG,IAAI,CAAC,cAAc,CAAC;YAClC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,0BAA0B,EAAE,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC7F,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,4BAA4B,EAAE,CAAC,KAAK,EAAE,YAAY,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAEjG,GAAG,GAAG,IAAI,CAAC,mBAAmB,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QAC9C,CAAC;QACD,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,4BAA4B,CAAC,CAAC;QAChE,IAAI,eAAe,EAAE,CAAC;YAClB,IAAI,OAAO,EAAE,kBAAkB,KAAK,eAAe,EAAE,CAAC;gBAClD,2EAA2E;gBAC3E,4EAA4E;gBAC5E,2EAA2E;gBAC3E,oDAAoD;gBACpD,QAAQ,CAAC,4EAA4E,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;gBAC/I,OAAO,OAAO,CAAC;YACnB,CAAC;YACD,QAAQ,CAAC,gDAAgD,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACvH,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;IAED;;;;;;;;OAQG;IACK,mBAAmB,CAAC,IAAY,EAAE,IAAc;QACpD,MAAM,MAAM,GAAG,IAAI,CAAC,mBAAmB,CAAC;QACxC,IAAI,GAAG,GAAG,IAAI,CAAC;QACf,MAAM,OAAO,GAAwC;YACjD,CAAC,sBAAsB,EAAE,MAAM,EAAE,oBAAoB,CAAC;YACtD,CAAC,gBAAgB,EAAE,MAAM,EAAE,cAAc,CAAC;YAC1C,CAAC,eAAe,EAAE,MAAM,EAAE,aAAa,CAAC;SAC3C,CAAC;QACF,KAAK,MAAM,CAAC,KAAK,EAAE,KAAK,CAAC,IAAI,OAAO,EAAE,CAAC;YACnC,IAAI,KAAK,IAAI,IAAI,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACpC,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,KAAK,QAAQ,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC;YAC1F,CAAC;QACL,CAAC;QACD,MAAM,SAAS,GAAG,MAAM,EAAE,gBAAgB,CAAC;QAC3C,IAAI,SAAS,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,MAAM,QAAQ,GAAG,CAAC,GAAG,SAAS,CAAC;iBAC1B,IAAI,EAAE;iBACN,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,GAAG,CAAC;iBACtC,IAAI,CAAC,GAAG,CAAC,CAAC;YACf,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,2BAA2B,EAAE,QAAQ,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAkBD;;GAEG;AACH,MAAM,OAAO,iBAAkB,SAAQ,QAAQ;IA+C3C;;;;;;;OAOG;IACH,IAAW,KAAK;QACZ,OAAO,QAAQ,CAAC,QAAQ,EAAE,kBAAkB,EAAE,MAAM,CAAE,+HAA+H;QACjL,AADkD,+HAA+H;QACjL,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,EAAE,CAAC,eAAe,EAAE,IAAI,CAAC,EAAE,CAAC,CAChD,IAAI,EAAE,CAAC;IACZ,CAAC;IAED;;;;;;OAMG;IACH,YAAa,WAAgB,IAAI,EAAE,GAAuB;QACtD,KAAK,EAAE,CAAA;QApEX;;WAEG;QACH,OAAE,GAAW,IAAI,CAAA;QAEjB;;WAEG;QACH,aAAQ,GAAW,IAAI,CAAA;QAEvB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,aAAQ,GAAY,IAAI,CAAA;QAExB;;WAEG;QACH,gBAAW,GAAY,IAAI,CAAA;QAE3B;;WAEG;QACH,gBAAW,GAAW,IAAI,CAAA;QAE1B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QA+BvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAA;IAC/B,CAAC;IAED;;;;;;;;;OASG;IACI,cAAc,CAAC,IAAc;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,SAAS;YAAE,OAAO,KAAK,CAAC;QAC7D,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,QAAQ,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACpC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;YACxF,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;gBACjC,IAAI,EAAE,CAAC,iBAAiB,EAAE,KAAK,qBAAqB,CAAC,IAAI;oBAAE,OAAO,KAAK,CAAC,CAAC,qBAAqB;gBAC9F,IAAI,EAAE,CAAC,iBAAiB,EAAE,KAAK,qBAAqB,CAAC,KAAK;oBAAE,QAAQ,GAAG,IAAI,CAAC;YAChF,CAAC;QACL,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;IAED;;;;;;;OAOG;IACI,cAAc,CAAC,IAAc;QAChC,IAAI,CAAC,IAAI,CAAC,QAAQ;YAAE,OAAO,KAAK,CAAC;QACjC,MAAM,iBAAiB,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,UAAU,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;QAChF,IAAI,iBAAiB,CAAC,MAAM,KAAK,CAAC;YAAE,OAAO,KAAK,CAAC;QACjD,IAAI,QAAQ,GAAG,KAAK,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,iBAAiB,EAAE,CAAC;YACjC,IAAI,EAAE,CAAC,iBAAiB,EAAE,KAAK,qBAAqB,CAAC,IAAI;gBAAE,OAAO,KAAK,CAAC;YACxE,IAAI,EAAE,CAAC,iBAAiB,EAAE,KAAK,qBAAqB,CAAC,KAAK;gBAAE,QAAQ,GAAG,IAAI,CAAC;QAChF,CAAC;QACD,OAAO,QAAQ,CAAC;IACpB,CAAC;CACJ;AAED,MAAM,CAAC,MAAM,qBAAqB,GAAG;IACjC,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;CACN,CAAC;AAKX;;GAEG;AACH,MAAM,OAAO,qBAAsB,SAAQ,QAAQ;IA2C/C,IAAW,QAAQ;QACf,OAAO,IAAI,CAAC,SAAS,CAAA;IACzB,CAAC;IAEM,iBAAiB;QACpB,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC,CAAC,qBAAqB,CAAC,IAAI,CAAA;IAChH,CAAC;IAED,QAAQ,CAAC,IAAc;QACnB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAA;IACzB,CAAC;IAED,YAAa,QAAa;QACtB,KAAK,EAAE,CAAC;QAvDZ;;WAEG;QACH,OAAE,GAAW,IAAI,CAAA;QAEjB;;WAEG;QACH,oBAAe,GAAW,IAAI,CAAA;QAE9B;;WAEG;QACH,WAAM,GAAW,IAAI,CAAA;QAErB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAanB,cAAS,GAAa,IAAI,CAAA;QAe9B,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACJ;AAGD;;GAEG;AACH,MAAM,OAAO,gBAAiB,SAAQ,QAAQ;IA0C1C,YAAa,QAAa;QACtB,KAAK,EAAE,CAAC;QA1CZ;;WAEG;QACH,OAAE,GAAW,IAAI,CAAA;QAEjB;;WAEG;QACH,aAAQ,GAAW,IAAI,CAAA;QAEvB;;WAEG;QACH,SAAI,GAAW,IAAI,CAAA;QAEnB;;WAEG;QACH,gBAAW,GAAW,IAAI,CAAA;QAE1B;;WAEG;QACH,sBAAiB,GAAW,IAAI,CAAA;QAEhC;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAE3B;;WAEG;QACH,mBAAc,GAAS,IAAI,CAAA;QAUvB,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAChC,CAAC;CACJ"}
package/package.json CHANGED
@@ -1,22 +1,13 @@
1
1
  {
2
2
  "name": "@memberjunction/core",
3
3
  "type": "module",
4
- "version": "5.50.0",
4
+ "version": "6.1.0-edge.0",
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",
8
8
  "files": [
9
9
  "/dist"
10
10
  ],
11
- "scripts": {
12
- "start": "ts-node-dev src/index.ts",
13
- "build": "tsc && tsc-alias -f",
14
- "test": "vitest run",
15
- "test:watch": "vitest",
16
- "test:coverage": "vitest run --coverage",
17
- "test:refresh": "vitest run providerBase.refresh.test.ts",
18
- "test:concurrency": "vitest run providerBase.concurrency.test.ts"
19
- },
20
11
  "author": "MemberJunction.com",
21
12
  "license": "ISC",
22
13
  "devDependencies": {
@@ -26,8 +17,8 @@
26
17
  "vitest": "^3.1.1"
27
18
  },
28
19
  "dependencies": {
29
- "@memberjunction/global": "5.50.0",
30
- "@memberjunction/sql-dialect": "5.50.0",
20
+ "@memberjunction/global": "6.1.0-edge.0",
21
+ "@memberjunction/sql-dialect": "6.1.0-edge.0",
31
22
  "rxjs": "^7.8.2",
32
23
  "zod": "^3.25.0",
33
24
  "debug": "^4.4.3"
@@ -35,5 +26,14 @@
35
26
  "repository": {
36
27
  "type": "git",
37
28
  "url": "https://github.com/MemberJunction/MJ"
29
+ },
30
+ "scripts": {
31
+ "start": "ts-node-dev src/index.ts",
32
+ "build": "tsc && tsc-alias -f",
33
+ "test": "vitest run",
34
+ "test:watch": "vitest",
35
+ "test:coverage": "vitest run --coverage",
36
+ "test:refresh": "vitest run providerBase.refresh.test.ts",
37
+ "test:concurrency": "vitest run providerBase.concurrency.test.ts"
38
38
  }
39
- }
39
+ }
package/readme.md CHANGED
@@ -444,6 +444,29 @@ if (!result.Success) {
444
444
  }
445
445
  ```
446
446
 
447
+ #### IS-A (Table-Per-Type) entities
448
+
449
+ An entity may inherit from another — `Webinar` IS-A `Meeting` IS-A `Product` — with one primary key
450
+ shared across every table. `BaseEntity` makes the chain invisible: set a field belonging to ANY
451
+ ancestor directly on the child, and one `Save()` writes every level in a single transaction.
452
+
453
+ ```typescript
454
+ const webinar = await md.GetEntityObject<WebinarEntity>('Webinars', contextUser);
455
+ webinar.NewRecord();
456
+ webinar.RecordingURL = '...'; // Webinar's own field
457
+ webinar.StartTime = startTime; // Meeting's field
458
+ webinar.Name = 'Q1 Webinar'; // Product's field — same object
459
+ await webinar.Save(); // writes Product, Meeting, Webinar
460
+ ```
461
+
462
+ Two things catch people out. Do **not** create the parent separately and then attach a child to it —
463
+ `NewRecord()` starts a new chain rather than adopting an existing row. And remember to set NOT NULL
464
+ columns that live on ANCESTOR tables: the child can look complete while the parent insert is
465
+ rejected, which fails the whole save.
466
+
467
+ See [docs/isa-relationships.md](docs/isa-relationships.md) for the full model — discovery, disjoint
468
+ vs overlapping subtypes, delete orchestration, and CodeGen integration.
469
+
447
470
  ### CompositeKey
448
471
 
449
472
  The `CompositeKey` class provides flexible primary key representation supporting both single and multi-field primary keys.
@@ -1640,6 +1663,14 @@ flowchart LR
1640
1663
  | `AllowUpdateAPI` | Configurable | Always `false` |
1641
1664
  | Stored procedures | Generated | None |
1642
1665
 
1666
+ > **Not the same thing as a custom base view.** A virtual entity has *no base table* and is read-only.
1667
+ > If you have a real table and only want to add computed columns to what its view exposes, you want a
1668
+ > **layered base view** instead — `GeneratedBaseViewName` keeps CodeGen generating an inner view while
1669
+ > your application owns and wraps `BaseView`, and the entity stays fully writable because
1670
+ > `spCreate`/`spUpdate`/`spDelete` still target `BaseView`. See
1671
+ > [Base Views: Generated, Custom, or Layered](../CodeGenLib/README.md#base-views-generated-custom-or-layered).
1672
+ > Layering is skipped entirely for virtual entities, which have no table to generate from.
1673
+
1643
1674
  ### Read-Only Enforcement
1644
1675
 
1645
1676
  Virtual entities are enforced as read-only at multiple layers: