@design-edito/tools 0.4.4 → 0.4.6

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 (526) hide show
  1. package/TODO.md +269 -0
  2. package/agnostic/arrays/dedupe/index.js +9 -9
  3. package/agnostic/arrays/dedupe/index.test.js +24 -0
  4. package/agnostic/arrays/find-duplicates/index.js +34 -24
  5. package/agnostic/arrays/find-duplicates/index.test.js +31 -0
  6. package/agnostic/arrays/index.d.ts +1 -1
  7. package/agnostic/arrays/index.js +1 -1
  8. package/agnostic/arrays/is-array-of/index.js +28 -26
  9. package/agnostic/arrays/is-array-of/index.test.js +56 -0
  10. package/agnostic/arrays/make/index.js +11 -8
  11. package/agnostic/arrays/make/index.test.js +10 -0
  12. package/agnostic/arrays/random-pick/index.js +40 -9
  13. package/agnostic/arrays/random-pick/index.test.js +23 -0
  14. package/agnostic/arrays/shuffle/index.js +15 -13
  15. package/agnostic/arrays/shuffle/index.test.js +14 -0
  16. package/agnostic/booleans/is-falsy/index.js +26 -12
  17. package/agnostic/booleans/is-falsy/index.test.js +26 -0
  18. package/agnostic/colors/channels/index.js +145 -19
  19. package/agnostic/colors/channels/index.test.js +64 -0
  20. package/agnostic/colors/contrast/index.js +23 -30
  21. package/agnostic/colors/contrast/index.test.js +21 -0
  22. package/agnostic/colors/convert/index.js +839 -46
  23. package/agnostic/colors/convert/index.test.js +98 -0
  24. package/agnostic/colors/cssColorsMap.js +153 -0
  25. package/agnostic/colors/distance/index.js +65 -53
  26. package/agnostic/colors/distance/index.test.js +21 -0
  27. package/agnostic/colors/grayscale/index.js +96 -137
  28. package/agnostic/colors/grayscale/index.test.js +34 -0
  29. package/agnostic/colors/invert/index.js +33 -44
  30. package/agnostic/colors/invert/index.test.js +31 -0
  31. package/agnostic/colors/lerp/index.js +74 -88
  32. package/agnostic/colors/lerp/index.test.js +55 -0
  33. package/agnostic/colors/luminance/index.js +19 -13
  34. package/agnostic/colors/luminance/index.test.js +30 -0
  35. package/agnostic/colors/palette/index.js +80 -87
  36. package/agnostic/colors/palette/index.test.js +35 -0
  37. package/agnostic/colors/rotate/index.js +41 -14
  38. package/agnostic/colors/rotate/index.test.js +45 -0
  39. package/agnostic/colors/tidy/index.js +80 -12
  40. package/agnostic/colors/tidy/index.test.js +45 -0
  41. package/agnostic/colors/typechecks/index.js +196 -25
  42. package/agnostic/colors/typechecks/index.test.js +113 -0
  43. package/agnostic/colors/types.js +1 -0
  44. package/agnostic/css/bem/index.js +135 -160
  45. package/agnostic/css/clss/index.js +66 -7
  46. package/agnostic/css/clss/index.test.js +60 -0
  47. package/agnostic/css/generate-nice-color/index.js +26 -73
  48. package/agnostic/css/generate-nice-color/index.test.js +8 -0
  49. package/agnostic/css/index.d.ts +1 -1
  50. package/agnostic/css/index.js +1 -1
  51. package/agnostic/css/is-valid-css-class-name/index.js +15 -9
  52. package/agnostic/css/is-valid-css-class-name/index.test.js +36 -0
  53. package/agnostic/css/scale/index.js +37 -37
  54. package/agnostic/css/scale/index.test.js +71 -0
  55. package/agnostic/css/styles-set/index.js +151 -169
  56. package/agnostic/errors/register/index.js +45 -51
  57. package/agnostic/errors/unknown-to-string/index.js +18 -7
  58. package/agnostic/errors/unknown-to-string/index.test.js +35 -0
  59. package/agnostic/html/get-node-ancestors/index.js +31 -8
  60. package/agnostic/html/get-node-ancestors/index.test.js +58 -0
  61. package/agnostic/html/get-position-inside-parent/index.js +13 -10
  62. package/agnostic/html/get-position-inside-parent/index.test.js +56 -0
  63. package/agnostic/html/hyper-json/cast/index.js +137 -24
  64. package/agnostic/html/hyper-json/index.js +23 -50
  65. package/agnostic/html/hyper-json/method/index.js +10 -7
  66. package/agnostic/html/hyper-json/serialize/index.js +91 -11
  67. package/agnostic/html/hyper-json/smart-tags/coalesced/add/index.js +16 -24
  68. package/agnostic/html/hyper-json/smart-tags/coalesced/addclass/index.js +30 -24
  69. package/agnostic/html/hyper-json/smart-tags/coalesced/and/index.js +15 -24
  70. package/agnostic/html/hyper-json/smart-tags/coalesced/append/index.js +36 -24
  71. package/agnostic/html/hyper-json/smart-tags/coalesced/at/index.js +47 -24
  72. package/agnostic/html/hyper-json/smart-tags/coalesced/call/index.js +50 -24
  73. package/agnostic/html/hyper-json/smart-tags/coalesced/clone/index.js +11 -24
  74. package/agnostic/html/hyper-json/smart-tags/coalesced/deleteproperties/index.js +49 -24
  75. package/agnostic/html/hyper-json/smart-tags/coalesced/equals/index.js +24 -24
  76. package/agnostic/html/hyper-json/smart-tags/coalesced/getattribute/index.js +28 -24
  77. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperties/index.js +21 -24
  78. package/agnostic/html/hyper-json/smart-tags/coalesced/getproperty/index.js +73 -26
  79. package/agnostic/html/hyper-json/smart-tags/coalesced/hjparse/index.js +24 -24
  80. package/agnostic/html/hyper-json/smart-tags/coalesced/hjstringify/index.js +93 -28
  81. package/agnostic/html/hyper-json/smart-tags/coalesced/if/index.js +22 -24
  82. package/agnostic/html/hyper-json/smart-tags/coalesced/index.d.ts +14 -14
  83. package/agnostic/html/hyper-json/smart-tags/coalesced/index.js +14 -14
  84. package/agnostic/html/hyper-json/smart-tags/coalesced/initialize/index.js +39 -24
  85. package/agnostic/html/hyper-json/smart-tags/coalesced/join/index.js +18 -24
  86. package/agnostic/html/hyper-json/smart-tags/coalesced/length/index.js +23 -24
  87. package/agnostic/html/hyper-json/smart-tags/coalesced/map/index.js +33 -24
  88. package/agnostic/html/hyper-json/smart-tags/coalesced/negate/index.js +11 -24
  89. package/agnostic/html/hyper-json/smart-tags/coalesced/notrailing/index.js +35 -24
  90. package/agnostic/html/hyper-json/smart-tags/coalesced/or/index.js +15 -24
  91. package/agnostic/html/hyper-json/smart-tags/coalesced/pickrandom/index.js +19 -24
  92. package/agnostic/html/hyper-json/smart-tags/coalesced/populate/index.js +61 -24
  93. package/agnostic/html/hyper-json/smart-tags/coalesced/print/index.js +25 -24
  94. package/agnostic/html/hyper-json/smart-tags/coalesced/push/index.js +11 -24
  95. package/agnostic/html/hyper-json/smart-tags/coalesced/pusheach/index.js +28 -24
  96. package/agnostic/html/hyper-json/smart-tags/coalesced/recordtoarray/index.js +11 -24
  97. package/agnostic/html/hyper-json/smart-tags/coalesced/removeattribute/index.js +58 -24
  98. package/agnostic/html/hyper-json/smart-tags/coalesced/removeclass/index.js +30 -24
  99. package/agnostic/html/hyper-json/smart-tags/coalesced/renameproperty/index.js +34 -24
  100. package/agnostic/html/hyper-json/smart-tags/coalesced/replace/index.js +56 -26
  101. package/agnostic/html/hyper-json/smart-tags/coalesced/select/index.js +34 -24
  102. package/agnostic/html/hyper-json/smart-tags/coalesced/set/index.js +31 -24
  103. package/agnostic/html/hyper-json/smart-tags/coalesced/setattribute/index.js +58 -24
  104. package/agnostic/html/hyper-json/smart-tags/coalesced/setproperty/index.js +237 -26
  105. package/agnostic/html/hyper-json/smart-tags/coalesced/sorton/index.js +93 -24
  106. package/agnostic/html/hyper-json/smart-tags/coalesced/split/index.js +22 -24
  107. package/agnostic/html/hyper-json/smart-tags/coalesced/spread/index.js +24 -24
  108. package/agnostic/html/hyper-json/smart-tags/coalesced/toarray/index.js +12 -24
  109. package/agnostic/html/hyper-json/smart-tags/coalesced/toboolean/index.js +12 -24
  110. package/agnostic/html/hyper-json/smart-tags/coalesced/toelement/index.js +19 -24
  111. package/agnostic/html/hyper-json/smart-tags/coalesced/toggleclass/index.js +30 -24
  112. package/agnostic/html/hyper-json/smart-tags/coalesced/tonodelist/index.js +12 -24
  113. package/agnostic/html/hyper-json/smart-tags/coalesced/tonull/index.js +11 -24
  114. package/agnostic/html/hyper-json/smart-tags/coalesced/tonumber/index.js +12 -24
  115. package/agnostic/html/hyper-json/smart-tags/coalesced/torecord/index.js +12 -24
  116. package/agnostic/html/hyper-json/smart-tags/coalesced/toref/index.js +12 -24
  117. package/agnostic/html/hyper-json/smart-tags/coalesced/tostring/index.js +12 -24
  118. package/agnostic/html/hyper-json/smart-tags/coalesced/totext/index.js +12 -24
  119. package/agnostic/html/hyper-json/smart-tags/coalesced/transformselected/index.js +86 -24
  120. package/agnostic/html/hyper-json/smart-tags/coalesced/trim/index.js +16 -24
  121. package/agnostic/html/hyper-json/smart-tags/index.js +31 -10
  122. package/agnostic/html/hyper-json/smart-tags/isolated/any/index.js +14 -11
  123. package/agnostic/html/hyper-json/smart-tags/isolated/array/index.js +14 -11
  124. package/agnostic/html/hyper-json/smart-tags/isolated/boolean/index.js +13 -24
  125. package/agnostic/html/hyper-json/smart-tags/isolated/element/index.js +26 -24
  126. package/agnostic/html/hyper-json/smart-tags/isolated/get/index.js +20 -24
  127. package/agnostic/html/hyper-json/smart-tags/isolated/guess/index.js +59 -24
  128. package/agnostic/html/hyper-json/smart-tags/isolated/index.d.ts +1 -1
  129. package/agnostic/html/hyper-json/smart-tags/isolated/index.js +1 -1
  130. package/agnostic/html/hyper-json/smart-tags/isolated/nodelist/index.js +20 -24
  131. package/agnostic/html/hyper-json/smart-tags/isolated/null/index.js +10 -11
  132. package/agnostic/html/hyper-json/smart-tags/isolated/number/index.js +18 -24
  133. package/agnostic/html/hyper-json/smart-tags/isolated/record/index.js +14 -24
  134. package/agnostic/html/hyper-json/smart-tags/isolated/ref/index.js +45 -25
  135. package/agnostic/html/hyper-json/smart-tags/isolated/string/index.js +18 -24
  136. package/agnostic/html/hyper-json/smart-tags/isolated/text/index.js +20 -24
  137. package/agnostic/html/hyper-json/transformer/index.js +113 -9
  138. package/agnostic/html/hyper-json/tree/index.js +423 -24
  139. package/agnostic/html/hyper-json/types/index.js +28 -7
  140. package/agnostic/html/hyper-json/utils/index.js +516 -24
  141. package/agnostic/html/index.d.ts +2 -2
  142. package/agnostic/html/index.js +2 -2
  143. package/agnostic/html/insert-node/index.js +28 -7
  144. package/agnostic/html/insert-node/index.test.js +73 -0
  145. package/agnostic/html/placeholders/index.js +26 -31
  146. package/agnostic/html/replace-in-element/index.js +31 -25
  147. package/agnostic/html/replace-in-element/index.test.js +80 -0
  148. package/agnostic/html/selector-to-element/index.js +53 -33
  149. package/agnostic/html/selector-to-element/index.test.js +69 -0
  150. package/agnostic/html/string-to-nodes/index.js +24 -19
  151. package/agnostic/html/string-to-nodes/index.test.js +54 -0
  152. package/agnostic/index.d.ts +1 -1
  153. package/agnostic/index.js +1 -1
  154. package/agnostic/misc/assert/index.js +60 -58
  155. package/agnostic/misc/cast/index.js +132 -23
  156. package/agnostic/misc/cast/index.test.js +134 -0
  157. package/agnostic/misc/connection/index.js +55 -30
  158. package/agnostic/misc/connection/index.test.js +143 -0
  159. package/agnostic/misc/crawler/index.js +68 -44
  160. package/agnostic/misc/crawler/index.test.js +56 -0
  161. package/agnostic/misc/crossenv/detect-runtime/index.js +41 -16
  162. package/agnostic/misc/crossenv/detect-runtime/index.test.js +24 -0
  163. package/agnostic/misc/crossenv/types.js +21 -7
  164. package/agnostic/misc/crossenv/window/index.js +49 -13
  165. package/agnostic/misc/crossenv/window/index.test.js +24 -0
  166. package/agnostic/misc/data-size/index.js +182 -296
  167. package/agnostic/misc/data-size/index.test.js +100 -0
  168. package/agnostic/misc/data-size/types.js +1 -0
  169. package/agnostic/misc/index.d.ts +1 -1
  170. package/agnostic/misc/index.js +1 -1
  171. package/agnostic/misc/is-constructor-function/index.js +13 -7
  172. package/agnostic/misc/is-constructor-function/index.test.js +36 -0
  173. package/agnostic/misc/is-nullish/index.js +26 -11
  174. package/agnostic/misc/is-nullish/index.test.js +44 -0
  175. package/agnostic/misc/logs/logger/index.js +115 -142
  176. package/agnostic/misc/logs/make-text-block/index.js +14 -7
  177. package/agnostic/misc/logs/styles/index.js +30 -7
  178. package/agnostic/misc/lorem-ipsum/index.js +51 -186
  179. package/agnostic/misc/lorem-ipsum/index.test.js +49 -0
  180. package/agnostic/misc/normalize-extension/index.js +99 -90
  181. package/agnostic/misc/normalize-extension/index.test.js +40 -0
  182. package/agnostic/misc/outcome/index.js +21 -11
  183. package/agnostic/misc/outcome/index.test.js +40 -0
  184. package/agnostic/numbers/absolute-modulo/index.js +10 -7
  185. package/agnostic/numbers/absolute-modulo/index.test.js +23 -0
  186. package/agnostic/numbers/approximate-rational/index.js +86 -71
  187. package/agnostic/numbers/approximate-rational/index.test.js +90 -0
  188. package/agnostic/numbers/clamp/index.js +13 -7
  189. package/agnostic/numbers/clamp/index.test.js +24 -0
  190. package/agnostic/numbers/geometric-progressions/index.js +26 -7
  191. package/agnostic/numbers/geometric-progressions/index.test.js +45 -0
  192. package/agnostic/numbers/index.d.ts +1 -1
  193. package/agnostic/numbers/index.js +1 -1
  194. package/agnostic/numbers/interpolate/index.js +25 -12
  195. package/agnostic/numbers/interpolate/index.test.js +40 -0
  196. package/agnostic/numbers/round/index.js +33 -11
  197. package/agnostic/numbers/round/index.test.js +56 -0
  198. package/agnostic/objects/deep-get-property/index.js +30 -26
  199. package/agnostic/objects/deep-get-property/index.test.js +59 -0
  200. package/agnostic/objects/enums/is-in-enum/index.js +18 -7
  201. package/agnostic/objects/enums/is-in-enum/index.test.js +100 -0
  202. package/agnostic/objects/flatten-getters/index.js +15 -16
  203. package/agnostic/objects/flatten-getters/index.test.js +78 -0
  204. package/agnostic/objects/index.d.ts +3 -3
  205. package/agnostic/objects/index.js +3 -3
  206. package/agnostic/objects/is-object/index.js +18 -9
  207. package/agnostic/objects/is-object/index.test.js +60 -0
  208. package/agnostic/objects/is-record/index.js +13 -7
  209. package/agnostic/objects/is-record/index.test.js +48 -0
  210. package/agnostic/objects/record-format/index.js +18 -14
  211. package/agnostic/objects/record-format/index.test.js +92 -0
  212. package/agnostic/objects/record-map/index.js +18 -7
  213. package/agnostic/objects/record-map/index.test.js +56 -0
  214. package/agnostic/objects/sort-keys/index.js +15 -13
  215. package/agnostic/objects/sort-keys/index.test.js +37 -0
  216. package/agnostic/objects/validation/index.js +21 -10
  217. package/agnostic/objects/validation/index.test.js +72 -0
  218. package/agnostic/optim/index.d.ts +1 -1
  219. package/agnostic/optim/index.js +1 -1
  220. package/agnostic/optim/memoize/index.js +24 -18
  221. package/agnostic/optim/memoize/index.test.js +30 -0
  222. package/agnostic/optim/throttle-debounce/index.js +120 -104
  223. package/agnostic/optim/throttle-debounce/index.test.js +44 -0
  224. package/agnostic/optim/throttle-debounce/types.js +1 -0
  225. package/agnostic/random/hex-char/index.js +9 -9
  226. package/agnostic/random/hex-char/index.test.js +20 -0
  227. package/agnostic/random/index.d.ts +1 -1
  228. package/agnostic/random/index.js +1 -1
  229. package/agnostic/random/random/index.js +19 -9
  230. package/agnostic/random/random/index.test.js +73 -0
  231. package/agnostic/random/uuid/index.js +31 -12
  232. package/agnostic/random/uuid/index.test.js +45 -0
  233. package/agnostic/regexps/index.js +126 -86
  234. package/agnostic/regexps/index.test.js +108 -0
  235. package/agnostic/sanitization/file-name/index.js +25 -7
  236. package/agnostic/sanitization/file-name/index.test.js +23 -0
  237. package/agnostic/sanitization/html/index.js +172 -116
  238. package/agnostic/sanitization/path/index.js +23 -13
  239. package/agnostic/sanitization/path/index.test.js +18 -0
  240. package/agnostic/sanitization/types.js +1 -0
  241. package/agnostic/sanitization/user-input/index.js +36 -26
  242. package/agnostic/sanitization/user-input/index.test.js +31 -0
  243. package/agnostic/strings/char-codes/index.js +123 -57
  244. package/agnostic/strings/matches/index.js +38 -11
  245. package/agnostic/strings/normalize-indent/index.js +34 -18
  246. package/agnostic/strings/parse-table/index.js +153 -84
  247. package/agnostic/strings/replace-all/index.js +36 -17
  248. package/agnostic/strings/to-alphanum/index.js +23 -10
  249. package/agnostic/strings/trim/index.js +24 -9
  250. package/agnostic/time/dates/format-date/index.js +140 -74
  251. package/agnostic/time/duration/index.js +106 -142
  252. package/agnostic/time/timeout/index.js +24 -18
  253. package/agnostic/time/transitions/index.js +200 -156
  254. package/agnostic/time/wait/index.js +11 -7
  255. package/agnostic/typescript/types.js +1 -0
  256. package/components/BeforeAfter/index.controlled.js +95 -0
  257. package/components/BeforeAfter/index.js +54 -152
  258. package/components/BeforeAfter/utils.js +9 -0
  259. package/components/Disclaimer/index.js +50 -9
  260. package/components/Drawer/index.js +82 -88
  261. package/components/EventListener/index.js +29 -47
  262. package/components/Gallery/index.js +146 -190
  263. package/components/Gallery/utils.js +12 -0
  264. package/components/Image/index.js +67 -106
  265. package/components/IntersectionObserver/index.js +62 -9
  266. package/components/Overlayer/index.js +59 -66
  267. package/components/Paginator/index.js +125 -9
  268. package/components/ResizeObserver/index.js +68 -9
  269. package/components/ResizeObserver/style.module.css +0 -0
  270. package/components/Scrllgngn/index.js +176 -183
  271. package/components/ScrollListener/index.js +97 -171
  272. package/components/ScrollListener/utils.js +51 -0
  273. package/components/Sequencer/index.controlled.js +67 -0
  274. package/components/Sequencer/index.js +105 -160
  275. package/components/ShadowRoot/index.js +42 -63
  276. package/components/Subtitles/index.js +107 -13
  277. package/components/Subtitles/types.js +1 -0
  278. package/components/Subtitles/utils.js +102 -0
  279. package/components/Theatre/index.js +89 -9
  280. package/components/UIModule/index.js +156 -146
  281. package/components/Video/index.d.ts +10 -0
  282. package/components/Video/index.js +292 -503
  283. package/components/Video/utils.js +137 -0
  284. package/components/_WIP_AudioQuote/index.js +1 -0
  285. package/components/_WIP_Icon/index.js +1 -0
  286. package/components/index.d.ts +2 -2
  287. package/components/index.js +2 -2
  288. package/components/public-classnames.js +18 -0
  289. package/components/utils/index.js +12 -7
  290. package/components/utils/types.js +1 -0
  291. package/index.d.ts +1 -2
  292. package/index.js +1 -2
  293. package/node/@aws-s3/index.test.js +6 -0
  294. package/node/@aws-s3/storage/directory/copy-dir/index.js +68 -9
  295. package/node/@aws-s3/storage/directory/index.d.ts +1 -1
  296. package/node/@aws-s3/storage/directory/index.js +1 -1
  297. package/node/@aws-s3/storage/directory/list/index.js +33 -9
  298. package/node/@aws-s3/storage/directory/move-dir/index.js +69 -9
  299. package/node/@aws-s3/storage/directory/remove-dir/index.js +59 -9
  300. package/node/@aws-s3/storage/file/copy/index.js +43 -9
  301. package/node/@aws-s3/storage/file/download/index.js +30 -9
  302. package/node/@aws-s3/storage/file/exists/index.js +37 -9
  303. package/node/@aws-s3/storage/file/index.d.ts +1 -1
  304. package/node/@aws-s3/storage/file/index.js +1 -1
  305. package/node/@aws-s3/storage/file/move/index.js +60 -9
  306. package/node/@aws-s3/storage/file/remove/index.js +38 -9
  307. package/node/@aws-s3/storage/file/stat/index.js +34 -9
  308. package/node/@aws-s3/storage/file/upload/index.js +55 -9
  309. package/node/@design-edito/index.js +1 -0
  310. package/node/@express/@multer/index.js +61 -45
  311. package/node/@google-cloud/storage/bucket/get-metadata/index.js +25 -21
  312. package/node/@google-cloud/storage/directory/copy-dir/index.js +38 -9
  313. package/node/@google-cloud/storage/directory/list/index.js +29 -9
  314. package/node/@google-cloud/storage/directory/move-dir/index.js +45 -9
  315. package/node/@google-cloud/storage/directory/remove-dir/index.js +36 -9
  316. package/node/@google-cloud/storage/file/copy/index.js +37 -9
  317. package/node/@google-cloud/storage/file/download/index.js +28 -9
  318. package/node/@google-cloud/storage/file/exists/index.js +26 -9
  319. package/node/@google-cloud/storage/file/generate-signed-url/index.js +33 -27
  320. package/node/@google-cloud/storage/file/get-metadata/index.js +28 -23
  321. package/node/@google-cloud/storage/file/get-permissions/index.js +25 -23
  322. package/node/@google-cloud/storage/file/index.d.ts +1 -1
  323. package/node/@google-cloud/storage/file/index.js +1 -1
  324. package/node/@google-cloud/storage/file/move/index.js +40 -9
  325. package/node/@google-cloud/storage/file/remove/index.js +36 -9
  326. package/node/@google-cloud/storage/file/revoke-signed-urls/index.js +32 -29
  327. package/node/@google-cloud/storage/file/stat/index.js +35 -9
  328. package/node/@google-cloud/storage/file/update-metadata/index.js +30 -23
  329. package/node/@google-cloud/storage/file/upload/index.js +47 -9
  330. package/node/cloud-storage/clients/index.js +35 -13
  331. package/node/cloud-storage/operations/copy-dir/index.js +30 -34
  332. package/node/cloud-storage/operations/copy-file/index.js +30 -34
  333. package/node/cloud-storage/operations/download-file/index.js +30 -34
  334. package/node/cloud-storage/operations/exists-file/index.js +30 -34
  335. package/node/cloud-storage/operations/list-dir/index.js +29 -34
  336. package/node/cloud-storage/operations/move-dir/index.js +30 -34
  337. package/node/cloud-storage/operations/move-file/index.js +30 -34
  338. package/node/cloud-storage/operations/remove-dir/index.js +29 -34
  339. package/node/cloud-storage/operations/remove-file/index.js +29 -34
  340. package/node/cloud-storage/operations/stat-file/index.js +29 -34
  341. package/node/cloud-storage/operations/upload-file/index.js +30 -34
  342. package/node/encryption/@aes-256-gcm/buffer/index.js +31 -26
  343. package/node/encryption/@aes-256-gcm/index.d.ts +1 -1
  344. package/node/encryption/@aes-256-gcm/index.js +1 -1
  345. package/node/encryption/@aes-256-gcm/uint8-array/index.js +57 -11
  346. package/node/encryption/key/index.js +19 -14
  347. package/node/files/is-in-directory/index.js +11 -10
  348. package/node/files/read-write/index.js +11 -17
  349. package/node/files/subpaths/index.js +156 -113
  350. package/node/ftps/directory/copy-dir/index.js +58 -9
  351. package/node/ftps/directory/index.d.ts +1 -1
  352. package/node/ftps/directory/index.js +1 -1
  353. package/node/ftps/directory/list/index.js +25 -9
  354. package/node/ftps/directory/move-dir/index.js +41 -9
  355. package/node/ftps/directory/remove-dir/index.js +42 -9
  356. package/node/ftps/file/copy/index.js +45 -9
  357. package/node/ftps/file/download/index.js +30 -9
  358. package/node/ftps/file/exists/index.js +39 -9
  359. package/node/ftps/file/index.d.ts +1 -1
  360. package/node/ftps/file/index.js +1 -1
  361. package/node/ftps/file/move/index.js +49 -9
  362. package/node/ftps/file/remove/index.js +40 -9
  363. package/node/ftps/file/stat/index.js +31 -9
  364. package/node/ftps/file/upload/index.js +44 -9
  365. package/node/images/create/index.js +10 -18
  366. package/node/images/format/index.js +264 -251
  367. package/node/images/index.d.ts +1 -1
  368. package/node/images/index.js +1 -1
  369. package/node/images/metadata/index.js +10 -18
  370. package/node/images/transform/index.js +168 -203
  371. package/node/images/transform/operations/blur/index.js +12 -10
  372. package/node/images/transform/operations/brighten/index.js +12 -10
  373. package/node/images/transform/operations/extend/index.js +26 -17
  374. package/node/images/transform/operations/extract/index.js +17 -10
  375. package/node/images/transform/operations/flatten/index.js +21 -17
  376. package/node/images/transform/operations/flip/index.js +3 -7
  377. package/node/images/transform/operations/flop/index.js +3 -7
  378. package/node/images/transform/operations/hue/index.js +14 -10
  379. package/node/images/transform/operations/index.d.ts +2 -2
  380. package/node/images/transform/operations/index.js +2 -2
  381. package/node/images/transform/operations/level/index.js +15 -10
  382. package/node/images/transform/operations/lighten/index.js +14 -10
  383. package/node/images/transform/operations/normalize/index.js +15 -10
  384. package/node/images/transform/operations/overlay/index.js +90 -17
  385. package/node/images/transform/operations/resize/index.js +47 -17
  386. package/node/images/transform/operations/rotate/index.js +21 -17
  387. package/node/images/transform/operations/saturate/index.js +16 -10
  388. package/node/images/types.js +34 -9
  389. package/node/images/utils/index.js +85 -19
  390. package/node/index.d.ts +3 -3
  391. package/node/index.js +3 -3
  392. package/node/process/on-exit/index.js +45 -28
  393. package/node/process/prompt-continue/index.js +29 -16
  394. package/node/process/spawner/index.js +104 -80
  395. package/node/sftp/directory/copy-dir/index.js +55 -9
  396. package/node/sftp/directory/list/index.js +23 -9
  397. package/node/sftp/directory/move-dir/index.js +38 -9
  398. package/node/sftp/directory/remove-dir/index.js +42 -9
  399. package/node/sftp/file/copy/index.js +40 -9
  400. package/node/sftp/file/download/index.js +27 -9
  401. package/node/sftp/file/exists/index.js +30 -9
  402. package/node/sftp/file/index.d.ts +2 -2
  403. package/node/sftp/file/index.js +2 -2
  404. package/node/sftp/file/move/index.js +42 -9
  405. package/node/sftp/file/remove/index.js +33 -9
  406. package/node/sftp/file/stat/index.js +28 -9
  407. package/node/sftp/file/upload/index.js +36 -9
  408. package/package.json +1 -8
  409. package/chunks/chunk-2FNCUXAX.js +0 -27
  410. package/chunks/chunk-2GJSPEO4.js +0 -31
  411. package/chunks/chunk-2IGP6V77.js +0 -22
  412. package/chunks/chunk-3QI2MSDK.js +0 -34
  413. package/chunks/chunk-3RNLPW7B.js +0 -101
  414. package/chunks/chunk-3RZMW72G.js +0 -33
  415. package/chunks/chunk-4KLCJX2T.js +0 -36
  416. package/chunks/chunk-4LTN4SCD.js +0 -55
  417. package/chunks/chunk-4Q4T7QQO.js +0 -27
  418. package/chunks/chunk-4Q5TKOIG.js +0 -53
  419. package/chunks/chunk-57YKZBJR.js +0 -29
  420. package/chunks/chunk-5H3IRSOB.js +0 -8
  421. package/chunks/chunk-5NTPCRFH.js +0 -32
  422. package/chunks/chunk-5TM235Z3.js +0 -40
  423. package/chunks/chunk-5WVGUZL5.js +0 -35
  424. package/chunks/chunk-6XL25OZX.js +0 -12
  425. package/chunks/chunk-75BICI4L.js +0 -20
  426. package/chunks/chunk-77SWZUHV.js +0 -31
  427. package/chunks/chunk-AC4UMIWM.js +0 -124
  428. package/chunks/chunk-AG4VERYN.js +0 -25
  429. package/chunks/chunk-AP3VYSVF.js +0 -36
  430. package/chunks/chunk-ASXK7XCC.js +0 -18
  431. package/chunks/chunk-AVIMGMTP.js +0 -17
  432. package/chunks/chunk-B4HGXMP3.js +0 -20
  433. package/chunks/chunk-B5V7D2ZL.js +0 -77
  434. package/chunks/chunk-B6653QJD.js +0 -37
  435. package/chunks/chunk-BCX4HPD7.js +0 -33
  436. package/chunks/chunk-CVMYA5XK.js +0 -632
  437. package/chunks/chunk-DMWGHBIL.js +0 -25
  438. package/chunks/chunk-DNIOWD7K.js +0 -8
  439. package/chunks/chunk-E2ZY3SEW.js +0 -26
  440. package/chunks/chunk-E6MSDKON.js +0 -13
  441. package/chunks/chunk-E7BBN5JC.js +0 -22
  442. package/chunks/chunk-EX2QKFY5.js +0 -41
  443. package/chunks/chunk-EYYNCLVR.js +0 -33
  444. package/chunks/chunk-F2YJXIT7.js +0 -78
  445. package/chunks/chunk-FSNNEPY5.js +0 -37
  446. package/chunks/chunk-GG4EFNMU.js +0 -89
  447. package/chunks/chunk-GQBFMP6N.js +0 -32
  448. package/chunks/chunk-H3HRQ52T.js +0 -32
  449. package/chunks/chunk-H4PP6AHP.js +0 -15
  450. package/chunks/chunk-HC6ZOHCS.js +0 -14
  451. package/chunks/chunk-HMMPT3UM.js +0 -47
  452. package/chunks/chunk-HQLRJ7XW.js +0 -12
  453. package/chunks/chunk-HYGUIF2O.js +0 -23
  454. package/chunks/chunk-HYPEWMYZ.js +0 -10
  455. package/chunks/chunk-I5MRXMHR.js +0 -32
  456. package/chunks/chunk-I6ZP5T5V.js +0 -10
  457. package/chunks/chunk-IEZ3O5OF.js +0 -40
  458. package/chunks/chunk-IPRWXI27.js +0 -31
  459. package/chunks/chunk-IRKZUMWZ.js +0 -38
  460. package/chunks/chunk-ISJONMNA.js +0 -16
  461. package/chunks/chunk-JB27MAKY.js +0 -22
  462. package/chunks/chunk-JZ6GM444.js +0 -43
  463. package/chunks/chunk-K5UF634H.js +0 -25
  464. package/chunks/chunk-LEBGVBYD.js +0 -138
  465. package/chunks/chunk-LJ5MGLLU.js +0 -56
  466. package/chunks/chunk-LUAYN7VJ.js +0 -27
  467. package/chunks/chunk-MDVGDZU6.js +0 -25
  468. package/chunks/chunk-ML22TIBW.js +0 -37
  469. package/chunks/chunk-MO4TRYNI.js +0 -29
  470. package/chunks/chunk-MSU7JU63.js +0 -49
  471. package/chunks/chunk-NIBRPZJD.js +0 -58
  472. package/chunks/chunk-O32IRXDX.js +0 -78
  473. package/chunks/chunk-OAX7GS7C.js +0 -36
  474. package/chunks/chunk-OBSTP7YR.js +0 -257
  475. package/chunks/chunk-OFCSIK6J.js +0 -13
  476. package/chunks/chunk-OFYGPRWE.js +0 -21
  477. package/chunks/chunk-OGBUSUE6.js +0 -12
  478. package/chunks/chunk-OSAXBA7G.js +0 -10
  479. package/chunks/chunk-OT7QXCH6.js +0 -23
  480. package/chunks/chunk-P4J6S2WQ.js +0 -64
  481. package/chunks/chunk-PUQUSA6S.js +0 -12
  482. package/chunks/chunk-PYJKFOMV.js +0 -193
  483. package/chunks/chunk-QHEWBOQI.js +0 -19
  484. package/chunks/chunk-QXAJXTXV.js +0 -19
  485. package/chunks/chunk-R3AWQXMY.js +0 -20
  486. package/chunks/chunk-R66GH2MQ.js +0 -38
  487. package/chunks/chunk-RART44AF.js +0 -21
  488. package/chunks/chunk-REXSJULD.js +0 -28
  489. package/chunks/chunk-RJRNYRPM.js +0 -23
  490. package/chunks/chunk-RKX6KLPQ.js +0 -47
  491. package/chunks/chunk-RW7VAKJW.js +0 -15
  492. package/chunks/chunk-RZOR7ZC3.js +0 -35
  493. package/chunks/chunk-S2UZ3HZR.js +0 -31
  494. package/chunks/chunk-SYH5LYQC.js +0 -28
  495. package/chunks/chunk-TAXFCVFE.js +0 -30
  496. package/chunks/chunk-TNZGRXKJ.js +0 -24
  497. package/chunks/chunk-TRFZSKNB.js +0 -32
  498. package/chunks/chunk-U664BT44.js +0 -45
  499. package/chunks/chunk-U6SGKHHA.js +0 -32
  500. package/chunks/chunk-UTQNGKGQ.js +0 -60
  501. package/chunks/chunk-VPBZS3S4.js +0 -27
  502. package/chunks/chunk-W5A2TON3.js +0 -10
  503. package/chunks/chunk-W7PJ5NQQ.js +0 -23
  504. package/chunks/chunk-WGRQXVBK.js +0 -207
  505. package/chunks/chunk-WIFHP4X7.js +0 -56
  506. package/chunks/chunk-WL4WNJ2Y.js +0 -39
  507. package/chunks/chunk-WNDMYNDU.js +0 -8
  508. package/chunks/chunk-WSFCRVEQ.js +0 -9
  509. package/chunks/chunk-WZS4Q3G3.js +0 -36
  510. package/chunks/chunk-X4YSGOKG.js +0 -2673
  511. package/chunks/chunk-XA4HVHJ4.js +0 -18
  512. package/chunks/chunk-XEQ2PBT2.js +0 -20
  513. package/chunks/chunk-XFB4PUXO.js +0 -78
  514. package/chunks/chunk-XIIJYVJZ.js +0 -15
  515. package/chunks/chunk-XNF5MLCQ.js +0 -14
  516. package/chunks/chunk-XQUMWHCH.js +0 -25
  517. package/chunks/chunk-YA2YCZUF.js +0 -8
  518. package/chunks/chunk-YDIBNEGA.js +0 -9
  519. package/chunks/chunk-YHMR7IBA.js +0 -24
  520. package/chunks/chunk-YWSXCFYY.js +0 -61
  521. package/chunks/chunk-YY3TSU22.js +0 -48
  522. package/chunks/chunk-ZAP3ELDE.js +0 -40
  523. package/chunks/chunk-ZJNQRKEJ.js +0 -105
  524. package/chunks/chunk-ZJR5ASR3.js +0 -26
  525. package/chunks/index.d.ts +0 -1
  526. package/chunks/index.js +0 -1
@@ -1,24 +1,516 @@
1
- import {
2
- Utils
3
- } from "../../../../chunks/chunk-X4YSGOKG.js";
4
- import "../../../../chunks/chunk-B4HGXMP3.js";
5
- import "../../../../chunks/chunk-O32IRXDX.js";
6
- import "../../../../chunks/chunk-XEQ2PBT2.js";
7
- import "../../../../chunks/chunk-RJRNYRPM.js";
8
- import "../../../../chunks/chunk-HYGUIF2O.js";
9
- import "../../../../chunks/chunk-MSU7JU63.js";
10
- import "../../../../chunks/chunk-XA4HVHJ4.js";
11
- import "../../../../chunks/chunk-LEBGVBYD.js";
12
- import "../../../../chunks/chunk-RW7VAKJW.js";
13
- import "../../../../chunks/chunk-XNF5MLCQ.js";
14
- import "../../../../chunks/chunk-E6MSDKON.js";
15
- import "../../../../chunks/chunk-YDIBNEGA.js";
16
- import "../../../../chunks/chunk-6XL25OZX.js";
17
- import "../../../../chunks/chunk-LUAYN7VJ.js";
18
- import "../../../../chunks/chunk-57YKZBJR.js";
19
- import "../../../../chunks/chunk-HQLRJ7XW.js";
20
- import "../../../../chunks/chunk-PUQUSA6S.js";
21
- import "../../../../chunks/chunk-WSFCRVEQ.js";
22
- export {
23
- Utils
24
- };
1
+ import * as Window from '../../../misc/crossenv/window/index.js';
2
+ import { isRecord } from '../../../objects/is-record/index.js';
3
+ import { recordMap } from '../../../objects/record-map/index.js';
4
+ import * as Outcome from '../../../misc/outcome/index.js';
5
+ import { isInEnum } from '../../../objects/enums/is-in-enum/index.js';
6
+ import { Method } from '../method/index.js';
7
+ import { Transformer } from '../transformer/index.js';
8
+ import { Tree as TreeNamespace } from '../tree/index.js';
9
+ import { Types } from '../types/index.js';
10
+ // eslint-disable-next-line @typescript-eslint/no-namespace
11
+ export var Utils;
12
+ (function (Utils) {
13
+ function clone(value) {
14
+ const { Element, Text, NodeList, document } = Window.get();
15
+ if (typeof value === 'string'
16
+ || typeof value === 'number'
17
+ || typeof value === 'boolean'
18
+ || value === null)
19
+ return value;
20
+ if (value instanceof Text)
21
+ return value.cloneNode(true);
22
+ if (value instanceof NodeList) {
23
+ const frag = document.createDocumentFragment();
24
+ const nodes = Array.from(value).map(e => (e).cloneNode(true));
25
+ frag.append(...nodes);
26
+ return frag.childNodes;
27
+ }
28
+ if (value instanceof Element)
29
+ return value.cloneNode(true);
30
+ if (value instanceof Transformer)
31
+ return Transformer.clone(value);
32
+ if (value instanceof Method)
33
+ return Method.clone(value);
34
+ if (Array.isArray(value))
35
+ return [...value.map(clone)];
36
+ if (isRecord(value))
37
+ return recordMap(value, prop => clone(prop));
38
+ throw new Error(`Cannot clone value: ${value}`);
39
+ }
40
+ Utils.clone = clone;
41
+ function coalesceValues(currentValue, subpath, toCoalesce) {
42
+ const { Element, Text, NodeList, document } = Window.get();
43
+ // If toCoalesce is a Transformer, apply it then continue the process
44
+ if (toCoalesce instanceof Transformer) {
45
+ const transformer = toCoalesce;
46
+ const transformationResult = transformer.apply(currentValue);
47
+ if (!transformationResult.success) {
48
+ console.warn({ ...transformationResult.error });
49
+ return currentValue;
50
+ }
51
+ const evaluated = transformationResult.payload;
52
+ if (transformer.mode === 'isolation') {
53
+ toCoalesce = evaluated; // We set toCoalesce to the result of the evaluation, and process this result below as a non-Transformer value
54
+ }
55
+ else {
56
+ return evaluated; // If mode is coalescion, the reduced value is the output of the Transformer
57
+ }
58
+ }
59
+ if (Array.isArray(currentValue))
60
+ return [...currentValue, toCoalesce];
61
+ if (currentValue === null)
62
+ return toCoalesce;
63
+ if (typeof currentValue === 'boolean')
64
+ return toCoalesce;
65
+ if (typeof currentValue === 'number')
66
+ return toCoalesce;
67
+ if (currentValue instanceof Transformer)
68
+ return toCoalesce;
69
+ if (currentValue instanceof Method)
70
+ return toCoalesce;
71
+ if (typeof currentValue === 'string') {
72
+ if (toCoalesce === null
73
+ || typeof toCoalesce === 'boolean'
74
+ || typeof toCoalesce === 'number'
75
+ || typeof toCoalesce === 'string')
76
+ return `${currentValue}${toCoalesce}`;
77
+ if (toCoalesce instanceof Text)
78
+ return `${currentValue}${toCoalesce.textContent}`;
79
+ if (toCoalesce instanceof Element) {
80
+ const frag = document.createDocumentFragment();
81
+ frag.append(currentValue, Utils.clone(toCoalesce));
82
+ return frag.childNodes;
83
+ }
84
+ if (toCoalesce instanceof NodeList) {
85
+ const frag = document.createDocumentFragment();
86
+ frag.append(currentValue, ...Array.from(Utils.clone(toCoalesce)));
87
+ return frag.childNodes;
88
+ }
89
+ return toCoalesce;
90
+ }
91
+ if (currentValue instanceof Text) {
92
+ if (toCoalesce === null
93
+ || typeof toCoalesce === 'boolean'
94
+ || typeof toCoalesce === 'number'
95
+ || typeof toCoalesce === 'string')
96
+ return document.createTextNode(`${currentValue.textContent}${toCoalesce}`);
97
+ if (toCoalesce instanceof Text)
98
+ return document.createTextNode(`${currentValue.textContent}${toCoalesce.textContent}`);
99
+ if (toCoalesce instanceof Element) {
100
+ const frag = document.createDocumentFragment();
101
+ frag.append(clone(currentValue), clone(toCoalesce));
102
+ return frag.childNodes;
103
+ }
104
+ if (toCoalesce instanceof NodeList) {
105
+ const frag = document.createDocumentFragment();
106
+ frag.append(clone(currentValue), ...Array.from(clone(toCoalesce)));
107
+ return frag.childNodes;
108
+ }
109
+ return toCoalesce;
110
+ }
111
+ if (currentValue instanceof Element) {
112
+ if (toCoalesce === null
113
+ || typeof toCoalesce === 'boolean'
114
+ || typeof toCoalesce === 'number'
115
+ || typeof toCoalesce === 'string') {
116
+ const frag = document.createDocumentFragment();
117
+ frag.append(clone(currentValue), `${toCoalesce}`);
118
+ return frag.childNodes;
119
+ }
120
+ if (toCoalesce instanceof Text || toCoalesce instanceof Element) {
121
+ const frag = document.createDocumentFragment();
122
+ frag.append(clone(currentValue), clone(toCoalesce));
123
+ return frag.childNodes;
124
+ }
125
+ if (toCoalesce instanceof NodeList) {
126
+ const frag = document.createDocumentFragment();
127
+ frag.append(clone(currentValue), ...Array.from(clone(toCoalesce)));
128
+ return frag.childNodes;
129
+ }
130
+ return toCoalesce;
131
+ }
132
+ if (currentValue instanceof NodeList) {
133
+ if (toCoalesce === null
134
+ || typeof toCoalesce === 'boolean'
135
+ || typeof toCoalesce === 'number'
136
+ || typeof toCoalesce === 'string') {
137
+ const frag = document.createDocumentFragment();
138
+ frag.append(...Array.from(clone(currentValue)), `${toCoalesce}`);
139
+ return frag.childNodes;
140
+ }
141
+ if (toCoalesce instanceof Text || toCoalesce instanceof Element) {
142
+ const frag = document.createDocumentFragment();
143
+ frag.append(...Array.from(clone(currentValue)), clone(toCoalesce));
144
+ return frag.childNodes;
145
+ }
146
+ if (toCoalesce instanceof NodeList) {
147
+ const frag = document.createDocumentFragment();
148
+ frag.append(...Array.from(clone(currentValue)), ...Array.from(clone(toCoalesce)));
149
+ return frag.childNodes;
150
+ }
151
+ return toCoalesce;
152
+ }
153
+ // current value is a record here
154
+ if (typeof subpath === 'number')
155
+ return { ...currentValue };
156
+ return {
157
+ ...currentValue,
158
+ [subpath]: toCoalesce
159
+ };
160
+ }
161
+ Utils.coalesceValues = coalesceValues;
162
+ Utils.toHyperJson = (value) => {
163
+ // [WIP] finish this
164
+ const { document, Element, Text, NodeList } = Window.get();
165
+ if (value instanceof Text) {
166
+ const elt = document.createElement('text');
167
+ elt.innerHTML = value.textContent ?? '';
168
+ return elt;
169
+ }
170
+ if (value instanceof Element)
171
+ return value.cloneNode(true);
172
+ if (value instanceof NodeList) {
173
+ const elt = document.createElement('nodelist');
174
+ elt.append(...Array.from(value).map(e => e.cloneNode(true)));
175
+ return elt;
176
+ }
177
+ if (value === null)
178
+ return document.createElement('null');
179
+ if (typeof value === 'string'
180
+ || typeof value === 'number'
181
+ || typeof value === 'boolean') {
182
+ const elt = document.createElement(typeof value);
183
+ elt.innerHTML = `${value}`;
184
+ return elt;
185
+ }
186
+ if (Array.isArray(value)) {
187
+ const elt = document.createElement('array');
188
+ elt.append(...value.map(e => Utils.toHyperJson(e)));
189
+ return elt;
190
+ }
191
+ if (value instanceof Transformer)
192
+ return clone(value.sourceTree.node);
193
+ if (value instanceof Method)
194
+ return clone(value.transformer.sourceTree.node);
195
+ // Value is record
196
+ const elt = document.createElement('record');
197
+ Object.entries(value).forEach(([key, val]) => {
198
+ const hjVal = Utils.toHyperJson(val);
199
+ if (hjVal instanceof Text)
200
+ return;
201
+ hjVal.setAttribute(TreeNamespace.Tree.keyAttribute, key);
202
+ elt.append(hjVal);
203
+ });
204
+ return elt;
205
+ };
206
+ // eslint-disable-next-line @typescript-eslint/no-namespace
207
+ let Transformations;
208
+ (function (Transformations) {
209
+ // eslint-disable-next-line @typescript-eslint/no-namespace
210
+ let TypeChecks;
211
+ (function (TypeChecks) {
212
+ function getType(value) {
213
+ if (singleTypeCheck(value, 'null'))
214
+ return 'null';
215
+ if (singleTypeCheck(value, 'boolean'))
216
+ return 'boolean';
217
+ if (singleTypeCheck(value, 'number'))
218
+ return 'number';
219
+ if (singleTypeCheck(value, 'string'))
220
+ return 'string';
221
+ if (singleTypeCheck(value, 'element'))
222
+ return 'element';
223
+ if (singleTypeCheck(value, 'text'))
224
+ return 'text';
225
+ if (singleTypeCheck(value, 'nodelist'))
226
+ return 'nodelist';
227
+ if (singleTypeCheck(value, 'method'))
228
+ return 'method';
229
+ if (singleTypeCheck(value, 'array'))
230
+ return 'array';
231
+ if (singleTypeCheck(value, 'record'))
232
+ return 'record';
233
+ return undefined;
234
+ }
235
+ TypeChecks.getType = getType;
236
+ TypeChecks.everyTypeName = [
237
+ 'null', 'boolean', 'number', 'string', 'text',
238
+ 'nodelist', 'element', 'method', 'array',
239
+ 'record'
240
+ ];
241
+ function singleTypeCheck(value, type) {
242
+ const { Element, Text, NodeList } = Window.get();
243
+ if (type === 'null' && value === null)
244
+ return true;
245
+ if (type === 'boolean' && typeof value === 'boolean')
246
+ return true;
247
+ if (type === 'number' && typeof value === 'number')
248
+ return true;
249
+ if (type === 'string' && typeof value === 'string')
250
+ return true;
251
+ if (type === 'element' && value instanceof Element)
252
+ return true;
253
+ if (type === 'text' && value instanceof Text)
254
+ return true;
255
+ if (type === 'nodelist' && value instanceof NodeList) {
256
+ const children = Array.from(value);
257
+ return children.every(child => child instanceof Element || child instanceof Text);
258
+ }
259
+ if (type === 'method' && value instanceof Method)
260
+ return true;
261
+ if (type === 'array' && Array.isArray(value)) {
262
+ const childrenOk = value.every(child => typeCheck(child, ...TypeChecks.everyTypeName).success);
263
+ return childrenOk;
264
+ }
265
+ if (type === 'record' && isRecord(value)) {
266
+ const childrenOk = Object.values(value).every(child => typeCheck(child, ...TypeChecks.everyTypeName).success);
267
+ return childrenOk;
268
+ }
269
+ return false;
270
+ }
271
+ TypeChecks.singleTypeCheck = singleTypeCheck;
272
+ function typeCheck(value, ...types) {
273
+ const matchesOneType = types.some(type => singleTypeCheck(value, type));
274
+ if (matchesOneType)
275
+ return Outcome.makeSuccess(value);
276
+ return Outcome.makeFailure({
277
+ expected: types.join(' | '),
278
+ found: getType(value) ?? 'undefined'
279
+ });
280
+ }
281
+ TypeChecks.typeCheck = typeCheck;
282
+ function typeCheckMany(values, ...types) {
283
+ for (const [pos, val] of Object.entries(values)) {
284
+ const checked = typeCheck(val, ...types);
285
+ if (checked.success)
286
+ continue;
287
+ return Outcome.makeFailure({ position: parseInt(pos), ...checked.error });
288
+ }
289
+ return Outcome.makeSuccess(values);
290
+ }
291
+ TypeChecks.typeCheckMany = typeCheckMany;
292
+ })(TypeChecks = Transformations.TypeChecks || (Transformations.TypeChecks = {}));
293
+ })(Transformations = Utils.Transformations || (Utils.Transformations = {}));
294
+ // eslint-disable-next-line @typescript-eslint/no-namespace
295
+ let Tree;
296
+ (function (Tree) {
297
+ function mergeNodes(nodes) {
298
+ const { document, Text, Element } = Window.get();
299
+ const clones = nodes.map(node => node.cloneNode(true));
300
+ const allChildren = [];
301
+ clones.forEach(node => {
302
+ const actionAttribute = node.getAttribute(TreeNamespace.Tree.actionAttribute)?.trim().toLowerCase();
303
+ const actionAttrIsValid = isInEnum(Types.Tree.Merge.Action, actionAttribute ?? '');
304
+ const nodeAction = actionAttrIsValid
305
+ ? actionAttribute
306
+ : Types.Tree.Merge.Action.APPEND;
307
+ const children = Array
308
+ .from(node.childNodes)
309
+ .filter((child) => child instanceof Text || child instanceof Element)
310
+ .map(child => {
311
+ if (child instanceof Text)
312
+ return { node: child, key: undefined };
313
+ const childKey = child.getAttribute(TreeNamespace.Tree.keyAttribute) ?? undefined;
314
+ return { node: child, key: childKey };
315
+ });
316
+ if (nodeAction === Types.Tree.Merge.Action.REPLACE) {
317
+ allChildren.splice(0, allChildren.length);
318
+ }
319
+ else if (nodeAction === Types.Tree.Merge.Action.PREPEND) {
320
+ allChildren.unshift(...children);
321
+ }
322
+ else {
323
+ allChildren.push(...children);
324
+ }
325
+ });
326
+ const mergedChildren = [];
327
+ allChildren.forEach(childData => {
328
+ if (childData.key === undefined)
329
+ mergedChildren.push(childData);
330
+ else {
331
+ const childKey = childData.key;
332
+ const alreadyMerged = mergedChildren.find(dat => dat.key === childKey);
333
+ if (alreadyMerged !== undefined)
334
+ return;
335
+ const toMerge = allChildren.filter(dat => dat.key === childKey);
336
+ if (toMerge.length === 0)
337
+ return;
338
+ const merged = mergeNodes(toMerge.map(dat => dat.node));
339
+ mergedChildren.push({ node: merged, key: childKey });
340
+ }
341
+ });
342
+ const allAttributes = clones.reduce((attributes, node) => ([
343
+ ...Array.from(attributes),
344
+ ...Array.from(node.attributes)
345
+ ]), []);
346
+ const outWrapper = (clones[0]?.cloneNode() ?? document.createElement('div'));
347
+ allAttributes.forEach(attr => outWrapper.setAttribute(attr.name, attr.value));
348
+ outWrapper.append(...mergedChildren.map(e => e.node));
349
+ return outWrapper;
350
+ }
351
+ Tree.mergeNodes = mergeNodes;
352
+ function getInitialValueFromTypeName(name) {
353
+ const { document } = Window.get();
354
+ if (name === 'null')
355
+ return null;
356
+ if (name === 'boolean')
357
+ return false;
358
+ if (name === 'number')
359
+ return 0;
360
+ if (name === 'string')
361
+ return '';
362
+ if (name === 'text')
363
+ return document.createTextNode('');
364
+ if (name === 'nodelist')
365
+ return document.createDocumentFragment().childNodes;
366
+ if (name === 'element')
367
+ return document.createElement('div');
368
+ if (name === 'array')
369
+ return [];
370
+ if (name === 'record')
371
+ return {};
372
+ throw new Error(`Unknown value type name: ${name}`);
373
+ }
374
+ Tree.getInitialValueFromTypeName = getInitialValueFromTypeName;
375
+ // eslint-disable-next-line @typescript-eslint/no-namespace
376
+ let TypeChecks;
377
+ (function (TypeChecks) {
378
+ function getType(value) {
379
+ if (singleTypeCheck(value, 'null'))
380
+ return 'null';
381
+ if (singleTypeCheck(value, 'boolean'))
382
+ return 'boolean';
383
+ if (singleTypeCheck(value, 'number'))
384
+ return 'number';
385
+ if (singleTypeCheck(value, 'string'))
386
+ return 'string';
387
+ if (singleTypeCheck(value, 'element'))
388
+ return 'element';
389
+ if (singleTypeCheck(value, 'text'))
390
+ return 'text';
391
+ if (singleTypeCheck(value, 'nodelist'))
392
+ return 'nodelist';
393
+ if (singleTypeCheck(value, 'transformer'))
394
+ return 'transformer';
395
+ if (singleTypeCheck(value, 'method'))
396
+ return 'method';
397
+ if (singleTypeCheck(value, 'array'))
398
+ return 'array';
399
+ if (singleTypeCheck(value, 'record'))
400
+ return 'record';
401
+ return undefined;
402
+ }
403
+ TypeChecks.getType = getType;
404
+ TypeChecks.everyTypeName = [
405
+ 'null', 'boolean', 'number', 'string', 'text',
406
+ 'nodelist', 'element', 'transformer', 'method',
407
+ 'array', 'record'
408
+ ];
409
+ function singleTypeCheck(value, type) {
410
+ const { Element, Text, NodeList } = Window.get();
411
+ if (type === 'null' && value === null)
412
+ return true;
413
+ if (type === 'boolean' && typeof value === 'boolean')
414
+ return true;
415
+ if (type === 'number' && typeof value === 'number')
416
+ return true;
417
+ if (type === 'string' && typeof value === 'string')
418
+ return true;
419
+ if (type === 'element' && value instanceof Element)
420
+ return true;
421
+ if (type === 'text' && value instanceof Text)
422
+ return true;
423
+ if (type === 'nodelist' && value instanceof NodeList) {
424
+ const children = Array.from(value);
425
+ return children.every(child => child instanceof Element || child instanceof Text);
426
+ }
427
+ if (type === 'transformer' && value instanceof Transformer)
428
+ return true;
429
+ if (type === 'method' && value instanceof Method)
430
+ return true;
431
+ if (type === 'array' && Array.isArray(value)) {
432
+ const childrenOk = value.every(child => typeCheck(child, ...TypeChecks.everyTypeName).success);
433
+ return childrenOk;
434
+ }
435
+ if (type === 'record' && isRecord(value)) {
436
+ const childrenOk = Object.values(value).every(child => typeCheck(child, ...TypeChecks.everyTypeName).success);
437
+ return childrenOk;
438
+ }
439
+ return false;
440
+ }
441
+ TypeChecks.singleTypeCheck = singleTypeCheck;
442
+ function typeCheck(value, ...types) {
443
+ const matchesOneType = types.some(type => singleTypeCheck(value, type));
444
+ if (matchesOneType)
445
+ return Outcome.makeSuccess(value);
446
+ return Outcome.makeFailure({
447
+ expected: types.join(' | '),
448
+ found: getType(value) ?? 'undefined'
449
+ });
450
+ }
451
+ TypeChecks.typeCheck = typeCheck;
452
+ function typeCheckMany(values, ...types) {
453
+ for (const [pos, val] of Object.entries(values)) {
454
+ const checked = typeCheck(val, ...types);
455
+ if (checked.success)
456
+ continue;
457
+ return Outcome.makeFailure({ position: parseInt(pos), ...checked.error });
458
+ }
459
+ return Outcome.makeSuccess(values);
460
+ }
461
+ TypeChecks.typeCheckMany = typeCheckMany;
462
+ function typeCheckManyWithLength(values, minLength, maxLength, ...types) {
463
+ if (minLength !== undefined && values.length < minLength)
464
+ return Outcome.makeFailure({
465
+ position: values.length + 1,
466
+ expected: `min length: ${minLength}`,
467
+ found: `length: ${values.length}`
468
+ });
469
+ if (maxLength !== undefined && values.length > maxLength)
470
+ return Outcome.makeFailure({
471
+ position: maxLength + 1,
472
+ expected: `max length: ${maxLength}`,
473
+ found: `length: ${values.length}`
474
+ });
475
+ return typeCheckMany(values, ...types);
476
+ }
477
+ TypeChecks.typeCheckManyWithLength = typeCheckManyWithLength;
478
+ TypeChecks.isTreeMode = (name) => name === 'isolation' || name === 'coalescion';
479
+ TypeChecks.isValueTypeName = (name) => {
480
+ const list = [
481
+ 'null', 'boolean', 'number', 'string',
482
+ 'text', 'nodelist', 'element',
483
+ 'transformer', 'method',
484
+ 'array', 'record'
485
+ ];
486
+ return list.includes(name);
487
+ };
488
+ })(TypeChecks = Tree.TypeChecks || (Tree.TypeChecks = {}));
489
+ })(Tree = Utils.Tree || (Utils.Tree = {}));
490
+ // eslint-disable-next-line @typescript-eslint/no-namespace
491
+ let SmartTags;
492
+ (function (SmartTags) {
493
+ SmartTags.expectEmptyArgs = (args) => {
494
+ if (args.length === 0)
495
+ return Outcome.makeSuccess([]);
496
+ return Outcome.makeFailure({
497
+ expected: 'length: 0',
498
+ found: `length: ${args.length}`
499
+ });
500
+ };
501
+ SmartTags.makeMainValueError = (expected, found, details) => ({
502
+ expected,
503
+ found,
504
+ details
505
+ });
506
+ SmartTags.makeArgsValueError = (expected, found, position, details) => ({
507
+ expected,
508
+ found,
509
+ position,
510
+ details
511
+ });
512
+ SmartTags.makeTransformationError = (details) => ({
513
+ details
514
+ });
515
+ })(SmartTags = Utils.SmartTags || (Utils.SmartTags = {}));
516
+ })(Utils || (Utils = {}));
@@ -1,8 +1,8 @@
1
1
  export * as getNodeAncestors from './get-node-ancestors/index.js'
2
- export * as insertNode from './insert-node/index.js'
3
2
  export * as hyperJson from './hyper-json/index.js'
4
3
  export * as getPositionInsideParent from './get-position-inside-parent/index.js'
4
+ export * as insertNode from './insert-node/index.js'
5
5
  export * as placeholders from './placeholders/index.js'
6
6
  export * as replaceInElement from './replace-in-element/index.js'
7
- export * as selectorToElement from './selector-to-element/index.js'
8
7
  export * as stringToNodes from './string-to-nodes/index.js'
8
+ export * as selectorToElement from './selector-to-element/index.js'
@@ -1,8 +1,8 @@
1
1
  export * as getNodeAncestors from './get-node-ancestors/index.js'
2
- export * as insertNode from './insert-node/index.js'
3
2
  export * as hyperJson from './hyper-json/index.js'
4
3
  export * as getPositionInsideParent from './get-position-inside-parent/index.js'
4
+ export * as insertNode from './insert-node/index.js'
5
5
  export * as placeholders from './placeholders/index.js'
6
6
  export * as replaceInElement from './replace-in-element/index.js'
7
- export * as selectorToElement from './selector-to-element/index.js'
8
7
  export * as stringToNodes from './string-to-nodes/index.js'
8
+ export * as selectorToElement from './selector-to-element/index.js'
@@ -1,7 +1,28 @@
1
- import {
2
- insertNode
3
- } from "../../../chunks/chunk-XA4HVHJ4.js";
4
- import "../../../chunks/chunk-WSFCRVEQ.js";
5
- export {
6
- insertNode
7
- };
1
+ /**
2
+ * Inserts a DOM node at a specific position relative to a reference node.
3
+ *
4
+ * @param {Node} node - The node to insert.
5
+ * @param {InsertNodePosition} position - The insertion position relative to the reference node.
6
+ * @param {Node} reference - The reference node used to determine the insertion point.
7
+ * @returns {void}
8
+ */
9
+ export function insertNode(node, position, reference) {
10
+ if (position === 'after') {
11
+ if (reference.nextSibling !== null)
12
+ reference.parentNode?.insertBefore(node, reference.nextSibling);
13
+ else
14
+ reference.parentNode?.appendChild(node);
15
+ }
16
+ else if (position === 'before') {
17
+ reference.parentNode?.insertBefore(node, reference);
18
+ }
19
+ else if (position === 'startof') {
20
+ if (reference.firstChild !== null)
21
+ reference.insertBefore(node, reference.firstChild);
22
+ else
23
+ reference.appendChild(node);
24
+ }
25
+ else {
26
+ reference.appendChild(node);
27
+ }
28
+ }
@@ -0,0 +1,73 @@
1
+ import { describe, it, expect, beforeEach, afterEach } from 'vitest';
2
+ import { insertNode } from './index.js';
3
+ import { JSDOM } from 'jsdom';
4
+ import * as Window from '../../misc/crossenv/window/index.js';
5
+ describe('insertNode', () => {
6
+ beforeEach(() => Window.set(new JSDOM().window));
7
+ afterEach(() => Window.unset());
8
+ it('inserts node before reference node', () => {
9
+ const { document } = Window.get();
10
+ const parent = document.createElement('div');
11
+ const reference = document.createElement('span');
12
+ const node = document.createElement('p');
13
+ parent.appendChild(reference);
14
+ insertNode(node, 'before', reference);
15
+ expect(parent.childNodes[0]).toBe(node);
16
+ expect(parent.childNodes[1]).toBe(reference);
17
+ });
18
+ it('inserts node after reference node', () => {
19
+ const { document } = Window.get();
20
+ const parent = document.createElement('div');
21
+ const reference = document.createElement('span');
22
+ const node = document.createElement('p');
23
+ parent.appendChild(reference);
24
+ insertNode(node, 'after', reference);
25
+ expect(parent.childNodes[0]).toBe(reference);
26
+ expect(parent.childNodes[1]).toBe(node);
27
+ });
28
+ it('inserts node at end when inserting after last child', () => {
29
+ const { document } = Window.get();
30
+ const parent = document.createElement('div');
31
+ const reference = document.createElement('span');
32
+ const node = document.createElement('p');
33
+ parent.appendChild(reference);
34
+ insertNode(node, 'after', reference);
35
+ expect(parent.lastChild).toBe(node);
36
+ });
37
+ it('inserts node as first child with startof', () => {
38
+ const { document } = Window.get();
39
+ const parent = document.createElement('div');
40
+ const existing = document.createElement('span');
41
+ const node = document.createElement('p');
42
+ parent.appendChild(existing);
43
+ insertNode(node, 'startof', parent);
44
+ expect(parent.firstChild).toBe(node);
45
+ expect(parent.childNodes[1]).toBe(existing);
46
+ });
47
+ it('inserts node as last child with endof', () => {
48
+ const { document } = Window.get();
49
+ const parent = document.createElement('div');
50
+ const existing = document.createElement('span');
51
+ const node = document.createElement('p');
52
+ parent.appendChild(existing);
53
+ insertNode(node, 'endof', parent);
54
+ expect(parent.lastChild).toBe(node);
55
+ expect(parent.firstChild).toBe(existing);
56
+ });
57
+ it('inserts node in empty parent with startof', () => {
58
+ const { document } = Window.get();
59
+ const parent = document.createElement('div');
60
+ const node = document.createElement('p');
61
+ insertNode(node, 'startof', parent);
62
+ expect(parent.firstChild).toBe(node);
63
+ expect(parent.lastChild).toBe(node);
64
+ });
65
+ it('inserts node in empty parent with endof', () => {
66
+ const { document } = Window.get();
67
+ const parent = document.createElement('div');
68
+ const node = document.createElement('p');
69
+ insertNode(node, 'endof', parent);
70
+ expect(parent.firstChild).toBe(node);
71
+ expect(parent.lastChild).toBe(node);
72
+ });
73
+ });