@schukai/monster 3.51.5 → 3.52.1

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 (361) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/README.md +15 -12
  3. package/example/components/form/button.mjs +10 -0
  4. package/example/components/form/select.mjs +25 -0
  5. package/example/components/form/tree-select.mjs +27 -0
  6. package/example/components/host/host.mjs +0 -0
  7. package/example/components/notify/message.mjs +4 -0
  8. package/example/components/notify/notify.mjs +4 -0
  9. package/example/components/state/log.mjs +0 -0
  10. package/example/components/state/state.mjs +0 -0
  11. package/example/data/datasource/server/restapi.mjs +7 -1
  12. package/package.json +6 -2
  13. package/source/components/constants.mjs +132 -0
  14. package/source/components/datatable/columnbar.mjs +310 -0
  15. package/source/components/datatable/constants.mjs +121 -0
  16. package/source/components/datatable/dataset.mjs +219 -0
  17. package/source/components/datatable/datasource/dom.mjs +186 -0
  18. package/source/components/datatable/datasource/namespace.mjs +13 -0
  19. package/source/components/datatable/datasource/rest.mjs +400 -0
  20. package/source/components/datatable/datasource.mjs +102 -0
  21. package/source/components/datatable/datatable/header.mjs +268 -0
  22. package/source/components/datatable/datatable/namespace.mjs +13 -0
  23. package/source/components/datatable/datatable.mjs +789 -0
  24. package/source/components/datatable/embedded-pagination.mjs +113 -0
  25. package/source/components/datatable/filter/abstract-base.mjs +31 -0
  26. package/source/components/datatable/filter/date-range.mjs +1041 -0
  27. package/source/components/datatable/filter/input.mjs +175 -0
  28. package/source/components/datatable/filter/namespace.mjs +13 -0
  29. package/source/components/datatable/filter/range.mjs +671 -0
  30. package/source/components/datatable/filter/select.mjs +65 -0
  31. package/source/components/datatable/filter/settings.mjs +116 -0
  32. package/source/components/datatable/filter-button.mjs +98 -0
  33. package/source/components/datatable/filter.mjs +929 -0
  34. package/source/components/datatable/namespace.mjs +11 -0
  35. package/source/components/datatable/pagination.mjs +456 -0
  36. package/source/components/datatable/style/column-bar.pcss +123 -0
  37. package/source/components/datatable/style/dataset.pcss +13 -0
  38. package/source/components/datatable/style/datasource.pcss +16 -0
  39. package/source/components/datatable/style/datatable.pcss +239 -0
  40. package/source/components/datatable/style/embedded-pagination.pcss +101 -0
  41. package/source/components/datatable/style/filter-button.pcss +22 -0
  42. package/source/components/datatable/style/filter-controls-defaults.pcss +46 -0
  43. package/source/components/datatable/style/filter-date-range.pcss +9 -0
  44. package/source/components/datatable/style/filter-range.pcss +5 -0
  45. package/source/components/datatable/style/filter.pcss +156 -0
  46. package/source/components/datatable/style/pagination.pcss +59 -0
  47. package/source/components/datatable/style/select-filter.pcss +27 -0
  48. package/source/components/datatable/stylesheet/column-bar.mjs +27 -0
  49. package/source/components/datatable/stylesheet/dataset.mjs +27 -0
  50. package/source/components/datatable/stylesheet/datasource.mjs +27 -0
  51. package/source/components/datatable/stylesheet/datatable.mjs +27 -0
  52. package/source/components/datatable/stylesheet/embedded-pagination.mjs +27 -0
  53. package/source/components/datatable/stylesheet/filter-button.mjs +27 -0
  54. package/source/components/datatable/stylesheet/filter-controls-defaults.mjs +27 -0
  55. package/source/components/datatable/stylesheet/filter-date-range.mjs +27 -0
  56. package/source/components/datatable/stylesheet/filter-range.mjs +27 -0
  57. package/source/components/datatable/stylesheet/filter.mjs +27 -0
  58. package/source/components/datatable/stylesheet/namespace.mjs +13 -0
  59. package/source/components/datatable/stylesheet/pagination.mjs +27 -0
  60. package/source/components/datatable/stylesheet/select-filter.mjs +27 -0
  61. package/source/components/datatable/util.mjs +60 -0
  62. package/source/components/form/action-button.mjs +262 -0
  63. package/source/components/form/api-button.mjs +515 -0
  64. package/source/components/form/button-bar.mjs +739 -0
  65. package/source/components/form/button.mjs +350 -0
  66. package/source/components/form/confirm-button.mjs +330 -0
  67. package/source/components/form/constants.mjs +111 -0
  68. package/source/components/form/context-help.mjs +123 -0
  69. package/source/components/form/events.mjs +84 -0
  70. package/source/components/form/form.mjs +601 -0
  71. package/source/components/form/message-state-button.mjs +396 -0
  72. package/source/components/form/namespace.mjs +13 -0
  73. package/source/components/form/popper-button.mjs +435 -0
  74. package/source/components/form/popper.mjs +487 -0
  75. package/source/components/form/reload.mjs +360 -0
  76. package/source/components/form/select.mjs +2314 -0
  77. package/source/components/form/shadow-reload.mjs +137 -0
  78. package/source/components/form/state-button.mjs +182 -0
  79. package/source/components/form/style/action-button.pcss +41 -0
  80. package/source/components/form/style/api-button.pcss +0 -0
  81. package/source/components/form/style/button-bar.pcss +51 -0
  82. package/source/components/form/style/button.pcss +8 -0
  83. package/source/components/form/style/confirm-button.pcss +17 -0
  84. package/source/components/form/style/context-help.pcss +16 -0
  85. package/source/components/form/style/form.pcss +10 -0
  86. package/source/components/form/style/message-state-button.pcss +10 -0
  87. package/source/components/form/style/popper-button.pcss +16 -0
  88. package/source/components/form/style/popper.pcss +8 -0
  89. package/source/components/form/style/select.pcss +265 -0
  90. package/source/components/form/style/state-button.pcss +116 -0
  91. package/source/components/form/style/tabs.pcss +173 -0
  92. package/source/components/form/style/tree-select.pcss +81 -0
  93. package/source/components/form/stylesheet/action-button.mjs +27 -0
  94. package/source/components/form/stylesheet/api-button.mjs +27 -0
  95. package/source/components/form/stylesheet/button-bar.mjs +27 -0
  96. package/source/components/form/stylesheet/button.mjs +27 -0
  97. package/source/components/form/stylesheet/confirm-button.mjs +27 -0
  98. package/source/components/form/stylesheet/context-help.mjs +27 -0
  99. package/source/components/form/stylesheet/form.mjs +27 -0
  100. package/source/components/form/stylesheet/message-state-button.mjs +27 -0
  101. package/source/components/form/stylesheet/namespace.mjs +13 -0
  102. package/source/components/form/stylesheet/popper-button.mjs +27 -0
  103. package/source/components/form/stylesheet/popper.mjs +27 -0
  104. package/source/components/form/stylesheet/select.mjs +27 -0
  105. package/source/components/form/stylesheet/state-button.mjs +27 -0
  106. package/source/components/form/stylesheet/tabs.mjs +27 -0
  107. package/source/components/form/stylesheet/tree-select.mjs +27 -0
  108. package/source/components/form/tabs.mjs +1029 -0
  109. package/source/components/form/template.mjs +373 -0
  110. package/source/components/form/tree-select.mjs +527 -0
  111. package/source/components/form/types/namespace.mjs +13 -0
  112. package/source/components/form/types/state.mjs +93 -0
  113. package/source/components/form/util/fetch.mjs +133 -0
  114. package/source/components/form/util/floating-ui.mjs +245 -0
  115. package/source/components/form/util/namespace.mjs +13 -0
  116. package/source/components/form/util/popper.mjs +49 -0
  117. package/source/components/host/call-button.mjs +236 -0
  118. package/source/components/host/collapse.mjs +526 -0
  119. package/source/components/host/config-manager.mjs +304 -0
  120. package/source/components/host/constants.mjs +18 -0
  121. package/source/components/host/details.mjs +268 -0
  122. package/source/components/host/events.mjs +131 -0
  123. package/source/components/host/host.mjs +420 -0
  124. package/source/components/host/namespace.mjs +13 -0
  125. package/source/components/host/overlay.mjs +339 -0
  126. package/source/components/host/style/call-button.pcss +36 -0
  127. package/source/components/host/style/collapse.pcss +67 -0
  128. package/source/components/host/style/config-manager.pcss +5 -0
  129. package/source/components/host/style/details.pcss +68 -0
  130. package/source/components/host/style/host.pcss +43 -0
  131. package/source/components/host/style/overlay.pcss +73 -0
  132. package/source/components/host/style/toggle-button.pcss +36 -0
  133. package/source/components/host/style/viewer.pcss +13 -0
  134. package/source/components/host/stylesheet/call-button.mjs +27 -0
  135. package/source/components/host/stylesheet/collapse.mjs +27 -0
  136. package/source/components/host/stylesheet/config-manager.mjs +27 -0
  137. package/source/components/host/stylesheet/details.mjs +27 -0
  138. package/source/components/host/stylesheet/host.mjs +27 -0
  139. package/source/components/host/stylesheet/namespace.mjs +13 -0
  140. package/source/components/host/stylesheet/overlay.mjs +27 -0
  141. package/source/components/host/stylesheet/toggle-button.mjs +27 -0
  142. package/source/components/host/stylesheet/viewer.mjs +27 -0
  143. package/source/components/host/toggle-button.mjs +88 -0
  144. package/source/components/host/util.mjs +23 -0
  145. package/source/components/host/viewer.mjs +309 -0
  146. package/source/components/namespace.mjs +14 -0
  147. package/source/components/notify/constants.mjs +15 -0
  148. package/source/components/notify/events.mjs +15 -0
  149. package/source/components/notify/message.mjs +374 -0
  150. package/source/components/notify/namespace.mjs +15 -0
  151. package/source/components/notify/notify.mjs +236 -0
  152. package/source/components/notify/style/message.pcss +57 -0
  153. package/source/components/notify/style/notify.pcss +118 -0
  154. package/source/components/notify/stylesheet/message.mjs +27 -0
  155. package/source/components/notify/stylesheet/namespace.mjs +15 -0
  156. package/source/components/notify/stylesheet/notify.mjs +27 -0
  157. package/source/components/state/log/entry.mjs +126 -0
  158. package/source/components/state/log/namespace.mjs +13 -0
  159. package/source/components/state/log.mjs +275 -0
  160. package/source/components/state/namespace.mjs +13 -0
  161. package/source/components/state/state.mjs +131 -0
  162. package/source/components/state/style/log.pcss +111 -0
  163. package/source/components/state/style/state.pcss +113 -0
  164. package/source/components/state/stylesheet/log.mjs +27 -0
  165. package/source/components/state/stylesheet/state.mjs +27 -0
  166. package/source/components/style/badge.pcss +92 -0
  167. package/source/components/style/border.pcss +77 -0
  168. package/source/components/style/button.pcss +105 -0
  169. package/source/components/style/card.pcss +108 -0
  170. package/source/components/style/color.pcss +257 -0
  171. package/source/components/style/common.pcss +105 -0
  172. package/source/components/style/control.pcss +11 -0
  173. package/source/components/style/data-grid.pcss +43 -0
  174. package/source/components/style/display.pcss +42 -0
  175. package/source/components/style/floating-ui.pcss +33 -0
  176. package/source/components/style/form.pcss +5 -0
  177. package/source/components/style/host.pcss +15 -0
  178. package/source/components/style/link.pcss +63 -0
  179. package/source/components/style/mixin/badge.pcss +18 -0
  180. package/source/components/style/mixin/button.pcss +52 -0
  181. package/source/components/style/mixin/form.pcss +247 -0
  182. package/source/components/style/mixin/hover.pcss +8 -0
  183. package/source/components/style/mixin/media.pcss +107 -0
  184. package/source/components/style/mixin/property.pcss +292 -0
  185. package/source/components/style/mixin/skeleton.pcss +26 -0
  186. package/source/components/style/mixin/spinner.pcss +24 -0
  187. package/source/components/style/mixin/typography.pcss +52 -0
  188. package/source/components/style/normalize.pcss +14 -0
  189. package/source/components/style/popper.pcss +78 -0
  190. package/source/components/style/property.pcss +17 -0
  191. package/source/components/style/ripple.pcss +14 -0
  192. package/source/components/style/skeleton.pcss +28 -0
  193. package/source/components/style/space.pcss +47 -0
  194. package/source/components/style/spinner.pcss +6 -0
  195. package/source/components/style/table.pcss +46 -0
  196. package/source/components/style/theme.pcss +119 -0
  197. package/source/components/style/typography.pcss +131 -0
  198. package/source/components/stylesheet/badge.mjs +27 -0
  199. package/source/components/stylesheet/border.mjs +27 -0
  200. package/source/components/stylesheet/button.mjs +27 -0
  201. package/source/components/stylesheet/card.mjs +27 -0
  202. package/source/components/stylesheet/color.mjs +27 -0
  203. package/source/components/stylesheet/common.mjs +27 -0
  204. package/source/components/stylesheet/control.mjs +27 -0
  205. package/source/components/stylesheet/data-grid.mjs +27 -0
  206. package/source/components/stylesheet/display.mjs +27 -0
  207. package/source/components/stylesheet/floating-ui.mjs +27 -0
  208. package/source/components/stylesheet/form.mjs +27 -0
  209. package/source/components/stylesheet/host.mjs +27 -0
  210. package/source/components/stylesheet/link.mjs +27 -0
  211. package/source/components/stylesheet/namespace.mjs +13 -0
  212. package/source/components/stylesheet/normalize.mjs +27 -0
  213. package/source/components/stylesheet/popper.mjs +27 -0
  214. package/source/components/stylesheet/property.mjs +27 -0
  215. package/source/components/stylesheet/ripple.mjs +27 -0
  216. package/source/components/stylesheet/skeleton.mjs +27 -0
  217. package/source/components/stylesheet/space.mjs +27 -0
  218. package/source/components/stylesheet/spinner.mjs +27 -0
  219. package/source/components/stylesheet/table.mjs +27 -0
  220. package/source/components/stylesheet/theme.mjs +27 -0
  221. package/source/components/stylesheet/tree-menu.mjs +33 -0
  222. package/source/components/stylesheet/typography.mjs +27 -0
  223. package/source/components/tree-menu/namespace.mjs +13 -0
  224. package/source/components/tree-menu/style/tree-menu.pcss +107 -0
  225. package/source/components/tree-menu/stylesheet/namespace.mjs +13 -0
  226. package/source/components/tree-menu/stylesheet/tree-menu.mjs +27 -0
  227. package/source/components/tree-menu/tree-menu.mjs +660 -0
  228. package/source/constraints/abstract.mjs +17 -24
  229. package/source/constraints/abstractoperator.mjs +27 -22
  230. package/source/constraints/andoperator.mjs +20 -17
  231. package/source/constraints/invalid.mjs +17 -17
  232. package/source/constraints/isarray.mjs +20 -20
  233. package/source/constraints/isobject.mjs +20 -20
  234. package/source/constraints/oroperator.mjs +45 -45
  235. package/source/constraints/valid.mjs +17 -17
  236. package/source/data/buildmap.mjs +108 -103
  237. package/source/data/buildtree.mjs +59 -57
  238. package/source/data/datasource/dom.mjs +80 -84
  239. package/source/data/datasource/namespace.mjs +1 -1
  240. package/source/data/datasource/server/restapi/data-fetch-error.mjs +27 -25
  241. package/source/data/datasource/server/restapi/writeerror.mjs +35 -32
  242. package/source/data/datasource/server/restapi.mjs +176 -177
  243. package/source/data/datasource/server/webconnect.mjs +150 -156
  244. package/source/data/datasource/server.mjs +62 -63
  245. package/source/data/datasource/storage/localstorage.mjs +25 -24
  246. package/source/data/datasource/storage/sessionstorage.mjs +28 -25
  247. package/source/data/datasource/storage.mjs +74 -73
  248. package/source/data/datasource.mjs +177 -168
  249. package/source/data/diff.mjs +98 -97
  250. package/source/data/extend.mjs +42 -42
  251. package/source/data/pathfinder.mjs +301 -288
  252. package/source/data/pipe.mjs +36 -36
  253. package/source/data/transformer.mjs +742 -726
  254. package/source/dom/assembler.mjs +44 -44
  255. package/source/dom/attributes.mjs +142 -122
  256. package/source/dom/constants.mjs +62 -58
  257. package/source/dom/customcontrol.mjs +299 -299
  258. package/source/dom/customelement.mjs +843 -806
  259. package/source/dom/dimension.mjs +56 -46
  260. package/source/dom/events.mjs +74 -69
  261. package/source/dom/focusmanager.mjs +175 -175
  262. package/source/dom/locale.mjs +28 -28
  263. package/source/dom/ready.mjs +13 -13
  264. package/source/dom/resource/data.mjs +117 -111
  265. package/source/dom/resource/link/stylesheet.mjs +16 -16
  266. package/source/dom/resource/link.mjs +94 -96
  267. package/source/dom/resource/script.mjs +72 -74
  268. package/source/dom/resource.mjs +174 -172
  269. package/source/dom/resourcemanager.mjs +152 -156
  270. package/source/dom/slotted.mjs +78 -80
  271. package/source/dom/template.mjs +126 -112
  272. package/source/dom/theme.mjs +35 -35
  273. package/source/dom/updater.mjs +673 -651
  274. package/source/dom/util/extract-keys.mjs +34 -22
  275. package/source/dom/util/init-options-from-attributes.mjs +46 -38
  276. package/source/dom/util/namespace.mjs +13 -0
  277. package/source/dom/util/set-option-from-attribute.mjs +35 -29
  278. package/source/dom/util.mjs +112 -81
  279. package/source/dom/worker/factory.mjs +83 -83
  280. package/source/i18n/formatter.mjs +75 -73
  281. package/source/i18n/locale.mjs +146 -144
  282. package/source/i18n/provider.mjs +70 -64
  283. package/source/i18n/providers/embed.mjs +136 -127
  284. package/source/i18n/providers/fetch.mjs +84 -76
  285. package/source/i18n/translations.mjs +205 -195
  286. package/source/logging/handler/console.mjs +36 -36
  287. package/source/logging/handler.mjs +140 -140
  288. package/source/logging/logentry.mjs +25 -25
  289. package/source/logging/logger.mjs +177 -175
  290. package/source/math/random.mjs +63 -59
  291. package/source/monster.mjs +223 -103
  292. package/source/net/webconnect/message.mjs +31 -31
  293. package/source/net/webconnect.mjs +278 -271
  294. package/source/text/bracketed-key-value-hash.mjs +182 -179
  295. package/source/text/formatter.mjs +235 -210
  296. package/source/text/generate-range-comparison-expression.mjs +56 -34
  297. package/source/text/namespace.mjs +1 -1
  298. package/source/types/base.mjs +69 -61
  299. package/source/types/basewithoptions.mjs +46 -46
  300. package/source/types/binary.mjs +20 -20
  301. package/source/types/dataurl.mjs +96 -90
  302. package/source/types/global.mjs +45 -39
  303. package/source/types/id.mjs +25 -25
  304. package/source/types/internal.mjs +115 -114
  305. package/source/types/is.mjs +56 -40
  306. package/source/types/mediatype.mjs +119 -119
  307. package/source/types/namespace.mjs +1 -1
  308. package/source/types/node.mjs +160 -150
  309. package/source/types/nodelist.mjs +94 -96
  310. package/source/types/noderecursiveiterator.mjs +50 -50
  311. package/source/types/observablequeue.mjs +73 -73
  312. package/source/types/observer.mjs +114 -106
  313. package/source/types/observerlist.mjs +66 -66
  314. package/source/types/proxyobserver.mjs +210 -210
  315. package/source/types/queue.mjs +63 -63
  316. package/source/types/randomid.mjs +13 -13
  317. package/source/types/regex.mjs +3 -1
  318. package/source/types/stack.mjs +64 -64
  319. package/source/types/tokenlist.mjs +206 -205
  320. package/source/types/typeof.mjs +12 -10
  321. package/source/types/uniquequeue.mjs +48 -48
  322. package/source/types/uuid.mjs +32 -32
  323. package/source/types/validate.mjs +67 -67
  324. package/source/types/version.mjs +115 -105
  325. package/source/util/clone.mjs +103 -91
  326. package/source/util/comparator.mjs +97 -97
  327. package/source/util/deadmansswitch.mjs +40 -44
  328. package/source/util/freeze.mjs +10 -9
  329. package/source/util/namespace.mjs +1 -1
  330. package/source/util/processing.mjs +104 -105
  331. package/source/util/runtime.mjs +56 -44
  332. package/source/util/trimspaces.mjs +24 -24
  333. package/test/cases/components/form/button.mjs +122 -0
  334. package/test/cases/components/form/confirm-button.mjs +127 -0
  335. package/test/cases/components/form/form.mjs +317 -0
  336. package/test/cases/components/form/reload.mjs +188 -0
  337. package/test/cases/components/form/select.mjs +229 -0
  338. package/test/cases/components/form/state-button.mjs +130 -0
  339. package/test/cases/components/form/tabs.mjs +98 -0
  340. package/test/cases/components/form/template.mjs +189 -0
  341. package/test/cases/components/form/tree-select.mjs +216 -0
  342. package/test/cases/components/host/details.mjs +68 -0
  343. package/test/cases/components/host/host.mjs +70 -0
  344. package/test/cases/components/host/overlay.mjs +60 -0
  345. package/test/cases/components/host/util.mjs +79 -0
  346. package/test/cases/components/notify/message.mjs +39 -0
  347. package/test/cases/components/notify/notify.mjs +89 -0
  348. package/test/cases/dom/customcontrol.mjs +5 -4
  349. package/test/cases/math/random.mjs +0 -1
  350. package/test/cases/monster.mjs +1 -1
  351. package/test/cases/net/webconnect/message.mjs +0 -1
  352. package/test/cases/types/node.mjs +1 -1
  353. package/test/util/chai-dom.mjs +2 -2
  354. package/test/util/intersection-mock.mjs +69 -0
  355. package/test/util/jsdom.mjs +41 -25
  356. package/test/util/localstorage.mjs +1 -0
  357. package/test/util/resize-observer.mjs +29 -0
  358. package/test/util/websocket.mjs +4 -1
  359. package/test/web/import.js +16 -1
  360. package/test/web/test.html +28 -5
  361. package/test/web/tests.js +30398 -17879
@@ -30,64 +30,70 @@ export { clone };
30
30
  * @throws {Error} unable to clone obj! its type isn't supported.
31
31
  */
32
32
  function clone(obj) {
33
- // typeof null results in 'object'. https://2ality.com/2013/10/typeof-null.html
34
- if (null === obj) {
35
- return obj;
36
- }
37
-
38
- // Handle the two simple types, null and undefined
39
- if (isPrimitive(obj)) {
40
- return obj;
41
- }
42
-
43
- // Handle the two simple types, null and undefined
44
- if (isFunction(obj)) {
45
- return obj;
46
- }
47
-
48
- // Handle Array
49
- if (isArray(obj)) {
50
- let copy = [];
51
- for (var i = 0, len = obj.length; i < len; i++) {
52
- copy[i] = clone(obj[i]);
53
- }
54
-
55
- return copy;
56
- }
57
-
58
- if (isObject(obj)) {
59
- // Handle Date
60
- if (obj instanceof Date) {
61
- let copy = new Date();
62
- copy.setTime(obj.getTime());
63
- return copy;
64
- }
65
-
66
- /** Do not clone DOM nodes */
67
- if (typeof Element !== "undefined" && obj instanceof Element) return obj;
68
- if (typeof HTMLDocument !== "undefined" && obj instanceof HTMLDocument) return obj;
69
- if (typeof DocumentFragment !== "undefined" && obj instanceof DocumentFragment) return obj;
70
-
71
- /** Do not clone global objects */
72
- if (obj === getGlobal()) return obj;
73
- if (typeof globalContext !== "undefined" && obj === globalContext) return obj;
74
- if (typeof window !== "undefined" && obj === window) return obj;
75
- if (typeof document !== "undefined" && obj === document) return obj;
76
- if (typeof navigator !== "undefined" && obj === navigator) return obj;
77
- if (typeof JSON !== "undefined" && obj === JSON) return obj;
78
-
79
- // Handle Proxy-Object
80
- try {
81
- // try/catch because possible: TypeError: Function has non-object prototype 'undefined' in instanceof check
82
- if (obj instanceof Proxy) {
83
- return obj;
84
- }
85
- } catch (e) {}
86
-
87
- return cloneObject(obj);
88
- }
89
-
90
- throw new Error("unable to clone obj! its type isn't supported.");
33
+ // typeof null results in 'object'. https://2ality.com/2013/10/typeof-null.html
34
+ if (null === obj) {
35
+ return obj;
36
+ }
37
+
38
+ // Handle the two simple types, null and undefined
39
+ if (isPrimitive(obj)) {
40
+ return obj;
41
+ }
42
+
43
+ // Handle the two simple types, null and undefined
44
+ if (isFunction(obj)) {
45
+ return obj;
46
+ }
47
+
48
+ // Handle Array
49
+ if (isArray(obj)) {
50
+ const copy = [];
51
+ for (var i = 0, len = obj.length; i < len; i++) {
52
+ copy[i] = clone(obj[i]);
53
+ }
54
+
55
+ return copy;
56
+ }
57
+
58
+ if (isObject(obj)) {
59
+ // Handle Date
60
+ if (obj instanceof Date) {
61
+ const copy = new Date();
62
+ copy.setTime(obj.getTime());
63
+ return copy;
64
+ }
65
+
66
+ /** Do not clone DOM nodes */
67
+ if (typeof Element !== "undefined" && obj instanceof Element) return obj;
68
+ if (typeof HTMLDocument !== "undefined" && obj instanceof HTMLDocument)
69
+ return obj;
70
+ if (
71
+ typeof DocumentFragment !== "undefined" &&
72
+ obj instanceof DocumentFragment
73
+ )
74
+ return obj;
75
+
76
+ /** Do not clone global objects */
77
+ if (obj === getGlobal()) return obj;
78
+ if (typeof globalContext !== "undefined" && obj === globalContext)
79
+ return obj;
80
+ if (typeof window !== "undefined" && obj === window) return obj;
81
+ if (typeof document !== "undefined" && obj === document) return obj;
82
+ if (typeof navigator !== "undefined" && obj === navigator) return obj;
83
+ if (typeof JSON !== "undefined" && obj === JSON) return obj;
84
+
85
+ // Handle Proxy-Object
86
+ try {
87
+ // try/catch because possible: TypeError: Function has non-object prototype 'undefined' in instanceof check
88
+ if (obj instanceof Proxy) {
89
+ return obj;
90
+ }
91
+ } catch (e) {}
92
+
93
+ return cloneObject(obj);
94
+ }
95
+
96
+ throw new Error("unable to clone obj! its type isn't supported.");
91
97
  }
92
98
 
93
99
  /**
@@ -97,37 +103,43 @@ function clone(obj) {
97
103
  * @private
98
104
  */
99
105
  function cloneObject(obj) {
100
- validateObject(obj);
101
-
102
- const fkt = obj?.["constructor"];
103
-
104
- /** Object has clone method */
105
- if (typeOf(fkt) === "function") {
106
- const prototype = fkt?.prototype;
107
- if (typeof prototype === "object") {
108
- if (prototype.hasOwnProperty("getClone") && typeOf(obj.getClone) === "function") {
109
- return obj.getClone();
110
- }
111
- }
112
- }
113
-
114
- let copy = {};
115
- if (typeof obj.constructor === "function" && typeof obj.constructor.call === "function") {
116
- copy = new obj.constructor();
117
- }
118
-
119
- for (let key in obj) {
120
- if (!obj.hasOwnProperty(key)) {
121
- continue;
122
- }
123
-
124
- if (isPrimitive(obj[key])) {
125
- copy[key] = obj[key];
126
- continue;
127
- }
128
-
129
- copy[key] = clone(obj[key]);
130
- }
131
-
132
- return copy;
106
+ validateObject(obj);
107
+
108
+ const fkt = obj?.["constructor"];
109
+
110
+ /** Object has clone method */
111
+ if (typeOf(fkt) === "function") {
112
+ const prototype = fkt?.prototype;
113
+ if (typeof prototype === "object") {
114
+ if (
115
+ prototype.hasOwnProperty("getClone") &&
116
+ typeOf(obj.getClone) === "function"
117
+ ) {
118
+ return obj.getClone();
119
+ }
120
+ }
121
+ }
122
+
123
+ let copy = {};
124
+ if (
125
+ typeof obj.constructor === "function" &&
126
+ typeof obj.constructor.call === "function"
127
+ ) {
128
+ copy = new obj.constructor();
129
+ }
130
+
131
+ for (const key in obj) {
132
+ if (!obj.hasOwnProperty(key)) {
133
+ continue;
134
+ }
135
+
136
+ if (isPrimitive(obj[key])) {
137
+ copy[key] = obj[key];
138
+ continue;
139
+ }
140
+
141
+ copy[key] = clone(obj[key]);
142
+ }
143
+
144
+ return copy;
133
145
  }
@@ -37,112 +37,112 @@ export { Comparator };
37
37
  * @memberOf Monster.Util
38
38
  */
39
39
  class Comparator extends Base {
40
- /**
41
- * create new comparator
42
- *
43
- * @param {Monster.Util~exampleCallback} [callback] Comparator callback
44
- * @throw {TypeError} unsupported type
45
- * @throw {TypeError} impractical comparison
46
- */
47
- constructor(callback) {
48
- super();
40
+ /**
41
+ * create new comparator
42
+ *
43
+ * @param {Monster.Util~exampleCallback} [callback] Comparator callback
44
+ * @throw {TypeError} unsupported type
45
+ * @throw {TypeError} impractical comparison
46
+ */
47
+ constructor(callback) {
48
+ super();
49
49
 
50
- if (isFunction(callback)) {
51
- this.compare = callback;
52
- } else if (callback !== undefined) {
53
- throw new TypeError("unsupported type");
54
- } else {
55
- // default compare function
50
+ if (isFunction(callback)) {
51
+ this.compare = callback;
52
+ } else if (callback !== undefined) {
53
+ throw new TypeError("unsupported type");
54
+ } else {
55
+ // default compare function
56
56
 
57
- /**
58
- *
59
- * @param {*} a
60
- * @param {*} b
61
- * @return {integer} -1, 0 or 1
62
- */
63
- this.compare = function (a, b) {
64
- if (typeof a !== typeof b) {
65
- throw new TypeError("impractical comparison", "types/comparator.mjs");
66
- }
57
+ /**
58
+ *
59
+ * @param {*} a
60
+ * @param {*} b
61
+ * @return {integer} -1, 0 or 1
62
+ */
63
+ this.compare = function (a, b) {
64
+ if (typeof a !== typeof b) {
65
+ throw new TypeError("impractical comparison", "types/comparator.mjs");
66
+ }
67
67
 
68
- if (a === b) {
69
- return 0;
70
- }
71
- return a < b ? -1 : 1;
72
- };
73
- }
74
- }
68
+ if (a === b) {
69
+ return 0;
70
+ }
71
+ return a < b ? -1 : 1;
72
+ };
73
+ }
74
+ }
75
75
 
76
- /**
77
- * changes the order of the operators
78
- *
79
- * @return {Comparator}
80
- */
81
- reverse() {
82
- const original = this.compare;
83
- this.compare = (a, b) => original(b, a);
84
- return this;
85
- }
76
+ /**
77
+ * changes the order of the operators
78
+ *
79
+ * @return {Comparator}
80
+ */
81
+ reverse() {
82
+ const original = this.compare;
83
+ this.compare = (a, b) => original(b, a);
84
+ return this;
85
+ }
86
86
 
87
- /**
88
- * Checks if two variables are equal.
89
- *
90
- * @param {*} a
91
- * @param {*} b
92
- *
93
- * @return {boolean}
94
- */
95
- equal(a, b) {
96
- return this.compare(a, b) === 0;
97
- }
87
+ /**
88
+ * Checks if two variables are equal.
89
+ *
90
+ * @param {*} a
91
+ * @param {*} b
92
+ *
93
+ * @return {boolean}
94
+ */
95
+ equal(a, b) {
96
+ return this.compare(a, b) === 0;
97
+ }
98
98
 
99
- /**
100
- * Checks if variable `a` is greater than `b`
101
- *
102
- * @param {*} a
103
- * @param {*} b
104
- *
105
- * @return {boolean}
106
- */
107
- greaterThan(a, b) {
108
- return this.compare(a, b) > 0;
109
- }
99
+ /**
100
+ * Checks if variable `a` is greater than `b`
101
+ *
102
+ * @param {*} a
103
+ * @param {*} b
104
+ *
105
+ * @return {boolean}
106
+ */
107
+ greaterThan(a, b) {
108
+ return this.compare(a, b) > 0;
109
+ }
110
110
 
111
- /**
112
- * Checks if variable `a` is greater than or equal to `b`
113
- *
114
- * @param {*} a
115
- * @param {*} b
116
- *
117
- * @return {boolean}
118
- */
119
- greaterThanOrEqual(a, b) {
120
- return this.greaterThan(a, b) || this.equal(a, b);
121
- }
111
+ /**
112
+ * Checks if variable `a` is greater than or equal to `b`
113
+ *
114
+ * @param {*} a
115
+ * @param {*} b
116
+ *
117
+ * @return {boolean}
118
+ */
119
+ greaterThanOrEqual(a, b) {
120
+ return this.greaterThan(a, b) || this.equal(a, b);
121
+ }
122
122
 
123
- /**
124
- * Checks if variable `a` is less than or equal to `b`
125
- *
126
- * @param {*} a
127
- * @param {*} b
128
- *
129
- * @return {boolean}
130
- */
131
- lessThanOrEqual(a, b) {
132
- return this.lessThan(a, b) || this.equal(a, b);
133
- }
123
+ /**
124
+ * Checks if variable `a` is less than or equal to `b`
125
+ *
126
+ * @param {*} a
127
+ * @param {*} b
128
+ *
129
+ * @return {boolean}
130
+ */
131
+ lessThanOrEqual(a, b) {
132
+ return this.lessThan(a, b) || this.equal(a, b);
133
+ }
134
134
 
135
- /**
136
- * Checks if variable a is less than b
137
- *
138
- * @param {*} a
139
- * @param {*} b
140
- *
141
- * @return {boolean}
142
- */
143
- lessThan(a, b) {
144
- return this.compare(a, b) < 0;
145
- }
135
+ /**
136
+ * Checks if variable a is less than b
137
+ *
138
+ * @param {*} a
139
+ * @param {*} b
140
+ *
141
+ * @return {boolean}
142
+ */
143
+ lessThan(a, b) {
144
+ return this.compare(a, b) < 0;
145
+ }
146
146
  }
147
147
 
148
148
  /**
@@ -24,53 +24,51 @@ export { DeadMansSwitch };
24
24
  * @summary Class to be able to execute function chains
25
25
  */
26
26
  class DeadMansSwitch extends Base {
27
- /**
28
- * Create new dead man's switch
29
- *
30
- * @param {Integer} delay
31
- * @param {function} callback
32
- * @throw {TypeError} the arguments must be either integer or functions
33
- * @throws {TypeError} value is not an integer
34
- */
35
- constructor(delay, callback) {
36
- super();
27
+ /**
28
+ * Create new dead man's switch
29
+ *
30
+ * @param {Integer} delay
31
+ * @param {function} callback
32
+ * @throw {TypeError} the arguments must be either integer or functions
33
+ * @throws {TypeError} value is not an integer
34
+ */
35
+ constructor(delay, callback) {
36
+ super();
37
37
 
38
- init.call(this, validateInteger(delay), validateFunction(callback));
39
- }
38
+ init.call(this, validateInteger(delay), validateFunction(callback));
39
+ }
40
40
 
41
- /**
42
- *
43
- * @param {Integer|undefined} [delay]
44
- */
45
- touch(delay) {
46
- if (this[internalSymbol]["isAlreadyRun"] === true) {
47
- throw new Error("has already run");
48
- }
41
+ /**
42
+ *
43
+ * @param {Integer|undefined} [delay]
44
+ */
45
+ touch(delay) {
46
+ if (this[internalSymbol]["isAlreadyRun"] === true) {
47
+ throw new Error("has already run");
48
+ }
49
49
 
50
- if (isInteger(delay)) {
51
- this[internalSymbol]["delay"] = delay;
52
- } else if (delay !== undefined) {
53
- throw new Error("unsupported argument");
54
- }
50
+ if (isInteger(delay)) {
51
+ this[internalSymbol]["delay"] = delay;
52
+ } else if (delay !== undefined) {
53
+ throw new Error("unsupported argument");
54
+ }
55
55
 
56
- clearTimeout(this[internalSymbol]["timer"]);
56
+ clearTimeout(this[internalSymbol]["timer"]);
57
57
 
58
- initCallback.call(this);
58
+ initCallback.call(this);
59
59
 
60
- return this;
61
- }
60
+ return this;
61
+ }
62
62
  }
63
63
 
64
64
  /**
65
65
  * @private
66
66
  */
67
67
  function initCallback() {
68
- const self = this;
69
-
70
- self[internalSymbol]["timer"] = setTimeout(() => {
71
- self[internalSymbol]["isAlreadyRun"] = true;
72
- self[internalSymbol]["callback"]();
73
- }, self[internalSymbol]["delay"]);
68
+ this[internalSymbol]["timer"] = setTimeout(() => {
69
+ this[internalSymbol]["isAlreadyRun"] = true;
70
+ this[internalSymbol]["callback"]();
71
+ }, this[internalSymbol]["delay"]);
74
72
  }
75
73
 
76
74
  /**
@@ -79,14 +77,12 @@ function initCallback() {
79
77
  * @param {function} callback
80
78
  */
81
79
  function init(delay, callback) {
82
- const self = this;
83
-
84
- self[internalSymbol] = {
85
- callback,
86
- delay,
87
- isAlreadyRun: false,
88
- timer: undefined,
89
- };
80
+ this[internalSymbol] = {
81
+ callback,
82
+ delay,
83
+ isAlreadyRun: false,
84
+ timer: undefined,
85
+ };
90
86
 
91
- initCallback.call(self);
87
+ initCallback.call(this);
92
88
  }
@@ -21,17 +21,18 @@ export { deepFreeze };
21
21
  * @throws {TypeError} value is not a object
22
22
  */
23
23
  function deepFreeze(object) {
24
- validateObject(object);
24
+ validateObject(object);
25
25
 
26
- // Retrieve the defined property names of the object
27
- var propNames = Object.getOwnPropertyNames(object);
26
+ // Retrieve the defined property names of the object
27
+ var propNames = Object.getOwnPropertyNames(object);
28
28
 
29
- // Freeze properties before freezing yourself
30
- for (let name of propNames) {
31
- let value = object[name];
29
+ // Freeze properties before freezing yourself
30
+ for (const name of propNames) {
31
+ const value = object[name];
32
32
 
33
- object[name] = value && typeof value === "object" ? deepFreeze(value) : value;
34
- }
33
+ object[name] =
34
+ value && typeof value === "object" ? deepFreeze(value) : value;
35
+ }
35
36
 
36
- return Object.freeze(object);
37
+ return Object.freeze(object);
37
38
  }
@@ -4,7 +4,7 @@
4
4
  */
5
5
 
6
6
  /**
7
- * Namespace for utilities.
7
+ * Namespace for all util related functions.
8
8
  *
9
9
  * @namespace Monster.Util
10
10
  * @memberOf Monster