@design-edito/tools 0.1.31 → 0.1.33

Sign up to get free protection for your applications and to get access to all the features.
Files changed (151) hide show
  1. package/agnostic/css/index.js +3 -3
  2. package/agnostic/errors/index.js +2 -2
  3. package/agnostic/html/index.js +11 -11
  4. package/agnostic/html/sanitize/index.js +4 -4
  5. package/agnostic/html/selector-to-element/index.js +4 -4
  6. package/agnostic/html/string-to-nodes/index.js +5 -5
  7. package/agnostic/misc/index.js +7 -7
  8. package/agnostic/misc/lorem-ipsum/index.js +2 -2
  9. package/agnostic/numbers/index.js +3 -3
  10. package/agnostic/optim/index.js +3 -3
  11. package/agnostic/strings/index.js +3 -3
  12. package/agnostic/time/index.js +3 -3
  13. package/chunks/{chunk-EVOTJ7SU.js → chunk-COLNKMBN.js} +1 -1
  14. package/chunks/{chunk-NWFX6TEY.js → chunk-EX7FS6IR.js} +2 -2
  15. package/chunks/{chunk-CB52KVOZ.js → chunk-UDY37VIJ.js} +1 -1
  16. package/chunks/{chunk-WABWQCFE.js → chunk-WXXW6YLW.js} +1 -1
  17. package/package.json +1 -2
  18. package/agnostic/html/hyper-json/crossenv/index.d.ts +0 -13
  19. package/agnostic/html/hyper-json/crossenv/index.js +0 -6
  20. package/agnostic/misc/crossenv/get-document/index.d.ts +0 -2
  21. package/agnostic/misc/crossenv/get-document/index.js +0 -7
  22. package/agnostic/misc/crossenv/get-window/browser.d.ts +0 -2
  23. package/agnostic/misc/crossenv/get-window/index.d.ts +0 -2
  24. package/agnostic/misc/crossenv/get-window/index.js +0 -6
  25. package/agnostic/misc/crossenv/types.d.ts +0 -3
  26. package/chunks/chunk-2DMWYLFG.js +0 -16
  27. package/chunks/chunk-2PI5AZIL.js +0 -211
  28. package/chunks/chunk-2UYTYTX4.js +0 -31
  29. package/chunks/chunk-3KQRMKQJ.js +0 -27
  30. package/chunks/chunk-3LVR6KZH.js +0 -22
  31. package/chunks/chunk-3PHPA25U.js +0 -18
  32. package/chunks/chunk-3PM7GZ6B.js +0 -33
  33. package/chunks/chunk-3SQJEEBK.js +0 -642
  34. package/chunks/chunk-3UURICGY.js +0 -211
  35. package/chunks/chunk-3X6RXJBR.js +0 -37
  36. package/chunks/chunk-4F7ZVE7T.js +0 -332
  37. package/chunks/chunk-4GUDL44X.js +0 -13
  38. package/chunks/chunk-4QQBKBYH.js +0 -59
  39. package/chunks/chunk-4RDW62CU.js +0 -36
  40. package/chunks/chunk-5IR2PWO6.js +0 -211
  41. package/chunks/chunk-6CM2SWSX.js +0 -35
  42. package/chunks/chunk-6EYBQHJS.js +0 -33
  43. package/chunks/chunk-6NZCBAT4.js +0 -19
  44. package/chunks/chunk-6R54C426.js +0 -35
  45. package/chunks/chunk-6V23XMYE.js +0 -982
  46. package/chunks/chunk-73V5RDSG.js +0 -13
  47. package/chunks/chunk-7IGZP4TV.js +0 -30
  48. package/chunks/chunk-7QMAYGNV.js +0 -25
  49. package/chunks/chunk-7YW5HL6N.js +0 -168
  50. package/chunks/chunk-AFFLZUW5.js +0 -33
  51. package/chunks/chunk-AMS3FB24.js +0 -85
  52. package/chunks/chunk-APWPG7BU.js +0 -647
  53. package/chunks/chunk-AXMPRLPI.js +0 -35
  54. package/chunks/chunk-B2O7PFSF.js +0 -1108
  55. package/chunks/chunk-B6CSCX7J.js +0 -278
  56. package/chunks/chunk-B74HAAS6.js +0 -35
  57. package/chunks/chunk-BDHNULU7.js +0 -211
  58. package/chunks/chunk-BEJSITDG.js +0 -31
  59. package/chunks/chunk-BNB7LEMQ.js +0 -35
  60. package/chunks/chunk-CECF6UZV.js +0 -29
  61. package/chunks/chunk-DBAJ66BR.js +0 -18
  62. package/chunks/chunk-DGQLPQS2.js +0 -33
  63. package/chunks/chunk-DLLTITVO.js +0 -33
  64. package/chunks/chunk-DMDOCC72.js +0 -18
  65. package/chunks/chunk-DRH7Q4FL.js +0 -127
  66. package/chunks/chunk-DRNK3RLE.js +0 -64
  67. package/chunks/chunk-EAY65ZP6.js +0 -22
  68. package/chunks/chunk-EW46EXFB.js +0 -8
  69. package/chunks/chunk-F5YMP5WU.js +0 -18
  70. package/chunks/chunk-F7EVMWVG.js +0 -27
  71. package/chunks/chunk-F7XWUG2V.js +0 -18
  72. package/chunks/chunk-FFOATPL4.js +0 -211
  73. package/chunks/chunk-FSCSFZOD.js +0 -647
  74. package/chunks/chunk-FWHUASVA.js +0 -22
  75. package/chunks/chunk-G2NZXHW6.js +0 -21
  76. package/chunks/chunk-GDYVCEWA.js +0 -38
  77. package/chunks/chunk-GNBIAWSY.js +0 -278
  78. package/chunks/chunk-GQSPY2CV.js +0 -19
  79. package/chunks/chunk-HDALT7XM.js +0 -620
  80. package/chunks/chunk-HEJV6JIO.js +0 -133
  81. package/chunks/chunk-HENMQK5Y.js +0 -647
  82. package/chunks/chunk-HFEOHBYG.js +0 -647
  83. package/chunks/chunk-HGECIEKD.js +0 -35
  84. package/chunks/chunk-HUKHWFVL.js +0 -19
  85. package/chunks/chunk-IGD53YL5.js +0 -870
  86. package/chunks/chunk-ILEM73XB.js +0 -981
  87. package/chunks/chunk-IPB3U2PD.js +0 -278
  88. package/chunks/chunk-JAST3E5G.js +0 -647
  89. package/chunks/chunk-JY3QZ2YO.js +0 -211
  90. package/chunks/chunk-K3OQEJI3.js +0 -33
  91. package/chunks/chunk-KN4RZPDY.js +0 -211
  92. package/chunks/chunk-KXBKJ3GS.js +0 -642
  93. package/chunks/chunk-L7SL3MND.js +0 -35
  94. package/chunks/chunk-LCFDDWJR.js +0 -278
  95. package/chunks/chunk-LFUY5AWK.js +0 -1108
  96. package/chunks/chunk-LGECI2WL.js +0 -306
  97. package/chunks/chunk-LGUEB5L5.js +0 -211
  98. package/chunks/chunk-LI6QDZCA.js +0 -211
  99. package/chunks/chunk-LYMZZ4BB.js +0 -22
  100. package/chunks/chunk-MDEDNPU5.js +0 -38
  101. package/chunks/chunk-MQHKEGP4.js +0 -33
  102. package/chunks/chunk-NF5ACCXZ.js +0 -211
  103. package/chunks/chunk-NFUY7SLX.js +0 -211
  104. package/chunks/chunk-NK557MKV.js +0 -35
  105. package/chunks/chunk-NWMEWFTK.js +0 -33
  106. package/chunks/chunk-O5OTBN22.js +0 -35
  107. package/chunks/chunk-O7MDUYEF.js +0 -211
  108. package/chunks/chunk-OO5SJJDW.js +0 -35
  109. package/chunks/chunk-OVG5RGI3.js +0 -29
  110. package/chunks/chunk-OWRQ3QBI.js +0 -211
  111. package/chunks/chunk-PO3V3I57.js +0 -23
  112. package/chunks/chunk-PXB7U2DH.js +0 -31
  113. package/chunks/chunk-Q52UJOBC.js +0 -18
  114. package/chunks/chunk-QFEF4EET.js +0 -211
  115. package/chunks/chunk-QHSVCGLD.js +0 -280
  116. package/chunks/chunk-QO64L4KB.js +0 -97
  117. package/chunks/chunk-R6KCN6CK.js +0 -40
  118. package/chunks/chunk-RHYLRLKT.js +0 -211
  119. package/chunks/chunk-RJ5E22H5.js +0 -15
  120. package/chunks/chunk-RWUPHV54.js +0 -25
  121. package/chunks/chunk-S2757FI3.js +0 -36
  122. package/chunks/chunk-S42P73SC.js +0 -30
  123. package/chunks/chunk-S5XDYLJH.js +0 -18
  124. package/chunks/chunk-S7MJLTCR.js +0 -211
  125. package/chunks/chunk-SCM6NACT.js +0 -15
  126. package/chunks/chunk-SFV2NYY4.js +0 -211
  127. package/chunks/chunk-SH3Y2I5P.js +0 -18
  128. package/chunks/chunk-SMLKMOAX.js +0 -18
  129. package/chunks/chunk-SQZGZ3VT.js +0 -15
  130. package/chunks/chunk-T5CGXYST.js +0 -647
  131. package/chunks/chunk-TATRVKBS.js +0 -211
  132. package/chunks/chunk-TRB6DPKJ.js +0 -35
  133. package/chunks/chunk-UFKH5WD2.js +0 -21
  134. package/chunks/chunk-UODQZRY2.js +0 -620
  135. package/chunks/chunk-UOULDS6J.js +0 -33
  136. package/chunks/chunk-UPHVZROF.js +0 -35
  137. package/chunks/chunk-UUDXUSI5.js +0 -211
  138. package/chunks/chunk-UWAMSJ2X.js +0 -28
  139. package/chunks/chunk-UZUXLD2Q.js +0 -35
  140. package/chunks/chunk-VA6HXRX4.js +0 -211
  141. package/chunks/chunk-VRUJR6WR.js +0 -39
  142. package/chunks/chunk-W6YBEEZM.js +0 -211
  143. package/chunks/chunk-WECTUHS5.js +0 -127
  144. package/chunks/chunk-YE5HI3RK.js +0 -211
  145. package/chunks/chunk-YEBOL67V.js +0 -32
  146. package/chunks/chunk-YRGOY5YU.js +0 -1108
  147. package/chunks/chunk-YYE2MVZO.js +0 -211
  148. package/chunks/chunk-ZB73RE7P.js +0 -35
  149. package/chunks/chunk-ZONKYNKA.js +0 -28
  150. package/chunks/{chunk-GPWFYPER.js → chunk-5HWYTIYR.js} +3 -3
  151. package/chunks/{chunk-MUGIN5OW.js → chunk-MZSIKE3H.js} +3 -3
@@ -1,1108 +0,0 @@
1
- import {
2
- Serialize
3
- } from "./chunk-DRNK3RLE.js";
4
- import {
5
- Crossenv
6
- } from "./chunk-3LVR6KZH.js";
7
- import {
8
- Types
9
- } from "./chunk-5GI5G45R.js";
10
- import {
11
- replaceInElement
12
- } from "./chunk-GBMHGF7P.js";
13
- import {
14
- isInEnum
15
- } from "./chunk-E6MSDKON.js";
16
- import {
17
- isRecord
18
- } from "./chunk-YDIBNEGA.js";
19
- import {
20
- replaceAll
21
- } from "./chunk-MF56TTC5.js";
22
- import {
23
- isFalsy
24
- } from "./chunk-QXAJXTXV.js";
25
-
26
- // src/agnostic/html/hyper-json/cast/index.ts
27
- var getWindow = Crossenv.getWindow;
28
- var Cast;
29
- ((Cast2) => {
30
- Cast2.toNull = () => null;
31
- Cast2.toBoolean = (input) => !isFalsy(input);
32
- Cast2.toNumber = (input) => {
33
- const { Text } = getWindow();
34
- if (typeof input === "number") return input;
35
- if (typeof input === "string") return parseFloat(`${input}`);
36
- if (input instanceof Text) return parseFloat(`${input.textContent}`);
37
- return 0;
38
- };
39
- Cast2.toString = (input) => {
40
- if (typeof input === "string") return input;
41
- if (typeof input === "number" || typeof input === "boolean" || input === null) return `${input}`;
42
- const { Element, Text, NodeList } = getWindow();
43
- if (input instanceof Element) return input.outerHTML;
44
- if (input instanceof Text) return input.textContent ?? "";
45
- if (input instanceof NodeList) return Array.from(input).map((e) => {
46
- if (e instanceof Element) return e.outerHTML;
47
- return e.textContent;
48
- }).join("");
49
- return input.toString();
50
- };
51
- Cast2.toText = (input) => {
52
- const { Text, document } = getWindow();
53
- if (input instanceof Text) return input.cloneNode(true);
54
- return document.createTextNode((0, Cast2.toString)(input));
55
- };
56
- Cast2.toElement = (input) => {
57
- const { Element, Text, NodeList, document } = getWindow();
58
- if (input instanceof Element) return input.cloneNode(true);
59
- const elt = document.createElement("div");
60
- if (input instanceof Text) {
61
- elt.append(input.cloneNode(true));
62
- return elt;
63
- }
64
- if (input instanceof NodeList) {
65
- elt.append(...Array.from(input).map((e) => e.cloneNode(true)));
66
- return elt;
67
- }
68
- if (Array.isArray(input)) return elt;
69
- if (isRecord(input)) return elt;
70
- elt.append(`${input}`);
71
- return elt;
72
- };
73
- Cast2.toNodeList = (input) => {
74
- const { Element, Text, NodeList, document } = getWindow();
75
- const elt = document.createElement("div");
76
- if (input instanceof NodeList) {
77
- elt.append(...Array.from(input).map((i) => i.cloneNode(true)));
78
- return elt.childNodes;
79
- }
80
- if (input instanceof Element || input instanceof Text) {
81
- elt.append(input.cloneNode(true));
82
- return elt.childNodes;
83
- }
84
- if (Array.isArray(input)) return elt.childNodes;
85
- if (isRecord(input)) return elt.childNodes;
86
- elt.innerHTML = `${input}`;
87
- return elt.childNodes;
88
- };
89
- Cast2.toArray = (input) => {
90
- const { NodeList } = getWindow();
91
- if (Array.isArray(input)) return [...input];
92
- if (input instanceof NodeList) return Array.from(input);
93
- return [input];
94
- };
95
- Cast2.toRecord = (input) => {
96
- if (isRecord(input)) return { ...input };
97
- return {};
98
- };
99
- Cast2.toTransformer = (input) => {
100
- return Utils.toNamedTransformer("utils/Cast.toTransformer", [], () => ({
101
- action: "REPLACE",
102
- value: input
103
- }));
104
- };
105
- })(Cast || (Cast = {}));
106
-
107
- // src/agnostic/html/hyper-json/transformers/classList/index.ts
108
- var classList = (callerTagName, ...args) => {
109
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
110
- const { Element } = Crossenv.getWindow();
111
- if (!(currentValue instanceof Element)) return Utils.makeTransformerError("Current value must be an Element");
112
- const [actionArg, classNameArg] = args;
113
- if (actionArg === void 0 || classNameArg === void 0) return Utils.makeTransformerError(`Expecting 2 arguments: (action: 'add' | 'remove' | 'toggle', classList: string)`);
114
- const action = Cast.toString(actionArg);
115
- const className = Cast.toString(actionArg).trim();
116
- if (action === "add" /* ADD */) {
117
- const outputValue = currentValue.cloneNode(true);
118
- outputValue.classList.add(className);
119
- return { action: "REPLACE", value: outputValue };
120
- } else if (action === "remove" /* REMOVE */) {
121
- const outputValue = currentValue.cloneNode(true);
122
- outputValue.classList.remove(className);
123
- return { action: "REPLACE", value: outputValue };
124
- } else if (action === "toggle" /* TOGGLE */) {
125
- const outputValue = currentValue.cloneNode(true);
126
- outputValue.classList.toggle(className);
127
- return { action: "REPLACE", value: outputValue };
128
- }
129
- return Utils.makeTransformerError(`Unknown action: ${action}`);
130
- });
131
- };
132
-
133
- // src/agnostic/html/hyper-json/transformers/join/index.ts
134
- var join = (callerTagName, ...args) => {
135
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
136
- const joiner = Cast.toString(args.at(0) ?? ",");
137
- if (!Array.isArray(currentValue)) return Utils.makeTransformerError({
138
- message: `Current value must be an array`,
139
- input: currentValue
140
- });
141
- return {
142
- action: "REPLACE",
143
- value: currentValue.join(joiner)
144
- };
145
- });
146
- };
147
-
148
- // src/agnostic/html/hyper-json/transformers/length/index.ts
149
- var length = (callerTagName, ...args) => {
150
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
151
- const { Element, NodeList, Text } = Crossenv.getWindow();
152
- if (typeof currentValue === "string" || Array.isArray(currentValue) || currentValue instanceof NodeList) return {
153
- action: "REPLACE",
154
- value: currentValue.length
155
- };
156
- if (currentValue instanceof Element) return {
157
- action: "REPLACE",
158
- value: Array.from(currentValue.childNodes).length
159
- };
160
- if (currentValue instanceof Text) return {
161
- action: "REPLACE",
162
- value: currentValue.data.length
163
- };
164
- return Utils.makeTransformerError(`Current value must be of type string, Array, NodeList, Element or Text`);
165
- });
166
- };
167
-
168
- // src/agnostic/html/hyper-json/transformers/print/index.ts
169
- var print = (callerTagName, ...args) => {
170
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
171
- if (args.length === 0) console.log(currentValue);
172
- else console.log(...args);
173
- return { action: null };
174
- });
175
- };
176
-
177
- // src/agnostic/html/hyper-json/transformers/push/index.ts
178
- var push = (callerTagName, ...args) => {
179
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
180
- if (!Array.isArray(currentValue)) return Utils.makeTransformerError({
181
- message: "Current value must be an array",
182
- input: currentValue
183
- });
184
- const outputValue = [...currentValue, ...args];
185
- return {
186
- action: "REPLACE",
187
- value: outputValue
188
- };
189
- });
190
- };
191
-
192
- // src/agnostic/html/hyper-json/transformers/querySelector/index.ts
193
- var querySelector = (callerTagName, ...args) => {
194
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
195
- const { document, Element, NodeList } = Crossenv.getWindow();
196
- const [selectorRaw] = args;
197
- if (selectorRaw === void 0) return Utils.makeTransformerError("Selector argument expected.");
198
- const selector = Cast.toString(selectorRaw);
199
- let toQuery;
200
- if (currentValue instanceof Element) {
201
- toQuery = currentValue.cloneNode(true);
202
- } else if (currentValue instanceof NodeList) {
203
- toQuery = document.createElement("div");
204
- toQuery.append(...Array.from(currentValue).map((e) => e.cloneNode(true)));
205
- } else return Utils.makeTransformerError("Current value must be an Element or a NodeList");
206
- const found = toQuery.querySelectorAll(selector);
207
- return {
208
- action: "REPLACE",
209
- value: found
210
- };
211
- });
212
- };
213
-
214
- // src/agnostic/html/hyper-json/transformers/ref/index.ts
215
- var ref = (callerTagName, ...args) => {
216
- return Utils.toNamedTransformer(callerTagName, args, (_, callerTree) => {
217
- const [refPathStrRaw] = args;
218
- const { Text } = Crossenv.getWindow();
219
- if (typeof refPathStrRaw !== "string" && !(refPathStrRaw instanceof Text)) return Utils.makeTransformerError({
220
- message: "PathString must be of type string or Text",
221
- input: refPathStrRaw !== void 0 ? refPathStrRaw : "<undefined>"
222
- });
223
- const refPathStr = Cast.toString(refPathStrRaw);
224
- const refPath = Utils.pathStringToPath(Cast.toString(refPathStrRaw));
225
- const foundTree = callerTree.resolve(refPath);
226
- if (foundTree === void 0) return Utils.makeTransformerError({
227
- message: "Referenced value has not been found",
228
- input: refPathStr
229
- });
230
- const evaluated = foundTree.evaluate();
231
- return {
232
- action: "MERGE",
233
- value: evaluated
234
- };
235
- });
236
- };
237
-
238
- // src/agnostic/html/hyper-json/transformers/replace/index.ts
239
- var replace = (callerTagName, ...args) => {
240
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
241
- const { Text, NodeList, Element } = Crossenv.getWindow();
242
- if (typeof currentValue !== "string" && !(currentValue instanceof Text) && !(currentValue instanceof Element) && !(currentValue instanceof NodeList)) return Utils.makeTransformerError("Current value must be string, Text, Element or NodeList");
243
- if (args.some((arg) => typeof arg !== "string" && !(arg instanceof Text) && !(arg instanceof Element) && !(arg instanceof NodeList))) return Utils.makeTransformerError("Arguments must be of type string, Text, Element or NodeList");
244
- const [first, second] = args;
245
- if (first === void 0 || second === void 0) return Utils.makeTransformerError(`Expecting at least 2 arguments. Found only ${args.length}`);
246
- const replacer = args.at(-1);
247
- const strReplacer = Cast.toString(replacer);
248
- const toReplace = args.slice(0, -1);
249
- const strToReplace = toReplace.map(Cast.toString);
250
- const strInput = Cast.toString(currentValue);
251
- const strOutput = strToReplace.reduce((str, torpl) => replaceAll(str, torpl, strReplacer), strInput);
252
- if (typeof currentValue === "string") return { action: "REPLACE", value: strOutput };
253
- if (currentValue instanceof Text) return { action: "REPLACE", value: Cast.toText(strOutput) };
254
- if (currentValue instanceof Element) return { action: "REPLACE", value: Cast.toElement(strOutput) };
255
- if (currentValue instanceof NodeList) return { action: "REPLACE", value: Cast.toNodeList(strOutput) };
256
- return { action: null };
257
- });
258
- };
259
-
260
- // src/agnostic/html/hyper-json/transformers/split/index.ts
261
- var split = (callerTagName, ...args) => {
262
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
263
- const { Text } = Crossenv.getWindow();
264
- const [splitter] = args;
265
- if (typeof currentValue !== "string" && !(currentValue instanceof Text)) return Utils.makeTransformerError({
266
- message: "Current value must be string or Text",
267
- input: currentValue
268
- });
269
- if (typeof splitter !== "string") return Utils.makeTransformerError({
270
- message: "Splitter argument must be string",
271
- input: splitter !== void 0 ? splitter : "<undefined>"
272
- });
273
- const strCurrentValue = Cast.toString(currentValue);
274
- const splitted = strCurrentValue.split(splitter).map((e) => typeof currentValue === "string" ? Cast.toString(e) : Cast.toText(e));
275
- return {
276
- action: "REPLACE",
277
- value: splitted
278
- };
279
- });
280
- };
281
-
282
- // src/agnostic/html/hyper-json/transformers/toArray/index.ts
283
- var toArray = (callerTagName, ...args) => {
284
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
285
- action: "REPLACE",
286
- value: Cast.toArray(currentValue)
287
- }));
288
- };
289
-
290
- // src/agnostic/html/hyper-json/transformers/toBoolean/index.ts
291
- var toBoolean = (callerTagName, ...args) => {
292
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
293
- action: "REPLACE",
294
- value: Cast.toBoolean(currentValue)
295
- }));
296
- };
297
-
298
- // src/agnostic/html/hyper-json/transformers/toElement/index.ts
299
- var toElement = (callerTagName, ...args) => {
300
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
301
- action: "REPLACE",
302
- value: Cast.toElement(currentValue)
303
- }));
304
- };
305
-
306
- // src/agnostic/html/hyper-json/transformers/toNodeList/index.ts
307
- var toNodeList = (callerTagName, ...args) => {
308
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
309
- action: "REPLACE",
310
- value: Cast.toNodeList(currentValue)
311
- }));
312
- };
313
-
314
- // src/agnostic/html/hyper-json/transformers/toNull/index.ts
315
- var toNull = (callerTagName, ...args) => {
316
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
317
- action: "REPLACE",
318
- value: null
319
- }));
320
- };
321
-
322
- // src/agnostic/html/hyper-json/transformers/toNumber/index.ts
323
- var toNumber = (callerTagName, ...args) => {
324
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
325
- action: "REPLACE",
326
- value: Cast.toNumber(currentValue)
327
- }));
328
- };
329
-
330
- // src/agnostic/html/hyper-json/transformers/toRecord/index.ts
331
- var toRecord = (callerTagName, ...args) => {
332
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
333
- action: "REPLACE",
334
- value: Cast.toRecord(currentValue)
335
- }));
336
- };
337
-
338
- // src/agnostic/html/hyper-json/transformers/toRef/index.ts
339
- var toRef = (callerTagName, ...args) => {
340
- return Utils.toNamedTransformer(callerTagName, args, (currentValue, callerTree) => {
341
- const { Text } = Crossenv.getWindow();
342
- if (typeof currentValue !== "string" && !(currentValue instanceof Text)) return Utils.makeTransformerError({
343
- message: "Current value must be string or Text",
344
- input: currentValue
345
- });
346
- const refPathStr = Cast.toString(currentValue);
347
- const refPath = Utils.pathStringToPath(refPathStr);
348
- const foundTree = callerTree.resolve(refPath);
349
- if (foundTree === void 0) return Utils.makeTransformerError({
350
- message: "Referenced value has not been found",
351
- input: refPathStr
352
- });
353
- const evaluated = foundTree.evaluate();
354
- return {
355
- action: "REPLACE",
356
- value: evaluated
357
- };
358
- });
359
- };
360
-
361
- // src/agnostic/html/hyper-json/transformers/toString/index.ts
362
- var toString = (callerTagName, ...args) => {
363
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
364
- action: "REPLACE",
365
- value: Cast.toString(currentValue)
366
- }));
367
- };
368
-
369
- // src/agnostic/html/hyper-json/transformers/toText/index.ts
370
- var toText = (callerTagName, ...args) => {
371
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
372
- action: "REPLACE",
373
- value: Cast.toText(currentValue)
374
- }));
375
- };
376
-
377
- // src/agnostic/html/hyper-json/transformers/toTransformer/index.ts
378
- var toTransformer = (callerTagName, ...args) => {
379
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => ({
380
- action: "REPLACE",
381
- value: Cast.toTransformer(currentValue)
382
- }));
383
- };
384
-
385
- // src/agnostic/html/hyper-json/transformers/transformSelected/index.ts
386
- var transformSelected = (callerTagName, ...args) => {
387
- return Utils.toNamedTransformer(callerTagName, args, (currentValue, callerTree) => {
388
- const { NodeList, Element, Text } = Crossenv.getWindow();
389
- if (!(currentValue instanceof Element) && !(currentValue instanceof NodeList)) return Utils.makeTransformerError({
390
- message: "Current value must be Element or NodeList",
391
- input: currentValue
392
- });
393
- const [selector, ...transformerDescriptors] = args;
394
- if (typeof selector !== "string" && !(selector instanceof Text)) return Utils.makeTransformerError({
395
- message: "Selector argument must be string or text",
396
- input: selector !== void 0 ? selector : "<undefined>"
397
- });
398
- if (transformerDescriptors.length === 0) return Utils.makeTransformerError("No transformer descriptor provided");
399
- let transformers = [];
400
- for (const descriptor of transformerDescriptors) {
401
- const errorResponse = Utils.makeTransformerError({
402
- message: "Transformer descriptors must be of shape { name: string, arguments: Value[] }",
403
- input: descriptor
404
- });
405
- if (!isRecord(descriptor)) return errorResponse;
406
- if (!("name" in descriptor) || typeof descriptor.name !== "string") return errorResponse;
407
- if (!("arguments" in descriptor) || !Array.isArray(descriptor.arguments)) return errorResponse;
408
- const { name, arguments: args2 } = descriptor;
409
- const generator = callerTree.getGenerator(name);
410
- if (generator === void 0) return Utils.makeTransformerError(`No transformer found under the name ${name}`);
411
- transformers.push(generator(name, ...args2));
412
- }
413
- const elementInput = Cast.toElement(currentValue);
414
- const strSelector = Cast.toString(selector);
415
- const selected = Array.from(elementInput.querySelectorAll(strSelector));
416
- const transformationErrors = [];
417
- const transformed = selected.map((input) => {
418
- const output = transformers.reduce((reduced, transformer, transformerPos) => {
419
- const result = transformer(reduced, callerTree);
420
- if (result.action === "REPLACE") return result.value;
421
- else if (result.action === "MERGE") {
422
- const merged = Tree.mergeValues(
423
- reduced,
424
- result.value,
425
- transformerPos,
426
- callerTree
427
- );
428
- return merged;
429
- }
430
- if (result.action === "ERROR") transformationErrors.push({
431
- message: result.value,
432
- transformerName: transformer.transformerName,
433
- transformerPos,
434
- transforming: reduced
435
- });
436
- return reduced;
437
- }, input);
438
- return { input, output };
439
- });
440
- if (transformationErrors.length !== 0) return Utils.makeTransformerError({
441
- message: "Some nested transformers returned an error",
442
- errors: transformationErrors
443
- });
444
- const nonElementTransformResult = transformed.find((item) => !(item.output instanceof Element));
445
- if (nonElementTransformResult !== void 0) return Utils.makeTransformerError({
446
- message: "Some transformations resulted in a non Element output",
447
- inputElement: nonElementTransformResult.input,
448
- outputValue: nonElementTransformResult.output
449
- });
450
- const transformMap = new Map(transformed.map((e) => [e.input, e.output]));
451
- const elementOutput = replaceInElement(elementInput, transformMap);
452
- return {
453
- action: "REPLACE",
454
- value: elementOutput
455
- };
456
- });
457
- };
458
-
459
- // src/agnostic/html/hyper-json/transformers/trim/index.ts
460
- var trim = (callerTagName, ...args) => {
461
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
462
- const { Text } = Crossenv.getWindow();
463
- if (typeof currentValue !== "string" && !(currentValue instanceof Text)) return Utils.makeTransformerError({
464
- message: "Current value must be of type string or Text",
465
- input: currentValue
466
- });
467
- const inputStr = Cast.toString(currentValue);
468
- const trimmed = inputStr.trim();
469
- return {
470
- action: "REPLACE",
471
- value: currentValue instanceof Text ? Cast.toText(trimmed) : trimmed
472
- };
473
- });
474
- };
475
-
476
- // src/agnostic/html/hyper-json/transformers/index.ts
477
- var Transformers;
478
- ((Transformers2) => {
479
- Transformers2.defaultGeneratorsMap = /* @__PURE__ */ new Map([
480
- ["append".toLowerCase(), append],
481
- ["classList".toLowerCase(), classList],
482
- ["join".toLowerCase(), join],
483
- ["length".toLowerCase(), length],
484
- ["print".toLowerCase(), print],
485
- ["push".toLowerCase(), push],
486
- ["querySelector".toLowerCase(), querySelector],
487
- ["ref".toLowerCase(), ref],
488
- ["replace".toLowerCase(), replace],
489
- ["split".toLowerCase(), split],
490
- ["toArray".toLowerCase(), toArray],
491
- ["toBoolean".toLowerCase(), toBoolean],
492
- ["toElement".toLowerCase(), toElement],
493
- ["toNodeList".toLowerCase(), toNodeList],
494
- ["toNull".toLowerCase(), toNull],
495
- ["toNumber".toLowerCase(), toNumber],
496
- ["toRecord".toLowerCase(), toRecord],
497
- ["toRef".toLowerCase(), toRef],
498
- ["toString".toLowerCase(), toString],
499
- ["toText".toLowerCase(), toText],
500
- ["toTransformer".toLowerCase(), toTransformer],
501
- ["transformSelected".toLowerCase(), transformSelected],
502
- ["trim".toLowerCase(), trim]
503
- ]);
504
- })(Transformers || (Transformers = {}));
505
-
506
- // src/agnostic/html/hyper-json/tree/index.ts
507
- var getWindow2 = Crossenv.getWindow;
508
- var isElement = (node) => node.nodeType === getWindow2().Node.ELEMENT_NODE;
509
- var isText = (node) => node.nodeType === getWindow2().Node.TEXT_NODE;
510
- var Tree;
511
- ((_Tree) => {
512
- _Tree.defaultKeyAttribute = "_key";
513
- _Tree.defaultActionAttribute = "_action";
514
- _Tree.defaultRootKey = "_ROOT_";
515
- function mergeValues(currentValue, incomingValue, mergeKey, initiatorTree) {
516
- const { Element, Text, NodeList, document } = getWindow2();
517
- if (typeof incomingValue === "function") {
518
- const evaluated = incomingValue(currentValue, initiatorTree);
519
- if (evaluated.action === null) return currentValue;
520
- if (evaluated.action === "REPLACE") return evaluated.value;
521
- if (evaluated.action === "ERROR") {
522
- const errorMessage = `Tranformer error:
523
- from: ${incomingValue.transformerName}
524
- at: ${initiatorTree.pathString.slice(1)}/${mergeKey}
525
- message:`;
526
- console.warn(errorMessage, evaluated.value);
527
- return currentValue;
528
- }
529
- return mergeValues(
530
- currentValue,
531
- evaluated.value,
532
- mergeKey,
533
- initiatorTree
534
- );
535
- }
536
- if (Array.isArray(currentValue)) {
537
- if (typeof mergeKey === "string") return currentValue;
538
- return [...currentValue, incomingValue];
539
- }
540
- if (currentValue === null || typeof currentValue === "boolean" || typeof currentValue === "number" || typeof currentValue === "string" || typeof currentValue === "function" || currentValue instanceof Text || currentValue instanceof Element) {
541
- if (incomingValue === null || typeof incomingValue === "boolean" || typeof incomingValue === "number" || typeof incomingValue === "string" || Array.isArray(incomingValue) || isRecord(incomingValue)) {
542
- return incomingValue;
543
- }
544
- const frag = document.createDocumentFragment();
545
- if (currentValue instanceof Element || currentValue instanceof Text) frag.append(currentValue.cloneNode(true));
546
- else frag.append(`${currentValue}`);
547
- if (incomingValue instanceof Element || incomingValue instanceof Text) {
548
- frag.append(incomingValue.cloneNode(true));
549
- return frag.childNodes;
550
- }
551
- frag.append(...Array.from(incomingValue).map((e) => e.cloneNode(true)));
552
- return frag.childNodes;
553
- }
554
- if (currentValue instanceof NodeList) {
555
- if (incomingValue instanceof Element || incomingValue instanceof Text) {
556
- const frag = document.createDocumentFragment();
557
- frag.append(...Array.from(currentValue).map((e) => e.cloneNode(true)), incomingValue);
558
- return frag.childNodes;
559
- }
560
- if (incomingValue instanceof NodeList) {
561
- const frag = document.createDocumentFragment();
562
- frag.append(
563
- ...Array.from(currentValue).map((e) => e.cloneNode(true)),
564
- ...Array.from(incomingValue).map((e) => e.cloneNode(true))
565
- );
566
- return frag.childNodes;
567
- }
568
- if (incomingValue === null || typeof incomingValue === "string" || typeof incomingValue === "number" || typeof incomingValue === "boolean") {
569
- const frag = document.createDocumentFragment();
570
- frag.append(...Array.from(currentValue).map((e) => e.cloneNode(true)), `${incomingValue}`);
571
- return frag.childNodes;
572
- }
573
- if (Array.isArray(incomingValue)) return [
574
- ...Array.from(currentValue),
575
- ...incomingValue
576
- ];
577
- return { ...incomingValue };
578
- }
579
- if (typeof mergeKey === "number") return currentValue;
580
- return {
581
- ...currentValue,
582
- [mergeKey]: incomingValue
583
- };
584
- }
585
- _Tree.mergeValues = mergeValues;
586
- function mergeNodes(nodes, options = {}) {
587
- const [first, ...rest] = nodes;
588
- const actionAttribute = options?.actionAttribute ?? _Tree.defaultActionAttribute;
589
- const keyAttribute = options?.keyAttribute ?? _Tree.defaultKeyAttribute;
590
- if (first === void 0) throw new Error("Expecting at least one node");
591
- const { Text, Element, document } = getWindow2();
592
- function isTextOrElement(node) {
593
- return node instanceof Text || node instanceof Element;
594
- }
595
- let CURRENT = first;
596
- rest.forEach((node) => {
597
- if (node instanceof Text) {
598
- CURRENT.remove();
599
- CURRENT = node;
600
- return;
601
- }
602
- const actionRaw = node.getAttribute(actionAttribute);
603
- const action = isInEnum(Types.ReductionAction, actionRaw) ? actionRaw : Types.ReductionAction.REPLACE;
604
- if (action === Types.ReductionAction.REPLACE) {
605
- CURRENT.remove();
606
- CURRENT = node;
607
- return;
608
- }
609
- if (CURRENT instanceof Text) {
610
- if (node instanceof Text) {
611
- const appended = action === Types.ReductionAction.APPEND ? document.createTextNode(`${CURRENT.textContent}${node.textContent}`) : document.createTextNode(`${node.textContent}${CURRENT.textContent}`);
612
- CURRENT.remove();
613
- node.remove();
614
- CURRENT = appended;
615
- return;
616
- }
617
- CURRENT.remove();
618
- CURRENT = node;
619
- return;
620
- }
621
- if (node instanceof Text) {
622
- CURRENT.remove();
623
- CURRENT = node;
624
- return;
625
- }
626
- const currentAttributes = Array.from(CURRENT.attributes);
627
- const nodeAttributes = Array.from(node.attributes);
628
- const nodeChildren = Array.from(node.childNodes).filter(isTextOrElement);
629
- const outputAttributes = action === Types.ReductionAction.APPEND ? [...currentAttributes, ...nodeAttributes] : [...nodeAttributes, ...currentAttributes];
630
- if (action === Types.ReductionAction.APPEND) CURRENT.append(...nodeChildren);
631
- else CURRENT.prepend(...nodeChildren);
632
- outputAttributes.forEach((attr) => CURRENT.setAttribute(attr.name, attr.value));
633
- node.remove();
634
- return;
635
- });
636
- const wrapperChildren = Array.from(CURRENT.childNodes).filter(isTextOrElement);
637
- const subpaths = /* @__PURE__ */ new Map();
638
- let positionnedChildrenCount = 0;
639
- wrapperChildren.forEach((child) => {
640
- if (child instanceof Text) {
641
- const childKey = positionnedChildrenCount;
642
- const found = subpaths.get(childKey) ?? [];
643
- found.push(child);
644
- subpaths.set(childKey, found);
645
- positionnedChildrenCount += 1;
646
- } else {
647
- const rawChildKey = child.getAttribute(keyAttribute);
648
- const childKey = rawChildKey ?? positionnedChildrenCount;
649
- const found = subpaths.get(childKey) ?? [];
650
- found.push(child);
651
- subpaths.set(childKey, found);
652
- if (rawChildKey === null) {
653
- positionnedChildrenCount += 1;
654
- }
655
- }
656
- });
657
- subpaths.forEach((nodes2, subpath) => {
658
- if (nodes2.length < 2) return;
659
- return mergeNodes(nodes2, {
660
- actionAttribute,
661
- keyAttribute
662
- });
663
- });
664
- return CURRENT;
665
- }
666
- _Tree.mergeNodes = mergeNodes;
667
- function mergeRootNodes(...args) {
668
- const [nodes, options] = args;
669
- const actionAttribute = options?.actionAttribute ?? _Tree.defaultActionAttribute;
670
- const keyAttribute = options?.keyAttribute ?? _Tree.defaultKeyAttribute;
671
- const rootKey = options?.rootKey ?? _Tree.defaultRootKey;
672
- const { Element } = getWindow2();
673
- const elements = nodes.filter((e) => e instanceof Element);
674
- elements.forEach((element) => {
675
- element.setAttribute(keyAttribute, rootKey);
676
- const elementAction = element.getAttribute(actionAttribute) ?? Types.ReductionAction.APPEND;
677
- element.setAttribute(actionAttribute, elementAction);
678
- });
679
- const merged = mergeNodes(elements, options);
680
- return merged;
681
- }
682
- _Tree.mergeRootNodes = mergeRootNodes;
683
- function from(nodes, options) {
684
- const merged = mergeRootNodes(nodes, options);
685
- return new Tree2(merged, options);
686
- }
687
- _Tree.from = from;
688
- class Tree2 {
689
- node;
690
- name;
691
- parent;
692
- root;
693
- isRoot;
694
- path;
695
- pathString;
696
- tagName;
697
- attributes;
698
- subtrees = /* @__PURE__ */ new Map();
699
- children;
700
- type;
701
- generators;
702
- keyAttribute;
703
- actionAttribute;
704
- static fillOptions(options) {
705
- const defaultOptions = {
706
- generatorsMap: Transformers.defaultGeneratorsMap,
707
- keyAttribute: _Tree.defaultKeyAttribute,
708
- actionAttribute: _Tree.defaultActionAttribute
709
- };
710
- return {
711
- ...defaultOptions,
712
- ...options
713
- };
714
- }
715
- constructor(node, parentOrOptions, pathFromParent, options) {
716
- this.resolve = this.resolve.bind(this);
717
- this.getGenerator = this.getGenerator.bind(this);
718
- this.initValue = this.initValue.bind(this);
719
- this.getInnerValue = this.getInnerValue.bind(this);
720
- this.wrapInnerValue = this.wrapInnerValue.bind(this);
721
- this.setCache = this.setCache.bind(this);
722
- this.getPerfCounters = this.getPerfCounters.bind(this);
723
- this.printPerfCounters = this.printPerfCounters.bind(this);
724
- this.pushToEvalCallStack = this.pushToEvalCallStack.bind(this);
725
- this.flushEvalCallStack = this.flushEvalCallStack.bind(this);
726
- this.evaluate = this.evaluate.bind(this);
727
- const { Element, Text, document } = getWindow2();
728
- const _node = node;
729
- const _parent = parentOrOptions instanceof Tree2 ? parentOrOptions : void 0;
730
- this.node = _node;
731
- this.parent = _parent ?? null;
732
- this.root = this.parent === null ? this : this.parent.root;
733
- this.isRoot = this.root === this;
734
- let _options;
735
- if (options !== void 0) {
736
- _options = Tree2.fillOptions(options);
737
- } else if (parentOrOptions instanceof Tree2 || parentOrOptions === void 0) {
738
- _options = Tree2.fillOptions({});
739
- } else {
740
- _options = Tree2.fillOptions(parentOrOptions);
741
- }
742
- this.keyAttribute = _options.keyAttribute;
743
- this.actionAttribute = _options.actionAttribute;
744
- this.generators = this.isRoot ? _options.generatorsMap : this.root.generators;
745
- this.name = this.node instanceof Element ? this.node.getAttribute(this.keyAttribute) : null;
746
- const _pathFromParent = pathFromParent !== void 0 ? pathFromParent : void 0;
747
- if (this.parent === null) this.path = [];
748
- else if (_pathFromParent === void 0) {
749
- this.path = [...this.parent.path, 0];
750
- } else {
751
- this.path = [...this.parent.path, _pathFromParent];
752
- }
753
- this.pathString = `/${this.path.join("/")}`;
754
- this.tagName = node instanceof Element ? node.tagName.toLowerCase() : null;
755
- this.attributes = isElement(node) ? Array.from(node.attributes) : null;
756
- if (this.tagName === null) {
757
- this.type = "text";
758
- } else if (this.tagName === Types.TyperTagName.ANY) {
759
- this.type = "any";
760
- } else if (this.tagName === Types.TyperTagName.NULL) {
761
- this.type = "null";
762
- } else if (this.tagName === Types.TyperTagName.BOOLEAN) {
763
- this.type = "boolean";
764
- } else if (this.tagName === Types.TyperTagName.NUMBER) {
765
- this.type = "number";
766
- } else if (this.tagName === Types.TyperTagName.STRING) {
767
- this.type = "string";
768
- } else if (this.tagName === Types.TyperTagName.TEXT) {
769
- this.type = "text";
770
- } else if (this.tagName === Types.TyperTagName.NODELIST) {
771
- this.type = "nodelist";
772
- } else if (this.tagName === Types.TyperTagName.ARRAY) {
773
- this.type = "array";
774
- } else if (this.tagName === Types.TyperTagName.RECORD) {
775
- this.type = "record";
776
- } else if (this.tagName === Types.TyperTagName.LITERAL) {
777
- this.type = "literal";
778
- } else if (this.generators.get(this.tagName) !== void 0) {
779
- this.type = "transformer";
780
- } else {
781
- this.type = "element";
782
- }
783
- const { childNodes } = node;
784
- let positionnedChildrenCount = 0;
785
- const mutableSubtrees = /* @__PURE__ */ new Map();
786
- Array.from(childNodes).map((e) => {
787
- if (!(e instanceof Text)) return e;
788
- const trimmedTextNode = document.createTextNode(e.textContent?.trim() ?? "");
789
- return trimmedTextNode;
790
- }).filter((node2, _, nodes) => {
791
- if (isElement(node2)) return true;
792
- if (isText(node2)) {
793
- const hasContent = (node2.textContent ?? "").trim() !== "";
794
- if (hasContent) return true;
795
- if (nodes.some((n) => n instanceof Element)) return false;
796
- return true;
797
- }
798
- return false;
799
- }).forEach((childNode) => {
800
- if (childNode instanceof Text) {
801
- childNode.textContent = childNode.textContent?.trim() ?? "";
802
- mutableSubtrees.set(
803
- positionnedChildrenCount,
804
- new Tree2(childNode, this, positionnedChildrenCount, _options)
805
- );
806
- positionnedChildrenCount += 1;
807
- } else {
808
- const propertyName = childNode.getAttribute(this.keyAttribute);
809
- if (propertyName === null) {
810
- mutableSubtrees.set(
811
- positionnedChildrenCount,
812
- new Tree2(childNode, this, positionnedChildrenCount, _options)
813
- );
814
- positionnedChildrenCount += 1;
815
- } else {
816
- mutableSubtrees.set(
817
- propertyName,
818
- new Tree2(childNode, this, propertyName, _options)
819
- );
820
- }
821
- }
822
- });
823
- this.subtrees = mutableSubtrees;
824
- this.children = Array.from(this.subtrees.values());
825
- }
826
- resolve = function(path) {
827
- let currentTree = this.root;
828
- for (const chunk of path) {
829
- const { subtrees } = currentTree;
830
- const foundSubtree = subtrees.get(chunk);
831
- if (foundSubtree === void 0) return void 0;
832
- currentTree = foundSubtree;
833
- }
834
- return currentTree;
835
- };
836
- getGenerator(name) {
837
- return this.generators.get(name);
838
- }
839
- initValue() {
840
- const { type } = this;
841
- let initialValue;
842
- const { document } = getWindow2();
843
- if (type === "any") {
844
- initialValue = "";
845
- } else if (type === "null") {
846
- initialValue = null;
847
- } else if (type === "boolean") {
848
- initialValue = false;
849
- } else if (type === "number") {
850
- initialValue = 0;
851
- } else if (type === "string") {
852
- initialValue = "";
853
- } else if (type === "text") {
854
- initialValue = this.node.textContent;
855
- } else if (type === "element") {
856
- initialValue = document.createDocumentFragment().childNodes;
857
- } else if (type === "nodelist") {
858
- initialValue = document.createDocumentFragment().childNodes;
859
- } else if (type === "array") {
860
- initialValue = [];
861
- } else if (type === "record") {
862
- initialValue = {};
863
- } else if (type === "transformer") {
864
- initialValue = [];
865
- } else if (type === "literal") {
866
- initialValue = {};
867
- } else {
868
- initialValue = null;
869
- }
870
- return initialValue;
871
- }
872
- getInnerValue(initialValue) {
873
- const { subtrees } = this;
874
- const innerValue = Array.from(subtrees.entries()).reduce((currentValue, [subpath, subtree]) => mergeValues(
875
- currentValue,
876
- subtree.evaluate(),
877
- subpath,
878
- this
879
- ), initialValue);
880
- return innerValue;
881
- }
882
- wrapInnerValue(innerValue) {
883
- const { type } = this;
884
- const { document } = getWindow2();
885
- if (type === "transformer") {
886
- const transformerName = this.tagName;
887
- if (transformerName === null) return innerValue;
888
- const generator = this.getGenerator(transformerName);
889
- if (generator === void 0) return innerValue;
890
- const transformer = Array.isArray(innerValue) ? generator(transformerName, ...innerValue) : generator(transformerName, innerValue);
891
- return transformer;
892
- }
893
- if (type === "any") return innerValue;
894
- if (type === "null") return null;
895
- if (type === "boolean") return Cast.toBoolean(innerValue);
896
- if (type === "number") return Cast.toNumber(innerValue);
897
- if (type === "string") return Cast.toString(innerValue);
898
- if (type === "array") return Cast.toArray(innerValue);
899
- if (type === "record") return Cast.toRecord(innerValue);
900
- if (type === "text") return Cast.toText(innerValue);
901
- if (type === "element") {
902
- const returnedElt = this.node.cloneNode();
903
- const innerNodelist = Cast.toNodeList(innerValue);
904
- returnedElt.append(...Array.from(innerNodelist));
905
- return returnedElt;
906
- }
907
- if (type === "nodelist") return Cast.toNodeList(innerValue);
908
- if (type === "literal") {
909
- const val = Utils.toHyperJson(innerValue, this.keyAttribute);
910
- const valChildren = val.childNodes;
911
- const literal = document.createElement("literal");
912
- literal.append(...Array.from(valChildren));
913
- const thisElement = this.node;
914
- Array.from(thisElement.attributes).forEach((attr) => literal.setAttribute(attr.name, attr.value));
915
- return literal;
916
- }
917
- return null;
918
- }
919
- cache = void 0;
920
- setCache(value) {
921
- this.cache = Serialize.serialize(value);
922
- }
923
- perfCounters = {
924
- computed: 0,
925
- computeTime: 0,
926
- computeTimeAvg: 0,
927
- cached: 0,
928
- cacheTime: 0,
929
- cacheTimeAvg: 0,
930
- totalTime: 0
931
- };
932
- getPerfCounters() {
933
- const { subtrees } = this;
934
- const subCounters = [];
935
- subCounters.push([this.pathString, this.perfCounters]);
936
- subtrees.forEach((subtree) => subCounters.push(...subtree.getPerfCounters()));
937
- return subCounters;
938
- }
939
- printPerfCounters() {
940
- const perfCounters = this.getPerfCounters().sort((a, b) => b[1].totalTime - a[1].totalTime).map((e) => ({
941
- path: e[0],
942
- totalMs: e[1].totalTime,
943
- computeMs: e[1].computeTime,
944
- cacheMs: e[1].cacheTime,
945
- ops: `${e[1].computed}/${e[1].cached}`
946
- }));
947
- console.table(perfCounters);
948
- }
949
- callstack = [];
950
- pushToEvalCallStack(path) {
951
- this.callstack.push(path);
952
- this.parent?.pushToEvalCallStack(path);
953
- }
954
- flushEvalCallStack() {
955
- this.callstack.length = 0;
956
- }
957
- evaluate() {
958
- const start = Date.now();
959
- const circularPatternDetected = this.callstack.some((p) => p.startsWith(this.pathString));
960
- if (circularPatternDetected) throw new Error(`Circular reference pattern detected @ ${this.pathString}`);
961
- this.pushToEvalCallStack(this.pathString);
962
- const { perfCounters, cache } = this;
963
- if (cache !== void 0) {
964
- const deserialized = Serialize.deserialize(cache);
965
- const end2 = Date.now();
966
- const time2 = end2 - start;
967
- perfCounters.cached++;
968
- perfCounters.cacheTime += time2;
969
- perfCounters.cacheTimeAvg = perfCounters.cacheTime / perfCounters.cached;
970
- perfCounters.totalTime = perfCounters.computeTime + perfCounters.cacheTime;
971
- return deserialized;
972
- }
973
- const init = this.initValue();
974
- const inner = this.getInnerValue(init);
975
- const wrapped = this.wrapInnerValue(inner);
976
- this.setCache(wrapped);
977
- const end = Date.now();
978
- const time = end - start;
979
- perfCounters.computed++;
980
- perfCounters.computeTime += time;
981
- perfCounters.computeTimeAvg = perfCounters.computeTime / perfCounters.computed;
982
- perfCounters.totalTime = perfCounters.computeTime + perfCounters.cacheTime;
983
- this.flushEvalCallStack();
984
- return wrapped;
985
- }
986
- }
987
- _Tree.Tree = Tree2;
988
- })(Tree || (Tree = {}));
989
-
990
- // src/agnostic/html/hyper-json/utils/index.ts
991
- var Utils;
992
- ((Utils2) => {
993
- Utils2.pathStringToPath = (pathString) => {
994
- let cleanPathString = pathString;
995
- while (cleanPathString.startsWith("/")) {
996
- cleanPathString = cleanPathString.slice(1);
997
- }
998
- while (cleanPathString.endsWith("/")) {
999
- cleanPathString = cleanPathString.slice(0, -1);
1000
- }
1001
- return cleanPathString.split("/").map((e) => {
1002
- const parsed = parseInt(e);
1003
- if (Number.isNaN(parsed)) return e;
1004
- return parsed;
1005
- });
1006
- };
1007
- Utils2.pathToPathString = (path) => `/${path.map((e) => `${e}`).join("/")}`;
1008
- Utils2.makeTransformerError = (value) => ({
1009
- action: "ERROR",
1010
- value
1011
- });
1012
- Utils2.toNamedTransformer = (name, args, anonymous) => {
1013
- const named = anonymous;
1014
- named.transformerName = name;
1015
- named.args = args;
1016
- return named;
1017
- };
1018
- Utils2.toHyperJson = (value, keyAttribute = Tree.defaultKeyAttribute) => {
1019
- const { document, Element, Text, NodeList } = Crossenv.getWindow();
1020
- if (value instanceof Text) {
1021
- const elt2 = document.createElement("text");
1022
- elt2.innerHTML = value.textContent ?? "";
1023
- return elt2;
1024
- }
1025
- if (value instanceof Element) return value.cloneNode(true);
1026
- if (value instanceof NodeList) {
1027
- const elt2 = document.createElement("nodelist");
1028
- elt2.append(...Array.from(value).map((e) => e.cloneNode(true)));
1029
- return elt2;
1030
- }
1031
- if (value === null) return document.createElement("null");
1032
- if (typeof value === "string" || typeof value === "number" || typeof value === "boolean") {
1033
- const elt2 = document.createElement(typeof value);
1034
- elt2.innerHTML = `${value}`;
1035
- return elt2;
1036
- }
1037
- if (typeof value === "function") {
1038
- const name = value.transformerName;
1039
- const args = value.args;
1040
- const elt2 = document.createElement(name);
1041
- const hyperJsonArgs = args.map((arg) => (0, Utils2.toHyperJson)(arg, keyAttribute));
1042
- elt2.append(...hyperJsonArgs);
1043
- return elt2;
1044
- }
1045
- if (Array.isArray(value)) {
1046
- const elt2 = document.createElement("array");
1047
- elt2.append(...value.map((e) => (0, Utils2.toHyperJson)(e, keyAttribute)));
1048
- return elt2;
1049
- }
1050
- const elt = document.createElement("record");
1051
- Object.entries(value).forEach(([key, val]) => {
1052
- const hjVal = (0, Utils2.toHyperJson)(val);
1053
- hjVal.setAttribute(keyAttribute, key);
1054
- elt.append(hjVal);
1055
- });
1056
- return elt;
1057
- };
1058
- })(Utils || (Utils = {}));
1059
-
1060
- // src/agnostic/html/hyper-json/transformers/append/index.ts
1061
- var append = (callerTagName, ...args) => {
1062
- return Utils.toNamedTransformer(callerTagName, args, (currentValue) => {
1063
- const { document, Element, Text, NodeList } = Crossenv.getWindow();
1064
- const [...toAppend] = args;
1065
- const frag = document.createDocumentFragment();
1066
- frag.append(...Array.from(Cast.toNodeList(currentValue)).map((e) => e.cloneNode(true)));
1067
- toAppend.forEach((item) => {
1068
- if (item instanceof Element) frag.append(item.cloneNode(true));
1069
- else if (item instanceof Text) frag.append(item.cloneNode(true));
1070
- else if (item instanceof NodeList) frag.append(...Array.from(item).map((e) => e.cloneNode(true)));
1071
- else frag.append(Cast.toString(item));
1072
- });
1073
- return {
1074
- action: "REPLACE",
1075
- value: frag.childNodes
1076
- };
1077
- });
1078
- };
1079
-
1080
- export {
1081
- append,
1082
- classList,
1083
- join,
1084
- length,
1085
- print,
1086
- push,
1087
- querySelector,
1088
- ref,
1089
- replace,
1090
- split,
1091
- toArray,
1092
- toBoolean,
1093
- toElement,
1094
- toNodeList,
1095
- toNull,
1096
- toNumber,
1097
- toRecord,
1098
- toRef,
1099
- toString,
1100
- toText,
1101
- toTransformer,
1102
- transformSelected,
1103
- trim,
1104
- Transformers,
1105
- Tree,
1106
- Utils,
1107
- Cast
1108
- };