@memberjunction/core-entities-server 6.2.0-edge.4 → 6.2.0-edge.6

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 (109) hide show
  1. package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts +9 -3
  2. package/dist/custom/MJAIAgentSessionEntityServer.server.d.ts.map +1 -1
  3. package/dist/custom/MJAIAgentSessionEntityServer.server.js +21 -6
  4. package/dist/custom/MJAIAgentSessionEntityServer.server.js.map +1 -1
  5. package/dist/custom/MJComponentEntityServer.server.d.ts +9 -0
  6. package/dist/custom/MJComponentEntityServer.server.d.ts.map +1 -1
  7. package/dist/custom/MJComponentEntityServer.server.js +25 -1
  8. package/dist/custom/MJComponentEntityServer.server.js.map +1 -1
  9. package/dist/custom/MJConversationEntityServer.server.d.ts +13 -0
  10. package/dist/custom/MJConversationEntityServer.server.d.ts.map +1 -0
  11. package/dist/custom/MJConversationEntityServer.server.js +33 -0
  12. package/dist/custom/MJConversationEntityServer.server.js.map +1 -0
  13. package/dist/custom/MJDashboardEntityServer.server.d.ts +14 -0
  14. package/dist/custom/MJDashboardEntityServer.server.d.ts.map +1 -0
  15. package/dist/custom/MJDashboardEntityServer.server.js +38 -0
  16. package/dist/custom/MJDashboardEntityServer.server.js.map +1 -0
  17. package/dist/custom/MJDataContextItemEntityServer.server.d.ts +33 -0
  18. package/dist/custom/MJDataContextItemEntityServer.server.d.ts.map +1 -0
  19. package/dist/custom/MJDataContextItemEntityServer.server.js +84 -0
  20. package/dist/custom/MJDataContextItemEntityServer.server.js.map +1 -0
  21. package/dist/custom/MJDuplicateRunEntityServer.server.d.ts +34 -2
  22. package/dist/custom/MJDuplicateRunEntityServer.server.d.ts.map +1 -1
  23. package/dist/custom/MJDuplicateRunEntityServer.server.js +103 -23
  24. package/dist/custom/MJDuplicateRunEntityServer.server.js.map +1 -1
  25. package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.d.ts +73 -0
  26. package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.d.ts.map +1 -0
  27. package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.js +391 -0
  28. package/dist/custom/MJEntityAlternateBaseViewEntityServer.server.js.map +1 -0
  29. package/dist/custom/MJEntityFieldPermissionEntityServer.server.d.ts +96 -22
  30. package/dist/custom/MJEntityFieldPermissionEntityServer.server.d.ts.map +1 -1
  31. package/dist/custom/MJEntityFieldPermissionEntityServer.server.js +239 -55
  32. package/dist/custom/MJEntityFieldPermissionEntityServer.server.js.map +1 -1
  33. package/dist/custom/MJFileEntityServer.server.d.ts +45 -0
  34. package/dist/custom/MJFileEntityServer.server.d.ts.map +1 -0
  35. package/dist/custom/MJFileEntityServer.server.js +101 -0
  36. package/dist/custom/MJFileEntityServer.server.js.map +1 -0
  37. package/dist/custom/MJQueryEntityServer.server.d.ts +13 -1
  38. package/dist/custom/MJQueryEntityServer.server.d.ts.map +1 -1
  39. package/dist/custom/MJQueryEntityServer.server.js +56 -8
  40. package/dist/custom/MJQueryEntityServer.server.js.map +1 -1
  41. package/dist/custom/MJQuerySQLEntityServer.server.js +3 -3
  42. package/dist/custom/MJQuerySQLEntityServer.server.js.map +1 -1
  43. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.d.ts +26 -14
  44. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.d.ts.map +1 -1
  45. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.js +57 -32
  46. package/dist/custom/MJRowLevelSecurityFilterEntityServer.server.js.map +1 -1
  47. package/dist/custom/MJUserRoleEntityServer.server.d.ts +74 -7
  48. package/dist/custom/MJUserRoleEntityServer.server.d.ts.map +1 -1
  49. package/dist/custom/MJUserRoleEntityServer.server.js +206 -20
  50. package/dist/custom/MJUserRoleEntityServer.server.js.map +1 -1
  51. package/dist/custom/MJUserRoutineEntityServer.server.d.ts.map +1 -1
  52. package/dist/custom/MJUserRoutineEntityServer.server.js +12 -3
  53. package/dist/custom/MJUserRoutineEntityServer.server.js.map +1 -1
  54. package/dist/custom/MJUserViewEntityServer.server.d.ts +43 -1
  55. package/dist/custom/MJUserViewEntityServer.server.d.ts.map +1 -1
  56. package/dist/custom/MJUserViewEntityServer.server.js +169 -11
  57. package/dist/custom/MJUserViewEntityServer.server.js.map +1 -1
  58. package/dist/custom/MJVectorIndexEntityServer.server.d.ts +83 -11
  59. package/dist/custom/MJVectorIndexEntityServer.server.d.ts.map +1 -1
  60. package/dist/custom/MJVectorIndexEntityServer.server.js +285 -42
  61. package/dist/custom/MJVectorIndexEntityServer.server.js.map +1 -1
  62. package/dist/custom/anonymousOwnershipKeyGuard.d.ts +42 -0
  63. package/dist/custom/anonymousOwnershipKeyGuard.d.ts.map +1 -0
  64. package/dist/custom/anonymousOwnershipKeyGuard.js +36 -0
  65. package/dist/custom/anonymousOwnershipKeyGuard.js.map +1 -0
  66. package/dist/custom/approvalStamp.d.ts +37 -0
  67. package/dist/custom/approvalStamp.d.ts.map +1 -0
  68. package/dist/custom/approvalStamp.js +67 -0
  69. package/dist/custom/approvalStamp.js.map +1 -0
  70. package/dist/custom/fieldPermissionAccess.d.ts +31 -0
  71. package/dist/custom/fieldPermissionAccess.d.ts.map +1 -0
  72. package/dist/custom/fieldPermissionAccess.js +38 -0
  73. package/dist/custom/fieldPermissionAccess.js.map +1 -0
  74. package/dist/custom/fieldPermissionReconciler.d.ts.map +1 -1
  75. package/dist/custom/fieldPermissionReconciler.js +12 -2
  76. package/dist/custom/fieldPermissionReconciler.js.map +1 -1
  77. package/dist/custom/query-extraction/pipeline.d.ts.map +1 -1
  78. package/dist/custom/query-extraction/pipeline.js +56 -5
  79. package/dist/custom/query-extraction/pipeline.js.map +1 -1
  80. package/dist/custom/query-extraction/resolve.d.ts.map +1 -1
  81. package/dist/custom/query-extraction/resolve.js +25 -7
  82. package/dist/custom/query-extraction/resolve.js.map +1 -1
  83. package/dist/custom/query-extraction/sync.d.ts +1 -1
  84. package/dist/custom/query-extraction/sync.d.ts.map +1 -1
  85. package/dist/custom/query-extraction/sync.js +84 -21
  86. package/dist/custom/query-extraction/sync.js.map +1 -1
  87. package/dist/custom/query-extraction/types.d.ts +7 -0
  88. package/dist/custom/query-extraction/types.d.ts.map +1 -1
  89. package/dist/custom/rowFilterValidation.d.ts +47 -2
  90. package/dist/custom/rowFilterValidation.d.ts.map +1 -1
  91. package/dist/custom/rowFilterValidation.js +122 -11
  92. package/dist/custom/rowFilterValidation.js.map +1 -1
  93. package/dist/custom/systemUserGuardState.d.ts +73 -0
  94. package/dist/custom/systemUserGuardState.d.ts.map +1 -0
  95. package/dist/custom/systemUserGuardState.js +161 -0
  96. package/dist/custom/systemUserGuardState.js.map +1 -0
  97. package/dist/custom/template-extraction/parser.js +5 -2
  98. package/dist/custom/template-extraction/parser.js.map +1 -1
  99. package/dist/custom/template-extraction/pipeline.d.ts +6 -1
  100. package/dist/custom/template-extraction/pipeline.d.ts.map +1 -1
  101. package/dist/custom/template-extraction/pipeline.js +15 -6
  102. package/dist/custom/template-extraction/pipeline.js.map +1 -1
  103. package/dist/custom/template-extraction/types.d.ts +2 -2
  104. package/dist/custom/template-extraction/types.d.ts.map +1 -1
  105. package/dist/index.d.ts +7 -0
  106. package/dist/index.d.ts.map +1 -1
  107. package/dist/index.js +7 -0
  108. package/dist/index.js.map +1 -1
  109. package/package.json +30 -30
@@ -5,10 +5,42 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
5
5
  return c > 3 && r && Object.defineProperty(target, key, r), r;
6
6
  };
7
7
  import { BaseEntity, LogError, LogStatus, PotentialDuplicateRequest, RunView } from "@memberjunction/core";
8
- import { RegisterClass, GetGlobalObjectStore } from "@memberjunction/global";
8
+ import { RegisterClass, GetGlobalObjectStore, EscapeSQLString, UUIDsEqual } from "@memberjunction/global";
9
9
  import { MJDuplicateRunEntity } from "@memberjunction/core-entities";
10
10
  import { DuplicateRecordDetector } from "@memberjunction/ai-vector-dupe";
11
11
  const PIPELINE_PROGRESS_TOPIC = 'PIPELINE_PROGRESS';
12
+ /** Entity Document Type name of documents built for duplicate detection. */
13
+ const RECORD_DUPLICATE_DOCUMENT_TYPE = 'Record Duplicate';
14
+ /**
15
+ * Chooses the default entity document for a new duplicate run that was created without one, from
16
+ * the entity's active documents ordered newest-updated first. A 'Record Duplicate' document wins
17
+ * over any other type: an entity can also have a Search document (MJ ships one for several core
18
+ * entities), whose template and vectors are built for search, not for matching records. Without a
19
+ * 'Record Duplicate' document, the newest active document is used.
20
+ *
21
+ * Only callers that name no document get this default; the Duplicates tab always names the one
22
+ * the user picked.
23
+ *
24
+ * @param activeDocuments the entity's active documents, newest `__mj_UpdatedAt` first
25
+ * @returns the document to use, or null when there is none
26
+ */
27
+ export function PickDuplicateDetectionDocument(activeDocuments) {
28
+ const recordDuplicate = activeDocuments.find(d => d.Type === RECORD_DUPLICATE_DOCUMENT_TYPE);
29
+ return recordDuplicate ?? activeDocuments[0] ?? null;
30
+ }
31
+ /**
32
+ * Checks that the entity document a run names belongs to the run's entity.
33
+ *
34
+ * @param entityDocument the run's document
35
+ * @param entityID the run's EntityID
36
+ * @returns why the document cannot be used, or null when it can
37
+ */
38
+ export function CheckRunEntityDocument(entityDocument, entityID) {
39
+ if (!UUIDsEqual(entityDocument.EntityID, entityID)) {
40
+ return `Entity Document "${entityDocument.Name}" belongs to a different entity than this duplicate run`;
41
+ }
42
+ return null;
43
+ }
12
44
  /**
13
45
  * Key under which we stash the "detection in flight" set in the MJ global object
14
46
  * store. Using the global store (rather than a plain module-level variable) keeps
@@ -40,13 +72,21 @@ function detectionInFlightSet() {
40
72
  const PHASE_TO_STAGE = {
41
73
  'Loading': 'extract',
42
74
  'Vectorizing': 'vectorize',
43
- 'Embedding': 'autotag',
75
+ 'Embedding': 'extract',
44
76
  'Querying': 'extract',
45
77
  'Matching': 'autotag',
46
- 'Merging': 'complete'
78
+ 'Merging': 'autotag'
47
79
  };
48
80
  let MJDuplicateRunEntityServer = class MJDuplicateRunEntityServer extends MJDuplicateRunEntity {
49
81
  async Save(options) {
82
+ // A run must name its entity document. Server-side callers that create a run without one
83
+ // (GetRecordDuplicates, scripts) get the entity's default duplicate-detection document.
84
+ if (!this.IsSaved && !this.EntityDocumentID) {
85
+ const defaultDocument = await this.findDefaultEntityDocument();
86
+ if (defaultDocument) {
87
+ this.EntityDocumentID = defaultDocument.ID;
88
+ }
89
+ }
50
90
  const saveResult = await super.Save(options);
51
91
  // Only kick off detection on the INITIAL save of an unfinished run, and never
52
92
  // while a detection pass for this run is already in flight. The detector saves
@@ -68,7 +108,7 @@ let MJDuplicateRunEntityServer = class MJDuplicateRunEntityServer extends MJDupl
68
108
  }
69
109
  /**
70
110
  * Run duplicate detection asynchronously. On failure, updates the run's
71
- * ProcessingStatus to 'Error' so the UI can surface the problem.
111
+ * ProcessingStatus to 'Failed' with ProcessingErrorMessage so the UI can surface the problem.
72
112
  */
73
113
  async runDetectionAsync() {
74
114
  const startTime = Date.now();
@@ -81,23 +121,15 @@ let MJDuplicateRunEntityServer = class MJDuplicateRunEntityServer extends MJDupl
81
121
  const request = new PotentialDuplicateRequest();
82
122
  request.EntityID = this.EntityID;
83
123
  request.ListID = this.SourceListID || undefined; // Optional — if not set, scans all entity records
84
- // Find the first active entity document for this entity to get template/thresholds
85
- const rv = new RunView(this.RunViewProviderToUse);
86
- const edResult = await rv.RunView({
87
- EntityName: 'MJ: Entity Documents',
88
- ExtraFilter: `EntityID='${this.EntityID}' AND Status='Active'`,
89
- MaxRows: 1,
90
- ResultType: 'entity_object'
91
- }, this.ContextCurrentUser);
92
- if (edResult.Success && edResult.Results.length > 0) {
93
- request.EntityDocumentID = edResult.Results[0].ID;
94
- }
124
+ // The run's entity document supplies the template, vectors and thresholds.
125
+ const entityDocument = await this.loadRunEntityDocument();
126
+ request.EntityDocumentID = entityDocument.ID;
95
127
  // Build detection options with threshold normalization.
96
- // Entity document defaults are 1.0 (100%) which means nothing ever matches.
97
- // Normalize to sensible fallbacks when the stored value is effectively unconfigured.
98
- const potentialThreshold = this.normalizeThreshold(edResult.Success && edResult.Results.length > 0 ? edResult.Results[0].PotentialMatchThreshold : 1.0, 0.70 // fallback: 70% for potential matches
128
+ // A threshold left at 1.0 (100%) matches nothing, so treat it as unconfigured and use
129
+ // the fallback instead.
130
+ const potentialThreshold = this.normalizeThreshold(entityDocument.PotentialMatchThreshold, 0.70 // fallback: 70% for potential matches
99
131
  );
100
- const absoluteThreshold = this.normalizeThreshold(edResult.Success && edResult.Results.length > 0 ? edResult.Results[0].AbsoluteMatchThreshold : 1.0, 0.95 // fallback: 95% for absolute matches
132
+ const absoluteThreshold = this.normalizeThreshold(entityDocument.AbsoluteMatchThreshold, 0.95 // fallback: 95% for absolute matches
101
133
  );
102
134
  const detectionOptions = {
103
135
  DuplicateRunID: this.ID,
@@ -109,19 +141,25 @@ let MJDuplicateRunEntityServer = class MJDuplicateRunEntityServer extends MJDupl
109
141
  };
110
142
  request.Options = detectionOptions;
111
143
  // Publish initial progress
112
- this.publishPipelineNotification('autotag', 0, 0, 0, startTime, 'Starting duplicate detection...');
113
- await detector.GetDuplicateRecords(request, this.ContextCurrentUser);
144
+ this.publishPipelineNotification('extract', 0, 0, 0, startTime, 'Starting duplicate detection...');
145
+ const response = await detector.GetDuplicateRecords(request, this.ContextCurrentUser);
146
+ if (response.Status === 'Error') {
147
+ throw new Error(response.ErrorMessage || 'Duplicate detection failed');
148
+ }
114
149
  LogStatus(`Duplicate detection completed for run ${this.ID}`);
115
150
  // Publish completion
116
151
  this.publishPipelineNotification('complete', 100, 100, 100, startTime);
117
152
  }
118
153
  catch (error) {
119
- LogError(`Duplicate detection error for run ${this.ID}`, undefined, error);
154
+ const errorMsg = error instanceof Error ? error.message : String(error);
155
+ LogError(`Duplicate detection error for run ${this.ID}: ${errorMsg}`, undefined, error);
120
156
  // Publish error
121
- this.publishPipelineNotification('error', 0, 0, 0, startTime, String(error));
157
+ this.publishPipelineNotification('error', 0, 0, 0, startTime, errorMsg);
122
158
  // Update the run record to reflect the error
123
159
  try {
160
+ await this.Load(this.ID);
124
161
  this.ProcessingStatus = 'Failed';
162
+ this.ProcessingErrorMessage = errorMsg;
125
163
  this.EndedAt = new Date();
126
164
  await super.Save();
127
165
  }
@@ -130,6 +168,48 @@ let MJDuplicateRunEntityServer = class MJDuplicateRunEntityServer extends MJDupl
130
168
  }
131
169
  }
132
170
  }
171
+ /**
172
+ * The entity's default duplicate-detection document (see {@link PickDuplicateDetectionDocument}),
173
+ * or null when the entity has no active document.
174
+ */
175
+ async findDefaultEntityDocument() {
176
+ const rv = new RunView(this.RunViewProviderToUse);
177
+ const result = await rv.RunView({
178
+ EntityName: 'MJ: Entity Documents',
179
+ ExtraFilter: `EntityID='${EscapeSQLString(this.EntityID)}' AND Status='Active'`,
180
+ OrderBy: '__mj_UpdatedAt DESC',
181
+ ResultType: 'entity_object'
182
+ }, this.ContextCurrentUser);
183
+ if (!result.Success) {
184
+ LogError(`Duplicate run: could not load entity documents for entity ${this.EntityID}: ${result.ErrorMessage}`);
185
+ return null;
186
+ }
187
+ return PickDuplicateDetectionDocument(result.Results);
188
+ }
189
+ /**
190
+ * Loads the entity document this run names. Throws when it is missing or belongs to another
191
+ * entity, which fails the run with that message.
192
+ */
193
+ async loadRunEntityDocument() {
194
+ const rv = new RunView(this.RunViewProviderToUse);
195
+ const result = await rv.RunView({
196
+ EntityName: 'MJ: Entity Documents',
197
+ ExtraFilter: `ID='${EscapeSQLString(this.EntityDocumentID)}'`,
198
+ ResultType: 'entity_object'
199
+ }, this.ContextCurrentUser);
200
+ if (!result.Success) {
201
+ throw new Error(`Could not load Entity Document ${this.EntityDocumentID}: ${result.ErrorMessage}`);
202
+ }
203
+ const entityDocument = result.Results[0];
204
+ if (!entityDocument) {
205
+ throw new Error(`Entity Document ${this.EntityDocumentID} was not found`);
206
+ }
207
+ const problem = CheckRunEntityDocument(entityDocument, this.EntityID);
208
+ if (problem) {
209
+ throw new Error(problem);
210
+ }
211
+ return entityDocument;
212
+ }
133
213
  /**
134
214
  * Convert a DuplicateDetectionProgress callback into a PipelineProgress notification.
135
215
  */
@@ -1 +1 @@
1
- {"version":3,"file":"MJDuplicateRunEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJDuplicateRunEntityServer.server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MJDuplicateRunEntityServer.server.js","sourceRoot":"","sources":["../../src/custom/MJDuplicateRunEntityServer.server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,73 @@
1
+ import { EntitySaveOptions, ValidationResult } from "@memberjunction/core";
2
+ import { MJEntityAlternateBaseViewEntity } from "@memberjunction/core-entities";
3
+ /**
4
+ * Server-side entity subclass for `MJ: Entity Alternate Base Views`.
5
+ *
6
+ * Enforces:
7
+ * - Immutability of `EntityID` on existing saved records
8
+ * - Logical `Name` format (`IsValidAlternateBaseViewName` — non-empty, no `|`, `:`, or leading `//`)
9
+ * - Physical `ViewName` and optional `SchemaName` identifier format (`IsValidSQLIdentifier`)
10
+ * - Same-entity logical `Name` uniqueness
11
+ * - Cross-entity `(EffectiveSchemaName, ViewName)` uniqueness against every entity's
12
+ * `BaseView`, `BaseTable`, and registered `AlternateBaseViews` (D13)
13
+ * - Same-entity `ParentID` hierarchy validation and cycle detection (D15)
14
+ * - Live database row and physical SQL view existence verification in `ValidateAsync`
15
+ * - Automatic AST inference of `ParentID` on save when `ParentID` is unset and
16
+ * the view's SQL definition references a single sibling alternate base view on the same entity (D15)
17
+ */
18
+ export declare class MJEntityAlternateBaseViewEntityServer extends MJEntityAlternateBaseViewEntity {
19
+ Validate(): ValidationResult;
20
+ ValidateAsync(): Promise<ValidationResult>;
21
+ Save(options?: EntitySaveOptions): Promise<boolean>;
22
+ private validateEntityIDImmutability;
23
+ /**
24
+ * Validates `Name`, `ViewName`, and optional `SchemaName` using zero-dependency
25
+ * validators from `@memberjunction/core`.
26
+ */
27
+ private validateNameAndIdentifiers;
28
+ /**
29
+ * Validates:
30
+ * 1. Same-entity logical `Name` uniqueness
31
+ * 2. Cross-entity `(EffectiveSchemaName, ViewName)` uniqueness against every entity's
32
+ * `BaseView`, `BaseTable`, and registered `AlternateBaseViews` (D13)
33
+ */
34
+ private validateUniquenessAndCollisions;
35
+ private checkSameEntityLogicalNameDuplicate;
36
+ private checkCrossEntityPhysicalCollision;
37
+ private checkExistingAlternateViewCollisionsOnEntity;
38
+ /**
39
+ * Validates `ParentID` (when set):
40
+ * - Cannot self-reference (`ParentID === ID`)
41
+ * - Parent must exist and belong to the same `EntityID`
42
+ * - Parent chain must be acyclic
43
+ */
44
+ private validateParentHierarchy;
45
+ private checkCrossEntityParentOwner;
46
+ private checkParentChainForCycle;
47
+ /**
48
+ * Queries `MJ: Entity Alternate Base Views` with `BypassCache: true` so uniqueness,
49
+ * cross-entity collision, and `ParentID` hierarchy checks also catch rows created
50
+ * since the last metadata refresh.
51
+ */
52
+ private validateAgainstLiveDatabaseRows;
53
+ private checkLiveDatabaseRowsForConflicts;
54
+ /**
55
+ * When `Status` is `'Active'` or `'Deprecated'` and a database provider is active, verifies
56
+ * that the physical SQL view exists in the database catalog.
57
+ */
58
+ private validatePhysicalViewExistsIfUsable;
59
+ /**
60
+ * Queries the database catalog for the SQL definition of `EffectiveSchemaName.ViewName`
61
+ * when running against a database provider, then invokes `TryAutoPopulateParentIDFromAST`.
62
+ */
63
+ private resolveAndPopulateParentIDFromDatabase;
64
+ /**
65
+ * Inspects `viewDefinitionSQL` with `SQLParser.ExtractTableRefs` and, if the SQL
66
+ * references exactly one sibling alternate base view on the same entity (without creating
67
+ * a cycle), automatically populates `this.ParentID`.
68
+ */
69
+ TryAutoPopulateParentIDFromAST(viewDefinitionSQL: string): void;
70
+ private findMatchingSiblingsInTableRefs;
71
+ private wouldCreateCycle;
72
+ }
73
+ //# sourceMappingURL=MJEntityAlternateBaseViewEntityServer.server.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"MJEntityAlternateBaseViewEntityServer.server.d.ts","sourceRoot":"","sources":["../../src/custom/MJEntityAlternateBaseViewEntityServer.server.ts"],"names":[],"mappings":"AAAA,OAAO,EAKH,iBAAiB,EAQjB,gBAAgB,EACnB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,+BAA+B,EAAE,MAAM,+BAA+B,CAAC;AAchF;;;;;;;;;;;;;;GAcG;AACH,qBACa,qCAAsC,SAAQ,+BAA+B;IACtE,QAAQ,IAAI,gBAAgB;IAiCtB,aAAa,IAAI,OAAO,CAAC,gBAAgB,CAAC;IAkB1C,IAAI,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC;IAoBzE,OAAO,CAAC,4BAA4B;IAapC;;;OAGG;IACH,OAAO,CAAC,0BAA0B;IAmClC;;;;;OAKG;IACH,OAAO,CAAC,+BAA+B;IAoBvC,OAAO,CAAC,mCAAmC;IAoB3C,OAAO,CAAC,iCAAiC;IA+BzC,OAAO,CAAC,4CAA4C;IAwBpD;;;;;OAKG;IACH,OAAO,CAAC,uBAAuB;IA6B/B,OAAO,CAAC,2BAA2B;IAoBnC,OAAO,CAAC,wBAAwB;IA6BhC;;;;OAIG;YACW,+BAA+B;IA8C7C,OAAO,CAAC,iCAAiC;IAkDzC;;;OAGG;YACW,kCAAkC;IAsChD;;;OAGG;YACW,sCAAsC;IAuCpD;;;;OAIG;IACI,8BAA8B,CAAC,iBAAiB,EAAE,MAAM,GAAG,IAAI;IAkCtE,OAAO,CAAC,+BAA+B;IA0BvC,OAAO,CAAC,gBAAgB;CAoB3B"}