@bluealba/pae-bootstrap-lib 1.7.2-develop-1171

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 (115) hide show
  1. package/LICENSE +134 -0
  2. package/README.md +43 -0
  3. package/dist/src/bootstrap/bootstrap-platform.d.ts +32 -0
  4. package/dist/src/bootstrap/bootstrap-platform.d.ts.map +1 -0
  5. package/dist/src/bootstrap/bootstrap-platform.js +75 -0
  6. package/dist/src/bootstrap/bootstrap-platform.js.map +1 -0
  7. package/dist/src/bootstrap/domain/bootstrap-sync-metadata.interface.d.ts +37 -0
  8. package/dist/src/bootstrap/domain/bootstrap-sync-metadata.interface.d.ts.map +1 -0
  9. package/dist/src/bootstrap/domain/bootstrap-sync-metadata.interface.js +3 -0
  10. package/dist/src/bootstrap/domain/bootstrap-sync-metadata.interface.js.map +1 -0
  11. package/dist/src/bootstrap/domain/domain-validation.test.d.ts +2 -0
  12. package/dist/src/bootstrap/domain/domain-validation.test.d.ts.map +1 -0
  13. package/dist/src/bootstrap/domain/domain-validation.test.js +1872 -0
  14. package/dist/src/bootstrap/domain/domain-validation.test.js.map +1 -0
  15. package/dist/src/bootstrap/entity-synchronizer.d.ts +53 -0
  16. package/dist/src/bootstrap/entity-synchronizer.d.ts.map +1 -0
  17. package/dist/src/bootstrap/entity-synchronizer.js +69 -0
  18. package/dist/src/bootstrap/entity-synchronizer.js.map +1 -0
  19. package/dist/src/bootstrap/entity-synchronizer.test.d.ts +2 -0
  20. package/dist/src/bootstrap/entity-synchronizer.test.d.ts.map +1 -0
  21. package/dist/src/bootstrap/entity-synchronizer.test.js +270 -0
  22. package/dist/src/bootstrap/entity-synchronizer.test.js.map +1 -0
  23. package/dist/src/bootstrap/fix-created-by.d.ts +10 -0
  24. package/dist/src/bootstrap/fix-created-by.d.ts.map +1 -0
  25. package/dist/src/bootstrap/fix-created-by.js +36 -0
  26. package/dist/src/bootstrap/fix-created-by.js.map +1 -0
  27. package/dist/src/bootstrap/initialize-pae-client.d.ts +7 -0
  28. package/dist/src/bootstrap/initialize-pae-client.d.ts.map +1 -0
  29. package/dist/src/bootstrap/initialize-pae-client.js +24 -0
  30. package/dist/src/bootstrap/initialize-pae-client.js.map +1 -0
  31. package/dist/src/bootstrap/read-bootstrap-applications.d.ts +10 -0
  32. package/dist/src/bootstrap/read-bootstrap-applications.d.ts.map +1 -0
  33. package/dist/src/bootstrap/read-bootstrap-applications.js +650 -0
  34. package/dist/src/bootstrap/read-bootstrap-applications.js.map +1 -0
  35. package/dist/src/bootstrap/run-bootstrap-sync.service.d.ts +4 -0
  36. package/dist/src/bootstrap/run-bootstrap-sync.service.d.ts.map +1 -0
  37. package/dist/src/bootstrap/run-bootstrap-sync.service.js +27 -0
  38. package/dist/src/bootstrap/run-bootstrap-sync.service.js.map +1 -0
  39. package/dist/src/bootstrap/synchronizers/sync-applications.d.ts +4 -0
  40. package/dist/src/bootstrap/synchronizers/sync-applications.d.ts.map +1 -0
  41. package/dist/src/bootstrap/synchronizers/sync-applications.js +53 -0
  42. package/dist/src/bootstrap/synchronizers/sync-applications.js.map +1 -0
  43. package/dist/src/bootstrap/synchronizers/sync-authz-entities.d.ts +11 -0
  44. package/dist/src/bootstrap/synchronizers/sync-authz-entities.d.ts.map +1 -0
  45. package/dist/src/bootstrap/synchronizers/sync-authz-entities.js +58 -0
  46. package/dist/src/bootstrap/synchronizers/sync-authz-entities.js.map +1 -0
  47. package/dist/src/bootstrap/synchronizers/sync-catalog.d.ts +5 -0
  48. package/dist/src/bootstrap/synchronizers/sync-catalog.d.ts.map +1 -0
  49. package/dist/src/bootstrap/synchronizers/sync-catalog.js +73 -0
  50. package/dist/src/bootstrap/synchronizers/sync-catalog.js.map +1 -0
  51. package/dist/src/bootstrap/synchronizers/sync-entities/performDeletes.d.ts +11 -0
  52. package/dist/src/bootstrap/synchronizers/sync-entities/performDeletes.d.ts.map +1 -0
  53. package/dist/src/bootstrap/synchronizers/sync-entities/performDeletes.js +38 -0
  54. package/dist/src/bootstrap/synchronizers/sync-entities/performDeletes.js.map +1 -0
  55. package/dist/src/bootstrap/synchronizers/sync-entities/performUpdates.d.ts +12 -0
  56. package/dist/src/bootstrap/synchronizers/sync-entities/performUpdates.d.ts.map +1 -0
  57. package/dist/src/bootstrap/synchronizers/sync-entities/performUpdates.js +43 -0
  58. package/dist/src/bootstrap/synchronizers/sync-entities/performUpdates.js.map +1 -0
  59. package/dist/src/bootstrap/synchronizers/sync-entities.d.ts +19 -0
  60. package/dist/src/bootstrap/synchronizers/sync-entities.d.ts.map +1 -0
  61. package/dist/src/bootstrap/synchronizers/sync-entities.js +59 -0
  62. package/dist/src/bootstrap/synchronizers/sync-entities.js.map +1 -0
  63. package/dist/src/bootstrap/synchronizers/sync-entities.test.d.ts +2 -0
  64. package/dist/src/bootstrap/synchronizers/sync-entities.test.d.ts.map +1 -0
  65. package/dist/src/bootstrap/synchronizers/sync-entities.test.js +158 -0
  66. package/dist/src/bootstrap/synchronizers/sync-entities.test.js.map +1 -0
  67. package/dist/src/bootstrap/synchronizers/sync-entity-options.d.ts +11 -0
  68. package/dist/src/bootstrap/synchronizers/sync-entity-options.d.ts.map +1 -0
  69. package/dist/src/bootstrap/synchronizers/sync-entity-options.js +3 -0
  70. package/dist/src/bootstrap/synchronizers/sync-entity-options.js.map +1 -0
  71. package/dist/src/bootstrap/synchronizers/sync-modules-config.d.ts +4 -0
  72. package/dist/src/bootstrap/synchronizers/sync-modules-config.d.ts.map +1 -0
  73. package/dist/src/bootstrap/synchronizers/sync-modules-config.js +28 -0
  74. package/dist/src/bootstrap/synchronizers/sync-modules-config.js.map +1 -0
  75. package/dist/src/bootstrap/synchronizers/sync-operations.d.ts +5 -0
  76. package/dist/src/bootstrap/synchronizers/sync-operations.d.ts.map +1 -0
  77. package/dist/src/bootstrap/synchronizers/sync-operations.js +41 -0
  78. package/dist/src/bootstrap/synchronizers/sync-operations.js.map +1 -0
  79. package/dist/src/bootstrap/synchronizers/sync-role-operations.d.ts +8 -0
  80. package/dist/src/bootstrap/synchronizers/sync-role-operations.d.ts.map +1 -0
  81. package/dist/src/bootstrap/synchronizers/sync-role-operations.js +74 -0
  82. package/dist/src/bootstrap/synchronizers/sync-role-operations.js.map +1 -0
  83. package/dist/src/bootstrap/synchronizers/sync-roles.d.ts +5 -0
  84. package/dist/src/bootstrap/synchronizers/sync-roles.d.ts.map +1 -0
  85. package/dist/src/bootstrap/synchronizers/sync-roles.js +41 -0
  86. package/dist/src/bootstrap/synchronizers/sync-roles.js.map +1 -0
  87. package/dist/src/bootstrap/synchronizers/sync-shared-libraries.d.ts +4 -0
  88. package/dist/src/bootstrap/synchronizers/sync-shared-libraries.d.ts.map +1 -0
  89. package/dist/src/bootstrap/synchronizers/sync-shared-libraries.js +32 -0
  90. package/dist/src/bootstrap/synchronizers/sync-shared-libraries.js.map +1 -0
  91. package/dist/src/index.d.ts +3 -0
  92. package/dist/src/index.d.ts.map +1 -0
  93. package/dist/src/index.js +19 -0
  94. package/dist/src/index.js.map +1 -0
  95. package/dist/src/utils/compare-lists-by.d.ts +23 -0
  96. package/dist/src/utils/compare-lists-by.d.ts.map +1 -0
  97. package/dist/src/utils/compare-lists-by.js +34 -0
  98. package/dist/src/utils/compare-lists-by.js.map +1 -0
  99. package/dist/src/utils/format-diff.d.ts +106 -0
  100. package/dist/src/utils/format-diff.d.ts.map +1 -0
  101. package/dist/src/utils/format-diff.js +166 -0
  102. package/dist/src/utils/format-diff.js.map +1 -0
  103. package/dist/src/utils/format-diff.test.d.ts +2 -0
  104. package/dist/src/utils/format-diff.test.d.ts.map +1 -0
  105. package/dist/src/utils/format-diff.test.js +242 -0
  106. package/dist/src/utils/format-diff.test.js.map +1 -0
  107. package/dist/src/utils/get-common-keys.d.ts +6 -0
  108. package/dist/src/utils/get-common-keys.d.ts.map +1 -0
  109. package/dist/src/utils/get-common-keys.js +9 -0
  110. package/dist/src/utils/get-common-keys.js.map +1 -0
  111. package/dist/src/utils/io.d.ts +3 -0
  112. package/dist/src/utils/io.d.ts.map +1 -0
  113. package/dist/src/utils/io.js +13 -0
  114. package/dist/src/utils/io.js.map +1 -0
  115. package/package.json +34 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"domain-validation.test.js","sourceRoot":"","sources":["../../../../src/bootstrap/domain/domain-validation.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,53 @@
1
+ export interface EntitySynchronizer<TEntity, TData = TEntity> {
2
+ add: (entity: TData) => Promise<any>;
3
+ remove: (entity: TEntity) => Promise<any>;
4
+ update: (data: TData, entity: TEntity) => Promise<any>;
5
+ fetch: () => Promise<TEntity[]>;
6
+ keyComparator: (data: TData, entity: TEntity) => boolean;
7
+ hasChanged?: HasChangedFn<TEntity, TData>;
8
+ }
9
+ export type HasChangedFn<TEntity, TData = TEntity> = (data: TData, entity: TEntity | undefined) => boolean;
10
+ /**
11
+ * Default list of keys to ignore when comparing entities.
12
+ * These are typically auto-managed fields that shouldn't trigger updates.
13
+ */
14
+ export declare const DEFAULT_IGNORE_KEYS: string[];
15
+ /**
16
+ * Creates a hasChanged function that compares two objects with configurable ignore keys.
17
+ *
18
+ * This function provides improved change detection by:
19
+ * - Comparing ALL keys (not just common ones)
20
+ * - Detecting new keys in data that don't exist in entity
21
+ * - Ignoring system-managed fields (audit fields, IDs, etc.)
22
+ * - Supporting custom ignore lists per synchronizer
23
+ *
24
+ * @param additionalIgnoreKeys - Optional array of additional keys to ignore beyond the default list
25
+ * @returns A hasChanged function that can be used with EntitySynchronizer
26
+ *
27
+ * @example
28
+ * // Use with default ignore keys only
29
+ * const hasChanged = createHasChangedFn();
30
+ *
31
+ * @example
32
+ * // Add custom ignore keys
33
+ * const hasChanged = createHasChangedFn(['isGlobal', 'computedField']);
34
+ *
35
+ * @example
36
+ * // Use in EntitySynchronizer
37
+ * const synchronizer: EntitySynchronizer<Application, CreateApplicationDTO> = {
38
+ * hasChanged: createHasChangedFn(['isGlobal']),
39
+ * // ... other methods
40
+ * };
41
+ */
42
+ export declare const createHasChangedFn: (additionalIgnoreKeys?: string[]) => HasChangedFn<any, any>;
43
+ /**
44
+ * Default hasChanged function with built-in ignore for audit fields.
45
+ *
46
+ * This is the recommended function for most synchronizers as it automatically
47
+ * ignores system-managed fields (id, createdAt, updatedAt, etc.) and detects
48
+ * new keys in the input data.
49
+ *
50
+ * Use `createHasChangedFn(['customKey'])` if you need to ignore additional keys.
51
+ */
52
+ export declare const DEFAULT_HAS_CHANGED_FN: HasChangedFn<any, any>;
53
+ //# sourceMappingURL=entity-synchronizer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-synchronizer.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/entity-synchronizer.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,kBAAkB,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO;IAC1D,GAAG,EAAE,CAAC,MAAM,EAAE,KAAK,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACrC,MAAM,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,GAAG,CAAC,CAAC;IACvD,KAAK,EAAE,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAChC,aAAa,EAAE,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC;IACzD,UAAU,CAAC,EAAE,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;CAC3C;AAED,MAAM,MAAM,YAAY,CAAC,OAAO,EAAE,KAAK,GAAG,OAAO,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,OAAO,GAAG,SAAS,KAAK,OAAO,CAAA;AAE1G;;;GAGG;AACH,eAAO,MAAM,mBAAmB,UAA6D,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACH,eAAO,MAAM,kBAAkB,GAAI,uBAAsB,MAAM,EAAO,KAAG,YAAY,CAAC,GAAG,EAAE,GAAG,CA+B7F,CAAC;AAEF;;;;;;;;GAQG;AACH,eAAO,MAAM,sBAAsB,wBAAuB,CAAC"}
@@ -0,0 +1,69 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.DEFAULT_HAS_CHANGED_FN = exports.createHasChangedFn = exports.DEFAULT_IGNORE_KEYS = void 0;
4
+ const ramda_1 = require("ramda");
5
+ /**
6
+ * Default list of keys to ignore when comparing entities.
7
+ * These are typically auto-managed fields that shouldn't trigger updates.
8
+ */
9
+ exports.DEFAULT_IGNORE_KEYS = ['id', 'createdAt', 'createdBy', 'updatedAt', 'updatedBy'];
10
+ /**
11
+ * Creates a hasChanged function that compares two objects with configurable ignore keys.
12
+ *
13
+ * This function provides improved change detection by:
14
+ * - Comparing ALL keys (not just common ones)
15
+ * - Detecting new keys in data that don't exist in entity
16
+ * - Ignoring system-managed fields (audit fields, IDs, etc.)
17
+ * - Supporting custom ignore lists per synchronizer
18
+ *
19
+ * @param additionalIgnoreKeys - Optional array of additional keys to ignore beyond the default list
20
+ * @returns A hasChanged function that can be used with EntitySynchronizer
21
+ *
22
+ * @example
23
+ * // Use with default ignore keys only
24
+ * const hasChanged = createHasChangedFn();
25
+ *
26
+ * @example
27
+ * // Add custom ignore keys
28
+ * const hasChanged = createHasChangedFn(['isGlobal', 'computedField']);
29
+ *
30
+ * @example
31
+ * // Use in EntitySynchronizer
32
+ * const synchronizer: EntitySynchronizer<Application, CreateApplicationDTO> = {
33
+ * hasChanged: createHasChangedFn(['isGlobal']),
34
+ * // ... other methods
35
+ * };
36
+ */
37
+ const createHasChangedFn = (additionalIgnoreKeys = []) => {
38
+ const ignoreKeys = new Set([...exports.DEFAULT_IGNORE_KEYS, ...additionalIgnoreKeys]);
39
+ return (data, entity) => {
40
+ if (!entity) {
41
+ return true; // No entity means it's a new addition (change detected)
42
+ }
43
+ if (!data) {
44
+ return false; // No data means nothing to compare
45
+ }
46
+ // Get all keys from data
47
+ const dataKeys = Object.keys(data);
48
+ // Check if data has any keys that entity doesn't have (excluding ignored keys)
49
+ const newKeys = dataKeys.filter(key => !ignoreKeys.has(key) && !(key in entity));
50
+ if (newKeys.length > 0) {
51
+ return true; // New keys detected in data
52
+ }
53
+ // Check if any common keys have changed values (excluding ignored keys)
54
+ const commonKeys = dataKeys.filter(key => !ignoreKeys.has(key) && key in entity);
55
+ return commonKeys.some(key => !(0, ramda_1.equals)(data[key], entity[key]));
56
+ };
57
+ };
58
+ exports.createHasChangedFn = createHasChangedFn;
59
+ /**
60
+ * Default hasChanged function with built-in ignore for audit fields.
61
+ *
62
+ * This is the recommended function for most synchronizers as it automatically
63
+ * ignores system-managed fields (id, createdAt, updatedAt, etc.) and detects
64
+ * new keys in the input data.
65
+ *
66
+ * Use `createHasChangedFn(['customKey'])` if you need to ignore additional keys.
67
+ */
68
+ exports.DEFAULT_HAS_CHANGED_FN = (0, exports.createHasChangedFn)();
69
+ //# sourceMappingURL=entity-synchronizer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-synchronizer.js","sourceRoot":"","sources":["../../../src/bootstrap/entity-synchronizer.ts"],"names":[],"mappings":";;;AAAA,iCAA6B;AAa7B;;;GAGG;AACU,QAAA,mBAAmB,GAAG,CAAC,IAAI,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,EAAE,WAAW,CAAC,CAAC;AAE9F;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AACI,MAAM,kBAAkB,GAAG,CAAC,uBAAiC,EAAE,EAA0B,EAAE;IAChG,MAAM,UAAU,GAAG,IAAI,GAAG,CAAC,CAAC,GAAG,2BAAmB,EAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC;IAE9E,OAAO,CAAC,IAAS,EAAE,MAAuB,EAAW,EAAE;QACrD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,IAAI,CAAC,CAAC,wDAAwD;QACvE,CAAC;QAED,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,OAAO,KAAK,CAAC,CAAC,mCAAmC;QACnD,CAAC;QAED,yBAAyB;QACzB,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAEnC,+EAA+E;QAC/E,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACpC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,IAAI,MAAM,CAAC,CACzC,CAAC;QAEF,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACvB,OAAO,IAAI,CAAC,CAAC,4BAA4B;QAC3C,CAAC;QAED,wEAAwE;QACxE,MAAM,UAAU,GAAG,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACvC,CAAC,UAAU,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,GAAG,IAAI,MAAM,CACtC,CAAC;QAEF,OAAO,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,IAAA,cAAM,EAAC,IAAI,CAAC,GAAG,CAAC,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACjE,CAAC,CAAC;AACJ,CAAC,CAAC;AA/BW,QAAA,kBAAkB,sBA+B7B;AAEF;;;;;;;;GAQG;AACU,QAAA,sBAAsB,GAAG,IAAA,0BAAkB,GAAE,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=entity-synchronizer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-synchronizer.test.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/entity-synchronizer.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,270 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const entity_synchronizer_1 = require("./entity-synchronizer");
4
+ describe('entity-synchronizer', () => {
5
+ describe('createHasChangedFn', () => {
6
+ describe('with default ignore keys', () => {
7
+ const hasChanged = (0, entity_synchronizer_1.createHasChangedFn)();
8
+ it('should detect changes when data has new keys not in entity', () => {
9
+ const data = { name: 'Test', description: 'New field' };
10
+ const entity = { name: 'Test', id: 1, createdAt: new Date() };
11
+ expect(hasChanged(data, entity)).toBe(true);
12
+ });
13
+ it('should NOT detect changes when only ignored keys differ', () => {
14
+ const data = { name: 'Test', description: 'Same' };
15
+ const entity = {
16
+ name: 'Test',
17
+ description: 'Same',
18
+ id: 1,
19
+ createdAt: new Date('2024-01-01'),
20
+ updatedAt: new Date('2024-01-02'),
21
+ createdBy: 'user1',
22
+ updatedBy: 'user2'
23
+ };
24
+ expect(hasChanged(data, entity)).toBe(false);
25
+ });
26
+ it('should detect changes when common keys have different values', () => {
27
+ const data = { name: 'Test', description: 'Changed' };
28
+ const entity = {
29
+ name: 'Test',
30
+ description: 'Original',
31
+ id: 1,
32
+ createdAt: new Date()
33
+ };
34
+ expect(hasChanged(data, entity)).toBe(true);
35
+ });
36
+ it('should NOT detect changes when common keys have same values', () => {
37
+ const data = { name: 'Test', description: 'Same' };
38
+ const entity = {
39
+ name: 'Test',
40
+ description: 'Same',
41
+ id: 1,
42
+ createdAt: new Date()
43
+ };
44
+ expect(hasChanged(data, entity)).toBe(false);
45
+ });
46
+ it('should ignore all default audit fields', () => {
47
+ const data = { name: 'Test' };
48
+ const entity = {
49
+ name: 'Test',
50
+ id: 999,
51
+ createdAt: new Date('2024-01-01'),
52
+ createdBy: 'user1',
53
+ updatedAt: new Date('2024-12-31'),
54
+ updatedBy: 'user2'
55
+ };
56
+ expect(hasChanged(data, entity)).toBe(false);
57
+ });
58
+ it('should return true when entity is undefined', () => {
59
+ const data = { name: 'Test' };
60
+ expect(hasChanged(data, undefined)).toBe(true);
61
+ });
62
+ it('should return false when data is undefined', () => {
63
+ const entity = { name: 'Test', id: 1 };
64
+ expect(hasChanged(undefined, entity)).toBe(false);
65
+ });
66
+ it('should return false when data is null', () => {
67
+ const entity = { name: 'Test', id: 1 };
68
+ expect(hasChanged(null, entity)).toBe(false);
69
+ });
70
+ it('should handle empty objects', () => {
71
+ expect(hasChanged({}, {})).toBe(false);
72
+ });
73
+ it('should detect changes with nested objects', () => {
74
+ const data = { name: 'Test', config: { enabled: true } };
75
+ const entity = {
76
+ name: 'Test',
77
+ config: { enabled: false },
78
+ id: 1
79
+ };
80
+ expect(hasChanged(data, entity)).toBe(true);
81
+ });
82
+ it('should NOT detect changes when nested objects are deeply equal', () => {
83
+ const data = { name: 'Test', config: { enabled: true, nested: { value: 1 } } };
84
+ const entity = {
85
+ name: 'Test',
86
+ config: { enabled: true, nested: { value: 1 } },
87
+ id: 1
88
+ };
89
+ expect(hasChanged(data, entity)).toBe(false);
90
+ });
91
+ it('should handle arrays correctly', () => {
92
+ const data = { name: 'Test', tags: ['a', 'b'] };
93
+ const entity = {
94
+ name: 'Test',
95
+ tags: ['a', 'b', 'c'],
96
+ id: 1
97
+ };
98
+ expect(hasChanged(data, entity)).toBe(true);
99
+ });
100
+ });
101
+ describe('with custom ignore keys', () => {
102
+ const hasChanged = (0, entity_synchronizer_1.createHasChangedFn)(['isGlobal', 'computedField']);
103
+ it('should ignore custom keys in addition to default keys', () => {
104
+ const data = { name: 'Test', description: 'Same' };
105
+ const entity = {
106
+ name: 'Test',
107
+ description: 'Same',
108
+ id: 1,
109
+ isGlobal: true,
110
+ computedField: 'computed',
111
+ createdAt: new Date()
112
+ };
113
+ expect(hasChanged(data, entity)).toBe(false);
114
+ });
115
+ it('should still detect changes in non-ignored keys', () => {
116
+ const data = { name: 'Changed', description: 'Same' };
117
+ const entity = {
118
+ name: 'Test',
119
+ description: 'Same',
120
+ id: 1,
121
+ isGlobal: true,
122
+ computedField: 'computed'
123
+ };
124
+ expect(hasChanged(data, entity)).toBe(true);
125
+ });
126
+ it('should NOT detect new keys if they are in custom ignore list', () => {
127
+ const data = { name: 'Test', newField: 'value' };
128
+ const entity = {
129
+ name: 'Test',
130
+ id: 1,
131
+ isGlobal: false
132
+ };
133
+ // newField is NOT in ignore list, so it should detect change
134
+ expect(hasChanged(data, entity)).toBe(true);
135
+ });
136
+ });
137
+ describe('real-world entity scenarios', () => {
138
+ describe('Application entity', () => {
139
+ it('should detect changes in application properties', () => {
140
+ const data = {
141
+ name: 'my-app',
142
+ displayName: 'My App',
143
+ description: 'Updated description',
144
+ allowedByDefault: true
145
+ };
146
+ const entity = {
147
+ id: 1,
148
+ name: 'my-app',
149
+ displayName: 'My App',
150
+ description: 'Original description',
151
+ allowedByDefault: true,
152
+ isGlobal: false,
153
+ createdAt: new Date('2024-01-01'),
154
+ updatedAt: new Date('2024-01-02'),
155
+ createdBy: 'admin',
156
+ updatedBy: 'admin'
157
+ };
158
+ const hasChanged = (0, entity_synchronizer_1.createHasChangedFn)(['isGlobal']); // isGlobal is computed
159
+ expect(hasChanged(data, entity)).toBe(true);
160
+ });
161
+ it('should NOT detect changes when only audit fields differ', () => {
162
+ const data = {
163
+ name: 'my-app',
164
+ displayName: 'My App',
165
+ description: 'Same description',
166
+ allowedByDefault: true
167
+ };
168
+ const entity = {
169
+ id: 1,
170
+ name: 'my-app',
171
+ displayName: 'My App',
172
+ description: 'Same description',
173
+ allowedByDefault: true,
174
+ isGlobal: false,
175
+ createdAt: new Date('2024-01-01'),
176
+ updatedAt: new Date('2024-06-15'), // Different timestamp
177
+ createdBy: 'admin',
178
+ updatedBy: 'user2' // Different user
179
+ };
180
+ const hasChanged = (0, entity_synchronizer_1.createHasChangedFn)(['isGlobal']);
181
+ expect(hasChanged(data, entity)).toBe(false);
182
+ });
183
+ });
184
+ describe('Module entity', () => {
185
+ it('should detect changes when protocol is added to data', () => {
186
+ const data = {
187
+ name: 'my-module',
188
+ url: 'http://localhost:3000',
189
+ protocol: 'http', // This was materialized by API
190
+ includeBaseURL: false
191
+ };
192
+ const entity = {
193
+ id: 'module-1',
194
+ name: 'my-module',
195
+ url: 'http://localhost:3000',
196
+ createdAt: new Date()
197
+ };
198
+ const hasChanged = (0, entity_synchronizer_1.createHasChangedFn)();
199
+ expect(hasChanged(data, entity)).toBe(true); // protocol and includeBaseURL are new
200
+ });
201
+ });
202
+ describe('Operation entity', () => {
203
+ it('should ignore applicationId foreign key', () => {
204
+ const data = {
205
+ name: 'operation-1',
206
+ applicationName: 'my-app',
207
+ description: 'An operation'
208
+ };
209
+ const entity = {
210
+ id: 1,
211
+ name: 'operation-1',
212
+ applicationName: 'my-app',
213
+ applicationId: 5, // Foreign key, should be ignored
214
+ description: 'An operation',
215
+ createdAt: new Date(),
216
+ updatedAt: new Date()
217
+ };
218
+ const hasChanged = (0, entity_synchronizer_1.createHasChangedFn)(['applicationId']);
219
+ expect(hasChanged(data, entity)).toBe(false);
220
+ });
221
+ });
222
+ });
223
+ });
224
+ describe('DEFAULT_HAS_CHANGED_FN', () => {
225
+ it('should be a pre-configured hasChanged function', () => {
226
+ const data = { name: 'Test', description: 'New' };
227
+ const entity = { name: 'Test', id: 1, createdAt: new Date() };
228
+ expect((0, entity_synchronizer_1.DEFAULT_HAS_CHANGED_FN)(data, entity)).toBe(true);
229
+ });
230
+ it('should use default ignore keys', () => {
231
+ const data = { name: 'Test' };
232
+ const entity = {
233
+ name: 'Test',
234
+ id: 1,
235
+ createdAt: new Date(),
236
+ updatedAt: new Date()
237
+ };
238
+ expect((0, entity_synchronizer_1.DEFAULT_HAS_CHANGED_FN)(data, entity)).toBe(false);
239
+ });
240
+ it('should detect changes in common keys', () => {
241
+ const data = { name: 'Test', description: 'New' };
242
+ const entity = { name: 'Test', description: 'Old', id: 1 };
243
+ expect((0, entity_synchronizer_1.DEFAULT_HAS_CHANGED_FN)(data, entity)).toBe(true);
244
+ });
245
+ it('should ignore audit fields', () => {
246
+ const data = { name: 'Test', description: 'Same' };
247
+ const entity = {
248
+ name: 'Test',
249
+ description: 'Same',
250
+ id: 1,
251
+ createdAt: new Date('2024-01-01'),
252
+ updatedAt: new Date('2024-12-31')
253
+ };
254
+ expect((0, entity_synchronizer_1.DEFAULT_HAS_CHANGED_FN)(data, entity)).toBe(false);
255
+ });
256
+ });
257
+ describe('DEFAULT_IGNORE_KEYS', () => {
258
+ it('should contain expected audit fields', () => {
259
+ expect(entity_synchronizer_1.DEFAULT_IGNORE_KEYS).toContain('id');
260
+ expect(entity_synchronizer_1.DEFAULT_IGNORE_KEYS).toContain('createdAt');
261
+ expect(entity_synchronizer_1.DEFAULT_IGNORE_KEYS).toContain('createdBy');
262
+ expect(entity_synchronizer_1.DEFAULT_IGNORE_KEYS).toContain('updatedAt');
263
+ expect(entity_synchronizer_1.DEFAULT_IGNORE_KEYS).toContain('updatedBy');
264
+ });
265
+ it('should have exactly 5 default keys', () => {
266
+ expect(entity_synchronizer_1.DEFAULT_IGNORE_KEYS).toHaveLength(5);
267
+ });
268
+ });
269
+ });
270
+ //# sourceMappingURL=entity-synchronizer.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entity-synchronizer.test.js","sourceRoot":"","sources":["../../../src/bootstrap/entity-synchronizer.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { PAE } from "@bluealba/pae-core";
2
+ import { BootstrapPlatform } from "./domain/bootstrap-sync-metadata.interface";
3
+ /**
4
+ * Temporary behavior to fix modules after running the migration that adds the created_by & updated_by fields.
5
+ * Since they are created with "system" value, but the owner is the "scopedTo" of each bootstrap (env var)
6
+ * we must re-create them.
7
+ */
8
+ declare const fixCreatedBy: (platform: BootstrapPlatform, pae: PAE, scopedTo: string) => Promise<void[] | undefined>;
9
+ export default fixCreatedBy;
10
+ //# sourceMappingURL=fix-created-by.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-created-by.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/fix-created-by.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAEzC,OAAO,EAAE,iBAAiB,EAAE,MAAM,4CAA4C,CAAC;AAE/E;;;;GAIG;AACH,QAAA,MAAM,YAAY,GAAU,UAAU,iBAAiB,EAAE,KAAK,GAAG,EAAE,UAAU,MAAM,gCAwBlF,CAAA;AAED,eAAe,YAAY,CAAA"}
@@ -0,0 +1,36 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ /**
13
+ * Temporary behavior to fix modules after running the migration that adds the created_by & updated_by fields.
14
+ * Since they are created with "system" value, but the owner is the "scopedTo" of each bootstrap (env var)
15
+ * we must re-create them.
16
+ */
17
+ const fixCreatedBy = (platform, pae, scopedTo) => __awaiter(void 0, void 0, void 0, function* () {
18
+ const modules = Object.values(platform.applications).flatMap(a => a.modules);
19
+ const serverModules = yield pae.getAllModules();
20
+ // those in the server but with a different "createdBy". We will "fix" the
21
+ const modulesToFix = modules.filter(module => serverModules.some(m => m.name === module.name
22
+ // it was automatically generated by the migration that added this column
23
+ && m.createdBy === 'system'));
24
+ if (modulesToFix.length === 0) {
25
+ console.log(`>>> [FIXING] no modules to fix`);
26
+ return;
27
+ }
28
+ return Promise.all(modulesToFix.map((m) => __awaiter(void 0, void 0, void 0, function* () {
29
+ console.log(`>>> [FIXING] module ${m.name} author by recreating it author [${scopedTo}]`);
30
+ // we delete and recreate it. This will pick up our user as author (scopedTo)
31
+ yield pae.deleteModule(m.name);
32
+ yield pae.createModule(m);
33
+ })));
34
+ });
35
+ exports.default = fixCreatedBy;
36
+ //# sourceMappingURL=fix-created-by.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"fix-created-by.js","sourceRoot":"","sources":["../../../src/bootstrap/fix-created-by.ts"],"names":[],"mappings":";;;;;;;;;;;AAIA;;;;GAIG;AACH,MAAM,YAAY,GAAG,CAAO,QAA2B,EAAE,GAAQ,EAAE,QAAgB,EAAE,EAAE;IACrF,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;IAC5E,MAAM,aAAa,GAAG,MAAM,GAAG,CAAC,aAAa,EAAE,CAAA;IAE/C,0EAA0E;IAC1E,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,CAC3C,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CACrB,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,IAAI;QACtB,yEAAyE;WACtE,CAAC,CAAC,SAAS,KAAK,QAAQ,CAC5B,CACF,CAAA;IAED,IAAI,YAAY,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAA;QAC7C,OAAO;IACT,CAAC;IAED,OAAO,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,GAAG,CAAC,CAAM,CAAC,EAAC,EAAE;QAC5C,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC,IAAI,oCAAoC,QAAQ,GAAG,CAAC,CAAA;QACzF,6EAA6E;QAC7E,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAA;QAC9B,MAAM,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,CAAA;IAC3B,CAAC,CAAA,CAAC,CAAC,CAAA;AACL,CAAC,CAAA,CAAA;AAED,kBAAe,YAAY,CAAA"}
@@ -0,0 +1,7 @@
1
+ import { PAE } from "@bluealba/pae-core";
2
+ /**
3
+ * Initializes the PAE client
4
+ */
5
+ declare const initializePAEClient: () => Promise<PAE>;
6
+ export default initializePAEClient;
7
+ //# sourceMappingURL=initialize-pae-client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize-pae-client.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/initialize-pae-client.ts"],"names":[],"mappings":"AAAA,OAAO,EAAsB,GAAG,EAAE,MAAM,oBAAoB,CAAC;AAE7D;;GAEG;AACH,QAAA,MAAM,mBAAmB,QAAa,OAAO,CAAC,GAAG,CAWhD,CAAC;AAEF,eAAe,mBAAmB,CAAC"}
@@ -0,0 +1,24 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ const pae_core_1 = require("@bluealba/pae-core");
13
+ /**
14
+ * Initializes the PAE client
15
+ */
16
+ const initializePAEClient = () => __awaiter(void 0, void 0, void 0, function* () {
17
+ console.log("Initializing PAE client...");
18
+ const pae = yield (0, pae_core_1.createPAE)((0, pae_core_1.fromEnv)('GATEWAY_SERVICE_URL'), (0, pae_core_1.fromEnv)("SERVICE_ACCESS_SECRET"), {
19
+ serviceName: (0, pae_core_1.fromEnv)("SERVICE_ACCESS_NAME"),
20
+ }, 'direct');
21
+ return pae;
22
+ });
23
+ exports.default = initializePAEClient;
24
+ //# sourceMappingURL=initialize-pae-client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"initialize-pae-client.js","sourceRoot":"","sources":["../../../src/bootstrap/initialize-pae-client.ts"],"names":[],"mappings":";;;;;;;;;;;AAAA,iDAA6D;AAE7D;;GAEG;AACH,MAAM,mBAAmB,GAAG,GAAuB,EAAE;IACnD,OAAO,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,IAAA,oBAAS,EACzB,IAAA,kBAAO,EAAC,qBAAqB,CAAC,EAC9B,IAAA,kBAAO,EAAC,uBAAuB,CAAC,EAChC;QACE,WAAW,EAAE,IAAA,kBAAO,EAAC,qBAAqB,CAAC;KAC5C,EACD,QAAQ,CACT,CAAC;IACF,OAAO,GAAG,CAAC;AACb,CAAC,CAAA,CAAC;AAEF,kBAAe,mBAAmB,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { BootstrapPlatform } from "./domain/bootstrap-sync-metadata.interface";
2
+ import { BootstrapOptions } from "./bootstrap-platform";
3
+ /**
4
+ * Inspects the filesystem reading all application definitions
5
+ * NOTE: this is a really quick implementation pretty raw.
6
+ * But allow us to stop repeating code in projects.
7
+ * Feel free to add tests (:P) and improve it.
8
+ */
9
+ export declare const readPlatformBootstrapFolder: (path: string, options: BootstrapOptions) => BootstrapPlatform;
10
+ //# sourceMappingURL=read-bootstrap-applications.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read-bootstrap-applications.d.ts","sourceRoot":"","sources":["../../../src/bootstrap/read-bootstrap-applications.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,iBAAiB,EAElB,MAAM,4CAA4C,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AAcxD;;;;;GAKG;AACH,eAAO,MAAM,2BAA2B,GAAI,MAAM,MAAM,EAAE,SAAS,gBAAgB,KAAG,iBA0BrF,CAAA"}