@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
@@ -15,7 +15,9 @@ export { Storage, storageObjectSymbol };
15
15
  * @private
16
16
  * @type {symbol}
17
17
  */
18
- const storageObjectSymbol = Symbol.for("@schukai/monster/data/datasource/storage/@@storageObject");
18
+ const storageObjectSymbol = Symbol.for(
19
+ "@schukai/monster/data/datasource/storage/@@storageObject",
20
+ );
19
21
 
20
22
  /**
21
23
  * The class represents a record.
@@ -27,87 +29,86 @@ const storageObjectSymbol = Symbol.for("@schukai/monster/data/datasource/storage
27
29
  * @summary The Storage class encapsulates the access to data objects over WebStorageAPI.
28
30
  */
29
31
  class Storage extends Datasource {
30
- /**
31
- *
32
- * @param {string} key LocalStorage Key
33
- * @throws {TypeError} value is not a string
34
- */
35
- constructor(key) {
36
- super();
37
- this.setOption("key", validateString(key));
38
- }
32
+ /**
33
+ *
34
+ * @param {string} key LocalStorage Key
35
+ * @throws {TypeError} value is not a string
36
+ */
37
+ constructor(key) {
38
+ super();
39
+ this.setOption("key", validateString(key));
40
+ }
39
41
 
40
- /**
41
- * This method is called by the `instanceof` operator.
42
- * @returns {symbol}
43
- * @since 2.1.0
44
- */
45
- static get [instanceSymbol]() {
46
- return Symbol.for("@schukai/monster/data/datasource/storage");
47
- }
42
+ /**
43
+ * This method is called by the `instanceof` operator.
44
+ * @returns {symbol}
45
+ * @since 2.1.0
46
+ */
47
+ static get [instanceSymbol]() {
48
+ return Symbol.for("@schukai/monster/data/datasource/storage");
49
+ }
48
50
 
49
- /**
50
- * @property {string} key=undefined LocalStorage Key
51
- */
52
- get defaults() {
53
- return Object.assign({}, super.defaults, {
54
- key: undefined,
55
- });
56
- }
51
+ /**
52
+ * @property {string} key=undefined LocalStorage Key
53
+ */
54
+ get defaults() {
55
+ return Object.assign({}, super.defaults, {
56
+ key: undefined,
57
+ });
58
+ }
57
59
 
58
- /**
59
- * @throws {Error} this method must be implemented by derived classes.
60
- * @return {external:Storage}
61
- * @private
62
- */
63
- [storageObjectSymbol]() {
64
- throw new Error("this method must be implemented by derived classes");
65
- }
60
+ /**
61
+ * @throws {Error} this method must be implemented by derived classes.
62
+ * @return {external:Storage}
63
+ * @private
64
+ */
65
+ [storageObjectSymbol]() {
66
+ throw new Error("this method must be implemented by derived classes");
67
+ }
66
68
 
67
- /**
68
- * @return {Promise}
69
- * @throws {Error} the options does not contain a valid json definition
70
- * @throws {TypeError} value is not a object
71
- * @throws {Error} the data cannot be read
72
- */
73
- read() {
74
- const self = this;
69
+ /**
70
+ * @return {Promise}
71
+ * @throws {Error} the options does not contain a valid json definition
72
+ * @throws {TypeError} value is not a object
73
+ * @throws {Error} the data cannot be read
74
+ */
75
+ read() {
76
+ const self = this;
75
77
 
76
- const storage = self[storageObjectSymbol]();
78
+ const storage = self[storageObjectSymbol]();
77
79
 
78
- return new Promise(function (resolve) {
79
- const data = JSON.parse(storage.getItem(self.getOption("key")));
80
- self.set(data ?? {});
81
- resolve();
82
- });
83
- }
80
+ return new Promise(function (resolve) {
81
+ const data = JSON.parse(storage.getItem(self.getOption("key")));
82
+ self.set(data ?? {});
83
+ resolve();
84
+ });
85
+ }
84
86
 
85
- /**
86
- * @return {Storage}
87
- * @throws {Error} the data cannot be written
88
- */
89
- write() {
90
- const self = this;
87
+ /**
88
+ * @return {Storage}
89
+ * @throws {Error} the data cannot be written
90
+ */
91
+ write() {
92
+ const self = this;
91
93
 
92
- const storage = self[storageObjectSymbol]();
94
+ const storage = self[storageObjectSymbol]();
93
95
 
94
- return new Promise(function (resolve) {
95
- const data = self.get();
96
- if (data === undefined) {
97
- storage.removeItem(self.getOption("key"));
98
- } else {
99
- storage.setItem(self.getOption("key"), JSON.stringify(data));
100
- }
96
+ return new Promise(function (resolve) {
97
+ const data = self.get();
98
+ if (data === undefined) {
99
+ storage.removeItem(self.getOption("key"));
100
+ } else {
101
+ storage.setItem(self.getOption("key"), JSON.stringify(data));
102
+ }
101
103
 
102
- resolve();
103
- });
104
- }
104
+ resolve();
105
+ });
106
+ }
105
107
 
106
- /**
107
- * @return {Storage}
108
- */
109
- getClone() {
110
- const self = this;
111
- return new Storage(self[internalSymbol].getRealSubject()["options"].key);
112
- }
108
+ /**
109
+ * @return {Storage}
110
+ */
111
+ getClone() {
112
+ return new Storage(this[internalSymbol].getRealSubject()["options"].key);
113
+ }
113
114
  }
@@ -34,7 +34,9 @@ export { Datasource };
34
34
  * @license AGPLv3
35
35
  * @since 1.24.0
36
36
  */
37
- const internalDataSymbol = Symbol.for("@schukai/monster/data/datasource/@@data");
37
+ const internalDataSymbol = Symbol.for(
38
+ "@schukai/monster/data/datasource/@@data",
39
+ );
38
40
 
39
41
  /**
40
42
  * The datasource class is the basis for dealing with different data sources.
@@ -47,179 +49,186 @@ const internalDataSymbol = Symbol.for("@schukai/monster/data/datasource/@@data")
47
49
  * @summary The datasource class encapsulates the access to data objects.
48
50
  */
49
51
  class Datasource extends Base {
50
- /**
51
- * creates a new datasource
52
- *
53
- */
54
- constructor() {
55
- super();
56
-
57
- this[internalSymbol] = new ProxyObserver({
58
- options: extend({}, this.defaults),
59
- });
60
-
61
- this[internalDataSymbol] = new ProxyObserver({});
62
- }
63
-
64
- /**
65
- * attach a new observer
66
- *
67
- * @param {Observer} observer
68
- * @returns {Datasource}
69
- */
70
- attachObserver(observer) {
71
- this[internalDataSymbol].attachObserver(observer);
72
- return this;
73
- }
74
-
75
- /**
76
- * detach a observer
77
- *
78
- * @param {Observer} observer
79
- * @returns {Datasource}
80
- */
81
- detachObserver(observer) {
82
- this[internalDataSymbol].detachObserver(observer);
83
- return this;
84
- }
85
-
86
- /**
87
- * @param {Observer} observer
88
- * @returns {boolean}
89
- */
90
- containsObserver(observer) {
91
- return this[internalDataSymbol].containsObserver(observer);
92
- }
93
-
94
- /**
95
- * Derived classes can override and extend this method as follows.
96
- *
97
- * ```
98
- * get defaults() {
99
- * return Object.assign({}, super.defaults, {
100
- * myValue:true
101
- * });
102
- * }
103
- * ```
104
- */
105
- get defaults() {
106
- return {};
107
- }
108
-
109
- /**
110
- * Set option
111
- *
112
- * @param {string} path
113
- * @param {*} value
114
- * @return {Datasource}
115
- */
116
- setOption(path, value) {
117
- new Pathfinder(this[internalSymbol].getSubject()["options"]).setVia(path, value);
118
- return this;
119
- }
120
-
121
- /**
122
- * @param {string|object} options
123
- * @return {Datasource}
124
- * @throws {Error} the options does not contain a valid json definition
125
- */
126
- setOptions(options) {
127
- if (isString(options)) {
128
- options = parseOptionsJSON(options);
129
- }
130
-
131
- const self = this;
132
- extend(self[internalSymbol].getSubject()["options"], self.defaults, options);
133
-
134
- return self;
135
- }
136
-
137
- /**
138
- * nested options can be specified by path `a.b.c`
139
- *
140
- * @param {string} path
141
- * @param {*} defaultValue
142
- * @return {*}
143
- */
144
- getOption(path, defaultValue) {
145
- let value;
146
-
147
- try {
148
- value = new Pathfinder(this[internalSymbol].getRealSubject()["options"]).getVia(path);
149
- } catch (e) {}
150
-
151
- if (value === undefined) return defaultValue;
152
- return value;
153
- }
154
-
155
- /**
156
- * @throws {Error} this method must be implemented by derived classes.
157
- * @return {Promise}
158
- */
159
- read() {
160
- throw new Error("this method must be implemented by derived classes");
161
- }
162
-
163
- /**
164
- * @throws {Error} this method must be implemented by derived classes.
165
- * @return {Promise}
166
- */
167
- write() {
168
- throw new Error("this method must be implemented by derived classes");
169
- }
170
-
171
- /**
172
- * Returns real object
173
- *
174
- * @return {Object|Array}
175
- */
176
- get() {
177
- const self = this;
178
- return self[internalDataSymbol].getRealSubject();
179
- }
180
-
181
- /**
182
- * @param {Object|Array} data
183
- * @return {Datasource}
184
- */
185
- set(data) {
186
- const self = this;
187
- self[internalDataSymbol].setSubject(data);
188
- return self;
189
- }
190
-
191
- /**
192
- * This method is called by the `instanceof` operator.
193
- * @returns {symbol}
194
- * @since 2.1.0
195
- */
196
- static get [instanceSymbol]() {
197
- return Symbol.for("@schukai/monster/data/datasource");
198
- }
52
+ /**
53
+ * creates a new datasource
54
+ *
55
+ */
56
+ constructor() {
57
+ super();
58
+
59
+ this[internalSymbol] = new ProxyObserver({
60
+ options: extend({}, this.defaults),
61
+ });
62
+
63
+ this[internalDataSymbol] = new ProxyObserver({});
64
+ }
65
+
66
+ /**
67
+ * attach a new observer
68
+ *
69
+ * @param {Observer} observer
70
+ * @returns {Datasource}
71
+ */
72
+ attachObserver(observer) {
73
+ this[internalDataSymbol].attachObserver(observer);
74
+ return this;
75
+ }
76
+
77
+ /**
78
+ * detach a observer
79
+ *
80
+ * @param {Observer} observer
81
+ * @returns {Datasource}
82
+ */
83
+ detachObserver(observer) {
84
+ this[internalDataSymbol].detachObserver(observer);
85
+ return this;
86
+ }
87
+
88
+ /**
89
+ * @param {Observer} observer
90
+ * @returns {boolean}
91
+ */
92
+ containsObserver(observer) {
93
+ return this[internalDataSymbol].containsObserver(observer);
94
+ }
95
+
96
+ /**
97
+ * Derived classes can override and extend this method as follows.
98
+ *
99
+ * ```
100
+ * get defaults() {
101
+ * return Object.assign({}, super.defaults, {
102
+ * myValue:true
103
+ * });
104
+ * }
105
+ * ```
106
+ */
107
+ get defaults() {
108
+ return {};
109
+ }
110
+
111
+ /**
112
+ * Set option
113
+ *
114
+ * @param {string} path
115
+ * @param {*} value
116
+ * @return {Datasource}
117
+ */
118
+ setOption(path, value) {
119
+ new Pathfinder(this[internalSymbol].getSubject()["options"]).setVia(
120
+ path,
121
+ value,
122
+ );
123
+ return this;
124
+ }
125
+
126
+ /**
127
+ * @param {string|object} options
128
+ * @return {Datasource}
129
+ * @throws {Error} the options does not contain a valid json definition
130
+ */
131
+ setOptions(options) {
132
+ if (isString(options)) {
133
+ options = parseOptionsJSON(options);
134
+ }
135
+ extend(
136
+ this[internalSymbol].getSubject()["options"],
137
+ this.defaults,
138
+ options,
139
+ );
140
+
141
+ return this;
142
+ }
143
+
144
+ /**
145
+ * nested options can be specified by path `a.b.c`
146
+ *
147
+ * @param {string} path
148
+ * @param {*} defaultValue
149
+ * @return {*}
150
+ */
151
+ getOption(path, defaultValue) {
152
+ let value;
153
+
154
+ try {
155
+ value = new Pathfinder(
156
+ this[internalSymbol].getRealSubject()["options"],
157
+ ).getVia(path);
158
+ } catch (e) {}
159
+
160
+ if (value === undefined) return defaultValue;
161
+ return value;
162
+ }
163
+
164
+ /**
165
+ * @throws {Error} this method must be implemented by derived classes.
166
+ * @return {Promise}
167
+ */
168
+ read() {
169
+ throw new Error("this method must be implemented by derived classes");
170
+ }
171
+
172
+ /**
173
+ * @throws {Error} this method must be implemented by derived classes.
174
+ * @return {Promise}
175
+ */
176
+ write() {
177
+ throw new Error("this method must be implemented by derived classes");
178
+ }
179
+
180
+ /**
181
+ * Returns real object
182
+ *
183
+ * @return {Object|Array}
184
+ */
185
+ get() {
186
+ return this[internalDataSymbol].getRealSubject();
187
+ }
188
+
189
+ /**
190
+ * @param {Object|Array} data
191
+ * @return {Datasource}
192
+ */
193
+ set(data) {
194
+ this[internalDataSymbol].setSubject(data);
195
+ return this;
196
+ }
197
+
198
+ /**
199
+ * This method is called by the `instanceof` operator.
200
+ * @returns {symbol}
201
+ * @since 2.1.0
202
+ */
203
+ static get [instanceSymbol]() {
204
+ return Symbol.for("@schukai/monster/data/datasource");
205
+ }
199
206
  }
200
207
 
201
208
  /**
202
209
  * @private
203
- * @param data
210
+ * @param {String} data
204
211
  * @return {Object}
205
212
  * @throws {Error} the options does not contain a valid json definition
206
213
  */
207
214
  function parseOptionsJSON(data) {
208
- if (isString(data)) {
209
- // the configuration can be specified as a data url.
210
- try {
211
- let dataUrl = parseDataURL(data);
212
- data = dataUrl.content;
213
- } catch (e) {}
214
-
215
- try {
216
- let obj = JSON.parse(data);
217
- validateObject(obj);
218
- return obj;
219
- } catch (e) {
220
- throw new Error(`the options does not contain a valid json definition (actual: ${data}).`);
221
- }
222
- }
223
-
224
- return {};
215
+ if (isString(data)) {
216
+ // the configuration can be specified as a data url.
217
+ try {
218
+ const dataUrl = parseDataURL(data);
219
+ data = dataUrl.content;
220
+ } catch (e) {}
221
+
222
+ try {
223
+ const obj = JSON.parse(data);
224
+ validateObject(obj);
225
+ return obj;
226
+ } catch (e) {
227
+ throw new Error(
228
+ `the options does not contain a valid json definition (actual: ${data}).`,
229
+ );
230
+ }
231
+ }
232
+
233
+ return {};
225
234
  }