@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
@@ -19,7 +19,9 @@ export { RestAPI };
19
19
  * @license AGPLv3
20
20
  * @since 3.12.0
21
21
  */
22
- const rawDataSymbol = Symbol.for("@schukai/monster/data/datasource/server/restapi/rawdata");
22
+ const rawDataSymbol = Symbol.for(
23
+ "@schukai/monster/data/datasource/server/restapi/rawdata",
24
+ );
23
25
 
24
26
  /**
25
27
  * The RestAPI is a class that enables a REST API server.
@@ -32,143 +34,138 @@ const rawDataSymbol = Symbol.for("@schukai/monster/data/datasource/server/restap
32
34
  * @summary The RestAPI is a class that binds a REST API server.
33
35
  */
34
36
  class RestAPI extends Server {
35
- /**
36
- *
37
- * @param {Object} [options] options contains definitions for the datasource.
38
- */
39
- constructor(options) {
40
- super();
41
-
42
- if (isObject(options)) {
43
- this.setOptions(options);
44
- }
45
- }
46
-
47
- /**
48
- * This method is called by the `instanceof` operator.
49
- * @returns {symbol}
50
- * @since 2.1.0
51
- */
52
- static get [instanceSymbol]() {
53
- return Symbol.for("@schukai/monster/data/datasource/server/restapi");
54
- }
55
-
56
- /**
57
- * @property {Object} write={} Options
58
- * @property {Object} write.init={} An options object containing any custom settings that you want to apply to the request. The parameters are identical to those of the {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request|Request constructor}
59
- * @property {string} write.init.method=POST
60
- * @property {Object} write.init.headers Object containing any custom headers that you want to apply to the request.
61
- * @property {string} write.responseCallback Callback function to be executed after the request has been completed.
62
- * @property {string} write.acceptedStatus=[200,201]
63
- * @property {string} write.url URL
64
- * @property {Object} write.mapping the mapping is applied before writing.
65
- * @property {String} write.mapping.transformer Transformer to select the appropriate entries
66
- * @property {Monster.Data.Datasource~exampleCallback[]} write.mapping.callback with the help of the callback, the structures can be adjusted before writing.
67
- * @property {Object} write.report
68
- * @property {String} write.report.path Path to validations
69
- * @property {Object} write.sheathing
70
- * @property {Object} write.sheathing.object Object to be wrapped
71
- * @property {string} write.sheathing.path Path to the data
72
- * @property {Object} read={} Options
73
- * @property {Object} read.init={} An options object containing any custom settings that you want to apply to the request. The parameters are identical to those of the {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request|Request constructor}
74
- * @property {string} read.init.method=GET
75
- * @property {string} read.acceptedStatus=[200]
76
- * @property {string} read.url URL
77
- * @property {Object} read.mapping the mapping is applied after reading.
78
- * @property {String} read.mapping.transformer Transformer to select the appropriate entries
79
- * @property {Monster.Data.Datasource~exampleCallback[]} read.mapping.callback with the help of the callback, the structures can be adjusted after reading.
80
- */
81
- get defaults() {
82
- return Object.assign({}, super.defaults, {
83
- write: {
84
- init: {
85
- method: "POST",
86
- },
87
- responseCallback: undefined,
88
- acceptedStatus: [200, 201],
89
- url: undefined,
90
- mapping: {
91
- transformer: undefined,
92
- callbacks: [],
93
- },
94
- sheathing: {
95
- object: undefined,
96
- path: undefined,
97
- },
98
- report: {
99
- path: undefined,
100
- },
101
- },
102
- read: {
103
- init: {
104
- method: "GET",
105
- },
106
- responseCallback: undefined,
107
- acceptedStatus: [200],
108
- url: undefined,
109
- mapping: {
110
- transformer: undefined,
111
- callbacks: [],
112
- },
113
- },
114
- });
115
- }
116
-
117
- /**
118
- * @return {Promise}
119
- * @throws {Error} the options does not contain a valid json definition
120
- * @throws {TypeError} value is not a object
121
- * @throws {Error} the data cannot be read
122
- */
123
- read() {
124
- const self = this;
125
-
126
- let init = self.getOption("read.init");
127
- if (!isObject(init)) init = {};
128
- if (!init["method"]) init["method"] = "GET";
129
-
130
- let callback = self.getOption("read.responseCallback");
131
- if (!callback)
132
- callback = (obj) => {
133
- self.set(self.transformServerPayload.call(self, obj));
134
- };
135
-
136
- return fetchData.call(this, init, "read", callback);
137
- }
138
-
139
- /**
140
- * @return {Promise}
141
- * @throws {WriteError} the data cannot be written
142
- */
143
- write() {
144
- const self = this;
145
-
146
- let init = self.getOption("write.init");
147
- if (!isObject(init)) init = {};
148
- if (typeof init["headers"] !== "object") {
149
- init["headers"] = {
150
- "Content-Type": "application/json",
151
- };
152
- }
153
- if (!init["method"]) init["method"] = "POST";
154
-
155
- let obj = self.prepareServerPayload(self.get());
156
- init["body"] = JSON.stringify(obj);
157
-
158
- let callback = self.getOption("write.responseCallback");
159
- return fetchData.call(this, init, "write", callback);
160
- }
161
-
162
- /**
163
- * @return {RestAPI}
164
- */
165
- getClone() {
166
- const self = this;
167
- return new RestAPI(
168
- self[internalSymbol].getRealSubject()["options"].read,
169
- self[internalSymbol].getRealSubject()["options"].write,
170
- );
171
- }
37
+ /**
38
+ *
39
+ * @param {Object} [options] options contains definitions for the datasource.
40
+ */
41
+ constructor(options) {
42
+ super();
43
+
44
+ if (isObject(options)) {
45
+ this.setOptions(options);
46
+ }
47
+ }
48
+
49
+ /**
50
+ * This method is called by the `instanceof` operator.
51
+ * @returns {symbol}
52
+ * @since 2.1.0
53
+ */
54
+ static get [instanceSymbol]() {
55
+ return Symbol.for("@schukai/monster/data/datasource/server/restapi");
56
+ }
57
+
58
+ /**
59
+ * @property {Object} write={} Options
60
+ * @property {Object} write.init={} An options object containing any custom settings that you want to apply to the request. The parameters are identical to those of the {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request|Request constructor}
61
+ * @property {string} write.init.method=POST
62
+ * @property {Object} write.init.headers Object containing any custom headers that you want to apply to the request.
63
+ * @property {string} write.responseCallback Callback function to be executed after the request has been completed.
64
+ * @property {string} write.acceptedStatus=[200,201]
65
+ * @property {string} write.url URL
66
+ * @property {Object} write.mapping the mapping is applied before writing.
67
+ * @property {String} write.mapping.transformer Transformer to select the appropriate entries
68
+ * @property {Monster.Data.Datasource~exampleCallback[]} write.mapping.callback with the help of the callback, the structures can be adjusted before writing.
69
+ * @property {Object} write.report
70
+ * @property {String} write.report.path Path to validations
71
+ * @property {Object} write.sheathing
72
+ * @property {Object} write.sheathing.object Object to be wrapped
73
+ * @property {string} write.sheathing.path Path to the data
74
+ * @property {Object} read={} Options
75
+ * @property {Object} read.init={} An options object containing any custom settings that you want to apply to the request. The parameters are identical to those of the {@link https://developer.mozilla.org/en-US/docs/Web/API/Request/Request|Request constructor}
76
+ * @property {string} read.init.method=GET
77
+ * @property {string} read.acceptedStatus=[200]
78
+ * @property {string} read.url URL
79
+ * @property {Object} read.mapping the mapping is applied after reading.
80
+ * @property {String} read.mapping.transformer Transformer to select the appropriate entries
81
+ * @property {Monster.Data.Datasource~exampleCallback[]} read.mapping.callback with the help of the callback, the structures can be adjusted after reading.
82
+ */
83
+ get defaults() {
84
+ return Object.assign({}, super.defaults, {
85
+ write: {
86
+ init: {
87
+ method: "POST",
88
+ },
89
+ responseCallback: undefined,
90
+ acceptedStatus: [200, 201],
91
+ url: undefined,
92
+ mapping: {
93
+ transformer: undefined,
94
+ callbacks: [],
95
+ },
96
+ sheathing: {
97
+ object: undefined,
98
+ path: undefined,
99
+ },
100
+ report: {
101
+ path: undefined,
102
+ },
103
+ },
104
+ read: {
105
+ init: {
106
+ method: "GET",
107
+ },
108
+ responseCallback: undefined,
109
+ acceptedStatus: [200],
110
+ url: undefined,
111
+ mapping: {
112
+ transformer: undefined,
113
+ callbacks: [],
114
+ },
115
+ },
116
+ });
117
+ }
118
+
119
+ /**
120
+ * @return {Promise}
121
+ * @throws {Error} the options does not contain a valid json definition
122
+ * @throws {TypeError} value is not a object
123
+ * @throws {Error} the data cannot be read
124
+ */
125
+ read() {
126
+ let init = this.getOption("read.init");
127
+ if (!isObject(init)) init = {};
128
+ if (!init["method"]) init["method"] = "GET";
129
+
130
+ let callback = this.getOption("read.responseCallback");
131
+ if (!callback)
132
+ callback = (obj) => {
133
+ this.set(this.transformServerPayload.call(this, obj));
134
+ };
135
+
136
+ return fetchData.call(this, init, "read", callback);
137
+ }
138
+
139
+ /**
140
+ * @return {Promise}
141
+ * @throws {WriteError} the data cannot be written
142
+ */
143
+ write() {
144
+ let init = this.getOption("write.init");
145
+ if (!isObject(init)) init = {};
146
+ if (typeof init["headers"] !== "object") {
147
+ init["headers"] = {
148
+ "Content-Type": "application/json",
149
+ };
150
+ }
151
+ if (!init["method"]) init["method"] = "POST";
152
+
153
+ const obj = this.prepareServerPayload(this.get());
154
+ init["body"] = JSON.stringify(obj);
155
+
156
+ const callback = this.getOption("write.responseCallback");
157
+ return fetchData.call(this, init, "write", callback);
158
+ }
159
+
160
+ /**
161
+ * @return {RestAPI}
162
+ */
163
+ getClone() {
164
+ return new RestAPI(
165
+ this[internalSymbol].getRealSubject()["options"].read,
166
+ this[internalSymbol].getRealSubject()["options"].write,
167
+ );
168
+ }
172
169
  }
173
170
 
174
171
  /**
@@ -179,43 +176,45 @@ class RestAPI extends Server {
179
176
  * @returns {Promise<string>}
180
177
  */
181
178
  function fetchData(init, key, callback) {
182
- const self = this;
183
- let response;
184
-
185
- return fetch(self.getOption(`${key}.url`), init)
186
- .then((resp) => {
187
- response = resp;
188
-
189
- const acceptedStatus = self.getOption(`${key}.acceptedStatus`, [200]);
190
-
191
- if (acceptedStatus.indexOf(resp.status) === -1) {
192
- throw new DataFetchError(
193
- `the response does not contain a accepted status (actual: ${resp.status}).`,
194
- response,
195
- );
196
- }
197
-
198
- return resp.text();
199
- })
200
- .then((body) => {
201
- let obj;
202
-
203
- try {
204
- obj = JSON.parse(body);
205
-
206
- response[rawDataSymbol] = obj;
207
- } catch (e) {
208
- if (body.length > 100) {
209
- body = `${body.substring(0, 97)}...`;
210
- }
211
-
212
- throw new DataFetchError(`the response does not contain a valid json (actual: ${body}).`, response);
213
- }
214
-
215
- if (callback && isFunction(callback)) {
216
- callback(obj);
217
- }
218
-
219
- return response;
220
- });
179
+ let response;
180
+
181
+ return fetch(this.getOption(`${key}.url`), init)
182
+ .then((resp) => {
183
+ response = resp;
184
+
185
+ const acceptedStatus = this.getOption(`${key}.acceptedStatus`, [200]);
186
+
187
+ if (acceptedStatus.indexOf(resp.status) === -1) {
188
+ throw new DataFetchError(
189
+ `the response does not contain a accepted status (actual: ${resp.status}).`,
190
+ response,
191
+ );
192
+ }
193
+
194
+ return resp.text();
195
+ })
196
+ .then((body) => {
197
+ let obj;
198
+
199
+ try {
200
+ obj = JSON.parse(body);
201
+
202
+ response[rawDataSymbol] = obj;
203
+ } catch (e) {
204
+ if (body.length > 100) {
205
+ body = `${body.substring(0, 97)}...`;
206
+ }
207
+
208
+ throw new DataFetchError(
209
+ `the response does not contain a valid json (actual: ${body}).`,
210
+ response,
211
+ );
212
+ }
213
+
214
+ if (callback && isFunction(callback)) {
215
+ callback(obj);
216
+ }
217
+
218
+ return response;
219
+ });
221
220
  }