@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.
Files changed (74) hide show
  1. package/dist/generic/InMemoryLocalStorageProvider.d.ts +5 -0
  2. package/dist/generic/InMemoryLocalStorageProvider.d.ts.map +1 -1
  3. package/dist/generic/InMemoryLocalStorageProvider.js +5 -0
  4. package/dist/generic/InMemoryLocalStorageProvider.js.map +1 -1
  5. package/dist/generic/JSONType-interfaces/IEntityConfiguration.d.ts +192 -0
  6. package/dist/generic/JSONType-interfaces/IEntityConfiguration.d.ts.map +1 -1
  7. package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.d.ts +28 -0
  8. package/dist/generic/JSONType-interfaces/IEntityFieldConfiguration.d.ts.map +1 -1
  9. package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.d.ts +95 -0
  10. package/dist/generic/JSONType-interfaces/IEntityRelationshipConfiguration.d.ts.map +1 -1
  11. package/dist/generic/baseEngine.d.ts +21 -1
  12. package/dist/generic/baseEngine.d.ts.map +1 -1
  13. package/dist/generic/baseEngine.js +15 -1
  14. package/dist/generic/baseEngine.js.map +1 -1
  15. package/dist/generic/baseEntity.d.ts +292 -18
  16. package/dist/generic/baseEntity.d.ts.map +1 -1
  17. package/dist/generic/baseEntity.js +553 -105
  18. package/dist/generic/baseEntity.js.map +1 -1
  19. package/dist/generic/databaseProviderBase.d.ts +47 -7
  20. package/dist/generic/databaseProviderBase.d.ts.map +1 -1
  21. package/dist/generic/databaseProviderBase.js +106 -29
  22. package/dist/generic/databaseProviderBase.js.map +1 -1
  23. package/dist/generic/entityConfiguration.d.ts +21 -0
  24. package/dist/generic/entityConfiguration.d.ts.map +1 -1
  25. package/dist/generic/entityConfiguration.js +34 -0
  26. package/dist/generic/entityConfiguration.js.map +1 -1
  27. package/dist/generic/entityInfo.d.ts +60 -2
  28. package/dist/generic/entityInfo.d.ts.map +1 -1
  29. package/dist/generic/entityInfo.js +81 -2
  30. package/dist/generic/entityInfo.js.map +1 -1
  31. package/dist/generic/entityRecordNameCache.d.ts +48 -0
  32. package/dist/generic/entityRecordNameCache.d.ts.map +1 -0
  33. package/dist/generic/entityRecordNameCache.js +92 -0
  34. package/dist/generic/entityRecordNameCache.js.map +1 -0
  35. package/dist/generic/interfaces.d.ts +45 -9
  36. package/dist/generic/interfaces.d.ts.map +1 -1
  37. package/dist/generic/interfaces.js.map +1 -1
  38. package/dist/generic/jsonFieldBinding.d.ts +196 -0
  39. package/dist/generic/jsonFieldBinding.d.ts.map +1 -0
  40. package/dist/generic/jsonFieldBinding.js +508 -0
  41. package/dist/generic/jsonFieldBinding.js.map +1 -0
  42. package/dist/generic/localCacheManager.d.ts +11 -0
  43. package/dist/generic/localCacheManager.d.ts.map +1 -1
  44. package/dist/generic/localCacheManager.js +9 -0
  45. package/dist/generic/localCacheManager.js.map +1 -1
  46. package/dist/generic/providerBase.d.ts +150 -33
  47. package/dist/generic/providerBase.d.ts.map +1 -1
  48. package/dist/generic/providerBase.js +304 -139
  49. package/dist/generic/providerBase.js.map +1 -1
  50. package/dist/generic/runQuery.d.ts +18 -1
  51. package/dist/generic/runQuery.d.ts.map +1 -1
  52. package/dist/generic/runQuery.js.map +1 -1
  53. package/dist/generic/runQuerySQLFilterImplementations.d.ts +7 -1
  54. package/dist/generic/runQuerySQLFilterImplementations.d.ts.map +1 -1
  55. package/dist/generic/runQuerySQLFilterImplementations.js +65 -140
  56. package/dist/generic/runQuerySQLFilterImplementations.js.map +1 -1
  57. package/dist/generic/telemetryManager.d.ts +11 -0
  58. package/dist/generic/telemetryManager.d.ts.map +1 -1
  59. package/dist/generic/telemetryManager.js +40 -0
  60. package/dist/generic/telemetryManager.js.map +1 -1
  61. package/dist/generic/util.d.ts +6 -0
  62. package/dist/generic/util.d.ts.map +1 -1
  63. package/dist/generic/util.js +20 -0
  64. package/dist/generic/util.js.map +1 -1
  65. package/dist/index.d.ts +2 -0
  66. package/dist/index.d.ts.map +1 -1
  67. package/dist/index.js +2 -0
  68. package/dist/index.js.map +1 -1
  69. package/dist/views/runView.d.ts +24 -0
  70. package/dist/views/runView.d.ts.map +1 -1
  71. package/dist/views/runView.js +4 -0
  72. package/dist/views/runView.js.map +1 -1
  73. package/package.json +3 -3
  74. 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>): Promise<void>;
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":"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,mBAAmB,EAAsB,cAAc,EAAE,MAAM,cAAc,CAAC;AACrH,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;IAkBrC;;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;IA4B7L;;;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;IAiCjG;;;OAGG;cACa,2BAA2B,CACvC,UAAU,EAAE,MAAM,EAClB,YAAY,EAAE,YAAY,EAC1B,WAAW,CAAC,EAAE,QAAQ,GACvB,OAAO,CAAC,MAAM,CAAC;IAuBlB;;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;IAgN9F;;;;;;;;;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,GACvC,OAAO,CAAC,OAAO,EAAE,GAAG,SAAS,CAAC;IAQjC;;;;;OAKG;IACH,SAAS,CAAC,wBAAwB,CAAC,UAAU,EAAE,UAAU,GAAG,OAAO;IAMnE;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;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,GAC5B,mBAAmB,GAAG,IAAI;IAkC7B;;;;;;;;;;;;;;;;OAgBG;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,GACvC;QAAE,GAAG,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,OAAO,EAAE,CAAA;KAAE,GAAG,IAAI;IAEjD;;;;;;;;;;;OAWG;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,GAC3C,OAAO,CAAC,IAAI,CAAC;IA6ChB;;;;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,GACnB,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;CACpC"}
1
+ {"version":3,"file":"databaseProviderBase.d.ts","sourceRoot":"","sources":["../../src/generic/databaseProviderBase.ts"],"names":[],"mappings":"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"}
@@ -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
- // Collect ALL IsNameField fields in Sequence order for multi-field name support
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
- const f = e.NameField;
1121
- if (!f) {
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
- where += this.QuoteIdentifier(pkv.FieldName) + '=' + quotes + pkv.Value + quotes;
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
- this.OnSuspendRefresh();
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
- this.OnResumeRefresh();
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
- this.OnSuspendRefresh();
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
- this.OnResumeRefresh();
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
- this.OnResumeRefresh();
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