@memberjunction/core 5.38.0 → 5.40.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 (44) hide show
  1. package/dist/generic/baseEngine.d.ts +27 -1
  2. package/dist/generic/baseEngine.d.ts.map +1 -1
  3. package/dist/generic/baseEngine.js +64 -4
  4. package/dist/generic/baseEngine.js.map +1 -1
  5. package/dist/generic/baseEngineRegistry.d.ts +90 -0
  6. package/dist/generic/baseEngineRegistry.d.ts.map +1 -1
  7. package/dist/generic/baseEngineRegistry.js +100 -0
  8. package/dist/generic/baseEngineRegistry.js.map +1 -1
  9. package/dist/generic/baseEntity.d.ts.map +1 -1
  10. package/dist/generic/baseEntity.js +15 -0
  11. package/dist/generic/baseEntity.js.map +1 -1
  12. package/dist/generic/databaseProviderBase.d.ts +6 -0
  13. package/dist/generic/databaseProviderBase.d.ts.map +1 -1
  14. package/dist/generic/databaseProviderBase.js +8 -0
  15. package/dist/generic/databaseProviderBase.js.map +1 -1
  16. package/dist/generic/entityInfo.d.ts +1 -1
  17. package/dist/generic/entityInfo.d.ts.map +1 -1
  18. package/dist/generic/entityInfo.js +7 -3
  19. package/dist/generic/entityInfo.js.map +1 -1
  20. package/dist/generic/interfaces.d.ts +123 -0
  21. package/dist/generic/interfaces.d.ts.map +1 -1
  22. package/dist/generic/interfaces.js.map +1 -1
  23. package/dist/generic/localCacheManager.d.ts +7 -1
  24. package/dist/generic/localCacheManager.d.ts.map +1 -1
  25. package/dist/generic/localCacheManager.js +18 -1
  26. package/dist/generic/localCacheManager.js.map +1 -1
  27. package/dist/generic/metadata.d.ts +44 -1
  28. package/dist/generic/metadata.d.ts.map +1 -1
  29. package/dist/generic/metadata.js +49 -0
  30. package/dist/generic/metadata.js.map +1 -1
  31. package/dist/generic/providerBase.d.ts +100 -1
  32. package/dist/generic/providerBase.d.ts.map +1 -1
  33. package/dist/generic/providerBase.js +280 -5
  34. package/dist/generic/providerBase.js.map +1 -1
  35. package/dist/generic/scoring/ReciprocalRankFusion.d.ts +11 -4
  36. package/dist/generic/scoring/ReciprocalRankFusion.d.ts.map +1 -1
  37. package/dist/generic/scoring/ReciprocalRankFusion.js +18 -6
  38. package/dist/generic/scoring/ReciprocalRankFusion.js.map +1 -1
  39. package/dist/generic/securityInfo.d.ts +35 -0
  40. package/dist/generic/securityInfo.d.ts.map +1 -1
  41. package/dist/generic/securityInfo.js +37 -0
  42. package/dist/generic/securityInfo.js.map +1 -1
  43. package/package.json +3 -3
  44. package/readme.md +117 -0
@@ -1 +1 @@
1
- {"version":3,"file":"securityInfo.d.ts","sourceRoot":"","sources":["../../src/generic/securityInfo.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AASjD,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAIjD;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,MAAM,WAAW,aAAa;IAC1B,uEAAuE;IACvE,QAAQ,EAAE,MAAM,CAAC;IACjB,6CAA6C;IAC7C,MAAM,EAAE,QAAQ,GAAG,cAAc,GAAG,QAAQ,CAAC;CAChD;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,QAAQ;IAClC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAQ;IAElB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,SAAS,EAAE,MAAM,CAAO;IAExB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAO;IAEvB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAO;IAEpB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAO;IAEpB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAO;IAExB;;OAEG;IACH,gBAAgB,EAAE,MAAM,GAAG,UAAU,GAAG,OAAO,CAAO;IAEtD;;OAEG;IACH,UAAU,EAAE,MAAM,CAAO;IAEzB;;OAEG;IACH,cAAc,EAAE,MAAM,CAAO;IAE7B;;OAEG;IACH,oBAAoB,EAAE,MAAM,CAAO;IAEnC;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAE3B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAG3B;;OAEG;IACH,SAAS,EAAE,MAAM,CAAO;IAExB;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACH,aAAa,EAAE,MAAM,CAAO;IAE5B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAO;IAE5B;;OAEG;IACH,kBAAkB,EAAE,MAAM,CAAO;IAEjC;;OAEG;IACH,uBAAuB,EAAE,MAAM,CAAO;IAEtC,OAAO,CAAC,cAAc,CAAC,CAA4B;IAEnD;;;;;;;;OAQG;IACH,IAAW,aAAa,IAAI,aAAa,GAAG,SAAS,CAEpD;IACD,IAAW,aAAa,CAAC,KAAK,EAAE,aAAa,GAAG,SAAS,EAExD;IAED,OAAO,CAAC,UAAU,CAAqB;IACvC;;;OAGG;IACH,IAAW,SAAS,IAAI,YAAY,EAAE,CAErC;IAED;;;;;;OAMG;gBACU,EAAE,GAAE,iBAAwB,EAAE,QAAQ,GAAE,GAAU;CAOlE;AAED;;GAEG;AACH,qBAAa,YAAa,SAAQ,QAAQ;IACtC;;OAEG;IACH,MAAM,EAAE,MAAM,CAAO;IAErB;;OAEG;IACH,MAAM,EAAE,MAAM,CAAO;IAErB;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAE3B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAG3B;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;gBAEN,QAAQ,EAAE,GAAG;CAI7B;AAED;;;GAGG;AACH,qBAAa,QAAS,SAAQ,QAAQ;IAClC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAO;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,OAAO,EAAE,MAAM,CAAO;IAEtB;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAE3B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;gBAEd,QAAQ,EAAE,GAAG;CAI7B;AAED;;GAEG;AACH,qBAAa,0BAA2B,SAAQ,QAAQ;IACpD;;OAEG;IACH,EAAE,EAAE,MAAM,CAAO;IAEjB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,UAAU,EAAE,MAAM,CAAO;IACzB;;;OAGG;IACH,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAO;IAEtC;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAE3B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;gBAEd,QAAQ,EAAE,GAAG;IAK1B,OAAO,CAAC,eAAe,CAAsD;IAC7E;;OAEG;IACH,OAAO,KAAK,cAAc,GAKzB;IAED;;;;;OAKG;IACI,qBAAqB,CAAC,QAAQ,EAAE,gBAAgB,GAAG,MAAM;IAKhE;;;;;OAKG;IACI,gBAAgB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM;CAkBlD;AAED;;GAEG;AACH,qBAAa,iBAAkB,SAAQ,QAAQ;IAC3C;;OAEG;IACH,EAAE,EAAE,MAAM,CAAO;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAO;IAEvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,QAAQ,EAAE,OAAO,CAAO;IAExB;;OAEG;IACH,WAAW,EAAE,OAAO,CAAO;IAE3B;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAE3B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAG3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;IAEd;;;;;;;OAOG;IACH,IAAW,KAAK,IAAI,qBAAqB,EAAE,CAI1C;IAED;;;;;;OAMG;gBACU,QAAQ,GAAE,GAAU,EAAE,GAAG,CAAC,EAAE,iBAAiB;IAK1D;;;;;;;;;OASG;IACI,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;IAa9C;;;;;;;OAOG;IACI,cAAc,CAAC,IAAI,EAAE,QAAQ,GAAG,OAAO;CAWjD;AAED,eAAO,MAAM,qBAAqB;;;CAGxB,CAAC;AAEX,MAAM,MAAM,qBAAqB,GAAG,OAAO,qBAAqB,CAAC,MAAM,OAAO,qBAAqB,CAAC,CAAC;AAGrG;;GAEG;AACH,qBAAa,qBAAsB,SAAQ,QAAQ;IAC/C;;OAEG;IACH,EAAE,EAAE,MAAM,CAAO;IAEjB;;OAEG;IACH,eAAe,EAAE,MAAM,CAAO;IAE9B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAO;IAErB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAE3B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAG3B;;OAEG;IACH,aAAa,EAAE,MAAM,CAAA;IAErB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAA;IAEZ,OAAO,CAAC,SAAS,CAAiB;IAClC,IAAW,QAAQ,IAAI,QAAQ,CAE9B;IAEM,iBAAiB,IAAI,qBAAqB;IAIjD,QAAQ,CAAC,IAAI,EAAE,QAAQ;gBAIV,QAAQ,EAAE,GAAG;CAI7B;AAGD;;GAEG;AACH,qBAAa,gBAAiB,SAAQ,QAAQ;IAC1C;;OAEG;IACH,EAAE,EAAE,MAAM,CAAO;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAO;IAEvB;;OAEG;IACH,IAAI,EAAE,MAAM,CAAO;IAEnB;;OAEG;IACH,WAAW,EAAE,MAAM,CAAO;IAE1B;;OAEG;IACH,iBAAiB,EAAE,MAAM,CAAO;IAEhC;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAE3B;;OAEG;IACH,cAAc,EAAE,IAAI,CAAO;IAG3B;;OAEG;IACH,MAAM,EAAE,MAAM,CAAA;gBAED,QAAQ,EAAE,GAAG;CAI7B"}
1
+ {"version":3,"file":"securityInfo.d.ts","sourceRoot":"","sources":["../../src/generic/securityInfo.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,35 @@ export class UserInfo extends BaseInfo {
29
29
  set TenantContext(value) {
30
30
  this._TenantContext = value;
31
31
  }
32
+ /**
33
+ * Per-session resource scope for a magic-link share. Set at request time from the
34
+ * verified session token's claims (the link's ResourceType/ResourceID). Consumed by
35
+ * RLS filters via the `{{ScopeResourceID}}` / `{{ScopeResourceType}}` tokens in
36
+ * {@link RowLevelSecurityFilterInfo.MarkupFilterText}, so a resource-share link can
37
+ * be scoped to exactly one resource (and its FK-reachable dependents) without the
38
+ * granted role being broad. Same getter/setter (non-enumerable) rationale as
39
+ * TenantContext — it is not a database/GraphQL field.
40
+ */
41
+ get MagicLinkScope() {
42
+ return this._MagicLinkScope;
43
+ }
44
+ set MagicLinkScope(value) {
45
+ this._MagicLinkScope = value;
46
+ }
47
+ /**
48
+ * True when this request resolves to the shared Anonymous magic-link principal whose
49
+ * roles are synthesized in memory per-session (never persisted, so anonymous sessions
50
+ * can't accrete privileges across links). The server reads this to serve the synthesized
51
+ * {@link UserRoles} for the session's own user row instead of the DB query (which returns
52
+ * empty for the role-less shared principal by design). Same getter/setter (non-enumerable)
53
+ * rationale as TenantContext/MagicLinkScope — it is not a database/GraphQL field.
54
+ */
55
+ get IsMagicLinkAnonymous() {
56
+ return this._IsMagicLinkAnonymous;
57
+ }
58
+ set IsMagicLinkAnonymous(value) {
59
+ this._IsMagicLinkAnonymous = value;
60
+ }
32
61
  /**
33
62
  * Gets the roles assigned to this user.
34
63
  * @returns {UserRoleInfo[]} Array of user role assignments
@@ -127,6 +156,8 @@ export class UserInfo extends BaseInfo {
127
156
  */
128
157
  this.EmployeeSupervisorEmail = null;
129
158
  this._TenantContext = undefined;
159
+ this._MagicLinkScope = undefined;
160
+ this._IsMagicLinkAnonymous = false;
130
161
  this._UserRoles = [];
131
162
  this.copyInitData(initData);
132
163
  if (initData) {
@@ -280,6 +311,12 @@ export class RowLevelSecurityFilterInfo extends BaseInfo {
280
311
  ret = ret.replace(new RegExp(`{{User${key}}}`, 'g'), String(val));
281
312
  }
282
313
  }
314
+ // Per-session magic-link resource scope. Fail-closed: an absent scope resolves
315
+ // to '' so a resource-pinned predicate (e.g. ID = '{{ScopeResourceID}}') matches
316
+ // NO rows rather than leaking — a session without the scope sees nothing.
317
+ const scope = user.MagicLinkScope;
318
+ ret = ret.replace(/\{\{ScopeResourceID\}\}/g, scope?.ResourceID ?? '');
319
+ ret = ret.replace(/\{\{ScopeResourceType\}\}/g, scope?.ResourceType ?? '');
283
320
  }
284
321
  const unresolvedMatch = ret.match(/\{\{User\w+\}\}/);
285
322
  if (unresolvedMatch) {
@@ -1 +1 @@
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;AAgCpD;;;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;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;QAxIZ;;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,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;QAClC,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,IAAI,GAAG,KAAK,IAAI,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;oBAC1C,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,IAAI,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAA;gBACrE,CAAC;YACL,CAAC;QACL,CAAC;QACD,MAAM,eAAe,GAAG,GAAG,CAAC,KAAK,CAAC,iBAAiB,CAAC,CAAC;QACrD,IAAI,eAAe,EAAE,CAAC;YAClB,QAAQ,CAAC,gDAAgD,GAAG,eAAe,CAAC,CAAC,CAAC,GAAG,cAAc,GAAG,IAAI,CAAC,UAAU,CAAC,CAAC;QACvH,CAAC;QACD,OAAO,GAAG,CAAC;IACf,CAAC;CACJ;AAED;;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"}
1
+ {"version":3,"file":"securityInfo.js","sourceRoot":"","sources":["../../src/generic/securityInfo.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@memberjunction/core",
3
3
  "type": "module",
4
- "version": "5.38.0",
4
+ "version": "5.40.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",
@@ -26,8 +26,8 @@
26
26
  "vitest": "^3.1.1"
27
27
  },
28
28
  "dependencies": {
29
- "@memberjunction/global": "5.38.0",
30
- "@memberjunction/sql-dialect": "5.38.0",
29
+ "@memberjunction/global": "5.40.0",
30
+ "@memberjunction/sql-dialect": "5.40.0",
31
31
  "rxjs": "^7.8.2",
32
32
  "zod": "~3.24.4",
33
33
  "debug": "^4.4.3"
package/readme.md CHANGED
@@ -858,6 +858,56 @@ Key features:
858
858
 
859
859
  ---
860
860
 
861
+ ### BaseEngineRegistry — cross-engine cache reverse lookup
862
+
863
+ Every `BaseEngine` registers itself with the process-wide `BaseEngineRegistry` on
864
+ load, so the registry always knows **which loaded engines cache which entities**.
865
+ You can use that to ask, from anywhere, *"is this entity already fully in memory?
866
+ if so, hand me the array — and don't go to the database."*
867
+
868
+ This is the introspection behind the Admin → System Diagnostics "loaded engines"
869
+ view, plus two reverse-lookup helpers:
870
+
871
+ ```typescript
872
+ import { BaseEngineRegistry, UserInfo } from '@memberjunction/core';
873
+
874
+ // All loaded engines that cache 'Users', unfiltered (full-set) caches first.
875
+ // Each match carries the engine, its config, and a LIVE pointer to the array.
876
+ const matches = BaseEngineRegistry.Instance.FindCachedEntity<UserInfo>('Users');
877
+ // matches[0] => { engineClassName, engine, config, records: UserInfo[], unfiltered }
878
+
879
+ // Or the one-liner: the best (unfiltered-preferred) cached array, or null.
880
+ const users = BaseEngineRegistry.Instance.TryGetCachedRecords<UserInfo>('Users', { unfilteredOnly: true });
881
+ if (users) {
882
+ // Small/static entity already in memory — filter/sort locally, zero DB calls.
883
+ const hits = users.filter(u => u.Name.toLowerCase().includes(q));
884
+ } else {
885
+ // Not cached as a full set → fall back to a normal RunView against the DB.
886
+ }
887
+ ```
888
+
889
+ `FindCachedEntity(entityName, { unfilteredOnly? })`:
890
+ - Considers **only loaded** engines (a registered-but-unloaded engine has no data).
891
+ - Matches an engine config when `Type === 'entity'` and `EntityName` matches (case-insensitive, trimmed).
892
+ - Orders **unfiltered caches first** — a config with no `Filter` holds the *complete*
893
+ entity set and is authoritative (safe for "show all" / in-memory search); filtered
894
+ caches (a subset) come after. `unfilteredOnly: true` omits the filtered ones.
895
+ - Returns the engine's **live array** (not a copy) — read it, don't mutate it. When the
896
+ config's `ResultType` is `'simple'`, rows are plain objects, not `BaseEntity` instances.
897
+ - Returns **all** matches when several engines cache the same entity, so the caller can
898
+ pick (by `engineClassName`, by inspecting `config`, etc.).
899
+
900
+ `TryGetCachedRecords(entityName, { unfilteredOnly? })` is the convenience wrapper —
901
+ the best match's array, or `null`.
902
+
903
+ **Why it's useful:** UI and service code that needs to look up records for a
904
+ small/static entity (FK pickers, dropdowns, validation) can serve the lookup from
905
+ an already-loaded engine cache in a single line — no extra DB round-trip, no
906
+ per-keystroke query — and transparently fall back to `RunView` when the entity
907
+ isn't cached as a full set.
908
+
909
+ ---
910
+
861
911
  ### RegisterForStartup
862
912
 
863
913
  The `@RegisterForStartup` decorator registers singleton engine classes (or any class implementing `IStartupSink`) with the `StartupManager` to automatically run configuration/setup during application boot.
@@ -1216,6 +1266,73 @@ Features:
1216
1266
 
1217
1267
  ---
1218
1268
 
1269
+ ## Ranked Entity Record Search (`SearchEntity` / `SearchEntities`)
1270
+
1271
+ A two-tier ranked-search API for finding the most relevant **records** of an entity for a free-text request. Distinct from the other lookups MJ already exposes — see the comparison below.
1272
+
1273
+ ```typescript
1274
+ import { Metadata, EntitySearchResult } from '@memberjunction/core';
1275
+
1276
+ const md = new Metadata();
1277
+
1278
+ // Singular form — search one entity, return ranked record list
1279
+ const results: EntitySearchResult[] = await md.SearchEntity({
1280
+ entityName: 'MJ: Entities',
1281
+ searchText: userRequestText,
1282
+ options: { mode: 'hybrid', topK: 10, weights: { lexical: 1.0, semantic: 1.5 }, contextUser }
1283
+ });
1284
+
1285
+ // Plural form — search many entities in ONE round-trip
1286
+ // Returns an array of arrays, aligned by input order
1287
+ const groups = await md.SearchEntities([
1288
+ { entityName: 'Invoices', searchText: 'overdue payments', options: { topK: 5, contextUser } },
1289
+ { entityName: 'Customers', searchText: 'overdue payments', options: { topK: 5, contextUser } },
1290
+ { entityName: 'Notes', searchText: 'overdue payments', options: { topK: 5, contextUser } },
1291
+ ]);
1292
+ // groups[0] = top Invoices, groups[1] = top Customers, groups[2] = top Notes
1293
+ ```
1294
+
1295
+ **Modes:**
1296
+ - `lexical` — substring / prefix matching on the entity's name field and any `IncludeInUserSearchAPI` fields.
1297
+ - `semantic` — vector cosine against precomputed embeddings in `MJ: Entity Record Documents.VectorJSON`.
1298
+ - `hybrid` (default) — weighted RRF blend of the two, tunable via `options.weights` and `options.rrfK`.
1299
+
1300
+ **Configuration:** semantic and hybrid modes require an Active `EntityDocument` of type `Search` registered for the target entity. The MJ install seeds one for `MJ: Entities` so the entity catalog is searchable out of the box; users enable it for other entities via metadata (see `/metadata/entity-documents/`).
1301
+
1302
+ **Provider implementation:** declared on `IMetadataProvider`, implemented polymorphically by each concrete provider. `GenericDatabaseProvider` runs the ranking in-process (embedding the query via `AIEngine.EmbedTextLocal` and querying `SimpleVectorServiceProvider` directly); `GraphQLDataProvider` proxies the whole batch to the server in one round-trip via the `SearchEntities` resolver. No registration or wiring required at startup.
1303
+
1304
+ ### How this differs from MJ's other search/lookup APIs
1305
+
1306
+ | API | Purpose | Returns |
1307
+ |---|---|---|
1308
+ | `EntityByName(name)` / `EntityByID(id)` | Look up an entity **definition** (`EntityInfo`). Deterministic, not ranked. | One `EntityInfo` |
1309
+ | `FullTextSearch(params)` | Multi-entity server-side text search using each entity's `UserSearchString` rule (LIKE / FTS). Lexical only. | Groups of `FullTextSearchResultItem` |
1310
+ | **`SearchEntity(params)`** | "Find the N most relevant **records** of *this* entity for this query." Hybrid lexical + semantic. | `EntitySearchResult[]` |
1311
+ | **`SearchEntities(params[])`** | Batch — same ranking applied to multiple entities in one call. | `EntitySearchResult[][]` aligned by input |
1312
+ | `SearchEngine.Search()` ([`@memberjunction/search-engine`](../SearchEngine/README.md)) | **Cross-source** unified search across vectors, full-text, entities, and storage. Scoped via `SearchScope` metadata, optional reranker. | Aggregated `SearchResult` |
1313
+
1314
+ **Picking the right one** is straightforward: if you know the entity and want ranked records, use `SearchEntity`. If you know the candidate entities, use `SearchEntities` (plural). If you don't know which entity / want cross-source results, use `SearchEngine.Search`. For exact-name metadata lookup, use `EntityByName`.
1315
+
1316
+ ---
1317
+
1318
+ ## Weighted Reciprocal Rank Fusion (`ComputeRRF`)
1319
+
1320
+ `ComputeRRF` is the canonical RRF implementation used wherever MJ blends ranked result lists (`SearchEntity` / `SearchEntities` hybrid mode, `SearchEngine` cross-scope fusion, dupe detection). It accepts an optional per-list `weights` array:
1321
+
1322
+ ```typescript
1323
+ import { ComputeRRF, ScoredCandidate } from '@memberjunction/core';
1324
+
1325
+ const fused = ComputeRRF(
1326
+ [lexicalResults, semanticResults],
1327
+ /* k */ 60,
1328
+ /* weights */ [1.0, 1.5] // semantic contributes 1.5× per rank position
1329
+ );
1330
+ ```
1331
+
1332
+ Formula: `FusedScore(d) = Σ_i w_i / (k + rank_i(d))`. Omitting `weights` is equivalent to all-ones — canonical unweighted RRF.
1333
+
1334
+ ---
1335
+
1219
1336
  ## Utility Functions
1220
1337
 
1221
1338
  ```typescript