@memberjunction/core 6.2.0-edge.1 → 6.2.0-edge.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/generic/InMemoryLocalStorageProvider.d.ts +5 -0
- package/dist/generic/InMemoryLocalStorageProvider.d.ts.map +1 -1
- package/dist/generic/InMemoryLocalStorageProvider.js +5 -0
- package/dist/generic/InMemoryLocalStorageProvider.js.map +1 -1
- package/dist/generic/JSONType-interfaces/IEntityConfiguration.d.ts +192 -0
- package/dist/generic/JSONType-interfaces/IEntityConfiguration.d.ts.map +1 -1
- package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.d.ts +28 -0
- package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.d.ts.map +1 -1
- package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.d.ts +95 -0
- package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.d.ts.map +1 -1
- package/dist/generic/baseEngine.d.ts +21 -1
- package/dist/generic/baseEngine.d.ts.map +1 -1
- package/dist/generic/baseEngine.js +15 -1
- package/dist/generic/baseEngine.js.map +1 -1
- package/dist/generic/baseEntity.d.ts +292 -18
- package/dist/generic/baseEntity.d.ts.map +1 -1
- package/dist/generic/baseEntity.js +553 -105
- package/dist/generic/baseEntity.js.map +1 -1
- package/dist/generic/databaseProviderBase.d.ts +47 -7
- package/dist/generic/databaseProviderBase.d.ts.map +1 -1
- package/dist/generic/databaseProviderBase.js +106 -29
- package/dist/generic/databaseProviderBase.js.map +1 -1
- package/dist/generic/entityConfiguration.d.ts +21 -0
- package/dist/generic/entityConfiguration.d.ts.map +1 -1
- package/dist/generic/entityConfiguration.js +34 -0
- package/dist/generic/entityConfiguration.js.map +1 -1
- package/dist/generic/entityInfo.d.ts +60 -2
- package/dist/generic/entityInfo.d.ts.map +1 -1
- package/dist/generic/entityInfo.js +81 -2
- package/dist/generic/entityInfo.js.map +1 -1
- package/dist/generic/entityRecordNameCache.d.ts +48 -0
- package/dist/generic/entityRecordNameCache.d.ts.map +1 -0
- package/dist/generic/entityRecordNameCache.js +92 -0
- package/dist/generic/entityRecordNameCache.js.map +1 -0
- package/dist/generic/interfaces.d.ts +45 -9
- package/dist/generic/interfaces.d.ts.map +1 -1
- package/dist/generic/interfaces.js.map +1 -1
- package/dist/generic/jsonFieldBinding.d.ts +196 -0
- package/dist/generic/jsonFieldBinding.d.ts.map +1 -0
- package/dist/generic/jsonFieldBinding.js +508 -0
- package/dist/generic/jsonFieldBinding.js.map +1 -0
- package/dist/generic/localCacheManager.d.ts +11 -0
- package/dist/generic/localCacheManager.d.ts.map +1 -1
- package/dist/generic/localCacheManager.js +9 -0
- package/dist/generic/localCacheManager.js.map +1 -1
- package/dist/generic/providerBase.d.ts +150 -33
- package/dist/generic/providerBase.d.ts.map +1 -1
- package/dist/generic/providerBase.js +304 -139
- package/dist/generic/providerBase.js.map +1 -1
- package/dist/generic/runQuery.d.ts +18 -1
- package/dist/generic/runQuery.d.ts.map +1 -1
- package/dist/generic/runQuery.js.map +1 -1
- package/dist/generic/runQuerySQLFilterImplementations.d.ts +7 -1
- package/dist/generic/runQuerySQLFilterImplementations.d.ts.map +1 -1
- package/dist/generic/runQuerySQLFilterImplementations.js +65 -140
- package/dist/generic/runQuerySQLFilterImplementations.js.map +1 -1
- package/dist/generic/telemetryManager.d.ts +11 -0
- package/dist/generic/telemetryManager.d.ts.map +1 -1
- package/dist/generic/telemetryManager.js +40 -0
- package/dist/generic/telemetryManager.js.map +1 -1
- package/dist/generic/util.d.ts +6 -0
- package/dist/generic/util.d.ts.map +1 -1
- package/dist/generic/util.js +20 -0
- package/dist/generic/util.js.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/views/runView.d.ts +24 -0
- package/dist/views/runView.d.ts.map +1 -1
- package/dist/views/runView.js +4 -0
- package/dist/views/runView.js.map +1 -1
- package/package.json +3 -3
- package/readme.md +29 -2
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { ProviderBase } from "./providerBase.js";
|
|
2
2
|
import { UserInfo } from "./securityInfo.js";
|
|
3
3
|
import { EntityDependency, EntityFieldInfo, EntityInfo, EntityPermissionType, RecordChange, RecordDependency, RecordMergeRequest, RecordMergeResult } from "./entityInfo.js";
|
|
4
|
-
import { BaseEntity, BaseEntityResult, RecordChangePayload, RestoreContext } from "./baseEntity.js";
|
|
4
|
+
import { BaseEntity, BaseEntityResult, CloneContext, RecordChangePayload, RecordChangeSource, RestoreContext } from "./baseEntity.js";
|
|
5
5
|
import { EntitySaveOptions, EntityDeleteOptions, EntityMergeOptions, PotentialDuplicateRequest, PotentialDuplicateResponse, RemoteOpInvokeOptions, RemoteOpResult } from "./interfaces.js";
|
|
6
6
|
import { CompositeKey } from "./compositeKey.js";
|
|
7
7
|
import { EntityTransactionScope } from "./entityTransactionScope.js";
|
|
@@ -429,6 +429,8 @@ export declare abstract class DatabaseProviderBase extends ProviderBase {
|
|
|
429
429
|
* Only includes fields that have actually changed and are not read-only.
|
|
430
430
|
*/
|
|
431
431
|
DiffObjects(oldData: Record<string, unknown>, newData: Record<string, unknown>, entityInfo: EntityInfo, quoteToEscape: string): Record<string, FieldChange> | null;
|
|
432
|
+
/** The diff entry for a binary field: its size, never its base64 (null and undefined pass through). */
|
|
433
|
+
private describeBinaryForDiff;
|
|
432
434
|
/**
|
|
433
435
|
* Determines whether a specific field value has changed between old and new data.
|
|
434
436
|
*/
|
|
@@ -735,9 +737,25 @@ export declare abstract class DatabaseProviderBase extends ProviderBase {
|
|
|
735
737
|
* @returns The SQL query string, or null if the entity has no name field
|
|
736
738
|
*/
|
|
737
739
|
protected BuildEntityRecordNameSQL(entityName: string, compositeKey: CompositeKey): string | null;
|
|
740
|
+
/**
|
|
741
|
+
* The fields a record's display name is built from, in order: every `IsNameField` field by
|
|
742
|
+
* `Sequence` (so FirstName + LastName gives "Elizabeth Rodriguez"), else the entity's single
|
|
743
|
+
* `NameField`. Empty when the entity has neither.
|
|
744
|
+
*/
|
|
745
|
+
protected RecordNameFieldsOf(entity: EntityInfo): EntityFieldInfo[];
|
|
746
|
+
/**
|
|
747
|
+
* Whether a user may see this entity's record names: every field the name is built from must
|
|
748
|
+
* be readable to them. On an entity with field-level security on, a missing user may not,
|
|
749
|
+
* because there is nobody to check against.
|
|
750
|
+
*/
|
|
751
|
+
protected CanUserReadRecordName(entity: EntityInfo, contextUser?: UserInfo): boolean;
|
|
738
752
|
/**
|
|
739
753
|
* Retrieves the display name for a single entity record.
|
|
740
754
|
* Uses BuildEntityRecordNameSQL for dialect-neutral SQL generation.
|
|
755
|
+
*
|
|
756
|
+
* Answers with an empty string, without querying, when field-level security withholds any of
|
|
757
|
+
* the name fields from the acting user — the same answer as a record that does not exist, so
|
|
758
|
+
* the lookup cannot be used to tell the two apart.
|
|
741
759
|
*/
|
|
742
760
|
protected InternalGetEntityRecordName(entityName: string, compositeKey: CompositeKey, contextUser?: UserInfo): Promise<string>;
|
|
743
761
|
/**
|
|
@@ -885,7 +903,7 @@ export declare abstract class DatabaseProviderBase extends ProviderBase {
|
|
|
885
903
|
* @param type The change type
|
|
886
904
|
* @param user The acting user
|
|
887
905
|
*/
|
|
888
|
-
protected LogRecordChange(newData: Record<string, unknown> | null, oldData: Record<string, unknown> | null, entityName: string, recordID: string, entityInfo: EntityInfo, type: 'Create' | 'Update' | 'Delete', user: UserInfo, restoreContext?: RestoreContext | null): Promise<unknown[] | undefined>;
|
|
906
|
+
protected LogRecordChange(newData: Record<string, unknown> | null, oldData: Record<string, unknown> | null, entityName: string, recordID: string, entityInfo: EntityInfo, type: 'Create' | 'Update' | 'Delete', user: UserInfo, restoreContext?: RestoreContext | null, cloneContext?: CloneContext | null): Promise<unknown[] | undefined>;
|
|
889
907
|
/**
|
|
890
908
|
* Dialect-agnostic predicate: should we write a RecordChange entry for
|
|
891
909
|
* this entity? Excludes the Record Changes entity itself to prevent
|
|
@@ -895,7 +913,7 @@ export declare abstract class DatabaseProviderBase extends ProviderBase {
|
|
|
895
913
|
protected ShouldTrackRecordChanges(entityInfo: EntityInfo): boolean;
|
|
896
914
|
/**
|
|
897
915
|
* Builds the dialect-agnostic payload for a RecordChange row from the
|
|
898
|
-
* entity's old/new data and an optional restore context. Concrete
|
|
916
|
+
* entity's old/new data and an optional restore or clone context. Concrete
|
|
899
917
|
* providers consume the returned payload to render their dialect-specific
|
|
900
918
|
* SQL (SQL Server EXEC, PostgreSQL INSERT, etc.).
|
|
901
919
|
*
|
|
@@ -919,8 +937,10 @@ export declare abstract class DatabaseProviderBase extends ProviderBase {
|
|
|
919
937
|
* lineage columns; otherwise `source='Internal'`.
|
|
920
938
|
* @param quoteToEscape Quote character for `EscapeQuotesInProperties` and
|
|
921
939
|
* `DiffObjects`. Defaults to single quote.
|
|
940
|
+
* @param cloneContext When non-null, populates `source='Clone'` and the
|
|
941
|
+
* structured `changeContext` JSON payload.
|
|
922
942
|
*/
|
|
923
|
-
protected BuildRecordChangePayload(newData: Record<string, unknown> | null, oldData: Record<string, unknown> | null, recordID: string, entityInfo: EntityInfo, type: 'Create' | 'Update' | 'Delete', user: UserInfo, restoreContext?: RestoreContext | null, quoteToEscape?: string): RecordChangePayload | null;
|
|
943
|
+
protected BuildRecordChangePayload(newData: Record<string, unknown> | null, oldData: Record<string, unknown> | null, recordID: string, entityInfo: EntityInfo, type: 'Create' | 'Update' | 'Delete', user: UserInfo, restoreContext?: RestoreContext | null, quoteToEscape?: string, cloneContext?: CloneContext | null): RecordChangePayload | null;
|
|
924
944
|
/**
|
|
925
945
|
* Builds the SQL (and optional parameters) for inserting a record change entry.
|
|
926
946
|
* Each provider generates its own dialect: SQL Server uses EXEC spCreateRecordChange_Internal,
|
|
@@ -937,8 +957,10 @@ export declare abstract class DatabaseProviderBase extends ProviderBase {
|
|
|
937
957
|
* written with `Source='Restore'`, `RestoredFromID = SourceChangeID`,
|
|
938
958
|
* and `RestoreReason = Reason`. Read by callers from
|
|
939
959
|
* `BaseEntity.RestoreContext` immediately before generating SQL.
|
|
960
|
+
* @param cloneContext When non-null, the resulting RecordChange row is
|
|
961
|
+
* written with `Source='Clone'` and `ChangeContext` JSON provenance.
|
|
940
962
|
*/
|
|
941
|
-
protected abstract BuildRecordChangeSQL(newData: Record<string, unknown> | null, oldData: Record<string, unknown> | null, entityName: string, recordID: string, entityInfo: EntityInfo, type: 'Create' | 'Update' | 'Delete', user: UserInfo, restoreContext?: RestoreContext | null): {
|
|
963
|
+
protected abstract BuildRecordChangeSQL(newData: Record<string, unknown> | null, oldData: Record<string, unknown> | null, entityName: string, recordID: string, entityInfo: EntityInfo, type: 'Create' | 'Update' | 'Delete', user: UserInfo, restoreContext?: RestoreContext | null, cloneContext?: CloneContext | null): {
|
|
942
964
|
sql: string;
|
|
943
965
|
parameters?: unknown[];
|
|
944
966
|
} | null;
|
|
@@ -953,17 +975,19 @@ export declare abstract class DatabaseProviderBase extends ProviderBase {
|
|
|
953
975
|
* @param userId The acting user ID
|
|
954
976
|
* @param activeChildEntityName The child entity that initiated the save (to skip)
|
|
955
977
|
* @param extraExecOptions Optional provider-specific execution options (e.g. connectionSource for SQL Server transactions)
|
|
978
|
+
* @param source The source discriminator for the record change row ('Internal' or 'Clone')
|
|
979
|
+
* @param changeContext Optional serialized JSON provenance for clone operations
|
|
956
980
|
*/
|
|
957
981
|
protected PropagateRecordChangesToSiblings(parentInfo: EntityInfo, changeData: {
|
|
958
982
|
changesJSON: string;
|
|
959
983
|
changesDescription: string;
|
|
960
|
-
}, pkValue: string, userId: string, activeChildEntityName: string | undefined, extraExecOptions?: Record<string, unknown
|
|
984
|
+
}, pkValue: string, userId: string, activeChildEntityName: string | undefined, extraExecOptions?: Record<string, unknown>, source?: RecordChangeSource, changeContext?: string | null): Promise<void>;
|
|
961
985
|
/**
|
|
962
986
|
* Builds the SQL for a single sibling entity's record change entry in the propagation batch.
|
|
963
987
|
* SQL Server uses FOR JSON PATH + spCreateRecordChange_Internal.
|
|
964
988
|
* PostgreSQL uses json_build_object + INSERT INTO "RecordChange".
|
|
965
989
|
*/
|
|
966
|
-
protected abstract BuildSiblingRecordChangeSQL(varName: string, entityInfo: EntityInfo, safeChangesJSON: string, safeChangesDesc: string, safePKValue: string, safeUserId: string): string;
|
|
990
|
+
protected abstract BuildSiblingRecordChangeSQL(varName: string, entityInfo: EntityInfo, safeChangesJSON: string, safeChangesDesc: string, safePKValue: string, safeUserId: string, source?: RecordChangeSource, changeContext?: string | null): string;
|
|
967
991
|
/**************************************************************************/
|
|
968
992
|
/**************************************************************************/
|
|
969
993
|
/**************************************************************************/
|
|
@@ -1025,5 +1049,21 @@ export interface ExecuteSQLOptions {
|
|
|
1025
1049
|
* pool read sees committed data only (#4514).
|
|
1026
1050
|
*/
|
|
1027
1051
|
ignoreAmbientTransaction?: boolean;
|
|
1052
|
+
/**
|
|
1053
|
+
* Run the statement inside a read-only transaction that is always rolled back, for SQL a
|
|
1054
|
+
* caller supplied. Writes fail, and any session setting the statement changes (`SET`,
|
|
1055
|
+
* `set_config`) is undone before the connection goes back to the pool, so it cannot reach a
|
|
1056
|
+
* later request. Inside an ambient transaction the statement runs in that transaction as usual.
|
|
1057
|
+
* PostgreSQL honours it; SQL Server, whose read queries cannot change session settings, ignores it.
|
|
1058
|
+
*/
|
|
1059
|
+
readOnlyTransaction?: boolean;
|
|
1060
|
+
/**
|
|
1061
|
+
* The longest this statement may run, in milliseconds. When it is exceeded the database cancels
|
|
1062
|
+
* the statement and the call rejects with a timeout error, so the work stops rather than only
|
|
1063
|
+
* the wait. Omitted or 0 means the connection's usual limit applies. It can only shorten that
|
|
1064
|
+
* limit, never lengthen it. Ignored inside an ambient transaction, whose statements follow the
|
|
1065
|
+
* transaction's own limits.
|
|
1066
|
+
*/
|
|
1067
|
+
timeoutMs?: number;
|
|
1028
1068
|
}
|
|
1029
1069
|
//# sourceMappingURL=databaseProviderBase.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"databaseProviderBase.d.ts","sourceRoot":"","sources":["../../src/generic/databaseProviderBase.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"databaseProviderBase.d.ts","sourceRoot":"","sources":["../../src/generic/databaseProviderBase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,QAAQ,EAAE,MAAM,gBAAgB,CAAC;AAC1C,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAqB,UAAU,EAAE,oBAAoB,EAAE,YAAY,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,iBAAiB,EAA2B,MAAM,cAAc,CAAC;AACtN,OAAO,EAAE,UAAU,EAAE,gBAAgB,EAAE,YAAY,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,cAAc,EAA+B,MAAM,cAAc,CAAC;AAChK,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,qBAAqB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAGxL,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAElE,OAAO,EAAE,eAAe,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAC9G,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAc,UAAU,EAAE,MAAM,6BAA6B,CAAC;AAGrE,OAAO,EAAE,gBAAgB,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAC7E,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD;;GAEG;AACH,MAAM,MAAM,WAAW,GAAG;IACtB,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,QAAQ,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF;;;GAGG;AACH,MAAM,WAAW,aAAa;IAC1B,0FAA0F;IAC1F,OAAO,EAAE,MAAM,CAAC;IAChB,oFAAoF;IACpF,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,uFAAuF;IACvF,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;IAC9B,sFAAsF;IACtF,SAAS,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;CACjC;AAED;;;;;GAKG;AACH,MAAM,WAAW,gBAAgB;IAC7B,2EAA2E;IAC3E,SAAS,EAAE,eAAe,CAAC;IAC3B,kDAAkD;IAClD,QAAQ,EAAE,OAAO,CAAC;IAClB,wDAAwD;IACxD,QAAQ,EAAE,OAAO,CAAC;CACrB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,WAAW;IACxB,mEAAmE;IACnE,KAAK,EAAE,OAAO,CAAC;IACf,0EAA0E;IAC1E,MAAM,EAAE,gBAAgB,EAAE,CAAC;IAC3B,+EAA+E;IAC/E,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;AAEjD;;;;;;;;GAQG;AACH,MAAM,WAAW,eAAe;IAC5B;;;;;OAKG;IACH,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,gGAAgG;IAChG,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;;;;;;GASG;AACH,8BAAsB,oBAAqB,SAAQ,YAAY;IAC3D;;;;OAIG;IACH,cAAuB,yBAAyB,IAAI,OAAO,CAE1D;IAED;;;;OAIG;cACsB,sBAAsB,CAAC,MAAM,GAAG,OAAO,EAAE,OAAO,GAAG,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,EAAE,qBAAqB,GAAG,OAAO,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;IAU3L;;;;;;;;OAQG;IACH,QAAQ,CAAC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,MAAM,EAAE,UAAU,CAAC,EAAE,OAAO,EAAE,EAAE,OAAO,CAAC,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAErI;;;;OAIG;IACI,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;IAIvD;;OAEG;IACH,QAAQ,CAAC,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE1C;;OAEG;IACH,QAAQ,CAAC,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE3C;;OAEG;IACH,QAAQ,CAAC,mBAAmB,IAAI,OAAO,CAAC,IAAI,CAAC;IAE7C;;;;;;OAMG;IACH,IAAW,eAAe,IAAI,OAAO,CAEpC;IAED;;;;;;;;OAQG;IACH,SAAS,KAAK,uBAAuB,IAAI,MAAM,CAE9C;IAED;;;;;OAKG;IACH,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED;;;;;;;;OAQG;IACU,yBAAyB,IAAI,OAAO,CAAC,oBAAoB,CAAC;IAIvE;;OAEG;IACU,0BAA0B,IAAI,OAAO,CAAC,IAAI,CAAC;IAUxD,gDAAgD;IAChD,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED;;;;OAIG;IACU,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAInD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA+BG;IACI,cAAc,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,GAAE,MAA2B,EAAE,MAAM,CAAC,EAAE,eAAe,GAAG,IAAI;IAIrH;;;;;;OAMG;IACI,sBAAsB,IAAI,eAAe,GAAG,SAAS;IAI5D;;;OAGG;cACa,uBAAuB,CAAC,IAAI,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAQjG;;;;OAIG;IACH,IAAoB,0BAA0B,IAAI,OAAO,CAExD;IAED;;;;;;;;;;;;;;;;;;;;OAoBG;IACU,sBAAsB,IAAI,OAAO,CAAC,sBAAsB,CAAC;IAgDtE;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,4BAA4B,CAAC,IAAI,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,cAAc,CAAC;IAE1H;;;;OAIG;IACH,IAAa,WAAW,IAAI,gBAAgB,CAE3C;IAED;;;;;;;;;;;;;OAaG;IACH,IAAW,OAAO,IAAI,UAAU,CAK/B;IACD,OAAO,CAAC,QAAQ,CAA2B;IAE3C;;;;OAIG;IACH,IAAW,gBAAgB,IAAI,MAAM,CAEpC;IAED,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;OAIG;aACa,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAErD;;;;;OAKG;aACa,kBAAkB,CAAC,UAAU,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,MAAM;IAElF;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,sBAAsB,CAAC,aAAa,EAAE,UAAU,EAAE,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM;IAErG;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,kBAAkB,EAAE,gBAAgB,EAAE,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM;IAEzH;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,CAAC,0BAA0B,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM;IAErG;;;;;;;;OAQG;IACH,mLAAmL;IACnL,SAAS,CAAC,QAAQ,CAAC,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,OAAO,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,aAAa,CAAC;IAE3I;;OAEG;IACH,iGAAiG;IACjG,SAAS,CAAC,QAAQ,CAAC,iBAAiB,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,CAAC,EAAE,mBAAmB,GAAG,eAAe;IAExH,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,KAAK,mBAAmB,IAAI,MAAM,CAAC;IAErD;;;;;OAKG;IACH,SAAS,CAAC,QAAQ,KAAK,wBAAwB,IAAI,MAAM,CAAC;IAE1D;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,uBAAuB,CACmC;IAElF;;;OAGG;IACH,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,0BAA0B,CACyH;IAE3K;;;;;;OAMG;IACI,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIvD;;;;;;OAMG;IACI,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIxD;;;OAGG;WACW,oCAAoC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI1E;;;OAGG;WACW,qCAAqC,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAI3E;;;;;;OAMG;IACI,aAAa,IAAI,MAAM;IAI9B,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;;;OAUG;IACI,WAAW,CACd,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAChC,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,MAAM,GACtB,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,GAAG,IAAI;IAyBrC,uGAAuG;IACvG,OAAO,CAAC,qBAAqB;IAK7B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAiBxB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;;;;OAKG;IACI,8BAA8B,CACjC,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,EAC1C,cAAc,GAAE,MAAY,EAC5B,UAAU,GAAE,MAAc,GAC3B,MAAM;IAgBT;;OAEG;IACH,SAAS,CAAC,UAAU,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IAOvF;;;;;;;OAOG;IACH,SAAS,CAAC,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO;IA8BhF;;OAEG;IACH,SAAS,CAAC,+BAA+B,CAAC,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAA;KAAE,EAAE;IAO9H,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;OAQG;IACU,kBAAkB,CAC3B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,QAAQ,GACvB,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,GAAG,IAAI,CAAC;IAc9C;;;;;;;;;OASG;IACU,oBAAoB,CAC7B,UAAU,EAAE,UAAU,EACtB,aAAa,EAAE,MAAM,EACrB,WAAW,CAAC,EAAE,QAAQ,GACvB,OAAO,CAAC;QAAE,eAAe,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAgBzC;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAAC,UAAU,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAQnF;;;OAGG;IACH,SAAS,CAAC,cAAc,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,EAAE;IAQ9D,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;OAOG;IACU,gBAAgB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;IAa9H,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;OAEG;IACU,uBAAuB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IAK9I;;OAEG;IACU,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAgBhJ;;;OAGG;IACU,uBAAuB,CAChC,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,UAAU,EAAE,OAAO,EACnB,WAAW,EAAE,QAAQ,GACtB,OAAO,CAAC,IAAI,CAAC;IA2BhB,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;OAQG;IACU,qBAAqB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAgCvI;;;;;;;;;;;;;OAaG;IACH,SAAS,CAAC,qBAAqB,CAAC,UAAU,EAAE,gBAAgB,EAAE,kBAAkB,EAAE,YAAY,GAAG,OAAO;IAIxG;;OAEG;IACH,OAAO,CAAC,4BAA4B;IAoCpC,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAK5E,4EAA4E;IAE5E;;;;OAIG;cACa,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAIzH;;;OAGG;cACa,mBAAmB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI5I;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,GAAG,IAAI;IAI5H;;;OAGG;cACa,qBAAqB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIzH;;;OAGG;IACH,SAAS,CAAC,oBAAoB,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,QAAQ,EAAE,mBAAmB,GAAG,IAAI;IAIzG;;;;OAIG;cACa,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IAI9I;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OAiCG;cACa,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,EAAE,aAAa,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,EAAE,QAAQ,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAAC;IA+B7L;;;OAGG;IACH,SAAS,CAAC,gBAAgB,IAAI,IAAI;IAElC;;OAEG;IACH,SAAS,CAAC,eAAe,IAAI,IAAI;IAEjC;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAI/E;;;OAGG;IACH,SAAS,CAAC,uBAAuB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,aAAa,GAAG,iBAAiB;IAcnG;;OAEG;IACH,SAAS,CAAC,yBAAyB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,eAAe,GAAG,iBAAiB;IAWvG;;;;OAIG;IACH,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,EAAE,YAAY,EAAE,gBAAgB,GAAG,OAAO;IAYjI,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;OAQG;IACH,SAAS,CAAC,6BAA6B,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO;IAwBhE;;;;;;;OAOG;IACH,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,WAAW,EAAE,QAAQ,GAAG,IAAI;IAcnF;;;;;;;;;;;OAWG;IACH,SAAS,CAAC,iBAAiB,CACvB,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EACpD,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GACjB;QAAE,YAAY,EAAE,MAAM,GAAG,IAAI,CAAC;QAAC,gBAAgB,EAAE,eAAe,EAAE,CAAA;KAAE;IAyCvE;;;;;;;;OAQG;cACa,qBAAqB,CACjC,YAAY,EAAE,MAAM,GAAG,IAAI,EAC3B,UAAU,EAAE;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,EACpD,gBAAgB,EAAE,eAAe,EAAE,EACnC,WAAW,CAAC,EAAE,QAAQ,GACvB,OAAO,CAAC;QAAE,OAAO,EAAE,eAAe,EAAE,CAAC;QAAC,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC;IA0DjE;;;;;;;OAOG;IACH,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,YAAY,GAAG,MAAM,GAAG,IAAI;IAoCjG;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CAAC,MAAM,EAAE,UAAU,GAAG,eAAe,EAAE;IAUnE;;;;OAIG;IACH,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO;IAWpF;;;;;;;OAOG;cACa,2BAA2B,CACvC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,QAAQ,GACvB,OAAO,CAAC,MAAM,CAAC;IA2BlB;;OAEG;cACa,4BAA4B,CACxC,IAAI,EAAE,qBAAqB,EAAE,EAC7B,WAAW,CAAC,EAAE,QAAQ,GACvB,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAepC,4EAA4E;IAE5E,4EAA4E;IAExE,4EAA4E;IAIhF,4EAA4E;IAE5E;;;;;;;;;;OAUG;IACU,IAAI,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,EAAE,CAAC;IA8N9F;;;;;;;;;OASG;IACU,MAAM,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,EAAE,mBAAmB,EAAE,IAAI,EAAE,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC;IA4HvG,4EAA4E;IAE5E,4EAA4E;IAE5E;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,EACd,IAAI,EAAE,oBAAoB,GAC3B,OAAO,CAAC,OAAO,CAAC;IAEnB;;;OAGG;IACH,SAAS,CAAC,QAAQ,CAAC,cAAc,CAC7B,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,OAAO,CAAC;IAEnB;;;;;;;;OAQG;IACH,SAAS,CAAC,QAAQ,CAAC,uBAAuB,CACtC,MAAM,EAAE,UAAU,EAClB,IAAI,EAAE,QAAQ,GACf,OAAO,CAAC,OAAO,CAAC;IAEnB,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;;;;;;;;OAeG;IACU,oBAAoB,CAC7B,IAAI,EAAE,QAAQ,EACd,iBAAiB,EAAE,MAAM,GAAG,IAAI,EAChC,gBAAgB,EAAE,MAAM,EACxB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GAAG,IAAI,EACtB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,mBAAmB,EAAE,MAAM,GAAG,IAAI,EAClC,WAAW,EAAE,iBAAiB,GAAG,IAAI,GACtC,OAAO,CAAC,UAAU,GAAG,IAAI,CAAC;IAkC7B,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAK5E,4EAA4E;IAE5E;;;;;;;;;;;;;OAaG;cACa,mBAAmB,CAC/B,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,EACzC,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,EACf,2BAA2B,CAAC,EAAE,MAAM,EAAE,GACvC,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,EAAE,CAAC;IAIpD;;;;OAIG;cACa,qBAAqB,CACjC,OAAO,EAAE,UAAU,EACnB,SAAS,EAAE,MAAM,GAAG,QAAQ,EAC5B,OAAO,EAAE,OAAO,EAChB,KAAK,EAAE,QAAQ,GAChB,OAAO,CAAC,IAAI,CAAC;IAIhB;;;;OAIG;IACH,SAAS,CAAC,kBAAkB,CACxB,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,OAAO,GACjB;QAAE,EAAE,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE,EAAE;IAIlG,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;OAQG;IACI,qBAAqB,CAAC,MAAM,EAAE,UAAU,EAAE,UAAU,EAAE,OAAO,GAAG,MAAM;IAW7E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;;;;;OAYG;cACa,eAAe,CAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpC,IAAI,EAAE,QAAQ,EACd,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,GACnC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;IAQjC;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAMnE;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACH,SAAS,CAAC,wBAAwB,CAC9B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACvC,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpC,IAAI,EAAE,QAAQ,EACd,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,EACtC,aAAa,GAAE,MAAY,EAC3B,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,GACnC,mBAAmB,GAAG,IAAI;IAwC7B;;;;;;;;;;;;;;;;;;OAkBG;IACH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,CACnC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACvC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,EACvC,UAAU,EAAE,MAAM,EAClB,QAAQ,EAAE,MAAM,EAChB,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACpC,IAAI,EAAE,QAAQ,EACd,cAAc,CAAC,EAAE,cAAc,GAAG,IAAI,EACtC,YAAY,CAAC,EAAE,YAAY,GAAG,IAAI,GACnC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,IAAI;IAEjD;;;;;;;;;;;;;OAaG;cACa,gCAAgC,CAC5C,UAAU,EAAE,UAAU,EACtB,UAAU,EAAE;QAAE,WAAW,EAAE,MAAM,CAAC;QAAC,kBAAkB,EAAE,MAAM,CAAA;KAAE,EAC/D,OAAO,EAAE,MAAM,EACf,MAAM,EAAE,MAAM,EACd,qBAAqB,EAAE,MAAM,GAAG,SAAS,EACzC,gBAAgB,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC1C,MAAM,GAAE,kBAA+B,EACvC,aAAa,GAAE,MAAM,GAAG,IAAW,GACpC,OAAO,CAAC,IAAI,CAAC;IA+ChB;;;;OAIG;IACH,SAAS,CAAC,QAAQ,CAAC,2BAA2B,CAC1C,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,eAAe,EAAE,MAAM,EACvB,eAAe,EAAE,MAAM,EACvB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,MAAM,CAAC,EAAE,kBAAkB,EAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,GAC9B,MAAM;IAET,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E,4EAA4E;IAE5E;;;;;;;;OAQG;IACU,mBAAmB,CAAC,MAAM,EAAE,yBAAyB,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,0BAA0B,CAAC;IA6BhI;;;;;;;;;OASG;IACU,YAAY,CAAC,OAAO,EAAE,kBAAkB,EAAE,WAAW,CAAC,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAyFzI;;;OAGG;cACa,iBAAiB,CAAC,OAAO,EAAE,kBAAkB,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,UAAU,CAAC;IA2BtI;;;;OAIG;cACa,oBAAoB,CAAC,cAAc,EAAE,UAAU,EAAE,MAAM,EAAE,iBAAiB,EAAE,WAAW,CAAC,EAAE,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;CAiCrI;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,uHAAuH;IACvH,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,kHAAkH;IAClH,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,sLAAsL;IACtL,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B;;;OAGG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;IACnC;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B;;;;;;OAMG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB"}
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
import { ProviderBase } from "./providerBase.js";
|
|
2
2
|
import { EntityFieldTSType, EntityPermissionType } from "./entityInfo.js";
|
|
3
|
-
import { BaseEntityResult } from "./baseEntity.js";
|
|
3
|
+
import { BaseEntityResult, SerializeCloneChangeContext } from "./baseEntity.js";
|
|
4
4
|
import { EntitySaveOptions, EntityDeleteOptions } from "./interfaces.js";
|
|
5
5
|
import { DispatchRemoteOperationInProcess } from "./remoteOperationDispatch.js";
|
|
6
6
|
import { TransactionItem } from "./transactionGroup.js";
|
|
7
7
|
import { CompositeKey } from "./compositeKey.js";
|
|
8
8
|
import { LogError } from "./logging.js";
|
|
9
|
-
import { SQLExpressionValidator, StripSQLStringLiterals, uuidv4 } from "@memberjunction/global";
|
|
9
|
+
import { EscapeSQLString, FormatBinaryChangeValue, SQLExpressionValidator, StripSQLStringLiterals, uuidv4 } from "@memberjunction/global";
|
|
10
10
|
import { GetDialect } from "@memberjunction/sql-dialect";
|
|
11
11
|
// Re-export PlatformSQL types from their canonical location for backward compatibility
|
|
12
12
|
export { IsPlatformSQL } from "./platformSQL.js";
|
|
@@ -374,6 +374,13 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
374
374
|
continue; // skip if field not found in entity info
|
|
375
375
|
const bDiff = this.isFieldDifferent(f, oldData[key], newData[key]);
|
|
376
376
|
if (bDiff) {
|
|
377
|
+
if (f.IsBinaryFieldType) {
|
|
378
|
+
// A binary value (base64, possibly megabytes) is recorded by size, not content:
|
|
379
|
+
// the record snapshot (FullRecordJSON) keeps the bytes for restore, so the diff
|
|
380
|
+
// does not need to carry them twice more. Readers get a readable change either way.
|
|
381
|
+
changes[key] = { field: key, oldValue: this.describeBinaryForDiff(oldData[key]), newValue: this.describeBinaryForDiff(newData[key]) };
|
|
382
|
+
continue;
|
|
383
|
+
}
|
|
377
384
|
const o = this.escapeValueForDiff(oldData[key], quoteToEscape);
|
|
378
385
|
const n = this.escapeValueForDiff(newData[key], quoteToEscape);
|
|
379
386
|
changes[key] = { field: key, oldValue: o, newValue: n };
|
|
@@ -381,6 +388,12 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
381
388
|
}
|
|
382
389
|
return changes;
|
|
383
390
|
}
|
|
391
|
+
/** The diff entry for a binary field: its size, never its base64 (null and undefined pass through). */
|
|
392
|
+
describeBinaryForDiff(value) {
|
|
393
|
+
if (value === null || value === undefined)
|
|
394
|
+
return value;
|
|
395
|
+
return FormatBinaryChangeValue(typeof value === 'string' ? value : String(value));
|
|
396
|
+
}
|
|
384
397
|
/**
|
|
385
398
|
* Determines whether a specific field value has changed between old and new data.
|
|
386
399
|
*/
|
|
@@ -862,7 +875,7 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
862
875
|
if (overlappingChangeData &&
|
|
863
876
|
entity.EntityInfo.AllowMultipleSubtypes &&
|
|
864
877
|
entity.EntityInfo.TrackRecordChanges) {
|
|
865
|
-
await this.PropagateRecordChangesToSiblings(entity.EntityInfo, overlappingChangeData, entity.PrimaryKey.Values(), user?.ID ?? '', options.ISAActiveChildEntityName);
|
|
878
|
+
await this.PropagateRecordChangesToSiblings(entity.EntityInfo, overlappingChangeData, entity.PrimaryKey.Values(), user?.ID ?? '', options.ISAActiveChildEntityName, undefined, entity.CloneContext ? 'Clone' : 'Internal', entity.CloneContext ? SerializeCloneChangeContext(entity.CloneContext) : null);
|
|
866
879
|
}
|
|
867
880
|
return null;
|
|
868
881
|
}
|
|
@@ -1110,38 +1123,79 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1110
1123
|
const e = this.EntityByName(entityName);
|
|
1111
1124
|
if (!e)
|
|
1112
1125
|
throw new Error('Entity ' + entityName + ' not found');
|
|
1113
|
-
|
|
1114
|
-
// (e.g., FirstName + LastName → "Elizabeth Rodriguez")
|
|
1115
|
-
const nameFields = e.Fields
|
|
1116
|
-
.filter(f => f.IsNameField)
|
|
1117
|
-
.sort((a, b) => (a.Sequence ?? 9999) - (b.Sequence ?? 9999));
|
|
1118
|
-
// Fall back to the single NameField if no IsNameField flags are set
|
|
1126
|
+
const nameFields = this.RecordNameFieldsOf(e);
|
|
1119
1127
|
if (nameFields.length === 0) {
|
|
1120
|
-
|
|
1121
|
-
|
|
1122
|
-
LogError('Entity ' + entityName + ' does not have a NameField, returning null');
|
|
1123
|
-
return null;
|
|
1124
|
-
}
|
|
1125
|
-
nameFields.push(f);
|
|
1128
|
+
LogError('Entity ' + entityName + ' does not have a NameField, returning null');
|
|
1129
|
+
return null;
|
|
1126
1130
|
}
|
|
1127
1131
|
let where = '';
|
|
1128
1132
|
for (const pkv of compositeKey.KeyValuePairs) {
|
|
1129
1133
|
const pk = e.PrimaryKeys.find((pk) => pk.Name === pkv.FieldName);
|
|
1130
|
-
const quotes = pk && pk.NeedsQuotes ? "'" : '';
|
|
1131
1134
|
if (where.length > 0)
|
|
1132
1135
|
where += ' AND ';
|
|
1133
|
-
|
|
1136
|
+
if (pk && pk.NeedsQuotes) {
|
|
1137
|
+
// Key values arrive from remote callers — escape so a quote in the value cannot
|
|
1138
|
+
// break out of the literal (same discipline as CompositeKey.ToWhereClause).
|
|
1139
|
+
where += this.QuoteIdentifier(pkv.FieldName) + "='" + EscapeSQLString(String(pkv.Value)) + "'";
|
|
1140
|
+
}
|
|
1141
|
+
else {
|
|
1142
|
+
// Unquoted (numeric) key column: the value is spliced in bare, so refuse anything
|
|
1143
|
+
// that is not a plain number rather than letting it reach the SQL text.
|
|
1144
|
+
const raw = String(pkv.Value);
|
|
1145
|
+
if (!/^-?\d+(\.\d+)?$/.test(raw)) {
|
|
1146
|
+
LogError(`BuildEntityRecordNameSQL: non-numeric value provided for numeric key field ${pkv.FieldName} on entity ${entityName}`);
|
|
1147
|
+
return null;
|
|
1148
|
+
}
|
|
1149
|
+
where += this.QuoteIdentifier(pkv.FieldName) + '=' + raw;
|
|
1150
|
+
}
|
|
1134
1151
|
}
|
|
1135
1152
|
// SELECT all name fields so InternalGetEntityRecordName can concatenate them
|
|
1136
1153
|
const selectFields = nameFields.map(f => this.QuoteIdentifier(f.Name)).join(', ');
|
|
1137
1154
|
return 'SELECT ' + selectFields + ' FROM ' + this.QuoteSchemaAndView(e.SchemaName, e.BaseView) + ' WHERE ' + where;
|
|
1138
1155
|
}
|
|
1156
|
+
/**
|
|
1157
|
+
* The fields a record's display name is built from, in order: every `IsNameField` field by
|
|
1158
|
+
* `Sequence` (so FirstName + LastName gives "Elizabeth Rodriguez"), else the entity's single
|
|
1159
|
+
* `NameField`. Empty when the entity has neither.
|
|
1160
|
+
*/
|
|
1161
|
+
RecordNameFieldsOf(entity) {
|
|
1162
|
+
const nameFields = entity.Fields
|
|
1163
|
+
.filter(f => f.IsNameField)
|
|
1164
|
+
.sort((a, b) => (a.Sequence ?? 9999) - (b.Sequence ?? 9999));
|
|
1165
|
+
if (nameFields.length === 0 && entity.NameField) {
|
|
1166
|
+
nameFields.push(entity.NameField);
|
|
1167
|
+
}
|
|
1168
|
+
return nameFields;
|
|
1169
|
+
}
|
|
1170
|
+
/**
|
|
1171
|
+
* Whether a user may see this entity's record names: every field the name is built from must
|
|
1172
|
+
* be readable to them. On an entity with field-level security on, a missing user may not,
|
|
1173
|
+
* because there is nobody to check against.
|
|
1174
|
+
*/
|
|
1175
|
+
CanUserReadRecordName(entity, contextUser) {
|
|
1176
|
+
if (!entity.EnableFieldLevelSecurity) {
|
|
1177
|
+
return true;
|
|
1178
|
+
}
|
|
1179
|
+
if (!contextUser) {
|
|
1180
|
+
return false;
|
|
1181
|
+
}
|
|
1182
|
+
const denied = entity.GetDeniedReadFields(contextUser);
|
|
1183
|
+
return this.RecordNameFieldsOf(entity).every(f => !denied.has(f.Name.trim().toLowerCase()));
|
|
1184
|
+
}
|
|
1139
1185
|
/**
|
|
1140
1186
|
* Retrieves the display name for a single entity record.
|
|
1141
1187
|
* Uses BuildEntityRecordNameSQL for dialect-neutral SQL generation.
|
|
1188
|
+
*
|
|
1189
|
+
* Answers with an empty string, without querying, when field-level security withholds any of
|
|
1190
|
+
* the name fields from the acting user — the same answer as a record that does not exist, so
|
|
1191
|
+
* the lookup cannot be used to tell the two apart.
|
|
1142
1192
|
*/
|
|
1143
1193
|
async InternalGetEntityRecordName(entityName, compositeKey, contextUser) {
|
|
1144
1194
|
try {
|
|
1195
|
+
const entity = this.EntityByName(entityName);
|
|
1196
|
+
if (entity && !this.CanUserReadRecordName(entity, contextUser)) {
|
|
1197
|
+
return '';
|
|
1198
|
+
}
|
|
1145
1199
|
const sql = this.BuildEntityRecordNameSQL(entityName, compositeKey);
|
|
1146
1200
|
if (sql) {
|
|
1147
1201
|
const data = await this.ExecuteSQL(sql, undefined, undefined, contextUser);
|
|
@@ -1202,6 +1256,20 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1202
1256
|
*/
|
|
1203
1257
|
async Save(entity, user, options) {
|
|
1204
1258
|
const entityResult = new BaseEntityResult();
|
|
1259
|
+
// Each suspend is matched by exactly one resume, whichever path (success, transaction
|
|
1260
|
+
// callback, or catch) gets there first: providers count suspensions, so a stray resume
|
|
1261
|
+
// would re-enable refresh while another save is still running.
|
|
1262
|
+
let refreshSuspended = false;
|
|
1263
|
+
const suspendRefresh = () => {
|
|
1264
|
+
refreshSuspended = true;
|
|
1265
|
+
this.OnSuspendRefresh();
|
|
1266
|
+
};
|
|
1267
|
+
const resumeRefresh = () => {
|
|
1268
|
+
if (refreshSuspended) {
|
|
1269
|
+
refreshSuspended = false;
|
|
1270
|
+
this.OnResumeRefresh();
|
|
1271
|
+
}
|
|
1272
|
+
};
|
|
1205
1273
|
try {
|
|
1206
1274
|
entity.RegisterTransactionPreprocessing();
|
|
1207
1275
|
// External-data-source entities are read-only — MJ is never the system of record for
|
|
@@ -1316,14 +1384,14 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1316
1384
|
if (entity.TransactionGroup && !bReplay) {
|
|
1317
1385
|
// ---- Transaction Group path ----
|
|
1318
1386
|
entity.RaiseReadyForTransaction();
|
|
1319
|
-
|
|
1387
|
+
suspendRefresh();
|
|
1320
1388
|
const extraData = this.GetTransactionExtraData(entity);
|
|
1321
1389
|
if (sqlDetails.simpleSQL) {
|
|
1322
1390
|
extraData.simpleSQLFallback = sqlDetails.simpleSQL;
|
|
1323
1391
|
}
|
|
1324
1392
|
extraData.entityName = entity.EntityInfo.Name;
|
|
1325
1393
|
entity.TransactionGroup.AddTransaction(new TransactionItem(entity, entityResult.Type === 'create' ? 'Create' : 'Update', sqlDetails.fullSQL, sqlDetails.parameters ?? null, extraData, (transactionResult, success) => {
|
|
1326
|
-
|
|
1394
|
+
resumeRefresh();
|
|
1327
1395
|
entityResult.EndedAt = new Date();
|
|
1328
1396
|
if (success && transactionResult) {
|
|
1329
1397
|
this.OnAfterSaveExecute(entity, user, options, saveContext);
|
|
@@ -1339,7 +1407,7 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1339
1407
|
}
|
|
1340
1408
|
else {
|
|
1341
1409
|
// ---- Direct execution path ----
|
|
1342
|
-
|
|
1410
|
+
suspendRefresh();
|
|
1343
1411
|
let result;
|
|
1344
1412
|
if (bReplay) {
|
|
1345
1413
|
result = [entity.GetAll()];
|
|
@@ -1349,7 +1417,7 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1349
1417
|
const rawResult = await this.ExecuteSQL(sqlDetails.fullSQL, sqlDetails.parameters ?? undefined, execOptions, user);
|
|
1350
1418
|
result = await this.PostProcessRows(rawResult, entity.EntityInfo, user);
|
|
1351
1419
|
}
|
|
1352
|
-
|
|
1420
|
+
resumeRefresh();
|
|
1353
1421
|
entityResult.EndedAt = new Date();
|
|
1354
1422
|
if (result && result.length > 0) {
|
|
1355
1423
|
this.OnAfterSaveExecute(entity, user, options, saveContext);
|
|
@@ -1376,7 +1444,7 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1376
1444
|
}
|
|
1377
1445
|
}
|
|
1378
1446
|
catch (e) {
|
|
1379
|
-
|
|
1447
|
+
resumeRefresh();
|
|
1380
1448
|
entityResult.EndedAt = new Date();
|
|
1381
1449
|
entityResult.Message = e.message;
|
|
1382
1450
|
LogError(e);
|
|
@@ -1642,8 +1710,8 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1642
1710
|
* @param type The change type
|
|
1643
1711
|
* @param user The acting user
|
|
1644
1712
|
*/
|
|
1645
|
-
async LogRecordChange(newData, oldData, entityName, recordID, entityInfo, type, user, restoreContext) {
|
|
1646
|
-
const sqlResult = this.BuildRecordChangeSQL(newData, oldData, entityName, recordID, entityInfo, type, user, restoreContext);
|
|
1713
|
+
async LogRecordChange(newData, oldData, entityName, recordID, entityInfo, type, user, restoreContext, cloneContext) {
|
|
1714
|
+
const sqlResult = this.BuildRecordChangeSQL(newData, oldData, entityName, recordID, entityInfo, type, user, restoreContext, cloneContext);
|
|
1647
1715
|
if (sqlResult) {
|
|
1648
1716
|
return await this.ExecuteSQL(sqlResult.sql, sqlResult.parameters ?? undefined, undefined, user);
|
|
1649
1717
|
}
|
|
@@ -1663,7 +1731,7 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1663
1731
|
}
|
|
1664
1732
|
/**
|
|
1665
1733
|
* Builds the dialect-agnostic payload for a RecordChange row from the
|
|
1666
|
-
* entity's old/new data and an optional restore context. Concrete
|
|
1734
|
+
* entity's old/new data and an optional restore or clone context. Concrete
|
|
1667
1735
|
* providers consume the returned payload to render their dialect-specific
|
|
1668
1736
|
* SQL (SQL Server EXEC, PostgreSQL INSERT, etc.).
|
|
1669
1737
|
*
|
|
@@ -1687,8 +1755,13 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1687
1755
|
* lineage columns; otherwise `source='Internal'`.
|
|
1688
1756
|
* @param quoteToEscape Quote character for `EscapeQuotesInProperties` and
|
|
1689
1757
|
* `DiffObjects`. Defaults to single quote.
|
|
1758
|
+
* @param cloneContext When non-null, populates `source='Clone'` and the
|
|
1759
|
+
* structured `changeContext` JSON payload.
|
|
1690
1760
|
*/
|
|
1691
|
-
BuildRecordChangePayload(newData, oldData, recordID, entityInfo, type, user, restoreContext, quoteToEscape = "'") {
|
|
1761
|
+
BuildRecordChangePayload(newData, oldData, recordID, entityInfo, type, user, restoreContext, quoteToEscape = "'", cloneContext) {
|
|
1762
|
+
if (restoreContext && cloneContext) {
|
|
1763
|
+
throw new Error('BuildRecordChangePayload: both restoreContext and cloneContext were provided; an operation cannot be both a restore and a clone');
|
|
1764
|
+
}
|
|
1692
1765
|
const isCreateOrDelete = oldData === null || newData === null;
|
|
1693
1766
|
const changes = this.DiffObjects(oldData, newData, entityInfo, quoteToEscape);
|
|
1694
1767
|
const changesKeys = changes ? Object.keys(changes) : [];
|
|
@@ -1700,7 +1773,8 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1700
1773
|
const changesDescription = (oldData && newData)
|
|
1701
1774
|
? this.CreateUserDescriptionOfChanges(changes)
|
|
1702
1775
|
: (!oldData ? 'Record Created' : 'Record Deleted');
|
|
1703
|
-
const source = restoreContext ? 'Restore' : 'Internal';
|
|
1776
|
+
const source = restoreContext ? 'Restore' : cloneContext ? 'Clone' : 'Internal';
|
|
1777
|
+
const changeContext = cloneContext ? SerializeCloneChangeContext(cloneContext) : null;
|
|
1704
1778
|
return {
|
|
1705
1779
|
entityID: entityInfo.ID,
|
|
1706
1780
|
recordID,
|
|
@@ -1712,6 +1786,7 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1712
1786
|
fullRecordJSON,
|
|
1713
1787
|
restoredFromID: restoreContext?.SourceChangeID ?? null,
|
|
1714
1788
|
restoreReason: restoreContext?.Reason ?? null,
|
|
1789
|
+
changeContext,
|
|
1715
1790
|
};
|
|
1716
1791
|
}
|
|
1717
1792
|
/**
|
|
@@ -1725,8 +1800,10 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1725
1800
|
* @param userId The acting user ID
|
|
1726
1801
|
* @param activeChildEntityName The child entity that initiated the save (to skip)
|
|
1727
1802
|
* @param extraExecOptions Optional provider-specific execution options (e.g. connectionSource for SQL Server transactions)
|
|
1803
|
+
* @param source The source discriminator for the record change row ('Internal' or 'Clone')
|
|
1804
|
+
* @param changeContext Optional serialized JSON provenance for clone operations
|
|
1728
1805
|
*/
|
|
1729
|
-
async PropagateRecordChangesToSiblings(parentInfo, changeData, pkValue, userId, activeChildEntityName, extraExecOptions) {
|
|
1806
|
+
async PropagateRecordChangesToSiblings(parentInfo, changeData, pkValue, userId, activeChildEntityName, extraExecOptions, source = 'Internal', changeContext = null) {
|
|
1730
1807
|
const sqlParts = [];
|
|
1731
1808
|
const safePKValue = pkValue.replace(/'/g, "''");
|
|
1732
1809
|
const safeUserId = userId.replace(/'/g, "''");
|
|
@@ -1744,7 +1821,7 @@ export class DatabaseProviderBase extends ProviderBase {
|
|
|
1744
1821
|
if (!entityInTree.TrackRecordChanges)
|
|
1745
1822
|
continue;
|
|
1746
1823
|
const varName = `@_rc_prop_${varIndex++}`;
|
|
1747
|
-
sqlParts.push(this.BuildSiblingRecordChangeSQL(varName, entityInTree, safeChangesJSON, safeChangesDesc, safePKValue, safeUserId));
|
|
1824
|
+
sqlParts.push(this.BuildSiblingRecordChangeSQL(varName, entityInTree, safeChangesJSON, safeChangesDesc, safePKValue, safeUserId, source, changeContext));
|
|
1748
1825
|
}
|
|
1749
1826
|
}
|
|
1750
1827
|
// Execute as single batch
|