@design-edito/tools 0.1.21 → 0.1.22

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 (219) hide show
  1. package/agnostic/arrays/find-duplicates/index.d.ts +1 -0
  2. package/agnostic/arrays/find-duplicates/index.js +6 -0
  3. package/agnostic/arrays/index.d.ts +8 -7
  4. package/agnostic/arrays/make/index.d.ts +3 -0
  5. package/agnostic/arrays/make/index.js +6 -0
  6. package/agnostic/arrays/random-pick/index.d.ts +2 -0
  7. package/agnostic/arrays/random-pick/index.js +8 -0
  8. package/agnostic/css/index.js +10 -10
  9. package/agnostic/errors/index.js +2 -2
  10. package/agnostic/html/hyper-json/cast/index.d.ts +18 -0
  11. package/agnostic/html/hyper-json/cast/index.js +11 -0
  12. package/agnostic/html/hyper-json/crossenv/index.d.ts +13 -0
  13. package/agnostic/html/hyper-json/crossenv/index.js +6 -0
  14. package/agnostic/html/hyper-json/index.d.ts +14 -43
  15. package/agnostic/html/hyper-json/index.js +32 -2
  16. package/agnostic/html/hyper-json/serialize/index.d.ts +5 -0
  17. package/agnostic/html/hyper-json/serialize/index.js +7 -0
  18. package/agnostic/html/hyper-json/transformers/append/index.d.ts +2 -0
  19. package/agnostic/html/hyper-json/transformers/append/index.js +12 -0
  20. package/agnostic/html/hyper-json/transformers/classList/index.d.ts +2 -0
  21. package/agnostic/html/hyper-json/transformers/classList/index.js +12 -0
  22. package/agnostic/html/hyper-json/transformers/index.d.ts +4 -0
  23. package/agnostic/html/hyper-json/transformers/index.js +39 -0
  24. package/agnostic/html/hyper-json/transformers/join/index.d.ts +2 -0
  25. package/agnostic/html/hyper-json/transformers/join/index.js +12 -0
  26. package/agnostic/html/hyper-json/transformers/length/index.d.ts +2 -0
  27. package/agnostic/html/hyper-json/transformers/length/index.js +8 -0
  28. package/agnostic/html/hyper-json/transformers/print/index.d.ts +2 -0
  29. package/agnostic/html/hyper-json/transformers/print/index.js +7 -0
  30. package/agnostic/html/hyper-json/transformers/push/index.d.ts +2 -0
  31. package/agnostic/html/hyper-json/transformers/push/index.js +7 -0
  32. package/agnostic/html/hyper-json/transformers/querySelector/index.d.ts +2 -0
  33. package/agnostic/html/hyper-json/transformers/querySelector/index.js +12 -0
  34. package/agnostic/html/hyper-json/transformers/ref/index.d.ts +2 -0
  35. package/agnostic/html/hyper-json/transformers/ref/index.js +12 -0
  36. package/agnostic/html/hyper-json/transformers/replace/index.d.ts +2 -0
  37. package/agnostic/html/hyper-json/transformers/replace/index.js +13 -0
  38. package/agnostic/html/hyper-json/transformers/split/index.d.ts +2 -0
  39. package/agnostic/html/hyper-json/transformers/split/index.js +12 -0
  40. package/agnostic/html/hyper-json/transformers/toArray/index.d.ts +2 -0
  41. package/agnostic/html/hyper-json/transformers/toArray/index.js +12 -0
  42. package/agnostic/html/hyper-json/transformers/toBoolean/index.d.ts +2 -0
  43. package/agnostic/html/hyper-json/transformers/toBoolean/index.js +12 -0
  44. package/agnostic/html/hyper-json/transformers/toElement/index.d.ts +2 -0
  45. package/agnostic/html/hyper-json/transformers/toElement/index.js +12 -0
  46. package/agnostic/html/hyper-json/transformers/toNodeList/index.d.ts +2 -0
  47. package/agnostic/html/hyper-json/transformers/toNodeList/index.js +12 -0
  48. package/agnostic/html/hyper-json/transformers/toNull/index.d.ts +2 -0
  49. package/agnostic/html/hyper-json/transformers/toNull/index.js +7 -0
  50. package/agnostic/html/hyper-json/transformers/toNumber/index.d.ts +2 -0
  51. package/agnostic/html/hyper-json/transformers/toNumber/index.js +12 -0
  52. package/agnostic/html/hyper-json/transformers/toRecord/index.d.ts +2 -0
  53. package/agnostic/html/hyper-json/transformers/toRecord/index.js +12 -0
  54. package/agnostic/html/hyper-json/transformers/toRef/index.d.ts +2 -0
  55. package/agnostic/html/hyper-json/transformers/toRef/index.js +12 -0
  56. package/agnostic/html/hyper-json/transformers/toString/index.d.ts +2 -0
  57. package/agnostic/html/hyper-json/transformers/toString/index.js +12 -0
  58. package/agnostic/html/hyper-json/transformers/toText/index.d.ts +2 -0
  59. package/agnostic/html/hyper-json/transformers/toText/index.js +12 -0
  60. package/agnostic/html/hyper-json/transformers/toTransformer/index.d.ts +2 -0
  61. package/agnostic/html/hyper-json/transformers/toTransformer/index.js +12 -0
  62. package/agnostic/html/hyper-json/transformers/transformSelected/index.d.ts +2 -0
  63. package/agnostic/html/hyper-json/transformers/transformSelected/index.js +39 -0
  64. package/agnostic/html/hyper-json/transformers/trim/index.d.ts +2 -0
  65. package/agnostic/html/hyper-json/transformers/trim/index.js +12 -0
  66. package/agnostic/html/hyper-json/tree/index.d.ts +56 -0
  67. package/agnostic/html/hyper-json/tree/index.js +39 -0
  68. package/agnostic/html/hyper-json/types/index.d.ts +86 -0
  69. package/agnostic/html/hyper-json/types/index.js +6 -0
  70. package/agnostic/html/hyper-json/utils/index.d.ts +10 -0
  71. package/agnostic/html/hyper-json/utils/index.js +6 -0
  72. package/agnostic/html/index.js +51 -19
  73. package/agnostic/html/replace-in-element/index.d.ts +1 -0
  74. package/agnostic/html/replace-in-element/index.js +6 -0
  75. package/agnostic/html/sanitize/index.js +7 -5
  76. package/agnostic/html/selector-to-element/index.js +7 -5
  77. package/agnostic/html/string-to-nodes/index.js +8 -6
  78. package/agnostic/index.d.ts +0 -2
  79. package/agnostic/misc/{web-crawler → crawler}/index.d.ts +1 -1
  80. package/agnostic/misc/crawler/index.js +7 -0
  81. package/agnostic/misc/crossenv/get-document/index.d.ts +2 -0
  82. package/agnostic/misc/crossenv/get-document/index.js +7 -0
  83. package/agnostic/misc/crossenv/get-window/browser.d.ts +2 -0
  84. package/agnostic/misc/crossenv/get-window/index.d.ts +2 -0
  85. package/agnostic/misc/crossenv/get-window/index.js +6 -0
  86. package/agnostic/misc/crossenv/index.d.ts +4 -1
  87. package/agnostic/misc/crossenv/index.js +3 -1
  88. package/agnostic/misc/crossenv/types.d.ts +3 -0
  89. package/agnostic/misc/index.d.ts +3 -1
  90. package/agnostic/misc/index.js +24 -14
  91. package/agnostic/misc/lorem-ipsum/index.js +5 -2
  92. package/agnostic/numbers/index.js +3 -3
  93. package/agnostic/objects/index.js +10 -10
  94. package/agnostic/optim/index.js +3 -3
  95. package/agnostic/random/index.js +6 -0
  96. package/agnostic/strings/index.js +9 -9
  97. package/agnostic/time/duration/index.d.ts +26 -0
  98. package/agnostic/time/duration/index.js +6 -0
  99. package/agnostic/time/index.d.ts +8 -7
  100. package/agnostic/time/index.js +17 -28
  101. package/agnostic/time/timeout/index.d.ts +1 -0
  102. package/agnostic/time/timeout/index.js +6 -0
  103. package/agnostic/time/transitions/index.js +7 -0
  104. package/agnostic/time/wait/index.js +6 -0
  105. package/chunks/chunk-2DMWYLFG.js +16 -0
  106. package/chunks/chunk-2KT7AKRW.js +17 -0
  107. package/chunks/{chunk-UCV2AZZV.js → chunk-2PI5AZIL.js} +14 -25
  108. package/chunks/chunk-3KQRMKQJ.js +27 -0
  109. package/chunks/chunk-3LVR6KZH.js +22 -0
  110. package/chunks/chunk-3PHPA25U.js +18 -0
  111. package/chunks/chunk-3PM7GZ6B.js +33 -0
  112. package/chunks/chunk-3SQJEEBK.js +642 -0
  113. package/chunks/chunk-3UURICGY.js +211 -0
  114. package/chunks/chunk-3X6RXJBR.js +37 -0
  115. package/chunks/{chunk-DQNJQBC6.js → chunk-4CIS3R7T.js} +1 -1
  116. package/chunks/chunk-4F7ZVE7T.js +332 -0
  117. package/chunks/chunk-4GUDL44X.js +13 -0
  118. package/chunks/chunk-4RDW62CU.js +36 -0
  119. package/chunks/chunk-5IR2PWO6.js +211 -0
  120. package/chunks/chunk-6CM2SWSX.js +35 -0
  121. package/chunks/chunk-6EYBQHJS.js +33 -0
  122. package/chunks/chunk-6NYUQXJT.js +109 -0
  123. package/chunks/chunk-6NZCBAT4.js +19 -0
  124. package/chunks/chunk-6V23XMYE.js +982 -0
  125. package/chunks/chunk-73V5RDSG.js +13 -0
  126. package/chunks/chunk-7IGZP4TV.js +30 -0
  127. package/chunks/chunk-7QMAYGNV.js +25 -0
  128. package/chunks/chunk-7YW5HL6N.js +168 -0
  129. package/chunks/chunk-AFFLZUW5.js +33 -0
  130. package/chunks/chunk-AMS3FB24.js +85 -0
  131. package/chunks/chunk-AXMPRLPI.js +35 -0
  132. package/chunks/chunk-B6CSCX7J.js +278 -0
  133. package/chunks/chunk-BDHNULU7.js +211 -0
  134. package/chunks/chunk-BNB7LEMQ.js +35 -0
  135. package/chunks/chunk-CECF6UZV.js +29 -0
  136. package/chunks/chunk-DBAJ66BR.js +18 -0
  137. package/chunks/chunk-DGQLPQS2.js +33 -0
  138. package/chunks/chunk-DLLTITVO.js +33 -0
  139. package/chunks/chunk-DMDOCC72.js +18 -0
  140. package/chunks/{chunk-IFT6HLDW.js → chunk-DRH7Q4FL.js} +3 -6
  141. package/chunks/chunk-DRNK3RLE.js +64 -0
  142. package/chunks/chunk-EAY65ZP6.js +22 -0
  143. package/chunks/{chunk-4GDNHUCZ.js → chunk-ENMBK6H7.js} +2 -2
  144. package/chunks/chunk-F5YMP5WU.js +18 -0
  145. package/chunks/chunk-F7EVMWVG.js +27 -0
  146. package/chunks/chunk-F7XWUG2V.js +18 -0
  147. package/chunks/chunk-FCU6IHKD.js +15 -0
  148. package/chunks/chunk-FFOATPL4.js +211 -0
  149. package/chunks/chunk-FWHUASVA.js +22 -0
  150. package/chunks/chunk-GBMHGF7P.js +20 -0
  151. package/chunks/{chunk-GJOU3UAL.js → chunk-GDYVCEWA.js} +8 -6
  152. package/chunks/chunk-GNBIAWSY.js +278 -0
  153. package/chunks/chunk-GQSPY2CV.js +19 -0
  154. package/chunks/chunk-HDALT7XM.js +620 -0
  155. package/chunks/chunk-HUKHWFVL.js +19 -0
  156. package/chunks/chunk-IGD53YL5.js +870 -0
  157. package/chunks/chunk-ILEM73XB.js +981 -0
  158. package/chunks/{chunk-DMGR57KA.js → chunk-IPB3U2PD.js} +20 -18
  159. package/chunks/chunk-JY3QZ2YO.js +211 -0
  160. package/chunks/chunk-K3OQEJI3.js +33 -0
  161. package/chunks/chunk-KXBKJ3GS.js +642 -0
  162. package/chunks/chunk-LCFDDWJR.js +278 -0
  163. package/chunks/chunk-LGECI2WL.js +306 -0
  164. package/chunks/chunk-LGUEB5L5.js +211 -0
  165. package/chunks/chunk-LI6QDZCA.js +211 -0
  166. package/chunks/{chunk-ZMHKLIP2.js → chunk-LYMZZ4BB.js} +1 -1
  167. package/chunks/chunk-MDEDNPU5.js +38 -0
  168. package/chunks/chunk-MQHKEGP4.js +33 -0
  169. package/chunks/chunk-NF5ACCXZ.js +211 -0
  170. package/chunks/chunk-NK557MKV.js +35 -0
  171. package/chunks/chunk-NWMEWFTK.js +33 -0
  172. package/chunks/chunk-O5OTBN22.js +35 -0
  173. package/chunks/chunk-O7MDUYEF.js +211 -0
  174. package/chunks/{chunk-LI5KVXAJ.js → chunk-OO5SJJDW.js} +2 -5
  175. package/chunks/chunk-Q52UJOBC.js +18 -0
  176. package/chunks/chunk-QFEF4EET.js +211 -0
  177. package/chunks/chunk-QHSVCGLD.js +280 -0
  178. package/chunks/chunk-QO64L4KB.js +97 -0
  179. package/chunks/{chunk-WLL3FNVL.js → chunk-R6KCN6CK.js} +1 -1
  180. package/chunks/chunk-RJ5E22H5.js +15 -0
  181. package/chunks/chunk-RLAZR3NL.js +8 -0
  182. package/chunks/chunk-RWUPHV54.js +25 -0
  183. package/chunks/chunk-S2757FI3.js +36 -0
  184. package/chunks/chunk-S42P73SC.js +30 -0
  185. package/chunks/chunk-S5XDYLJH.js +18 -0
  186. package/chunks/chunk-SCM6NACT.js +15 -0
  187. package/chunks/chunk-SH3Y2I5P.js +18 -0
  188. package/chunks/chunk-SMLKMOAX.js +18 -0
  189. package/chunks/chunk-TATRVKBS.js +211 -0
  190. package/chunks/chunk-UODQZRY2.js +620 -0
  191. package/chunks/chunk-UOULDS6J.js +33 -0
  192. package/chunks/chunk-UUDXUSI5.js +211 -0
  193. package/chunks/{chunk-GL23YDEH.js → chunk-UWAMSJ2X.js} +3 -6
  194. package/chunks/chunk-UZUXLD2Q.js +35 -0
  195. package/chunks/chunk-VA6HXRX4.js +211 -0
  196. package/chunks/chunk-VRUJR6WR.js +39 -0
  197. package/chunks/chunk-W6YBEEZM.js +211 -0
  198. package/chunks/chunk-WECTUHS5.js +127 -0
  199. package/chunks/chunk-YE5HI3RK.js +211 -0
  200. package/chunks/chunk-YEBOL67V.js +32 -0
  201. package/chunks/chunk-YS6WMSWC.js +15 -0
  202. package/{agnostic/misc/web-crawler/index.js → chunks/chunk-YUP434IY.js} +8 -7
  203. package/chunks/chunk-YYE2MVZO.js +211 -0
  204. package/chunks/chunk-Z7ZDDBV5.js +18 -0
  205. package/chunks/chunk-ZB73RE7P.js +35 -0
  206. package/chunks/chunk-ZONKYNKA.js +28 -0
  207. package/node/files/index.js +3 -3
  208. package/package.json +4 -1
  209. package/agnostic/async/index.d.ts +0 -8
  210. package/agnostic/async/index.js +0 -20
  211. package/agnostic/async/timeout-call/index.d.ts +0 -1
  212. package/agnostic/async/timeout-call/index.js +0 -6
  213. package/agnostic/async/transitions/index.js +0 -7
  214. package/agnostic/async/wait/index.js +0 -6
  215. package/agnostic/misc/random/index.js +0 -6
  216. package/chunks/chunk-4VC5PT5T.js +0 -13
  217. /package/agnostic/{misc/random → random}/index.d.ts +0 -0
  218. /package/agnostic/{async → time}/transitions/index.d.ts +0 -0
  219. /package/agnostic/{async → time}/wait/index.d.ts +0 -0
@@ -0,0 +1,211 @@
1
+ import {
2
+ Random
3
+ } from "./chunk-R6KCN6CK.js";
4
+ import {
5
+ isArrayOf
6
+ } from "./chunk-6RGDWX4A.js";
7
+ import {
8
+ findDuplicates
9
+ } from "./chunk-YS6WMSWC.js";
10
+ import {
11
+ RANDOM_PICK_ERR_SYMBOL,
12
+ randomPick
13
+ } from "./chunk-FCU6IHKD.js";
14
+ import {
15
+ make
16
+ } from "./chunk-RLAZR3NL.js";
17
+
18
+ // src/agnostic/arrays/index.tsx
19
+ var Arrays;
20
+ ((Arrays2) => {
21
+ Arrays2.findDuplicates = findDuplicates;
22
+ Arrays2.isArrayOf = isArrayOf;
23
+ Arrays2.make = make;
24
+ Arrays2.RANDOM_PICK_ERR_SYMBOL = RANDOM_PICK_ERR_SYMBOL;
25
+ Arrays2.randomPick = randomPick;
26
+ })(Arrays || (Arrays = {}));
27
+
28
+ // src/agnostic/misc/lorem-ipsum/index.ts
29
+ var LoremIpsum;
30
+ ((LoremIpsum2) => {
31
+ LoremIpsum2.words = [
32
+ "a",
33
+ "ac",
34
+ "accumsan",
35
+ "adipiscing",
36
+ "aenean",
37
+ "aliquam",
38
+ "aliquet",
39
+ "amet",
40
+ "ante",
41
+ "arcu",
42
+ "at",
43
+ "auctor",
44
+ "augue",
45
+ "bibendum",
46
+ "blandit",
47
+ "condimentum",
48
+ "consectetur",
49
+ "consequat",
50
+ "convallis",
51
+ "cras",
52
+ "curabitur",
53
+ "cursus",
54
+ "dapibus",
55
+ "diam",
56
+ "dictum",
57
+ "dictumst",
58
+ "dignissim",
59
+ "dolor",
60
+ "donec",
61
+ "dui",
62
+ "duis",
63
+ "efficitur",
64
+ "egestas",
65
+ "eget",
66
+ "eleifend",
67
+ "elementum",
68
+ "elit",
69
+ "enim",
70
+ "erat",
71
+ "eros",
72
+ "est",
73
+ "et",
74
+ "eu",
75
+ "euismod",
76
+ "ex",
77
+ "facilisis",
78
+ "faucibus",
79
+ "felis",
80
+ "feugiat",
81
+ "finibus",
82
+ "fringilla",
83
+ "fusce",
84
+ "gravida",
85
+ "habitasse",
86
+ "hac",
87
+ "hendrerit",
88
+ "iaculis",
89
+ "id",
90
+ "imperdiet",
91
+ "in",
92
+ "integer",
93
+ "interdum",
94
+ "ipsum",
95
+ "justo",
96
+ "lacinia",
97
+ "lacus",
98
+ "laoreet",
99
+ "lectus",
100
+ "leo",
101
+ "libero",
102
+ "ligula",
103
+ "lobortis",
104
+ "lorem",
105
+ "luctus",
106
+ "maecenas",
107
+ "magna",
108
+ "malesuada",
109
+ "massa",
110
+ "mattis",
111
+ "mauris",
112
+ "maximus",
113
+ "metus",
114
+ "mi",
115
+ "molestie",
116
+ "mollis",
117
+ "morbi",
118
+ "nam",
119
+ "nec",
120
+ "neque",
121
+ "nibh",
122
+ "nisi",
123
+ "nisl",
124
+ "non",
125
+ "nulla",
126
+ "nullam",
127
+ "nunc",
128
+ "odio",
129
+ "orci",
130
+ "ornare",
131
+ "pellentesque",
132
+ "pharetra",
133
+ "phasellus",
134
+ "placerat",
135
+ "platea",
136
+ "porta",
137
+ "porttitor",
138
+ "posuere",
139
+ "praesent",
140
+ "pulvinar",
141
+ "purus",
142
+ "quam",
143
+ "quis",
144
+ "quisque",
145
+ "risus",
146
+ "rutrum",
147
+ "sagittis",
148
+ "sapien",
149
+ "sed",
150
+ "sem",
151
+ "semper",
152
+ "sit",
153
+ "sodales",
154
+ "sollicitudin",
155
+ "suscipit",
156
+ "suspendisse",
157
+ "tellus",
158
+ "tempor",
159
+ "tempus",
160
+ "tincidunt",
161
+ "tortor",
162
+ "tristique",
163
+ "turpis",
164
+ "ultrices",
165
+ "ultricies",
166
+ "urna",
167
+ "ut",
168
+ "vehicula",
169
+ "vel",
170
+ "velit",
171
+ "venenatis",
172
+ "vestibulum",
173
+ "vitae",
174
+ "vivamus",
175
+ "viverra",
176
+ "volutpat",
177
+ "vulputate"
178
+ ];
179
+ LoremIpsum2.generateSentence = (wordCount) => {
180
+ const resultArr = [];
181
+ let currentWordCound = wordCount;
182
+ for (let i = 0; i < currentWordCound; i++) {
183
+ const picked = Arrays.randomPick(LoremIpsum2.words);
184
+ if (typeof picked === "string") resultArr.push(picked);
185
+ else {
186
+ currentWordCound += 1;
187
+ }
188
+ }
189
+ const [firstWord, ...otherWords] = resultArr;
190
+ if (firstWord === void 0) return "";
191
+ const capFirstLetter = firstWord?.charAt(0).toUpperCase();
192
+ const restOfFirstWord = firstWord?.slice(1);
193
+ const sentence = [
194
+ `${capFirstLetter}${restOfFirstWord}`,
195
+ ...otherWords
196
+ ].join(" ");
197
+ return `${sentence}.`;
198
+ };
199
+ LoremIpsum2.generateSentences = (sentencesCount, maxSentenceLength = 12, minSentenceLength = 4) => {
200
+ const sentences = [];
201
+ for (let i = 0; i < sentencesCount; i++) {
202
+ const length = Random.randomInt(maxSentenceLength, minSentenceLength) ?? 8;
203
+ sentences.push((0, LoremIpsum2.generateSentence)(length));
204
+ }
205
+ return sentences;
206
+ };
207
+ })(LoremIpsum || (LoremIpsum = {}));
208
+
209
+ export {
210
+ LoremIpsum
211
+ };
@@ -0,0 +1,37 @@
1
+ import {
2
+ Cast
3
+ } from "./chunk-QO64L4KB.js";
4
+ import {
5
+ Crossenv
6
+ } from "./chunk-3LVR6KZH.js";
7
+ import {
8
+ Utils
9
+ } from "./chunk-YEBOL67V.js";
10
+
11
+ // src/agnostic/html/hyper-json/transformers/ref/index.ts
12
+ var ref = (callerTagName, ...args) => {
13
+ return Utils.toNamedTransformer(callerTagName, (_, callerTree) => {
14
+ const [refPathStrRaw] = args;
15
+ const { Text } = Crossenv.getWindow();
16
+ if (typeof refPathStrRaw !== "string" && !(refPathStrRaw instanceof Text)) return Utils.makeTransformerError({
17
+ message: "PathString must be of type string or Text",
18
+ input: refPathStrRaw !== void 0 ? refPathStrRaw : "<undefined>"
19
+ });
20
+ const refPathStr = Cast.toString(refPathStrRaw);
21
+ const refPath = Utils.pathStringToPath(Cast.toString(refPathStrRaw));
22
+ const foundTree = callerTree.resolve(refPath);
23
+ if (foundTree === void 0) return Utils.makeTransformerError({
24
+ message: "Referenced value has not been found",
25
+ input: refPathStr
26
+ });
27
+ const evaluated = foundTree.evaluate();
28
+ return {
29
+ action: "MERGE",
30
+ value: evaluated
31
+ };
32
+ });
33
+ };
34
+
35
+ export {
36
+ ref
37
+ };
@@ -1,4 +1,4 @@
1
- // src/agnostic/async/wait/index.ts
1
+ // src/agnostic/time/wait/index.ts
2
2
  async function wait(durationMs) {
3
3
  return new Promise((resolve) => {
4
4
  setTimeout(() => resolve(true), durationMs);
@@ -0,0 +1,332 @@
1
+ import {
2
+ Types
3
+ } from "./chunk-3KQRMKQJ.js";
4
+ import {
5
+ Serialize
6
+ } from "./chunk-DRNK3RLE.js";
7
+ import {
8
+ Cast
9
+ } from "./chunk-AMS3FB24.js";
10
+ import {
11
+ Crossenv
12
+ } from "./chunk-3LVR6KZH.js";
13
+ import {
14
+ isRecord
15
+ } from "./chunk-YDIBNEGA.js";
16
+
17
+ // src/agnostic/html/hyper-json/tree/index.ts
18
+ var getWindow = Crossenv.getWindow;
19
+ var isElement = (node) => node.nodeType === getWindow().Node.ELEMENT_NODE;
20
+ var isText = (node) => node.nodeType === getWindow().Node.TEXT_NODE;
21
+ var Tree = class _Tree {
22
+ node;
23
+ name;
24
+ parent;
25
+ root;
26
+ isRoot;
27
+ path;
28
+ pathString;
29
+ tagName;
30
+ attributes;
31
+ subtrees = /* @__PURE__ */ new Map();
32
+ children;
33
+ type;
34
+ generators;
35
+ constructor(node, generatorsOrParent, pathFromParent) {
36
+ this.resolve = this.resolve.bind(this);
37
+ this.getGenerator = this.getGenerator.bind(this);
38
+ this.initValue = this.initValue.bind(this);
39
+ this.mergeValues = this.mergeValues.bind(this);
40
+ this.getInnerValue = this.getInnerValue.bind(this);
41
+ this.wrapInnerValue = this.wrapInnerValue.bind(this);
42
+ this.setCache = this.setCache.bind(this);
43
+ this.getPerfCounters = this.getPerfCounters.bind(this);
44
+ this.printPerfCounters = this.printPerfCounters.bind(this);
45
+ this.pushToEvalCallStack = this.pushToEvalCallStack.bind(this);
46
+ this.flushEvalCallStack = this.flushEvalCallStack.bind(this);
47
+ this.evaluate = this.evaluate.bind(this);
48
+ let parent;
49
+ let generators;
50
+ if (pathFromParent === void 0) {
51
+ parent = null;
52
+ generators = generatorsOrParent;
53
+ } else {
54
+ parent = generatorsOrParent;
55
+ generators = /* @__PURE__ */ new Map();
56
+ }
57
+ this.node = node;
58
+ this.name = this.node instanceof getWindow().Element ? this.node.getAttribute("_name") : null;
59
+ this.parent = parent;
60
+ this.root = this.parent === null ? this : this.parent.root;
61
+ this.isRoot = this.root === this;
62
+ this.generators = this.isRoot ? generators : this.root.generators;
63
+ if (this.parent === null) this.path = [];
64
+ else if (pathFromParent === void 0) {
65
+ this.path = [...this.parent.path, 0];
66
+ } else {
67
+ this.path = [...this.parent.path, pathFromParent];
68
+ }
69
+ this.pathString = `/${this.path.join("/")}`;
70
+ this.tagName = node instanceof getWindow().Element ? node.tagName.toLowerCase() : null;
71
+ this.attributes = isElement(node) ? Array.from(node.attributes) : null;
72
+ const { childNodes } = node;
73
+ let positionnedChildrenCount = 0;
74
+ const mutableSubtrees = /* @__PURE__ */ new Map();
75
+ Array.from(childNodes).filter((node2, _, nodes) => {
76
+ if (isElement(node2)) return true;
77
+ if (isText(node2)) {
78
+ const hasContent = (node2.textContent ?? "").trim() !== "";
79
+ if (hasContent) return true;
80
+ if (nodes.some((n) => n instanceof getWindow().Element)) return false;
81
+ return true;
82
+ }
83
+ return false;
84
+ }).forEach((childNode) => {
85
+ if (childNode instanceof getWindow().Text) {
86
+ mutableSubtrees.set(
87
+ positionnedChildrenCount,
88
+ new _Tree(childNode, this, positionnedChildrenCount)
89
+ );
90
+ positionnedChildrenCount += 1;
91
+ } else {
92
+ const propertyName = childNode.getAttribute("_name");
93
+ if (propertyName === null) {
94
+ mutableSubtrees.set(
95
+ positionnedChildrenCount,
96
+ new _Tree(childNode, this, positionnedChildrenCount)
97
+ );
98
+ positionnedChildrenCount += 1;
99
+ } else {
100
+ mutableSubtrees.set(
101
+ propertyName,
102
+ new _Tree(childNode, this, propertyName)
103
+ );
104
+ }
105
+ }
106
+ });
107
+ this.subtrees = mutableSubtrees;
108
+ this.children = Array.from(this.subtrees.values());
109
+ if (this.tagName === null) {
110
+ this.type = "text";
111
+ } else if (this.tagName === Types.TyperTagName.NULL) {
112
+ this.type = "null";
113
+ } else if (this.tagName === Types.TyperTagName.BOOLEAN) {
114
+ this.type = "boolean";
115
+ } else if (this.tagName === Types.TyperTagName.NUMBER) {
116
+ this.type = "number";
117
+ } else if (this.tagName === Types.TyperTagName.STRING) {
118
+ this.type = "string";
119
+ } else if (this.tagName === Types.TyperTagName.TEXT) {
120
+ this.type = "text";
121
+ } else if (this.tagName === Types.TyperTagName.NODELIST) {
122
+ this.type = "nodelist";
123
+ } else if (this.tagName === Types.TyperTagName.ARRAY) {
124
+ this.type = "array";
125
+ } else if (this.tagName === Types.TyperTagName.RECORD) {
126
+ this.type = "record";
127
+ } else if (this.getGenerator(this.tagName) !== void 0) {
128
+ this.type = "transformer";
129
+ } else {
130
+ this.type = "element";
131
+ }
132
+ }
133
+ resolve = function(path) {
134
+ let currentTree = this.root;
135
+ for (const chunk of path) {
136
+ const { subtrees } = currentTree;
137
+ const foundSubtree = subtrees.get(chunk);
138
+ if (foundSubtree === void 0) return void 0;
139
+ currentTree = foundSubtree;
140
+ }
141
+ return currentTree;
142
+ };
143
+ getGenerator(name) {
144
+ return this.generators.get(name);
145
+ }
146
+ initValue() {
147
+ const { type } = this;
148
+ let currentValue;
149
+ if (type === "null") {
150
+ currentValue = null;
151
+ } else if (type === "boolean") {
152
+ currentValue = false;
153
+ } else if (type === "number") {
154
+ currentValue = 0;
155
+ } else if (type === "string") {
156
+ currentValue = "";
157
+ } else if (type === "text") {
158
+ currentValue = this.node.textContent;
159
+ } else if (type === "element") {
160
+ currentValue = getWindow().document.createDocumentFragment().childNodes;
161
+ } else if (type === "nodelist") {
162
+ currentValue = getWindow().document.createDocumentFragment().childNodes;
163
+ } else if (type === "array") {
164
+ currentValue = [];
165
+ } else if (type === "record") {
166
+ currentValue = {};
167
+ } else if (type === "transformer") {
168
+ currentValue = [];
169
+ } else {
170
+ currentValue = null;
171
+ }
172
+ return currentValue;
173
+ }
174
+ mergeValues(currentValue, incomingValue, mergeKey) {
175
+ const { Element, Text, NodeList, document } = getWindow();
176
+ if (typeof incomingValue === "function") {
177
+ const evaluated = incomingValue(currentValue, { resolver: this.resolve });
178
+ if (evaluated.action === null) return currentValue;
179
+ if (evaluated.action === "REPLACE") return evaluated.value;
180
+ return this.mergeValues(currentValue, evaluated.value, mergeKey);
181
+ }
182
+ if (Array.isArray(currentValue)) {
183
+ if (typeof mergeKey === "string") return currentValue;
184
+ return [...currentValue, incomingValue];
185
+ }
186
+ if (currentValue === null || typeof currentValue === "boolean" || typeof currentValue === "number" || typeof currentValue === "string" || typeof currentValue === "function" || currentValue instanceof Text || currentValue instanceof Element) {
187
+ if (incomingValue === null || typeof incomingValue === "boolean" || typeof incomingValue === "number" || typeof incomingValue === "string" || Array.isArray(incomingValue) || isRecord(incomingValue)) {
188
+ return incomingValue;
189
+ }
190
+ const frag = document.createDocumentFragment();
191
+ if (currentValue instanceof Element || currentValue instanceof Text) frag.append(currentValue.cloneNode(true));
192
+ else frag.append(`${currentValue}`);
193
+ if (incomingValue instanceof Element || incomingValue instanceof Text) {
194
+ frag.append(incomingValue.cloneNode(true));
195
+ return frag.childNodes;
196
+ }
197
+ frag.append(...Array.from(incomingValue).map((e) => e.cloneNode(true)));
198
+ return frag.childNodes;
199
+ }
200
+ if (currentValue instanceof NodeList) {
201
+ if (incomingValue instanceof Element || incomingValue instanceof Text) {
202
+ const frag = document.createDocumentFragment();
203
+ frag.append(...Array.from(currentValue).map((e) => e.cloneNode(true)), incomingValue);
204
+ return frag.childNodes;
205
+ }
206
+ if (incomingValue instanceof NodeList) {
207
+ const frag = document.createDocumentFragment();
208
+ frag.append(
209
+ ...Array.from(currentValue).map((e) => e.cloneNode(true)),
210
+ ...Array.from(incomingValue).map((e) => e.cloneNode(true))
211
+ );
212
+ return frag.childNodes;
213
+ }
214
+ if (incomingValue === null || typeof incomingValue === "string" || typeof incomingValue === "number" || typeof incomingValue === "boolean") {
215
+ const frag = document.createDocumentFragment();
216
+ frag.append(...Array.from(currentValue).map((e) => e.cloneNode(true)), `${incomingValue}`);
217
+ return frag.childNodes;
218
+ }
219
+ if (Array.isArray(incomingValue)) return [
220
+ ...Array.from(currentValue),
221
+ ...incomingValue
222
+ ];
223
+ return { ...incomingValue };
224
+ }
225
+ if (typeof mergeKey === "number") return currentValue;
226
+ return {
227
+ ...currentValue,
228
+ [mergeKey]: incomingValue
229
+ };
230
+ }
231
+ getInnerValue(initialValue) {
232
+ const { subtrees } = this;
233
+ const innerValue = Array.from(subtrees.entries()).reduce((currentValue, [subpath, subtree]) => this.mergeValues(
234
+ currentValue,
235
+ subtree.evaluate(),
236
+ subpath
237
+ ), initialValue);
238
+ return innerValue;
239
+ }
240
+ wrapInnerValue(innerValue) {
241
+ const { type } = this;
242
+ if (type === "transformer") {
243
+ const transformerName = this.tagName;
244
+ if (transformerName === null) return innerValue;
245
+ const generator = this.getGenerator(transformerName);
246
+ if (generator === void 0) return innerValue;
247
+ const transformer = Array.isArray(innerValue) ? generator(...innerValue) : generator(innerValue);
248
+ return transformer;
249
+ }
250
+ if (type === "null") return Cast.toNull();
251
+ if (type === "boolean") return Cast.toBoolean(innerValue);
252
+ if (type === "number") return Cast.toNumber(innerValue);
253
+ if (type === "string") return Cast.toString(innerValue);
254
+ if (type === "array") return Cast.toArray(innerValue);
255
+ if (type === "record") return Cast.toRecord(innerValue);
256
+ if (type === "text") return Cast.toText(innerValue);
257
+ if (type === "element") return Cast.toElement(innerValue);
258
+ if (type === "nodelist") return Cast.toNodeList(innerValue);
259
+ return Cast.toNull();
260
+ }
261
+ cache = void 0;
262
+ setCache(value) {
263
+ this.cache = Serialize.serialize(value);
264
+ }
265
+ perfCounters = {
266
+ computed: 0,
267
+ computeTime: 0,
268
+ computeTimeAvg: 0,
269
+ cached: 0,
270
+ cacheTime: 0,
271
+ cacheTimeAvg: 0,
272
+ totalTime: 0
273
+ };
274
+ getPerfCounters() {
275
+ const { subtrees } = this;
276
+ const subCounters = [];
277
+ subCounters.push([this.pathString, this.perfCounters]);
278
+ subtrees.forEach((subtree) => subCounters.push(...subtree.getPerfCounters()));
279
+ return subCounters;
280
+ }
281
+ printPerfCounters() {
282
+ const perfCounters = this.getPerfCounters().sort((a, b) => b[1].totalTime - a[1].totalTime).map((e) => ({
283
+ path: e[0],
284
+ totalMs: e[1].totalTime,
285
+ computeMs: e[1].computeTime,
286
+ cacheMs: e[1].cacheTime,
287
+ ops: `${e[1].computed}/${e[1].cached}`
288
+ }));
289
+ console.table(perfCounters);
290
+ }
291
+ callstack = [];
292
+ pushToEvalCallStack(path) {
293
+ this.callstack.push(path);
294
+ this.parent?.pushToEvalCallStack(path);
295
+ }
296
+ flushEvalCallStack() {
297
+ this.callstack.length = 0;
298
+ }
299
+ evaluate() {
300
+ const start = Date.now();
301
+ const circularPatternDetected = this.callstack.some((p) => p.startsWith(this.pathString));
302
+ if (circularPatternDetected) throw new Error(`Circular reference pattern detected @ ${this.pathString}`);
303
+ this.pushToEvalCallStack(this.pathString);
304
+ const { perfCounters, cache } = this;
305
+ if (cache !== void 0) {
306
+ const deserialized = Serialize.deserialize(cache);
307
+ const end2 = Date.now();
308
+ const time2 = end2 - start;
309
+ perfCounters.cached++;
310
+ perfCounters.cacheTime += time2;
311
+ perfCounters.cacheTimeAvg = perfCounters.cacheTime / perfCounters.cached;
312
+ perfCounters.totalTime = perfCounters.computeTime + perfCounters.cacheTime;
313
+ return deserialized;
314
+ }
315
+ const init = this.initValue();
316
+ const inner = this.getInnerValue(init);
317
+ const wrapped = this.wrapInnerValue(inner);
318
+ this.setCache(wrapped);
319
+ const end = Date.now();
320
+ const time = end - start;
321
+ perfCounters.computed++;
322
+ perfCounters.computeTime += time;
323
+ perfCounters.computeTimeAvg = perfCounters.computeTime / perfCounters.computed;
324
+ perfCounters.totalTime = perfCounters.computeTime + perfCounters.cacheTime;
325
+ this.flushEvalCallStack();
326
+ return wrapped;
327
+ }
328
+ };
329
+
330
+ export {
331
+ Tree
332
+ };
@@ -0,0 +1,13 @@
1
+ // src/agnostic/misc/crossenv/get-window/index.ts
2
+ async function getWindow() {
3
+ if (window !== void 0) return window;
4
+ else {
5
+ const { JSDOM } = await import("jsdom");
6
+ const dom = new JSDOM("<!DOCTYPE html><html><body></body></html>");
7
+ return dom.window;
8
+ }
9
+ }
10
+
11
+ export {
12
+ getWindow
13
+ };
@@ -0,0 +1,36 @@
1
+ import {
2
+ Cast
3
+ } from "./chunk-QO64L4KB.js";
4
+ import {
5
+ Crossenv
6
+ } from "./chunk-3LVR6KZH.js";
7
+ import {
8
+ Utils
9
+ } from "./chunk-YEBOL67V.js";
10
+
11
+ // src/agnostic/html/hyper-json/transformers/toRef/index.ts
12
+ var toRef = (callerTagName) => {
13
+ return Utils.toNamedTransformer(callerTagName, (currentValue, callerTree) => {
14
+ const { Text } = Crossenv.getWindow();
15
+ if (typeof currentValue !== "string" && !(currentValue instanceof Text)) return Utils.makeTransformerError({
16
+ message: "Current value must be string or Text",
17
+ input: currentValue
18
+ });
19
+ const refPathStr = Cast.toString(currentValue);
20
+ const refPath = Utils.pathStringToPath(refPathStr);
21
+ const foundTree = callerTree.resolve(refPath);
22
+ if (foundTree === void 0) return Utils.makeTransformerError({
23
+ message: "Referenced value has not been found",
24
+ input: refPathStr
25
+ });
26
+ const evaluated = foundTree.evaluate();
27
+ return {
28
+ action: "REPLACE",
29
+ value: evaluated
30
+ };
31
+ });
32
+ };
33
+
34
+ export {
35
+ toRef
36
+ };