@design-edito/tools 0.1.20 → 0.1.22

Sign up to get free protection for your applications and to get access to all the features.
Files changed (221) 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 -8
  4. package/agnostic/arrays/is-array-of/index.js +3 -19
  5. package/agnostic/arrays/make/index.d.ts +3 -0
  6. package/agnostic/arrays/make/index.js +6 -0
  7. package/agnostic/arrays/random-pick/index.d.ts +2 -0
  8. package/agnostic/arrays/random-pick/index.js +8 -0
  9. package/agnostic/css/index.js +13 -13
  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 +16 -0
  15. package/agnostic/html/hyper-json/index.js +40 -0
  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.d.ts +2 -0
  73. package/agnostic/html/index.js +50 -10
  74. package/agnostic/html/replace-in-element/index.d.ts +1 -0
  75. package/agnostic/html/replace-in-element/index.js +6 -0
  76. package/agnostic/html/sanitize/index.js +5 -3
  77. package/agnostic/html/selector-to-element/index.js +5 -3
  78. package/agnostic/html/string-to-nodes/index.js +6 -4
  79. package/agnostic/index.d.ts +0 -2
  80. package/agnostic/misc/{web-crawler → crawler}/index.d.ts +1 -1
  81. package/agnostic/misc/crawler/index.js +7 -0
  82. package/agnostic/misc/crossenv/get-document/index.d.ts +2 -0
  83. package/agnostic/misc/crossenv/get-document/index.js +7 -0
  84. package/agnostic/misc/crossenv/get-window/browser.d.ts +2 -0
  85. package/agnostic/misc/crossenv/get-window/index.d.ts +2 -0
  86. package/agnostic/misc/crossenv/get-window/index.js +6 -0
  87. package/agnostic/misc/crossenv/index.d.ts +4 -1
  88. package/agnostic/misc/crossenv/index.js +3 -1
  89. package/agnostic/misc/crossenv/types.d.ts +3 -0
  90. package/agnostic/misc/index.d.ts +5 -1
  91. package/agnostic/misc/index.js +21 -6
  92. package/agnostic/misc/lorem-ipsum/index.d.ts +5 -0
  93. package/agnostic/misc/lorem-ipsum/index.js +12 -0
  94. package/agnostic/numbers/index.js +5 -5
  95. package/agnostic/objects/index.js +4 -4
  96. package/agnostic/optim/index.js +3 -3
  97. package/agnostic/random/index.js +6 -0
  98. package/agnostic/strings/index.js +9 -9
  99. package/agnostic/time/duration/index.d.ts +26 -0
  100. package/agnostic/time/duration/index.js +6 -0
  101. package/agnostic/time/index.d.ts +8 -7
  102. package/agnostic/time/index.js +17 -28
  103. package/agnostic/time/timeout/index.d.ts +1 -0
  104. package/agnostic/time/timeout/index.js +6 -0
  105. package/agnostic/time/transitions/index.js +7 -0
  106. package/agnostic/time/wait/index.js +6 -0
  107. package/chunks/chunk-2DMWYLFG.js +16 -0
  108. package/chunks/chunk-2PI5AZIL.js +211 -0
  109. package/chunks/chunk-3KQRMKQJ.js +27 -0
  110. package/chunks/chunk-3LVR6KZH.js +22 -0
  111. package/chunks/chunk-3PHPA25U.js +18 -0
  112. package/chunks/chunk-3PM7GZ6B.js +33 -0
  113. package/chunks/chunk-3SQJEEBK.js +642 -0
  114. package/chunks/chunk-3UURICGY.js +211 -0
  115. package/chunks/chunk-3X6RXJBR.js +37 -0
  116. package/chunks/{chunk-DQNJQBC6.js → chunk-4CIS3R7T.js} +1 -1
  117. package/chunks/chunk-4F7ZVE7T.js +332 -0
  118. package/chunks/chunk-4GUDL44X.js +13 -0
  119. package/chunks/chunk-4RDW62CU.js +36 -0
  120. package/chunks/chunk-5IR2PWO6.js +211 -0
  121. package/chunks/chunk-6CM2SWSX.js +35 -0
  122. package/chunks/chunk-6EYBQHJS.js +33 -0
  123. package/chunks/chunk-6NYUQXJT.js +109 -0
  124. package/chunks/chunk-6NZCBAT4.js +19 -0
  125. package/chunks/chunk-6RGDWX4A.js +24 -0
  126. package/chunks/chunk-6V23XMYE.js +982 -0
  127. package/chunks/chunk-73V5RDSG.js +13 -0
  128. package/chunks/chunk-7IGZP4TV.js +30 -0
  129. package/chunks/chunk-7QMAYGNV.js +25 -0
  130. package/chunks/chunk-7YW5HL6N.js +168 -0
  131. package/chunks/chunk-AFFLZUW5.js +33 -0
  132. package/chunks/chunk-AMS3FB24.js +85 -0
  133. package/chunks/chunk-AXMPRLPI.js +35 -0
  134. package/chunks/chunk-B6CSCX7J.js +278 -0
  135. package/chunks/chunk-BDHNULU7.js +211 -0
  136. package/chunks/chunk-BNB7LEMQ.js +35 -0
  137. package/chunks/chunk-CECF6UZV.js +29 -0
  138. package/chunks/chunk-DBAJ66BR.js +18 -0
  139. package/chunks/chunk-DGQLPQS2.js +33 -0
  140. package/chunks/chunk-DLLTITVO.js +33 -0
  141. package/chunks/chunk-DMDOCC72.js +18 -0
  142. package/chunks/{chunk-2H4QYFEP.js → chunk-DRH7Q4FL.js} +3 -6
  143. package/chunks/chunk-DRNK3RLE.js +64 -0
  144. package/chunks/{chunk-C5WKMLKU.js → chunk-EAY65ZP6.js} +1 -1
  145. package/chunks/{chunk-4GDNHUCZ.js → chunk-ENMBK6H7.js} +2 -2
  146. package/chunks/chunk-F5YMP5WU.js +18 -0
  147. package/chunks/chunk-F7EVMWVG.js +27 -0
  148. package/chunks/chunk-F7XWUG2V.js +18 -0
  149. package/chunks/chunk-FCU6IHKD.js +15 -0
  150. package/chunks/chunk-FFOATPL4.js +211 -0
  151. package/chunks/chunk-FWHUASVA.js +22 -0
  152. package/chunks/chunk-GBMHGF7P.js +20 -0
  153. package/chunks/{chunk-GJOU3UAL.js → chunk-GDYVCEWA.js} +8 -6
  154. package/chunks/chunk-GNBIAWSY.js +278 -0
  155. package/chunks/chunk-GQSPY2CV.js +19 -0
  156. package/chunks/chunk-HDALT7XM.js +620 -0
  157. package/chunks/chunk-HUKHWFVL.js +19 -0
  158. package/chunks/chunk-IGD53YL5.js +870 -0
  159. package/chunks/chunk-ILEM73XB.js +981 -0
  160. package/chunks/chunk-IPB3U2PD.js +278 -0
  161. package/chunks/chunk-JY3QZ2YO.js +211 -0
  162. package/chunks/chunk-K3OQEJI3.js +33 -0
  163. package/chunks/chunk-KXBKJ3GS.js +642 -0
  164. package/chunks/chunk-LCFDDWJR.js +278 -0
  165. package/chunks/chunk-LGECI2WL.js +306 -0
  166. package/chunks/chunk-LGUEB5L5.js +211 -0
  167. package/chunks/chunk-LI6QDZCA.js +211 -0
  168. package/chunks/chunk-LYMZZ4BB.js +22 -0
  169. package/chunks/chunk-MDEDNPU5.js +38 -0
  170. package/chunks/chunk-MQHKEGP4.js +33 -0
  171. package/chunks/chunk-NF5ACCXZ.js +211 -0
  172. package/chunks/chunk-NK557MKV.js +35 -0
  173. package/chunks/chunk-NWMEWFTK.js +33 -0
  174. package/chunks/chunk-O5OTBN22.js +35 -0
  175. package/chunks/chunk-O7MDUYEF.js +211 -0
  176. package/chunks/{chunk-FYHRUYTU.js → chunk-OO5SJJDW.js} +2 -5
  177. package/chunks/chunk-Q52UJOBC.js +18 -0
  178. package/chunks/chunk-QFEF4EET.js +211 -0
  179. package/chunks/chunk-QHSVCGLD.js +280 -0
  180. package/chunks/chunk-QO64L4KB.js +97 -0
  181. package/chunks/{chunk-WLL3FNVL.js → chunk-R6KCN6CK.js} +1 -1
  182. package/chunks/chunk-RJ5E22H5.js +15 -0
  183. package/chunks/chunk-RLAZR3NL.js +8 -0
  184. package/chunks/chunk-RWUPHV54.js +25 -0
  185. package/chunks/chunk-S2757FI3.js +36 -0
  186. package/chunks/chunk-S42P73SC.js +30 -0
  187. package/chunks/chunk-S5XDYLJH.js +18 -0
  188. package/chunks/chunk-SCM6NACT.js +15 -0
  189. package/chunks/chunk-SH3Y2I5P.js +18 -0
  190. package/chunks/chunk-SMLKMOAX.js +18 -0
  191. package/chunks/chunk-TATRVKBS.js +211 -0
  192. package/chunks/chunk-UODQZRY2.js +620 -0
  193. package/chunks/chunk-UOULDS6J.js +33 -0
  194. package/chunks/chunk-UUDXUSI5.js +211 -0
  195. package/chunks/{chunk-6ETCY4VK.js → chunk-UWAMSJ2X.js} +3 -6
  196. package/chunks/chunk-UZUXLD2Q.js +35 -0
  197. package/chunks/chunk-VA6HXRX4.js +211 -0
  198. package/chunks/chunk-VRUJR6WR.js +39 -0
  199. package/chunks/chunk-W6YBEEZM.js +211 -0
  200. package/chunks/chunk-WECTUHS5.js +127 -0
  201. package/chunks/chunk-WH6BPDAC.js +17 -0
  202. package/chunks/chunk-YE5HI3RK.js +211 -0
  203. package/chunks/chunk-YEBOL67V.js +32 -0
  204. package/chunks/chunk-YS6WMSWC.js +15 -0
  205. package/{agnostic/misc/web-crawler/index.js → chunks/chunk-YUP434IY.js} +8 -7
  206. package/chunks/chunk-YYE2MVZO.js +211 -0
  207. package/chunks/chunk-Z7ZDDBV5.js +18 -0
  208. package/chunks/chunk-ZB73RE7P.js +35 -0
  209. package/chunks/chunk-ZONKYNKA.js +28 -0
  210. package/package.json +4 -1
  211. package/agnostic/async/index.d.ts +0 -8
  212. package/agnostic/async/index.js +0 -20
  213. package/agnostic/async/timeout-call/index.d.ts +0 -1
  214. package/agnostic/async/timeout-call/index.js +0 -6
  215. package/agnostic/async/transitions/index.js +0 -7
  216. package/agnostic/async/wait/index.js +0 -6
  217. package/agnostic/misc/random/index.js +0 -6
  218. package/chunks/chunk-4VC5PT5T.js +0 -13
  219. /package/agnostic/{misc/random → random}/index.d.ts +0 -0
  220. /package/agnostic/{async → time}/transitions/index.d.ts +0 -0
  221. /package/agnostic/{async → time}/wait/index.d.ts +0 -0
@@ -0,0 +1,278 @@
1
+ import {
2
+ isRecord
3
+ } from "./chunk-YDIBNEGA.js";
4
+ import {
5
+ isInEnum
6
+ } from "./chunk-E6MSDKON.js";
7
+ import {
8
+ isFalsy
9
+ } from "./chunk-QXAJXTXV.js";
10
+
11
+ // src/agnostic/html/hyper-json/index.ts
12
+ var HyperJson;
13
+ ((HyperJson2) => {
14
+ const crossenvWindow = window;
15
+ const document = crossenvWindow.document;
16
+ const Element = crossenvWindow.Element;
17
+ const Text = crossenvWindow.Text;
18
+ const Node = crossenvWindow.Node;
19
+ const isElement = (node) => node.nodeType === Node.ELEMENT_NODE;
20
+ const isText = (node) => node.nodeType === Node.TEXT_NODE;
21
+ let TyperTagName;
22
+ ((TyperTagName2) => {
23
+ TyperTagName2["NULL"] = "null";
24
+ TyperTagName2["BOOLEAN"] = "boolean";
25
+ TyperTagName2["NUMBER"] = "number";
26
+ TyperTagName2["STRING"] = "string";
27
+ TyperTagName2["TEXT"] = "text";
28
+ TyperTagName2["NODELIST"] = "nodelist";
29
+ TyperTagName2["ARRAY"] = "array";
30
+ TyperTagName2["RECORD"] = "record";
31
+ })(TyperTagName = HyperJson2.TyperTagName || (HyperJson2.TyperTagName = {}));
32
+ let TransformerTagName;
33
+ ((TransformerTagName2) => {
34
+ TransformerTagName2["MAP"] = "map";
35
+ TransformerTagName2["REF"] = "ref";
36
+ TransformerTagName2["ADD"] = "add";
37
+ TransformerTagName2["MULT"] = "mult";
38
+ TransformerTagName2["APPEND"] = "append";
39
+ })(TransformerTagName = HyperJson2.TransformerTagName || (HyperJson2.TransformerTagName = {}));
40
+ class Tree {
41
+ node;
42
+ name;
43
+ parent;
44
+ root;
45
+ path;
46
+ pathString;
47
+ tagName;
48
+ attributes;
49
+ subtrees = /* @__PURE__ */ new Map();
50
+ children;
51
+ type;
52
+ constructor(node, parent, pathFromParent) {
53
+ this.initValue = this.initValue.bind(this);
54
+ this.getInnerValue = this.getInnerValue.bind(this);
55
+ this.wrapInnerValue = this.wrapInnerValue.bind(this);
56
+ this.evaluate = this.evaluate.bind(this);
57
+ this.node = node;
58
+ this.name = this.node instanceof Element ? this.node.getAttribute("_name") : null;
59
+ this.parent = parent ?? null;
60
+ this.root = this.parent === null ? this : this.parent.root;
61
+ if (this.parent === null) this.path = [];
62
+ else if (pathFromParent === void 0) {
63
+ this.path = [...this.parent.path, 0];
64
+ } else {
65
+ this.path = [...this.parent.path, pathFromParent];
66
+ }
67
+ this.pathString = `/${this.path.join("/")}`;
68
+ this.tagName = node instanceof Element ? node.tagName.toLowerCase() : null;
69
+ this.attributes = isElement(node) ? Array.from(node.attributes) : null;
70
+ const { childNodes } = node;
71
+ let positionnedChildrenCount = 0;
72
+ const mutableSubtrees = /* @__PURE__ */ new Map();
73
+ Array.from(childNodes).filter((node2) => {
74
+ if (isElement(node2)) return true;
75
+ if (isText(node2)) return true;
76
+ return false;
77
+ }).forEach((childNode) => {
78
+ if (childNode instanceof Text) {
79
+ mutableSubtrees.set(
80
+ positionnedChildrenCount,
81
+ new Tree(childNode, this, positionnedChildrenCount)
82
+ );
83
+ positionnedChildrenCount += 1;
84
+ } else {
85
+ const propertyName = childNode.getAttribute("_name");
86
+ if (propertyName === null) {
87
+ mutableSubtrees.set(
88
+ positionnedChildrenCount,
89
+ new Tree(childNode, this, positionnedChildrenCount)
90
+ );
91
+ positionnedChildrenCount += 1;
92
+ } else {
93
+ mutableSubtrees.set(
94
+ propertyName,
95
+ new Tree(childNode, this, propertyName)
96
+ );
97
+ }
98
+ }
99
+ });
100
+ this.subtrees = mutableSubtrees;
101
+ this.children = Array.from(this.subtrees.values());
102
+ if (this.tagName === null) {
103
+ this.type = "text";
104
+ } else if (this.tagName === "null" /* NULL */) {
105
+ this.type = "null";
106
+ } else if (this.tagName === "boolean" /* BOOLEAN */) {
107
+ this.type = "boolean";
108
+ } else if (this.tagName === "number" /* NUMBER */) {
109
+ this.type = "number";
110
+ } else if (this.tagName === "string" /* STRING */) {
111
+ this.type = "string";
112
+ } else if (this.tagName === "text" /* TEXT */) {
113
+ this.type = "text";
114
+ } else if (this.tagName === "nodelist" /* NODELIST */) {
115
+ this.type = "nodelist";
116
+ } else if (this.tagName === "array" /* ARRAY */) {
117
+ this.type = "array";
118
+ } else if (this.tagName === "record" /* RECORD */) {
119
+ this.type = "record";
120
+ } else if (isInEnum(TransformerTagName, this.tagName)) {
121
+ this.type = "transformer";
122
+ } else {
123
+ this.type = "element";
124
+ }
125
+ }
126
+ initValue() {
127
+ const { type } = this;
128
+ let currentValue;
129
+ if (type === "null") {
130
+ currentValue = null;
131
+ } else if (type === "boolean") {
132
+ currentValue = false;
133
+ } else if (type === "number") {
134
+ currentValue = 0;
135
+ } else if (type === "string") {
136
+ currentValue = "";
137
+ } else if (type === "text") {
138
+ currentValue = this.node.textContent;
139
+ } else if (type === "element") {
140
+ currentValue = document.createDocumentFragment().childNodes;
141
+ } else if (type === "nodelist") {
142
+ currentValue = document.createDocumentFragment().childNodes;
143
+ } else if (type === "array") {
144
+ currentValue = [];
145
+ } else if (type === "record") {
146
+ currentValue = {};
147
+ } else if (type === "transformer") {
148
+ currentValue = [];
149
+ } else {
150
+ currentValue = null;
151
+ }
152
+ return currentValue;
153
+ }
154
+ getInnerValue(initialValue) {
155
+ const { subtrees } = this;
156
+ const innerValue = Array.from(subtrees.entries()).reduce((currentValue, [subpath, subTree]) => {
157
+ if (subTree.type === "transformer") {
158
+ const evaluated = subTree.evaluate();
159
+ return evaluated(currentValue);
160
+ }
161
+ if (currentValue === null || typeof currentValue === "boolean" || typeof currentValue === "number" || typeof currentValue === "string" || currentValue instanceof Text || currentValue instanceof Element) {
162
+ const evaluated = subTree.evaluate();
163
+ if (evaluated === null || typeof evaluated === "boolean" || typeof evaluated === "number" || typeof evaluated === "string" || Array.isArray(evaluated) || isRecord(evaluated)) {
164
+ return evaluated;
165
+ }
166
+ const frag = document.createDocumentFragment();
167
+ frag.append(`${currentValue}`);
168
+ if (evaluated instanceof Element || evaluated instanceof Text) {
169
+ frag.append(evaluated);
170
+ return frag.childNodes;
171
+ }
172
+ frag.append(...Array.from(evaluated));
173
+ return frag.childNodes;
174
+ }
175
+ if (Array.isArray(currentValue)) {
176
+ if (typeof subpath === "string") return currentValue;
177
+ return [...currentValue, subTree.evaluate()];
178
+ }
179
+ if (currentValue instanceof NodeList) {
180
+ const evaluated = subTree.evaluate();
181
+ if (evaluated instanceof Element || evaluated instanceof Text) {
182
+ const frag = document.createDocumentFragment();
183
+ frag.append(...Array.from(currentValue), evaluated);
184
+ return frag.childNodes;
185
+ }
186
+ if (evaluated instanceof NodeList) {
187
+ const frag = document.createDocumentFragment();
188
+ frag.append(
189
+ ...Array.from(currentValue),
190
+ ...Array.from(evaluated)
191
+ );
192
+ return frag.childNodes;
193
+ }
194
+ if (evaluated === null || typeof evaluated === "string" || typeof evaluated === "number" || typeof evaluated === "boolean") {
195
+ const frag = document.createDocumentFragment();
196
+ frag.append(...Array.from(currentValue), `${evaluated}`);
197
+ return frag.childNodes;
198
+ }
199
+ if (Array.isArray(evaluated)) return [...Array.from(currentValue), ...evaluated];
200
+ return { ...evaluated };
201
+ }
202
+ if (typeof subpath === "number") return currentValue;
203
+ return {
204
+ ...currentValue,
205
+ [subpath]: subTree.evaluate()
206
+ };
207
+ }, initialValue);
208
+ return innerValue;
209
+ }
210
+ wrapInnerValue(innerValue) {
211
+ const { type, node } = this;
212
+ if (type === "transformer") return (contextValue) => {
213
+ console.log(`I am a transformer. My name is ${this.tagName}.`);
214
+ console.log("I have this innerValue (these are my params):");
215
+ console.log(innerValue);
216
+ console.log("And this context value:");
217
+ console.log(contextValue);
218
+ return contextValue;
219
+ };
220
+ if (type === "null") return null;
221
+ if (type === "boolean") return !isFalsy(innerValue);
222
+ if (type === "number") return parseFloat(`${innerValue}`);
223
+ if (type === "string") return `${innerValue}`;
224
+ if (type === "array") {
225
+ if (Array.isArray(innerValue)) return innerValue;
226
+ if (innerValue instanceof NodeList) {
227
+ return [...Array.from(innerValue)];
228
+ }
229
+ return [innerValue];
230
+ }
231
+ if (type === "record") {
232
+ if (isRecord(innerValue)) return innerValue;
233
+ return {};
234
+ }
235
+ if (type === "text") return document.createTextNode(`${innerValue}`);
236
+ if (type === "element") {
237
+ const wrapper = node.cloneNode();
238
+ if (innerValue instanceof NodeList) {
239
+ wrapper.append(...Array.from(innerValue));
240
+ return wrapper;
241
+ }
242
+ if (innerValue instanceof Element || innerValue instanceof Text || typeof innerValue === "string") {
243
+ wrapper.append(innerValue);
244
+ return wrapper;
245
+ }
246
+ if (innerValue === null || typeof innerValue === "number" || typeof innerValue === "boolean") {
247
+ wrapper.append(`${innerValue}`);
248
+ return wrapper;
249
+ }
250
+ return wrapper;
251
+ }
252
+ if (innerValue instanceof NodeList) return innerValue;
253
+ if (innerValue instanceof Element || innerValue instanceof Text || typeof innerValue === "string") {
254
+ const frag2 = document.createDocumentFragment();
255
+ frag2.append(innerValue);
256
+ return frag2.childNodes;
257
+ }
258
+ if (innerValue === null || typeof innerValue === "string" || typeof innerValue === "number" || typeof innerValue === "boolean") {
259
+ const frag2 = document.createDocumentFragment();
260
+ frag2.append(`${innerValue}`);
261
+ return frag2.childNodes;
262
+ }
263
+ const frag = document.createDocumentFragment();
264
+ return frag.childNodes;
265
+ }
266
+ evaluate() {
267
+ const init = this.initValue();
268
+ const inner = this.getInnerValue(init);
269
+ const wrapped = this.wrapInnerValue(inner);
270
+ return wrapped;
271
+ }
272
+ }
273
+ HyperJson2.Tree = Tree;
274
+ })(HyperJson || (HyperJson = {}));
275
+
276
+ export {
277
+ HyperJson
278
+ };
@@ -0,0 +1,306 @@
1
+ import {
2
+ Serialize
3
+ } from "./chunk-DRNK3RLE.js";
4
+ import {
5
+ Transformers
6
+ } from "./chunk-GQSPY2CV.js";
7
+ import {
8
+ Types
9
+ } from "./chunk-3KQRMKQJ.js";
10
+ import {
11
+ Cast
12
+ } from "./chunk-AMS3FB24.js";
13
+ import {
14
+ Crossenv
15
+ } from "./chunk-3LVR6KZH.js";
16
+ import {
17
+ isRecord
18
+ } from "./chunk-YDIBNEGA.js";
19
+ import {
20
+ isInEnum
21
+ } from "./chunk-E6MSDKON.js";
22
+
23
+ // src/agnostic/html/hyper-json/tree/index.ts
24
+ var getWindow = Crossenv.getWindow;
25
+ var isElement = (node) => node.nodeType === getWindow().Node.ELEMENT_NODE;
26
+ var isText = (node) => node.nodeType === getWindow().Node.TEXT_NODE;
27
+ var Tree = class _Tree {
28
+ node;
29
+ name;
30
+ parent;
31
+ root;
32
+ path;
33
+ pathString;
34
+ tagName;
35
+ attributes;
36
+ subtrees = /* @__PURE__ */ new Map();
37
+ children;
38
+ type;
39
+ constructor(node, parent, pathFromParent) {
40
+ this.resolve = this.resolve.bind(this);
41
+ this.initValue = this.initValue.bind(this);
42
+ this.mergeValues = this.mergeValues.bind(this);
43
+ this.getInnerValue = this.getInnerValue.bind(this);
44
+ this.wrapInnerValue = this.wrapInnerValue.bind(this);
45
+ this.setCache = this.setCache.bind(this);
46
+ this.getPerfCounters = this.getPerfCounters.bind(this);
47
+ this.printPerfCounters = this.printPerfCounters.bind(this);
48
+ this.evaluate = this.evaluate.bind(this);
49
+ this.node = node;
50
+ this.name = this.node instanceof getWindow().Element ? this.node.getAttribute("_name") : null;
51
+ this.parent = parent ?? null;
52
+ this.root = this.parent === null ? this : this.parent.root;
53
+ if (this.parent === null) this.path = [];
54
+ else if (pathFromParent === void 0) {
55
+ this.path = [...this.parent.path, 0];
56
+ } else {
57
+ this.path = [...this.parent.path, pathFromParent];
58
+ }
59
+ this.pathString = `/${this.path.join("/")}`;
60
+ this.tagName = node instanceof getWindow().Element ? node.tagName.toLowerCase() : null;
61
+ this.attributes = isElement(node) ? Array.from(node.attributes) : null;
62
+ const { childNodes } = node;
63
+ let positionnedChildrenCount = 0;
64
+ const mutableSubtrees = /* @__PURE__ */ new Map();
65
+ Array.from(childNodes).filter((node2, _, nodes) => {
66
+ if (isElement(node2)) return true;
67
+ if (isText(node2)) {
68
+ const hasContent = (node2.textContent ?? "").trim() !== "";
69
+ if (hasContent) return true;
70
+ if (nodes.some((n) => n instanceof getWindow().Element)) return false;
71
+ return true;
72
+ }
73
+ return false;
74
+ }).forEach((childNode) => {
75
+ if (childNode instanceof getWindow().Text) {
76
+ mutableSubtrees.set(
77
+ positionnedChildrenCount,
78
+ new _Tree(childNode, this, positionnedChildrenCount)
79
+ );
80
+ positionnedChildrenCount += 1;
81
+ } else {
82
+ const propertyName = childNode.getAttribute("_name");
83
+ if (propertyName === null) {
84
+ mutableSubtrees.set(
85
+ positionnedChildrenCount,
86
+ new _Tree(childNode, this, positionnedChildrenCount)
87
+ );
88
+ positionnedChildrenCount += 1;
89
+ } else {
90
+ mutableSubtrees.set(
91
+ propertyName,
92
+ new _Tree(childNode, this, propertyName)
93
+ );
94
+ }
95
+ }
96
+ });
97
+ this.subtrees = mutableSubtrees;
98
+ this.children = Array.from(this.subtrees.values());
99
+ if (this.tagName === null) {
100
+ this.type = "text";
101
+ } else if (this.tagName === Types.TyperTagName.NULL) {
102
+ this.type = "null";
103
+ } else if (this.tagName === Types.TyperTagName.BOOLEAN) {
104
+ this.type = "boolean";
105
+ } else if (this.tagName === Types.TyperTagName.NUMBER) {
106
+ this.type = "number";
107
+ } else if (this.tagName === Types.TyperTagName.STRING) {
108
+ this.type = "string";
109
+ } else if (this.tagName === Types.TyperTagName.TEXT) {
110
+ this.type = "text";
111
+ } else if (this.tagName === Types.TyperTagName.NODELIST) {
112
+ this.type = "nodelist";
113
+ } else if (this.tagName === Types.TyperTagName.ARRAY) {
114
+ this.type = "array";
115
+ } else if (this.tagName === Types.TyperTagName.RECORD) {
116
+ this.type = "record";
117
+ } else if (isInEnum(Types.TransformerTagName, this.tagName)) {
118
+ this.type = "transformer";
119
+ } else {
120
+ this.type = "element";
121
+ }
122
+ }
123
+ resolve = function(path) {
124
+ let currentTree = this.root;
125
+ for (const chunk of path) {
126
+ const { subtrees } = currentTree;
127
+ const foundSubtree = subtrees.get(chunk);
128
+ if (foundSubtree === void 0) return void 0;
129
+ currentTree = foundSubtree;
130
+ }
131
+ return currentTree;
132
+ };
133
+ initValue() {
134
+ const { type } = this;
135
+ let currentValue;
136
+ if (type === "null") {
137
+ currentValue = null;
138
+ } else if (type === "boolean") {
139
+ currentValue = false;
140
+ } else if (type === "number") {
141
+ currentValue = 0;
142
+ } else if (type === "string") {
143
+ currentValue = "";
144
+ } else if (type === "text") {
145
+ currentValue = this.node.textContent;
146
+ } else if (type === "element") {
147
+ currentValue = getWindow().document.createDocumentFragment().childNodes;
148
+ } else if (type === "nodelist") {
149
+ currentValue = getWindow().document.createDocumentFragment().childNodes;
150
+ } else if (type === "array") {
151
+ currentValue = [];
152
+ } else if (type === "record") {
153
+ currentValue = {};
154
+ } else if (type === "transformer") {
155
+ currentValue = [];
156
+ } else {
157
+ currentValue = null;
158
+ }
159
+ return currentValue;
160
+ }
161
+ mergeValues(currentValue, incomingValue, mergeKey) {
162
+ const { Element, Text, NodeList, document } = getWindow();
163
+ if (typeof incomingValue === "function") {
164
+ const evaluated = incomingValue(currentValue, { resolver: this.resolve });
165
+ if (evaluated.action === null) return currentValue;
166
+ if (evaluated.action === "REPLACE") return evaluated.value;
167
+ return this.mergeValues(currentValue, evaluated.value, mergeKey);
168
+ }
169
+ if (Array.isArray(currentValue)) {
170
+ if (typeof mergeKey === "string") return currentValue;
171
+ return [...currentValue, incomingValue];
172
+ }
173
+ if (currentValue === null || typeof currentValue === "boolean" || typeof currentValue === "number" || typeof currentValue === "string" || typeof currentValue === "function" || currentValue instanceof Text || currentValue instanceof Element) {
174
+ if (incomingValue === null || typeof incomingValue === "boolean" || typeof incomingValue === "number" || typeof incomingValue === "string" || Array.isArray(incomingValue) || isRecord(incomingValue)) {
175
+ return incomingValue;
176
+ }
177
+ const frag = document.createDocumentFragment();
178
+ if (currentValue instanceof Element || currentValue instanceof Text) frag.append(currentValue.cloneNode(true));
179
+ else frag.append(`${currentValue}`);
180
+ if (incomingValue instanceof Element || incomingValue instanceof Text) {
181
+ frag.append(incomingValue.cloneNode(true));
182
+ return frag.childNodes;
183
+ }
184
+ frag.append(...Array.from(incomingValue).map((e) => e.cloneNode(true)));
185
+ return frag.childNodes;
186
+ }
187
+ if (currentValue instanceof NodeList) {
188
+ if (incomingValue instanceof Element || incomingValue instanceof Text) {
189
+ const frag = document.createDocumentFragment();
190
+ frag.append(...Array.from(currentValue).map((e) => e.cloneNode(true)), incomingValue);
191
+ return frag.childNodes;
192
+ }
193
+ if (incomingValue instanceof NodeList) {
194
+ const frag = document.createDocumentFragment();
195
+ frag.append(
196
+ ...Array.from(currentValue).map((e) => e.cloneNode(true)),
197
+ ...Array.from(incomingValue).map((e) => e.cloneNode(true))
198
+ );
199
+ return frag.childNodes;
200
+ }
201
+ if (incomingValue === null || typeof incomingValue === "string" || typeof incomingValue === "number" || typeof incomingValue === "boolean") {
202
+ const frag = document.createDocumentFragment();
203
+ frag.append(...Array.from(currentValue).map((e) => e.cloneNode(true)), `${incomingValue}`);
204
+ return frag.childNodes;
205
+ }
206
+ if (Array.isArray(incomingValue)) return [
207
+ ...Array.from(currentValue),
208
+ ...incomingValue
209
+ ];
210
+ return { ...incomingValue };
211
+ }
212
+ if (typeof mergeKey === "number") return currentValue;
213
+ return {
214
+ ...currentValue,
215
+ [mergeKey]: incomingValue
216
+ };
217
+ }
218
+ getInnerValue(initialValue) {
219
+ const { subtrees } = this;
220
+ const innerValue = Array.from(subtrees.entries()).reduce((currentValue, [subpath, subtree]) => this.mergeValues(
221
+ currentValue,
222
+ subtree.evaluate(),
223
+ subpath
224
+ ), initialValue);
225
+ return innerValue;
226
+ }
227
+ wrapInnerValue(innerValue) {
228
+ const { type } = this;
229
+ if (type === "transformer") {
230
+ const transformerName = this.tagName;
231
+ const generator = Transformers.get(transformerName);
232
+ if (generator === void 0) return innerValue;
233
+ const transformer = Array.isArray(innerValue) ? generator(...innerValue) : generator(innerValue);
234
+ return transformer;
235
+ }
236
+ if (type === "null") return Cast.toNull();
237
+ if (type === "boolean") return Cast.toBoolean(innerValue);
238
+ if (type === "number") return Cast.toNumber(innerValue);
239
+ if (type === "string") return Cast.toString(innerValue);
240
+ if (type === "array") return Cast.toArray(innerValue);
241
+ if (type === "record") return Cast.toRecord(innerValue);
242
+ if (type === "text") return Cast.toText(innerValue);
243
+ if (type === "element") return Cast.toElement(innerValue);
244
+ if (type === "nodelist") return Cast.toNodeList(innerValue);
245
+ return Cast.toNull();
246
+ }
247
+ cache = void 0;
248
+ setCache(value) {
249
+ this.cache = Serialize.serialize(value);
250
+ }
251
+ perfCounters = {
252
+ computed: 0,
253
+ computeTime: 0,
254
+ computeTimeAvg: 0,
255
+ cached: 0,
256
+ cacheTime: 0,
257
+ cacheTimeAvg: 0,
258
+ totalTime: 0
259
+ };
260
+ getPerfCounters() {
261
+ const { subtrees } = this;
262
+ const subCounters = [];
263
+ subCounters.push([this.pathString, this.perfCounters]);
264
+ subtrees.forEach((subtree) => subCounters.push(...subtree.getPerfCounters()));
265
+ return subCounters;
266
+ }
267
+ printPerfCounters() {
268
+ const perfCounters = this.getPerfCounters().sort((a, b) => b[1].totalTime - a[1].totalTime).map((e) => ({
269
+ path: e[0],
270
+ totalMs: e[1].totalTime,
271
+ computeMs: e[1].computeTime,
272
+ cacheMs: e[1].cacheTime,
273
+ ops: `${e[1].computed}/${e[1].cached}`
274
+ }));
275
+ console.table(perfCounters);
276
+ }
277
+ evaluate() {
278
+ const start = Date.now();
279
+ const { perfCounters, cache } = this;
280
+ if (cache !== void 0) {
281
+ const deserialized = Serialize.deserialize(cache);
282
+ const end2 = Date.now();
283
+ const time2 = end2 - start;
284
+ perfCounters.cached++;
285
+ perfCounters.cacheTime += time2;
286
+ perfCounters.cacheTimeAvg = perfCounters.cacheTime / perfCounters.cached;
287
+ perfCounters.totalTime = perfCounters.computeTime + perfCounters.cacheTime;
288
+ return deserialized;
289
+ }
290
+ const init = this.initValue();
291
+ const inner = this.getInnerValue(init);
292
+ const wrapped = this.wrapInnerValue(inner);
293
+ this.setCache(wrapped);
294
+ const end = Date.now();
295
+ const time = end - start;
296
+ perfCounters.computed++;
297
+ perfCounters.computeTime += time;
298
+ perfCounters.computeTimeAvg = perfCounters.computeTime / perfCounters.computed;
299
+ perfCounters.totalTime = perfCounters.computeTime + perfCounters.cacheTime;
300
+ return wrapped;
301
+ }
302
+ };
303
+
304
+ export {
305
+ Tree
306
+ };