@acorex-platform/framework-shared 0.0.30 → 0.0.33

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 (162) hide show
  1. package/background-job/src/index.d.ts +1 -0
  2. package/background-job/src/index.d.ts.map +1 -1
  3. package/background-job/src/index.js +1 -0
  4. package/background-job/src/index.js.map +1 -1
  5. package/background-job/src/lib/background-job-notification.port.d.ts +9 -0
  6. package/background-job/src/lib/background-job-notification.port.d.ts.map +1 -0
  7. package/background-job/src/lib/background-job-notification.port.js +5 -0
  8. package/background-job/src/lib/background-job-notification.port.js.map +1 -0
  9. package/background-job/src/lib/background-job.constants.d.ts +6 -0
  10. package/background-job/src/lib/background-job.constants.d.ts.map +1 -1
  11. package/background-job/src/lib/background-job.constants.js +6 -0
  12. package/background-job/src/lib/background-job.constants.js.map +1 -1
  13. package/background-job/src/lib/background-job.types.d.ts +25 -0
  14. package/background-job/src/lib/background-job.types.d.ts.map +1 -1
  15. package/background-job/src/lib/background-job.types.js.map +1 -1
  16. package/core/src/lib/color-surface/index.d.ts +3 -0
  17. package/core/src/lib/color-surface/index.d.ts.map +1 -0
  18. package/core/src/lib/color-surface/index.js +6 -0
  19. package/core/src/lib/color-surface/index.js.map +1 -0
  20. package/core/src/lib/color-surface/runtime-surface.types.d.ts +17 -0
  21. package/core/src/lib/color-surface/runtime-surface.types.d.ts.map +1 -0
  22. package/core/src/lib/color-surface/runtime-surface.types.js +26 -0
  23. package/core/src/lib/color-surface/runtime-surface.types.js.map +1 -0
  24. package/core/src/lib/color-surface/runtime-surface.util.d.ts +15 -0
  25. package/core/src/lib/color-surface/runtime-surface.util.d.ts.map +1 -0
  26. package/core/src/lib/color-surface/runtime-surface.util.js +195 -0
  27. package/core/src/lib/color-surface/runtime-surface.util.js.map +1 -0
  28. package/core/src/lib/errors/platform-error-codes.d.ts +2 -0
  29. package/core/src/lib/errors/platform-error-codes.d.ts.map +1 -1
  30. package/core/src/lib/errors/platform-error-codes.js +2 -0
  31. package/core/src/lib/errors/platform-error-codes.js.map +1 -1
  32. package/core/src/lib/index.d.ts +3 -0
  33. package/core/src/lib/index.d.ts.map +1 -1
  34. package/core/src/lib/index.js +3 -0
  35. package/core/src/lib/index.js.map +1 -1
  36. package/core/src/lib/registry/index.d.ts +2 -0
  37. package/core/src/lib/registry/index.d.ts.map +1 -0
  38. package/core/src/lib/registry/index.js +7 -0
  39. package/core/src/lib/registry/index.js.map +1 -0
  40. package/core/src/lib/registry/registry.d.ts +23 -0
  41. package/core/src/lib/registry/registry.d.ts.map +1 -0
  42. package/core/src/lib/registry/registry.js +57 -0
  43. package/core/src/lib/registry/registry.js.map +1 -0
  44. package/core/src/lib/user-notification/index.d.ts +3 -0
  45. package/core/src/lib/user-notification/index.d.ts.map +1 -0
  46. package/core/src/lib/user-notification/index.js +6 -0
  47. package/core/src/lib/user-notification/index.js.map +1 -0
  48. package/core/src/lib/user-notification/user-notification-delivery.util.d.ts +10 -0
  49. package/core/src/lib/user-notification/user-notification-delivery.util.d.ts.map +1 -0
  50. package/core/src/lib/user-notification/user-notification-delivery.util.js +45 -0
  51. package/core/src/lib/user-notification/user-notification-delivery.util.js.map +1 -0
  52. package/core/src/lib/user-notification/user-notification.types.d.ts +56 -0
  53. package/core/src/lib/user-notification/user-notification.types.d.ts.map +1 -0
  54. package/core/src/lib/user-notification/user-notification.types.js +5 -0
  55. package/core/src/lib/user-notification/user-notification.types.js.map +1 -0
  56. package/core/src/lib/utils/index.d.ts +1 -0
  57. package/core/src/lib/utils/index.d.ts.map +1 -1
  58. package/core/src/lib/utils/index.js +1 -0
  59. package/core/src/lib/utils/index.js.map +1 -1
  60. package/core/src/lib/utils/random-uuid.util.d.ts +14 -0
  61. package/core/src/lib/utils/random-uuid.util.d.ts.map +1 -0
  62. package/core/src/lib/utils/random-uuid.util.js +54 -0
  63. package/core/src/lib/utils/random-uuid.util.js.map +1 -0
  64. package/core/src/lib/widgets/widgets-list.d.ts +1 -0
  65. package/core/src/lib/widgets/widgets-list.d.ts.map +1 -1
  66. package/core/src/lib/widgets/widgets-list.js +1 -0
  67. package/core/src/lib/widgets/widgets-list.js.map +1 -1
  68. package/entity/src/lib/types/entity-card-field.types.d.ts +31 -5
  69. package/entity/src/lib/types/entity-card-field.types.d.ts.map +1 -1
  70. package/entity/src/lib/types/entity-card-field.types.js +10 -0
  71. package/entity/src/lib/types/entity-card-field.types.js.map +1 -1
  72. package/entity/src/lib/types/entity-definition.types.d.ts +15 -12
  73. package/entity/src/lib/types/entity-definition.types.d.ts.map +1 -1
  74. package/entity/src/lib/types/entity-definition.types.js.map +1 -1
  75. package/entity/src/lib/types/entity-list-filter.types.d.ts +2 -0
  76. package/entity/src/lib/types/entity-list-filter.types.d.ts.map +1 -1
  77. package/entity/src/lib/types/entity-list-filter.types.js +18 -4
  78. package/entity/src/lib/types/entity-list-filter.types.js.map +1 -1
  79. package/entity/src/lib/types/entity-local-catalog.types.d.ts +12 -0
  80. package/entity/src/lib/types/entity-local-catalog.types.d.ts.map +1 -0
  81. package/entity/src/lib/types/entity-local-catalog.types.js +4 -0
  82. package/entity/src/lib/types/entity-local-catalog.types.js.map +1 -0
  83. package/entity/src/lib/types/entity-master-list.types.d.ts +14 -30
  84. package/entity/src/lib/types/entity-master-list.types.d.ts.map +1 -1
  85. package/entity/src/lib/types/entity-master-list.types.js +27 -15
  86. package/entity/src/lib/types/entity-master-list.types.js.map +1 -1
  87. package/entity/src/lib/types/entity-master-styling.types.d.ts +26 -0
  88. package/entity/src/lib/types/entity-master-styling.types.d.ts.map +1 -0
  89. package/entity/src/lib/types/entity-master-styling.types.js +5 -0
  90. package/entity/src/lib/types/entity-master-styling.types.js.map +1 -0
  91. package/entity/src/lib/types/index.d.ts +2 -0
  92. package/entity/src/lib/types/index.d.ts.map +1 -1
  93. package/entity/src/lib/types/index.js +2 -0
  94. package/entity/src/lib/types/index.js.map +1 -1
  95. package/entity/src/lib/utils/entity-default-card-layout.util.d.ts +43 -0
  96. package/entity/src/lib/utils/entity-default-card-layout.util.d.ts.map +1 -0
  97. package/entity/src/lib/utils/entity-default-card-layout.util.js +500 -0
  98. package/entity/src/lib/utils/entity-default-card-layout.util.js.map +1 -0
  99. package/entity/src/lib/utils/entity-master-styling.util.d.ts +19 -0
  100. package/entity/src/lib/utils/entity-master-styling.util.d.ts.map +1 -0
  101. package/entity/src/lib/utils/entity-master-styling.util.js +132 -0
  102. package/entity/src/lib/utils/entity-master-styling.util.js.map +1 -0
  103. package/entity/src/lib/utils/index.d.ts +2 -0
  104. package/entity/src/lib/utils/index.d.ts.map +1 -1
  105. package/entity/src/lib/utils/index.js +2 -0
  106. package/entity/src/lib/utils/index.js.map +1 -1
  107. package/package.json +5 -1
  108. package/runtime/src/lib/commands/bulk-command.types.d.ts +17 -0
  109. package/runtime/src/lib/commands/bulk-command.types.d.ts.map +1 -1
  110. package/runtime/src/lib/commands/bulk-command.types.js.map +1 -1
  111. package/runtime/src/lib/commands/entity-command-keys.d.ts +7 -1
  112. package/runtime/src/lib/commands/entity-command-keys.d.ts.map +1 -1
  113. package/runtime/src/lib/commands/entity-command-keys.js +29 -5
  114. package/runtime/src/lib/commands/entity-command-keys.js.map +1 -1
  115. package/runtime/src/lib/queries/presence-query-keys.d.ts +2 -0
  116. package/runtime/src/lib/queries/presence-query-keys.d.ts.map +1 -1
  117. package/runtime/src/lib/queries/presence-query-keys.js +3 -1
  118. package/runtime/src/lib/queries/presence-query-keys.js.map +1 -1
  119. package/text-template/src/index.d.ts +2 -0
  120. package/text-template/src/index.d.ts.map +1 -0
  121. package/text-template/src/index.js +5 -0
  122. package/text-template/src/index.js.map +1 -0
  123. package/text-template/src/lib/blocks.d.ts +5 -0
  124. package/text-template/src/lib/blocks.d.ts.map +1 -0
  125. package/text-template/src/lib/blocks.js +169 -0
  126. package/text-template/src/lib/blocks.js.map +1 -0
  127. package/text-template/src/lib/create-engine.d.ts +7 -0
  128. package/text-template/src/lib/create-engine.d.ts.map +1 -0
  129. package/text-template/src/lib/create-engine.js +117 -0
  130. package/text-template/src/lib/create-engine.js.map +1 -0
  131. package/text-template/src/lib/eval.util.d.ts +16 -0
  132. package/text-template/src/lib/eval.util.d.ts.map +1 -0
  133. package/text-template/src/lib/eval.util.js +244 -0
  134. package/text-template/src/lib/eval.util.js.map +1 -0
  135. package/text-template/src/lib/format.util.d.ts +11 -0
  136. package/text-template/src/lib/format.util.d.ts.map +1 -0
  137. package/text-template/src/lib/format.util.js +221 -0
  138. package/text-template/src/lib/format.util.js.map +1 -0
  139. package/text-template/src/lib/index.d.ts +10 -0
  140. package/text-template/src/lib/index.d.ts.map +1 -0
  141. package/text-template/src/lib/index.js +19 -0
  142. package/text-template/src/lib/index.js.map +1 -0
  143. package/text-template/src/lib/parse.d.ts +3 -0
  144. package/text-template/src/lib/parse.d.ts.map +1 -0
  145. package/text-template/src/lib/parse.js +356 -0
  146. package/text-template/src/lib/parse.js.map +1 -0
  147. package/text-template/src/lib/pipes.d.ts +3 -0
  148. package/text-template/src/lib/pipes.d.ts.map +1 -0
  149. package/text-template/src/lib/pipes.js +61 -0
  150. package/text-template/src/lib/pipes.js.map +1 -0
  151. package/text-template/src/lib/text-template.constants.d.ts +7 -0
  152. package/text-template/src/lib/text-template.constants.d.ts.map +1 -0
  153. package/text-template/src/lib/text-template.constants.js +35 -0
  154. package/text-template/src/lib/text-template.constants.js.map +1 -0
  155. package/text-template/src/lib/text-template.errors.d.ts +4 -0
  156. package/text-template/src/lib/text-template.errors.d.ts.map +1 -0
  157. package/text-template/src/lib/text-template.errors.js +13 -0
  158. package/text-template/src/lib/text-template.errors.js.map +1 -0
  159. package/text-template/src/lib/text-template.types.d.ts +108 -0
  160. package/text-template/src/lib/text-template.types.d.ts.map +1 -0
  161. package/text-template/src/lib/text-template.types.js +4 -0
  162. package/text-template/src/lib/text-template.types.js.map +1 -0
@@ -0,0 +1,117 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.createBuiltinBlockRegistry = createBuiltinBlockRegistry;
4
+ exports.createBuiltinPipeRegistry = createBuiltinPipeRegistry;
5
+ exports.createTextTemplateEngine = createTextTemplateEngine;
6
+ exports.collectPathRootsFromSource = collectPathRootsFromSource;
7
+ const core_1 = require("@acorex-platform/framework-shared/core");
8
+ const blocks_1 = require("./blocks");
9
+ const pipes_1 = require("./pipes");
10
+ const parse_1 = require("./parse");
11
+ const eval_util_1 = require("./eval.util");
12
+ //#region ----- Builtin registries -----
13
+ function createBuiltinBlockRegistry() {
14
+ const registry = (0, core_1.createRegistry)();
15
+ for (const block of blocks_1.builtinTextTemplateBlocks) {
16
+ registry.register(block.name, block);
17
+ }
18
+ return registry;
19
+ }
20
+ function createBuiltinPipeRegistry() {
21
+ const registry = (0, core_1.createRegistry)();
22
+ for (const pipe of pipes_1.builtinTextTemplatePipes) {
23
+ registry.register(pipe.name, pipe);
24
+ }
25
+ return registry;
26
+ }
27
+ //#endregion
28
+ //#region ----- Engine -----
29
+ function createTextTemplateEngine(options) {
30
+ var _a, _b;
31
+ const blocks = (_a = options === null || options === void 0 ? void 0 : options.blocks) !== null && _a !== void 0 ? _a : createBuiltinBlockRegistry();
32
+ const pipes = (_b = options === null || options === void 0 ? void 0 : options.pipes) !== null && _b !== void 0 ? _b : createBuiltinPipeRegistry();
33
+ const bind = (ctx) => {
34
+ var _a, _b;
35
+ return (Object.assign(Object.assign({}, ctx), { tokenMeta: (_a = ctx.tokenMeta) !== null && _a !== void 0 ? _a : {}, slotContent: (_b = ctx.slotContent) !== null && _b !== void 0 ? _b : '', blocks,
36
+ pipes }));
37
+ };
38
+ return {
39
+ blocks,
40
+ pipes,
41
+ parse(source) {
42
+ return (0, parse_1.parseTextTemplateSource)(source);
43
+ },
44
+ render(source, ctx) {
45
+ const bound = bind(ctx);
46
+ const document = (0, parse_1.parseTextTemplateSource)(source);
47
+ return (0, blocks_1.renderBlocks)(document.blocks, bound);
48
+ },
49
+ interpolate(source, ctx) {
50
+ return (0, eval_util_1.interpolateTemplate)(source, bind(ctx));
51
+ },
52
+ collectPathRoots(source) {
53
+ return collectPathRootsFromSource(source);
54
+ },
55
+ };
56
+ }
57
+ function collectPathRootsFromSource(source) {
58
+ var _a, _b;
59
+ const names = new Set();
60
+ const skip = new Set();
61
+ const pattern = /\{\{([\s\S]*?)\}\}/g;
62
+ let match;
63
+ while ((match = pattern.exec(source !== null && source !== void 0 ? source : ''))) {
64
+ const inner = (_b = (_a = match[1]) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
65
+ if (!inner) {
66
+ continue;
67
+ }
68
+ if (inner === '#else' || inner.startsWith('#else ')) {
69
+ continue;
70
+ }
71
+ if (inner.startsWith('/')) {
72
+ continue;
73
+ }
74
+ if (inner.startsWith('#')) {
75
+ collectFromOpenTag(inner.slice(1).trim(), names, skip);
76
+ continue;
77
+ }
78
+ try {
79
+ const { path } = (0, eval_util_1.parseInterpolation)(inner);
80
+ addRoot(names, skip, path);
81
+ }
82
+ catch (_c) {
83
+ // Ignore malformed interpolations when collecting names.
84
+ }
85
+ }
86
+ return [...names];
87
+ }
88
+ function collectFromOpenTag(inner, names, skip) {
89
+ var _a;
90
+ const tokens = inner.split(/\s+/).filter(Boolean);
91
+ const name = (_a = tokens[0]) !== null && _a !== void 0 ? _a : '';
92
+ if (name === 'for' && tokens[2] === 'in' && tokens[1] && tokens[3]) {
93
+ skip.add(tokens[1]);
94
+ addRoot(names, skip, tokens[3]);
95
+ return;
96
+ }
97
+ if ((name === 'table' || name === 'list') && tokens[2] === 'as' && tokens[1] && tokens[3]) {
98
+ skip.add(tokens[3]);
99
+ addRoot(names, skip, tokens[1]);
100
+ const empty = /empty(?:Text)?="([^"]*)"/.exec(inner);
101
+ if (empty === null || empty === void 0 ? void 0 : empty[1]) {
102
+ // empty copy is static
103
+ }
104
+ return;
105
+ }
106
+ if (name === 'if' && tokens[1]) {
107
+ addRoot(names, skip, tokens[1]);
108
+ }
109
+ }
110
+ function addRoot(names, skip, path) {
111
+ const root = (0, eval_util_1.pathRoot)(path);
112
+ if (root && !skip.has(root)) {
113
+ names.add(root);
114
+ }
115
+ }
116
+ //#endregion
117
+ //# sourceMappingURL=create-engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-engine.js","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/text-template/src/lib/create-engine.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,16 @@
1
+ import type { ContentPipeCall, ContentRenderContext, ContentTokenFormatMeta } from './text-template.types';
2
+ export declare function getPath(data: unknown, path: string): unknown;
3
+ export declare function pathRoot(path: string): string;
4
+ export declare function isTruthyTemplateValue(value: unknown): boolean;
5
+ export declare function asRecordArray(value: unknown): unknown[];
6
+ export declare function interpolateTemplate(source: string, ctx: ContentRenderContext): string;
7
+ export declare function parseInterpolation(inner: string): {
8
+ path: string;
9
+ pipes: ContentPipeCall[];
10
+ };
11
+ export declare function applyPipes(value: unknown, path: string, pipes: ContentPipeCall[], ctx: ContentRenderContext): string;
12
+ export declare function formatDefaultValue(value: unknown, tokenName: string, ctx: ContentRenderContext): string;
13
+ export declare function formatFromTokenMeta(value: unknown, meta: ContentTokenFormatMeta, ctx: ContentRenderContext): string;
14
+ export declare function coerceTemplateText(value: unknown, locale: string): string;
15
+ export declare function tokenizeArgs(source: string): string[];
16
+ //# sourceMappingURL=eval.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.util.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/text-template/src/lib/eval.util.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EACV,eAAe,EACf,oBAAoB,EACpB,sBAAsB,EACvB,MAAM,uBAAuB,CAAC;AAI/B,wBAAgB,OAAO,CAAC,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAgB5D;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAiB7D;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,EAAE,CAKvD;AAQD,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,oBAAoB,GAAG,MAAM,CAarF;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,eAAe,EAAE,CAAA;CAAE,CAgB5F;AAED,wBAAgB,UAAU,CACxB,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,MAAM,EACZ,KAAK,EAAE,eAAe,EAAE,EACxB,GAAG,EAAE,oBAAoB,GACxB,MAAM,CAYR;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,oBAAoB,GACxB,MAAM,CAMR;AAED,wBAAgB,mBAAmB,CACjC,KAAK,EAAE,OAAO,EACd,IAAI,EAAE,sBAAsB,EAC5B,GAAG,EAAE,oBAAoB,GACxB,MAAM,CAmBR;AAED,wBAAgB,kBAAkB,CAAC,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,GAAG,MAAM,CAoBzE;AA0CD,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,EAAE,CA+BrD"}
@@ -0,0 +1,244 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getPath = getPath;
4
+ exports.pathRoot = pathRoot;
5
+ exports.isTruthyTemplateValue = isTruthyTemplateValue;
6
+ exports.asRecordArray = asRecordArray;
7
+ exports.interpolateTemplate = interpolateTemplate;
8
+ exports.parseInterpolation = parseInterpolation;
9
+ exports.applyPipes = applyPipes;
10
+ exports.formatDefaultValue = formatDefaultValue;
11
+ exports.formatFromTokenMeta = formatFromTokenMeta;
12
+ exports.coerceTemplateText = coerceTemplateText;
13
+ exports.tokenizeArgs = tokenizeArgs;
14
+ const core_1 = require("@acorex-platform/framework-shared/core");
15
+ const text_template_constants_1 = require("./text-template.constants");
16
+ const text_template_errors_1 = require("./text-template.errors");
17
+ const format_util_1 = require("./format.util");
18
+ //#region ----- Path / truthy -----
19
+ function getPath(data, path) {
20
+ const parts = path
21
+ .split('.')
22
+ .map((part) => part.trim())
23
+ .filter((part) => part.length > 0);
24
+ if (!parts.length) {
25
+ return undefined;
26
+ }
27
+ let current = data;
28
+ for (const part of parts) {
29
+ if (current == null || (typeof current !== 'object' && typeof current !== 'function')) {
30
+ return undefined;
31
+ }
32
+ current = current[part];
33
+ }
34
+ return current;
35
+ }
36
+ function pathRoot(path) {
37
+ var _a, _b;
38
+ return (_b = (_a = path.split('.')[0]) === null || _a === void 0 ? void 0 : _a.trim()) !== null && _b !== void 0 ? _b : '';
39
+ }
40
+ function isTruthyTemplateValue(value) {
41
+ if (value == null || value === false) {
42
+ return false;
43
+ }
44
+ if (typeof value === 'number') {
45
+ return value !== 0 && !Number.isNaN(value);
46
+ }
47
+ if (typeof value === 'string') {
48
+ return value.trim().length > 0;
49
+ }
50
+ if (Array.isArray(value)) {
51
+ return value.length > 0;
52
+ }
53
+ if (typeof value === 'object') {
54
+ return Object.keys(value).length > 0;
55
+ }
56
+ return true;
57
+ }
58
+ function asRecordArray(value) {
59
+ if (Array.isArray(value)) {
60
+ return value;
61
+ }
62
+ return [];
63
+ }
64
+ //#endregion
65
+ //#region ----- Interpolate -----
66
+ const INTERP_PATTERN = /\{\{([\s\S]*?)\}\}/g;
67
+ function interpolateTemplate(source, ctx) {
68
+ var _a;
69
+ const withExprs = source.replace(INTERP_PATTERN, (_full, inner) => {
70
+ const trimmed = inner.trim();
71
+ if (!trimmed || trimmed.startsWith('#') || trimmed.startsWith('/')) {
72
+ return _full;
73
+ }
74
+ const { path, pipes } = parseInterpolation(trimmed);
75
+ return applyPipes(getPath(ctx.data, path), path, pipes, ctx);
76
+ });
77
+ if (!withExprs.includes(text_template_constants_1.TEXT_TEMPLATE_CONTENT_SLOT)) {
78
+ return withExprs;
79
+ }
80
+ return withExprs.split(text_template_constants_1.TEXT_TEMPLATE_CONTENT_SLOT).join((_a = ctx.slotContent) !== null && _a !== void 0 ? _a : '');
81
+ }
82
+ function parseInterpolation(inner) {
83
+ var _a, _b;
84
+ const segments = splitPipes(inner);
85
+ const path = ((_a = segments[0]) !== null && _a !== void 0 ? _a : '').trim();
86
+ if (!path) {
87
+ throw new text_template_errors_1.TextTemplateEngineError('Interpolation path is required.');
88
+ }
89
+ const pipes = [];
90
+ for (const segment of segments.slice(1)) {
91
+ const tokens = tokenizeArgs(segment.trim());
92
+ const name = (_b = tokens[0]) !== null && _b !== void 0 ? _b : '';
93
+ if (!name) {
94
+ throw new text_template_errors_1.TextTemplateEngineError('Pipe name is required.');
95
+ }
96
+ pipes.push({ name, args: tokens.slice(1).map(coerceArg) });
97
+ }
98
+ return { path, pipes };
99
+ }
100
+ function applyPipes(value, path, pipes, ctx) {
101
+ if (pipes.length === 0) {
102
+ return formatDefaultValue(value, pathRoot(path), ctx);
103
+ }
104
+ let current = value;
105
+ let out = '';
106
+ for (const pipe of pipes) {
107
+ const def = ctx.pipes.get(pipe.name);
108
+ out = def.transform(current, pipe.args, ctx);
109
+ current = out;
110
+ }
111
+ return out;
112
+ }
113
+ function formatDefaultValue(value, tokenName, ctx) {
114
+ var _a;
115
+ const meta = (_a = ctx.tokenMeta) === null || _a === void 0 ? void 0 : _a[tokenName];
116
+ if (meta) {
117
+ return formatFromTokenMeta(value, meta, ctx);
118
+ }
119
+ return coerceTemplateText(value, ctx.locale);
120
+ }
121
+ function formatFromTokenMeta(value, meta, ctx) {
122
+ var _a, _b, _c, _d, _e;
123
+ const dataType = ((_a = meta.dataType) !== null && _a !== void 0 ? _a : 'String').trim();
124
+ const format = ((_b = meta.format) !== null && _b !== void 0 ? _b : 'None').trim();
125
+ const locale = ((_c = ctx.regional.locale) === null || _c === void 0 ? void 0 : _c.trim()) || ctx.locale || 'en-US';
126
+ const shortDate = ((_d = ctx.regional.shortDate) === null || _d === void 0 ? void 0 : _d.trim()) || (0, format_util_1.defaultShortDatePatternForLocale)(locale);
127
+ const shortTime = ((_e = ctx.regional.shortTime) === null || _e === void 0 ? void 0 : _e.trim()) || (0, format_util_1.defaultShortTimePatternForLocale)(locale);
128
+ if (dataType === 'DateTime') {
129
+ const dateOnly = looksLikeDateOnly(value);
130
+ return (0, format_util_1.formatTemplateDate)(value, dateOnly ? shortDate : `${shortDate} ${shortTime}`.trim(), ctx.regional);
131
+ }
132
+ if (dataType === 'Integer') {
133
+ return (0, format_util_1.formatTemplateNumber)(value, locale, { style: 'integer' });
134
+ }
135
+ if (dataType === 'Decimal' || format === 'Currency' || format === 'Percent') {
136
+ const style = format === 'Currency' ? 'currency' : format === 'Percent' ? 'percent' : 'decimal';
137
+ return (0, format_util_1.formatTemplateNumber)(value, locale, { style });
138
+ }
139
+ return coerceTemplateText(value, ctx.locale);
140
+ }
141
+ function coerceTemplateText(value, locale) {
142
+ if (value == null) {
143
+ return '';
144
+ }
145
+ if (typeof value === 'string' || (typeof value === 'object' && !Array.isArray(value) && !(value instanceof Date))) {
146
+ const mls = (0, core_1.resolveMultiLanguageString)(value, locale);
147
+ if (mls) {
148
+ return mls;
149
+ }
150
+ }
151
+ if (value instanceof Date) {
152
+ return value.toISOString();
153
+ }
154
+ if (typeof value === 'number' || typeof value === 'boolean') {
155
+ return String(value);
156
+ }
157
+ if (typeof value === 'string') {
158
+ return value;
159
+ }
160
+ return '';
161
+ }
162
+ function looksLikeDateOnly(value) {
163
+ if (typeof value !== 'string') {
164
+ return false;
165
+ }
166
+ const trimmed = value.trim();
167
+ if (/^\d{4}-\d{2}-\d{2}$/.test(trimmed)) {
168
+ return true;
169
+ }
170
+ return /^\d{4}-\d{2}-\d{2}T00:00:00(?:\.0+)?Z$/i.test(trimmed);
171
+ }
172
+ function splitPipes(inner) {
173
+ const parts = [];
174
+ let current = '';
175
+ let quote = null;
176
+ for (let i = 0; i < inner.length; i++) {
177
+ const ch = inner[i];
178
+ if (quote) {
179
+ current += ch;
180
+ if (ch === quote) {
181
+ quote = null;
182
+ }
183
+ continue;
184
+ }
185
+ if (ch === '"' || ch === "'") {
186
+ quote = ch;
187
+ current += ch;
188
+ continue;
189
+ }
190
+ if (ch === '|') {
191
+ parts.push(current);
192
+ current = '';
193
+ continue;
194
+ }
195
+ current += ch;
196
+ }
197
+ parts.push(current);
198
+ return parts;
199
+ }
200
+ function tokenizeArgs(source) {
201
+ const tokens = [];
202
+ let current = '';
203
+ let quote = null;
204
+ for (let i = 0; i < source.length; i++) {
205
+ const ch = source[i];
206
+ if (quote) {
207
+ if (ch === quote) {
208
+ quote = null;
209
+ }
210
+ else {
211
+ current += ch;
212
+ }
213
+ continue;
214
+ }
215
+ if (ch === '"' || ch === "'") {
216
+ quote = ch;
217
+ continue;
218
+ }
219
+ if (/\s/.test(ch)) {
220
+ if (current) {
221
+ tokens.push(current);
222
+ current = '';
223
+ }
224
+ continue;
225
+ }
226
+ current += ch;
227
+ }
228
+ if (current) {
229
+ tokens.push(current);
230
+ }
231
+ return tokens;
232
+ }
233
+ function coerceArg(token) {
234
+ if (token === 'true')
235
+ return true;
236
+ if (token === 'false')
237
+ return false;
238
+ if (/^-?\d+(\.\d+)?$/.test(token)) {
239
+ return Number(token);
240
+ }
241
+ return token;
242
+ }
243
+ //#endregion
244
+ //# sourceMappingURL=eval.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eval.util.js","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/text-template/src/lib/eval.util.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import type { ContentRegionalContext } from './text-template.types';
2
+ export declare function defaultShortDatePatternForLocale(locale: string): string;
3
+ export declare function defaultShortTimePatternForLocale(_locale: string): string;
4
+ export declare function resolveTextTemplateCalendar(locale: string, calendarSetting?: string | null): string;
5
+ export declare function parseTemplateDateValue(value: unknown): Date | null;
6
+ export declare function formatTemplateDate(value: unknown, pattern: string, regional: ContentRegionalContext): string;
7
+ export declare function formatTemplateNumber(value: unknown, locale: string, options?: {
8
+ style?: 'decimal' | 'integer' | 'currency' | 'percent';
9
+ currency?: string;
10
+ }): string;
11
+ //# sourceMappingURL=format.util.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.util.d.ts","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/text-template/src/lib/format.util.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,uBAAuB,CAAC;AAIpE,wBAAgB,gCAAgC,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CASvE;AAED,wBAAgB,gCAAgC,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAExE;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,MAAM,CAcnG;AAMD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI,GAAG,IAAI,CAwBlE;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,EACd,OAAO,EAAE,MAAM,EACf,QAAQ,EAAE,sBAAsB,GAC/B,MAAM,CA0BR;AAED,wBAAgB,oBAAoB,CAClC,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,MAAM,EACd,OAAO,GAAE;IAAE,KAAK,CAAC,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,SAAS,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAO,GAC1F,MAAM,CA2BR"}
@@ -0,0 +1,221 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.defaultShortDatePatternForLocale = defaultShortDatePatternForLocale;
4
+ exports.defaultShortTimePatternForLocale = defaultShortTimePatternForLocale;
5
+ exports.resolveTextTemplateCalendar = resolveTextTemplateCalendar;
6
+ exports.parseTemplateDateValue = parseTemplateDateValue;
7
+ exports.formatTemplateDate = formatTemplateDate;
8
+ exports.formatTemplateNumber = formatTemplateNumber;
9
+ //#region ----- Locale defaults -----
10
+ function defaultShortDatePatternForLocale(locale) {
11
+ const code = normalizeLocale(locale);
12
+ if (code === 'en-us') {
13
+ return 'MM/DD/YYYY';
14
+ }
15
+ if (code.startsWith('fa')) {
16
+ return 'YYYY/MM/DD';
17
+ }
18
+ return 'DD/MM/YYYY';
19
+ }
20
+ function defaultShortTimePatternForLocale(_locale) {
21
+ return 'HH:mm';
22
+ }
23
+ function resolveTextTemplateCalendar(locale, calendarSetting) {
24
+ const setting = (calendarSetting !== null && calendarSetting !== void 0 ? calendarSetting : '').trim().toLowerCase();
25
+ if (setting === 'solar-hijri' ||
26
+ setting === 'jalali' ||
27
+ setting === 'persian' ||
28
+ setting === 'hijri-shamsi') {
29
+ return 'solar-hijri';
30
+ }
31
+ if (setting === 'gregory' || setting === 'gregorian') {
32
+ return 'gregory';
33
+ }
34
+ return normalizeLocale(locale).startsWith('fa') ? 'solar-hijri' : 'gregory';
35
+ }
36
+ //#endregion
37
+ //#region ----- Date / number (Nest-safe, AXFormatService-equivalent) -----
38
+ function parseTemplateDateValue(value) {
39
+ if (value == null || value === '') {
40
+ return null;
41
+ }
42
+ if (value instanceof Date) {
43
+ return Number.isNaN(value.getTime()) ? null : value;
44
+ }
45
+ if (typeof value === 'number' && Number.isFinite(value)) {
46
+ const date = new Date(value);
47
+ return Number.isNaN(date.getTime()) ? null : date;
48
+ }
49
+ if (typeof value !== 'string') {
50
+ return null;
51
+ }
52
+ const trimmed = value.trim();
53
+ if (!trimmed) {
54
+ return null;
55
+ }
56
+ if (/^\d{4}-\d{2}-\d{2}$/.test(trimmed)) {
57
+ const date = new Date(`${trimmed}T00:00:00.000Z`);
58
+ return Number.isNaN(date.getTime()) ? null : date;
59
+ }
60
+ const date = new Date(trimmed);
61
+ return Number.isNaN(date.getTime()) ? null : date;
62
+ }
63
+ function formatTemplateDate(value, pattern, regional) {
64
+ var _a, _b;
65
+ const date = parseTemplateDateValue(value);
66
+ if (!date) {
67
+ return value == null ? '' : String(value);
68
+ }
69
+ const locale = ((_a = regional.locale) === null || _a === void 0 ? void 0 : _a.trim()) || 'en-US';
70
+ const calendar = resolveTextTemplateCalendar(locale, regional.calendar);
71
+ const intlCalendar = calendar === 'solar-hijri' ? 'persian' : 'gregory';
72
+ const timeZone = ((_b = regional.timeZone) === null || _b === void 0 ? void 0 : _b.trim()) || 'UTC';
73
+ const parts = getZonedCalendarParts(date, timeZone, locale, intlCalendar);
74
+ const monthLong = getLocalizedMonthName(date, locale, intlCalendar, timeZone, 'long');
75
+ const monthShort = getLocalizedMonthName(date, locale, intlCalendar, timeZone, 'short');
76
+ let out = (pattern === null || pattern === void 0 ? void 0 : pattern.trim()) || defaultShortDatePatternForLocale(locale);
77
+ out = out.replace(/YYYY/g, formatLocaleInteger(parts.year, locale, 4));
78
+ out = out.replace(/MMMM/g, monthLong);
79
+ out = out.replace(/MMM/g, monthShort);
80
+ out = out.replace(/MM/g, formatLocaleInteger(parts.month, locale, 2));
81
+ out = out.replace(/\bM\b/g, formatLocaleInteger(parts.month, locale, 0));
82
+ out = out.replace(/DD/g, formatLocaleInteger(parts.day, locale, 2));
83
+ out = out.replace(/\bD\b/g, formatLocaleInteger(parts.day, locale, 0));
84
+ out = out.replace(/HH/g, formatLocaleInteger(parts.hour, locale, 2));
85
+ out = out.replace(/mm/g, formatLocaleInteger(parts.minute, locale, 2));
86
+ out = out.replace(/ss/g, formatLocaleInteger(parts.second, locale, 2));
87
+ return out;
88
+ }
89
+ function formatTemplateNumber(value, locale, options = {}) {
90
+ var _a, _b;
91
+ const num = coerceNumber(value);
92
+ if (num == null) {
93
+ return value == null ? '' : String(value);
94
+ }
95
+ const resolvedLocale = (locale === null || locale === void 0 ? void 0 : locale.trim()) || 'en-US';
96
+ const style = (_a = options.style) !== null && _a !== void 0 ? _a : 'decimal';
97
+ try {
98
+ if (style === 'integer') {
99
+ return new Intl.NumberFormat(resolvedLocale, { maximumFractionDigits: 0 }).format(num);
100
+ }
101
+ if (style === 'percent') {
102
+ return new Intl.NumberFormat(resolvedLocale, {
103
+ style: 'percent',
104
+ maximumFractionDigits: 2,
105
+ }).format(num);
106
+ }
107
+ if (style === 'currency') {
108
+ return new Intl.NumberFormat(resolvedLocale, {
109
+ style: 'currency',
110
+ currency: ((_b = options.currency) === null || _b === void 0 ? void 0 : _b.trim()) || defaultCurrencyForLocale(resolvedLocale),
111
+ }).format(num);
112
+ }
113
+ return new Intl.NumberFormat(resolvedLocale, { maximumFractionDigits: 6 }).format(num);
114
+ }
115
+ catch (_c) {
116
+ return String(num);
117
+ }
118
+ }
119
+ //#endregion
120
+ //#region ----- Helpers -----
121
+ function normalizeLocale(locale) {
122
+ return (locale !== null && locale !== void 0 ? locale : 'en-US').trim().toLowerCase() || 'en-us';
123
+ }
124
+ function defaultCurrencyForLocale(locale) {
125
+ const code = normalizeLocale(locale);
126
+ if (code === 'en-au')
127
+ return 'AUD';
128
+ if (code === 'en-nz')
129
+ return 'NZD';
130
+ if (code.startsWith('fa') || code === 'en-ir')
131
+ return 'IRR';
132
+ if (code === 'en-gb')
133
+ return 'GBP';
134
+ return 'USD';
135
+ }
136
+ function coerceNumber(value) {
137
+ if (typeof value === 'number' && Number.isFinite(value)) {
138
+ return value;
139
+ }
140
+ if (typeof value === 'string' && value.trim()) {
141
+ const num = Number(value.trim());
142
+ return Number.isFinite(num) ? num : null;
143
+ }
144
+ return null;
145
+ }
146
+ function formatLocaleInteger(value, locale, minDigits) {
147
+ const abs = Math.trunc(Math.abs(value));
148
+ const padded = minDigits > 0 ? String(abs).padStart(minDigits, '0') : String(abs);
149
+ try {
150
+ return padded
151
+ .split('')
152
+ .map((ch) => new Intl.NumberFormat(locale, { useGrouping: false }).format(Number(ch)))
153
+ .join('');
154
+ }
155
+ catch (_a) {
156
+ return padded;
157
+ }
158
+ }
159
+ function getLocalizedMonthName(date, locale, calendar, timeZone, width) {
160
+ try {
161
+ return new Intl.DateTimeFormat(locale, { timeZone, calendar, month: width }).format(date);
162
+ }
163
+ catch (_a) {
164
+ try {
165
+ return new Intl.DateTimeFormat('en-US', {
166
+ timeZone,
167
+ calendar: 'gregory',
168
+ month: width,
169
+ }).format(date);
170
+ }
171
+ catch (_b) {
172
+ return String(date.getUTCMonth() + 1);
173
+ }
174
+ }
175
+ }
176
+ function getZonedCalendarParts(date, timeZone, locale, calendar) {
177
+ try {
178
+ const formatter = new Intl.DateTimeFormat(locale, {
179
+ timeZone: timeZone || 'UTC',
180
+ calendar,
181
+ year: 'numeric',
182
+ month: '2-digit',
183
+ day: '2-digit',
184
+ hour: '2-digit',
185
+ minute: '2-digit',
186
+ second: '2-digit',
187
+ hour12: false,
188
+ numberingSystem: 'latn',
189
+ });
190
+ const parts = formatter.formatToParts(date);
191
+ const read = (type) => {
192
+ var _a;
193
+ const value = (_a = parts.find((part) => part.type === type)) === null || _a === void 0 ? void 0 : _a.value;
194
+ return value ? Number(value) : 0;
195
+ };
196
+ let hour = read('hour');
197
+ if (hour === 24) {
198
+ hour = 0;
199
+ }
200
+ return {
201
+ year: read('year'),
202
+ month: read('month'),
203
+ day: read('day'),
204
+ hour,
205
+ minute: read('minute'),
206
+ second: read('second'),
207
+ };
208
+ }
209
+ catch (_a) {
210
+ return {
211
+ year: date.getUTCFullYear(),
212
+ month: date.getUTCMonth() + 1,
213
+ day: date.getUTCDate(),
214
+ hour: date.getUTCHours(),
215
+ minute: date.getUTCMinutes(),
216
+ second: date.getUTCSeconds(),
217
+ };
218
+ }
219
+ }
220
+ //#endregion
221
+ //# sourceMappingURL=format.util.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.util.js","sourceRoot":"","sources":["../../../../../../../libs/framework/shared/text-template/src/lib/format.util.ts"],"names":[],"mappings":"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"}