@memberjunction/core 6.1.0-edge.2 → 6.1.0-edge.3

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 (90) hide show
  1. package/LICENSE +180 -4
  2. package/dist/generic/JSONType-interfaces/IEntityConfiguration.d.ts +120 -0
  3. package/dist/generic/JSONType-interfaces/IEntityConfiguration.d.ts.map +1 -0
  4. package/dist/generic/JSONType-interfaces/IEntityConfiguration.js +6 -0
  5. package/dist/generic/JSONType-interfaces/IEntityConfiguration.js.map +1 -0
  6. package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.d.ts +31 -0
  7. package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.d.ts.map +1 -0
  8. package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.js +6 -0
  9. package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.js.map +1 -0
  10. package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.d.ts +75 -0
  11. package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.d.ts.map +1 -0
  12. package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.js +6 -0
  13. package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.js.map +1 -0
  14. package/dist/generic/JSONType-interfaces/IFileStorageProviderConfiguration.d.ts +19 -0
  15. package/dist/generic/JSONType-interfaces/IFileStorageProviderConfiguration.d.ts.map +1 -0
  16. package/dist/generic/JSONType-interfaces/IFileStorageProviderConfiguration.js +6 -0
  17. package/dist/generic/JSONType-interfaces/IFileStorageProviderConfiguration.js.map +1 -0
  18. package/dist/generic/authTypes.d.ts +69 -0
  19. package/dist/generic/authTypes.d.ts.map +1 -1
  20. package/dist/generic/baseEngine.d.ts +14 -0
  21. package/dist/generic/baseEngine.d.ts.map +1 -1
  22. package/dist/generic/baseEngine.js +53 -13
  23. package/dist/generic/baseEngine.js.map +1 -1
  24. package/dist/generic/baseEntity.d.ts +113 -20
  25. package/dist/generic/baseEntity.d.ts.map +1 -1
  26. package/dist/generic/baseEntity.js +351 -49
  27. package/dist/generic/baseEntity.js.map +1 -1
  28. package/dist/generic/baseInfo.d.ts.map +1 -1
  29. package/dist/generic/baseInfo.js +16 -4
  30. package/dist/generic/baseInfo.js.map +1 -1
  31. package/dist/generic/compositeKey.d.ts +30 -0
  32. package/dist/generic/compositeKey.d.ts.map +1 -1
  33. package/dist/generic/compositeKey.js +97 -0
  34. package/dist/generic/compositeKey.js.map +1 -1
  35. package/dist/generic/databaseProviderBase.d.ts.map +1 -1
  36. package/dist/generic/databaseProviderBase.js +9 -5
  37. package/dist/generic/databaseProviderBase.js.map +1 -1
  38. package/dist/generic/embeddedRecord.d.ts +123 -0
  39. package/dist/generic/embeddedRecord.d.ts.map +1 -0
  40. package/dist/generic/embeddedRecord.js +356 -0
  41. package/dist/generic/embeddedRecord.js.map +1 -0
  42. package/dist/generic/entityCompanion.d.ts +20 -2
  43. package/dist/generic/entityCompanion.d.ts.map +1 -1
  44. package/dist/generic/entityCompanion.js +17 -1
  45. package/dist/generic/entityCompanion.js.map +1 -1
  46. package/dist/generic/entityConfiguration.d.ts +131 -0
  47. package/dist/generic/entityConfiguration.d.ts.map +1 -0
  48. package/dist/generic/entityConfiguration.js +346 -0
  49. package/dist/generic/entityConfiguration.js.map +1 -0
  50. package/dist/generic/entityInfo.d.ts +274 -4
  51. package/dist/generic/entityInfo.d.ts.map +1 -1
  52. package/dist/generic/entityInfo.js +502 -14
  53. package/dist/generic/entityInfo.js.map +1 -1
  54. package/dist/generic/entitySavePlan.d.ts +40 -11
  55. package/dist/generic/entitySavePlan.d.ts.map +1 -1
  56. package/dist/generic/entitySavePlan.js +70 -2
  57. package/dist/generic/entitySavePlan.js.map +1 -1
  58. package/dist/generic/interfaces.d.ts +6 -24
  59. package/dist/generic/interfaces.d.ts.map +1 -1
  60. package/dist/generic/interfaces.js +6 -24
  61. package/dist/generic/interfaces.js.map +1 -1
  62. package/dist/generic/localCacheManager.d.ts.map +1 -1
  63. package/dist/generic/localCacheManager.js +10 -0
  64. package/dist/generic/localCacheManager.js.map +1 -1
  65. package/dist/generic/providerBase.d.ts +19 -0
  66. package/dist/generic/providerBase.d.ts.map +1 -1
  67. package/dist/generic/providerBase.js +71 -6
  68. package/dist/generic/providerBase.js.map +1 -1
  69. package/dist/generic/relatedRecordCollection.d.ts +25 -3
  70. package/dist/generic/relatedRecordCollection.d.ts.map +1 -1
  71. package/dist/generic/relatedRecordCollection.js +53 -7
  72. package/dist/generic/relatedRecordCollection.js.map +1 -1
  73. package/dist/generic/runQuery.d.ts +14 -0
  74. package/dist/generic/runQuery.d.ts.map +1 -1
  75. package/dist/generic/runQuery.js.map +1 -1
  76. package/dist/generic/saveEntityGraphOperation.js +1 -1
  77. package/dist/generic/saveEntityGraphOperation.js.map +1 -1
  78. package/dist/generic/securityInfo.d.ts.map +1 -1
  79. package/dist/generic/securityInfo.js +15 -5
  80. package/dist/generic/securityInfo.js.map +1 -1
  81. package/dist/index.d.ts +3 -0
  82. package/dist/index.d.ts.map +1 -1
  83. package/dist/index.js +3 -0
  84. package/dist/index.js.map +1 -1
  85. package/dist/views/runView.d.ts +23 -0
  86. package/dist/views/runView.d.ts.map +1 -1
  87. package/dist/views/runView.js +20 -0
  88. package/dist/views/runView.js.map +1 -1
  89. package/package.json +5 -4
  90. package/readme.md +20 -1
@@ -0,0 +1,346 @@
1
+ /**
2
+ * Runtime view of `MJ: Entities.Configuration` and
3
+ * `MJ: Entity Relationships.Configuration`.
4
+ *
5
+ * Keep this file in lockstep with:
6
+ * - `metadata/entities/JSONType-interfaces/IEntityConfiguration.ts`
7
+ * - `metadata/entities/JSONType-interfaces/IEntityRelationshipConfiguration.ts`
8
+ *
9
+ * Those files are CodeGen's source of truth (the generated
10
+ * `MJEntityEntity_IEntityConfiguration` / ER counterpart). This file is what
11
+ * `EntityInfo` / the form-chrome ranker consume — `@memberjunction/core` cannot
12
+ * import the generated entity package.
13
+ *
14
+ * NULL / `{}` / omitted keys = accordion until AutoLeftNavAt, then left-nav.
15
+ * Related-role policy defaults to `'smart'`: a budgeted ranker over Auto
16
+ * leftovers. L1 `inclusion: 'None'` never enters the ranker.
17
+ *
18
+ * @see guides/FORMS_ARCHITECTURE_GUIDE.md §7d
19
+ */
20
+ import { SafeJSONParse } from '@memberjunction/global';
21
+ export const DEFAULT_AUTO_LEFT_NAV_AT = 8;
22
+ export const DEFAULT_PRIMARY_RELATED_BUDGET = 6;
23
+ export const RELATED_ROLE_SCORE = {
24
+ RelatedRecordCollection: 200,
25
+ CustomDisplayComponent: 150,
26
+ SameSchema: 100,
27
+ OneToMany: 50,
28
+ BeforeFieldTabs: 40,
29
+ /**
30
+ * Cap for the inbound-relationship hub boost. A related entity that many
31
+ * other entities point at (Order Headers) outranks a satellite with two
32
+ * incoming keys (Task Activities). Applied as `min(cap, 20 * log2(count))`.
33
+ */
34
+ InboundHubCap: 120,
35
+ CreatedByJoin: -90,
36
+ SatelliteName: -70,
37
+ PlatformSchema: -80,
38
+ };
39
+ export const PLATFORM_SCHEMA_NAME = '__mj';
40
+ export * from './JSONType-interfaces/IEntityConfiguration.js';
41
+ export * from './JSONType-interfaces/IEntityFieldConfiguration.js';
42
+ export * from './JSONType-interfaces/IEntityRelationshipConfiguration.js';
43
+ export function ParseEntityConfiguration(raw) {
44
+ if (raw == null)
45
+ return null;
46
+ if (typeof raw === 'object')
47
+ return raw;
48
+ if (typeof raw !== 'string' || raw.trim().length === 0)
49
+ return null;
50
+ return SafeJSONParse(raw, false) ?? null;
51
+ }
52
+ export function ParseEntityRelationshipConfiguration(raw) {
53
+ if (raw == null)
54
+ return null;
55
+ if (typeof raw === 'object')
56
+ return raw;
57
+ if (typeof raw !== 'string' || raw.trim().length === 0)
58
+ return null;
59
+ return SafeJSONParse(raw, false) ?? null;
60
+ }
61
+ export function ResolveFormLayout(formConfig, firstClassSectionCount) {
62
+ const layout = formConfig?.Layout ?? 'auto';
63
+ if (layout === 'accordion' || layout === 'left-nav')
64
+ return layout;
65
+ const threshold = formConfig?.AutoLeftNavAt ?? DEFAULT_AUTO_LEFT_NAV_AT;
66
+ return firstClassSectionCount >= threshold ? 'left-nav' : 'accordion';
67
+ }
68
+ /**
69
+ * Read L1 inclusion from a relationship Configuration bag.
70
+ * `inclusion` wins. `FormRole: 'Detail'` maps to More. `FormRole: 'Primary'` maps to Primary.
71
+ */
72
+ export function ReadRelationshipInclusion(raw) {
73
+ const parsed = ParseEntityRelationshipConfiguration(raw);
74
+ const ui = parsed?.UI;
75
+ if (ui?.inclusion === 'Primary' || ui?.inclusion === 'More' || ui?.inclusion === 'None') {
76
+ return ui.inclusion;
77
+ }
78
+ if (ui?.FormRole === 'Primary')
79
+ return 'Primary';
80
+ if (ui?.FormRole === 'Detail')
81
+ return 'More';
82
+ return null;
83
+ }
84
+ /** Higher = earlier among first-class related rail items. Omit / invalid = null. */
85
+ export function ReadRelationshipSortKey(raw) {
86
+ const sort = ParseEntityRelationshipConfiguration(raw)?.UI?.sortKey;
87
+ if (typeof sort !== 'number' || !Number.isFinite(sort))
88
+ return null;
89
+ return sort;
90
+ }
91
+ export function ReadRelationshipJoinFields(raw) {
92
+ const fields = ParseEntityRelationshipConfiguration(raw)?.UI?.join?.fields;
93
+ if (!fields || fields.length === 0)
94
+ return null;
95
+ const cleaned = fields.map((f) => f.trim()).filter((f) => f.length > 0);
96
+ return cleaned.length > 0 ? cleaned : null;
97
+ }
98
+ /**
99
+ * Score a DisplayInForm relationship for the smart ranker. Explicit inclusion
100
+ * is not applied here — callers separate the L1 pool first.
101
+ */
102
+ export function ScoreRelatedFormRole(candidate, parentSchemaName) {
103
+ let score = 0;
104
+ if (hasText(candidate.RelatedRecordCollection)) {
105
+ score += RELATED_ROLE_SCORE.RelatedRecordCollection;
106
+ }
107
+ if (hasText(candidate.DisplayComponentID)) {
108
+ score += RELATED_ROLE_SCORE.CustomDisplayComponent;
109
+ }
110
+ if (schemasEqual(candidate.RelatedEntitySchemaName, parentSchemaName)) {
111
+ score += RELATED_ROLE_SCORE.SameSchema;
112
+ }
113
+ if (isOneToMany(candidate)) {
114
+ score += RELATED_ROLE_SCORE.OneToMany;
115
+ }
116
+ if (candidate.DisplayLocation === 'Before Field Tabs') {
117
+ score += RELATED_ROLE_SCORE.BeforeFieldTabs;
118
+ }
119
+ score += inboundHubBoost(candidate.InboundRelationshipCount);
120
+ score += createdByJoinPenalty(candidate.RelatedEntityJoinField);
121
+ score += satelliteNamePenalty(candidate.RelatedEntity);
122
+ if (isPlatformSchema(candidate.RelatedEntitySchemaName) && !isPlatformSchema(parentSchemaName)) {
123
+ score += RELATED_ROLE_SCORE.PlatformSchema;
124
+ }
125
+ return score;
126
+ }
127
+ export function ResolveRelatedFormRoles(parentSchemaName, formConfig, candidates) {
128
+ const policy = formConfig?.RelatedRolePolicy ?? 'smart';
129
+ const budget = resolveBudget(formConfig?.PrimaryRelatedBudget);
130
+ const visible = candidates.filter((c) => c.DisplayInForm);
131
+ const assignments = [];
132
+ const untagged = [];
133
+ const joinSiblingNone = impliedJoinSiblingNoneIds(visible);
134
+ for (const candidate of visible) {
135
+ const explicit = ReadRelationshipInclusion(candidate.Configuration);
136
+ const inclusion = explicit ?? (joinSiblingNone.has(candidate.ID) ? 'None' : null);
137
+ const score = ScoreRelatedFormRole(candidate, parentSchemaName);
138
+ if (inclusion === 'None') {
139
+ const reason = explicit === 'None' ? 'explicit-none' : 'join-sibling-none';
140
+ assignments.push(toAssignment(candidate, 'Detail', 'None', score, reason, explicit));
141
+ continue;
142
+ }
143
+ if (inclusion === 'Primary') {
144
+ assignments.push(toAssignment(candidate, 'Primary', 'Primary', score, 'explicit-primary', inclusion));
145
+ continue;
146
+ }
147
+ if (inclusion === 'More') {
148
+ assignments.push(toAssignment(candidate, 'Detail', 'More', score, 'explicit-detail', inclusion));
149
+ continue;
150
+ }
151
+ untagged.push({ candidate, score });
152
+ }
153
+ if (policy === 'keep-all-primary') {
154
+ for (const item of untagged) {
155
+ assignments.push(toAssignment(item.candidate, 'Primary', 'Primary', item.score, 'keep-all-primary', null));
156
+ }
157
+ return { Policy: policy, Budget: budget, Assignments: sortAssignments(assignments) };
158
+ }
159
+ if (untagged.length <= budget) {
160
+ for (const item of untagged) {
161
+ assignments.push(toAssignment(item.candidate, 'Primary', 'Primary', item.score, 'under-budget', null));
162
+ }
163
+ return { Policy: policy, Budget: budget, Assignments: sortAssignments(assignments) };
164
+ }
165
+ const ranked = [...untagged].sort(compareUntagged);
166
+ ranked.forEach((item, index) => {
167
+ const isPrimary = index < budget;
168
+ assignments.push(toAssignment(item.candidate, isPrimary ? 'Primary' : 'Detail', isPrimary ? 'Primary' : 'More', item.score, isPrimary ? 'ranked-primary' : 'ranked-detail', null));
169
+ });
170
+ return { Policy: policy, Budget: budget, Assignments: sortAssignments(assignments) };
171
+ }
172
+ function resolveBudget(raw) {
173
+ if (raw == null || !Number.isFinite(raw))
174
+ return DEFAULT_PRIMARY_RELATED_BUDGET;
175
+ return Math.max(0, Math.floor(raw));
176
+ }
177
+ function toAssignment(candidate, role, inclusion, score, reason, explicitInclusion) {
178
+ const explicitRole = explicitInclusion === 'Primary' ? 'Primary'
179
+ : explicitInclusion === 'More' ? 'Detail'
180
+ : null;
181
+ return {
182
+ RelationshipID: candidate.ID,
183
+ RelatedEntity: candidate.RelatedEntity,
184
+ RelatedEntityID: candidate.RelatedEntityID,
185
+ RelatedEntityJoinField: candidate.RelatedEntityJoinField,
186
+ Role: role,
187
+ Inclusion: inclusion,
188
+ Score: score,
189
+ Reason: reason,
190
+ ExplicitFormRole: explicitRole,
191
+ ExplicitInclusion: explicitInclusion,
192
+ JoinFields: ReadRelationshipJoinFields(candidate.Configuration),
193
+ };
194
+ }
195
+ /**
196
+ * When one relationship to a related entity carries `join.fields`, sibling
197
+ * FKs to that same entity with no explicit inclusion are not candidates.
198
+ */
199
+ function impliedJoinSiblingNoneIds(candidates) {
200
+ const ownerKeys = new Set();
201
+ for (const candidate of candidates) {
202
+ if (ReadRelationshipJoinFields(candidate.Configuration)) {
203
+ ownerKeys.add(relatedEntityKey(candidate));
204
+ }
205
+ }
206
+ const noneIds = new Set();
207
+ if (ownerKeys.size === 0)
208
+ return noneIds;
209
+ for (const candidate of candidates) {
210
+ if (!ownerKeys.has(relatedEntityKey(candidate)))
211
+ continue;
212
+ if (ReadRelationshipInclusion(candidate.Configuration) != null)
213
+ continue;
214
+ if (ReadRelationshipJoinFields(candidate.Configuration))
215
+ continue;
216
+ noneIds.add(candidate.ID);
217
+ }
218
+ return noneIds;
219
+ }
220
+ function relatedEntityKey(candidate) {
221
+ const id = (candidate.RelatedEntityID ?? '').trim().toLowerCase();
222
+ if (id.length > 0)
223
+ return id;
224
+ return (candidate.RelatedEntity ?? '').trim().toLowerCase();
225
+ }
226
+ /**
227
+ * L3 install overlay. Pins Inclusion / JoinFields on matching relationship
228
+ * assignments. Later Sequence wins. Contribution rules are applied by the
229
+ * chrome resolver (they are not ranker assignments).
230
+ */
231
+ export function ApplyFormChromeRules(parentEntityId, assignments, rules) {
232
+ const parent = parentEntityId.trim().toLowerCase();
233
+ if (parent.length === 0 || rules.length === 0)
234
+ return [...assignments];
235
+ const applicable = rules
236
+ .filter((rule) => rule.TargetKind === 'Relationship' && idsEqual(rule.EntityID, parent))
237
+ .sort((a, b) => (a.Sequence ?? 0) - (b.Sequence ?? 0));
238
+ if (applicable.length === 0)
239
+ return [...assignments];
240
+ return assignments.map((assignment) => {
241
+ const rule = lastMatchingRelationshipRule(applicable, assignment);
242
+ return rule ? applyRelationshipRule(assignment, rule) : assignment;
243
+ });
244
+ }
245
+ export function ContributionInclusionFromRules(parentEntityId, contributionKey, rules) {
246
+ const parent = parentEntityId.trim().toLowerCase();
247
+ const key = contributionKey.trim().toLowerCase();
248
+ if (parent.length === 0 || key.length === 0)
249
+ return null;
250
+ const matches = rules
251
+ .filter((rule) => rule.TargetKind === 'Contribution'
252
+ && idsEqual(rule.EntityID, parent)
253
+ && (rule.ContributionKey ?? '').trim().toLowerCase() === key)
254
+ .sort((a, b) => (a.Sequence ?? 0) - (b.Sequence ?? 0));
255
+ return matches.at(-1)?.Inclusion ?? null;
256
+ }
257
+ function lastMatchingRelationshipRule(rules, assignment) {
258
+ const matches = rules.filter((rule) => idsEqual(rule.RelatedEntityID, assignment.RelatedEntityID));
259
+ return matches.at(-1);
260
+ }
261
+ function applyRelationshipRule(assignment, rule) {
262
+ const inclusion = rule.Inclusion;
263
+ const role = inclusion === 'Primary' ? 'Primary' : 'Detail';
264
+ const reason = inclusion === 'Primary' ? 'install-primary'
265
+ : inclusion === 'More' ? 'install-more'
266
+ : 'install-none';
267
+ const join = rule.JoinFields && rule.JoinFields.length > 0
268
+ ? rule.JoinFields
269
+ : assignment.JoinFields;
270
+ return { ...assignment, Role: role, Inclusion: inclusion, Reason: reason, JoinFields: join };
271
+ }
272
+ function idsEqual(a, b) {
273
+ return (a ?? '').trim().toLowerCase() === (b ?? '').trim().toLowerCase()
274
+ && (a ?? '').trim().length > 0;
275
+ }
276
+ function sortAssignments(assignments) {
277
+ return [...assignments].sort((a, b) => {
278
+ if (b.Score !== a.Score)
279
+ return b.Score - a.Score;
280
+ return a.RelatedEntity.localeCompare(b.RelatedEntity);
281
+ });
282
+ }
283
+ function compareUntagged(a, b) {
284
+ if (b.score !== a.score)
285
+ return b.score - a.score;
286
+ const aSeq = effectiveSequence(a.candidate.Sequence);
287
+ const bSeq = effectiveSequence(b.candidate.Sequence);
288
+ if (aSeq !== bSeq)
289
+ return aSeq - bSeq;
290
+ return a.candidate.RelatedEntity.localeCompare(b.candidate.RelatedEntity);
291
+ }
292
+ function isOneToMany(candidate) {
293
+ if (hasText(candidate.JoinView))
294
+ return false;
295
+ const type = (candidate.Type ?? '').trim().toUpperCase();
296
+ if (type.length === 0)
297
+ return true;
298
+ return type === 'ONE TO MANY';
299
+ }
300
+ function inboundHubBoost(count) {
301
+ if (count == null || count <= 2)
302
+ return 0;
303
+ return Math.min(RELATED_ROLE_SCORE.InboundHubCap, Math.round(20 * Math.log2(count)));
304
+ }
305
+ function createdByJoinPenalty(joinField) {
306
+ const field = (joinField ?? '').trim();
307
+ if (/^(CreatedBy|UpdatedBy|DeletedBy|OwnedBy)/i.test(field)) {
308
+ return RELATED_ROLE_SCORE.CreatedByJoin;
309
+ }
310
+ return 0;
311
+ }
312
+ function satelliteNamePenalty(relatedEntity) {
313
+ const name = (relatedEntity ?? '').toLowerCase();
314
+ if (/(activit|comment|log|notification|exemption|intent|assignment|dependenc|decision|tag link|stored value|payment method|entitlement|promotion code)/.test(name)) {
315
+ return RELATED_ROLE_SCORE.SatelliteName;
316
+ }
317
+ return 0;
318
+ }
319
+ function effectiveSequence(sequence) {
320
+ if (sequence == null || sequence === 0)
321
+ return 999;
322
+ return sequence;
323
+ }
324
+ function isPlatformSchema(schemaName) {
325
+ return (schemaName ?? '').trim().toLowerCase() === PLATFORM_SCHEMA_NAME;
326
+ }
327
+ function schemasEqual(a, b) {
328
+ return (a ?? '').trim().toLowerCase() === (b ?? '').trim().toLowerCase()
329
+ && (a ?? '').trim().length > 0;
330
+ }
331
+ function hasText(value) {
332
+ return value != null && value.trim().length > 0;
333
+ }
334
+ /**
335
+ * Safely parses an `EntityField.Configuration` JSON string or returns the object.
336
+ */
337
+ export function ParseEntityFieldConfiguration(raw) {
338
+ if (raw == null)
339
+ return null;
340
+ if (typeof raw === 'object')
341
+ return raw;
342
+ if (typeof raw !== 'string' || raw.trim().length === 0)
343
+ return null;
344
+ return SafeJSONParse(raw, false) ?? null;
345
+ }
346
+ //# sourceMappingURL=entityConfiguration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entityConfiguration.js","sourceRoot":"","sources":["../../src/generic/entityConfiguration.ts"],"names":[],"mappings":"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"}