@stemy/ngx-utils 13.6.17 → 17.0.0

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 (268) hide show
  1. package/esm2022/ngx-utils/common-types.mjs +123 -0
  2. package/esm2022/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +210 -0
  3. package/esm2022/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +101 -0
  4. package/esm2022/ngx-utils/components/unordered-list/unordered-list.component.mjs +65 -0
  5. package/esm2022/ngx-utils/directives/async-method.base.mjs +82 -0
  6. package/{esm2020 → esm2022}/ngx-utils/directives/async-method.directive.mjs +21 -21
  7. package/esm2022/ngx-utils/directives/background.directive.mjs +51 -0
  8. package/{esm2020 → esm2022}/ngx-utils/directives/dynamic-table-template.directive.mjs +20 -20
  9. package/{esm2020 → esm2022}/ngx-utils/directives/global-template.directive.mjs +30 -30
  10. package/esm2022/ngx-utils/directives/icon.directive.mjs +67 -0
  11. package/esm2022/ngx-utils/directives/ngx-template-outlet.directive.mjs +90 -0
  12. package/{esm2020 → esm2022}/ngx-utils/directives/pagination-item.directive.mjs +34 -34
  13. package/esm2022/ngx-utils/directives/pagination.directive.mjs +84 -0
  14. package/esm2022/ngx-utils/directives/resource-if.directive.mjs +50 -0
  15. package/esm2022/ngx-utils/directives/sticky-class.directive.mjs +34 -0
  16. package/{esm2020 → esm2022}/ngx-utils/directives/sticky.directive.mjs +55 -55
  17. package/{esm2020 → esm2022}/ngx-utils/directives/unordered-list-item.directive.mjs +79 -79
  18. package/{esm2020 → esm2022}/ngx-utils/directives/unordered-list-template.directive.mjs +20 -20
  19. package/{esm2020 → esm2022}/ngx-utils/ngx-utils.imports.mjs +174 -174
  20. package/esm2022/ngx-utils/ngx-utils.module.mjs +202 -0
  21. package/esm2022/ngx-utils/pipes/chunk.pipe.mjs +25 -0
  22. package/{esm2020 → esm2022}/ngx-utils/pipes/entries.pipe.mjs +28 -28
  23. package/{esm2020 → esm2022}/ngx-utils/pipes/extra-item-properties.pipe.mjs +31 -31
  24. package/esm2022/ngx-utils/pipes/filter.pipe.mjs +37 -0
  25. package/esm2022/ngx-utils/pipes/find.pipe.mjs +29 -0
  26. package/{esm2020 → esm2022}/ngx-utils/pipes/format-number.pipe.mjs +21 -21
  27. package/{esm2020 → esm2022}/ngx-utils/pipes/get-offset.pipe.mjs +17 -17
  28. package/{esm2020 → esm2022}/ngx-utils/pipes/get-type.pipe.mjs +16 -16
  29. package/esm2022/ngx-utils/pipes/global-template.pipe.mjs +41 -0
  30. package/{esm2020 → esm2022}/ngx-utils/pipes/group-by.pipe.mjs +27 -27
  31. package/{esm2020 → esm2022}/ngx-utils/pipes/is-type.pipe.mjs +16 -16
  32. package/{esm2020 → esm2022}/ngx-utils/pipes/join.pipe.mjs +19 -19
  33. package/{esm2020 → esm2022}/ngx-utils/pipes/keys.pipe.mjs +22 -22
  34. package/{esm2020 → esm2022}/ngx-utils/pipes/map.pipe.mjs +29 -29
  35. package/{esm2020 → esm2022}/ngx-utils/pipes/max.pipe.mjs +26 -26
  36. package/{esm2020 → esm2022}/ngx-utils/pipes/min.pipe.mjs +26 -26
  37. package/{esm2020 → esm2022}/ngx-utils/pipes/pop.pipe.mjs +16 -16
  38. package/{esm2020 → esm2022}/ngx-utils/pipes/reduce.pipe.mjs +30 -30
  39. package/esm2022/ngx-utils/pipes/remap.pipe.mjs +32 -0
  40. package/{esm2020 → esm2022}/ngx-utils/pipes/replace.pipe.mjs +17 -17
  41. package/esm2022/ngx-utils/pipes/reverse.pipe.mjs +24 -0
  42. package/{esm2020 → esm2022}/ngx-utils/pipes/round.pipe.mjs +21 -21
  43. package/esm2022/ngx-utils/pipes/safe-html.pipe.mjs +34 -0
  44. package/{esm2020 → esm2022}/ngx-utils/pipes/shift.pipe.mjs +16 -16
  45. package/{esm2020 → esm2022}/ngx-utils/pipes/split.pipe.mjs +16 -16
  46. package/esm2022/ngx-utils/pipes/translate.pipe.mjs +86 -0
  47. package/{esm2020 → esm2022}/ngx-utils/pipes/values.pipe.mjs +22 -22
  48. package/esm2022/ngx-utils/plugins/resize-event.plugin.mjs +78 -0
  49. package/esm2022/ngx-utils/plugins/scroll-event.plugin.mjs +39 -0
  50. package/{esm2020 → esm2022}/ngx-utils/services/acl.service.mjs +84 -83
  51. package/esm2022/ngx-utils/services/api.service.mjs +42 -0
  52. package/{esm2020 → esm2022}/ngx-utils/services/auth.service.mjs +13 -13
  53. package/esm2022/ngx-utils/services/base-http.client.mjs +47 -0
  54. package/esm2022/ngx-utils/services/base-http.service.mjs +305 -0
  55. package/esm2022/ngx-utils/services/config.service.mjs +130 -0
  56. package/esm2022/ngx-utils/services/error-handler.service.mjs +49 -0
  57. package/{esm2020 → esm2022}/ngx-utils/services/events.service.mjs +26 -26
  58. package/{esm2020 → esm2022}/ngx-utils/services/formatter.service.mjs +49 -49
  59. package/esm2022/ngx-utils/services/global-template.service.mjs +37 -0
  60. package/esm2022/ngx-utils/services/icon.service.mjs +26 -0
  61. package/esm2022/ngx-utils/services/language.service.mjs +124 -0
  62. package/{esm2020 → esm2022}/ngx-utils/services/local-http.service.mjs +47 -47
  63. package/{esm2020 → esm2022}/ngx-utils/services/open-api.service.mjs +40 -40
  64. package/{esm2020 → esm2022}/ngx-utils/services/promise.service.mjs +55 -55
  65. package/esm2022/ngx-utils/services/state.service.mjs +177 -0
  66. package/{esm2020 → esm2022}/ngx-utils/services/static-language.service.mjs +166 -166
  67. package/esm2022/ngx-utils/services/storage.service.mjs +49 -0
  68. package/{esm2020 → esm2022}/ngx-utils/services/toaster.service.mjs +32 -32
  69. package/esm2022/ngx-utils/services/translated-url.serializer.mjs +73 -0
  70. package/esm2022/ngx-utils/services/universal.service.mjs +81 -0
  71. package/{esm2020 → esm2022}/ngx-utils/services/wasm.service.mjs +46 -46
  72. package/esm2022/ngx-utils/utils/ajax-request-handler.mjs +40 -0
  73. package/esm2022/ngx-utils/utils/array.utils.mjs +107 -0
  74. package/esm2022/ngx-utils/utils/auth.guard.mjs +181 -0
  75. package/esm2022/ngx-utils/utils/cached-factory.mjs +30 -0
  76. package/esm2022/ngx-utils/utils/canvas.utils.mjs +388 -0
  77. package/esm2022/ngx-utils/utils/date.utils.mjs +29 -0
  78. package/{esm2020 → esm2022}/ngx-utils/utils/file-system.mjs +24 -24
  79. package/esm2022/ngx-utils/utils/file.utils.mjs +90 -0
  80. package/{esm2020 → esm2022}/ngx-utils/utils/generic-value.mjs +20 -20
  81. package/esm2022/ngx-utils/utils/geometry.mjs +132 -0
  82. package/{esm2020 → esm2022}/ngx-utils/utils/initializer.mjs +20 -20
  83. package/esm2022/ngx-utils/utils/jsonfn.mjs +45 -0
  84. package/esm2022/ngx-utils/utils/loader.utils.mjs +55 -0
  85. package/esm2022/ngx-utils/utils/math.utils.mjs +44 -0
  86. package/esm2022/ngx-utils/utils/object.utils.mjs +320 -0
  87. package/{esm2020 → esm2022}/ngx-utils/utils/observable.utils.mjs +63 -63
  88. package/esm2022/ngx-utils/utils/reflect.utils.mjs +33 -0
  89. package/esm2022/ngx-utils/utils/set.utils.mjs +20 -0
  90. package/esm2022/ngx-utils/utils/string.utils.mjs +41 -0
  91. package/{esm2020 → esm2022}/ngx-utils/utils/timer.utils.mjs +51 -51
  92. package/esm2022/ngx-utils/utils/unique.utils.mjs +24 -0
  93. package/esm2022/ngx-utils/utils/vector.mjs +77 -0
  94. package/esm2022/ngx-utils/utils/wasi.mjs +159 -0
  95. package/esm2022/ngx-utils/utils/wasm-worker-proxy.mjs +99 -0
  96. package/{esm2020 → esm2022}/ngx-utils/utils/with-options-provider.mjs +23 -23
  97. package/{esm2020 → esm2022}/public_api.mjs +93 -93
  98. package/{esm2020 → esm2022}/stemy-ngx-utils.mjs +4 -4
  99. package/esm2022/tools/config.mjs +71 -0
  100. package/{esm2020 → esm2022}/tools/public_api.mjs +1 -1
  101. package/{esm2020 → esm2022}/tools/stemy-ngx-utils-tools.mjs +4 -4
  102. package/{fesm2020 → fesm2022}/stemy-ngx-utils-tools.mjs +71 -71
  103. package/{fesm2015 → fesm2022}/stemy-ngx-utils-tools.mjs.map +1 -1
  104. package/{fesm2020 → fesm2022}/stemy-ngx-utils.mjs +5639 -5636
  105. package/fesm2022/stemy-ngx-utils.mjs.map +1 -0
  106. package/{stemy-ngx-utils.d.ts → index.d.ts} +5 -5
  107. package/ng.mjs +5 -0
  108. package/ngx-utils/common-types.d.ts +378 -378
  109. package/ngx-utils/components/dynamic-table/dynamic-table.component.d.ts +56 -56
  110. package/ngx-utils/components/pagination-menu/pagination-menu.component.d.ts +31 -31
  111. package/ngx-utils/components/unordered-list/unordered-list.component.d.ts +25 -25
  112. package/ngx-utils/directives/async-method.base.d.ts +19 -19
  113. package/ngx-utils/directives/async-method.directive.d.ts +9 -9
  114. package/ngx-utils/directives/background.directive.d.ts +17 -17
  115. package/ngx-utils/directives/dynamic-table-template.directive.d.ts +11 -11
  116. package/ngx-utils/directives/global-template.directive.d.ts +13 -13
  117. package/ngx-utils/directives/icon.directive.d.ts +23 -23
  118. package/ngx-utils/directives/ngx-template-outlet.directive.d.ts +17 -17
  119. package/ngx-utils/directives/pagination-item.directive.d.ts +15 -15
  120. package/ngx-utils/directives/pagination.directive.d.ts +25 -25
  121. package/ngx-utils/directives/resource-if.directive.d.ts +19 -19
  122. package/ngx-utils/directives/sticky-class.directive.d.ts +15 -15
  123. package/ngx-utils/directives/sticky.directive.d.ts +19 -19
  124. package/ngx-utils/directives/unordered-list-item.directive.d.ts +28 -28
  125. package/ngx-utils/directives/unordered-list-template.directive.d.ts +11 -11
  126. package/ngx-utils/ngx-utils.imports.d.ts +74 -0
  127. package/ngx-utils/ngx-utils.module.d.ts +58 -58
  128. package/ngx-utils/pipes/chunk.pipe.d.ts +7 -7
  129. package/ngx-utils/pipes/entries.pipe.d.ts +12 -12
  130. package/ngx-utils/pipes/extra-item-properties.pipe.d.ts +8 -8
  131. package/ngx-utils/pipes/filter.pipe.d.ts +8 -8
  132. package/ngx-utils/pipes/find.pipe.d.ts +8 -8
  133. package/ngx-utils/pipes/format-number.pipe.d.ts +10 -10
  134. package/ngx-utils/pipes/get-offset.pipe.d.ts +7 -7
  135. package/ngx-utils/pipes/get-type.pipe.d.ts +7 -7
  136. package/ngx-utils/pipes/global-template.pipe.d.ts +16 -16
  137. package/ngx-utils/pipes/group-by.pipe.d.ts +8 -8
  138. package/ngx-utils/pipes/is-type.pipe.d.ts +7 -7
  139. package/ngx-utils/pipes/join.pipe.d.ts +7 -7
  140. package/ngx-utils/pipes/keys.pipe.d.ts +7 -7
  141. package/ngx-utils/pipes/map.pipe.d.ts +8 -8
  142. package/ngx-utils/pipes/max.pipe.d.ts +7 -7
  143. package/ngx-utils/pipes/min.pipe.d.ts +7 -7
  144. package/ngx-utils/pipes/pop.pipe.d.ts +7 -7
  145. package/ngx-utils/pipes/reduce.pipe.d.ts +8 -8
  146. package/ngx-utils/pipes/remap.pipe.d.ts +7 -7
  147. package/ngx-utils/pipes/replace.pipe.d.ts +7 -7
  148. package/ngx-utils/pipes/reverse.pipe.d.ts +7 -7
  149. package/ngx-utils/pipes/round.pipe.d.ts +10 -10
  150. package/ngx-utils/pipes/safe-html.pipe.d.ts +10 -10
  151. package/ngx-utils/pipes/shift.pipe.d.ts +7 -7
  152. package/ngx-utils/pipes/split.pipe.d.ts +7 -7
  153. package/ngx-utils/pipes/translate.pipe.d.ts +19 -19
  154. package/ngx-utils/pipes/values.pipe.d.ts +7 -7
  155. package/ngx-utils/plugins/resize-event.plugin.d.ts +17 -17
  156. package/ngx-utils/plugins/scroll-event.plugin.d.ts +13 -13
  157. package/ngx-utils/services/acl.service.d.ts +14 -14
  158. package/ngx-utils/services/api.service.d.ts +17 -17
  159. package/ngx-utils/services/auth.service.d.ts +8 -8
  160. package/ngx-utils/services/base-http.client.d.ts +15 -15
  161. package/ngx-utils/services/base-http.service.d.ts +53 -53
  162. package/ngx-utils/services/config.service.d.ts +30 -30
  163. package/ngx-utils/services/error-handler.service.d.ts +13 -13
  164. package/ngx-utils/services/events.service.d.ts +14 -14
  165. package/ngx-utils/services/formatter.service.d.ts +15 -15
  166. package/ngx-utils/services/global-template.service.d.ts +19 -19
  167. package/ngx-utils/services/icon.service.d.ts +13 -13
  168. package/ngx-utils/services/language.service.d.ts +21 -21
  169. package/ngx-utils/services/local-http.service.d.ts +14 -14
  170. package/ngx-utils/services/open-api.service.d.ts +11 -11
  171. package/ngx-utils/services/promise.service.d.ts +19 -19
  172. package/ngx-utils/services/state.service.d.ts +49 -49
  173. package/ngx-utils/services/static-language.service.d.ts +46 -46
  174. package/ngx-utils/services/storage.service.d.ts +15 -15
  175. package/ngx-utils/services/toaster.service.d.ts +13 -13
  176. package/ngx-utils/services/translated-url.serializer.d.ts +19 -19
  177. package/ngx-utils/services/universal.service.d.ts +28 -28
  178. package/ngx-utils/services/wasm.service.d.ts +25 -25
  179. package/ngx-utils/utils/ajax-request-handler.d.ts +11 -11
  180. package/ngx-utils/utils/array.utils.d.ts +11 -11
  181. package/ngx-utils/utils/auth.guard.d.ts +29 -29
  182. package/ngx-utils/utils/cached-factory.d.ts +2 -2
  183. package/ngx-utils/utils/canvas.utils.d.ts +13 -13
  184. package/ngx-utils/utils/date.utils.d.ts +8 -8
  185. package/ngx-utils/utils/file-system.d.ts +16 -16
  186. package/ngx-utils/utils/file.utils.d.ts +14 -14
  187. package/ngx-utils/utils/generic-value.d.ts +8 -8
  188. package/ngx-utils/utils/geometry.d.ts +50 -50
  189. package/ngx-utils/utils/initializer.d.ts +12 -12
  190. package/ngx-utils/utils/jsonfn.d.ts +6 -6
  191. package/ngx-utils/utils/loader.utils.d.ts +7 -7
  192. package/ngx-utils/utils/math.utils.d.ts +8 -8
  193. package/ngx-utils/utils/object.utils.d.ts +35 -35
  194. package/ngx-utils/utils/observable.utils.d.ts +13 -13
  195. package/ngx-utils/utils/reflect.utils.d.ts +9 -9
  196. package/ngx-utils/utils/set.utils.d.ts +4 -4
  197. package/ngx-utils/utils/string.utils.d.ts +9 -9
  198. package/ngx-utils/utils/timer.utils.d.ts +6 -6
  199. package/ngx-utils/utils/unique.utils.d.ts +5 -5
  200. package/ngx-utils/utils/vector.d.ts +23 -23
  201. package/ngx-utils/utils/wasi.d.ts +26 -26
  202. package/ngx-utils/utils/wasm-worker-proxy.d.ts +17 -17
  203. package/ngx-utils/utils/with-options-provider.d.ts +3 -3
  204. package/package.json +21 -29
  205. package/public_api.d.ts +93 -93
  206. package/tools/config.d.ts +7 -7
  207. package/tools/{stemy-ngx-utils-tools.d.ts → index.d.ts} +5 -5
  208. package/tools/public_api.d.ts +1 -1
  209. package/esm2020/ngx-utils/common-types.mjs +0 -123
  210. package/esm2020/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +0 -210
  211. package/esm2020/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +0 -101
  212. package/esm2020/ngx-utils/components/unordered-list/unordered-list.component.mjs +0 -65
  213. package/esm2020/ngx-utils/directives/async-method.base.mjs +0 -82
  214. package/esm2020/ngx-utils/directives/background.directive.mjs +0 -51
  215. package/esm2020/ngx-utils/directives/icon.directive.mjs +0 -67
  216. package/esm2020/ngx-utils/directives/ngx-template-outlet.directive.mjs +0 -90
  217. package/esm2020/ngx-utils/directives/pagination.directive.mjs +0 -84
  218. package/esm2020/ngx-utils/directives/resource-if.directive.mjs +0 -50
  219. package/esm2020/ngx-utils/directives/sticky-class.directive.mjs +0 -34
  220. package/esm2020/ngx-utils/ngx-utils.module.mjs +0 -204
  221. package/esm2020/ngx-utils/pipes/chunk.pipe.mjs +0 -25
  222. package/esm2020/ngx-utils/pipes/filter.pipe.mjs +0 -37
  223. package/esm2020/ngx-utils/pipes/find.pipe.mjs +0 -29
  224. package/esm2020/ngx-utils/pipes/global-template.pipe.mjs +0 -41
  225. package/esm2020/ngx-utils/pipes/remap.pipe.mjs +0 -32
  226. package/esm2020/ngx-utils/pipes/reverse.pipe.mjs +0 -24
  227. package/esm2020/ngx-utils/pipes/safe-html.pipe.mjs +0 -34
  228. package/esm2020/ngx-utils/pipes/translate.pipe.mjs +0 -86
  229. package/esm2020/ngx-utils/plugins/resize-event.plugin.mjs +0 -78
  230. package/esm2020/ngx-utils/plugins/scroll-event.plugin.mjs +0 -39
  231. package/esm2020/ngx-utils/services/api.service.mjs +0 -42
  232. package/esm2020/ngx-utils/services/base-http.client.mjs +0 -47
  233. package/esm2020/ngx-utils/services/base-http.service.mjs +0 -305
  234. package/esm2020/ngx-utils/services/config.service.mjs +0 -130
  235. package/esm2020/ngx-utils/services/error-handler.service.mjs +0 -49
  236. package/esm2020/ngx-utils/services/global-template.service.mjs +0 -37
  237. package/esm2020/ngx-utils/services/icon.service.mjs +0 -26
  238. package/esm2020/ngx-utils/services/language.service.mjs +0 -124
  239. package/esm2020/ngx-utils/services/state.service.mjs +0 -173
  240. package/esm2020/ngx-utils/services/storage.service.mjs +0 -49
  241. package/esm2020/ngx-utils/services/translated-url.serializer.mjs +0 -73
  242. package/esm2020/ngx-utils/services/universal.service.mjs +0 -81
  243. package/esm2020/ngx-utils/utils/ajax-request-handler.mjs +0 -40
  244. package/esm2020/ngx-utils/utils/array.utils.mjs +0 -107
  245. package/esm2020/ngx-utils/utils/auth.guard.mjs +0 -181
  246. package/esm2020/ngx-utils/utils/cached-factory.mjs +0 -30
  247. package/esm2020/ngx-utils/utils/canvas.utils.mjs +0 -388
  248. package/esm2020/ngx-utils/utils/date.utils.mjs +0 -29
  249. package/esm2020/ngx-utils/utils/file.utils.mjs +0 -90
  250. package/esm2020/ngx-utils/utils/geometry.mjs +0 -132
  251. package/esm2020/ngx-utils/utils/jsonfn.mjs +0 -45
  252. package/esm2020/ngx-utils/utils/loader.utils.mjs +0 -55
  253. package/esm2020/ngx-utils/utils/math.utils.mjs +0 -44
  254. package/esm2020/ngx-utils/utils/object.utils.mjs +0 -320
  255. package/esm2020/ngx-utils/utils/reflect.utils.mjs +0 -33
  256. package/esm2020/ngx-utils/utils/set.utils.mjs +0 -20
  257. package/esm2020/ngx-utils/utils/string.utils.mjs +0 -41
  258. package/esm2020/ngx-utils/utils/unique.utils.mjs +0 -24
  259. package/esm2020/ngx-utils/utils/vector.mjs +0 -77
  260. package/esm2020/ngx-utils/utils/wasi.mjs +0 -159
  261. package/esm2020/ngx-utils/utils/wasm-worker-proxy.mjs +0 -99
  262. package/esm2020/tools/config.mjs +0 -71
  263. package/fesm2015/stemy-ngx-utils-tools.mjs +0 -77
  264. package/fesm2015/stemy-ngx-utils.mjs +0 -5894
  265. package/fesm2015/stemy-ngx-utils.mjs.map +0 -1
  266. package/fesm2020/stemy-ngx-utils-tools.mjs.map +0 -1
  267. package/fesm2020/stemy-ngx-utils.mjs.map +0 -1
  268. package/tools/package.json +0 -10
@@ -0,0 +1,41 @@
1
+ export class StringUtils {
2
+ static concat(separator, ...strings) {
3
+ return strings.filter(
4
+ // @dynamic
5
+ str => !!str).join(separator);
6
+ }
7
+ static startsWith(str, ...starts) {
8
+ for (let i = 0; i < starts.length; i++) {
9
+ if (str.startsWith(starts[i]))
10
+ return true;
11
+ }
12
+ return false;
13
+ }
14
+ static has(str, ...parts) {
15
+ for (let i = 0; i < parts.length; i++) {
16
+ if (str.indexOf(parts[i]) >= 0)
17
+ return true;
18
+ }
19
+ return false;
20
+ }
21
+ static lcFirst(str) {
22
+ return str ? str.charAt(0).toLowerCase() + str.substring(1) : "";
23
+ }
24
+ static ucFirst(str) {
25
+ return str ? str.charAt(0).toUpperCase() + str.substring(1) : "";
26
+ }
27
+ static isObjectId(id) {
28
+ return typeof id === "string" && id.length == 24 && !isNaN(Number("0x" + id));
29
+ }
30
+ static parseDomain(baseUrl) {
31
+ try {
32
+ const url = new URL(baseUrl);
33
+ const port = url.port && url.port !== "443" && url.port !== "80" ? `:${url.port}` : ``;
34
+ return `${url.protocol}//${url.hostname}${port}/`;
35
+ }
36
+ catch {
37
+ return "/";
38
+ }
39
+ }
40
+ }
41
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RyaW5nLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy9zdHJpbmcudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFFcEIsTUFBTSxDQUFDLE1BQU0sQ0FBQyxTQUFpQixFQUFFLEdBQUcsT0FBaUI7UUFDakQsT0FBTyxPQUFPLENBQUMsTUFBTTtRQUNqQixXQUFXO1FBQ1gsR0FBRyxDQUFDLEVBQUUsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUNmLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7SUFFRCxNQUFNLENBQUMsVUFBVSxDQUFDLEdBQVcsRUFBRSxHQUFHLE1BQWdCO1FBQzlDLEtBQUssSUFBSSxDQUFDLEdBQUcsQ0FBQyxFQUFFLENBQUMsR0FBRyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUMsRUFBRSxFQUFFLENBQUM7WUFDckMsSUFBSSxHQUFHLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFBRSxPQUFPLElBQUksQ0FBQztRQUMvQyxDQUFDO1FBQ0QsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztJQUVELE1BQU0sQ0FBQyxHQUFHLENBQUMsR0FBVyxFQUFFLEdBQUcsS0FBZTtRQUN0QyxLQUFLLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRSxDQUFDLEdBQUcsS0FBSyxDQUFDLE1BQU0sRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDO1lBQ3BDLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO2dCQUFFLE9BQU8sSUFBSSxDQUFDO1FBQ2hELENBQUM7UUFDRCxPQUFPLEtBQUssQ0FBQztJQUNqQixDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLE9BQU8sQ0FBQyxHQUFXO1FBQ3RCLE9BQU8sR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxHQUFHLEdBQUcsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQztJQUNyRSxDQUFDO0lBRUQsTUFBTSxDQUFDLFVBQVUsQ0FBQyxFQUFVO1FBQ3hCLE9BQU8sT0FBTyxFQUFFLEtBQUssUUFBUSxJQUFJLEVBQUUsQ0FBQyxNQUFNLElBQUksRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUFJLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQztJQUNsRixDQUFDO0lBRUQsTUFBTSxDQUFDLFdBQVcsQ0FBQyxPQUFlO1FBQzlCLElBQUksQ0FBQztZQUNELE1BQU0sR0FBRyxHQUFHLElBQUksR0FBRyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQzdCLE1BQU0sSUFBSSxHQUFHLEdBQUcsQ0FBQyxJQUFJLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxLQUFLLElBQUksR0FBRyxDQUFDLElBQUksS0FBSyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksR0FBRyxDQUFDLElBQUksRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7WUFDdkYsT0FBTyxHQUFHLEdBQUcsQ0FBQyxRQUFRLEtBQUssR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLEdBQUcsQ0FBQztRQUN0RCxDQUFDO1FBQUMsTUFBTSxDQUFDO1lBQ0wsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDO0lBQ0wsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNsYXNzIFN0cmluZ1V0aWxzIHtcclxuXHJcbiAgICBzdGF0aWMgY29uY2F0KHNlcGFyYXRvcjogc3RyaW5nLCAuLi5zdHJpbmdzOiBzdHJpbmdbXSk6IHN0cmluZyB7XHJcbiAgICAgICAgcmV0dXJuIHN0cmluZ3MuZmlsdGVyKFxyXG4gICAgICAgICAgICAvLyBAZHluYW1pY1xyXG4gICAgICAgICAgICBzdHIgPT4gISFzdHJcclxuICAgICAgICApLmpvaW4oc2VwYXJhdG9yKTtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgc3RhcnRzV2l0aChzdHI6IHN0cmluZywgLi4uc3RhcnRzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgc3RhcnRzLmxlbmd0aDsgaSsrKSB7XHJcbiAgICAgICAgICAgIGlmIChzdHIuc3RhcnRzV2l0aChzdGFydHNbaV0pKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBoYXMoc3RyOiBzdHJpbmcsIC4uLnBhcnRzOiBzdHJpbmdbXSk6IGJvb2xlYW4ge1xyXG4gICAgICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGFydHMubGVuZ3RoOyBpKyspIHtcclxuICAgICAgICAgICAgaWYgKHN0ci5pbmRleE9mKHBhcnRzW2ldKSA+PSAwKSByZXR1cm4gdHJ1ZTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIGZhbHNlO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBsY0ZpcnN0KHN0cjogc3RyaW5nKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gc3RyID8gc3RyLmNoYXJBdCgwKS50b0xvd2VyQ2FzZSgpICsgc3RyLnN1YnN0cmluZygxKSA6IFwiXCI7XHJcbiAgICB9XHJcblxyXG4gICAgc3RhdGljIHVjRmlyc3Qoc3RyOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHJldHVybiBzdHIgPyBzdHIuY2hhckF0KDApLnRvVXBwZXJDYXNlKCkgKyBzdHIuc3Vic3RyaW5nKDEpIDogXCJcIjtcclxuICAgIH1cclxuXHJcbiAgICBzdGF0aWMgaXNPYmplY3RJZChpZDogc3RyaW5nKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHR5cGVvZiBpZCA9PT0gXCJzdHJpbmdcIiAmJiBpZC5sZW5ndGggPT0gMjQgJiYgIWlzTmFOKE51bWJlcihcIjB4XCIgKyBpZCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBwYXJzZURvbWFpbihiYXNlVXJsOiBzdHJpbmcpOiBzdHJpbmcge1xyXG4gICAgICAgIHRyeSB7XHJcbiAgICAgICAgICAgIGNvbnN0IHVybCA9IG5ldyBVUkwoYmFzZVVybCk7XHJcbiAgICAgICAgICAgIGNvbnN0IHBvcnQgPSB1cmwucG9ydCAmJiB1cmwucG9ydCAhPT0gXCI0NDNcIiAmJiB1cmwucG9ydCAhPT0gXCI4MFwiID8gYDoke3VybC5wb3J0fWAgOiBgYDtcclxuICAgICAgICAgICAgcmV0dXJuIGAke3VybC5wcm90b2NvbH0vLyR7dXJsLmhvc3RuYW1lfSR7cG9ydH0vYDtcclxuICAgICAgICB9IGNhdGNoIHtcclxuICAgICAgICAgICAgcmV0dXJuIFwiL1wiO1xyXG4gICAgICAgIH1cclxuICAgIH1cclxufVxyXG4iXX0=
@@ -1,52 +1,52 @@
1
- import { ObjectUtils } from "./object.utils";
2
- export class TimerUtils {
3
- static createTimeout(func, time) {
4
- // @dynamic
5
- const run = (timer) => {
6
- timer.clear();
7
- timer.id = setTimeout(() => {
8
- timer.id = null;
9
- timer.func();
10
- }, timer.time);
11
- };
12
- // @dynamic
13
- const clear = (timer) => {
14
- if (!timer.id)
15
- return;
16
- clearTimeout(timer.id);
17
- timer.id = null;
18
- };
19
- return TimerUtils.createTimer(run, clear, func, time);
20
- }
21
- static createInterval(func, time) {
22
- // @dynamic
23
- const run = (timer) => {
24
- timer.clear();
25
- timer.id = setInterval(timer.func, timer.time);
26
- };
27
- // @dynamic
28
- const clear = (timer) => {
29
- if (!timer.id)
30
- return;
31
- clearInterval(timer.id);
32
- timer.id = null;
33
- };
34
- return TimerUtils.createTimer(run, clear, func, time);
35
- }
36
- static createTimer(run, clear, func, time) {
37
- const timer = {};
38
- const setParams = (func, time) => {
39
- timer.func = !ObjectUtils.isFunction(func) ? (() => { }) : func;
40
- timer.time = !ObjectUtils.isNumber(time) ? 100 : time;
41
- };
42
- timer.run = () => run(timer);
43
- timer.clear = () => clear(timer);
44
- timer.set = (func, time) => {
45
- setParams(func, time);
46
- timer.run();
47
- };
48
- setParams(func, time);
49
- return timer;
50
- }
51
- }
1
+ import { ObjectUtils } from "./object.utils";
2
+ export class TimerUtils {
3
+ static createTimeout(func, time) {
4
+ // @dynamic
5
+ const run = (timer) => {
6
+ timer.clear();
7
+ timer.id = setTimeout(() => {
8
+ timer.id = null;
9
+ timer.func();
10
+ }, timer.time);
11
+ };
12
+ // @dynamic
13
+ const clear = (timer) => {
14
+ if (!timer.id)
15
+ return;
16
+ clearTimeout(timer.id);
17
+ timer.id = null;
18
+ };
19
+ return TimerUtils.createTimer(run, clear, func, time);
20
+ }
21
+ static createInterval(func, time) {
22
+ // @dynamic
23
+ const run = (timer) => {
24
+ timer.clear();
25
+ timer.id = setInterval(timer.func, timer.time);
26
+ };
27
+ // @dynamic
28
+ const clear = (timer) => {
29
+ if (!timer.id)
30
+ return;
31
+ clearInterval(timer.id);
32
+ timer.id = null;
33
+ };
34
+ return TimerUtils.createTimer(run, clear, func, time);
35
+ }
36
+ static createTimer(run, clear, func, time) {
37
+ const timer = {};
38
+ const setParams = (func, time) => {
39
+ timer.func = !ObjectUtils.isFunction(func) ? (() => { }) : func;
40
+ timer.time = !ObjectUtils.isNumber(time) ? 100 : time;
41
+ };
42
+ timer.run = () => run(timer);
43
+ timer.clear = () => clear(timer);
44
+ timer.set = (func, time) => {
45
+ setParams(func, time);
46
+ timer.run();
47
+ };
48
+ setParams(func, time);
49
+ return timer;
50
+ }
51
+ }
52
52
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL3RpbWVyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzQyxNQUFNLE9BQU8sVUFBVTtJQUVuQixNQUFNLENBQUMsYUFBYSxDQUFDLElBQWUsRUFBRSxJQUFhO1FBQy9DLFdBQVc7UUFDWCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQztRQUNGLFdBQVc7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBQ3RCLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQWUsRUFBRSxJQUFhO1FBQ2hELFdBQVc7UUFDWCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUNGLFdBQVc7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBQ3RCLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQWMsRUFBRSxLQUFnQixFQUFFLElBQWMsRUFBRSxJQUFZO1FBQ3JGLE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQWMsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUMvQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQy9ELEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRCxDQUFDLENBQUM7UUFDRixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBYyxFQUFFLElBQVksRUFBRSxFQUFFO1lBQ3pDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJVGltZXJ9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vb2JqZWN0LnV0aWxzXCI7XHJcblxyXG50eXBlIFRpbWVyRnVuYyA9ICh0aW1lcjogSVRpbWVyKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRpbWVyVXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBjcmVhdGVUaW1lb3V0KGZ1bmM/OiBGdW5jdGlvbiwgdGltZT86IG51bWJlcik6IElUaW1lciB7XHJcbiAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICBjb25zdCBydW4gPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICB0aW1lci5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aW1lci5pZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGltZXIuaWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGltZXIuZnVuYygpO1xyXG4gICAgICAgICAgICB9LCB0aW1lci50aW1lKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgY2xlYXIgPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRpbWVyLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5pZCk7XHJcbiAgICAgICAgICAgIHRpbWVyLmlkID0gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBUaW1lclV0aWxzLmNyZWF0ZVRpbWVyKHJ1biwgY2xlYXIsIGZ1bmMsIHRpbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjcmVhdGVJbnRlcnZhbChmdW5jPzogRnVuY3Rpb24sIHRpbWU/OiBudW1iZXIpOiBJVGltZXIge1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgcnVuID0gKHRpbWVyOiBJVGltZXIpID0+IHtcclxuICAgICAgICAgICAgdGltZXIuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGltZXIuaWQgPSBzZXRJbnRlcnZhbCh0aW1lci5mdW5jLCB0aW1lci50aW1lKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgY2xlYXIgPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRpbWVyLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIuaWQpO1xyXG4gICAgICAgICAgICB0aW1lci5pZCA9IG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gVGltZXJVdGlscy5jcmVhdGVUaW1lcihydW4sIGNsZWFyLCBmdW5jLCB0aW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVUaW1lcihydW46IFRpbWVyRnVuYywgY2xlYXI6IFRpbWVyRnVuYywgZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcik6IElUaW1lciB7XHJcbiAgICAgICAgY29uc3QgdGltZXI6IElUaW1lciA9IHt9O1xyXG4gICAgICAgIGNvbnN0IHNldFBhcmFtcyA9IChmdW5jOiBGdW5jdGlvbiwgdGltZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRpbWVyLmZ1bmMgPSAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihmdW5jKSA/ICgoKSA9PiB7fSkgOiBmdW5jO1xyXG4gICAgICAgICAgICB0aW1lci50aW1lID0gIU9iamVjdFV0aWxzLmlzTnVtYmVyKHRpbWUpID8gMTAwIDogdGltZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRpbWVyLnJ1biA9ICgpID0+IHJ1bih0aW1lcik7XHJcbiAgICAgICAgdGltZXIuY2xlYXIgPSAoKSA9PiBjbGVhcih0aW1lcik7XHJcbiAgICAgICAgdGltZXIuc2V0ID0gKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgc2V0UGFyYW1zKGZ1bmMsIHRpbWUpO1xyXG4gICAgICAgICAgICB0aW1lci5ydW4oKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHNldFBhcmFtcyhmdW5jLCB0aW1lKTtcclxuICAgICAgICByZXR1cm4gdGltZXI7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,24 @@
1
+ export class UniqueUtils {
2
+ static uuid() {
3
+ if (typeof window !== "undefined" && typeof window.crypto !== "undefined" && typeof window.crypto.getRandomValues !== "undefined") {
4
+ const buf = new Uint16Array(8);
5
+ window.crypto.getRandomValues(buf);
6
+ return (this.pad4(buf[0]) + this.pad4(buf[1]) + "-" + this.pad4(buf[2]) + "-" + this.pad4(buf[3]) + "-" + this.pad4(buf[4]) + "-" + this.pad4(buf[5]) + this.pad4(buf[6]) + this.pad4(buf[7]));
7
+ }
8
+ return this.random4() + this.random4() + "-" + this.random4() + "-" + this.random4() + "-" +
9
+ this.random4() + "-" + this.random4() + this.random4() + this.random4();
10
+ }
11
+ static pad4(num) {
12
+ let ret = num.toString(16);
13
+ while (ret.length < 4) {
14
+ ret = "0" + ret;
15
+ }
16
+ return ret;
17
+ }
18
+ static random4() {
19
+ return Math.floor((1 + Math.random()) * 0x10000)
20
+ .toString(16)
21
+ .substring(1);
22
+ }
23
+ }
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidW5pcXVlLnV0aWxzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy91bmlxdWUudXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLFdBQVc7SUFFcEIsTUFBTSxDQUFDLElBQUk7UUFDUCxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsSUFBSSxPQUFPLE1BQU0sQ0FBQyxNQUFNLEtBQUssV0FBVyxJQUFJLE9BQU8sTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLEtBQUssV0FBVyxFQUFFLENBQUM7WUFDaEksTUFBTSxHQUFHLEdBQUcsSUFBSSxXQUFXLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDL0IsTUFBTSxDQUFDLE1BQU0sQ0FBQyxlQUFlLENBQUMsR0FBRyxDQUFDLENBQUM7WUFDbkMsT0FBTyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQztRQUNuTSxDQUFDO1FBQ0QsT0FBTyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLEdBQUcsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLEdBQUcsR0FBRyxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHO1lBQ3RGLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxHQUFHLEdBQUcsSUFBSSxDQUFDLE9BQU8sRUFBRSxHQUFHLElBQUksQ0FBQyxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7SUFDaEYsQ0FBQztJQUVPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBVztRQUMzQixJQUFJLEdBQUcsR0FBRyxHQUFHLENBQUMsUUFBUSxDQUFDLEVBQUUsQ0FBQyxDQUFDO1FBQzNCLE9BQU8sR0FBRyxDQUFDLE1BQU0sR0FBRyxDQUFDLEVBQUUsQ0FBQztZQUNwQixHQUFHLEdBQUcsR0FBRyxHQUFHLEdBQUcsQ0FBQztRQUNwQixDQUFDO1FBQ0QsT0FBTyxHQUFHLENBQUM7SUFDZixDQUFDO0lBRU8sTUFBTSxDQUFDLE9BQU87UUFDbEIsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxNQUFNLEVBQUUsQ0FBQyxHQUFHLE9BQU8sQ0FBQzthQUMzQyxRQUFRLENBQUMsRUFBRSxDQUFDO2FBQ1osU0FBUyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RCLENBQUM7Q0FDSiIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBVbmlxdWVVdGlscyB7XHJcblxyXG4gICAgc3RhdGljIHV1aWQoKTogc3RyaW5nIHtcclxuICAgICAgICBpZiAodHlwZW9mIHdpbmRvdyAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LmNyeXB0byAhPT0gXCJ1bmRlZmluZWRcIiAmJiB0eXBlb2Ygd2luZG93LmNyeXB0by5nZXRSYW5kb21WYWx1ZXMgIT09IFwidW5kZWZpbmVkXCIpIHtcclxuICAgICAgICAgICAgY29uc3QgYnVmID0gbmV3IFVpbnQxNkFycmF5KDgpO1xyXG4gICAgICAgICAgICB3aW5kb3cuY3J5cHRvLmdldFJhbmRvbVZhbHVlcyhidWYpO1xyXG4gICAgICAgICAgICByZXR1cm4gKHRoaXMucGFkNChidWZbMF0pICsgdGhpcy5wYWQ0KGJ1ZlsxXSkgKyBcIi1cIiArIHRoaXMucGFkNChidWZbMl0pICsgXCItXCIgKyB0aGlzLnBhZDQoYnVmWzNdKSArIFwiLVwiICsgdGhpcy5wYWQ0KGJ1Zls0XSkgKyBcIi1cIiArIHRoaXMucGFkNChidWZbNV0pICsgdGhpcy5wYWQ0KGJ1Zls2XSkgKyB0aGlzLnBhZDQoYnVmWzddKSk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLnJhbmRvbTQoKSArIHRoaXMucmFuZG9tNCgpICsgXCItXCIgKyB0aGlzLnJhbmRvbTQoKSArIFwiLVwiICsgdGhpcy5yYW5kb200KCkgKyBcIi1cIiArXHJcbiAgICAgICAgICAgIHRoaXMucmFuZG9tNCgpICsgXCItXCIgKyB0aGlzLnJhbmRvbTQoKSArIHRoaXMucmFuZG9tNCgpICsgdGhpcy5yYW5kb200KCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJpdmF0ZSBzdGF0aWMgcGFkNChudW06IG51bWJlcik6IHN0cmluZyB7XHJcbiAgICAgICAgbGV0IHJldCA9IG51bS50b1N0cmluZygxNik7XHJcbiAgICAgICAgd2hpbGUgKHJldC5sZW5ndGggPCA0KSB7XHJcbiAgICAgICAgICAgIHJldCA9IFwiMFwiICsgcmV0O1xyXG4gICAgICAgIH1cclxuICAgICAgICByZXR1cm4gcmV0O1xyXG4gICAgfVxyXG5cclxuICAgIHByaXZhdGUgc3RhdGljIHJhbmRvbTQoKTogc3RyaW5nIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5mbG9vcigoMSArIE1hdGgucmFuZG9tKCkpICogMHgxMDAwMClcclxuICAgICAgICAgICAgLnRvU3RyaW5nKDE2KVxyXG4gICAgICAgICAgICAuc3Vic3RyaW5nKDEpO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,77 @@
1
+ export class Vector {
2
+ get negative() {
3
+ return new Vector(-this.x, -this.y, -this.z);
4
+ }
5
+ get length() {
6
+ return Math.sqrt(this.dot(this));
7
+ }
8
+ get unit() {
9
+ return this.divide(this.length);
10
+ }
11
+ get min() {
12
+ return Math.min(Math.min(this.x, this.y), this.z);
13
+ }
14
+ get max() {
15
+ return Math.max(Math.max(this.x, this.y), this.z);
16
+ }
17
+ get angles() {
18
+ return {
19
+ theta: Math.atan2(this.z, this.x),
20
+ phi: Math.asin(this.y / this.length)
21
+ };
22
+ }
23
+ constructor(x, y, z) {
24
+ this.x = x;
25
+ this.y = y;
26
+ this.z = z;
27
+ }
28
+ add(v) {
29
+ if (v instanceof Vector)
30
+ return new Vector(this.x + v.x, this.y + v.y, this.z + v.z);
31
+ else
32
+ return new Vector(this.x + v, this.y + v, this.z + v);
33
+ }
34
+ subtract(v) {
35
+ if (v instanceof Vector)
36
+ return new Vector(this.x - v.x, this.y - v.y, this.z - v.z);
37
+ else
38
+ return new Vector(this.x - v, this.y - v, this.z - v);
39
+ }
40
+ multiply(v) {
41
+ if (v instanceof Vector)
42
+ return new Vector(this.x * v.x, this.y * v.y, this.z * v.z);
43
+ else
44
+ return new Vector(this.x * v, this.y * v, this.z * v);
45
+ }
46
+ divide(v) {
47
+ if (v instanceof Vector)
48
+ return new Vector(this.x / v.x, this.y / v.y, this.z / v.z);
49
+ else
50
+ return new Vector(this.x / v, this.y / v, this.z / v);
51
+ }
52
+ equals(v) {
53
+ return this.x == v.x && this.y == v.y && this.z == v.z;
54
+ }
55
+ dot(v) {
56
+ return this.x * v.x + this.y * v.y + this.z * v.z;
57
+ }
58
+ cross(v) {
59
+ return new Vector(this.y * v.z - this.z * v.y, this.z * v.x - this.x * v.z, this.x * v.y - this.y * v.x);
60
+ }
61
+ angleTo(v) {
62
+ return Math.acos(this.dot(v) / (this.length * v.length));
63
+ }
64
+ toArray(n) {
65
+ return [this.x, this.y, this.z].slice(0, n || 3);
66
+ }
67
+ clone() {
68
+ return new Vector(this.x, this.y, this.z);
69
+ }
70
+ init(x, y, z) {
71
+ this.x = x;
72
+ this.y = y;
73
+ this.z = z;
74
+ return this;
75
+ }
76
+ }
77
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidmVjdG9yLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy92ZWN0b3IudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxPQUFPLE1BQU07SUFFZixJQUFJLFFBQVE7UUFDUixPQUFPLElBQUksTUFBTSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDakQsQ0FBQztJQUVELElBQUksTUFBTTtRQUNOLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckMsQ0FBQztJQUVELElBQUksSUFBSTtRQUNKLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDcEMsQ0FBQztJQUVELElBQUksR0FBRztRQUNILE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRUQsSUFBSSxHQUFHO1FBQ0gsT0FBTyxJQUFJLENBQUMsR0FBRyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxJQUFJLE1BQU07UUFDTixPQUFPO1lBQ0gsS0FBSyxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxDQUFDO1lBQ2pDLEdBQUcsRUFBRSxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQztTQUN2QyxDQUFDO0lBQ04sQ0FBQztJQUVELFlBQW1CLENBQVMsRUFBUyxDQUFTLEVBQVMsQ0FBUztRQUE3QyxNQUFDLEdBQUQsQ0FBQyxDQUFRO1FBQVMsTUFBQyxHQUFELENBQUMsQ0FBUTtRQUFTLE1BQUMsR0FBRCxDQUFDLENBQVE7SUFDaEUsQ0FBQztJQUVELEdBQUcsQ0FBQyxDQUFrQjtRQUNsQixJQUFJLENBQUMsWUFBWSxNQUFNO1lBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNoRixPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFrQjtRQUN2QixJQUFJLENBQUMsWUFBWSxNQUFNO1lBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNoRixPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELFFBQVEsQ0FBQyxDQUFrQjtRQUN2QixJQUFJLENBQUMsWUFBWSxNQUFNO1lBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNoRixPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFrQjtRQUNyQixJQUFJLENBQUMsWUFBWSxNQUFNO1lBQUUsT0FBTyxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDOztZQUNoRixPQUFPLElBQUksTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0QsQ0FBQztJQUVELE1BQU0sQ0FBQyxDQUFTO1FBQ1osT0FBTyxJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUMzRCxDQUFDO0lBRUQsR0FBRyxDQUFDLENBQVM7UUFDVCxPQUFPLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDO0lBQ3RELENBQUM7SUFFRCxLQUFLLENBQUMsQ0FBUztRQUNYLE9BQU8sSUFBSSxNQUFNLENBQ2IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFDM0IsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FDOUIsQ0FBQztJQUNOLENBQUM7SUFFRCxPQUFPLENBQUMsQ0FBUztRQUNiLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLE1BQU0sR0FBRyxDQUFDLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztJQUM3RCxDQUFDO0lBRUQsT0FBTyxDQUFDLENBQVU7UUFDZCxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxLQUFLLENBQUMsQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRUQsS0FBSztRQUNELE9BQU8sSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQyxFQUFFLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQztJQUM5QyxDQUFDO0lBRUQsSUFBSSxDQUFDLENBQVMsRUFBRSxDQUFTLEVBQUUsQ0FBUztRQUNoQyxJQUFJLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQztRQUNYLElBQUksQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ1gsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUM7UUFDWCxPQUFPLElBQUksQ0FBQztJQUNoQixDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY2xhc3MgVmVjdG9yIHtcclxuXHJcbiAgICBnZXQgbmVnYXRpdmUoKTogVmVjdG9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlY3RvcigtdGhpcy54LCAtdGhpcy55LCAtdGhpcy56KTtcclxuICAgIH1cclxuXHJcbiAgICBnZXQgbGVuZ3RoKCk6IG51bWJlciB7XHJcbiAgICAgICAgcmV0dXJuIE1hdGguc3FydCh0aGlzLmRvdCh0aGlzKSk7XHJcbiAgICB9XHJcblxyXG4gICAgZ2V0IHVuaXQoKTogVmVjdG9yIHtcclxuICAgICAgICByZXR1cm4gdGhpcy5kaXZpZGUodGhpcy5sZW5ndGgpO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtaW4oKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5taW4oTWF0aC5taW4odGhpcy54LCB0aGlzLnkpLCB0aGlzLnopO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBtYXgoKTogbnVtYmVyIHtcclxuICAgICAgICByZXR1cm4gTWF0aC5tYXgoTWF0aC5tYXgodGhpcy54LCB0aGlzLnkpLCB0aGlzLnopO1xyXG4gICAgfVxyXG5cclxuICAgIGdldCBhbmdsZXMoKTogYW55IHtcclxuICAgICAgICByZXR1cm4ge1xyXG4gICAgICAgICAgICB0aGV0YTogTWF0aC5hdGFuMih0aGlzLnosIHRoaXMueCksXHJcbiAgICAgICAgICAgIHBoaTogTWF0aC5hc2luKHRoaXMueSAvIHRoaXMubGVuZ3RoKVxyXG4gICAgICAgIH07XHJcbiAgICB9XHJcblxyXG4gICAgY29uc3RydWN0b3IocHVibGljIHg6IG51bWJlciwgcHVibGljIHk6IG51bWJlciwgcHVibGljIHo6IG51bWJlcikge1xyXG4gICAgfVxyXG5cclxuICAgIGFkZCh2OiBWZWN0b3IgfCBudW1iZXIpOiBWZWN0b3Ige1xyXG4gICAgICAgIGlmICh2IGluc3RhbmNlb2YgVmVjdG9yKSByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLnggKyB2LngsIHRoaXMueSArIHYueSwgdGhpcy56ICsgdi56KTtcclxuICAgICAgICBlbHNlIHJldHVybiBuZXcgVmVjdG9yKHRoaXMueCArIHYsIHRoaXMueSArIHYsIHRoaXMueiArIHYpO1xyXG4gICAgfVxyXG5cclxuICAgIHN1YnRyYWN0KHY6IFZlY3RvciB8IG51bWJlcik6IFZlY3RvciB7XHJcbiAgICAgICAgaWYgKHYgaW5zdGFuY2VvZiBWZWN0b3IpIHJldHVybiBuZXcgVmVjdG9yKHRoaXMueCAtIHYueCwgdGhpcy55IC0gdi55LCB0aGlzLnogLSB2LnopO1xyXG4gICAgICAgIGVsc2UgcmV0dXJuIG5ldyBWZWN0b3IodGhpcy54IC0gdiwgdGhpcy55IC0gdiwgdGhpcy56IC0gdik7XHJcbiAgICB9XHJcblxyXG4gICAgbXVsdGlwbHkodjogVmVjdG9yIHwgbnVtYmVyKTogVmVjdG9yIHtcclxuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFZlY3RvcikgcmV0dXJuIG5ldyBWZWN0b3IodGhpcy54ICogdi54LCB0aGlzLnkgKiB2LnksIHRoaXMueiAqIHYueik7XHJcbiAgICAgICAgZWxzZSByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLnggKiB2LCB0aGlzLnkgKiB2LCB0aGlzLnogKiB2KTtcclxuICAgIH1cclxuXHJcbiAgICBkaXZpZGUodjogVmVjdG9yIHwgbnVtYmVyKTogVmVjdG9yIHtcclxuICAgICAgICBpZiAodiBpbnN0YW5jZW9mIFZlY3RvcikgcmV0dXJuIG5ldyBWZWN0b3IodGhpcy54IC8gdi54LCB0aGlzLnkgLyB2LnksIHRoaXMueiAvIHYueik7XHJcbiAgICAgICAgZWxzZSByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLnggLyB2LCB0aGlzLnkgLyB2LCB0aGlzLnogLyB2KTtcclxuICAgIH1cclxuXHJcbiAgICBlcXVhbHModjogVmVjdG9yKTogYm9vbGVhbiB7XHJcbiAgICAgICAgcmV0dXJuIHRoaXMueCA9PSB2LnggJiYgdGhpcy55ID09IHYueSAmJiB0aGlzLnogPT0gdi56O1xyXG4gICAgfVxyXG5cclxuICAgIGRvdCh2OiBWZWN0b3IpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiB0aGlzLnggKiB2LnggKyB0aGlzLnkgKiB2LnkgKyB0aGlzLnogKiB2Lno7XHJcbiAgICB9XHJcblxyXG4gICAgY3Jvc3ModjogVmVjdG9yKTogVmVjdG9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlY3RvcihcclxuICAgICAgICAgICAgdGhpcy55ICogdi56IC0gdGhpcy56ICogdi55LFxyXG4gICAgICAgICAgICB0aGlzLnogKiB2LnggLSB0aGlzLnggKiB2LnosXHJcbiAgICAgICAgICAgIHRoaXMueCAqIHYueSAtIHRoaXMueSAqIHYueFxyXG4gICAgICAgICk7XHJcbiAgICB9XHJcblxyXG4gICAgYW5nbGVUbyh2OiBWZWN0b3IpOiBudW1iZXIge1xyXG4gICAgICAgIHJldHVybiBNYXRoLmFjb3ModGhpcy5kb3QodikgLyAodGhpcy5sZW5ndGggKiB2Lmxlbmd0aCkpO1xyXG4gICAgfVxyXG5cclxuICAgIHRvQXJyYXkobj86IG51bWJlcik6IG51bWJlcltdIHtcclxuICAgICAgICByZXR1cm4gW3RoaXMueCwgdGhpcy55LCB0aGlzLnpdLnNsaWNlKDAsIG4gfHwgMyk7XHJcbiAgICB9XHJcblxyXG4gICAgY2xvbmUoKTogVmVjdG9yIHtcclxuICAgICAgICByZXR1cm4gbmV3IFZlY3Rvcih0aGlzLngsIHRoaXMueSwgdGhpcy56KTtcclxuICAgIH1cclxuXHJcbiAgICBpbml0KHg6IG51bWJlciwgeTogbnVtYmVyLCB6OiBudW1iZXIpOiBWZWN0b3Ige1xyXG4gICAgICAgIHRoaXMueCA9IHg7XHJcbiAgICAgICAgdGhpcy55ID0geTtcclxuICAgICAgICB0aGlzLnogPSB6O1xyXG4gICAgICAgIHJldHVybiB0aGlzO1xyXG4gICAgfVxyXG59XHJcbiJdfQ==
@@ -0,0 +1,159 @@
1
+ import { Injectable } from "@angular/core";
2
+ import * as i0 from "@angular/core";
3
+ export class Wasi {
4
+ constructor() {
5
+ this.env = {};
6
+ this.instantiated = false;
7
+ this.wasi = [
8
+ "emscripten_notify_memory_growth",
9
+ "proc_exit",
10
+ "environ_get",
11
+ "environ_sizes_get",
12
+ "fd_close",
13
+ "fd_write",
14
+ "fd_read",
15
+ "fd_seek",
16
+ ].reduce((res, key) => {
17
+ if (typeof this[key] === "function") {
18
+ res[key] = this[key].bind(this);
19
+ }
20
+ return res;
21
+ }, {});
22
+ }
23
+ instantiate(bytes) {
24
+ if (this.instantiated) {
25
+ throw new Error("WASI already instantiated");
26
+ }
27
+ this.instantiated = true;
28
+ return WebAssembly.instantiate(bytes, {
29
+ wasi_snapshot_preview1: this.wasi,
30
+ env: this.wasi
31
+ }).then(module => {
32
+ const exports = module.instance.exports;
33
+ this.wasm = {
34
+ ...exports,
35
+ writeArrayToMemory: (array) => {
36
+ const bytes = array.length * array.BYTES_PER_ELEMENT;
37
+ const pointer = exports.malloc(bytes);
38
+ const ctr = array.constructor;
39
+ const heapArray = new ctr(this.wasm.memory.buffer, pointer, array.length);
40
+ heapArray.set(array);
41
+ return pointer;
42
+ },
43
+ readArrayFromMemory: (pointer, array) => {
44
+ const ctr = array.constructor;
45
+ const heapArray = new ctr(this.wasm.memory.buffer, pointer, array.length);
46
+ array.set(heapArray);
47
+ return array;
48
+ }
49
+ };
50
+ this.updateMemoryViews();
51
+ return this.wasm;
52
+ });
53
+ }
54
+ updateMemoryViews() {
55
+ const buffer = this.wasm.memory.buffer;
56
+ this.wasm.HEAP8 = new Int8Array(buffer);
57
+ this.wasm.HEAP16 = new Int16Array(buffer);
58
+ this.wasm.HEAP32 = new Int32Array(buffer);
59
+ this.wasm.HEAPU8 = new Uint8Array(buffer);
60
+ this.wasm.HEAPU16 = new Uint16Array(buffer);
61
+ this.wasm.HEAPU32 = new Uint32Array(buffer);
62
+ this.wasm.HEAPF32 = new Float32Array(buffer);
63
+ this.wasm.HEAPF64 = new Float64Array(buffer);
64
+ }
65
+ getEnvStrings() {
66
+ if (!this.envStrings) {
67
+ let x;
68
+ const env = {};
69
+ for (x in this.env) {
70
+ if (this.env[x] === undefined)
71
+ delete env[x];
72
+ else
73
+ env[x] = this.env[x];
74
+ }
75
+ const strings = [];
76
+ for (x in env) {
77
+ strings.push(x + "=" + env[x]);
78
+ }
79
+ this.envStrings = strings;
80
+ }
81
+ return this.envStrings;
82
+ }
83
+ stringToAscii(str, buffer) {
84
+ const HEAP8 = this.wasm.HEAP8;
85
+ for (let i = 0; i < str.length; ++i) {
86
+ HEAP8[buffer++ >> 0] = str.charCodeAt(i);
87
+ }
88
+ HEAP8[buffer >> 0] = 0;
89
+ }
90
+ emscripten_notify_memory_growth(memoryIndex) {
91
+ this.updateMemoryViews();
92
+ }
93
+ proc_exit(rval) {
94
+ console.log("proc_exit", rval);
95
+ }
96
+ environ_get(environ, environ_buf) {
97
+ if (!this.wasm.HEAP8.byteLength) {
98
+ this.emscripten_notify_memory_growth(0);
99
+ }
100
+ const HEAPU32 = this.wasm.HEAPU32;
101
+ let bufSize = 0;
102
+ this.getEnvStrings().forEach((str, i) => {
103
+ const ptr = environ_buf + bufSize;
104
+ HEAPU32[environ + i * 4 >> 2] = ptr;
105
+ this.stringToAscii(str, ptr);
106
+ bufSize += str.length + 1;
107
+ });
108
+ return 0;
109
+ }
110
+ environ_sizes_get(penviron_count, penviron_buf_size) {
111
+ if (!this.wasm.HEAP8.byteLength) {
112
+ this.emscripten_notify_memory_growth(0);
113
+ }
114
+ const HEAPU32 = this.wasm.HEAPU32;
115
+ const strings = this.getEnvStrings();
116
+ HEAPU32[penviron_count >> 2] = strings.length;
117
+ let bufSize = 0;
118
+ strings.forEach(function (string) {
119
+ bufSize += string.length + 1;
120
+ });
121
+ HEAPU32[penviron_buf_size >> 2] = bufSize;
122
+ // WASI_ESUCCESS
123
+ return 0;
124
+ }
125
+ fd_close(fd) {
126
+ // WASI_ESUCCESS
127
+ return 0;
128
+ }
129
+ fd_write(fd, iovs, iovs_len, nwritten) {
130
+ if (fd !== 1) {
131
+ // WASI_EBADF
132
+ return 8;
133
+ }
134
+ if (iovs_len !== 1) {
135
+ // WASI_ENOSYS
136
+ return 52;
137
+ }
138
+ this.wasm.HEAPU32[nwritten >> 2] = this.wasm.HEAPU32[iovs + 4 >> 2];
139
+ // WASI_ESUCCESS
140
+ return 0;
141
+ }
142
+ fd_read(fd, iovs, iovs_len, nread) {
143
+ // WASI_EINVAL
144
+ return 28;
145
+ }
146
+ fd_seek(fd, offset, whence, newOffset) {
147
+ // WASI_EINVAL
148
+ return 28;
149
+ }
150
+ static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Wasi, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
151
+ static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Wasi, providedIn: "root" }); }
152
+ }
153
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.12", ngImport: i0, type: Wasi, decorators: [{
154
+ type: Injectable,
155
+ args: [{
156
+ providedIn: "root"
157
+ }]
158
+ }], ctorParameters: () => [] });
159
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3NyYy9uZ3gtdXRpbHMvdXRpbHMvd2FzaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUMsVUFBVSxFQUFDLE1BQU0sZUFBZSxDQUFDOztBQU16QyxNQUFNLE9BQU8sSUFBSTtJQVFiO1FBQ0ksSUFBSSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUM7UUFDZCxJQUFJLENBQUMsWUFBWSxHQUFHLEtBQUssQ0FBQztRQUMxQixJQUFJLENBQUMsSUFBSSxHQUFHO1lBQ1IsaUNBQWlDO1lBQ2pDLFdBQVc7WUFDWCxhQUFhO1lBQ2IsbUJBQW1CO1lBQ25CLFVBQVU7WUFDVixVQUFVO1lBQ1YsU0FBUztZQUNULFNBQVM7U0FDWixDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxHQUFHLEVBQUUsRUFBRTtZQUNsQixJQUFJLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxLQUFLLFVBQVUsRUFBRSxDQUFDO2dCQUNsQyxHQUFHLENBQUMsR0FBRyxDQUFDLEdBQUcsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsQ0FBQztZQUNwQyxDQUFDO1lBQ0QsT0FBTyxHQUFHLENBQUM7UUFDZixDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFDWCxDQUFDO0lBRUQsV0FBVyxDQUFDLEtBQWtCO1FBQzFCLElBQUksSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQUMsMkJBQTJCLENBQUMsQ0FBQztRQUNqRCxDQUFDO1FBQ0QsSUFBSSxDQUFDLFlBQVksR0FBRyxJQUFJLENBQUM7UUFDekIsT0FBTyxXQUFXLENBQUMsV0FBVyxDQUFDLEtBQUssRUFBRTtZQUNsQyxzQkFBc0IsRUFBRSxJQUFJLENBQUMsSUFBSTtZQUNqQyxHQUFHLEVBQUUsSUFBSSxDQUFDLElBQUk7U0FDakIsQ0FBQyxDQUFDLElB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Q0FBQyxDQUFBO0lBQ1osQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFVO1FBQ2YsZ0JBQWdCO1FBQ2hCLE9BQU8sQ0FBQyxDQUFDO0lBQ2IsQ0FBQztJQUVELFFBQVEsQ0FBQyxFQUFVLEVBQUUsSUFBWSxFQUFFLFFBQWdCLEVBQUUsUUFBZ0I7UUFDakUsSUFBSSxFQUFFLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDWCxhQUFhO1lBQ2IsT0FBTyxDQUFDLENBQUM7UUFDYixDQUFDO1FBQ0QsSUFBSSxRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUM7WUFDakIsY0FBYztZQUNkLE9BQU8sRUFBRSxDQUFDO1FBQ2QsQ0FBQztRQUNELElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLFFBQVEsSUFBSSxDQUFDLENBQUMsR0FBRyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLEdBQUcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBQ3BFLGdCQUFnQjtRQUNoQixPQUFPLENBQUMsQ0FBQztJQUNiLENBQUM7SUFFRCxPQUFPLENBQUMsRUFBVSxFQUFFLElBQVksRUFBRSxRQUFnQixFQUFFLEtBQWE7UUFDN0QsY0FBYztRQUNkLE9BQU8sRUFBRSxDQUFDO0lBQ2QsQ0FBQztJQUVELE9BQU8sQ0FBQyxFQUFVLEVBQUUsTUFBYyxFQUFFLE1BQWMsRUFBRSxTQUFpQjtRQUNqRSxjQUFjO1FBQ2QsT0FBTyxFQUFFLENBQUM7SUFDZCxDQUFDOytHQWxLUSxJQUFJO21IQUFKLElBQUksY0FGRCxNQUFNOzs0RkFFVCxJQUFJO2tCQUhoQixVQUFVO21CQUFDO29CQUNSLFVBQVUsRUFBRSxNQUFNO2lCQUNyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0YWJsZX0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcclxuaW1wb3J0IHtJV2FzaSwgSVdhc21FeHBvcnRzLCBUeXBlZEFycmF5fSBmcm9tIFwiLi4vY29tbW9uLXR5cGVzXCI7XHJcblxyXG5ASW5qZWN0YWJsZSh7XHJcbiAgICBwcm92aWRlZEluOiBcInJvb3RcIlxyXG59KVxyXG5leHBvcnQgY2xhc3MgV2FzaSBpbXBsZW1lbnRzIElXYXNpIHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgZW52OiB7W2tleTogc3RyaW5nXTogc3RyaW5nfTtcclxuICAgIHByb3RlY3RlZCBpbnN0YW50aWF0ZWQ6IGJvb2xlYW47XHJcbiAgICBwcm90ZWN0ZWQgd2FzaTogYW55O1xyXG4gICAgcHJvdGVjdGVkIHdhc206IElXYXNtRXhwb3J0cztcclxuICAgIHByb3RlY3RlZCBlbnZTdHJpbmdzOiBzdHJpbmdbXTtcclxuXHJcbiAgICBjb25zdHJ1Y3RvcigpIHtcclxuICAgICAgICB0aGlzLmVudiA9IHt9O1xyXG4gICAgICAgIHRoaXMuaW5zdGFudGlhdGVkID0gZmFsc2U7XHJcbiAgICAgICAgdGhpcy53YXNpID0gW1xyXG4gICAgICAgICAgICBcImVtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGhcIixcclxuICAgICAgICAgICAgXCJwcm9jX2V4aXRcIixcclxuICAgICAgICAgICAgXCJlbnZpcm9uX2dldFwiLFxyXG4gICAgICAgICAgICBcImVudmlyb25fc2l6ZXNfZ2V0XCIsXHJcbiAgICAgICAgICAgIFwiZmRfY2xvc2VcIixcclxuICAgICAgICAgICAgXCJmZF93cml0ZVwiLFxyXG4gICAgICAgICAgICBcImZkX3JlYWRcIixcclxuICAgICAgICAgICAgXCJmZF9zZWVrXCIsXHJcbiAgICAgICAgXS5yZWR1Y2UoKHJlcywga2V5KSA9PiB7XHJcbiAgICAgICAgICAgIGlmICh0eXBlb2YgdGhpc1trZXldID09PSBcImZ1bmN0aW9uXCIpIHtcclxuICAgICAgICAgICAgICAgIHJlc1trZXldID0gdGhpc1trZXldLmJpbmQodGhpcyk7XHJcbiAgICAgICAgICAgIH1cclxuICAgICAgICAgICAgcmV0dXJuIHJlcztcclxuICAgICAgICB9LCB7fSk7XHJcbiAgICB9XHJcblxyXG4gICAgaW5zdGFudGlhdGUoYnl0ZXM6IEFycmF5QnVmZmVyKTogUHJvbWlzZTxJV2FzbUV4cG9ydHM+IHtcclxuICAgICAgICBpZiAodGhpcy5pbnN0YW50aWF0ZWQpIHtcclxuICAgICAgICAgICAgdGhyb3cgbmV3IEVycm9yKFwiV0FTSSBhbHJlYWR5IGluc3RhbnRpYXRlZFwiKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy5pbnN0YW50aWF0ZWQgPSB0cnVlO1xyXG4gICAgICAgIHJldHVybiBXZWJBc3NlbWJseS5pbnN0YW50aWF0ZShieXRlcywge1xyXG4gICAgICAgICAgICB3YXNpX3NuYXBzaG90X3ByZXZpZXcxOiB0aGlzLndhc2ksXHJcbiAgICAgICAgICAgIGVudjogdGhpcy53YXNpXHJcbiAgICAgICAgfSkudGhlbihtb2R1bGUgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBleHBvcnRzID0gbW9kdWxlLmluc3RhbmNlLmV4cG9ydHMgYXMgYW55O1xyXG4gICAgICAgICAgICB0aGlzLndhc20gPSB7XHJcbiAgICAgICAgICAgICAgICAuLi5leHBvcnRzLFxyXG4gICAgICAgICAgICAgICAgd3JpdGVBcnJheVRvTWVtb3J5OiAoYXJyYXk6IFR5cGVkQXJyYXkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBieXRlcyA9IGFycmF5Lmxlbmd0aCAqIGFycmF5LkJZVEVTX1BFUl9FTEVNRU5UO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHBvaW50ZXIgPSBleHBvcnRzLm1hbGxvYyhieXRlcyk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgY3RyID0gYXJyYXkuY29uc3RydWN0b3IgYXMgYW55O1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGhlYXBBcnJheSA9IG5ldyBjdHIodGhpcy53YXNtLm1lbW9yeS5idWZmZXIsIHBvaW50ZXIsIGFycmF5Lmxlbmd0aCk7XHJcbiAgICAgICAgICAgICAgICAgICAgaGVhcEFycmF5LnNldChhcnJheSk7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHBvaW50ZXI7XHJcbiAgICAgICAgICAgICAgICB9LFxyXG4gICAgICAgICAgICAgICAgcmVhZEFycmF5RnJvbU1lbW9yeTogKHBvaW50ZXI6IG51bWJlciwgYXJyYXk6IFR5cGVkQXJyYXkpID0+IHtcclxuICAgICAgICAgICAgICAgICAgICBjb25zdCBjdHIgPSBhcnJheS5jb25zdHJ1Y3RvciBhcyBhbnk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgaGVhcEFycmF5ID0gbmV3IGN0cih0aGlzLndhc20ubWVtb3J5LmJ1ZmZlciwgcG9pbnRlciwgYXJyYXkubGVuZ3RoKTtcclxuICAgICAgICAgICAgICAgICAgICBhcnJheS5zZXQoaGVhcEFycmF5KTtcclxuICAgICAgICAgICAgICAgICAgICByZXR1cm4gYXJyYXk7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIH0gYXMgSVdhc21FeHBvcnRzO1xyXG4gICAgICAgICAgICB0aGlzLnVwZGF0ZU1lbW9yeVZpZXdzKCk7XHJcbiAgICAgICAgICAgIHJldHVybiB0aGlzLndhc207XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHVwZGF0ZU1lbW9yeVZpZXdzKCk6IHZvaWQge1xyXG4gICAgICAgIGNvbnN0IGJ1ZmZlciA9IHRoaXMud2FzbS5tZW1vcnkuYnVmZmVyO1xyXG4gICAgICAgIHRoaXMud2FzbS5IRUFQOCA9IG5ldyBJbnQ4QXJyYXkoYnVmZmVyKTtcclxuICAgICAgICB0aGlzLndhc20uSEVBUDE2ID0gbmV3IEludDE2QXJyYXkoYnVmZmVyKTtcclxuICAgICAgICB0aGlzLndhc20uSEVBUDMyID0gbmV3IEludDMyQXJyYXkoYnVmZmVyKTtcclxuICAgICAgICB0aGlzLndhc20uSEVBUFU4ID0gbmV3IFVpbnQ4QXJyYXkoYnVmZmVyKTtcclxuICAgICAgICB0aGlzLndhc20uSEVBUFUxNiA9IG5ldyBVaW50MTZBcnJheShidWZmZXIpO1xyXG4gICAgICAgIHRoaXMud2FzbS5IRUFQVTMyID0gbmV3IFVpbnQzMkFycmF5KGJ1ZmZlcik7XHJcbiAgICAgICAgdGhpcy53YXNtLkhFQVBGMzIgPSBuZXcgRmxvYXQzMkFycmF5KGJ1ZmZlcik7XHJcbiAgICAgICAgdGhpcy53YXNtLkhFQVBGNjQgPSBuZXcgRmxvYXQ2NEFycmF5KGJ1ZmZlcik7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIGdldEVudlN0cmluZ3MoKTogc3RyaW5nW10ge1xyXG4gICAgICAgIGlmICghdGhpcy5lbnZTdHJpbmdzKSB7XHJcbiAgICAgICAgICAgIGxldCB4O1xyXG4gICAgICAgICAgICBjb25zdCBlbnYgPSB7fTtcclxuICAgICAgICAgICAgZm9yICh4IGluIHRoaXMuZW52KSB7XHJcbiAgICAgICAgICAgICAgICBpZiAodGhpcy5lbnZbeF0gPT09IHVuZGVmaW5lZCkgZGVsZXRlIGVudlt4XTsgZWxzZSBlbnZbeF0gPSB0aGlzLmVudlt4XVxyXG4gICAgICAgICAgICB9XHJcbiAgICAgICAgICAgIGNvbnN0IHN0cmluZ3MgPSBbXTtcclxuICAgICAgICAgICAgZm9yICh4IGluIGVudikge1xyXG4gICAgICAgICAgICAgICAgc3RyaW5ncy5wdXNoKHggKyBcIj1cIiArIGVudlt4XSlcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICB0aGlzLmVudlN0cmluZ3MgPSBzdHJpbmdzXHJcbiAgICAgICAgfVxyXG4gICAgICAgIHJldHVybiB0aGlzLmVudlN0cmluZ3M7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvdGVjdGVkIHN0cmluZ1RvQXNjaWkoc3RyLCBidWZmZXIpIHtcclxuICAgICAgICBjb25zdCBIRUFQOCA9IHRoaXMud2FzbS5IRUFQODtcclxuICAgICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHN0ci5sZW5ndGg7ICsraSkge1xyXG4gICAgICAgICAgICBIRUFQOFtidWZmZXIrKyA+PiAwXSA9IHN0ci5jaGFyQ29kZUF0KGkpXHJcbiAgICAgICAgfVxyXG4gICAgICAgIEhFQVA4W2J1ZmZlciA+PiAwXSA9IDBcclxuICAgIH1cclxuXHJcbiAgICBlbXNjcmlwdGVuX25vdGlmeV9tZW1vcnlfZ3Jvd3RoKG1lbW9yeUluZGV4OiBudW1iZXIpOiB2b2lkIHtcclxuICAgICAgICB0aGlzLnVwZGF0ZU1lbW9yeVZpZXdzKCk7XHJcbiAgICB9XHJcblxyXG4gICAgcHJvY19leGl0KHJ2YWw6IG51bWJlcik6IHZvaWQge1xyXG4gICAgICAgIGNvbnNvbGUubG9nKFwicHJvY19leGl0XCIsIHJ2YWwpO1xyXG4gICAgfVxyXG5cclxuICAgIGVudmlyb25fZ2V0KGVudmlyb246IG51bWJlciwgZW52aXJvbl9idWY6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgaWYgKCF0aGlzLndhc20uSEVBUDguYnl0ZUxlbmd0aCkge1xyXG4gICAgICAgICAgICB0aGlzLmVtc2NyaXB0ZW5fbm90aWZ5X21lbW9yeV9ncm93dGgoMCk7XHJcbiAgICAgICAgfVxyXG4gICAgICAgIGNvbnN0IEhFQVBVMzIgPSB0aGlzLndhc20uSEVBUFUzMjtcclxuICAgICAgICBsZXQgYnVmU2l6ZSA9IDA7XHJcbiAgICAgICAgdGhpcy5nZXRFbnZTdHJpbmdzKCkuZm9yRWFjaCgoc3RyOiBzdHJpbmcsIGk6IG51bWJlcikgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBwdHIgPSBlbnZpcm9uX2J1ZiArIGJ1ZlNpemU7XHJcbiAgICAgICAgICAgIEhFQVBVMzJbZW52aXJvbiArIGkgKiA0ID4+IDJdID0gcHRyO1xyXG4gICAgICAgICAgICB0aGlzLnN0cmluZ1RvQXNjaWkoc3RyLCBwdHIpO1xyXG4gICAgICAgICAgICBidWZTaXplICs9IHN0ci5sZW5ndGggKyAxXHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgcmV0dXJuIDBcclxuICAgIH1cclxuXHJcbiAgICBlbnZpcm9uX3NpemVzX2dldChwZW52aXJvbl9jb3VudDogbnVtYmVyLCBwZW52aXJvbl9idWZfc2l6ZTogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoIXRoaXMud2FzbS5IRUFQOC5ieXRlTGVuZ3RoKSB7XHJcbiAgICAgICAgICAgIHRoaXMuZW1zY3JpcHRlbl9ub3RpZnlfbWVtb3J5X2dyb3d0aCgwKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgY29uc3QgSEVBUFUzMiA9IHRoaXMud2FzbS5IRUFQVTMyO1xyXG4gICAgICAgIGNvbnN0IHN0cmluZ3MgPSB0aGlzLmdldEVudlN0cmluZ3MoKTtcclxuICAgICAgICBIRUFQVTMyW3BlbnZpcm9uX2NvdW50ID4+IDJdID0gc3RyaW5ncy5sZW5ndGg7XHJcbiAgICAgICAgbGV0IGJ1ZlNpemUgPSAwO1xyXG4gICAgICAgIHN0cmluZ3MuZm9yRWFjaChmdW5jdGlvbiAoc3RyaW5nKSB7XHJcbiAgICAgICAgICAgIGJ1ZlNpemUgKz0gc3RyaW5nLmxlbmd0aCArIDFcclxuICAgICAgICB9KTtcclxuICAgICAgICBIRUFQVTMyW3BlbnZpcm9uX2J1Zl9zaXplID4+IDJdID0gYnVmU2l6ZTtcclxuICAgICAgICAvLyBXQVNJX0VTVUNDRVNTXHJcbiAgICAgICAgcmV0dXJuIDBcclxuICAgIH1cclxuXHJcbiAgICBmZF9jbG9zZShmZDogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICAvLyBXQVNJX0VTVUNDRVNTXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgZmRfd3JpdGUoZmQ6IG51bWJlciwgaW92czogbnVtYmVyLCBpb3ZzX2xlbjogbnVtYmVyLCBud3JpdHRlbjogbnVtYmVyKTogbnVtYmVyIHtcclxuICAgICAgICBpZiAoZmQgIT09IDEpIHtcclxuICAgICAgICAgICAgLy8gV0FTSV9FQkFERlxyXG4gICAgICAgICAgICByZXR1cm4gODtcclxuICAgICAgICB9XHJcbiAgICAgICAgaWYgKGlvdnNfbGVuICE9PSAxKSB7XHJcbiAgICAgICAgICAgIC8vIFdBU0lfRU5PU1lTXHJcbiAgICAgICAgICAgIHJldHVybiA1MjtcclxuICAgICAgICB9XHJcbiAgICAgICAgdGhpcy53YXNtLkhFQVBVMzJbbndyaXR0ZW4gPj4gMl0gPSB0aGlzLndhc20uSEVBUFUzMltpb3ZzICsgNCA+PiAyXTtcclxuICAgICAgICAvLyBXQVNJX0VTVUNDRVNTXHJcbiAgICAgICAgcmV0dXJuIDA7XHJcbiAgICB9XHJcblxyXG4gICAgZmRfcmVhZChmZDogbnVtYmVyLCBpb3ZzOiBudW1iZXIsIGlvdnNfbGVuOiBudW1iZXIsIG5yZWFkOiBudW1iZXIpOiBudW1iZXIge1xyXG4gICAgICAgIC8vIFdBU0lfRUlOVkFMXHJcbiAgICAgICAgcmV0dXJuIDI4O1xyXG4gICAgfVxyXG5cclxuICAgIGZkX3NlZWsoZmQ6IG51bWJlciwgb2Zmc2V0OiBudW1iZXIsIHdoZW5jZTogbnVtYmVyLCBuZXdPZmZzZXQ6IG51bWJlcik6IG51bWJlciB7XHJcbiAgICAgICAgLy8gV0FTSV9FSU5WQUxcclxuICAgICAgICByZXR1cm4gMjg7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -0,0 +1,99 @@
1
+ import { JSONfn } from "./jsonfn";
2
+ export function workerFunction(JSONfn, logTimes) {
3
+ let wasmResolve = null;
4
+ const wasmInstance = new Promise(resolve => {
5
+ wasmResolve = resolve;
6
+ });
7
+ self.onmessage = function (e) {
8
+ const data = e.data;
9
+ const { type, payload } = data;
10
+ switch (type) {
11
+ case "wasm":
12
+ const { url, wasi } = payload;
13
+ fetch(url).then(response => response.arrayBuffer()).then(bytes => {
14
+ const wasiImpl = JSONfn.parse(wasi);
15
+ return new wasiImpl().instantiate(bytes);
16
+ }).then(instance => {
17
+ wasmResolve(instance);
18
+ const methods = Object.getOwnPropertyNames(instance).filter(key => typeof instance[key] === "function");
19
+ self.postMessage({ type: "methods", payload: methods });
20
+ });
21
+ break;
22
+ case "call":
23
+ wasmInstance.then(instance => {
24
+ const { name, id, args } = payload;
25
+ if (logTimes) {
26
+ console.time(id);
27
+ console.timeLog(id, `Calling ${name} ...`);
28
+ }
29
+ const func = instance[name];
30
+ const result = func(...args);
31
+ if (logTimes) {
32
+ console.timeLog(id, `Called ${name}`);
33
+ console.timeEnd(id);
34
+ }
35
+ self.postMessage({ type: "result", payload: { id, result } });
36
+ });
37
+ break;
38
+ }
39
+ };
40
+ }
41
+ export class WasmWorkerProxy {
42
+ constructor(wasmPath, wasi, logTimes = false) {
43
+ this.methods = new Promise(resolve => {
44
+ this.onMethods = resolve;
45
+ });
46
+ const lt = logTimes ? "true" : "false";
47
+ const blob = new Blob([`${JSONfn.toString()} (${workerFunction.toString()})(JSONfn, ${lt})`], { type: 'application/javascript' });
48
+ this.worker = new Worker(URL.createObjectURL(blob));
49
+ this.worker.postMessage({
50
+ type: "wasm",
51
+ payload: { url: wasmPath, wasi: JSONfn.stringify(wasi), logTimes }
52
+ });
53
+ this.worker.onmessage = this.onMessage.bind(this);
54
+ this.promises = new Map();
55
+ return new Proxy(this, {
56
+ get: (target, prop, receiver) => {
57
+ const res = Reflect.get(target, prop, receiver);
58
+ if (res) {
59
+ return res;
60
+ }
61
+ return (...args) => {
62
+ return this.call(prop.toString(), args);
63
+ };
64
+ }
65
+ });
66
+ }
67
+ onMessage(e) {
68
+ const data = e.data;
69
+ const { type, payload } = data;
70
+ switch (type) {
71
+ case "methods":
72
+ this.onMethods(payload);
73
+ break;
74
+ case "result":
75
+ const { id, result } = payload;
76
+ const promise = this.promises.get(id);
77
+ if (promise) {
78
+ promise.resolve(result);
79
+ this.promises.delete(id);
80
+ }
81
+ break;
82
+ }
83
+ }
84
+ async call(method, args) {
85
+ const methods = await this.methods;
86
+ if (!methods.includes(method)) {
87
+ throw new Error(`Method ${method} not found`);
88
+ }
89
+ return new Promise((resolve, reject) => {
90
+ const id = Math.random().toString(36).substring(2, 9);
91
+ this.worker.postMessage({
92
+ type: "call",
93
+ payload: { name: method, id, args }
94
+ });
95
+ this.promises.set(id, { resolve, reject });
96
+ });
97
+ }
98
+ }
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2FzbS13b3JrZXItcHJveHkuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL3dhc20td29ya2VyLXByb3h5LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBQyxNQUFNLEVBQUMsTUFBTSxVQUFVLENBQUM7QUFPaEMsTUFBTSxVQUFVLGNBQWMsQ0FBQyxNQUFXLEVBQUUsUUFBaUI7SUFFekQsSUFBSSxXQUFXLEdBQXFDLElBQUksQ0FBQztJQUN6RCxNQUFNLFlBQVksR0FBMEIsSUFBSSxPQUFPLENBQWUsT0FBTyxDQUFDLEVBQUU7UUFDNUUsV0FBVyxHQUFHLE9BQU8sQ0FBQztJQUMxQixDQUFDLENBQUMsQ0FBQztJQUVILElBQUksQ0FBQyxTQUFTLEdBQUcsVUFBVSxDQUFDO1FBQ3hCLE1BQU0sSUFBSSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUM7UUFDcEIsTUFBTSxFQUFDLElBQUksRUFBRSxPQUFPLEVBQUMsR0FBRyxJQUFJLENBQUM7UUFDN0IsUUFBUSxJQUFJLEVBQUUsQ0FBQztZQUNYLEtBQUssTUFBTTtnQkFDUCxNQUFNLEVBQUMsR0FBRyxFQUFFLElBQUksRUFBQyxHQUFHLE9BQU8sQ0FBQztnQkFDNUIsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtvQkFDN0QsTUFBTSxRQUFRLEdBQUcsTUFBTSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsQ0FBQztvQkFDcEMsT0FBTyxJQUFJLFFBQVEsRUFBRSxDQUFDLFdBQVcsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDN0MsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxFQUFFO29CQUNmLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztvQkFDdEIsTUFB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QU0sQ0FBQyxFQUFFLENBQUM7WUFDNUIsTUFBTSxJQUFJLEtBQUssQ0FBQyxVQUFVLE1BQU0sWUFBWSxDQUFDLENBQUM7UUFDbEQsQ0FBQztRQUNELE9BQU8sSUFBSSxPQUFPLENBQU0sQ0FBQyxPQUFPLEVBQUUsTUFBTSxFQUFFLEVBQUU7WUFDeEMsTUFBTSxFQUFFLEdBQUcsSUFBSSxDQUFDLE1BQU0sRUFBRSxDQUFDLFFBQVEsQ0FBQyxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsQ0FBQyxFQUFFLENBQUMsQ0FBQyxDQUFDO1lBQ3RELElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxDQUFDO2dCQUNwQixJQUFJLEVBQUUsTUFBTTtnQkFDWixPQUFPLEVBQUUsRUFBQyxJQUFJLEVBQUUsTUFBTSxFQUFFLEVBQUUsRUFBRSxJQUFJLEVBQUM7YUFDcEMsQ0FBQyxDQUFDO1lBQ0gsSUFBSSxDQUFDLFFBQVEsQ0FBQyxHQUFHLENBQUMsRUFBRSxFQUFFLEVBQUMsT0FBTyxFQUFFLE1BQU0sRUFBQyxDQUFDLENBQUM7UUFDN0MsQ0FBQyxDQUFDLENBQUM7SUFDUCxDQUFDO0NBQ0oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQge0lXYXNpLCBJV2FzbUV4cG9ydHN9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtUeXBlfSBmcm9tIFwiQGFuZ3VsYXIvY29yZVwiO1xyXG5pbXBvcnQge0pTT05mbn0gZnJvbSBcIi4vanNvbmZuXCI7XHJcblxyXG5pbnRlcmZhY2UgSVByb21pc2VFeGVjdXRvciB7XHJcbiAgICByZXNvbHZlOiAodmFsdWU/OiBhbnkpID0+IHZvaWQ7XHJcbiAgICByZWplY3Q6IChyZWFzb24/OiBhbnkpID0+IHZvaWQ7XHJcbn1cclxuXHJcbmV4cG9ydCBmdW5jdGlvbiB3b3JrZXJGdW5jdGlvbihKU09OZm46IGFueSwgbG9nVGltZXM6IGJvb2xlYW4pOiB2b2lkIHtcclxuXHJcbiAgICBsZXQgd2FzbVJlc29sdmU6IChpbnN0YW5jZTogSVdhc21FeHBvcnRzKSA9PiB2b2lkID0gbnVsbDtcclxuICAgIGNvbnN0IHdhc21JbnN0YW5jZTogUHJvbWlzZTxJV2FzbUV4cG9ydHM+ID0gbmV3IFByb21pc2U8SVdhc21FeHBvcnRzPihyZXNvbHZlID0+IHtcclxuICAgICAgICB3YXNtUmVzb2x2ZSA9IHJlc29sdmU7XHJcbiAgICB9KTtcclxuXHJcbiAgICBzZWxmLm9ubWVzc2FnZSA9IGZ1bmN0aW9uIChlKSB7XHJcbiAgICAgICAgY29uc3QgZGF0YSA9IGUuZGF0YTtcclxuICAgICAgICBjb25zdCB7dHlwZSwgcGF5bG9hZH0gPSBkYXRhO1xyXG4gICAgICAgIHN3aXRjaCAodHlwZSkge1xyXG4gICAgICAgICAgICBjYXNlIFwid2FzbVwiOlxyXG4gICAgICAgICAgICAgICAgY29uc3Qge3VybCwgd2FzaX0gPSBwYXlsb2FkO1xyXG4gICAgICAgICAgICAgICAgZmV0Y2godXJsKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmFycmF5QnVmZmVyKCkpLnRoZW4oYnl0ZXMgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHdhc2lJbXBsID0gSlNPTmZuLnBhcnNlKHdhc2kpO1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXcgd2FzaUltcGwoKS5pbnN0YW50aWF0ZShieXRlcyk7XHJcbiAgICAgICAgICAgICAgICB9KS50aGVuKGluc3RhbmNlID0+IHtcclxuICAgICAgICAgICAgICAgICAgICB3YXNtUmVzb2x2ZShpbnN0YW5jZSk7XHJcbiAgICAgICAgICAgICAgICAgICAgY29uc3QgbWV0aG9kcyA9IE9iamVjdC5nZXRPd25Qcm9wZXJ0eU5hbWVzKGluc3RhbmNlKS5maWx0ZXIoa2V5ID0+IHR5cGVvZiBpbnN0YW5jZVtrZXldID09PSBcImZ1bmN0aW9uXCIpO1xyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IFwibWV0aG9kc1wiLCBwYXlsb2FkOiBtZXRob2RzfSk7XHJcbiAgICAgICAgICAgICAgICB9KTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwiY2FsbFwiOlxyXG4gICAgICAgICAgICAgICAgd2FzbUluc3RhbmNlLnRoZW4oaW5zdGFuY2UgPT4ge1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHtuYW1lLCBpZCwgYXJnc30gPSBwYXlsb2FkO1xyXG4gICAgICAgICAgICAgICAgICAgIGlmIChsb2dUaW1lcykge1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWUoaWQpO1xyXG4gICAgICAgICAgICAgICAgICAgICAgICBjb25zb2xlLnRpbWVMb2coaWQsIGBDYWxsaW5nICR7bmFtZX0gLi4uYCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IGZ1bmMgPSAoaW5zdGFuY2VbbmFtZV0gYXMgRnVuY3Rpb24pO1xyXG4gICAgICAgICAgICAgICAgICAgIGNvbnN0IHJlc3VsdCA9IGZ1bmMoLi4uYXJncyk7XHJcbiAgICAgICAgICAgICAgICAgICAgaWYgKGxvZ1RpbWVzKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUxvZyhpZCwgYENhbGxlZCAke25hbWV9YCk7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnNvbGUudGltZUVuZChpZCk7XHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgICAgIHNlbGYucG9zdE1lc3NhZ2Uoe3R5cGU6IFwicmVzdWx0XCIsIHBheWxvYWQ6IHtpZCwgcmVzdWx0fX0pO1xyXG4gICAgICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgICAgICBicmVhaztcclxuICAgICAgICB9XHJcbiAgICB9O1xyXG59XHJcblxyXG5leHBvcnQgY2xhc3MgV2FzbVdvcmtlclByb3h5IHtcclxuXHJcbiAgICBwcm90ZWN0ZWQgbWV0aG9kczogUHJvbWlzZTxzdHJpbmdbXT47XHJcbiAgICBwcm90ZWN0ZWQgb25NZXRob2RzOiAobWV0aG9kczogc3RyaW5nW10pID0+IHZvaWQ7XHJcbiAgICBwcm90ZWN0ZWQgd29ya2VyOiBXb3JrZXI7XHJcbiAgICBwcm90ZWN0ZWQgcHJvbWlzZXM6IE1hcDxzdHJpbmcsIElQcm9taXNlRXhlY3V0b3I+O1xyXG5cclxuICAgIGNvbnN0cnVjdG9yKHdhc21QYXRoOiBzdHJpbmcsIHdhc2k6IFR5cGU8SVdhc2k+LCBsb2dUaW1lczogYm9vbGVhbiA9IGZhbHNlKSB7XHJcbiAgICAgICAgdGhpcy5tZXRob2RzID0gbmV3IFByb21pc2U8c3RyaW5nW10+KHJlc29sdmUgPT4ge1xyXG4gICAgICAgICAgICB0aGlzLm9uTWV0aG9kcyA9IHJlc29sdmU7XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgY29uc3QgbHQgPSBsb2dUaW1lcyA/IFwidHJ1ZVwiIDogXCJmYWxzZVwiO1xyXG4gICAgICAgIGNvbnN0IGJsb2IgPSBuZXcgQmxvYihcclxuICAgICAgICAgICAgW2Ake0pTT05mbi50b1N0cmluZygpfSAoJHt3b3JrZXJGdW5jdGlvbi50b1N0cmluZygpfSkoSlNPTmZuLCAke2x0fSlgXSxcclxuICAgICAgICAgICAge3R5cGU6ICdhcHBsaWNhdGlvbi9qYXZhc2NyaXB0J31cclxuICAgICAgICApO1xyXG4gICAgICAgIHRoaXMud29ya2VyID0gbmV3IFdvcmtlcihVUkwuY3JlYXRlT2JqZWN0VVJMKGJsb2IpKTtcclxuICAgICAgICB0aGlzLndvcmtlci5wb3N0TWVzc2FnZSh7XHJcbiAgICAgICAgICAgIHR5cGU6IFwid2FzbVwiLFxyXG4gICAgICAgICAgICBwYXlsb2FkOiB7dXJsOiB3YXNtUGF0aCwgd2FzaTogSlNPTmZuLnN0cmluZ2lmeSh3YXNpKSwgbG9nVGltZXN9XHJcbiAgICAgICAgfSk7XHJcbiAgICAgICAgdGhpcy53b3JrZXIub25tZXNzYWdlID0gdGhpcy5vbk1lc3NhZ2UuYmluZCh0aGlzKTtcclxuICAgICAgICB0aGlzLnByb21pc2VzID0gbmV3IE1hcDxzdHJpbmcsIElQcm9taXNlRXhlY3V0b3I+KCk7XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm94eSh0aGlzLCB7XHJcbiAgICAgICAgICAgIGdldDogKHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpID0+IHtcclxuICAgICAgICAgICAgICAgIGNvbnN0IHJlcyA9IFJlZmxlY3QuZ2V0KHRhcmdldCwgcHJvcCwgcmVjZWl2ZXIpO1xyXG4gICAgICAgICAgICAgICAgaWYgKHJlcykge1xyXG4gICAgICAgICAgICAgICAgICAgIHJldHVybiByZXM7XHJcbiAgICAgICAgICAgICAgICB9XHJcbiAgICAgICAgICAgICAgICByZXR1cm4gKC4uLmFyZ3M6IGFueVtdKSA9PiB7XHJcbiAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRoaXMuY2FsbChwcm9wLnRvU3RyaW5nKCksIGFyZ3MpO1xyXG4gICAgICAgICAgICAgICAgfTtcclxuICAgICAgICAgICAgfVxyXG4gICAgICAgIH0pO1xyXG4gICAgfVxyXG5cclxuICAgIG9uTWVzc2FnZShlOiBNZXNzYWdlRXZlbnQpOiB2b2lkIHtcclxuICAgICAgICBjb25zdCBkYXRhID0gZS5kYXRhO1xyXG4gICAgICAgIGNvbnN0IHt0eXBlLCBwYXlsb2FkfSA9IGRhdGE7XHJcbiAgICAgICAgc3dpdGNoICh0eXBlKSB7XHJcbiAgICAgICAgICAgIGNhc2UgXCJtZXRob2RzXCI6XHJcbiAgICAgICAgICAgICAgICB0aGlzLm9uTWV0aG9kcyhwYXlsb2FkKTtcclxuICAgICAgICAgICAgICAgIGJyZWFrO1xyXG4gICAgICAgICAgICBjYXNlIFwicmVzdWx0XCI6XHJcbiAgICAgICAgICAgICAgICBjb25zdCB7aWQsIHJlc3VsdH0gPSBwYXlsb2FkO1xyXG4gICAgICAgICAgICAgICAgY29uc3QgcHJvbWlzZSA9IHRoaXMucHJvbWlzZXMuZ2V0KGlkKTtcclxuICAgICAgICAgICAgICAgIGlmIChwcm9taXNlKSB7XHJcbiAgICAgICAgICAgICAgICAgICAgcHJvbWlzZS5yZXNvbHZlKHJlc3VsdCk7XHJcbiAgICAgICAgICAgICAgICAgICAgdGhpcy5wcm9taXNlcy5kZWxldGUoaWQpO1xyXG4gICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgYnJlYWs7XHJcbiAgICAgICAgfVxyXG4gICAgfVxyXG5cclxuICAgIGFzeW5jIGNhbGwobWV0aG9kOiBzdHJpbmcsIGFyZ3M6IGFueVtdKTogUHJvbWlzZTxhbnk+IHtcclxuICAgICAgICBjb25zdCBtZXRob2RzID0gYXdhaXQgdGhpcy5tZXRob2RzO1xyXG4gICAgICAgIGlmICghbWV0aG9kcy5pbmNsdWRlcyhtZXRob2QpKSB7XHJcbiAgICAgICAgICAgIHRocm93IG5ldyBFcnJvcihgTWV0aG9kICR7bWV0aG9kfSBub3QgZm91bmRgKTtcclxuICAgICAgICB9XHJcbiAgICAgICAgcmV0dXJuIG5ldyBQcm9taXNlPGFueT4oKHJlc29sdmUsIHJlamVjdCkgPT4ge1xyXG4gICAgICAgICAgICBjb25zdCBpZCA9IE1hdGgucmFuZG9tKCkudG9TdHJpbmcoMzYpLnN1YnN0cmluZygyLCA5KTtcclxuICAgICAgICAgICAgdGhpcy53b3JrZXIucG9zdE1lc3NhZ2Uoe1xyXG4gICAgICAgICAgICAgICAgdHlwZTogXCJjYWxsXCIsXHJcbiAgICAgICAgICAgICAgICBwYXlsb2FkOiB7bmFtZTogbWV0aG9kLCBpZCwgYXJnc31cclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHRoaXMucHJvbWlzZXMuc2V0KGlkLCB7cmVzb2x2ZSwgcmVqZWN0fSk7XHJcbiAgICAgICAgfSk7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,24 +1,24 @@
1
- import { Injector } from "@angular/core";
2
- import { OPTIONS_TOKEN } from "../common-types";
3
- export function provideWithOptions(type, options) {
4
- return {
5
- useFactory: function (injector) {
6
- const subInjector = Injector.create({
7
- providers: [
8
- {
9
- provide: OPTIONS_TOKEN,
10
- useValue: options
11
- },
12
- {
13
- provide: type,
14
- useClass: type
15
- }
16
- ],
17
- parent: injector
18
- });
19
- return subInjector.get(type);
20
- },
21
- deps: [Injector]
22
- };
23
- }
1
+ import { Injector } from "@angular/core";
2
+ import { OPTIONS_TOKEN } from "../common-types";
3
+ export function provideWithOptions(type, options) {
4
+ return {
5
+ useFactory: function (injector) {
6
+ const subInjector = Injector.create({
7
+ providers: [
8
+ {
9
+ provide: OPTIONS_TOKEN,
10
+ useValue: options
11
+ },
12
+ {
13
+ provide: type,
14
+ useClass: type
15
+ }
16
+ ],
17
+ parent: injector
18
+ });
19
+ return subInjector.get(type);
20
+ },
21
+ deps: [Injector]
22
+ };
23
+ }
24
24
  //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1vcHRpb25zLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy93aXRoLW9wdGlvbnMtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsYUFBYSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE1BQU0sVUFBVSxrQkFBa0IsQ0FBNEIsSUFBYSxFQUFFLE9BQVU7SUFDbkYsT0FBTztRQUNILFVBQVUsRUFBRSxVQUFVLFFBQWtCO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLFNBQVMsRUFBRTtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsUUFBUSxFQUFFLE9BQU87cUJBQ3BCO29CQUNEO3dCQUNJLE9BQU8sRUFBRSxJQUFJO3dCQUNiLFFBQVEsRUFBRSxJQUFJO3FCQUNqQjtpQkFDSjtnQkFDRCxNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFDSCxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNuQixDQUFBO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3IsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T1BUSU9OU19UT0tFTiwgVHlwZWRGYWN0b3J5UHJvdmlkZXJ9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlV2l0aE9wdGlvbnM8TyBleHRlbmRzIE9iamVjdCwgVCA9IGFueT4odHlwZTogVHlwZTxUPiwgb3B0aW9uczogTyk6IFR5cGVkRmFjdG9yeVByb3ZpZGVyPFQ+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdXNlRmFjdG9yeTogZnVuY3Rpb24gKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IE9QVElPTlNfVE9LRU4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBvcHRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IHR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIHBhcmVudDogaW5qZWN0b3JcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWJJbmplY3Rvci5nZXQodHlwZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZXBzOiBbSW5qZWN0b3JdXHJcbiAgICB9XHJcbn1cclxuIl19