@memberjunction/react-runtime 5.27.1 → 5.28.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.
- package/.turbo/turbo-build.log +12 -12
- package/CHANGELOG.md +11 -0
- package/dist/324.runtime.umd.js +60 -43
- package/dist/runtime.umd.js +816 -342
- package/package.json +6 -6
package/dist/runtime.umd.js
CHANGED
|
@@ -20050,17 +20050,20 @@ var BaseInfo = /*#__PURE__*/function () {
|
|
|
20050
20050
|
if (initData) {
|
|
20051
20051
|
// copy the properties from the init data to the new class instance we are constructing
|
|
20052
20052
|
var keys = Object.keys(initData);
|
|
20053
|
-
var thisKeys = Object.keys(this);
|
|
20054
20053
|
for (var j = 0; j < keys.length; j++) {
|
|
20054
|
+
var key = keys[j];
|
|
20055
20055
|
// make sure it is one of our keys, we don't want to create NEW fields
|
|
20056
|
-
if (
|
|
20057
|
-
|
|
20056
|
+
if (Object.prototype.hasOwnProperty.call(this, key)) {
|
|
20057
|
+
// fast path for exact match first, fallback to length check + lowercasing
|
|
20058
|
+
if ((key === 'DefaultValue' || key.length === 12 && key.toLowerCase() === 'defaultvalue') && initData[key]) {
|
|
20058
20059
|
// strip parens from default value from the DB, if they exist, for example defaults might be ((1)) or (getdate())
|
|
20059
20060
|
// could also be something like (('Pending')) in which case we'll want to remove the SYMMETRIC parens
|
|
20060
|
-
var initialValue = initData[
|
|
20061
|
+
var initialValue = initData[key];
|
|
20061
20062
|
var trueDefault = ExtractActualDefaultValue(initialValue);
|
|
20062
|
-
this[
|
|
20063
|
-
} else
|
|
20063
|
+
this[key] = trueDefault;
|
|
20064
|
+
} else {
|
|
20065
|
+
this[key] = initData[key];
|
|
20066
|
+
}
|
|
20064
20067
|
}
|
|
20065
20068
|
}
|
|
20066
20069
|
}
|
|
@@ -21573,6 +21576,9 @@ function metadata_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-
|
|
|
21573
21576
|
function metadata_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } metadata_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { metadata_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, metadata_regeneratorDefine2(e, r, n, t); }
|
|
21574
21577
|
function metadata_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
21575
21578
|
function metadata_asyncToGenerator(n) { return function () { var t = this, e = arguments; return new Promise(function (r, o) { var a = n.apply(t, e); function _next(n) { metadata_asyncGeneratorStep(a, r, o, _next, _throw, "next", n); } function _throw(n) { metadata_asyncGeneratorStep(a, r, o, _next, _throw, "throw", n); } _next(void 0); }); }; }
|
|
21579
|
+
function metadata_createForOfIteratorHelper(r, e) { var t = "undefined" != typeof Symbol && r[Symbol.iterator] || r["@@iterator"]; if (!t) { if (Array.isArray(r) || (t = metadata_unsupportedIterableToArray(r)) || e && r && "number" == typeof r.length) { t && (r = t); var _n = 0, F = function F() {}; return { s: F, n: function n() { return _n >= r.length ? { done: !0 } : { done: !1, value: r[_n++] }; }, e: function e(r) { throw r; }, f: F }; } throw new TypeError("Invalid attempt to iterate non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); } var o, a = !0, u = !1; return { s: function s() { t = t.call(r); }, n: function n() { var r = t.next(); return a = r.done, r; }, e: function e(r) { u = !0, o = r; }, f: function f() { try { a || null == t.return || t.return(); } finally { if (u) throw o; } } }; }
|
|
21580
|
+
function metadata_unsupportedIterableToArray(r, a) { if (r) { if ("string" == typeof r) return metadata_arrayLikeToArray(r, a); var t = {}.toString.call(r).slice(8, -1); return "Object" === t && r.constructor && (t = r.constructor.name), "Map" === t || "Set" === t ? Array.from(r) : "Arguments" === t || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(t) ? metadata_arrayLikeToArray(r, a) : void 0; } }
|
|
21581
|
+
function metadata_arrayLikeToArray(r, a) { (null == a || a > r.length) && (a = r.length); for (var e = 0, n = Array(a); e < a; e++) n[e] = r[e]; return n; }
|
|
21576
21582
|
function metadata_classCallCheck(a, n) { if (!(a instanceof n)) throw new TypeError("Cannot call a class as a function"); }
|
|
21577
21583
|
function metadata_defineProperties(e, r) { for (var t = 0; t < r.length; t++) { var o = r[t]; o.enumerable = o.enumerable || !1, o.configurable = !0, "value" in o && (o.writable = !0), Object.defineProperty(e, metadata_toPropertyKey(o.key), o); } }
|
|
21578
21584
|
function metadata_createClass(e, r, t) { return r && metadata_defineProperties(e.prototype, r), t && metadata_defineProperties(e, t), Object.defineProperty(e, "prototype", { writable: !1 }), e; }
|
|
@@ -21589,8 +21595,45 @@ function metadata_toPrimitive(t, r) { if ("object" != metadata_typeof(t) || !t)
|
|
|
21589
21595
|
var Metadata = /*#__PURE__*/function () {
|
|
21590
21596
|
function Metadata() {
|
|
21591
21597
|
metadata_classCallCheck(this, Metadata);
|
|
21598
|
+
this._entityMapByName = new Map();
|
|
21599
|
+
this._entityMapByID = new Map();
|
|
21600
|
+
this._entityMapPopulated = false;
|
|
21592
21601
|
}
|
|
21593
21602
|
return metadata_createClass(Metadata, [{
|
|
21603
|
+
key: "PopulateEntityMaps",
|
|
21604
|
+
value:
|
|
21605
|
+
/**
|
|
21606
|
+
* Bolt Optimization: Populate entity maps on demand to ensure O(1) hash map lookups
|
|
21607
|
+
* in EntityByName and EntityByID instead of O(N) array scans.
|
|
21608
|
+
*/
|
|
21609
|
+
function PopulateEntityMaps() {
|
|
21610
|
+
if (this._entityMapPopulated) return;
|
|
21611
|
+
var entities = this.Entities;
|
|
21612
|
+
if (!entities || entities.length === 0) return;
|
|
21613
|
+
this._entityMapByName.clear();
|
|
21614
|
+
this._entityMapByID.clear();
|
|
21615
|
+
var _iterator = metadata_createForOfIteratorHelper(entities),
|
|
21616
|
+
_step;
|
|
21617
|
+
try {
|
|
21618
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
21619
|
+
var e = _step.value;
|
|
21620
|
+
this._entityMapByName.set(e.Name.toLowerCase().trim(), e);
|
|
21621
|
+
if (e.ID) {
|
|
21622
|
+
this._entityMapByID.set((0,dist/* NormalizeUUID */.Xw)(e.ID), e);
|
|
21623
|
+
}
|
|
21624
|
+
}
|
|
21625
|
+
} catch (err) {
|
|
21626
|
+
_iterator.e(err);
|
|
21627
|
+
} finally {
|
|
21628
|
+
_iterator.f();
|
|
21629
|
+
}
|
|
21630
|
+
this._entityMapPopulated = true;
|
|
21631
|
+
}
|
|
21632
|
+
/**
|
|
21633
|
+
* When an application initializes, the Provider package that is being used for that application will handle setting the provider globally via this static property.
|
|
21634
|
+
* This is done so that the provider can be accessed from anywhere in the application without having to pass it around. This pattern is used sparingly in MJ.
|
|
21635
|
+
*/
|
|
21636
|
+
}, {
|
|
21594
21637
|
key: "Refresh",
|
|
21595
21638
|
value: (
|
|
21596
21639
|
/**
|
|
@@ -21602,12 +21645,13 @@ var Metadata = /*#__PURE__*/function () {
|
|
|
21602
21645
|
return metadata_regenerator().w(function (_context) {
|
|
21603
21646
|
while (1) switch (_context.n) {
|
|
21604
21647
|
case 0:
|
|
21648
|
+
this._entityMapPopulated = false;
|
|
21605
21649
|
_context.n = 1;
|
|
21606
21650
|
return Metadata.Provider.Refresh(providerToUse);
|
|
21607
21651
|
case 1:
|
|
21608
21652
|
return _context.a(2, _context.v);
|
|
21609
21653
|
}
|
|
21610
|
-
}, _callee);
|
|
21654
|
+
}, _callee, this);
|
|
21611
21655
|
}));
|
|
21612
21656
|
function Refresh(_x) {
|
|
21613
21657
|
return _Refresh.apply(this, arguments);
|
|
@@ -21644,8 +21688,12 @@ var Metadata = /*#__PURE__*/function () {
|
|
|
21644
21688
|
if (p !== null && p !== void 0 && p.EntityByName) {
|
|
21645
21689
|
return p.EntityByName(entityName);
|
|
21646
21690
|
}
|
|
21647
|
-
} catch (_unused) {/* Provider not set — fall through to
|
|
21691
|
+
} catch (_unused) {/* Provider not set — fall through to search */}
|
|
21648
21692
|
var key = entityName.trim().toLowerCase();
|
|
21693
|
+
this.PopulateEntityMaps();
|
|
21694
|
+
if (this._entityMapPopulated) {
|
|
21695
|
+
return this._entityMapByName.get(key);
|
|
21696
|
+
}
|
|
21649
21697
|
return this.Entities.find(function (e) {
|
|
21650
21698
|
return e.Name.toLowerCase().trim() === key;
|
|
21651
21699
|
});
|
|
@@ -21658,12 +21706,18 @@ var Metadata = /*#__PURE__*/function () {
|
|
|
21658
21706
|
}, {
|
|
21659
21707
|
key: "EntityByID",
|
|
21660
21708
|
value: function EntityByID(entityID) {
|
|
21709
|
+
if (!entityID) return undefined;
|
|
21661
21710
|
try {
|
|
21662
21711
|
var p = Metadata.Provider;
|
|
21663
21712
|
if (p !== null && p !== void 0 && p.EntityByID) {
|
|
21664
21713
|
return p.EntityByID(entityID);
|
|
21665
21714
|
}
|
|
21666
|
-
} catch (_unused2) {/* Provider not set — fall through to
|
|
21715
|
+
} catch (_unused2) {/* Provider not set — fall through to search */}
|
|
21716
|
+
var key = (0,dist/* NormalizeUUID */.Xw)(entityID);
|
|
21717
|
+
this.PopulateEntityMaps();
|
|
21718
|
+
if (this._entityMapPopulated) {
|
|
21719
|
+
return this._entityMapByID.get(key);
|
|
21720
|
+
}
|
|
21667
21721
|
return this.Entities.find(function (e) {
|
|
21668
21722
|
return (0,dist/* UUIDsEqual */.jd)(e.ID, entityID);
|
|
21669
21723
|
});
|
|
@@ -22533,12 +22587,7 @@ var Metadata = /*#__PURE__*/function () {
|
|
|
22533
22587
|
}())
|
|
22534
22588
|
}], [{
|
|
22535
22589
|
key: "Provider",
|
|
22536
|
-
get:
|
|
22537
|
-
/**
|
|
22538
|
-
* When an application initializes, the Provider package that is being used for that application will handle setting the provider globally via this static property.
|
|
22539
|
-
* This is done so that the provider can be accessed from anywhere in the application without having to pass it around. This pattern is used sparingly in MJ.
|
|
22540
|
-
*/
|
|
22541
|
-
function get() {
|
|
22590
|
+
get: function get() {
|
|
22542
22591
|
var g = dist/* MJGlobal */.rt.Instance.GetGlobalObjectStore();
|
|
22543
22592
|
if (g) return g[Metadata._globalProviderKey];else throw new Error('No global object store, so we cant get the static provider');
|
|
22544
22593
|
},
|
|
@@ -24055,7 +24104,7 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
|
|
|
24055
24104
|
}
|
|
24056
24105
|
// copy the Entity Permissions
|
|
24057
24106
|
_this0._Permissions = [];
|
|
24058
|
-
var ep = initData.EntityPermissions || initData._Permissions;
|
|
24107
|
+
var ep = initData.EntityPermissions || initData._Permissions || initData.Permissions;
|
|
24059
24108
|
if (ep) {
|
|
24060
24109
|
for (var _j = 0; _j < ep.length; _j++) {
|
|
24061
24110
|
_this0._Permissions.push(new EntityPermissionInfo(ep[_j]));
|
|
@@ -24063,7 +24112,7 @@ var EntityInfo = /*#__PURE__*/function (_BaseInfo0) {
|
|
|
24063
24112
|
}
|
|
24064
24113
|
// copy the Entity settings
|
|
24065
24114
|
_this0._Settings = [];
|
|
24066
|
-
var es = initData.EntitySettings || initData._Settings;
|
|
24115
|
+
var es = initData.EntitySettings || initData._Settings || initData.Settings;
|
|
24067
24116
|
if (es) {
|
|
24068
24117
|
es.map(function (s) {
|
|
24069
24118
|
return _this0._Settings.push(new EntitySettingInfo(s));
|
|
@@ -26445,15 +26494,70 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
26445
26494
|
function BaseEntity(Entity) {
|
|
26446
26495
|
var Provider = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
26447
26496
|
baseEntity_classCallCheck(this, BaseEntity);
|
|
26497
|
+
/**
|
|
26498
|
+
* Runtime field instances for this record — one `EntityField` per column in `_EntityInfo.Fields`.
|
|
26499
|
+
* Each holds the current value, old value, dirty state, and per-field validation. Populated
|
|
26500
|
+
* in `init()` and used as the primary data store for Get/Set/Save/validate.
|
|
26501
|
+
*/
|
|
26448
26502
|
this._Fields = [];
|
|
26503
|
+
/**
|
|
26504
|
+
* Whether a database record has been loaded into this instance (via `Load`, `NewRecord`,
|
|
26505
|
+
* `LoadFromData`, etc.). Used to gate operations that require loaded state and to distinguish
|
|
26506
|
+
* uninitialized instances from genuinely empty new records.
|
|
26507
|
+
*/
|
|
26449
26508
|
this._recordLoaded = false;
|
|
26509
|
+
/**
|
|
26510
|
+
* The user context to use for server-side operations (permission checks, audit trails).
|
|
26511
|
+
* On the server this MUST be set per-request; on the client it may be null since the
|
|
26512
|
+
* provider knows the logged-in user implicitly.
|
|
26513
|
+
*/
|
|
26450
26514
|
this._contextCurrentUser = null;
|
|
26515
|
+
/**
|
|
26516
|
+
* The transaction group this entity is enlisted in, if any. When set, `Save()` and `Delete()`
|
|
26517
|
+
* defer their provider calls to the group's coordinated `Submit()` so a batch of operations
|
|
26518
|
+
* commits atomically.
|
|
26519
|
+
*/
|
|
26451
26520
|
this._transactionGroup = null;
|
|
26521
|
+
/**
|
|
26522
|
+
* Append-only log of `BaseEntityResult` objects from each Save/Delete attempt. The most
|
|
26523
|
+
* recent entry is exposed via `LatestResult` for error inspection after a failure.
|
|
26524
|
+
*/
|
|
26452
26525
|
this._resultHistory = [];
|
|
26526
|
+
/**
|
|
26527
|
+
* The `IEntityDataProvider` routing DB operations for this specific entity. Resolved lazily
|
|
26528
|
+
* via `ProviderToUse` and may differ from `Metadata.Provider` when a custom provider is
|
|
26529
|
+
* configured per-entity (e.g., entities served from an external system).
|
|
26530
|
+
*/
|
|
26453
26531
|
this._provider = null;
|
|
26532
|
+
/**
|
|
26533
|
+
* Whether this entity instance has ever been persisted (via a successful Save). Distinct
|
|
26534
|
+
* from `IsSaved` because `NewRecord()` resets dirty state; this flag remains true once set.
|
|
26535
|
+
* Used by `Save()` to decide between spCreate vs spUpdate.
|
|
26536
|
+
*/
|
|
26454
26537
|
this._everSaved = false;
|
|
26538
|
+
/**
|
|
26539
|
+
* Whether a `Load*` operation is currently in flight. Used to suppress field-change events
|
|
26540
|
+
* and dirty-tracking while bulk-populating fields from the provider response.
|
|
26541
|
+
*/
|
|
26455
26542
|
this._isLoading = false;
|
|
26543
|
+
/**
|
|
26544
|
+
* Shared `Observable` for an in-flight `Delete()` call. Concurrent Delete attempts return
|
|
26545
|
+
* this same observable so the actual provider call only runs once, avoiding double-deletes
|
|
26546
|
+
* and duplicate error reporting.
|
|
26547
|
+
*/
|
|
26456
26548
|
this._pendingDelete$ = null;
|
|
26549
|
+
/**
|
|
26550
|
+
* Lazy `Map<fieldName, EntityField>` cache for O(1) `GetFieldByName()` lookups. Populated
|
|
26551
|
+
* on first call and cleared on `init()` so re-initialized entities rebuild fresh. Replaces
|
|
26552
|
+
* the previous O(N) `_Fields.find()` scan that dominated `SetMany`/setter/serialization paths.
|
|
26553
|
+
*/
|
|
26554
|
+
this._fieldCache = null;
|
|
26555
|
+
/**
|
|
26556
|
+
* Lazy `Map<codeName, EntityField>` cache for O(1) `GetFieldByCodeName()` lookups. Built the
|
|
26557
|
+
* same way as `_fieldCache` but keyed by the JS-safe `CodeName` rather than the DB field
|
|
26558
|
+
* name. Cleared on `init()`.
|
|
26559
|
+
*/
|
|
26560
|
+
this._codeNameCache = null;
|
|
26457
26561
|
/**************************************************************************
|
|
26458
26562
|
* IS-A Type Relationship — Bidirectional Entity Composition
|
|
26459
26563
|
*
|
|
@@ -26553,6 +26657,20 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
26553
26657
|
*/
|
|
26554
26658
|
this._providerTransaction = null;
|
|
26555
26659
|
this._compositeKey = null;
|
|
26660
|
+
// ────────────────────────────────────────────────────────────────────
|
|
26661
|
+
// Restore context — populated by callers immediately before Save() to
|
|
26662
|
+
// mark the resulting RecordChange row as a Restore (Source='Restore'
|
|
26663
|
+
// with RestoredFromID and optional RestoreReason populated).
|
|
26664
|
+
//
|
|
26665
|
+
// The context lives on the entity instance for exactly one Save() and
|
|
26666
|
+
// is consumed by the data provider when it generates the RecordChange
|
|
26667
|
+
// SQL. Callers should set the context, await Save(), then either
|
|
26668
|
+
// explicitly clear it via ClearRestoreContext() or rely on it being
|
|
26669
|
+
// overwritten on the next restore. We deliberately do NOT auto-clear
|
|
26670
|
+
// inside Save() because TransactionGroup execution is deferred — the
|
|
26671
|
+
// provider may capture the context now but use it later.
|
|
26672
|
+
// ────────────────────────────────────────────────────────────────────
|
|
26673
|
+
this._restoreContext = null;
|
|
26556
26674
|
// Holds the current pending save observable (if any)
|
|
26557
26675
|
this._pendingSave$ = null;
|
|
26558
26676
|
/**
|
|
@@ -27317,9 +27435,57 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27317
27435
|
return null;
|
|
27318
27436
|
}
|
|
27319
27437
|
var lcase = fieldName.trim().toLowerCase(); // do this once as we will use it multiple times
|
|
27320
|
-
|
|
27321
|
-
|
|
27322
|
-
|
|
27438
|
+
if (this._fieldCache === null) {
|
|
27439
|
+
this._fieldCache = new Map();
|
|
27440
|
+
var _iterator = baseEntity_createForOfIteratorHelper(this.Fields),
|
|
27441
|
+
_step;
|
|
27442
|
+
try {
|
|
27443
|
+
for (_iterator.s(); !(_step = _iterator.n()).done;) {
|
|
27444
|
+
var f = _step.value;
|
|
27445
|
+
if (!this._fieldCache.has(f.Name.trim().toLowerCase())) {
|
|
27446
|
+
this._fieldCache.set(f.Name.trim().toLowerCase(), f);
|
|
27447
|
+
}
|
|
27448
|
+
}
|
|
27449
|
+
} catch (err) {
|
|
27450
|
+
_iterator.e(err);
|
|
27451
|
+
} finally {
|
|
27452
|
+
_iterator.f();
|
|
27453
|
+
}
|
|
27454
|
+
}
|
|
27455
|
+
return this._fieldCache.get(lcase) || null;
|
|
27456
|
+
}
|
|
27457
|
+
/**
|
|
27458
|
+
* Convenience method to access a field by code name. This method is case-insensitive and will return null if the field is not found.
|
|
27459
|
+
* @param codeName
|
|
27460
|
+
* @returns
|
|
27461
|
+
*/
|
|
27462
|
+
}, {
|
|
27463
|
+
key: "GetFieldByCodeName",
|
|
27464
|
+
value: function GetFieldByCodeName(codeName) {
|
|
27465
|
+
if (!codeName) {
|
|
27466
|
+
return null;
|
|
27467
|
+
}
|
|
27468
|
+
var lcase = codeName.trim().toLowerCase();
|
|
27469
|
+
if (this._codeNameCache === null) {
|
|
27470
|
+
this._codeNameCache = new Map();
|
|
27471
|
+
// First-write-wins on duplicate code names — matches prior Array.find() behavior
|
|
27472
|
+
var _iterator2 = baseEntity_createForOfIteratorHelper(this.Fields),
|
|
27473
|
+
_step2;
|
|
27474
|
+
try {
|
|
27475
|
+
for (_iterator2.s(); !(_step2 = _iterator2.n()).done;) {
|
|
27476
|
+
var f = _step2.value;
|
|
27477
|
+
var codeKey = f.CodeName.trim().toLowerCase();
|
|
27478
|
+
if (!this._codeNameCache.has(codeKey)) {
|
|
27479
|
+
this._codeNameCache.set(codeKey, f);
|
|
27480
|
+
}
|
|
27481
|
+
}
|
|
27482
|
+
} catch (err) {
|
|
27483
|
+
_iterator2.e(err);
|
|
27484
|
+
} finally {
|
|
27485
|
+
_iterator2.f();
|
|
27486
|
+
}
|
|
27487
|
+
}
|
|
27488
|
+
return this._codeNameCache.get(lcase) || null;
|
|
27323
27489
|
}
|
|
27324
27490
|
/**
|
|
27325
27491
|
* Returns true if the object is Dirty, meaning something has changed since it was last saved to the database, and false otherwise. For new records, this will always return true.
|
|
@@ -27481,13 +27647,12 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27481
27647
|
}, {
|
|
27482
27648
|
key: "SetMany",
|
|
27483
27649
|
value: function SetMany(object) {
|
|
27484
|
-
var _this5 = this;
|
|
27485
27650
|
var ignoreNonExistentFields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
27486
27651
|
var replaceOldValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
27487
27652
|
var ignoreActiveStatusAssertions = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
|
|
27488
27653
|
if (!object) throw new Error('calling BaseEntity.SetMany(), object cannot be null or undefined');
|
|
27489
|
-
var
|
|
27490
|
-
var field =
|
|
27654
|
+
for (var key in object) {
|
|
27655
|
+
var field = this.GetFieldByName(key);
|
|
27491
27656
|
if (field) {
|
|
27492
27657
|
// check to see if key matches a field name, if so, set it
|
|
27493
27658
|
var priorActiveStatusAssertions = field.ActiveStatusAssertions; // save the current active status assertions
|
|
@@ -27495,7 +27660,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27495
27660
|
field.ActiveStatusAssertions = false; // disable active status assertions for this field
|
|
27496
27661
|
}
|
|
27497
27662
|
// Use SetLocal here so we set on OUR fields (mirrors for parent fields)
|
|
27498
|
-
|
|
27663
|
+
this.SetLocal(key, object[key]);
|
|
27499
27664
|
if (replaceOldValues) {
|
|
27500
27665
|
field.ResetOldValue();
|
|
27501
27666
|
}
|
|
@@ -27505,16 +27670,14 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27505
27670
|
} else {
|
|
27506
27671
|
// if we don't find a match for the field name, check to see if we have a match for the code name
|
|
27507
27672
|
// because some objects passed in will use the code name
|
|
27508
|
-
var _field =
|
|
27509
|
-
return f.CodeName.trim().toLowerCase() == key.trim().toLowerCase();
|
|
27510
|
-
});
|
|
27673
|
+
var _field = this.GetFieldByCodeName(key);
|
|
27511
27674
|
if (_field) {
|
|
27512
27675
|
var _priorActiveStatusAssertions = _field.ActiveStatusAssertions; // save the current active status assertions
|
|
27513
27676
|
if (ignoreActiveStatusAssertions) {
|
|
27514
27677
|
_field.ActiveStatusAssertions = false; // disable active status assertions for this field
|
|
27515
27678
|
}
|
|
27516
27679
|
// Use SetLocal here so we set on OUR fields (mirrors for parent fields)
|
|
27517
|
-
|
|
27680
|
+
this.SetLocal(_field.Name, object[key]);
|
|
27518
27681
|
if (replaceOldValues) {
|
|
27519
27682
|
_field.ResetOldValue();
|
|
27520
27683
|
}
|
|
@@ -27522,23 +27685,19 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27522
27685
|
_field.ActiveStatusAssertions = _priorActiveStatusAssertions; // restore the active status assertions
|
|
27523
27686
|
}
|
|
27524
27687
|
} else {
|
|
27525
|
-
var
|
|
27688
|
+
var _this$_parentEntityFi3;
|
|
27526
27689
|
// IS-A routing: parent fields may not have local mirrors (virtual EntityField records)
|
|
27527
27690
|
// yet — they'll be handled by the IS-A routing block below, so skip the error/warning
|
|
27528
|
-
if ((
|
|
27529
|
-
|
|
27530
|
-
// parent field — will be forwarded to _parentEntity below
|
|
27691
|
+
if ((_this$_parentEntityFi3 = this._parentEntityFieldNames) !== null && _this$_parentEntityFi3 !== void 0 && _this$_parentEntityFi3.has(key)) {
|
|
27692
|
+
continue; // parent field — will be forwarded to _parentEntity below
|
|
27531
27693
|
}
|
|
27532
27694
|
// if we get here, we have a field that doesn't match either the field name or the code name, so throw an error
|
|
27533
|
-
if (!ignoreNonExistentFields) throw new Error("Field ".concat(key, " does not exist on ").concat(
|
|
27695
|
+
if (!ignoreNonExistentFields) throw new Error("Field ".concat(key, " does not exist on ").concat(this.EntityInfo.Name));else {
|
|
27534
27696
|
// Record field-not-found warning - will be batched and displayed after debounce period
|
|
27535
|
-
dist/* WarningManager */.aJ.Instance.RecordFieldNotFoundWarning(
|
|
27697
|
+
dist/* WarningManager */.aJ.Instance.RecordFieldNotFoundWarning(this.EntityInfo.Name, key, 'BaseEntity::SetMany');
|
|
27536
27698
|
}
|
|
27537
27699
|
}
|
|
27538
27700
|
}
|
|
27539
|
-
};
|
|
27540
|
-
for (var key in object) {
|
|
27541
|
-
if (_loop(key)) continue;
|
|
27542
27701
|
}
|
|
27543
27702
|
// IS-A routing: forward parent fields to _parentEntity for authoritative state
|
|
27544
27703
|
// This ensures proper OldValue tracking and dirty flags on the parent entity
|
|
@@ -27595,11 +27754,11 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27595
27754
|
var oldValues = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
|
|
27596
27755
|
var onlyDirtyFields = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;
|
|
27597
27756
|
var obj = {};
|
|
27598
|
-
var
|
|
27599
|
-
|
|
27757
|
+
var _iterator3 = baseEntity_createForOfIteratorHelper(this.Fields),
|
|
27758
|
+
_step3;
|
|
27600
27759
|
try {
|
|
27601
|
-
for (
|
|
27602
|
-
var field =
|
|
27760
|
+
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
27761
|
+
var field = _step3.value;
|
|
27603
27762
|
if (!onlyDirtyFields || onlyDirtyFields && field.Dirty) {
|
|
27604
27763
|
var tempStatus = field.ActiveStatusAssertions; // save the current active status assertions
|
|
27605
27764
|
field.ActiveStatusAssertions = false; // disable active status assertions for this field
|
|
@@ -27613,9 +27772,9 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27613
27772
|
// IS-A composition: merge parent entity data with own data.
|
|
27614
27773
|
// Parent's GetAll() recursively collects from its own parent for N-level chains.
|
|
27615
27774
|
} catch (err) {
|
|
27616
|
-
|
|
27775
|
+
_iterator3.e(err);
|
|
27617
27776
|
} finally {
|
|
27618
|
-
|
|
27777
|
+
_iterator3.f();
|
|
27619
27778
|
}
|
|
27620
27779
|
if (this._parentEntity) {
|
|
27621
27780
|
var parentData = this._parentEntity.GetAll(oldValues, onlyDirtyFields);
|
|
@@ -27694,12 +27853,12 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27694
27853
|
key: "GetDataObject",
|
|
27695
27854
|
value: (function () {
|
|
27696
27855
|
var _GetDataObject = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee8() {
|
|
27697
|
-
var
|
|
27856
|
+
var _this5 = this;
|
|
27698
27857
|
var params,
|
|
27699
27858
|
obj,
|
|
27700
27859
|
key,
|
|
27701
27860
|
v,
|
|
27702
|
-
|
|
27861
|
+
_loop,
|
|
27703
27862
|
i,
|
|
27704
27863
|
_args9 = arguments;
|
|
27705
27864
|
return baseEntity_regenerator().w(function (_context9) {
|
|
@@ -27719,12 +27878,12 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27719
27878
|
_context9.n = 3;
|
|
27720
27879
|
break;
|
|
27721
27880
|
}
|
|
27722
|
-
|
|
27881
|
+
_loop = /*#__PURE__*/baseEntity_regenerator().m(function _loop() {
|
|
27723
27882
|
var re, pre, reData, msg;
|
|
27724
27883
|
return baseEntity_regenerator().w(function (_context8) {
|
|
27725
27884
|
while (1) switch (_context8.n) {
|
|
27726
27885
|
case 0:
|
|
27727
|
-
re =
|
|
27886
|
+
re = _this5._EntityInfo.RelatedEntities[i];
|
|
27728
27887
|
pre = params.relatedEntityList ? params.relatedEntityList.find(function (r) {
|
|
27729
27888
|
return r.relatedEntityName === re.RelatedEntity;
|
|
27730
27889
|
}) : null;
|
|
@@ -27733,7 +27892,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27733
27892
|
break;
|
|
27734
27893
|
}
|
|
27735
27894
|
_context8.n = 1;
|
|
27736
|
-
return
|
|
27895
|
+
return _this5.GetRelatedEntityDataExt(re, pre.filter, pre.maxRecords);
|
|
27737
27896
|
case 1:
|
|
27738
27897
|
reData = _context8.v;
|
|
27739
27898
|
if (reData) {
|
|
@@ -27750,7 +27909,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27750
27909
|
case 2:
|
|
27751
27910
|
return _context8.a(2);
|
|
27752
27911
|
}
|
|
27753
|
-
},
|
|
27912
|
+
}, _loop);
|
|
27754
27913
|
});
|
|
27755
27914
|
i = 0;
|
|
27756
27915
|
case 1:
|
|
@@ -27758,7 +27917,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27758
27917
|
_context9.n = 3;
|
|
27759
27918
|
break;
|
|
27760
27919
|
}
|
|
27761
|
-
return _context9.d(_regeneratorValues(
|
|
27920
|
+
return _context9.d(_regeneratorValues(_loop()), 2);
|
|
27762
27921
|
case 2:
|
|
27763
27922
|
i++;
|
|
27764
27923
|
_context9.n = 1;
|
|
@@ -27848,21 +28007,23 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27848
28007
|
this._resultHistory = [];
|
|
27849
28008
|
this._recordLoaded = false;
|
|
27850
28009
|
this._Fields = [];
|
|
28010
|
+
this._fieldCache = null;
|
|
28011
|
+
this._codeNameCache = null;
|
|
27851
28012
|
if (this.EntityInfo) {
|
|
27852
|
-
var
|
|
27853
|
-
|
|
28013
|
+
var _iterator4 = baseEntity_createForOfIteratorHelper(this.EntityInfo.Fields),
|
|
28014
|
+
_step4;
|
|
27854
28015
|
try {
|
|
27855
|
-
for (
|
|
27856
|
-
var rawField =
|
|
28016
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
28017
|
+
var rawField = _step4.value;
|
|
27857
28018
|
var key = this.EntityInfo.Name + '.' + rawField.Name;
|
|
27858
28019
|
// support for sub-classes of the EntityField class
|
|
27859
28020
|
var newField = dist/* MJGlobal */.rt.Instance.ClassFactory.CreateInstance(EntityField, key, rawField);
|
|
27860
28021
|
this.Fields.push(newField);
|
|
27861
28022
|
}
|
|
27862
28023
|
} catch (err) {
|
|
27863
|
-
|
|
28024
|
+
_iterator4.e(err);
|
|
27864
28025
|
} finally {
|
|
27865
|
-
|
|
28026
|
+
_iterator4.f();
|
|
27866
28027
|
}
|
|
27867
28028
|
}
|
|
27868
28029
|
}
|
|
@@ -27880,11 +28041,11 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27880
28041
|
var replaceOldValues = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
|
|
27881
28042
|
try {
|
|
27882
28043
|
// iterate through all of OUR fields and set them to the value of the other object, if they exist in the other object
|
|
27883
|
-
var
|
|
27884
|
-
|
|
28044
|
+
var _iterator5 = baseEntity_createForOfIteratorHelper(this.Fields),
|
|
28045
|
+
_step5;
|
|
27885
28046
|
try {
|
|
27886
|
-
for (
|
|
27887
|
-
var field =
|
|
28047
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
28048
|
+
var field = _step5.value;
|
|
27888
28049
|
if (!field.IsPrimaryKey || includePrimaryKeys) {
|
|
27889
28050
|
var otherField = other.GetFieldByName(field.Name);
|
|
27890
28051
|
if (otherField) {
|
|
@@ -27896,9 +28057,9 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27896
28057
|
}
|
|
27897
28058
|
}
|
|
27898
28059
|
} catch (err) {
|
|
27899
|
-
|
|
28060
|
+
_iterator5.e(err);
|
|
27900
28061
|
} finally {
|
|
27901
|
-
|
|
28062
|
+
_iterator5.f();
|
|
27902
28063
|
}
|
|
27903
28064
|
return true;
|
|
27904
28065
|
} catch (e) {
|
|
@@ -27928,7 +28089,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27928
28089
|
}, {
|
|
27929
28090
|
key: "NewRecord",
|
|
27930
28091
|
value: function NewRecord(newValues) {
|
|
27931
|
-
var
|
|
28092
|
+
var _this6 = this;
|
|
27932
28093
|
this.init();
|
|
27933
28094
|
this._everSaved = false; // Reset save state for new record
|
|
27934
28095
|
// Clear child entity state — new records don't have children yet
|
|
@@ -27953,7 +28114,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27953
28114
|
newValues.KeyValuePairs.filter(function (kv) {
|
|
27954
28115
|
return kv.Value !== null && kv.Value !== undefined;
|
|
27955
28116
|
}).forEach(function (kv) {
|
|
27956
|
-
|
|
28117
|
+
_this6.Set(kv.FieldName, kv.Value);
|
|
27957
28118
|
});
|
|
27958
28119
|
}
|
|
27959
28120
|
// IS-A composition: propagate PK value to parent entity chain
|
|
@@ -27961,25 +28122,84 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27961
28122
|
if (this._parentEntity) {
|
|
27962
28123
|
this._parentEntity.NewRecord();
|
|
27963
28124
|
// Propagate PK — child and parent must share the same UUID
|
|
27964
|
-
var
|
|
27965
|
-
|
|
28125
|
+
var _iterator6 = baseEntity_createForOfIteratorHelper(this.EntityInfo.PrimaryKeys),
|
|
28126
|
+
_step6;
|
|
27966
28127
|
try {
|
|
27967
|
-
for (
|
|
27968
|
-
var _pk =
|
|
28128
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
28129
|
+
var _pk = _step6.value;
|
|
27969
28130
|
var pkValue = this.Get(_pk.Name);
|
|
27970
28131
|
if (pkValue != null) {
|
|
27971
28132
|
this._parentEntity.Set(_pk.Name, pkValue);
|
|
27972
28133
|
}
|
|
27973
28134
|
}
|
|
27974
28135
|
} catch (err) {
|
|
27975
|
-
|
|
28136
|
+
_iterator6.e(err);
|
|
27976
28137
|
} finally {
|
|
27977
|
-
|
|
28138
|
+
_iterator6.f();
|
|
27978
28139
|
}
|
|
27979
28140
|
}
|
|
27980
28141
|
this.RaiseEvent('new_record', null);
|
|
27981
28142
|
return true;
|
|
27982
28143
|
}
|
|
28144
|
+
/**
|
|
28145
|
+
* Returns the active restore context for the next save, if any.
|
|
28146
|
+
*
|
|
28147
|
+
* Read by the data provider when generating the RecordChange SQL: when
|
|
28148
|
+
* non-null, the resulting RecordChange row is written with
|
|
28149
|
+
* `Source='Restore'`, `RestoredFromID = SourceChangeID`, and
|
|
28150
|
+
* `RestoreReason = Reason`. Returns null for ordinary saves.
|
|
28151
|
+
*/
|
|
28152
|
+
}, {
|
|
28153
|
+
key: "RestoreContext",
|
|
28154
|
+
get: function get() {
|
|
28155
|
+
return this._restoreContext;
|
|
28156
|
+
}
|
|
28157
|
+
/**
|
|
28158
|
+
* Marks the next Save() as a restore from a historical RecordChange row.
|
|
28159
|
+
*
|
|
28160
|
+
* The provider will write a new RecordChange entry with `Source='Restore'`,
|
|
28161
|
+
* `RestoredFromID` pointing at `sourceChangeId`, and `RestoreReason` set to
|
|
28162
|
+
* `reason` (or NULL). This produces an auditable lineage chain that the
|
|
28163
|
+
* timeline UI can render via the `RestoredFromID` foreign key.
|
|
28164
|
+
*
|
|
28165
|
+
* The context is consumed exactly once per Save() and persists on the
|
|
28166
|
+
* entity until either (a) overwritten by a subsequent SetRestoreContext()
|
|
28167
|
+
* call or (b) explicitly cleared via ClearRestoreContext(). It is NOT
|
|
28168
|
+
* auto-cleared inside Save() because TransactionGroup execution is
|
|
28169
|
+
* deferred — see the comment on `_restoreContext` for details.
|
|
28170
|
+
*
|
|
28171
|
+
* @param sourceChangeId The ID of the historical RecordChange row whose
|
|
28172
|
+
* state is being restored. Required; throws if empty.
|
|
28173
|
+
* @param reason Optional user-entered explanation captured at restore
|
|
28174
|
+
* time. Persisted to RecordChange.RestoreReason for audit purposes.
|
|
28175
|
+
*
|
|
28176
|
+
* @example
|
|
28177
|
+
* record.SetRestoreContext(versionId, 'Reverting incorrect Q2 entries');
|
|
28178
|
+
* const ok = await record.Save();
|
|
28179
|
+
* record.ClearRestoreContext();
|
|
28180
|
+
*/
|
|
28181
|
+
}, {
|
|
28182
|
+
key: "SetRestoreContext",
|
|
28183
|
+
value: function SetRestoreContext(sourceChangeId) {
|
|
28184
|
+
var reason = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
|
|
28185
|
+
if (!sourceChangeId || typeof sourceChangeId !== 'string') {
|
|
28186
|
+
throw new Error('BaseEntity.SetRestoreContext: sourceChangeId is required and must be a non-empty string');
|
|
28187
|
+
}
|
|
28188
|
+
this._restoreContext = {
|
|
28189
|
+
SourceChangeID: sourceChangeId,
|
|
28190
|
+
Reason: reason !== null && reason !== void 0 ? reason : null
|
|
28191
|
+
};
|
|
28192
|
+
}
|
|
28193
|
+
/**
|
|
28194
|
+
* Clears any pending restore context. Safe to call when no context is set.
|
|
28195
|
+
* Recommended after Save() returns so a subsequent ordinary save isn't
|
|
28196
|
+
* accidentally tagged as a restore.
|
|
28197
|
+
*/
|
|
28198
|
+
}, {
|
|
28199
|
+
key: "ClearRestoreContext",
|
|
28200
|
+
value: function ClearRestoreContext() {
|
|
28201
|
+
this._restoreContext = null;
|
|
28202
|
+
}
|
|
27983
28203
|
/**
|
|
27984
28204
|
* Saves the current state of the object to the database. Uses the active provider to handle the actual saving of the record.
|
|
27985
28205
|
* If the record is new, it will be created, if it already exists, it will be updated.
|
|
@@ -27994,7 +28214,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
27994
28214
|
key: "Save",
|
|
27995
28215
|
value: (function () {
|
|
27996
28216
|
var _Save = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee1(options) {
|
|
27997
|
-
var
|
|
28217
|
+
var _this7 = this;
|
|
27998
28218
|
return baseEntity_regenerator().w(function (_context10) {
|
|
27999
28219
|
while (1) switch (_context10.n) {
|
|
28000
28220
|
case 0:
|
|
@@ -28014,11 +28234,11 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28014
28234
|
this._pendingSave$ = of(options).pipe(
|
|
28015
28235
|
// Execute the actual save logic.
|
|
28016
28236
|
switchMap(function (opts) {
|
|
28017
|
-
return from(
|
|
28237
|
+
return from(_this7._InnerSave(opts));
|
|
28018
28238
|
}),
|
|
28019
28239
|
// When the save completes (whether successfully or not), clear the pending save observable.
|
|
28020
28240
|
finalize(function () {
|
|
28021
|
-
|
|
28241
|
+
_this7._pendingSave$ = null;
|
|
28022
28242
|
}),
|
|
28023
28243
|
// Ensure that all subscribers get the same result.
|
|
28024
28244
|
shareReplay(1));
|
|
@@ -28042,7 +28262,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28042
28262
|
key: "_InnerSave",
|
|
28043
28263
|
value: (function () {
|
|
28044
28264
|
var _InnerSave2 = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee10(options) {
|
|
28045
|
-
var
|
|
28265
|
+
var _this8 = this;
|
|
28046
28266
|
var currentResultCount, newResult, initialDirtyState, _options, isISAInitiator, _this$ProviderToUse, _this$ProviderToUse$B, txn, parentSaveOptions, parentResult, type, saveSubType, parentEntityInfo, valResult, skipAsyncValidation, asyncResult, data, result, _this$ProviderToUse$C, _this$ProviderToUse2, _isISAInitiator, _t;
|
|
28047
28267
|
return baseEntity_regenerator().w(function (_context11) {
|
|
28048
28268
|
while (1) switch (_context11.p = _context11.n) {
|
|
@@ -28203,10 +28423,10 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28203
28423
|
error = _ref.error;
|
|
28204
28424
|
if (success && results) {
|
|
28205
28425
|
var transItem = results.find(function (r) {
|
|
28206
|
-
return r.Transaction.BaseEntity ===
|
|
28426
|
+
return r.Transaction.BaseEntity === _this8;
|
|
28207
28427
|
});
|
|
28208
28428
|
if (transItem) {
|
|
28209
|
-
|
|
28429
|
+
_this8.finalizeSave(transItem.Result, saveSubType); // we get the resulting data from the transaction result, not data above as that will be blank when in a TG
|
|
28210
28430
|
} else {
|
|
28211
28431
|
// should never get here, but if we do, we need to throw an error
|
|
28212
28432
|
throw new Error('Transaction group did not return a result for the entity object');
|
|
@@ -28273,20 +28493,20 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28273
28493
|
key: "RunPreSaveHooks",
|
|
28274
28494
|
value: (function () {
|
|
28275
28495
|
var _RunPreSaveHooks = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee11() {
|
|
28276
|
-
var preSaveHooks,
|
|
28496
|
+
var preSaveHooks, _iterator7, _step7, hook, hookResult, _t2;
|
|
28277
28497
|
return baseEntity_regenerator().w(function (_context12) {
|
|
28278
28498
|
while (1) switch (_context12.p = _context12.n) {
|
|
28279
28499
|
case 0:
|
|
28280
28500
|
preSaveHooks = GetDataHooks('PreSave');
|
|
28281
|
-
|
|
28501
|
+
_iterator7 = baseEntity_createForOfIteratorHelper(preSaveHooks);
|
|
28282
28502
|
_context12.p = 1;
|
|
28283
|
-
|
|
28503
|
+
_iterator7.s();
|
|
28284
28504
|
case 2:
|
|
28285
|
-
if ((
|
|
28505
|
+
if ((_step7 = _iterator7.n()).done) {
|
|
28286
28506
|
_context12.n = 6;
|
|
28287
28507
|
break;
|
|
28288
28508
|
}
|
|
28289
|
-
hook =
|
|
28509
|
+
hook = _step7.value;
|
|
28290
28510
|
_context12.n = 3;
|
|
28291
28511
|
return hook(this, this.ActiveUser);
|
|
28292
28512
|
case 3:
|
|
@@ -28311,10 +28531,10 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28311
28531
|
case 7:
|
|
28312
28532
|
_context12.p = 7;
|
|
28313
28533
|
_t2 = _context12.v;
|
|
28314
|
-
|
|
28534
|
+
_iterator7.e(_t2);
|
|
28315
28535
|
case 8:
|
|
28316
28536
|
_context12.p = 8;
|
|
28317
|
-
|
|
28537
|
+
_iterator7.f();
|
|
28318
28538
|
return _context12.f(8);
|
|
28319
28539
|
case 9:
|
|
28320
28540
|
return _context12.a(2);
|
|
@@ -28537,18 +28757,18 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28537
28757
|
key: "Revert",
|
|
28538
28758
|
value: function Revert() {
|
|
28539
28759
|
if (this.Dirty) {
|
|
28540
|
-
var
|
|
28541
|
-
|
|
28760
|
+
var _iterator8 = baseEntity_createForOfIteratorHelper(this.Fields),
|
|
28761
|
+
_step8;
|
|
28542
28762
|
try {
|
|
28543
|
-
for (
|
|
28544
|
-
var field =
|
|
28763
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
28764
|
+
var field = _step8.value;
|
|
28545
28765
|
field.Value = field.OldValue;
|
|
28546
28766
|
}
|
|
28547
28767
|
// IS-A composition: revert parent entity chain as well
|
|
28548
28768
|
} catch (err) {
|
|
28549
|
-
|
|
28769
|
+
_iterator8.e(err);
|
|
28550
28770
|
} finally {
|
|
28551
|
-
|
|
28771
|
+
_iterator8.f();
|
|
28552
28772
|
}
|
|
28553
28773
|
if (this._parentEntity) {
|
|
28554
28774
|
this._parentEntity.Revert();
|
|
@@ -28572,11 +28792,11 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28572
28792
|
var EntityRelationshipsToLoad,
|
|
28573
28793
|
valResult,
|
|
28574
28794
|
data,
|
|
28575
|
-
|
|
28576
|
-
|
|
28795
|
+
_iterator9,
|
|
28796
|
+
_step9,
|
|
28577
28797
|
f,
|
|
28578
|
-
|
|
28579
|
-
|
|
28798
|
+
_iterator0,
|
|
28799
|
+
_step0,
|
|
28580
28800
|
relationship,
|
|
28581
28801
|
_args15 = arguments;
|
|
28582
28802
|
return baseEntity_regenerator().w(function (_context15) {
|
|
@@ -28630,32 +28850,32 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28630
28850
|
// writes to ReadOnly fields after the initial load, meaning InnerLoad called a
|
|
28631
28851
|
// second time (e.g. to refresh denormalized data after a related entity changed)
|
|
28632
28852
|
// would fail to update those fields even though the provider returned fresh data.
|
|
28633
|
-
|
|
28853
|
+
_iterator9 = baseEntity_createForOfIteratorHelper(this.Fields);
|
|
28634
28854
|
try {
|
|
28635
|
-
for (
|
|
28636
|
-
f =
|
|
28855
|
+
for (_iterator9.s(); !(_step9 = _iterator9.n()).done;) {
|
|
28856
|
+
f = _step9.value;
|
|
28637
28857
|
f.ResetNeverSetFlag();
|
|
28638
28858
|
}
|
|
28639
28859
|
} catch (err) {
|
|
28640
|
-
|
|
28860
|
+
_iterator9.e(err);
|
|
28641
28861
|
} finally {
|
|
28642
|
-
|
|
28862
|
+
_iterator9.f();
|
|
28643
28863
|
}
|
|
28644
28864
|
this.SetMany(data, false, true, true); // don't ignore non-existent fields, but DO replace old values
|
|
28645
28865
|
if (EntityRelationshipsToLoad) {
|
|
28646
|
-
|
|
28866
|
+
_iterator0 = baseEntity_createForOfIteratorHelper(EntityRelationshipsToLoad);
|
|
28647
28867
|
try {
|
|
28648
|
-
for (
|
|
28649
|
-
relationship =
|
|
28868
|
+
for (_iterator0.s(); !(_step0 = _iterator0.n()).done;) {
|
|
28869
|
+
relationship = _step0.value;
|
|
28650
28870
|
if (data[relationship]) {
|
|
28651
28871
|
// we have some data, put into an array for ease of access
|
|
28652
28872
|
this[relationship] = data[relationship];
|
|
28653
28873
|
}
|
|
28654
28874
|
}
|
|
28655
28875
|
} catch (err) {
|
|
28656
|
-
|
|
28876
|
+
_iterator0.e(err);
|
|
28657
28877
|
} finally {
|
|
28658
|
-
|
|
28878
|
+
_iterator0.f();
|
|
28659
28879
|
}
|
|
28660
28880
|
}
|
|
28661
28881
|
this._recordLoaded = true;
|
|
@@ -28780,8 +29000,8 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28780
29000
|
value: (function () {
|
|
28781
29001
|
var _LoadFromData = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee16(data) {
|
|
28782
29002
|
var _replaceOldValues,
|
|
28783
|
-
|
|
28784
|
-
|
|
29003
|
+
_iterator1,
|
|
29004
|
+
_step1,
|
|
28785
29005
|
pkey,
|
|
28786
29006
|
_args17 = arguments;
|
|
28787
29007
|
return baseEntity_regenerator().w(function (_context17) {
|
|
@@ -28803,10 +29023,10 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28803
29023
|
}
|
|
28804
29024
|
this._recordLoaded = true; // all primary keys are set, so we are loaded
|
|
28805
29025
|
this._everSaved = true; // Mark as saved since we loaded from data
|
|
28806
|
-
|
|
29026
|
+
_iterator1 = baseEntity_createForOfIteratorHelper(this.PrimaryKeys);
|
|
28807
29027
|
try {
|
|
28808
|
-
for (
|
|
28809
|
-
pkey =
|
|
29028
|
+
for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
|
|
29029
|
+
pkey = _step1.value;
|
|
28810
29030
|
if (pkey.Value === null || pkey.Value === undefined) {
|
|
28811
29031
|
this._recordLoaded = false;
|
|
28812
29032
|
this._everSaved = false; // if any primary key is not set, we cannot consider ourselves loaded
|
|
@@ -28814,9 +29034,9 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28814
29034
|
}
|
|
28815
29035
|
// Cache the record name for faster lookups if successfully loaded
|
|
28816
29036
|
} catch (err) {
|
|
28817
|
-
|
|
29037
|
+
_iterator1.e(err);
|
|
28818
29038
|
} finally {
|
|
28819
|
-
|
|
29039
|
+
_iterator1.f();
|
|
28820
29040
|
}
|
|
28821
29041
|
if (!this._recordLoaded) {
|
|
28822
29042
|
_context17.n = 1;
|
|
@@ -28868,13 +29088,13 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28868
29088
|
}
|
|
28869
29089
|
// Validate own fields — for IS-A entities, skip parent field mirrors since
|
|
28870
29090
|
// those are validated via _parentEntity above
|
|
28871
|
-
var
|
|
28872
|
-
|
|
29091
|
+
var _iterator10 = baseEntity_createForOfIteratorHelper(this.Fields),
|
|
29092
|
+
_step10;
|
|
28873
29093
|
try {
|
|
28874
|
-
for (
|
|
28875
|
-
var _this$
|
|
28876
|
-
var field =
|
|
28877
|
-
if ((_this$
|
|
29094
|
+
for (_iterator10.s(); !(_step10 = _iterator10.n()).done;) {
|
|
29095
|
+
var _this$_parentEntityFi4;
|
|
29096
|
+
var field = _step10.value;
|
|
29097
|
+
if ((_this$_parentEntityFi4 = this._parentEntityFieldNames) !== null && _this$_parentEntityFi4 !== void 0 && _this$_parentEntityFi4.has(field.Name)) continue; // skip parent field mirrors — authoritative validation is on _parentEntity
|
|
28878
29098
|
var err = field.Validate();
|
|
28879
29099
|
err.Errors.forEach(function (element) {
|
|
28880
29100
|
result.Errors.push(element);
|
|
@@ -28882,9 +29102,9 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28882
29102
|
result.Success = result.Success && err.Success; // if any field fails, we fail, but keep going to get all of the validation messages
|
|
28883
29103
|
}
|
|
28884
29104
|
} catch (err) {
|
|
28885
|
-
|
|
29105
|
+
_iterator10.e(err);
|
|
28886
29106
|
} finally {
|
|
28887
|
-
|
|
29107
|
+
_iterator10.f();
|
|
28888
29108
|
}
|
|
28889
29109
|
return result;
|
|
28890
29110
|
}
|
|
@@ -28951,7 +29171,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28951
29171
|
key: "Delete",
|
|
28952
29172
|
value: (function () {
|
|
28953
29173
|
var _Delete = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee18(options) {
|
|
28954
|
-
var
|
|
29174
|
+
var _this9 = this;
|
|
28955
29175
|
return baseEntity_regenerator().w(function (_context19) {
|
|
28956
29176
|
while (1) switch (_context19.n) {
|
|
28957
29177
|
case 0:
|
|
@@ -28965,11 +29185,11 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28965
29185
|
this._pendingDelete$ = of(options).pipe(
|
|
28966
29186
|
// Execute the actual delete logic.
|
|
28967
29187
|
switchMap(function (opts) {
|
|
28968
|
-
return from(
|
|
29188
|
+
return from(_this9._InnerDelete(opts));
|
|
28969
29189
|
}),
|
|
28970
29190
|
// When the delete completes (whether successfully or not), clear the pending delete observable.
|
|
28971
29191
|
finalize(function () {
|
|
28972
|
-
|
|
29192
|
+
_this9._pendingDelete$ = null;
|
|
28973
29193
|
}),
|
|
28974
29194
|
// Ensure that all subscribers get the same result.
|
|
28975
29195
|
shareReplay(1));
|
|
@@ -28993,7 +29213,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
28993
29213
|
key: "_InnerDelete",
|
|
28994
29214
|
value: (function () {
|
|
28995
29215
|
var _InnerDelete2 = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee19(options) {
|
|
28996
|
-
var
|
|
29216
|
+
var _this0 = this;
|
|
28997
29217
|
var currentResultCount, newResult, _options, hasParentChain, isISAInitiator, childCheck, cascadeResult, _this$ProviderToUse4, _this$ProviderToUse4$, txn, oldVals, shouldDeleteParent, parentDeleteOptions, parentResult, _this$ProviderToUse$C2, _this$ProviderToUse5, _isISAInitiator2, _t4;
|
|
28998
29218
|
return baseEntity_regenerator().w(function (_context20) {
|
|
28999
29219
|
while (1) switch (_context20.p = _context20.n) {
|
|
@@ -29147,25 +29367,25 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29147
29367
|
results = _ref2.results,
|
|
29148
29368
|
error = _ref2.error;
|
|
29149
29369
|
if (success) {
|
|
29150
|
-
|
|
29370
|
+
_this0.RaiseEvent('delete', {
|
|
29151
29371
|
OldValues: oldVals
|
|
29152
29372
|
});
|
|
29153
29373
|
// wipe out the current data to flush out the DIRTY flags by calling NewRecord()
|
|
29154
|
-
|
|
29374
|
+
_this0.NewRecord(); // will trigger a new record event here too
|
|
29155
29375
|
} else {
|
|
29156
29376
|
// transaction failed, so we need to add a new result to the history here
|
|
29157
29377
|
newResult.Success = false;
|
|
29158
29378
|
newResult.Type = 'delete';
|
|
29159
29379
|
newResult.Message = error && error.message ? error.message : error;
|
|
29160
29380
|
newResult.Errors = error.Errors || [];
|
|
29161
|
-
newResult.OriginalValues =
|
|
29381
|
+
newResult.OriginalValues = _this0.Fields.map(function (f) {
|
|
29162
29382
|
return {
|
|
29163
29383
|
FieldName: f.CodeName,
|
|
29164
29384
|
Value: f.OldValue
|
|
29165
29385
|
};
|
|
29166
29386
|
});
|
|
29167
29387
|
newResult.EndedAt = new Date();
|
|
29168
|
-
|
|
29388
|
+
_this0.ResultHistory.push(newResult);
|
|
29169
29389
|
}
|
|
29170
29390
|
});
|
|
29171
29391
|
}
|
|
@@ -29221,7 +29441,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29221
29441
|
key: "CheckForChildRecords",
|
|
29222
29442
|
value: (function () {
|
|
29223
29443
|
var _CheckForChildRecords = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee20() {
|
|
29224
|
-
var childEntities, rv, pkValue,
|
|
29444
|
+
var childEntities, rv, pkValue, _iterator11, _step11, childEntity, pkField, result, _t5;
|
|
29225
29445
|
return baseEntity_regenerator().w(function (_context21) {
|
|
29226
29446
|
while (1) switch (_context21.p = _context21.n) {
|
|
29227
29447
|
case 0:
|
|
@@ -29238,15 +29458,15 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29238
29458
|
// Use RunView to check each child entity for records with our PK
|
|
29239
29459
|
rv = new RunView();
|
|
29240
29460
|
pkValue = this.PrimaryKey.Values();
|
|
29241
|
-
|
|
29461
|
+
_iterator11 = baseEntity_createForOfIteratorHelper(childEntities);
|
|
29242
29462
|
_context21.p = 2;
|
|
29243
|
-
|
|
29463
|
+
_iterator11.s();
|
|
29244
29464
|
case 3:
|
|
29245
|
-
if ((
|
|
29465
|
+
if ((_step11 = _iterator11.n()).done) {
|
|
29246
29466
|
_context21.n = 7;
|
|
29247
29467
|
break;
|
|
29248
29468
|
}
|
|
29249
|
-
childEntity =
|
|
29469
|
+
childEntity = _step11.value;
|
|
29250
29470
|
pkField = childEntity.PrimaryKeys[0];
|
|
29251
29471
|
if (pkField) {
|
|
29252
29472
|
_context21.n = 4;
|
|
@@ -29281,10 +29501,10 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29281
29501
|
case 8:
|
|
29282
29502
|
_context21.p = 8;
|
|
29283
29503
|
_t5 = _context21.v;
|
|
29284
|
-
|
|
29504
|
+
_iterator11.e(_t5);
|
|
29285
29505
|
case 9:
|
|
29286
29506
|
_context21.p = 9;
|
|
29287
|
-
|
|
29507
|
+
_iterator11.f();
|
|
29288
29508
|
return _context21.f(9);
|
|
29289
29509
|
case 10:
|
|
29290
29510
|
return _context21.a(2, {
|
|
@@ -29380,7 +29600,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29380
29600
|
*/
|
|
29381
29601
|
function () {
|
|
29382
29602
|
var _EnforceDisjointSubtype = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee22() {
|
|
29383
|
-
var
|
|
29603
|
+
var _this1 = this;
|
|
29384
29604
|
var md, parentEntityInfo, siblingChildEntities, pkValue, rv, validSiblings, viewParams, results, i, _result$Results, result, sibling;
|
|
29385
29605
|
return baseEntity_regenerator().w(function (_context23) {
|
|
29386
29606
|
while (1) switch (_context23.n) {
|
|
@@ -29401,7 +29621,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29401
29621
|
return _context23.a(2);
|
|
29402
29622
|
case 2:
|
|
29403
29623
|
siblingChildEntities = parentEntityInfo.ChildEntities.filter(function (e) {
|
|
29404
|
-
return !(0,dist/* UUIDsEqual */.jd)(e.ID,
|
|
29624
|
+
return !(0,dist/* UUIDsEqual */.jd)(e.ID, _this1.EntityInfo.ID);
|
|
29405
29625
|
});
|
|
29406
29626
|
if (!(siblingChildEntities.length === 0)) {
|
|
29407
29627
|
_context23.n = 3;
|
|
@@ -29594,21 +29814,21 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29594
29814
|
key: "GenerateEmbeddingsByFieldName",
|
|
29595
29815
|
value: (function () {
|
|
29596
29816
|
var _GenerateEmbeddingsByFieldName = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee25(fields) {
|
|
29597
|
-
var promises,
|
|
29817
|
+
var promises, _iterator12, _step12, _step12$value, fieldName, vectorFieldName, modelFieldName, results;
|
|
29598
29818
|
return baseEntity_regenerator().w(function (_context26) {
|
|
29599
29819
|
while (1) switch (_context26.n) {
|
|
29600
29820
|
case 0:
|
|
29601
29821
|
promises = [];
|
|
29602
|
-
|
|
29822
|
+
_iterator12 = baseEntity_createForOfIteratorHelper(fields);
|
|
29603
29823
|
try {
|
|
29604
|
-
for (
|
|
29605
|
-
|
|
29824
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
29825
|
+
_step12$value = _step12.value, fieldName = _step12$value.fieldName, vectorFieldName = _step12$value.vectorFieldName, modelFieldName = _step12$value.modelFieldName;
|
|
29606
29826
|
promises.push(this.GenerateEmbeddingByFieldName(fieldName, vectorFieldName, modelFieldName));
|
|
29607
29827
|
}
|
|
29608
29828
|
} catch (err) {
|
|
29609
|
-
|
|
29829
|
+
_iterator12.e(err);
|
|
29610
29830
|
} finally {
|
|
29611
|
-
|
|
29831
|
+
_iterator12.f();
|
|
29612
29832
|
}
|
|
29613
29833
|
_context26.n = 1;
|
|
29614
29834
|
return Promise.all(promises);
|
|
@@ -29686,21 +29906,21 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29686
29906
|
key: "GenerateEmbeddings",
|
|
29687
29907
|
value: (function () {
|
|
29688
29908
|
var _GenerateEmbeddings = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee27(fields) {
|
|
29689
|
-
var promises,
|
|
29909
|
+
var promises, _iterator13, _step13, _step13$value, field, vectorField, modelField, results;
|
|
29690
29910
|
return baseEntity_regenerator().w(function (_context28) {
|
|
29691
29911
|
while (1) switch (_context28.n) {
|
|
29692
29912
|
case 0:
|
|
29693
29913
|
promises = [];
|
|
29694
|
-
|
|
29914
|
+
_iterator13 = baseEntity_createForOfIteratorHelper(fields);
|
|
29695
29915
|
try {
|
|
29696
|
-
for (
|
|
29697
|
-
|
|
29916
|
+
for (_iterator13.s(); !(_step13 = _iterator13.n()).done;) {
|
|
29917
|
+
_step13$value = _step13.value, field = _step13$value.field, vectorField = _step13$value.vectorField, modelField = _step13$value.modelField;
|
|
29698
29918
|
promises.push(this.GenerateEmbedding(field, vectorField, modelField));
|
|
29699
29919
|
}
|
|
29700
29920
|
} catch (err) {
|
|
29701
|
-
|
|
29921
|
+
_iterator13.e(err);
|
|
29702
29922
|
} finally {
|
|
29703
|
-
|
|
29923
|
+
_iterator13.f();
|
|
29704
29924
|
}
|
|
29705
29925
|
_context28.n = 1;
|
|
29706
29926
|
return Promise.all(promises);
|
|
@@ -29874,7 +30094,7 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29874
30094
|
key: "ResolveLeafEntityRecursive",
|
|
29875
30095
|
value: (function () {
|
|
29876
30096
|
var _ResolveLeafEntityRecursive = baseEntity_asyncToGenerator(/*#__PURE__*/baseEntity_regenerator().m(function _callee31(entityInfo, primaryKey, contextUser) {
|
|
29877
|
-
var childEntities, rv, pkValue,
|
|
30097
|
+
var childEntities, rv, pkValue, _iterator14, _step14, _result$Results2, child, childPK, result, _t7;
|
|
29878
30098
|
return baseEntity_regenerator().w(function (_context32) {
|
|
29879
30099
|
while (1) switch (_context32.p = _context32.n) {
|
|
29880
30100
|
case 0:
|
|
@@ -29890,15 +30110,15 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29890
30110
|
case 1:
|
|
29891
30111
|
rv = new RunView();
|
|
29892
30112
|
pkValue = primaryKey.Values();
|
|
29893
|
-
|
|
30113
|
+
_iterator14 = baseEntity_createForOfIteratorHelper(childEntities);
|
|
29894
30114
|
_context32.p = 2;
|
|
29895
|
-
|
|
30115
|
+
_iterator14.s();
|
|
29896
30116
|
case 3:
|
|
29897
|
-
if ((
|
|
30117
|
+
if ((_step14 = _iterator14.n()).done) {
|
|
29898
30118
|
_context32.n = 7;
|
|
29899
30119
|
break;
|
|
29900
30120
|
}
|
|
29901
|
-
child =
|
|
30121
|
+
child = _step14.value;
|
|
29902
30122
|
childPK = child.PrimaryKeys[0];
|
|
29903
30123
|
if (childPK) {
|
|
29904
30124
|
_context32.n = 4;
|
|
@@ -29930,10 +30150,10 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29930
30150
|
case 8:
|
|
29931
30151
|
_context32.p = 8;
|
|
29932
30152
|
_t7 = _context32.v;
|
|
29933
|
-
|
|
30153
|
+
_iterator14.e(_t7);
|
|
29934
30154
|
case 9:
|
|
29935
30155
|
_context32.p = 9;
|
|
29936
|
-
|
|
30156
|
+
_iterator14.f();
|
|
29937
30157
|
return _context32.f(9);
|
|
29938
30158
|
case 10:
|
|
29939
30159
|
return _context32.a(2, {
|
|
@@ -29972,8 +30192,8 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29972
30192
|
providerToUse,
|
|
29973
30193
|
results,
|
|
29974
30194
|
changes,
|
|
29975
|
-
|
|
29976
|
-
|
|
30195
|
+
_iterator15,
|
|
30196
|
+
_step15,
|
|
29977
30197
|
result,
|
|
29978
30198
|
_args33 = arguments;
|
|
29979
30199
|
return baseEntity_regenerator().w(function (_context33) {
|
|
@@ -29996,16 +30216,16 @@ var BaseEntity = /*#__PURE__*/function () {
|
|
|
29996
30216
|
break;
|
|
29997
30217
|
}
|
|
29998
30218
|
changes = [];
|
|
29999
|
-
|
|
30219
|
+
_iterator15 = baseEntity_createForOfIteratorHelper(results);
|
|
30000
30220
|
try {
|
|
30001
|
-
for (
|
|
30002
|
-
result =
|
|
30221
|
+
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
30222
|
+
result = _step15.value;
|
|
30003
30223
|
changes.push(new RecordChange(result));
|
|
30004
30224
|
}
|
|
30005
30225
|
} catch (err) {
|
|
30006
|
-
|
|
30226
|
+
_iterator15.e(err);
|
|
30007
30227
|
} finally {
|
|
30008
|
-
|
|
30228
|
+
_iterator15.f();
|
|
30009
30229
|
}
|
|
30010
30230
|
return _context33.a(2, changes);
|
|
30011
30231
|
case 3:
|
|
@@ -37106,13 +37326,13 @@ function IsPlatformSQL(value) {
|
|
|
37106
37326
|
var _ProviderBase;
|
|
37107
37327
|
function providerBase_typeof(o) { "@babel/helpers - typeof"; return providerBase_typeof = "function" == typeof Symbol && "symbol" == typeof Symbol.iterator ? function (o) { return typeof o; } : function (o) { return o && "function" == typeof Symbol && o.constructor === Symbol && o !== Symbol.prototype ? "symbol" : typeof o; }, providerBase_typeof(o); }
|
|
37108
37328
|
function providerBase_regeneratorValues(e) { if (null != e) { var t = e["function" == typeof Symbol && Symbol.iterator || "@@iterator"], r = 0; if (t) return t.call(e); if ("function" == typeof e.next) return e; if (!isNaN(e.length)) return { next: function next() { return e && r >= e.length && (e = void 0), { value: e && e[r++], done: !e }; } }; } throw new TypeError(providerBase_typeof(e) + " is not iterable"); }
|
|
37109
|
-
function providerBase_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
37110
|
-
function providerBase_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? providerBase_ownKeys(Object(t), !0).forEach(function (r) { providerBase_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : providerBase_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
37111
|
-
function providerBase_defineProperty(e, r, t) { return (r = providerBase_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
37112
37329
|
function providerBase_toConsumableArray(r) { return providerBase_arrayWithoutHoles(r) || providerBase_iterableToArray(r) || providerBase_unsupportedIterableToArray(r) || providerBase_nonIterableSpread(); }
|
|
37113
37330
|
function providerBase_nonIterableSpread() { throw new TypeError("Invalid attempt to spread non-iterable instance.\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method."); }
|
|
37114
37331
|
function providerBase_iterableToArray(r) { if ("undefined" != typeof Symbol && null != r[Symbol.iterator] || null != r["@@iterator"]) return Array.from(r); }
|
|
37115
37332
|
function providerBase_arrayWithoutHoles(r) { if (Array.isArray(r)) return providerBase_arrayLikeToArray(r); }
|
|
37333
|
+
function providerBase_ownKeys(e, r) { var t = Object.keys(e); if (Object.getOwnPropertySymbols) { var o = Object.getOwnPropertySymbols(e); r && (o = o.filter(function (r) { return Object.getOwnPropertyDescriptor(e, r).enumerable; })), t.push.apply(t, o); } return t; }
|
|
37334
|
+
function providerBase_objectSpread(e) { for (var r = 1; r < arguments.length; r++) { var t = null != arguments[r] ? arguments[r] : {}; r % 2 ? providerBase_ownKeys(Object(t), !0).forEach(function (r) { providerBase_defineProperty(e, r, t[r]); }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(e, Object.getOwnPropertyDescriptors(t)) : providerBase_ownKeys(Object(t)).forEach(function (r) { Object.defineProperty(e, r, Object.getOwnPropertyDescriptor(t, r)); }); } return e; }
|
|
37335
|
+
function providerBase_defineProperty(e, r, t) { return (r = providerBase_toPropertyKey(r)) in e ? Object.defineProperty(e, r, { value: t, enumerable: !0, configurable: !0, writable: !0 }) : e[r] = t, e; }
|
|
37116
37336
|
function providerBase_regenerator() { /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/babel/babel/blob/main/packages/babel-helpers/LICENSE */ var e, t, r = "function" == typeof Symbol ? Symbol : {}, n = r.iterator || "@@iterator", o = r.toStringTag || "@@toStringTag"; function i(r, n, o, i) { var c = n && n.prototype instanceof Generator ? n : Generator, u = Object.create(c.prototype); return providerBase_regeneratorDefine2(u, "_invoke", function (r, n, o) { var i, c, u, f = 0, p = o || [], y = !1, G = { p: 0, n: 0, v: e, a: d, f: d.bind(e, 4), d: function d(t, r) { return i = t, c = 0, u = e, G.n = r, a; } }; function d(r, n) { for (c = r, u = n, t = 0; !y && f && !o && t < p.length; t++) { var o, i = p[t], d = G.p, l = i[2]; r > 3 ? (o = l === n) && (u = i[(c = i[4]) ? 5 : (c = 3, 3)], i[4] = i[5] = e) : i[0] <= d && ((o = r < 2 && d < i[1]) ? (c = 0, G.v = n, G.n = i[1]) : d < l && (o = r < 3 || i[0] > n || n > l) && (i[4] = r, i[5] = n, G.n = l, c = 0)); } if (o || r > 1) return a; throw y = !0, n; } return function (o, p, l) { if (f > 1) throw TypeError("Generator is already running"); for (y && 1 === p && d(p, l), c = p, u = l; (t = c < 2 ? e : u) || !y;) { i || (c ? c < 3 ? (c > 1 && (G.n = -1), d(c, u)) : G.n = u : G.v = u); try { if (f = 2, i) { if (c || (o = "next"), t = i[o]) { if (!(t = t.call(i, u))) throw TypeError("iterator result is not an object"); if (!t.done) return t; u = t.value, c < 2 && (c = 0); } else 1 === c && (t = i.return) && t.call(i), c < 2 && (u = TypeError("The iterator does not provide a '" + o + "' method"), c = 1); i = e; } else if ((t = (y = G.n < 0) ? u : r.call(n, G)) !== a) break; } catch (t) { i = e, c = 1, u = t; } finally { f = 1; } } return { value: t, done: y }; }; }(r, o, i), !0), u; } var a = {}; function Generator() {} function GeneratorFunction() {} function GeneratorFunctionPrototype() {} t = Object.getPrototypeOf; var c = [][n] ? t(t([][n]())) : (providerBase_regeneratorDefine2(t = {}, n, function () { return this; }), t), u = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(c); function f(e) { return Object.setPrototypeOf ? Object.setPrototypeOf(e, GeneratorFunctionPrototype) : (e.__proto__ = GeneratorFunctionPrototype, providerBase_regeneratorDefine2(e, o, "GeneratorFunction")), e.prototype = Object.create(u), e; } return GeneratorFunction.prototype = GeneratorFunctionPrototype, providerBase_regeneratorDefine2(u, "constructor", GeneratorFunctionPrototype), providerBase_regeneratorDefine2(GeneratorFunctionPrototype, "constructor", GeneratorFunction), GeneratorFunction.displayName = "GeneratorFunction", providerBase_regeneratorDefine2(GeneratorFunctionPrototype, o, "GeneratorFunction"), providerBase_regeneratorDefine2(u), providerBase_regeneratorDefine2(u, o, "Generator"), providerBase_regeneratorDefine2(u, n, function () { return this; }), providerBase_regeneratorDefine2(u, "toString", function () { return "[object Generator]"; }), (providerBase_regenerator = function _regenerator() { return { w: i, m: f }; })(); }
|
|
37117
37337
|
function providerBase_regeneratorDefine2(e, r, n, t) { var i = Object.defineProperty; try { i({}, "", {}); } catch (e) { i = 0; } providerBase_regeneratorDefine2 = function _regeneratorDefine(e, r, n, t) { function o(r, n) { providerBase_regeneratorDefine2(e, r, function (e) { return this._invoke(r, n, e); }); } r ? i ? i(e, r, { value: n, enumerable: !t, configurable: !t, writable: !t }) : e[r] = n : (o("next", 0), o("throw", 1), o("return", 2)); }, providerBase_regeneratorDefine2(e, r, n, t); }
|
|
37118
37338
|
function providerBase_asyncGeneratorStep(n, t, e, r, o, a, c) { try { var i = n[a](c), u = i.value; } catch (n) { return void e(n); } i.done ? t(u) : Promise.resolve(u).then(r, o); }
|
|
@@ -37844,7 +38064,8 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
37844
38064
|
key: "flushCoalesceQueue",
|
|
37845
38065
|
value: (function () {
|
|
37846
38066
|
var _flushCoalesceQueue = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee7() {
|
|
37847
|
-
var
|
|
38067
|
+
var _this3 = this;
|
|
38068
|
+
var queue, entry, results, contextUser, uniqueParams, uniqueKeys, callerIndexMaps, _iterator3, _step3, _entry2, entryIndices, _iterator6, _step6, param, key, idx, entityNames, boundaries, cursor, _iterator4, _step4, _entry3, eventId, uniqueResults, i, callerResults, _iterator5, _step5, _entry, _t, _t2;
|
|
37848
38069
|
return providerBase_regenerator().w(function (_context7) {
|
|
37849
38070
|
while (1) switch (_context7.p = _context7.n) {
|
|
37850
38071
|
case 0:
|
|
@@ -37877,43 +38098,85 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
37877
38098
|
case 5:
|
|
37878
38099
|
return _context7.a(2);
|
|
37879
38100
|
case 6:
|
|
37880
|
-
//
|
|
37881
|
-
|
|
37882
|
-
|
|
38101
|
+
// Build a deduplicated unique-param list and per-caller index maps so a query
|
|
38102
|
+
// the same 5 engines ask for is executed once, not 5 times. Each caller's
|
|
38103
|
+
// params array maps to indices into the unique list, preserving order for
|
|
38104
|
+
// correct result routing.
|
|
38105
|
+
// Use the first caller's contextUser (all should be the same on client-side)
|
|
37883
38106
|
contextUser = queue[0].contextUser;
|
|
38107
|
+
uniqueParams = [];
|
|
38108
|
+
uniqueKeys = new Map();
|
|
38109
|
+
callerIndexMaps = [];
|
|
37884
38110
|
_iterator3 = providerBase_createForOfIteratorHelper(queue);
|
|
37885
38111
|
try {
|
|
37886
38112
|
for (_iterator3.s(); !(_step3 = _iterator3.n()).done;) {
|
|
37887
38113
|
_entry2 = _step3.value;
|
|
37888
|
-
|
|
37889
|
-
|
|
37890
|
-
|
|
37891
|
-
|
|
37892
|
-
|
|
38114
|
+
entryIndices = [];
|
|
38115
|
+
_iterator6 = providerBase_createForOfIteratorHelper(_entry2.params);
|
|
38116
|
+
try {
|
|
38117
|
+
for (_iterator6.s(); !(_step6 = _iterator6.n()).done;) {
|
|
38118
|
+
param = _step6.value;
|
|
38119
|
+
key = this.GenerateDedupKey([param], contextUser);
|
|
38120
|
+
idx = uniqueKeys.get(key);
|
|
38121
|
+
if (idx === undefined) {
|
|
38122
|
+
idx = uniqueParams.length;
|
|
38123
|
+
uniqueKeys.set(key, idx);
|
|
38124
|
+
uniqueParams.push(param);
|
|
38125
|
+
}
|
|
38126
|
+
entryIndices.push(idx);
|
|
38127
|
+
}
|
|
38128
|
+
} catch (err) {
|
|
38129
|
+
_iterator6.e(err);
|
|
38130
|
+
} finally {
|
|
38131
|
+
_iterator6.f();
|
|
38132
|
+
}
|
|
38133
|
+
callerIndexMaps.push(entryIndices);
|
|
37893
38134
|
}
|
|
37894
38135
|
} catch (err) {
|
|
37895
38136
|
_iterator3.e(err);
|
|
37896
38137
|
} finally {
|
|
37897
38138
|
_iterator3.f();
|
|
37898
38139
|
}
|
|
37899
|
-
entityNames =
|
|
38140
|
+
entityNames = uniqueParams.map(function (p) {
|
|
37900
38141
|
return p.EntityName || p.ViewName || '?';
|
|
37901
|
-
});
|
|
38142
|
+
}); // Boundaries point into the deduplicated unique-param list; each caller's
|
|
38143
|
+
// `count` is the number of their original requests (not the dedup'd count)
|
|
38144
|
+
// so telemetry still reflects what each caller asked for.
|
|
38145
|
+
boundaries = [];
|
|
38146
|
+
cursor = 0;
|
|
38147
|
+
_iterator4 = providerBase_createForOfIteratorHelper(queue);
|
|
38148
|
+
try {
|
|
38149
|
+
for (_iterator4.s(); !(_step4 = _iterator4.n()).done;) {
|
|
38150
|
+
_entry3 = _step4.value;
|
|
38151
|
+
boundaries.push({
|
|
38152
|
+
start: cursor,
|
|
38153
|
+
count: _entry3.params.length
|
|
38154
|
+
});
|
|
38155
|
+
cursor += _entry3.params.length;
|
|
38156
|
+
}
|
|
38157
|
+
} catch (err) {
|
|
38158
|
+
_iterator4.e(err);
|
|
38159
|
+
} finally {
|
|
38160
|
+
_iterator4.f();
|
|
38161
|
+
}
|
|
37902
38162
|
eventId = TelemetryManager.Instance.StartEvent('Coalesce', 'ProviderBase.flushCoalesceQueue', {
|
|
37903
38163
|
CallerCount: queue.length,
|
|
37904
|
-
TotalEntityCount:
|
|
38164
|
+
TotalEntityCount: uniqueParams.length,
|
|
37905
38165
|
Entities: entityNames,
|
|
37906
|
-
CallerBoundaries:
|
|
38166
|
+
CallerBoundaries: boundaries
|
|
37907
38167
|
});
|
|
37908
38168
|
_context7.p = 7;
|
|
37909
38169
|
_context7.n = 8;
|
|
37910
|
-
return this.RunViewsUncoalesced(
|
|
38170
|
+
return this.RunViewsUncoalesced(uniqueParams, contextUser);
|
|
37911
38171
|
case 8:
|
|
37912
|
-
|
|
37913
|
-
//
|
|
38172
|
+
uniqueResults = _context7.v;
|
|
38173
|
+
// Route deduped results back to each original caller, preserving order.
|
|
38174
|
+
// ShallowCopyResult gives each caller an independent Results array (rows
|
|
38175
|
+
// are still shared refs; callers should not mutate rows in place).
|
|
37914
38176
|
for (i = 0; i < queue.length; i++) {
|
|
37915
|
-
|
|
37916
|
-
|
|
38177
|
+
callerResults = callerIndexMaps[i].map(function (idx) {
|
|
38178
|
+
return _this3.ShallowCopyResult(uniqueResults[idx]);
|
|
38179
|
+
});
|
|
37917
38180
|
queue[i].resolve(callerResults);
|
|
37918
38181
|
}
|
|
37919
38182
|
TelemetryManager.Instance.EndEvent(eventId);
|
|
@@ -37927,16 +38190,16 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
37927
38190
|
error: String(_t2)
|
|
37928
38191
|
});
|
|
37929
38192
|
// If the mega-batch fails, reject all callers
|
|
37930
|
-
|
|
38193
|
+
_iterator5 = providerBase_createForOfIteratorHelper(queue);
|
|
37931
38194
|
try {
|
|
37932
|
-
for (
|
|
37933
|
-
_entry =
|
|
38195
|
+
for (_iterator5.s(); !(_step5 = _iterator5.n()).done;) {
|
|
38196
|
+
_entry = _step5.value;
|
|
37934
38197
|
_entry.reject(_t2);
|
|
37935
38198
|
}
|
|
37936
38199
|
} catch (err) {
|
|
37937
|
-
|
|
38200
|
+
_iterator5.e(err);
|
|
37938
38201
|
} finally {
|
|
37939
|
-
|
|
38202
|
+
_iterator5.f();
|
|
37940
38203
|
}
|
|
37941
38204
|
case 10:
|
|
37942
38205
|
return _context7.a(2);
|
|
@@ -38096,11 +38359,11 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38096
38359
|
key: "findBestField",
|
|
38097
38360
|
value: function findBestField(entity, preferredNames) {
|
|
38098
38361
|
var _ref, _textField$Name, _entity$FirstPrimaryK3;
|
|
38099
|
-
var
|
|
38100
|
-
|
|
38362
|
+
var _iterator7 = providerBase_createForOfIteratorHelper(preferredNames),
|
|
38363
|
+
_step7;
|
|
38101
38364
|
try {
|
|
38102
38365
|
var _loop2 = function _loop2() {
|
|
38103
|
-
var name =
|
|
38366
|
+
var name = _step7.value;
|
|
38104
38367
|
var field = entity.Fields.find(function (f) {
|
|
38105
38368
|
return f.Name === name;
|
|
38106
38369
|
});
|
|
@@ -38109,15 +38372,15 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38109
38372
|
};
|
|
38110
38373
|
},
|
|
38111
38374
|
_ret;
|
|
38112
|
-
for (
|
|
38375
|
+
for (_iterator7.s(); !(_step7 = _iterator7.n()).done;) {
|
|
38113
38376
|
_ret = _loop2();
|
|
38114
38377
|
if (_ret) return _ret.v;
|
|
38115
38378
|
}
|
|
38116
38379
|
// Fallback to first text field
|
|
38117
38380
|
} catch (err) {
|
|
38118
|
-
|
|
38381
|
+
_iterator7.e(err);
|
|
38119
38382
|
} finally {
|
|
38120
|
-
|
|
38383
|
+
_iterator7.f();
|
|
38121
38384
|
}
|
|
38122
38385
|
var textField = entity.Fields.find(function (f) {
|
|
38123
38386
|
return f.Type.toLowerCase().includes('varchar') || f.Type.toLowerCase().includes('text');
|
|
@@ -38128,7 +38391,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38128
38391
|
key: "RunViewsUncoalesced",
|
|
38129
38392
|
value: function () {
|
|
38130
38393
|
var _RunViewsUncoalesced = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee9(params, contextUser) {
|
|
38131
|
-
var
|
|
38394
|
+
var _this4 = this;
|
|
38132
38395
|
var key, existing, age, _results3, promise, results;
|
|
38133
38396
|
return providerBase_regenerator().w(function (_context9) {
|
|
38134
38397
|
while (1) switch (_context9.n) {
|
|
@@ -38145,7 +38408,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38145
38408
|
break;
|
|
38146
38409
|
}
|
|
38147
38410
|
return _context9.a(2, existing.resolvedResults.map(function (r) {
|
|
38148
|
-
return
|
|
38411
|
+
return _this4.ShallowCopyResult(r);
|
|
38149
38412
|
}));
|
|
38150
38413
|
case 1:
|
|
38151
38414
|
this._inflightViews.delete(key);
|
|
@@ -38159,29 +38422,29 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38159
38422
|
case 3:
|
|
38160
38423
|
_results3 = _context9.v;
|
|
38161
38424
|
return _context9.a(2, _results3.map(function (r) {
|
|
38162
|
-
return
|
|
38425
|
+
return _this4.ShallowCopyResult(r);
|
|
38163
38426
|
}));
|
|
38164
38427
|
case 4:
|
|
38165
38428
|
// ── Fresh execution ──
|
|
38166
38429
|
promise = this.ExecuteRunViewsPipeline(params, contextUser).then(function (results) {
|
|
38167
|
-
var entry =
|
|
38430
|
+
var entry = _this4._inflightViews.get(key);
|
|
38168
38431
|
if (entry && entry.promise === promise) {
|
|
38169
38432
|
entry.resolvedResults = results;
|
|
38170
38433
|
entry.resolvedAt = Date.now();
|
|
38171
38434
|
if (ProviderBase.DedupLingerMs > 0) {
|
|
38172
38435
|
setTimeout(function () {
|
|
38173
|
-
var current =
|
|
38436
|
+
var current = _this4._inflightViews.get(key);
|
|
38174
38437
|
if (current && current.promise === promise) {
|
|
38175
|
-
|
|
38438
|
+
_this4._inflightViews.delete(key);
|
|
38176
38439
|
}
|
|
38177
38440
|
}, ProviderBase.DedupLingerMs);
|
|
38178
38441
|
} else {
|
|
38179
|
-
|
|
38442
|
+
_this4._inflightViews.delete(key);
|
|
38180
38443
|
}
|
|
38181
38444
|
}
|
|
38182
38445
|
return results;
|
|
38183
38446
|
}).catch(function (err) {
|
|
38184
|
-
|
|
38447
|
+
_this4._inflightViews.delete(key);
|
|
38185
38448
|
throw err;
|
|
38186
38449
|
});
|
|
38187
38450
|
this._inflightViews.set(key, {
|
|
@@ -38192,7 +38455,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38192
38455
|
case 5:
|
|
38193
38456
|
results = _context9.v;
|
|
38194
38457
|
return _context9.a(2, results.map(function (r) {
|
|
38195
|
-
return
|
|
38458
|
+
return _this4.ShallowCopyResult(r);
|
|
38196
38459
|
}));
|
|
38197
38460
|
}
|
|
38198
38461
|
}, _callee9, this);
|
|
@@ -38211,10 +38474,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38211
38474
|
}, {
|
|
38212
38475
|
key: "GenerateDedupKey",
|
|
38213
38476
|
value: function GenerateDedupKey(params, contextUser) {
|
|
38214
|
-
var
|
|
38477
|
+
var _this5 = this;
|
|
38215
38478
|
var parts = params.map(function (p) {
|
|
38216
38479
|
var _p$UserSearchString, _p$ViewID, _p$ViewName, _contextUser$ID;
|
|
38217
|
-
var base = LocalCacheManager.Instance.GenerateRunViewFingerprint(p,
|
|
38480
|
+
var base = LocalCacheManager.Instance.GenerateRunViewFingerprint(p, _this5.InstanceConnectionString);
|
|
38218
38481
|
// Fields is intentionally excluded — cache stores full entity width
|
|
38219
38482
|
// and filters on return, so different Fields values are the same query.
|
|
38220
38483
|
var extras = [(_p$UserSearchString = p.UserSearchString) !== null && _p$UserSearchString !== void 0 ? _p$UserSearchString : '', (_p$ViewID = p.ViewID) !== null && _p$ViewID !== void 0 ? _p$ViewID : '', (_p$ViewName = p.ViewName) !== null && _p$ViewName !== void 0 ? _p$ViewName : '', (_contextUser$ID = contextUser === null || contextUser === void 0 ? void 0 : contextUser.ID) !== null && _contextUser$ID !== void 0 ? _contextUser$ID : ''].join('|');
|
|
@@ -38488,7 +38751,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38488
38751
|
key: "PreRunView",
|
|
38489
38752
|
value: function () {
|
|
38490
38753
|
var _PreRunView = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee12(params, contextUser) {
|
|
38491
|
-
var preViewStart, telemetryStart, telemetryEventId, telemetryTime, entityCheckStart, entityCheckTime, entityLookupStart, callerRequestedFields, entity, entityLookupTime, cacheCheckStart, cacheStatus, cachedResult, fingerprint, entityCacheAllowed, cached, _cached$totalRowCount, results, cacheCheckTime, totalPreTime;
|
|
38754
|
+
var preViewStart, telemetryStart, telemetryEventId, telemetryTime, entityCheckStart, entityCheckTime, entityLookupStart, callerRequestedFields, entity, entityLookupTime, cacheCheckStart, cacheStatus, cachedResult, fingerprint, entityCacheAllowed, cached, _cached$totalRowCount, results, requestedFieldSet, keyCache, cacheCheckTime, totalPreTime;
|
|
38492
38755
|
return providerBase_regenerator().w(function (_context12) {
|
|
38493
38756
|
while (1) switch (_context12.n) {
|
|
38494
38757
|
case 0:
|
|
@@ -38552,11 +38815,19 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38552
38815
|
// Filter cached results to only the caller's requested fields (if specified)
|
|
38553
38816
|
results = cached.results;
|
|
38554
38817
|
if (callerRequestedFields && params.ResultType !== 'entity_object') {
|
|
38818
|
+
// Cache lowercase key→keep decisions across rows to avoid repeated allocations
|
|
38819
|
+
requestedFieldSet = new Set(callerRequestedFields);
|
|
38820
|
+
keyCache = new Map();
|
|
38555
38821
|
results = results.map(function (row) {
|
|
38556
38822
|
var filtered = {};
|
|
38557
38823
|
for (var _i2 = 0, _Object$keys = Object.keys(row); _i2 < _Object$keys.length; _i2++) {
|
|
38558
38824
|
var key = _Object$keys[_i2];
|
|
38559
|
-
|
|
38825
|
+
var keep = keyCache.get(key);
|
|
38826
|
+
if (keep === undefined) {
|
|
38827
|
+
keep = requestedFieldSet.has(key.toLowerCase());
|
|
38828
|
+
keyCache.set(key, keep);
|
|
38829
|
+
}
|
|
38830
|
+
if (keep) {
|
|
38560
38831
|
filtered[key] = row[key];
|
|
38561
38832
|
}
|
|
38562
38833
|
}
|
|
@@ -38616,23 +38887,23 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38616
38887
|
key: "PreRunViews",
|
|
38617
38888
|
value: (function () {
|
|
38618
38889
|
var _PreRunViews = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee13(params, contextUser) {
|
|
38619
|
-
var
|
|
38620
|
-
var
|
|
38890
|
+
var _this6 = this;
|
|
38891
|
+
var _iterator8, _step8, p, i, fromEngine, telemetryEventId, useFastStartup, allHaveCachedData, _iterator9, _step9, param, fp, cached, entityNames, useSmartCacheCheck, _useSmartCacheCheck, cacheStatusMap, uncachedParams, cachedResults, allCached, _loop3, _i3, hasCacheHits, _t4;
|
|
38621
38892
|
return providerBase_regenerator().w(function (_context14) {
|
|
38622
38893
|
while (1) switch (_context14.p = _context14.n) {
|
|
38623
38894
|
case 0:
|
|
38624
38895
|
// Resolve any PlatformSQL values to plain strings for the active platform
|
|
38625
|
-
|
|
38896
|
+
_iterator8 = providerBase_createForOfIteratorHelper(params);
|
|
38626
38897
|
try {
|
|
38627
|
-
for (
|
|
38628
|
-
p =
|
|
38898
|
+
for (_iterator8.s(); !(_step8 = _iterator8.n()).done;) {
|
|
38899
|
+
p = _step8.value;
|
|
38629
38900
|
this.ResolvePlatformSQLInParams(p);
|
|
38630
38901
|
}
|
|
38631
38902
|
// Run registered PreRunView hooks on each param in the batch
|
|
38632
38903
|
} catch (err) {
|
|
38633
|
-
|
|
38904
|
+
_iterator8.e(err);
|
|
38634
38905
|
} finally {
|
|
38635
|
-
|
|
38906
|
+
_iterator8.f();
|
|
38636
38907
|
}
|
|
38637
38908
|
i = 0;
|
|
38638
38909
|
case 1:
|
|
@@ -38680,15 +38951,15 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38680
38951
|
}
|
|
38681
38952
|
// Check if we actually have cached data for ALL params
|
|
38682
38953
|
allHaveCachedData = true;
|
|
38683
|
-
|
|
38954
|
+
_iterator9 = providerBase_createForOfIteratorHelper(params);
|
|
38684
38955
|
_context14.p = 5;
|
|
38685
|
-
|
|
38956
|
+
_iterator9.s();
|
|
38686
38957
|
case 6:
|
|
38687
|
-
if ((
|
|
38958
|
+
if ((_step9 = _iterator9.n()).done) {
|
|
38688
38959
|
_context14.n = 9;
|
|
38689
38960
|
break;
|
|
38690
38961
|
}
|
|
38691
|
-
param =
|
|
38962
|
+
param = _step9.value;
|
|
38692
38963
|
if (!param.CacheLocal) {
|
|
38693
38964
|
_context14.n = 8;
|
|
38694
38965
|
break;
|
|
@@ -38713,10 +38984,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38713
38984
|
case 10:
|
|
38714
38985
|
_context14.p = 10;
|
|
38715
38986
|
_t4 = _context14.v;
|
|
38716
|
-
|
|
38987
|
+
_iterator9.e(_t4);
|
|
38717
38988
|
case 11:
|
|
38718
38989
|
_context14.p = 11;
|
|
38719
|
-
|
|
38990
|
+
_iterator9.f();
|
|
38720
38991
|
return _context14.f(11);
|
|
38721
38992
|
case 12:
|
|
38722
38993
|
if (!allHaveCachedData) {
|
|
@@ -38769,20 +39040,20 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38769
39040
|
cachedResults = [];
|
|
38770
39041
|
allCached = true;
|
|
38771
39042
|
_loop3 = /*#__PURE__*/providerBase_regenerator().m(function _loop3() {
|
|
38772
|
-
var param, callerFields, batchEntity, fingerprint, _cached, _cached$totalRowCount2, results, cachedViewResult;
|
|
39043
|
+
var param, callerFields, batchEntity, fingerprint, _cached, _cached$totalRowCount2, results, requestedFieldSet, keyCache, cachedViewResult;
|
|
38773
39044
|
return providerBase_regenerator().w(function (_context13) {
|
|
38774
39045
|
while (1) switch (_context13.n) {
|
|
38775
39046
|
case 0:
|
|
38776
39047
|
param = params[_i3]; // Entity status check
|
|
38777
39048
|
_context13.n = 1;
|
|
38778
|
-
return
|
|
39049
|
+
return _this6.EntityStatusCheck(param, 'PreRunViews');
|
|
38779
39050
|
case 1:
|
|
38780
39051
|
// Save caller's original Fields, then always fetch all fields from DB.
|
|
38781
39052
|
// One cache entry per entity+filter satisfies all field subsets.
|
|
38782
39053
|
callerFields = param.Fields && param.Fields.length > 0 ? param.Fields.map(function (f) {
|
|
38783
39054
|
return f.trim().toLowerCase();
|
|
38784
39055
|
}) : null;
|
|
38785
|
-
batchEntity = param.EntityName ?
|
|
39056
|
+
batchEntity = param.EntityName ? _this6.EntityByName(param.EntityName) : null;
|
|
38786
39057
|
if (batchEntity) {
|
|
38787
39058
|
param.Fields = batchEntity.Fields.map(function (f) {
|
|
38788
39059
|
return f.Name;
|
|
@@ -38791,11 +39062,11 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38791
39062
|
// Check local cache if enabled or if server trusts its cache completely
|
|
38792
39063
|
// BypassCache skips cache entirely — used by maintenance actions querying for
|
|
38793
39064
|
// records that were inserted via direct SQL (bypassing BaseEntity.Save())
|
|
38794
|
-
if (!(!param.BypassCache && (param.CacheLocal ||
|
|
39065
|
+
if (!(!param.BypassCache && (param.CacheLocal || _this6.TrustLocalCacheCompletely) && LocalCacheManager.Instance.IsInitialized)) {
|
|
38795
39066
|
_context13.n = 5;
|
|
38796
39067
|
break;
|
|
38797
39068
|
}
|
|
38798
|
-
fingerprint = LocalCacheManager.Instance.GenerateRunViewFingerprint(param,
|
|
39069
|
+
fingerprint = LocalCacheManager.Instance.GenerateRunViewFingerprint(param, _this6.InstanceConnectionString);
|
|
38799
39070
|
_context13.n = 2;
|
|
38800
39071
|
return LocalCacheManager.Instance.GetRunViewResult(fingerprint);
|
|
38801
39072
|
case 2:
|
|
@@ -38807,11 +39078,20 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38807
39078
|
// Filter cached results to caller's requested fields (if specified and not entity_object)
|
|
38808
39079
|
results = _cached.results;
|
|
38809
39080
|
if (callerFields && param.ResultType !== 'entity_object') {
|
|
39081
|
+
// ⚡ Bolt: Cache key-to-lowercase string resolutions to eliminate O(n*c) string allocations and array search operations.
|
|
39082
|
+
// This improves post-cache filtering by ~40-50% for large datasets with many columns.
|
|
39083
|
+
requestedFieldSet = new Set(callerFields);
|
|
39084
|
+
keyCache = new Map();
|
|
38810
39085
|
results = results.map(function (row) {
|
|
38811
39086
|
var filtered = {};
|
|
38812
39087
|
for (var _i4 = 0, _Object$keys2 = Object.keys(row); _i4 < _Object$keys2.length; _i4++) {
|
|
38813
39088
|
var key = _Object$keys2[_i4];
|
|
38814
|
-
|
|
39089
|
+
var keep = keyCache.get(key);
|
|
39090
|
+
if (keep === undefined) {
|
|
39091
|
+
keep = requestedFieldSet.has(key.toLowerCase());
|
|
39092
|
+
keyCache.set(key, keep);
|
|
39093
|
+
}
|
|
39094
|
+
if (keep) {
|
|
38815
39095
|
filtered[key] = row[key];
|
|
38816
39096
|
}
|
|
38817
39097
|
}
|
|
@@ -38829,9 +39109,9 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38829
39109
|
AggregateResults: _cached.aggregateResults // Include cached aggregate results
|
|
38830
39110
|
}; // if needed this will transform each result into an entity object
|
|
38831
39111
|
_context13.n = 3;
|
|
38832
|
-
return
|
|
39112
|
+
return _this6.TransformSimpleObjectToEntityObject(param, cachedViewResult, contextUser);
|
|
38833
39113
|
case 3:
|
|
38834
|
-
if (!param.CacheLocal &&
|
|
39114
|
+
if (!param.CacheLocal && _this6.TrustLocalCacheCompletely) {
|
|
38835
39115
|
LogStatusEx({
|
|
38836
39116
|
message: " \u2705 [Server Cache HIT] RunViews \"".concat(param.EntityName || param.ViewName || 'unknown', "\" \u2014 ").concat(_cached.results.length, " rows served from server cache (no DB query)"),
|
|
38837
39117
|
verboseOnly: true
|
|
@@ -38918,20 +39198,20 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38918
39198
|
key: "prepareSmartCacheCheckParams",
|
|
38919
39199
|
value: (function () {
|
|
38920
39200
|
var _prepareSmartCacheCheckParams = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee14(params, telemetryEventId, contextUser) {
|
|
38921
|
-
var smartCacheCheckParams,
|
|
39201
|
+
var smartCacheCheckParams, _iterator0, _step0, param, entity, cacheStatus, fingerprint, cached, _t5;
|
|
38922
39202
|
return providerBase_regenerator().w(function (_context15) {
|
|
38923
39203
|
while (1) switch (_context15.p = _context15.n) {
|
|
38924
39204
|
case 0:
|
|
38925
39205
|
smartCacheCheckParams = [];
|
|
38926
|
-
|
|
39206
|
+
_iterator0 = providerBase_createForOfIteratorHelper(params);
|
|
38927
39207
|
_context15.p = 1;
|
|
38928
|
-
|
|
39208
|
+
_iterator0.s();
|
|
38929
39209
|
case 2:
|
|
38930
|
-
if ((
|
|
39210
|
+
if ((_step0 = _iterator0.n()).done) {
|
|
38931
39211
|
_context15.n = 9;
|
|
38932
39212
|
break;
|
|
38933
39213
|
}
|
|
38934
|
-
param =
|
|
39214
|
+
param = _step0.value;
|
|
38935
39215
|
_context15.n = 3;
|
|
38936
39216
|
return this.EntityStatusCheck(param, 'PreRunViews');
|
|
38937
39217
|
case 3:
|
|
@@ -38981,10 +39261,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
38981
39261
|
case 10:
|
|
38982
39262
|
_context15.p = 10;
|
|
38983
39263
|
_t5 = _context15.v;
|
|
38984
|
-
|
|
39264
|
+
_iterator0.e(_t5);
|
|
38985
39265
|
case 11:
|
|
38986
39266
|
_context15.p = 11;
|
|
38987
|
-
|
|
39267
|
+
_iterator0.f();
|
|
38988
39268
|
return _context15.f(11);
|
|
38989
39269
|
case 12:
|
|
38990
39270
|
return _context15.a(2, {
|
|
@@ -39016,8 +39296,8 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39016
39296
|
key: "executeSmartCacheCheck",
|
|
39017
39297
|
value: (function () {
|
|
39018
39298
|
var _executeSmartCacheCheck = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee15(params, preResult, contextUser) {
|
|
39019
|
-
var
|
|
39020
|
-
var provider, response, processingPromises, processedResults, cacheHits, cacheMisses,
|
|
39299
|
+
var _this7 = this;
|
|
39300
|
+
var provider, response, processingPromises, processedResults, cacheHits, cacheMisses, _iterator1, _step1, result;
|
|
39021
39301
|
return providerBase_regenerator().w(function (_context16) {
|
|
39022
39302
|
while (1) switch (_context16.n) {
|
|
39023
39303
|
case 0:
|
|
@@ -39052,7 +39332,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39052
39332
|
case 2:
|
|
39053
39333
|
// Process all results in parallel
|
|
39054
39334
|
processingPromises = params.map(function (param, i) {
|
|
39055
|
-
return
|
|
39335
|
+
return _this7.processSingleSmartCacheResult(param, i, response.results, contextUser);
|
|
39056
39336
|
});
|
|
39057
39337
|
_context16.n = 3;
|
|
39058
39338
|
return Promise.all(processingPromises);
|
|
@@ -39061,18 +39341,18 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39061
39341
|
// Aggregate telemetry stats
|
|
39062
39342
|
cacheHits = 0;
|
|
39063
39343
|
cacheMisses = 0;
|
|
39064
|
-
|
|
39344
|
+
_iterator1 = providerBase_createForOfIteratorHelper(processedResults);
|
|
39065
39345
|
try {
|
|
39066
|
-
for (
|
|
39067
|
-
result =
|
|
39346
|
+
for (_iterator1.s(); !(_step1 = _iterator1.n()).done;) {
|
|
39347
|
+
result = _step1.value;
|
|
39068
39348
|
if (result.cacheHit) cacheHits++;
|
|
39069
39349
|
if (result.cacheMiss) cacheMisses++;
|
|
39070
39350
|
}
|
|
39071
39351
|
// End telemetry
|
|
39072
39352
|
} catch (err) {
|
|
39073
|
-
|
|
39353
|
+
_iterator1.e(err);
|
|
39074
39354
|
} finally {
|
|
39075
|
-
|
|
39355
|
+
_iterator1.f();
|
|
39076
39356
|
}
|
|
39077
39357
|
TelemetryManager.Instance.EndEvent(preResult.telemetryEventId, {
|
|
39078
39358
|
smartCacheCheck: true,
|
|
@@ -39577,20 +39857,20 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39577
39857
|
key: "RunPreRunViewHooks",
|
|
39578
39858
|
value: (function () {
|
|
39579
39859
|
var _RunPreRunViewHooks = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee21(params, contextUser) {
|
|
39580
|
-
var hooks,
|
|
39860
|
+
var hooks, _iterator10, _step10, hook, _t6;
|
|
39581
39861
|
return providerBase_regenerator().w(function (_context22) {
|
|
39582
39862
|
while (1) switch (_context22.p = _context22.n) {
|
|
39583
39863
|
case 0:
|
|
39584
39864
|
hooks = GetDataHooks('PreRunView');
|
|
39585
|
-
|
|
39865
|
+
_iterator10 = providerBase_createForOfIteratorHelper(hooks);
|
|
39586
39866
|
_context22.p = 1;
|
|
39587
|
-
|
|
39867
|
+
_iterator10.s();
|
|
39588
39868
|
case 2:
|
|
39589
|
-
if ((
|
|
39869
|
+
if ((_step10 = _iterator10.n()).done) {
|
|
39590
39870
|
_context22.n = 5;
|
|
39591
39871
|
break;
|
|
39592
39872
|
}
|
|
39593
|
-
hook =
|
|
39873
|
+
hook = _step10.value;
|
|
39594
39874
|
_context22.n = 3;
|
|
39595
39875
|
return hook(params, contextUser);
|
|
39596
39876
|
case 3:
|
|
@@ -39604,10 +39884,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39604
39884
|
case 6:
|
|
39605
39885
|
_context22.p = 6;
|
|
39606
39886
|
_t6 = _context22.v;
|
|
39607
|
-
|
|
39887
|
+
_iterator10.e(_t6);
|
|
39608
39888
|
case 7:
|
|
39609
39889
|
_context22.p = 7;
|
|
39610
|
-
|
|
39890
|
+
_iterator10.f();
|
|
39611
39891
|
return _context22.f(7);
|
|
39612
39892
|
case 8:
|
|
39613
39893
|
return _context22.a(2, params);
|
|
@@ -39628,20 +39908,20 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39628
39908
|
key: "RunPostRunViewHooks",
|
|
39629
39909
|
value: (function () {
|
|
39630
39910
|
var _RunPostRunViewHooks = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee22(params, result, contextUser) {
|
|
39631
|
-
var hooks,
|
|
39911
|
+
var hooks, _iterator11, _step11, hook, _t7;
|
|
39632
39912
|
return providerBase_regenerator().w(function (_context23) {
|
|
39633
39913
|
while (1) switch (_context23.p = _context23.n) {
|
|
39634
39914
|
case 0:
|
|
39635
39915
|
hooks = GetDataHooks('PostRunView');
|
|
39636
|
-
|
|
39916
|
+
_iterator11 = providerBase_createForOfIteratorHelper(hooks);
|
|
39637
39917
|
_context23.p = 1;
|
|
39638
|
-
|
|
39918
|
+
_iterator11.s();
|
|
39639
39919
|
case 2:
|
|
39640
|
-
if ((
|
|
39920
|
+
if ((_step11 = _iterator11.n()).done) {
|
|
39641
39921
|
_context23.n = 5;
|
|
39642
39922
|
break;
|
|
39643
39923
|
}
|
|
39644
|
-
hook =
|
|
39924
|
+
hook = _step11.value;
|
|
39645
39925
|
_context23.n = 3;
|
|
39646
39926
|
return hook(params, result, contextUser);
|
|
39647
39927
|
case 3:
|
|
@@ -39655,10 +39935,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39655
39935
|
case 6:
|
|
39656
39936
|
_context23.p = 6;
|
|
39657
39937
|
_t7 = _context23.v;
|
|
39658
|
-
|
|
39938
|
+
_iterator11.e(_t7);
|
|
39659
39939
|
case 7:
|
|
39660
39940
|
_context23.p = 7;
|
|
39661
|
-
|
|
39941
|
+
_iterator11.f();
|
|
39662
39942
|
return _context23.f(7);
|
|
39663
39943
|
case 8:
|
|
39664
39944
|
return _context23.a(2, result);
|
|
@@ -39822,11 +40102,11 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39822
40102
|
key: "extractMaxUpdatedAt",
|
|
39823
40103
|
value: function extractMaxUpdatedAt(results) {
|
|
39824
40104
|
var maxDate = null;
|
|
39825
|
-
var
|
|
39826
|
-
|
|
40105
|
+
var _iterator12 = providerBase_createForOfIteratorHelper(results),
|
|
40106
|
+
_step12;
|
|
39827
40107
|
try {
|
|
39828
|
-
for (
|
|
39829
|
-
var item =
|
|
40108
|
+
for (_iterator12.s(); !(_step12 = _iterator12.n()).done;) {
|
|
40109
|
+
var item = _step12.value;
|
|
39830
40110
|
if (item && providerBase_typeof(item) === 'object') {
|
|
39831
40111
|
var record = item;
|
|
39832
40112
|
// Check for __mj_UpdatedAt field (standard MJ timestamp field)
|
|
@@ -39840,9 +40120,9 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39840
40120
|
}
|
|
39841
40121
|
}
|
|
39842
40122
|
} catch (err) {
|
|
39843
|
-
|
|
40123
|
+
_iterator12.e(err);
|
|
39844
40124
|
} finally {
|
|
39845
|
-
|
|
40125
|
+
_iterator12.f();
|
|
39846
40126
|
}
|
|
39847
40127
|
return maxDate ? maxDate.toISOString() : new Date().toISOString();
|
|
39848
40128
|
}
|
|
@@ -39996,7 +40276,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
39996
40276
|
key: "PreProcessRunViews",
|
|
39997
40277
|
value: (function () {
|
|
39998
40278
|
var _PreProcessRunViews = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee27(params, contextUser) {
|
|
39999
|
-
var fromEngine, eventId,
|
|
40279
|
+
var fromEngine, eventId, _iterator13, _step13, param, entity, _t8;
|
|
40000
40280
|
return providerBase_regenerator().w(function (_context28) {
|
|
40001
40281
|
while (1) switch (_context28.p = _context28.n) {
|
|
40002
40282
|
case 0:
|
|
@@ -40018,15 +40298,15 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40018
40298
|
_context28.n = 8;
|
|
40019
40299
|
break;
|
|
40020
40300
|
}
|
|
40021
|
-
|
|
40301
|
+
_iterator13 = providerBase_createForOfIteratorHelper(params);
|
|
40022
40302
|
_context28.p = 1;
|
|
40023
|
-
|
|
40303
|
+
_iterator13.s();
|
|
40024
40304
|
case 2:
|
|
40025
|
-
if ((
|
|
40305
|
+
if ((_step13 = _iterator13.n()).done) {
|
|
40026
40306
|
_context28.n = 5;
|
|
40027
40307
|
break;
|
|
40028
40308
|
}
|
|
40029
|
-
param =
|
|
40309
|
+
param = _step13.value;
|
|
40030
40310
|
this.EntityStatusCheck(param, 'PreProcessRunViews');
|
|
40031
40311
|
// FIRST, if the resultType is entity_object, we need to run the view with ALL fields in the entity
|
|
40032
40312
|
// so that we can get the data to populate the entity object with.
|
|
@@ -40054,10 +40334,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40054
40334
|
case 6:
|
|
40055
40335
|
_context28.p = 6;
|
|
40056
40336
|
_t8 = _context28.v;
|
|
40057
|
-
|
|
40337
|
+
_iterator13.e(_t8);
|
|
40058
40338
|
case 7:
|
|
40059
40339
|
_context28.p = 7;
|
|
40060
|
-
|
|
40340
|
+
_iterator13.f();
|
|
40061
40341
|
return _context28.f(7);
|
|
40062
40342
|
case 8:
|
|
40063
40343
|
return _context28.a(2);
|
|
@@ -40435,8 +40715,8 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40435
40715
|
*/
|
|
40436
40716
|
function () {
|
|
40437
40717
|
var _GetAllMetadata = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee32(providerToUse, forceRefresh) {
|
|
40438
|
-
var
|
|
40439
|
-
var d, simpleMetadata,
|
|
40718
|
+
var _this8 = this;
|
|
40719
|
+
var d, simpleMetadata, _iterator14, _step14, r, returnMetadata, _t1;
|
|
40440
40720
|
return providerBase_regenerator().w(function (_context33) {
|
|
40441
40721
|
while (1) switch (_context33.p = _context33.n) {
|
|
40442
40722
|
case 0:
|
|
@@ -40454,17 +40734,17 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40454
40734
|
case 2:
|
|
40455
40735
|
// got the results, let's build our response in the format we need
|
|
40456
40736
|
simpleMetadata = {};
|
|
40457
|
-
|
|
40737
|
+
_iterator14 = providerBase_createForOfIteratorHelper(d.Results);
|
|
40458
40738
|
try {
|
|
40459
|
-
for (
|
|
40460
|
-
r =
|
|
40739
|
+
for (_iterator14.s(); !(_step14 = _iterator14.n()).done;) {
|
|
40740
|
+
r = _step14.value;
|
|
40461
40741
|
simpleMetadata[r.Code] = r.Results;
|
|
40462
40742
|
}
|
|
40463
40743
|
// Post Process Entities because there's some special handling of the sub-objects
|
|
40464
40744
|
} catch (err) {
|
|
40465
|
-
|
|
40745
|
+
_iterator14.e(err);
|
|
40466
40746
|
} finally {
|
|
40467
|
-
|
|
40747
|
+
_iterator14.f();
|
|
40468
40748
|
}
|
|
40469
40749
|
simpleMetadata.AllEntities = this.PostProcessEntityMetadata(simpleMetadata.Entities, simpleMetadata.EntityFields, simpleMetadata.EntityFieldValues, simpleMetadata.EntityPermissions, simpleMetadata.EntityRelationships, simpleMetadata.EntitySettings, simpleMetadata.EntityOrganicKeys, simpleMetadata.EntityOrganicKeyRelatedEntities);
|
|
40470
40750
|
// Post Process the Applications, because we want to handle the sub-objects properly.
|
|
@@ -40475,7 +40755,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40475
40755
|
a.ApplicationSettings = simpleMetadata.ApplicationSettings.filter(function (as) {
|
|
40476
40756
|
return (0,dist/* UUIDsEqual */.jd)(as.ApplicationID, a.ID);
|
|
40477
40757
|
});
|
|
40478
|
-
return new ApplicationInfo(a,
|
|
40758
|
+
return new ApplicationInfo(a, _this8);
|
|
40479
40759
|
});
|
|
40480
40760
|
// now we need to construct our return type. The way the return type works, which is an instance of AllMetadata, we have to
|
|
40481
40761
|
// construst each item so it contains an array of the correct type. This is because the AllMetadata class has an array of each type of metadata
|
|
@@ -40528,50 +40808,50 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40528
40808
|
return a.Name.localeCompare(b.Name);
|
|
40529
40809
|
});
|
|
40530
40810
|
if (fieldValues && fieldValues.length > 0) {
|
|
40531
|
-
var
|
|
40532
|
-
|
|
40811
|
+
var _iterator15 = providerBase_createForOfIteratorHelper(fields),
|
|
40812
|
+
_step15;
|
|
40533
40813
|
try {
|
|
40534
40814
|
var _loop4 = function _loop4() {
|
|
40535
|
-
var f =
|
|
40815
|
+
var f = _step15.value;
|
|
40536
40816
|
// populate the field values for each field, if we have them
|
|
40537
40817
|
f.EntityFieldValues = fieldValues.filter(function (fv) {
|
|
40538
40818
|
return (0,dist/* UUIDsEqual */.jd)(fv.EntityFieldID, f.ID);
|
|
40539
40819
|
});
|
|
40540
40820
|
};
|
|
40541
|
-
for (
|
|
40821
|
+
for (_iterator15.s(); !(_step15 = _iterator15.n()).done;) {
|
|
40542
40822
|
_loop4();
|
|
40543
40823
|
}
|
|
40544
40824
|
} catch (err) {
|
|
40545
|
-
|
|
40825
|
+
_iterator15.e(err);
|
|
40546
40826
|
} finally {
|
|
40547
|
-
|
|
40827
|
+
_iterator15.f();
|
|
40548
40828
|
}
|
|
40549
40829
|
}
|
|
40550
40830
|
// Link organic key related entities to their parent organic keys
|
|
40551
40831
|
if (organicKeys && organicKeyRelatedEntities && organicKeyRelatedEntities.length > 0) {
|
|
40552
|
-
var
|
|
40553
|
-
|
|
40832
|
+
var _iterator16 = providerBase_createForOfIteratorHelper(organicKeys),
|
|
40833
|
+
_step16;
|
|
40554
40834
|
try {
|
|
40555
40835
|
var _loop5 = function _loop5() {
|
|
40556
|
-
var ok =
|
|
40836
|
+
var ok = _step16.value;
|
|
40557
40837
|
ok.EntityOrganicKeyRelatedEntities = organicKeyRelatedEntities.filter(function (okre) {
|
|
40558
40838
|
return (0,dist/* UUIDsEqual */.jd)(okre.EntityOrganicKeyID, ok.ID);
|
|
40559
40839
|
});
|
|
40560
40840
|
};
|
|
40561
|
-
for (
|
|
40841
|
+
for (_iterator16.s(); !(_step16 = _iterator16.n()).done;) {
|
|
40562
40842
|
_loop5();
|
|
40563
40843
|
}
|
|
40564
40844
|
} catch (err) {
|
|
40565
|
-
|
|
40845
|
+
_iterator16.e(err);
|
|
40566
40846
|
} finally {
|
|
40567
|
-
|
|
40847
|
+
_iterator16.f();
|
|
40568
40848
|
}
|
|
40569
40849
|
}
|
|
40570
|
-
var
|
|
40571
|
-
|
|
40850
|
+
var _iterator17 = providerBase_createForOfIteratorHelper(sortedEntities),
|
|
40851
|
+
_step17;
|
|
40572
40852
|
try {
|
|
40573
40853
|
var _loop6 = function _loop6() {
|
|
40574
|
-
var e =
|
|
40854
|
+
var e = _step17.value;
|
|
40575
40855
|
e.EntityFields = fields.filter(function (f) {
|
|
40576
40856
|
return (0,dist/* UUIDsEqual */.jd)(f.EntityID, e.ID);
|
|
40577
40857
|
}).sort(function (a, b) {
|
|
@@ -40594,7 +40874,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40594
40874
|
}
|
|
40595
40875
|
result.push(new EntityInfo(e));
|
|
40596
40876
|
};
|
|
40597
|
-
for (
|
|
40877
|
+
for (_iterator17.s(); !(_step17 = _iterator17.n()).done;) {
|
|
40598
40878
|
_loop6();
|
|
40599
40879
|
}
|
|
40600
40880
|
// Check for schema name collision: if both 'MJ' and 'MJCustom' schemas exist,
|
|
@@ -40602,9 +40882,9 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
40602
40882
|
// 'MJCustom' schema's natural prefix. This is an extremely unlikely scenario but
|
|
40603
40883
|
// would cause silent class name collisions that are very hard to debug.
|
|
40604
40884
|
} catch (err) {
|
|
40605
|
-
|
|
40885
|
+
_iterator17.e(err);
|
|
40606
40886
|
} finally {
|
|
40607
|
-
|
|
40887
|
+
_iterator17.f();
|
|
40608
40888
|
}
|
|
40609
40889
|
var distinctSchemas = new Set(result.map(function (e) {
|
|
40610
40890
|
var _e$SchemaName;
|
|
@@ -41032,21 +41312,21 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41032
41312
|
key: "GetEntityDependencies",
|
|
41033
41313
|
value: (function () {
|
|
41034
41314
|
var _GetEntityDependencies = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee37(entityName) {
|
|
41035
|
-
var eName, result,
|
|
41315
|
+
var eName, result, _iterator18, _step18, _loop7, _t12, _t13;
|
|
41036
41316
|
return providerBase_regenerator().w(function (_context39) {
|
|
41037
41317
|
while (1) switch (_context39.p = _context39.n) {
|
|
41038
41318
|
case 0:
|
|
41039
41319
|
_context39.p = 0;
|
|
41040
41320
|
eName = entityName.trim().toLowerCase();
|
|
41041
41321
|
result = [];
|
|
41042
|
-
|
|
41322
|
+
_iterator18 = providerBase_createForOfIteratorHelper(this.Entities);
|
|
41043
41323
|
_context39.p = 1;
|
|
41044
41324
|
_loop7 = /*#__PURE__*/providerBase_regenerator().m(function _loop7() {
|
|
41045
41325
|
var re, relatedFields;
|
|
41046
41326
|
return providerBase_regenerator().w(function (_context38) {
|
|
41047
41327
|
while (1) switch (_context38.n) {
|
|
41048
41328
|
case 0:
|
|
41049
|
-
re =
|
|
41329
|
+
re = _step18.value;
|
|
41050
41330
|
relatedFields = re.Fields.filter(function (f) {
|
|
41051
41331
|
var _f$RelatedEntity;
|
|
41052
41332
|
return ((_f$RelatedEntity = f.RelatedEntity) === null || _f$RelatedEntity === void 0 ? void 0 : _f$RelatedEntity.trim().toLowerCase()) === eName;
|
|
@@ -41063,9 +41343,9 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41063
41343
|
}
|
|
41064
41344
|
}, _loop7);
|
|
41065
41345
|
});
|
|
41066
|
-
|
|
41346
|
+
_iterator18.s();
|
|
41067
41347
|
case 2:
|
|
41068
|
-
if ((
|
|
41348
|
+
if ((_step18 = _iterator18.n()).done) {
|
|
41069
41349
|
_context39.n = 4;
|
|
41070
41350
|
break;
|
|
41071
41351
|
}
|
|
@@ -41079,10 +41359,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41079
41359
|
case 5:
|
|
41080
41360
|
_context39.p = 5;
|
|
41081
41361
|
_t12 = _context39.v;
|
|
41082
|
-
|
|
41362
|
+
_iterator18.e(_t12);
|
|
41083
41363
|
case 6:
|
|
41084
41364
|
_context39.p = 6;
|
|
41085
|
-
|
|
41365
|
+
_iterator18.f();
|
|
41086
41366
|
return _context39.f(6);
|
|
41087
41367
|
case 7:
|
|
41088
41368
|
return _context39.a(2, result);
|
|
@@ -41224,7 +41504,7 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41224
41504
|
key: "IsDatasetCacheUpToDate",
|
|
41225
41505
|
value: (function () {
|
|
41226
41506
|
var _IsDatasetCacheUpToDate = providerBase_asyncToGenerator(/*#__PURE__*/providerBase_regenerator().m(function _callee40(datasetName, itemFilters) {
|
|
41227
|
-
var localDate, status, serverTimestamp, localDataset,
|
|
41507
|
+
var localDate, status, serverTimestamp, localDataset, _iterator19, _step19, _loop8, _ret2, _t14;
|
|
41228
41508
|
return providerBase_regenerator().w(function (_context43) {
|
|
41229
41509
|
while (1) switch (_context43.p = _context43.n) {
|
|
41230
41510
|
case 0:
|
|
@@ -41253,14 +41533,14 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41253
41533
|
return this.GetCachedDataset(datasetName, itemFilters);
|
|
41254
41534
|
case 3:
|
|
41255
41535
|
localDataset = _context43.v;
|
|
41256
|
-
|
|
41536
|
+
_iterator19 = providerBase_createForOfIteratorHelper(status.EntityUpdateDates);
|
|
41257
41537
|
_context43.p = 4;
|
|
41258
41538
|
_loop8 = /*#__PURE__*/providerBase_regenerator().m(function _loop8() {
|
|
41259
41539
|
var eu, localEntity;
|
|
41260
41540
|
return providerBase_regenerator().w(function (_context42) {
|
|
41261
41541
|
while (1) switch (_context42.n) {
|
|
41262
41542
|
case 0:
|
|
41263
|
-
eu =
|
|
41543
|
+
eu = _step19.value;
|
|
41264
41544
|
localEntity = localDataset.Results.find(function (e) {
|
|
41265
41545
|
return (0,dist/* UUIDsEqual */.jd)(e.EntityID, eu.EntityID);
|
|
41266
41546
|
});
|
|
@@ -41276,9 +41556,9 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41276
41556
|
}
|
|
41277
41557
|
}, _loop8);
|
|
41278
41558
|
});
|
|
41279
|
-
|
|
41559
|
+
_iterator19.s();
|
|
41280
41560
|
case 5:
|
|
41281
|
-
if ((
|
|
41561
|
+
if ((_step19 = _iterator19.n()).done) {
|
|
41282
41562
|
_context43.n = 8;
|
|
41283
41563
|
break;
|
|
41284
41564
|
}
|
|
@@ -41299,10 +41579,10 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41299
41579
|
case 9:
|
|
41300
41580
|
_context43.p = 9;
|
|
41301
41581
|
_t14 = _context43.v;
|
|
41302
|
-
|
|
41582
|
+
_iterator19.e(_t14);
|
|
41303
41583
|
case 10:
|
|
41304
41584
|
_context43.p = 10;
|
|
41305
|
-
|
|
41585
|
+
_iterator19.f();
|
|
41306
41586
|
return _context43.f(10);
|
|
41307
41587
|
case 11:
|
|
41308
41588
|
return _context43.a(2, true);
|
|
@@ -41693,18 +41973,18 @@ var ProviderBase = /*#__PURE__*/function () {
|
|
|
41693
41973
|
this._entityMapByName.clear();
|
|
41694
41974
|
this._entityMapByID.clear();
|
|
41695
41975
|
if (entities) {
|
|
41696
|
-
var
|
|
41697
|
-
|
|
41976
|
+
var _iterator20 = providerBase_createForOfIteratorHelper(entities),
|
|
41977
|
+
_step20;
|
|
41698
41978
|
try {
|
|
41699
|
-
for (
|
|
41700
|
-
var e =
|
|
41979
|
+
for (_iterator20.s(); !(_step20 = _iterator20.n()).done;) {
|
|
41980
|
+
var e = _step20.value;
|
|
41701
41981
|
this._entityMapByName.set(e.Name.trim().toLowerCase(), e);
|
|
41702
41982
|
this._entityMapByID.set((0,dist/* NormalizeUUID */.Xw)(e.ID), e);
|
|
41703
41983
|
}
|
|
41704
41984
|
} catch (err) {
|
|
41705
|
-
|
|
41985
|
+
_iterator20.e(err);
|
|
41706
41986
|
} finally {
|
|
41707
|
-
|
|
41987
|
+
_iterator20.f();
|
|
41708
41988
|
}
|
|
41709
41989
|
}
|
|
41710
41990
|
}
|
|
@@ -42016,6 +42296,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
|
|
|
42016
42296
|
_this2._entityEventSubjects = new Map();
|
|
42017
42297
|
_this2._dataChange$ = new Subject/* Subject */.B();
|
|
42018
42298
|
_this2._cacheChangeUnsubscribers = [];
|
|
42299
|
+
_this2._propertySubjects = new Map();
|
|
42019
42300
|
_this2._entityEventDebounceTime = 1500; // Default debounce time in milliseconds (1.5 seconds)
|
|
42020
42301
|
return _this2;
|
|
42021
42302
|
}
|
|
@@ -42038,6 +42319,43 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
|
|
|
42038
42319
|
*/
|
|
42039
42320
|
baseEngine_inherits(BaseEngine, _BaseSingleton);
|
|
42040
42321
|
return baseEngine_createClass(BaseEngine, [{
|
|
42322
|
+
key: "ObserveProperty",
|
|
42323
|
+
value:
|
|
42324
|
+
/**
|
|
42325
|
+
* Returns an Observable for a specific engine array property. Subscribers receive the
|
|
42326
|
+
* current array immediately (BehaviorSubject semantics), then re-receive the same array
|
|
42327
|
+
* reference whenever the engine mutates it (save, delete, remote-invalidate, refresh).
|
|
42328
|
+
*
|
|
42329
|
+
* The BehaviorSubject for a property is lazy-created on first call — engines where no
|
|
42330
|
+
* one observes a property pay zero runtime cost.
|
|
42331
|
+
*
|
|
42332
|
+
* @param propertyName - The name of the backing array property on the engine (e.g. `_UserNotifications`).
|
|
42333
|
+
*/
|
|
42334
|
+
function ObserveProperty(propertyName) {
|
|
42335
|
+
var subject = this._propertySubjects.get(propertyName);
|
|
42336
|
+
if (!subject) {
|
|
42337
|
+
var _this$propertyName;
|
|
42338
|
+
var current = (_this$propertyName = this[propertyName]) !== null && _this$propertyName !== void 0 ? _this$propertyName : [];
|
|
42339
|
+
subject = new BehaviorSubject/* BehaviorSubject */.t(current);
|
|
42340
|
+
this._propertySubjects.set(propertyName, subject);
|
|
42341
|
+
}
|
|
42342
|
+
return subject.asObservable();
|
|
42343
|
+
}
|
|
42344
|
+
/**
|
|
42345
|
+
* Notifies subscribers of `ObserveProperty(propertyName)` that the array has changed.
|
|
42346
|
+
* No-op if no one has ever observed this property (BehaviorSubject not created).
|
|
42347
|
+
* Called from the array mutation sites in BaseEngine.
|
|
42348
|
+
*/
|
|
42349
|
+
}, {
|
|
42350
|
+
key: "emitPropertyChange",
|
|
42351
|
+
value: function emitPropertyChange(propertyName) {
|
|
42352
|
+
var _this$propertyName2;
|
|
42353
|
+
var subject = this._propertySubjects.get(propertyName);
|
|
42354
|
+
if (!subject) return;
|
|
42355
|
+
var current = (_this$propertyName2 = this[propertyName]) !== null && _this$propertyName2 !== void 0 ? _this$propertyName2 : [];
|
|
42356
|
+
subject.next(current);
|
|
42357
|
+
}
|
|
42358
|
+
}, {
|
|
42041
42359
|
key: "DataChange$",
|
|
42042
42360
|
get: function get() {
|
|
42043
42361
|
return this._dataChange$.asObservable();
|
|
@@ -42647,6 +42965,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
|
|
|
42647
42965
|
});
|
|
42648
42966
|
this.NotifyDataChange(config, currentData, 'add', entity);
|
|
42649
42967
|
}
|
|
42968
|
+
this.emitPropertyChange(config.PropertyName);
|
|
42650
42969
|
// LocalCacheManager handles its own cache sync by listening for
|
|
42651
42970
|
// remote-invalidate events directly — no need to sync here
|
|
42652
42971
|
case 6:
|
|
@@ -42715,6 +43034,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
|
|
|
42715
43034
|
data: currentData
|
|
42716
43035
|
});
|
|
42717
43036
|
this.NotifyDataChange(config, currentData, 'delete', removed);
|
|
43037
|
+
this.emitPropertyChange(config.PropertyName);
|
|
42718
43038
|
}
|
|
42719
43039
|
// LocalCacheManager handles its own cache sync for deletes
|
|
42720
43040
|
}
|
|
@@ -43097,6 +43417,8 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
|
|
|
43097
43417
|
this.NotifyDataChange(config, currentData, 'delete', entity);
|
|
43098
43418
|
}
|
|
43099
43419
|
}
|
|
43420
|
+
// Per-property observable emission for subscribers of ObserveProperty(config.PropertyName)
|
|
43421
|
+
this.emitPropertyChange(config.PropertyName);
|
|
43100
43422
|
// Sync to LocalCacheManager if CacheLocal is enabled for this config
|
|
43101
43423
|
// This keeps IndexedDB/localStorage in sync with in-memory array
|
|
43102
43424
|
if (config.CacheLocal) {
|
|
@@ -43333,6 +43655,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
|
|
|
43333
43655
|
case 1:
|
|
43334
43656
|
result = _context14.v;
|
|
43335
43657
|
this.HandleSingleViewResult(config, result);
|
|
43658
|
+
this.emitPropertyChange(config.PropertyName);
|
|
43336
43659
|
case 2:
|
|
43337
43660
|
return _context14.a(2);
|
|
43338
43661
|
}
|
|
@@ -43408,6 +43731,7 @@ var BaseEngine = /*#__PURE__*/function (_BaseSingleton) {
|
|
|
43408
43731
|
entityNames = [];
|
|
43409
43732
|
for (i = 0; i < configs.length; i++) {
|
|
43410
43733
|
this.HandleSingleViewResult(configs[i], results[i]);
|
|
43734
|
+
this.emitPropertyChange(configs[i].PropertyName);
|
|
43411
43735
|
if (configs[i].EntityName) {
|
|
43412
43736
|
entityNames.push(configs[i].EntityName);
|
|
43413
43737
|
}
|
|
@@ -47036,13 +47360,31 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
47036
47360
|
}, {
|
|
47037
47361
|
key: "OnSaveCompleted",
|
|
47038
47362
|
value: (function () {
|
|
47039
|
-
var _OnSaveCompleted = databaseProviderBase_asyncToGenerator(/*#__PURE__*/databaseProviderBase_regenerator().m(function _callee10(
|
|
47363
|
+
var _OnSaveCompleted = databaseProviderBase_asyncToGenerator(/*#__PURE__*/databaseProviderBase_regenerator().m(function _callee10(entity, saveSQLResult, user, options, _context) {
|
|
47364
|
+
var _saveSQLResult$extraD;
|
|
47365
|
+
var overlappingChangeData, _user$ID, transaction;
|
|
47040
47366
|
return databaseProviderBase_regenerator().w(function (_context11) {
|
|
47041
47367
|
while (1) switch (_context11.n) {
|
|
47042
47368
|
case 0:
|
|
47369
|
+
// ISA overlapping-subtype record-change propagation is DB-agnostic: if the save SQL
|
|
47370
|
+
// generation populated `overlappingChangeData` in extraData and the entity tracks
|
|
47371
|
+
// record changes across multiple subtypes, fan the change record out to siblings.
|
|
47372
|
+
// The provider-specific transaction handle (if any) is passed through opaquely
|
|
47373
|
+
// via `connectionSource`; each provider treats it as its native type downstream.
|
|
47374
|
+
overlappingChangeData = (_saveSQLResult$extraD = saveSQLResult.extraData) === null || _saveSQLResult$extraD === void 0 ? void 0 : _saveSQLResult$extraD.overlappingChangeData;
|
|
47375
|
+
if (!(overlappingChangeData && entity.EntityInfo.AllowMultipleSubtypes && entity.EntityInfo.TrackRecordChanges)) {
|
|
47376
|
+
_context11.n = 1;
|
|
47377
|
+
break;
|
|
47378
|
+
}
|
|
47379
|
+
transaction = entity.ProviderTransaction;
|
|
47380
|
+
_context11.n = 1;
|
|
47381
|
+
return this.PropagateRecordChangesToSiblings(entity.EntityInfo, overlappingChangeData, entity.PrimaryKey.Values(), (_user$ID = user === null || user === void 0 ? void 0 : user.ID) !== null && _user$ID !== void 0 ? _user$ID : '', options.ISAActiveChildEntityName, transaction ? {
|
|
47382
|
+
connectionSource: transaction
|
|
47383
|
+
} : undefined);
|
|
47384
|
+
case 1:
|
|
47043
47385
|
return _context11.a(2, null);
|
|
47044
47386
|
}
|
|
47045
|
-
}, _callee10);
|
|
47387
|
+
}, _callee10, this);
|
|
47046
47388
|
}));
|
|
47047
47389
|
function OnSaveCompleted(_x37, _x38, _x39, _x40, _x41) {
|
|
47048
47390
|
return _OnSaveCompleted.apply(this, arguments);
|
|
@@ -48144,12 +48486,12 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48144
48486
|
}, {
|
|
48145
48487
|
key: "LogRecordChange",
|
|
48146
48488
|
value: (function () {
|
|
48147
|
-
var _LogRecordChange = databaseProviderBase_asyncToGenerator(/*#__PURE__*/databaseProviderBase_regenerator().m(function _callee19(newData, oldData, entityName, recordID, entityInfo, type, user) {
|
|
48489
|
+
var _LogRecordChange = databaseProviderBase_asyncToGenerator(/*#__PURE__*/databaseProviderBase_regenerator().m(function _callee19(newData, oldData, entityName, recordID, entityInfo, type, user, restoreContext) {
|
|
48148
48490
|
var sqlResult, _sqlResult$parameters;
|
|
48149
48491
|
return databaseProviderBase_regenerator().w(function (_context21) {
|
|
48150
48492
|
while (1) switch (_context21.n) {
|
|
48151
48493
|
case 0:
|
|
48152
|
-
sqlResult = this.BuildRecordChangeSQL(newData, oldData, entityName, recordID, entityInfo, type, user);
|
|
48494
|
+
sqlResult = this.BuildRecordChangeSQL(newData, oldData, entityName, recordID, entityInfo, type, user, restoreContext);
|
|
48153
48495
|
if (!sqlResult) {
|
|
48154
48496
|
_context21.n = 2;
|
|
48155
48497
|
break;
|
|
@@ -48163,11 +48505,79 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48163
48505
|
}
|
|
48164
48506
|
}, _callee19, this);
|
|
48165
48507
|
}));
|
|
48166
|
-
function LogRecordChange(_x74, _x75, _x76, _x77, _x78, _x79, _x80) {
|
|
48508
|
+
function LogRecordChange(_x74, _x75, _x76, _x77, _x78, _x79, _x80, _x81) {
|
|
48167
48509
|
return _LogRecordChange.apply(this, arguments);
|
|
48168
48510
|
}
|
|
48169
48511
|
return LogRecordChange;
|
|
48170
48512
|
}()
|
|
48513
|
+
/**
|
|
48514
|
+
* Dialect-agnostic predicate: should we write a RecordChange entry for
|
|
48515
|
+
* this entity? Excludes the Record Changes entity itself to prevent
|
|
48516
|
+
* recursion. Provider implementations should call this before invoking
|
|
48517
|
+
* {@link BuildRecordChangePayload} or constructing dialect SQL.
|
|
48518
|
+
*/
|
|
48519
|
+
)
|
|
48520
|
+
}, {
|
|
48521
|
+
key: "ShouldTrackRecordChanges",
|
|
48522
|
+
value: function ShouldTrackRecordChanges(entityInfo) {
|
|
48523
|
+
if (!entityInfo.TrackRecordChanges) return false;
|
|
48524
|
+
var lower = entityInfo.Name.trim().toLowerCase();
|
|
48525
|
+
return lower !== 'record changes' && lower !== 'mj: record changes';
|
|
48526
|
+
}
|
|
48527
|
+
/**
|
|
48528
|
+
* Builds the dialect-agnostic payload for a RecordChange row from the
|
|
48529
|
+
* entity's old/new data and an optional restore context. Concrete
|
|
48530
|
+
* providers consume the returned payload to render their dialect-specific
|
|
48531
|
+
* SQL (SQL Server EXEC, PostgreSQL INSERT, etc.).
|
|
48532
|
+
*
|
|
48533
|
+
* Returns null when there's nothing to log — i.e., an Update where
|
|
48534
|
+
* {@link DiffObjects} found no field-level changes. Creates and Deletes
|
|
48535
|
+
* are always logged (one side of `oldData`/`newData` is null).
|
|
48536
|
+
*
|
|
48537
|
+
* The payload's `recordID` is whatever the caller passes in. PG's
|
|
48538
|
+
* inline CTE save/delete paths can pass an empty string and resolve
|
|
48539
|
+
* the actual RecordID expression in SQL (because the post-INSERT PK
|
|
48540
|
+
* isn't known in JS); the standalone {@link BuildRecordChangeSQL} path
|
|
48541
|
+
* passes a fully-resolved composite-key string.
|
|
48542
|
+
*
|
|
48543
|
+
* @param newData Post-change data (null for deletes).
|
|
48544
|
+
* @param oldData Pre-change data (null for creates).
|
|
48545
|
+
* @param recordID Composite-key serialized RecordID, or empty for CTE callers.
|
|
48546
|
+
* @param entityInfo Entity metadata (provides EntityID + field shapes for diff).
|
|
48547
|
+
* @param type Change type. `Create` and `Delete` skip the change-key short-circuit.
|
|
48548
|
+
* @param user Acting user (provides UserID).
|
|
48549
|
+
* @param restoreContext When non-null, populates `source='Restore'` plus the
|
|
48550
|
+
* lineage columns; otherwise `source='Internal'`.
|
|
48551
|
+
* @param quoteToEscape Quote character for `EscapeQuotesInProperties` and
|
|
48552
|
+
* `DiffObjects`. Defaults to single quote.
|
|
48553
|
+
*/
|
|
48554
|
+
}, {
|
|
48555
|
+
key: "BuildRecordChangePayload",
|
|
48556
|
+
value: function BuildRecordChangePayload(newData, oldData, recordID, entityInfo, type, user, restoreContext) {
|
|
48557
|
+
var _restoreContext$Sourc, _restoreContext$Reaso;
|
|
48558
|
+
var quoteToEscape = arguments.length > 7 && arguments[7] !== undefined ? arguments[7] : "'";
|
|
48559
|
+
var isCreateOrDelete = oldData === null || newData === null;
|
|
48560
|
+
var changes = this.DiffObjects(oldData, newData, entityInfo, quoteToEscape);
|
|
48561
|
+
var changesKeys = changes ? Object.keys(changes) : [];
|
|
48562
|
+
if (changesKeys.length === 0 && !isCreateOrDelete) return null;
|
|
48563
|
+
var dataForFullJSON = newData !== null && newData !== void 0 ? newData : oldData;
|
|
48564
|
+
var fullRecordJSON = JSON.stringify(this.EscapeQuotesInProperties(dataForFullJSON, quoteToEscape));
|
|
48565
|
+
var changesJSON = changes !== null ? JSON.stringify(changes) : '';
|
|
48566
|
+
var changesDescription = oldData && newData ? this.CreateUserDescriptionOfChanges(changes) : !oldData ? 'Record Created' : 'Record Deleted';
|
|
48567
|
+
var source = restoreContext ? 'Restore' : 'Internal';
|
|
48568
|
+
return {
|
|
48569
|
+
entityID: entityInfo.ID,
|
|
48570
|
+
recordID: recordID,
|
|
48571
|
+
userID: user.ID,
|
|
48572
|
+
type: type,
|
|
48573
|
+
source: source,
|
|
48574
|
+
changesJSON: changesJSON,
|
|
48575
|
+
changesDescription: changesDescription,
|
|
48576
|
+
fullRecordJSON: fullRecordJSON,
|
|
48577
|
+
restoredFromID: (_restoreContext$Sourc = restoreContext === null || restoreContext === void 0 ? void 0 : restoreContext.SourceChangeID) !== null && _restoreContext$Sourc !== void 0 ? _restoreContext$Sourc : null,
|
|
48578
|
+
restoreReason: (_restoreContext$Reaso = restoreContext === null || restoreContext === void 0 ? void 0 : restoreContext.Reason) !== null && _restoreContext$Reaso !== void 0 ? _restoreContext$Reaso : null
|
|
48579
|
+
};
|
|
48580
|
+
}
|
|
48171
48581
|
/**
|
|
48172
48582
|
* Propagates record change entries to sibling branches of an IS-A hierarchy.
|
|
48173
48583
|
* Called after saving an entity with AllowMultipleSubtypes (overlapping subtypes).
|
|
@@ -48180,7 +48590,6 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48180
48590
|
* @param activeChildEntityName The child entity that initiated the save (to skip)
|
|
48181
48591
|
* @param extraExecOptions Optional provider-specific execution options (e.g. connectionSource for SQL Server transactions)
|
|
48182
48592
|
*/
|
|
48183
|
-
)
|
|
48184
48593
|
}, {
|
|
48185
48594
|
key: "PropagateRecordChangesToSiblings",
|
|
48186
48595
|
value: (function () {
|
|
@@ -48274,7 +48683,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48274
48683
|
}
|
|
48275
48684
|
}, _callee20, this, [[4, 9, 10, 11], [1, 13, 14, 15]]);
|
|
48276
48685
|
}));
|
|
48277
|
-
function PropagateRecordChangesToSiblings(
|
|
48686
|
+
function PropagateRecordChangesToSiblings(_x82, _x83, _x84, _x85, _x86, _x87) {
|
|
48278
48687
|
return _PropagateRecordChangesToSiblings.apply(this, arguments);
|
|
48279
48688
|
}
|
|
48280
48689
|
return PropagateRecordChangesToSiblings;
|
|
@@ -48345,7 +48754,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48345
48754
|
}
|
|
48346
48755
|
}, _callee21, this);
|
|
48347
48756
|
}));
|
|
48348
|
-
function GetRecordDuplicates(
|
|
48757
|
+
function GetRecordDuplicates(_x88, _x89) {
|
|
48349
48758
|
return _GetRecordDuplicates.apply(this, arguments);
|
|
48350
48759
|
}
|
|
48351
48760
|
return GetRecordDuplicates;
|
|
@@ -48544,7 +48953,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48544
48953
|
}
|
|
48545
48954
|
}, _callee22, this, [[12, 19, 20, 21], [9, 28, 29, 30], [3, 33]]);
|
|
48546
48955
|
}));
|
|
48547
|
-
function MergeRecords(
|
|
48956
|
+
function MergeRecords(_x90, _x91, _x92) {
|
|
48548
48957
|
return _MergeRecords.apply(this, arguments);
|
|
48549
48958
|
}
|
|
48550
48959
|
return MergeRecords;
|
|
@@ -48612,7 +49021,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48612
49021
|
}
|
|
48613
49022
|
}, _callee23, this, [[0, 7]]);
|
|
48614
49023
|
}));
|
|
48615
|
-
function StartMergeLogging(
|
|
49024
|
+
function StartMergeLogging(_x93, _x94, _x95) {
|
|
48616
49025
|
return _StartMergeLogging.apply(this, arguments);
|
|
48617
49026
|
}
|
|
48618
49027
|
return StartMergeLogging;
|
|
@@ -48708,7 +49117,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48708
49117
|
}
|
|
48709
49118
|
}, _callee24, this, [[3, 9, 10, 11], [0, 14]]);
|
|
48710
49119
|
}));
|
|
48711
|
-
function CompleteMergeLogging(
|
|
49120
|
+
function CompleteMergeLogging(_x96, _x97, _x98) {
|
|
48712
49121
|
return _CompleteMergeLogging.apply(this, arguments);
|
|
48713
49122
|
}
|
|
48714
49123
|
return CompleteMergeLogging;
|
|
@@ -48788,7 +49197,7 @@ var DatabaseProviderBase = /*#__PURE__*/function (_ProviderBase) {
|
|
|
48788
49197
|
}
|
|
48789
49198
|
}, _callee25, this);
|
|
48790
49199
|
}));
|
|
48791
|
-
function RunReport(
|
|
49200
|
+
function RunReport(_x99, _x100) {
|
|
48792
49201
|
return _RunReport.apply(this, arguments);
|
|
48793
49202
|
}
|
|
48794
49203
|
return RunReport;
|
|
@@ -54574,9 +54983,9 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
|
|
|
54574
54983
|
* zod schema definition for the entity MJ: Instance Configurations
|
|
54575
54984
|
*/var MJInstanceConfigurationSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),FeatureKey:z.string().describe("\n * * Field Name: FeatureKey\n * * Display Name: Feature Key\n * * SQL Data Type: nvarchar(200)\n * * Description: Unique dot-notation key identifying the feature, e.g. Shell.SearchBar.Enabled."),Value:z.string().describe("\n * * Field Name: Value\n * * Display Name: Current Value\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Current value for this feature setting."),ValueType:z.union([z.literal('boolean'),z.literal('json'),z.literal('number'),z.literal('string')]).describe("\n * * Field Name: ValueType\n * * Display Name: Value Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: boolean\n * * Value List Type: List\n * * Possible Values \n * * boolean\n * * json\n * * number\n * * string\n * * Description: Data type of the value: boolean, string, number, or json."),Category:z.string().describe("\n * * Field Name: Category\n * * Display Name: Admin Category\n * * SQL Data Type: nvarchar(100)\n * * Default Value: General\n * * Description: Grouping category for admin UI display."),DisplayName:z.string().describe("\n * * Field Name: DisplayName\n * * Display Name: Display Name\n * * SQL Data Type: nvarchar(200)\n * * Description: Human-readable display name for the setting."),Description:z.string().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Optional extended description or help text for the setting."),DefaultValue:z.string().describe("\n * * Field Name: DefaultValue\n * * Display Name: Default Value\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Factory default value. Used when resetting to defaults."),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()")});/**
|
|
54576
54985
|
* zod schema definition for the entity MJ: Integration Object Fields
|
|
54577
|
-
*/var MJIntegrationObjectFieldSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()\n * * Description: Primary key"),IntegrationObjectID:z.string().describe("\n * * Field Name: IntegrationObjectID\n * * Display Name: Integration Object\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Integration Objects (vwIntegrationObjects.ID)\n * * Description: Foreign key to the IntegrationObject this field belongs to"),Name:z.string().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Field name as returned by the external API"),DisplayName:z.string().nullable().describe("\n * * Field Name: DisplayName\n * * Display Name: Display Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Human-friendly display label for the field"),Description:z.string().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Description of what this field represents"),Category:z.string().nullable().describe("\n * * Field Name: Category\n * * Display Name: Category\n * * SQL Data Type: nvarchar(100)\n * * Description: UI grouping category within the object"),Type:z.string().describe("\n * * Field Name: Type\n * * Display Name: Type\n * * SQL Data Type: nvarchar(100)\n * * Description: Data type of the field (e.g., nvarchar, int, datetime, decimal, bit). Uses same type vocabulary as EntityField."),Length:z.number().nullable().describe("\n * * Field Name: Length\n * * Display Name: Length\n * * SQL Data Type: int\n * * Description: Maximum length for string types"),Precision:z.number().nullable().describe("\n * * Field Name: Precision\n * * Display Name: Precision\n * * SQL Data Type: int\n * * Description: Numeric precision"),Scale:z.number().nullable().describe("\n * * Field Name: Scale\n * * Display Name: Scale\n * * SQL Data Type: int\n * * Description: Numeric scale"),AllowsNull:z.boolean().describe("\n * * Field Name: AllowsNull\n * * Display Name: Allows Null\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether the field can contain NULL values"),DefaultValue:z.string().nullable().describe("\n * * Field Name: DefaultValue\n * * Display Name: Default Value\n * * SQL Data Type: nvarchar(255)\n * * Description: Default value from the source system"),IsPrimaryKey:z.boolean().describe("\n * * Field Name: IsPrimaryKey\n * * Display Name: Primary Key\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this field is part of the object primary key"),IsUniqueKey:z.boolean().describe("\n * * Field Name: IsUniqueKey\n * * Display Name: Unique Key\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether values must be unique across all records"),IsReadOnly:z.boolean().describe("\n * * Field Name: IsReadOnly\n * * Display Name: Read Only\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this field cannot be written back to the source system"),IsRequired:z.boolean().describe("\n * * Field Name: IsRequired\n * * Display Name: Required\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this field is required for create/update operations"),RelatedIntegrationObjectID:z.string().nullable().describe("\n * * Field Name: RelatedIntegrationObjectID\n * * Display Name: Related Integration Object\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Integration Objects (vwIntegrationObjects.ID)\n * * Description: Foreign key to another IntegrationObject, establishing a relationship. Used for DAG-based dependency ordering and template variable resolution in parent APIPath patterns."),RelatedIntegrationObjectFieldName:z.string().nullable().describe("\n * * Field Name: RelatedIntegrationObjectFieldName\n * * Display Name: Related Field Name\n * * SQL Data Type: nvarchar(255)\n * * Description: The field name on the related IntegrationObject that this FK points to (typically the PK field)"),Sequence:z.number().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Display and processing order within the object. Lower numbers appear first."),Configuration:z.string().nullable().describe("\n * * Field Name: Configuration\n * * Display Name: Configuration\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Freeform JSON for connector-specific field configuration"),Status:z.union([z.literal('Active'),z.literal('Deprecated'),z.literal('Disabled')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(25)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Deprecated\n * * Disabled\n * * Description: Active, Deprecated, or Disabled. Mirrors EntityField status values."),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),IntegrationObject:z.string().describe("\n * * Field Name: IntegrationObject\n * * Display Name: Integration Object Name\n * * SQL Data Type: nvarchar(255)"),RelatedIntegrationObject:z.string().nullable().describe("\n * * Field Name: RelatedIntegrationObject\n * * Display Name: Related Object Name\n * * SQL Data Type: nvarchar(255)")});/**
|
|
54986
|
+
*/var MJIntegrationObjectFieldSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()\n * * Description: Primary key"),IntegrationObjectID:z.string().describe("\n * * Field Name: IntegrationObjectID\n * * Display Name: Integration Object\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Integration Objects (vwIntegrationObjects.ID)\n * * Description: Foreign key to the IntegrationObject this field belongs to"),Name:z.string().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Field name as returned by the external API"),DisplayName:z.string().nullable().describe("\n * * Field Name: DisplayName\n * * Display Name: Display Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Human-friendly display label for the field"),Description:z.string().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Description of what this field represents"),Category:z.string().nullable().describe("\n * * Field Name: Category\n * * Display Name: Category\n * * SQL Data Type: nvarchar(100)\n * * Description: UI grouping category within the object"),Type:z.string().describe("\n * * Field Name: Type\n * * Display Name: Data Type\n * * SQL Data Type: nvarchar(100)\n * * Description: Data type of the field (e.g., nvarchar, int, datetime, decimal, bit). Uses same type vocabulary as EntityField."),Length:z.number().nullable().describe("\n * * Field Name: Length\n * * Display Name: Length\n * * SQL Data Type: int\n * * Description: Maximum length for string types"),Precision:z.number().nullable().describe("\n * * Field Name: Precision\n * * Display Name: Precision\n * * SQL Data Type: int\n * * Description: Numeric precision"),Scale:z.number().nullable().describe("\n * * Field Name: Scale\n * * Display Name: Scale\n * * SQL Data Type: int\n * * Description: Numeric scale"),AllowsNull:z.boolean().describe("\n * * Field Name: AllowsNull\n * * Display Name: Allows Null\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether the field can contain NULL values"),DefaultValue:z.string().nullable().describe("\n * * Field Name: DefaultValue\n * * Display Name: Default Value\n * * SQL Data Type: nvarchar(255)\n * * Description: Default value from the source system"),IsPrimaryKey:z.boolean().describe("\n * * Field Name: IsPrimaryKey\n * * Display Name: Is Primary Key\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this field is part of the object primary key"),IsUniqueKey:z.boolean().describe("\n * * Field Name: IsUniqueKey\n * * Display Name: Is Unique Key\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether values must be unique across all records"),IsReadOnly:z.boolean().describe("\n * * Field Name: IsReadOnly\n * * Display Name: Is Read Only\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this field cannot be written back to the source system"),IsRequired:z.boolean().describe("\n * * Field Name: IsRequired\n * * Display Name: Is Required\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this field is required for create/update operations"),RelatedIntegrationObjectID:z.string().nullable().describe("\n * * Field Name: RelatedIntegrationObjectID\n * * Display Name: Related Integration Object ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Integration Objects (vwIntegrationObjects.ID)\n * * Description: Foreign key to another IntegrationObject, establishing a relationship. Used for DAG-based dependency ordering and template variable resolution in parent APIPath patterns."),RelatedIntegrationObjectFieldName:z.string().nullable().describe("\n * * Field Name: RelatedIntegrationObjectFieldName\n * * Display Name: Related Field Name\n * * SQL Data Type: nvarchar(255)\n * * Description: The field name on the related IntegrationObject that this FK points to (typically the PK field)"),Sequence:z.number().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Display and processing order within the object. Lower numbers appear first."),Configuration:z.string().nullable().describe("\n * * Field Name: Configuration\n * * Display Name: Configuration\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Freeform JSON for connector-specific field configuration"),Status:z.union([z.literal('Active'),z.literal('Deprecated'),z.literal('Disabled')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(25)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Deprecated\n * * Disabled\n * * Description: Active, Deprecated, or Disabled. Mirrors EntityField status values."),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),IsCustom:z.boolean().describe("\n * * Field Name: IsCustom\n * * Display Name: Is Custom\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When true, this field was dynamically discovered by IntrospectSchema and is not defined in static connector metadata."),IntegrationObject:z.string().describe("\n * * Field Name: IntegrationObject\n * * Display Name: Integration Object Name\n * * SQL Data Type: nvarchar(255)"),RelatedIntegrationObject:z.string().nullable().describe("\n * * Field Name: RelatedIntegrationObject\n * * Display Name: Related Object Name\n * * SQL Data Type: nvarchar(255)")});/**
|
|
54578
54987
|
* zod schema definition for the entity MJ: Integration Objects
|
|
54579
|
-
*/var MJIntegrationObjectSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()\n * * Description: Primary key"),IntegrationID:z.string().describe("\n * * Field Name: IntegrationID\n * * Display Name: Integration\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Integrations (vwIntegrations.ID)\n * * Description: Foreign key to the Integration that owns this object"),Name:z.string().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Internal/programmatic name of the external object (e.g., Members, Events)"),DisplayName:z.string().nullable().describe("\n * * Field Name: DisplayName\n * * Display Name: Display Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Human-friendly display label"),Description:z.string().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Description of what this external object represents"),Category:z.string().nullable().describe("\n * * Field Name: Category\n * * Display Name: Category\n * * SQL Data Type: nvarchar(100)\n * * Description: UI grouping category (e.g., Membership, Events, Finance)"),APIPath:z.string().describe("\n * * Field Name: APIPath\n * * Display Name: API Path\n * * SQL Data Type: nvarchar(500)\n * * Description: API endpoint path, may include template variables like {ProfileID} that are resolved at runtime from parent object records"),ResponseDataKey:z.string().nullable().describe("\n * * Field Name: ResponseDataKey\n * * Display Name: Response Data Key\n * * SQL Data Type: nvarchar(255)\n * * Description: JSON key used to extract the data array from the API response envelope. NULL means the response is a root-level array."),DefaultPageSize:z.number().describe("\n * * Field Name: DefaultPageSize\n * * Display Name: Default Page Size\n * * SQL Data Type: int\n * * Default Value: 100\n * * Description: Number of records to request per page from the API"),SupportsPagination:z.boolean().describe("\n * * Field Name: SupportsPagination\n * * Display Name: Supports Pagination\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether this endpoint supports paginated fetching"),PaginationType:z.union([z.literal('Cursor'),z.literal('None'),z.literal('Offset'),z.literal('PageNumber')]).describe("\n * * Field Name: PaginationType\n * * Display Name: Pagination Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: PageNumber\n * * Value List Type: List\n * * Possible Values \n * * Cursor\n * * None\n * * Offset\n * * PageNumber\n * * Description: Pagination strategy: PageNumber (page index), Offset (record offset), Cursor (opaque token), or None"),SupportsIncrementalSync:z.boolean().describe("\n * * Field Name: SupportsIncrementalSync\n * * Display Name: Supports Incremental Sync\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this object supports watermark-based incremental sync"),SupportsWrite:z.boolean().describe("\n * * Field Name: SupportsWrite\n * * Display Name: Supports Write\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether data can be pushed back to this object via the API"),DefaultQueryParams:z.string().nullable().describe("\n * * Field Name: DefaultQueryParams\n * * Display Name: Default Query Parameters\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON object of default query parameters to include with every API request for this object"),Configuration:z.string().nullable().describe("\n * * Field Name: Configuration\n * * Display Name: Configuration\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Freeform JSON for connector-specific configuration not covered by standard columns"),Sequence:z.number().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Processing and display order. Lower numbers are processed first."),Status:z.union([z.literal('Active'),z.literal('Deprecated'),z.literal('Disabled')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(25)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Deprecated\n * * Disabled\n * * Description: Active, Deprecated, or Disabled. Mirrors EntityField status values."),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),WriteAPIPath:z.string().nullable().describe("\n * * Field Name: WriteAPIPath\n * * Display Name: Write API Path\n * * SQL Data Type: nvarchar(500)\n * * Description: API path for create/update operations when different from the read APIPath. If NULL, the read APIPath is used for writes as well."),WriteMethod:z.string().nullable().describe("\n * * Field Name: WriteMethod\n * * Display Name: Write Method\n * * SQL Data Type: nvarchar(10)\n * * Default Value: POST\n * * Description: HTTP method for create operations. Defaults to POST."),DeleteMethod:z.string().nullable().describe("\n * * Field Name: DeleteMethod\n * * Display Name: Delete Method\n * * SQL Data Type: nvarchar(10)\n * * Default Value: DELETE\n * * Description: HTTP method for delete operations. Defaults to DELETE."),Integration:z.string().describe("\n * * Field Name: Integration\n * * Display Name: Integration Name\n * * SQL Data Type: nvarchar(100)")});/**
|
|
54988
|
+
*/var MJIntegrationObjectSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()\n * * Description: Primary key"),IntegrationID:z.string().describe("\n * * Field Name: IntegrationID\n * * Display Name: Integration\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Integrations (vwIntegrations.ID)\n * * Description: Foreign key to the Integration that owns this object"),Name:z.string().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Internal/programmatic name of the external object (e.g., Members, Events)"),DisplayName:z.string().nullable().describe("\n * * Field Name: DisplayName\n * * Display Name: Display Name\n * * SQL Data Type: nvarchar(255)\n * * Description: Human-friendly display label"),Description:z.string().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Description of what this external object represents"),Category:z.string().nullable().describe("\n * * Field Name: Category\n * * Display Name: Category\n * * SQL Data Type: nvarchar(100)\n * * Description: UI grouping category (e.g., Membership, Events, Finance)"),APIPath:z.string().describe("\n * * Field Name: APIPath\n * * Display Name: API Path\n * * SQL Data Type: nvarchar(500)\n * * Description: API endpoint path, may include template variables like {ProfileID} that are resolved at runtime from parent object records"),ResponseDataKey:z.string().nullable().describe("\n * * Field Name: ResponseDataKey\n * * Display Name: Response Data Key\n * * SQL Data Type: nvarchar(255)\n * * Description: JSON key used to extract the data array from the API response envelope. NULL means the response is a root-level array."),DefaultPageSize:z.number().describe("\n * * Field Name: DefaultPageSize\n * * Display Name: Default Page Size\n * * SQL Data Type: int\n * * Default Value: 100\n * * Description: Number of records to request per page from the API"),SupportsPagination:z.boolean().describe("\n * * Field Name: SupportsPagination\n * * Display Name: Supports Pagination\n * * SQL Data Type: bit\n * * Default Value: 1\n * * Description: Whether this endpoint supports paginated fetching"),PaginationType:z.union([z.literal('Cursor'),z.literal('None'),z.literal('Offset'),z.literal('PageNumber')]).describe("\n * * Field Name: PaginationType\n * * Display Name: Pagination Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: PageNumber\n * * Value List Type: List\n * * Possible Values \n * * Cursor\n * * None\n * * Offset\n * * PageNumber\n * * Description: Pagination strategy: PageNumber (page index), Offset (record offset), Cursor (opaque token), or None"),SupportsIncrementalSync:z.boolean().describe("\n * * Field Name: SupportsIncrementalSync\n * * Display Name: Supports Incremental Sync\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether this object supports watermark-based incremental sync"),SupportsWrite:z.boolean().describe("\n * * Field Name: SupportsWrite\n * * Display Name: Supports Write\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: Whether data can be pushed back to this object via the API"),DefaultQueryParams:z.string().nullable().describe("\n * * Field Name: DefaultQueryParams\n * * Display Name: Default Query Parameters\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON object of default query parameters to include with every API request for this object"),Configuration:z.string().nullable().describe("\n * * Field Name: Configuration\n * * Display Name: Configuration\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Freeform JSON for connector-specific configuration not covered by standard columns"),Sequence:z.number().describe("\n * * Field Name: Sequence\n * * Display Name: Sequence\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Processing and display order. Lower numbers are processed first."),Status:z.union([z.literal('Active'),z.literal('Deprecated'),z.literal('Disabled')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(25)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Deprecated\n * * Disabled\n * * Description: Active, Deprecated, or Disabled. Mirrors EntityField status values."),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),WriteAPIPath:z.string().nullable().describe("\n * * Field Name: WriteAPIPath\n * * Display Name: Write API Path\n * * SQL Data Type: nvarchar(500)\n * * Description: API path for create/update operations when different from the read APIPath. If NULL, the read APIPath is used for writes as well."),WriteMethod:z.string().nullable().describe("\n * * Field Name: WriteMethod\n * * Display Name: Write Method\n * * SQL Data Type: nvarchar(10)\n * * Default Value: POST\n * * Description: HTTP method for create operations. Defaults to POST."),DeleteMethod:z.string().nullable().describe("\n * * Field Name: DeleteMethod\n * * Display Name: Delete Method\n * * SQL Data Type: nvarchar(10)\n * * Default Value: DELETE\n * * Description: HTTP method for delete operations. Defaults to DELETE."),IsCustom:z.boolean().describe("\n * * Field Name: IsCustom\n * * Display Name: Is Custom\n * * SQL Data Type: bit\n * * Default Value: 0\n * * Description: When true, this object was dynamically discovered by IntrospectSchema and is not defined in static connector metadata."),Integration:z.string().describe("\n * * Field Name: Integration\n * * Display Name: Integration Name\n * * SQL Data Type: nvarchar(100)")});/**
|
|
54580
54989
|
* zod schema definition for the entity MJ: Integration Source Types
|
|
54581
54990
|
*/var MJIntegrationSourceTypeSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),Name:z.string().describe("\n * * Field Name: Name\n * * Display Name: Name\n * * SQL Data Type: nvarchar(200)\n * * Description: Display name for this source type (e.g. SaaS API, Relational Database, File Feed)."),Description:z.string().nullable().describe("\n * * Field Name: Description\n * * Display Name: Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Optional longer description of this source type."),DriverClass:z.string().describe("\n * * Field Name: DriverClass\n * * Display Name: Driver Class\n * * SQL Data Type: nvarchar(500)\n * * Description: Fully-qualified class name registered via @RegisterClass that implements BaseIntegrationConnector for this source type."),IconClass:z.string().nullable().describe("\n * * Field Name: IconClass\n * * Display Name: Icon Class\n * * SQL Data Type: nvarchar(200)\n * * Description: Font Awesome icon class for UI display."),Status:z.union([z.literal('Active'),z.literal('Inactive')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(50)\n * * Default Value: Active\n * * Value List Type: List\n * * Possible Values \n * * Active\n * * Inactive\n * * Description: Whether this source type is available for use. Active or Inactive."),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()")});/**
|
|
54582
54991
|
* zod schema definition for the entity MJ: Integration URL Formats
|
|
@@ -54668,7 +55077,7 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
|
|
|
54668
55077
|
* zod schema definition for the entity MJ: Record Change Replay Runs
|
|
54669
55078
|
*/var MJRecordChangeReplayRunSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),StartedAt:z.date().describe("\n * * Field Name: StartedAt\n * * Display Name: Started At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp when the replay run started"),EndedAt:z.date().nullable().describe("\n * * Field Name: EndedAt\n * * Display Name: Ended At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp when the replay run ended"),Status:z.union([z.literal('Complete'),z.literal('Error'),z.literal('In Progress'),z.literal('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(50)\n * * Value List Type: List\n * * Possible Values \n * * Complete\n * * Error\n * * In Progress\n * * Pending\n * * Description: Status of the replay run (Pending, In Progress, Complete, Error)"),UserID:z.string().describe("\n * * Field Name: UserID\n * * Display Name: User\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),User:z.string().describe("\n * * Field Name: User\n * * Display Name: User\n * * SQL Data Type: nvarchar(100)")});/**
|
|
54670
55079
|
* zod schema definition for the entity MJ: Record Changes
|
|
54671
|
-
*/var MJRecordChangeSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityID:z.string().describe("\n * * Field Name: EntityID\n * * Display Name: Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),RecordID:z.string().describe("\n * * Field Name: RecordID\n * * Display Name: Record ID\n * * SQL Data Type: nvarchar(750)\n * * Description: Field RecordID for entity Record Changes."),UserID:z.string().describe("\n * * Field Name: UserID\n * * Display Name: User ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),Type:z.union([z.literal('Create'),z.literal('Delete'),z.literal('Snapshot'),z.literal('Update')]).describe("\n * * Field Name: Type\n * * Display Name: Change Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Create\n * * Value List Type: List\n * * Possible Values \n * * Create\n * * Delete\n * * Snapshot\n * * Update\n * * Description: Create, Update, or Delete"),Source:z.union([z.literal('External'),z.literal('Internal')]).describe("\n * * Field Name: Source\n * * Display Name: Source\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Internal\n * * Value List Type: List\n * * Possible Values \n * * External\n * * Internal\n * * Description: Internal or External"),ChangedAt:z.date().describe("\n * * Field Name: ChangedAt\n * * Display Name: Changed At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()\n * * Description: The date/time that the change occured."),ChangesJSON:z.string().describe("\n * * Field Name: ChangesJSON\n * * Display Name: Changes JSON\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON structure that describes what was changed in a structured format."),ChangesDescription:z.string().describe("\n * * Field Name: ChangesDescription\n * * Display Name: Changes Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: A generated, human-readable description of what was changed."),FullRecordJSON:z.string().describe("\n * * Field Name: FullRecordJSON\n * * Display Name: Full Record
|
|
55080
|
+
*/var MJRecordChangeSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityID:z.string().describe("\n * * Field Name: EntityID\n * * Display Name: Entity ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)"),RecordID:z.string().describe("\n * * Field Name: RecordID\n * * Display Name: Record ID\n * * SQL Data Type: nvarchar(750)\n * * Description: Field RecordID for entity Record Changes."),UserID:z.string().describe("\n * * Field Name: UserID\n * * Display Name: User ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)"),Type:z.union([z.literal('Create'),z.literal('Delete'),z.literal('Snapshot'),z.literal('Update')]).describe("\n * * Field Name: Type\n * * Display Name: Change Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Create\n * * Value List Type: List\n * * Possible Values \n * * Create\n * * Delete\n * * Snapshot\n * * Update\n * * Description: Create, Update, or Delete"),Source:z.union([z.literal('External'),z.literal('Internal'),z.literal('Restore')]).describe("\n * * Field Name: Source\n * * Display Name: Source\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Internal\n * * Value List Type: List\n * * Possible Values \n * * External\n * * Internal\n * * Restore\n * * Description: Internal or External"),ChangedAt:z.date().describe("\n * * Field Name: ChangedAt\n * * Display Name: Changed At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()\n * * Description: The date/time that the change occured."),ChangesJSON:z.string().describe("\n * * Field Name: ChangesJSON\n * * Display Name: Changes JSON\n * * SQL Data Type: nvarchar(MAX)\n * * Description: JSON structure that describes what was changed in a structured format."),ChangesDescription:z.string().describe("\n * * Field Name: ChangesDescription\n * * Display Name: Changes Description\n * * SQL Data Type: nvarchar(MAX)\n * * Description: A generated, human-readable description of what was changed."),FullRecordJSON:z.string().describe("\n * * Field Name: FullRecordJSON\n * * Display Name: Full Record JSON\n * * SQL Data Type: nvarchar(MAX)\n * * Description: A complete snapshot of the record AFTER the change was applied in a JSON format that can be parsed."),Status:z.union([z.literal('Complete'),z.literal('Error'),z.literal('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(50)\n * * Default Value: Complete\n * * Value List Type: List\n * * Possible Values \n * * Complete\n * * Error\n * * Pending\n * * Description: For internal record changes generated within MJ, the status is immediately Complete. For external changes that are detected, the workflow starts off as Pending, then In Progress and finally either Complete or Error"),ErrorLog:z.string().nullable().describe("\n * * Field Name: ErrorLog\n * * Display Name: Error Log\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Field ErrorLog for entity Record Changes."),ReplayRunID:z.string().nullable().describe("\n * * Field Name: ReplayRunID\n * * Display Name: Replay Run ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Record Change Replay Runs (vwRecordChangeReplayRuns.ID)"),IntegrationID:z.string().nullable().describe("\n * * Field Name: IntegrationID\n * * Display Name: Integration ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Integrations (vwIntegrations.ID)"),Comments:z.string().nullable().describe("\n * * Field Name: Comments\n * * Display Name: Comments\n * * SQL Data Type: nvarchar(MAX)"),CreatedAt:z.date().describe("\n * * Field Name: CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()\n * * Description: Field CreatedAt for entity Record Changes."),UpdatedAt:z.date().describe("\n * * Field Name: UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()\n * * Description: Field UpdatedAt for entity Record Changes."),RestoredFromID:z.string().nullable().describe("\n * * Field Name: RestoredFromID\n * * Display Name: Restored From ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Record Changes (vwRecordChanges.ID)\n * * Description: When this RecordChange was produced by a restore operation, points at the historical RecordChange whose state was restored. NULL for ordinary changes. Together with Source='Restore' this builds the version-chain lineage for auditing and timeline navigation."),RestoreReason:z.string().nullable().describe("\n * * Field Name: RestoreReason\n * * Display Name: Restore Reason\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Optional user-entered explanation captured at restore time. Persisted for audit purposes (regulated industries often require a reason for every reversal). NULL when the user did not enter one or when the change was not a restore."),Entity:z.string().describe("\n * * Field Name: Entity\n * * Display Name: Entity Name\n * * SQL Data Type: nvarchar(255)"),User:z.string().describe("\n * * Field Name: User\n * * Display Name: User\n * * SQL Data Type: nvarchar(100)"),ReplayRun:z.string().nullable().describe("\n * * Field Name: ReplayRun\n * * Display Name: Replay Run\n * * SQL Data Type: nvarchar(100)"),Integration:z.string().nullable().describe("\n * * Field Name: Integration\n * * Display Name: Integration\n * * SQL Data Type: nvarchar(100)"),RestoredFrom:z.string().nullable().describe("\n * * Field Name: RestoredFrom\n * * Display Name: Restored From\n * * SQL Data Type: nvarchar(750)"),RootRestoredFromID:z.string().nullable().describe("\n * * Field Name: RootRestoredFromID\n * * Display Name: Root Restored From ID\n * * SQL Data Type: uniqueidentifier")});/**
|
|
54672
55081
|
* zod schema definition for the entity MJ: Record Geo Codes
|
|
54673
55082
|
*/var MJRecordGeoCodeSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),EntityID:z.string().describe("\n * * Field Name: EntityID\n * * Display Name: Entity\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)\n * * Description: Foreign key to Entity. Identifies which entity this geocode belongs to."),RecordID:z.string().describe("\n * * Field Name: RecordID\n * * Display Name: Record\n * * SQL Data Type: nvarchar(450)\n * * Description: MJ composite primary key format string identifying the source record (e.g., \"ID|<uuid>\"). Max 450 chars for SQL Server index support."),LocationType:z.string().describe("\n * * Field Name: LocationType\n * * Display Name: Location Type\n * * SQL Data Type: nvarchar(50)\n * * Default Value: Primary\n * * Description: Discriminator for multi-location entities. Default \"Primary\" for single-address entities. Multi-address examples: \"Home\", \"Business\", \"Mailing\", \"PO Box\"."),Latitude:z.number().nullable().describe("\n * * Field Name: Latitude\n * * Display Name: Latitude\n * * SQL Data Type: decimal(10, 6)\n * * Description: Geocoded latitude coordinate. NULL when Status is \"pending\" or \"failed\"."),Longitude:z.number().nullable().describe("\n * * Field Name: Longitude\n * * Display Name: Longitude\n * * SQL Data Type: decimal(10, 6)\n * * Description: Geocoded longitude coordinate. NULL when Status is \"pending\" or \"failed\"."),Precision:z.union([z.literal('city'),z.literal('country'),z.literal('county'),z.literal('exact'),z.literal('postal_code'),z.literal('state_province')]).nullable().describe("\n * * Field Name: Precision\n * * Display Name: Precision\n * * SQL Data Type: nvarchar(20)\n * * Value List Type: List\n * * Possible Values \n * * city\n * * country\n * * county\n * * exact\n * * postal_code\n * * state_province\n * * Description: Precision level of the geocoded result: exact (street address), postal_code, city, county, state_province, or country."),CountryID:z.string().nullable().describe("\n * * Field Name: CountryID\n * * Display Name: Country\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Countries (vwCountries.ID)\n * * Description: Optional FK to Country reference table. Populated alongside lat/lng to enable choropleth grouping without reverse-geocoding at render time."),StateProvinceID:z.string().nullable().describe("\n * * Field Name: StateProvinceID\n * * Display Name: State Province\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: State Provinces (vwStateProvinces.ID)\n * * Description: Optional FK to StateProvince reference table. Populated alongside lat/lng to enable state-level choropleth grouping."),Status:z.union([z.literal('failed'),z.literal('pending'),z.literal('success')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: pending\n * * Value List Type: List\n * * Possible Values \n * * failed\n * * pending\n * * success\n * * Description: Current geocoding status: \"pending\" (awaiting geocode), \"success\" (geocoded), or \"failed\" (geocoding error). Used by scheduled job for retry logic."),ErrorMessage:z.string().nullable().describe("\n * * Field Name: ErrorMessage\n * * Display Name: Error Message\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Error details when Status is \"failed\". Captures API error messages, rate limit info, etc. for debugging."),RetryCount:z.number().describe("\n * * Field Name: RetryCount\n * * Display Name: Retry Count\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Number of geocoding attempts. Used for exponential backoff in the scheduled retry job. Stops retrying at configurable maxRetries (default 3)."),SourceFieldHash:z.string().nullable().describe("\n * * Field Name: SourceFieldHash\n * * Display Name: Source Field Hash\n * * SQL Data Type: nvarchar(64)\n * * Description: SHA-256 hash of the source field values that produced this geocode. When source fields change on save, the hash won't match and re-geocoding is triggered. Format: SHA-256(concat(field1, \"|\", field2, ...))."),GeocodedAt:z.date().nullable().describe("\n * * Field Name: GeocodedAt\n * * Display Name: Geocoded At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp of when geocoding was last attempted (success or failure)."),GeocodingSource:z.union([z.literal('google'),z.literal('ip_geolocation'),z.literal('manual'),z.literal('native'),z.literal('reference_data'),z.literal('reverse')]).nullable().describe("\n * * Field Name: GeocodingSource\n * * Display Name: Geocoding Source\n * * SQL Data Type: nvarchar(30)\n * * Value List Type: List\n * * Possible Values \n * * google\n * * ip_geolocation\n * * manual\n * * native\n * * reference_data\n * * reverse\n * * Description: How this geocode was produced: google (Google Geocoding API), reference_data (resolved via Country/StateProvince tables), manual (user-entered), ip_geolocation (IP lookup), native (copied from entity lat/lng fields), reverse (reverse geocode from coordinates)."),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),Entity:z.string().describe("\n * * Field Name: Entity\n * * Display Name: Entity Name\n * * SQL Data Type: nvarchar(255)"),Country:z.string().nullable().describe("\n * * Field Name: Country\n * * Display Name: Country Name\n * * SQL Data Type: nvarchar(200)"),StateProvince:z.string().nullable().describe("\n * * Field Name: StateProvince\n * * Display Name: State Province Name\n * * SQL Data Type: nvarchar(200)")});/**
|
|
54674
55083
|
* zod schema definition for the entity MJ: Record Links
|
|
@@ -54796,7 +55205,7 @@ function _regenerator(){/*! regenerator-runtime -- Copyright (c) 2014-present, F
|
|
|
54796
55205
|
* zod schema definition for the entity MJ: Version Installations
|
|
54797
55206
|
*/var MJVersionInstallationSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),MajorVersion:z.number().describe("\n * * Field Name: MajorVersion\n * * Display Name: Major Version\n * * SQL Data Type: int\n * * Description: Major version number installed."),MinorVersion:z.number().describe("\n * * Field Name: MinorVersion\n * * Display Name: Minor Version\n * * SQL Data Type: int\n * * Description: Minor version number installed."),PatchVersion:z.number().describe("\n * * Field Name: PatchVersion\n * * Display Name: Patch Version\n * * SQL Data Type: int\n * * Description: Patch version number installed."),Type:z.union([z.literal('New'),z.literal('Upgrade')]).nullable().describe("\n * * Field Name: Type\n * * Display Name: Installation Type\n * * SQL Data Type: nvarchar(20)\n * * Default Value: System\n * * Value List Type: List\n * * Possible Values \n * * New\n * * Upgrade\n * * Description: What type of installation was applied"),InstalledAt:z.date().describe("\n * * Field Name: InstalledAt\n * * Display Name: Installed At\n * * SQL Data Type: datetimeoffset\n * * Description: Timestamp when this version was installed."),Status:z.union([z.literal('Complete'),z.literal('Failed'),z.literal('In Progress'),z.literal('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(20)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Complete\n * * Failed\n * * In Progress\n * * Pending\n * * Description: Pending, Complete, Failed"),InstallLog:z.string().nullable().describe("\n * * Field Name: InstallLog\n * * Display Name: Install Log\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Any logging that was saved from the installation process"),Comments:z.string().nullable().describe("\n * * Field Name: Comments\n * * Display Name: Comments\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Optional, comments the administrator wants to save for each installed version"),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),CompleteVersion:z.string().nullable().describe("\n * * Field Name: CompleteVersion\n * * Display Name: Complete Version\n * * SQL Data Type: nvarchar(302)")});/**
|
|
54798
55207
|
* zod schema definition for the entity MJ: Version Label Items
|
|
54799
|
-
*/var MJVersionLabelItemSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),VersionLabelID:z.string().describe("\n * * Field Name: VersionLabelID\n * * Display Name: Version Label\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Version Labels (vwVersionLabels.ID)\n * * Description: The version label this item belongs to"),RecordChangeID:z.string().describe("\n * * Field Name: RecordChangeID\n * * Display Name: Record Change\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Record Changes (vwRecordChanges.ID)\n * * Description: The specific RecordChange entry representing the record state at label creation time"),EntityID:z.string().describe("\n * * Field Name: EntityID\n * * Display Name: Entity\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)\n * * Description: Denormalized entity reference for query performance"),RecordID:z.string().describe("\n * * Field Name: RecordID\n * * Display Name: Record ID\n * * SQL Data Type: nvarchar(750)\n * * Description: Denormalized record primary key for query performance"),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),VersionLabel:z.string().describe("\n * * Field Name: VersionLabel\n * * Display Name: Version Label\n * * SQL Data Type: nvarchar(200)"),RecordChange:z.string().describe("\n * * Field Name: RecordChange\n * * Display Name: Record Change\n * * SQL Data Type: nvarchar(
|
|
55208
|
+
*/var MJVersionLabelItemSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),VersionLabelID:z.string().describe("\n * * Field Name: VersionLabelID\n * * Display Name: Version Label\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Version Labels (vwVersionLabels.ID)\n * * Description: The version label this item belongs to"),RecordChangeID:z.string().describe("\n * * Field Name: RecordChangeID\n * * Display Name: Record Change\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Record Changes (vwRecordChanges.ID)\n * * Description: The specific RecordChange entry representing the record state at label creation time"),EntityID:z.string().describe("\n * * Field Name: EntityID\n * * Display Name: Entity\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Entities (vwEntities.ID)\n * * Description: Denormalized entity reference for query performance"),RecordID:z.string().describe("\n * * Field Name: RecordID\n * * Display Name: Record ID\n * * SQL Data Type: nvarchar(750)\n * * Description: Denormalized record primary key for query performance"),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),VersionLabel:z.string().describe("\n * * Field Name: VersionLabel\n * * Display Name: Version Label\n * * SQL Data Type: nvarchar(200)"),RecordChange:z.string().describe("\n * * Field Name: RecordChange\n * * Display Name: Record Change\n * * SQL Data Type: nvarchar(750)"),Entity:z.string().describe("\n * * Field Name: Entity\n * * Display Name: Entity\n * * SQL Data Type: nvarchar(255)")});/**
|
|
54800
55209
|
* zod schema definition for the entity MJ: Version Label Restores
|
|
54801
55210
|
*/var MJVersionLabelRestoreSchema=z.object({ID:z.string().describe("\n * * Field Name: ID\n * * Display Name: ID\n * * SQL Data Type: uniqueidentifier\n * * Default Value: newsequentialid()"),VersionLabelID:z.string().describe("\n * * Field Name: VersionLabelID\n * * Display Name: Version Label ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Version Labels (vwVersionLabels.ID)\n * * Description: The version label being restored to"),Status:z.union([z.literal('Complete'),z.literal('Error'),z.literal('In Progress'),z.literal('Partial'),z.literal('Pending')]).describe("\n * * Field Name: Status\n * * Display Name: Status\n * * SQL Data Type: nvarchar(50)\n * * Default Value: Pending\n * * Value List Type: List\n * * Possible Values \n * * Complete\n * * Error\n * * In Progress\n * * Partial\n * * Pending\n * * Description: Current status of the restore operation"),StartedAt:z.date().describe("\n * * Field Name: StartedAt\n * * Display Name: Started At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()\n * * Description: When the restore operation began"),EndedAt:z.date().nullable().describe("\n * * Field Name: EndedAt\n * * Display Name: Ended At\n * * SQL Data Type: datetimeoffset\n * * Description: When the restore operation completed or failed"),UserID:z.string().describe("\n * * Field Name: UserID\n * * Display Name: User ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Users (vwUsers.ID)\n * * Description: The user who initiated the restore"),TotalItems:z.number().describe("\n * * Field Name: TotalItems\n * * Display Name: Total Items\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Total number of records to restore"),CompletedItems:z.number().describe("\n * * Field Name: CompletedItems\n * * Display Name: Completed Items\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Number of records successfully restored so far"),FailedItems:z.number().describe("\n * * Field Name: FailedItems\n * * Display Name: Failed Items\n * * SQL Data Type: int\n * * Default Value: 0\n * * Description: Number of records that failed to restore"),ErrorLog:z.string().nullable().describe("\n * * Field Name: ErrorLog\n * * Display Name: Error Log\n * * SQL Data Type: nvarchar(MAX)\n * * Description: Detailed error information for failed restore items"),PreRestoreLabelID:z.string().nullable().describe("\n * * Field Name: PreRestoreLabelID\n * * Display Name: Pre-Restore Label ID\n * * SQL Data Type: uniqueidentifier\n * * Related Entity/Foreign Key: MJ: Version Labels (vwVersionLabels.ID)\n * * Description: Reference to the automatically created safety-net label that captured state before the restore began"),__mj_CreatedAt:z.date().describe("\n * * Field Name: __mj_CreatedAt\n * * Display Name: Created At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),__mj_UpdatedAt:z.date().describe("\n * * Field Name: __mj_UpdatedAt\n * * Display Name: Updated At\n * * SQL Data Type: datetimeoffset\n * * Default Value: getutcdate()"),VersionLabel:z.string().describe("\n * * Field Name: VersionLabel\n * * Display Name: Version Label\n * * SQL Data Type: nvarchar(200)"),User:z.string().describe("\n * * Field Name: User\n * * Display Name: User\n * * SQL Data Type: nvarchar(100)"),PreRestoreLabel:z.string().nullable().describe("\n * * Field Name: PreRestoreLabel\n * * Display Name: Pre-Restore Label\n * * SQL Data Type: nvarchar(200)")});/**
|
|
54802
55211
|
* zod schema definition for the entity MJ: Version Labels
|
|
@@ -74072,7 +74481,7 @@ var isUserValid=this.Type==="User"&&this.UserID!=null&&this.RoleID==null;var isR
|
|
|
74072
74481
|
* * Description: UI grouping category within the object
|
|
74073
74482
|
*/},{key:"Category",get:function get(){return this.Get('Category');},set:function set(value){this.Set('Category',value);}/**
|
|
74074
74483
|
* * Field Name: Type
|
|
74075
|
-
* * Display Name: Type
|
|
74484
|
+
* * Display Name: Data Type
|
|
74076
74485
|
* * SQL Data Type: nvarchar(100)
|
|
74077
74486
|
* * Description: Data type of the field (e.g., nvarchar, int, datetime, decimal, bit). Uses same type vocabulary as EntityField.
|
|
74078
74487
|
*/},{key:"Type",get:function get(){return this.Get('Type');},set:function set(value){this.Set('Type',value);}/**
|
|
@@ -74103,31 +74512,31 @@ var isUserValid=this.Type==="User"&&this.UserID!=null&&this.RoleID==null;var isR
|
|
|
74103
74512
|
* * Description: Default value from the source system
|
|
74104
74513
|
*/},{key:"DefaultValue",get:function get(){return this.Get('DefaultValue');},set:function set(value){this.Set('DefaultValue',value);}/**
|
|
74105
74514
|
* * Field Name: IsPrimaryKey
|
|
74106
|
-
* * Display Name: Primary Key
|
|
74515
|
+
* * Display Name: Is Primary Key
|
|
74107
74516
|
* * SQL Data Type: bit
|
|
74108
74517
|
* * Default Value: 0
|
|
74109
74518
|
* * Description: Whether this field is part of the object primary key
|
|
74110
74519
|
*/},{key:"IsPrimaryKey",get:function get(){return this.Get('IsPrimaryKey');},set:function set(value){this.Set('IsPrimaryKey',value);}/**
|
|
74111
74520
|
* * Field Name: IsUniqueKey
|
|
74112
|
-
* * Display Name: Unique Key
|
|
74521
|
+
* * Display Name: Is Unique Key
|
|
74113
74522
|
* * SQL Data Type: bit
|
|
74114
74523
|
* * Default Value: 0
|
|
74115
74524
|
* * Description: Whether values must be unique across all records
|
|
74116
74525
|
*/},{key:"IsUniqueKey",get:function get(){return this.Get('IsUniqueKey');},set:function set(value){this.Set('IsUniqueKey',value);}/**
|
|
74117
74526
|
* * Field Name: IsReadOnly
|
|
74118
|
-
* * Display Name: Read Only
|
|
74527
|
+
* * Display Name: Is Read Only
|
|
74119
74528
|
* * SQL Data Type: bit
|
|
74120
74529
|
* * Default Value: 0
|
|
74121
74530
|
* * Description: Whether this field cannot be written back to the source system
|
|
74122
74531
|
*/},{key:"IsReadOnly",get:function get(){return this.Get('IsReadOnly');},set:function set(value){this.Set('IsReadOnly',value);}/**
|
|
74123
74532
|
* * Field Name: IsRequired
|
|
74124
|
-
* * Display Name: Required
|
|
74533
|
+
* * Display Name: Is Required
|
|
74125
74534
|
* * SQL Data Type: bit
|
|
74126
74535
|
* * Default Value: 0
|
|
74127
74536
|
* * Description: Whether this field is required for create/update operations
|
|
74128
74537
|
*/},{key:"IsRequired",get:function get(){return this.Get('IsRequired');},set:function set(value){this.Set('IsRequired',value);}/**
|
|
74129
74538
|
* * Field Name: RelatedIntegrationObjectID
|
|
74130
|
-
* * Display Name: Related Integration Object
|
|
74539
|
+
* * Display Name: Related Integration Object ID
|
|
74131
74540
|
* * SQL Data Type: uniqueidentifier
|
|
74132
74541
|
* * Related Entity/Foreign Key: MJ: Integration Objects (vwIntegrationObjects.ID)
|
|
74133
74542
|
* * Description: Foreign key to another IntegrationObject, establishing a relationship. Used for DAG-based dependency ordering and template variable resolution in parent APIPath patterns.
|
|
@@ -74169,6 +74578,12 @@ var isUserValid=this.Type==="User"&&this.UserID!=null&&this.RoleID==null;var isR
|
|
|
74169
74578
|
* * SQL Data Type: datetimeoffset
|
|
74170
74579
|
* * Default Value: getutcdate()
|
|
74171
74580
|
*/},{key:"__mj_UpdatedAt",get:function get(){return this.Get('__mj_UpdatedAt');}/**
|
|
74581
|
+
* * Field Name: IsCustom
|
|
74582
|
+
* * Display Name: Is Custom
|
|
74583
|
+
* * SQL Data Type: bit
|
|
74584
|
+
* * Default Value: 0
|
|
74585
|
+
* * Description: When true, this field was dynamically discovered by IntrospectSchema and is not defined in static connector metadata.
|
|
74586
|
+
*/},{key:"IsCustom",get:function get(){return this.Get('IsCustom');},set:function set(value){this.Set('IsCustom',value);}/**
|
|
74172
74587
|
* * Field Name: IntegrationObject
|
|
74173
74588
|
* * Display Name: Integration Object Name
|
|
74174
74589
|
* * SQL Data Type: nvarchar(255)
|
|
@@ -74329,6 +74744,12 @@ var isUserValid=this.Type==="User"&&this.UserID!=null&&this.RoleID==null;var isR
|
|
|
74329
74744
|
* * Default Value: DELETE
|
|
74330
74745
|
* * Description: HTTP method for delete operations. Defaults to DELETE.
|
|
74331
74746
|
*/},{key:"DeleteMethod",get:function get(){return this.Get('DeleteMethod');},set:function set(value){this.Set('DeleteMethod',value);}/**
|
|
74747
|
+
* * Field Name: IsCustom
|
|
74748
|
+
* * Display Name: Is Custom
|
|
74749
|
+
* * SQL Data Type: bit
|
|
74750
|
+
* * Default Value: 0
|
|
74751
|
+
* * Description: When true, this object was dynamically discovered by IntrospectSchema and is not defined in static connector metadata.
|
|
74752
|
+
*/},{key:"IsCustom",get:function get(){return this.Get('IsCustom');},set:function set(value){this.Set('IsCustom',value);}/**
|
|
74332
74753
|
* * Field Name: Integration
|
|
74333
74754
|
* * Display Name: Integration Name
|
|
74334
74755
|
* * SQL Data Type: nvarchar(100)
|
|
@@ -78240,6 +78661,7 @@ provider=dist/* Metadata */.OS.Provider;_context229.p=1;_context229.n=2;return p
|
|
|
78240
78661
|
* * Possible Values
|
|
78241
78662
|
* * External
|
|
78242
78663
|
* * Internal
|
|
78664
|
+
* * Restore
|
|
78243
78665
|
* * Description: Internal or External
|
|
78244
78666
|
*/},{key:"Source",get:function get(){return this.Get('Source');},set:function set(value){this.Set('Source',value);}/**
|
|
78245
78667
|
* * Field Name: ChangedAt
|
|
@@ -78259,7 +78681,7 @@ provider=dist/* Metadata */.OS.Provider;_context229.p=1;_context229.n=2;return p
|
|
|
78259
78681
|
* * Description: A generated, human-readable description of what was changed.
|
|
78260
78682
|
*/},{key:"ChangesDescription",get:function get(){return this.Get('ChangesDescription');},set:function set(value){this.Set('ChangesDescription',value);}/**
|
|
78261
78683
|
* * Field Name: FullRecordJSON
|
|
78262
|
-
* * Display Name: Full Record
|
|
78684
|
+
* * Display Name: Full Record JSON
|
|
78263
78685
|
* * SQL Data Type: nvarchar(MAX)
|
|
78264
78686
|
* * Description: A complete snapshot of the record AFTER the change was applied in a JSON format that can be parsed.
|
|
78265
78687
|
*/},{key:"FullRecordJSON",get:function get(){return this.Get('FullRecordJSON');},set:function set(value){this.Set('FullRecordJSON',value);}/**
|
|
@@ -78305,8 +78727,19 @@ provider=dist/* Metadata */.OS.Provider;_context229.p=1;_context229.n=2;return p
|
|
|
78305
78727
|
* * Default Value: getutcdate()
|
|
78306
78728
|
* * Description: Field UpdatedAt for entity Record Changes.
|
|
78307
78729
|
*/},{key:"UpdatedAt",get:function get(){return this.Get('UpdatedAt');}/**
|
|
78730
|
+
* * Field Name: RestoredFromID
|
|
78731
|
+
* * Display Name: Restored From ID
|
|
78732
|
+
* * SQL Data Type: uniqueidentifier
|
|
78733
|
+
* * Related Entity/Foreign Key: MJ: Record Changes (vwRecordChanges.ID)
|
|
78734
|
+
* * Description: When this RecordChange was produced by a restore operation, points at the historical RecordChange whose state was restored. NULL for ordinary changes. Together with Source='Restore' this builds the version-chain lineage for auditing and timeline navigation.
|
|
78735
|
+
*/},{key:"RestoredFromID",get:function get(){return this.Get('RestoredFromID');},set:function set(value){this.Set('RestoredFromID',value);}/**
|
|
78736
|
+
* * Field Name: RestoreReason
|
|
78737
|
+
* * Display Name: Restore Reason
|
|
78738
|
+
* * SQL Data Type: nvarchar(MAX)
|
|
78739
|
+
* * Description: Optional user-entered explanation captured at restore time. Persisted for audit purposes (regulated industries often require a reason for every reversal). NULL when the user did not enter one or when the change was not a restore.
|
|
78740
|
+
*/},{key:"RestoreReason",get:function get(){return this.Get('RestoreReason');},set:function set(value){this.Set('RestoreReason',value);}/**
|
|
78308
78741
|
* * Field Name: Entity
|
|
78309
|
-
* * Display Name: Entity
|
|
78742
|
+
* * Display Name: Entity Name
|
|
78310
78743
|
* * SQL Data Type: nvarchar(255)
|
|
78311
78744
|
*/},{key:"Entity",get:function get(){return this.Get('Entity');}/**
|
|
78312
78745
|
* * Field Name: User
|
|
@@ -78320,7 +78753,15 @@ provider=dist/* Metadata */.OS.Provider;_context229.p=1;_context229.n=2;return p
|
|
|
78320
78753
|
* * Field Name: Integration
|
|
78321
78754
|
* * Display Name: Integration
|
|
78322
78755
|
* * SQL Data Type: nvarchar(100)
|
|
78323
|
-
*/},{key:"Integration",get:function get(){return this.Get('Integration');}
|
|
78756
|
+
*/},{key:"Integration",get:function get(){return this.Get('Integration');}/**
|
|
78757
|
+
* * Field Name: RestoredFrom
|
|
78758
|
+
* * Display Name: Restored From
|
|
78759
|
+
* * SQL Data Type: nvarchar(750)
|
|
78760
|
+
*/},{key:"RestoredFrom",get:function get(){return this.Get('RestoredFrom');}/**
|
|
78761
|
+
* * Field Name: RootRestoredFromID
|
|
78762
|
+
* * Display Name: Root Restored From ID
|
|
78763
|
+
* * SQL Data Type: uniqueidentifier
|
|
78764
|
+
*/},{key:"RootRestoredFromID",get:function get(){return this.Get('RootRestoredFromID');}}]);}(dist/* BaseEntity */.HC);MJRecordChangeEntity=__decorate([(0,MJGlobal_dist/* RegisterClass */.Y5)(dist/* BaseEntity */.HC,'MJ: Record Changes')],MJRecordChangeEntity);/**
|
|
78324
78765
|
* MJ: Record Geo Codes - strongly typed entity sub-class
|
|
78325
78766
|
* * Schema: __mj
|
|
78326
78767
|
* * Base Table: RecordGeoCode
|
|
@@ -84017,7 +84458,7 @@ if(this.RepeatCount!=null&&this.RepeatCount<=0){result.Errors.push(new dist/* Va
|
|
|
84017
84458
|
*/},{key:"VersionLabel",get:function get(){return this.Get('VersionLabel');}/**
|
|
84018
84459
|
* * Field Name: RecordChange
|
|
84019
84460
|
* * Display Name: Record Change
|
|
84020
|
-
* * SQL Data Type: nvarchar(
|
|
84461
|
+
* * SQL Data Type: nvarchar(750)
|
|
84021
84462
|
*/},{key:"RecordChange",get:function get(){return this.Get('RecordChange');}/**
|
|
84022
84463
|
* * Field Name: Entity
|
|
84023
84464
|
* * Display Name: Entity
|
|
@@ -88870,12 +89311,45 @@ var UserInfoEngine = /*#__PURE__*/function (_BaseEngine) {
|
|
|
88870
89311
|
}
|
|
88871
89312
|
return Config;
|
|
88872
89313
|
}() // ========================================================================
|
|
89314
|
+
// OBSERVABLE ACCESSORS
|
|
89315
|
+
// ========================================================================
|
|
89316
|
+
/**
|
|
89317
|
+
* Observable stream of the notifications cache array. Emits the current array on subscribe
|
|
89318
|
+
* and re-emits whenever the cache is mutated (save, delete, remote-invalidate, refresh).
|
|
89319
|
+
*
|
|
89320
|
+
* Emits the raw unfiltered cache (all users). Consumers that need per-user filtering should
|
|
89321
|
+
* `pipe(map(...))` — the public {@link UserNotifications} getter applies the current-user filter.
|
|
89322
|
+
*/
|
|
89323
|
+
)
|
|
89324
|
+
}, {
|
|
89325
|
+
key: "UserNotifications$",
|
|
89326
|
+
get: function get() {
|
|
89327
|
+
return this.ObserveProperty('_UserNotifications');
|
|
89328
|
+
}
|
|
89329
|
+
/**
|
|
89330
|
+
* Observable stream of the user favorites cache array. Emits the current array on subscribe
|
|
89331
|
+
* and re-emits whenever the cache is mutated.
|
|
89332
|
+
*/
|
|
89333
|
+
}, {
|
|
89334
|
+
key: "UserFavorites$",
|
|
89335
|
+
get: function get() {
|
|
89336
|
+
return this.ObserveProperty('_UserFavorites');
|
|
89337
|
+
}
|
|
89338
|
+
/**
|
|
89339
|
+
* Observable stream of the user applications cache array. Emits the current array on subscribe
|
|
89340
|
+
* and re-emits whenever the cache is mutated.
|
|
89341
|
+
*/
|
|
89342
|
+
}, {
|
|
89343
|
+
key: "UserApplications$",
|
|
89344
|
+
get: function get() {
|
|
89345
|
+
return this.ObserveProperty('_UserApplications');
|
|
89346
|
+
}
|
|
89347
|
+
// ========================================================================
|
|
88873
89348
|
// PUBLIC ACCESSORS
|
|
88874
89349
|
// ========================================================================
|
|
88875
89350
|
/**
|
|
88876
89351
|
* Get all notifications for the current user, ordered by creation date (newest first)
|
|
88877
89352
|
*/
|
|
88878
|
-
)
|
|
88879
89353
|
}, {
|
|
88880
89354
|
key: "UserNotifications",
|
|
88881
89355
|
get: function get() {
|