@o3r/core 14.4.0-prerelease.8 → 14.4.0-rc.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (176) hide show
  1. package/core/application/build-properties.d.ts +50 -0
  2. package/core/application/build-properties.d.ts.map +1 -0
  3. package/core/application/build-properties.js +17 -0
  4. package/core/application/build-properties.js.map +1 -0
  5. package/core/application/dgp-interfaces.d.ts +35 -0
  6. package/core/application/dgp-interfaces.d.ts.map +1 -0
  7. package/core/application/dgp-interfaces.js +2 -0
  8. package/core/application/dgp-interfaces.js.map +1 -0
  9. package/core/application/index.d.ts +4 -0
  10. package/core/application/index.d.ts.map +1 -0
  11. package/core/application/index.js +4 -0
  12. package/core/application/index.js.map +1 -0
  13. package/core/application/runtime.d.ts +14 -0
  14. package/core/application/runtime.d.ts.map +1 -0
  15. package/core/application/runtime.js +2 -0
  16. package/core/application/runtime.js.map +1 -0
  17. package/core/common/index.d.ts +3 -0
  18. package/core/common/index.d.ts.map +1 -0
  19. package/core/common/index.js +3 -0
  20. package/core/common/index.js.map +1 -0
  21. package/core/common/interface-utils.d.ts +7 -0
  22. package/core/common/interface-utils.d.ts.map +1 -0
  23. package/core/common/interface-utils.js +2 -0
  24. package/core/common/interface-utils.js.map +1 -0
  25. package/core/common/label-value.d.ts +8 -0
  26. package/core/common/label-value.d.ts.map +1 -0
  27. package/core/common/label-value.js +2 -0
  28. package/core/common/label-value.js.map +1 -0
  29. package/core/devkit/devtools-interface.d.ts +34 -0
  30. package/core/devkit/devtools-interface.d.ts.map +1 -0
  31. package/core/devkit/devtools-interface.js +2 -0
  32. package/core/devkit/devtools-interface.js.map +1 -0
  33. package/core/devkit/index.d.ts +2 -0
  34. package/core/devkit/index.d.ts.map +1 -0
  35. package/core/devkit/index.js +2 -0
  36. package/core/devkit/index.js.map +1 -0
  37. package/core/index.d.ts +7 -0
  38. package/core/index.d.ts.map +1 -0
  39. package/core/index.js +7 -0
  40. package/core/index.js.map +1 -0
  41. package/core/interfaces/configuration.d.ts +90 -0
  42. package/core/interfaces/configuration.d.ts.map +1 -0
  43. package/core/interfaces/configuration.js +2 -0
  44. package/core/interfaces/configuration.js.map +1 -0
  45. package/core/interfaces/context.d.ts +57 -0
  46. package/core/interfaces/context.d.ts.map +1 -0
  47. package/core/interfaces/context.js +2 -0
  48. package/core/interfaces/context.js.map +1 -0
  49. package/core/interfaces/index.d.ts +5 -0
  50. package/core/interfaces/index.d.ts.map +1 -0
  51. package/core/interfaces/index.js +5 -0
  52. package/core/interfaces/index.js.map +1 -0
  53. package/core/interfaces/item-identifier.d.ts +14 -0
  54. package/core/interfaces/item-identifier.d.ts.map +1 -0
  55. package/core/interfaces/item-identifier.js +2 -0
  56. package/core/interfaces/item-identifier.js.map +1 -0
  57. package/core/interfaces/translation.d.ts +7 -0
  58. package/core/interfaces/translation.d.ts.map +1 -0
  59. package/core/interfaces/translation.js +2 -0
  60. package/core/interfaces/translation.js.map +1 -0
  61. package/core/metadata/component-decorator.d.ts +32 -0
  62. package/core/metadata/component-decorator.d.ts.map +1 -0
  63. package/core/metadata/component-decorator.js +18 -0
  64. package/core/metadata/component-decorator.js.map +1 -0
  65. package/core/metadata/component-identifier.d.ts +7 -0
  66. package/core/metadata/component-identifier.d.ts.map +1 -0
  67. package/core/metadata/component-identifier.js +9 -0
  68. package/core/metadata/component-identifier.js.map +1 -0
  69. package/core/metadata/index.d.ts +4 -0
  70. package/core/metadata/index.d.ts.map +1 -0
  71. package/core/metadata/index.js +4 -0
  72. package/core/metadata/index.js.map +1 -0
  73. package/core/metadata/metadata-interface.d.ts +10 -0
  74. package/core/metadata/metadata-interface.d.ts.map +1 -0
  75. package/core/metadata/metadata-interface.js +2 -0
  76. package/core/metadata/metadata-interface.js.map +1 -0
  77. package/core/rules-engine/index.d.ts +2 -0
  78. package/core/rules-engine/index.d.ts.map +1 -0
  79. package/core/rules-engine/index.js +2 -0
  80. package/core/rules-engine/index.js.map +1 -0
  81. package/core/rules-engine/rules-engine-interfaces.d.ts +24 -0
  82. package/core/rules-engine/rules-engine-interfaces.d.ts.map +1 -0
  83. package/core/rules-engine/rules-engine-interfaces.js +2 -0
  84. package/core/rules-engine/rules-engine-interfaces.js.map +1 -0
  85. package/fesm2022/o3r-core.mjs.map +1 -1
  86. package/log/index.d.ts +2 -0
  87. package/log/index.d.ts.map +1 -0
  88. package/log/index.js +2 -0
  89. package/log/index.js.map +1 -0
  90. package/log/logger.d.ts +36 -0
  91. package/log/logger.d.ts.map +1 -0
  92. package/log/logger.js +2 -0
  93. package/log/logger.js.map +1 -0
  94. package/messages/common-message-interface.d.ts +17 -0
  95. package/messages/common-message-interface.d.ts.map +1 -0
  96. package/messages/common-message-interface.js +2 -0
  97. package/messages/common-message-interface.js.map +1 -0
  98. package/messages/index.d.ts +4 -0
  99. package/messages/index.d.ts.map +1 -0
  100. package/messages/index.js +4 -0
  101. package/messages/index.js.map +1 -0
  102. package/messages/message-helpers.d.ts +24 -0
  103. package/messages/message-helpers.d.ts.map +1 -0
  104. package/messages/message-helpers.js +54 -0
  105. package/messages/message-helpers.js.map +1 -0
  106. package/messages/message-interfaces.d.ts +26 -0
  107. package/messages/message-interfaces.d.ts.map +1 -0
  108. package/messages/message-interfaces.js +5 -0
  109. package/messages/message-interfaces.js.map +1 -0
  110. package/package.json +12 -11
  111. package/public_api.d.ts +6 -0
  112. package/public_api.d.ts.map +1 -0
  113. package/public_api.js +6 -0
  114. package/public_api.js.map +1 -0
  115. package/schematics/shared/presets/all-preset.d.ts.map +1 -1
  116. package/schematics/shared/presets/all-preset.js.map +1 -1
  117. package/schematics/shared/presets/basic-preset.d.ts.map +1 -1
  118. package/schematics/shared/presets/basic-preset.js.map +1 -1
  119. package/schematics/shared/presets/cms-preset.d.ts.map +1 -1
  120. package/schematics/shared/presets/cms-preset.js.map +1 -1
  121. package/store/async/async-entity.adapter.d.ts +62 -0
  122. package/store/async/async-entity.adapter.d.ts.map +1 -0
  123. package/store/async/async-entity.adapter.js +49 -0
  124. package/store/async/async-entity.adapter.js.map +1 -0
  125. package/store/async/async.adapter.d.ts +91 -0
  126. package/store/async/async.adapter.d.ts.map +1 -0
  127. package/store/async/async.adapter.js +94 -0
  128. package/store/async/async.adapter.js.map +1 -0
  129. package/store/async/async.helpers.d.ts +17 -0
  130. package/store/async/async.helpers.d.ts.map +1 -0
  131. package/store/async/async.helpers.js +25 -0
  132. package/store/async/async.helpers.js.map +1 -0
  133. package/store/async/async.interfaces.d.ts +91 -0
  134. package/store/async/async.interfaces.d.ts.map +1 -0
  135. package/store/async/async.interfaces.js +2 -0
  136. package/store/async/async.interfaces.js.map +1 -0
  137. package/store/async/async.operators.d.ts +22 -0
  138. package/store/async/async.operators.d.ts.map +1 -0
  139. package/store/async/async.operators.js +75 -0
  140. package/store/async/async.operators.js.map +1 -0
  141. package/store/async/async.props.d.ts +7 -0
  142. package/store/async/async.props.d.ts.map +1 -0
  143. package/store/async/async.props.js +10 -0
  144. package/store/async/async.props.js.map +1 -0
  145. package/store/async/async.serializer.d.ts +29 -0
  146. package/store/async/async.serializer.d.ts.map +1 -0
  147. package/store/async/async.serializer.js +34 -0
  148. package/store/async/async.serializer.js.map +1 -0
  149. package/store/async/index.d.ts +8 -0
  150. package/store/async/index.d.ts.map +1 -0
  151. package/store/async/index.js +8 -0
  152. package/store/async/index.js.map +1 -0
  153. package/store/index.d.ts +3 -0
  154. package/store/index.d.ts.map +1 -0
  155. package/store/index.js +3 -0
  156. package/store/index.js.map +1 -0
  157. package/store/types.d.ts +95 -0
  158. package/store/types.d.ts.map +1 -0
  159. package/store/types.js +11 -0
  160. package/store/types.js.map +1 -0
  161. package/utils/debug/debug-helper.d.ts +14 -0
  162. package/utils/debug/debug-helper.d.ts.map +1 -0
  163. package/utils/debug/debug-helper.js +19 -0
  164. package/utils/debug/debug-helper.js.map +1 -0
  165. package/utils/deep-fill/deep-fill.d.ts +37 -0
  166. package/utils/deep-fill/deep-fill.d.ts.map +1 -0
  167. package/utils/deep-fill/deep-fill.js +71 -0
  168. package/utils/deep-fill/deep-fill.js.map +1 -0
  169. package/utils/index.d.ts +4 -0
  170. package/utils/index.d.ts.map +1 -0
  171. package/utils/index.js +4 -0
  172. package/utils/index.js.map +1 -0
  173. package/utils/rendering/rendering-helpers.d.ts +10 -0
  174. package/utils/rendering/rendering-helpers.d.ts.map +1 -0
  175. package/utils/rendering/rendering-helpers.js +31 -0
  176. package/utils/rendering/rendering-helpers.js.map +1 -0
@@ -0,0 +1,71 @@
1
+ const defaultConstruct = (data) => data;
2
+ const isDate = (data) => data instanceof Date && !Number.isNaN(data);
3
+ /**
4
+ * Check if an object is not an array or a date
5
+ * @param obj
6
+ * @param additionalMappers
7
+ */
8
+ export function isObject(obj, additionalMappers) {
9
+ return obj instanceof Object && !Array.isArray(obj) && !additionalMappers?.some((mapper) => mapper.condition(obj)) && !isDate(obj);
10
+ }
11
+ /**
12
+ * Return a new reference of the given object
13
+ * @param obj
14
+ * @param additionalMappers
15
+ */
16
+ export function immutablePrimitive(obj, additionalMappers) {
17
+ if (Array.isArray(obj)) {
18
+ return obj.slice();
19
+ }
20
+ const matchingPrimitive = additionalMappers?.find((mapper) => mapper.condition(obj));
21
+ const resolvedType = matchingPrimitive && ((matchingPrimitive.construct || defaultConstruct)(obj));
22
+ if (resolvedType !== undefined) {
23
+ return resolvedType;
24
+ }
25
+ if (isDate(obj)) {
26
+ return new Date(obj);
27
+ }
28
+ else if (obj instanceof Object) {
29
+ return deepFill(obj, obj, additionalMappers);
30
+ }
31
+ else {
32
+ return obj;
33
+ }
34
+ }
35
+ /**
36
+ * Deep fill of base object using source
37
+ * It will do a deep merge of the objects, overriding arrays
38
+ * All properties not present in source, but present in base, will remain
39
+ * @param base
40
+ * @param source
41
+ * @param additionalMappers Map of conditions of type mapper
42
+ */
43
+ export function deepFill(base, source, additionalMappers) {
44
+ if (typeof source === 'undefined') {
45
+ return deepFill(base, base, additionalMappers);
46
+ }
47
+ if (!isObject(base, additionalMappers)) {
48
+ return immutablePrimitive(typeof source === 'undefined' ? base : source, additionalMappers);
49
+ }
50
+ const newObj = { ...base };
51
+ for (const key in base) {
52
+ if (source[key] === null) {
53
+ newObj[key] = immutablePrimitive(null, additionalMappers);
54
+ }
55
+ else if (key in source && typeof base[key] === typeof source[key]) {
56
+ const keyOfSource = source[key];
57
+ newObj[key] = typeof keyOfSource === 'undefined' ? immutablePrimitive(base[key], additionalMappers) : deepFill(base[key], keyOfSource, additionalMappers);
58
+ }
59
+ else {
60
+ newObj[key] = immutablePrimitive(base[key], additionalMappers);
61
+ }
62
+ }
63
+ // getting keys present in source and not present in base
64
+ for (const key in source) {
65
+ if (!(key in newObj)) {
66
+ newObj[key] = immutablePrimitive(source[key], additionalMappers);
67
+ }
68
+ }
69
+ return newObj;
70
+ }
71
+ //# sourceMappingURL=deep-fill.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deep-fill.js","sourceRoot":"","sources":["../../../src/utils/deep-fill/deep-fill.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ export * from './debug/debug-helper';
2
+ export * from './deep-fill/deep-fill';
3
+ export * from './rendering/rendering-helpers';
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC"}
package/utils/index.js ADDED
@@ -0,0 +1,4 @@
1
+ export * from './debug/debug-helper';
2
+ export * from './deep-fill/deep-fill';
3
+ export * from './rendering/rendering-helpers';
4
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utils/index.ts"],"names":[],"mappings":"AAAA,cAAc,sBAAsB,CAAC;AACrC,cAAc,uBAAuB,CAAC;AACtC,cAAc,+BAA+B,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { Observable } from 'rxjs';
2
+ /**
3
+ * Buffers and emits data for lazy/progressive rendering of big lists
4
+ * That could solve issues with long-running tasks when trying to render an array
5
+ * of similar components.
6
+ * @param delayMs Delay between data emits
7
+ * @param concurrency Amount of elements that should be emitted at once
8
+ */
9
+ export declare function lazyArray<T>(delayMs?: number, concurrency?: number): (source$: Observable<T[]>) => Observable<T[]>;
10
+ //# sourceMappingURL=rendering-helpers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendering-helpers.d.ts","sourceRoot":"","sources":["../../../src/utils/rendering/rendering-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,UAAU,EAGX,MAAM,MAAM,CAAC;AAUd;;;;;;GAMG;AACH,wBAAgB,SAAS,CAAC,CAAC,EAAE,OAAO,SAAI,EAAE,WAAW,SAAI,IAE/C,SAAS,UAAU,CAAC,CAAC,EAAE,CAAC,qBA+BjC"}
@@ -0,0 +1,31 @@
1
+ import { animationFrameScheduler, from, observeOn, of, } from 'rxjs';
2
+ import { bufferCount, concatMap, delay, mergeMap, scan, tap, } from 'rxjs/operators';
3
+ /**
4
+ * Buffers and emits data for lazy/progressive rendering of big lists
5
+ * That could solve issues with long-running tasks when trying to render an array
6
+ * of similar components.
7
+ * @param delayMs Delay between data emits
8
+ * @param concurrency Amount of elements that should be emitted at once
9
+ */
10
+ export function lazyArray(delayMs = 0, concurrency = 2) {
11
+ let isFirstEmission = true;
12
+ return (source$) => {
13
+ return source$.pipe(mergeMap((items) => {
14
+ if (!isFirstEmission) {
15
+ return of(items);
16
+ }
17
+ const items$ = from(items);
18
+ return items$.pipe(bufferCount(concurrency), concatMap((value, index) => {
19
+ return of(value).pipe(observeOn(animationFrameScheduler), delay(index * delayMs));
20
+ }), scan((acc, steps) => {
21
+ return [...acc, ...steps];
22
+ }, []), tap((scannedItems) => {
23
+ const scanDidComplete = scannedItems.length === items.length;
24
+ if (scanDidComplete) {
25
+ isFirstEmission = false;
26
+ }
27
+ }));
28
+ }));
29
+ };
30
+ }
31
+ //# sourceMappingURL=rendering-helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rendering-helpers.js","sourceRoot":"","sources":["../../../src/utils/rendering/rendering-helpers.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,uBAAuB,EACvB,IAAI,EAEJ,SAAS,EACT,EAAE,GACH,MAAM,MAAM,CAAC;AACd,OAAO,EACL,WAAW,EACX,SAAS,EACT,KAAK,EACL,QAAQ,EACR,IAAI,EACJ,GAAG,GACJ,MAAM,gBAAgB,CAAC;AAExB;;;;;;GAMG;AACH,MAAM,UAAU,SAAS,CAAI,OAAO,GAAG,CAAC,EAAE,WAAW,GAAG,CAAC;IACvD,IAAI,eAAe,GAAG,IAAI,CAAC;IAC3B,OAAO,CAAC,OAAwB,EAAE,EAAE;QAClC,OAAO,OAAO,CAAC,IAAI,CACjB,QAAQ,CAAC,CAAC,KAAK,EAAE,EAAE;YACjB,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACnB,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC;YAE3B,OAAO,MAAM,CAAC,IAAI,CAChB,WAAW,CAAC,WAAW,CAAC,EACxB,SAAS,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;gBACzB,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC,IAAI,CACnB,SAAS,CAAC,uBAAuB,CAAC,EAClC,KAAK,CAAC,KAAK,GAAG,OAAO,CAAC,CACvB,CAAC;YACJ,CAAC,CAAC,EACF,IAAI,CAAC,CAAC,GAAQ,EAAE,KAAU,EAAE,EAAE;gBAC5B,OAAO,CAAC,GAAG,GAAG,EAAE,GAAG,KAAK,CAAC,CAAC;YAC5B,CAAC,EAAE,EAAE,CAAC,EACN,GAAG,CAAC,CAAC,YAAiB,EAAE,EAAE;gBACxB,MAAM,eAAe,GAAG,YAAY,CAAC,MAAM,KAAK,KAAK,CAAC,MAAM,CAAC;gBAE7D,IAAI,eAAe,EAAE,CAAC;oBACpB,eAAe,GAAG,KAAK,CAAC;gBAC1B,CAAC;YACH,CAAC,CAAC,CACH,CAAC;QACJ,CAAC,CAAC,CACH,CAAC;IACJ,CAAC,CAAC;AACJ,CAAC"}