@stemy/ngx-utils 17.1.5 → 19.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 (108) hide show
  1. package/fesm2022/stemy-ngx-utils-tools.mjs.map +1 -1
  2. package/fesm2022/stemy-ngx-utils.mjs +261 -221
  3. package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
  4. package/ngx-utils/ngx-utils.module.d.ts +1 -1
  5. package/package.json +13 -19
  6. package/esm2022/ngx-utils/common-types.mjs +0 -122
  7. package/esm2022/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +0 -210
  8. package/esm2022/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +0 -101
  9. package/esm2022/ngx-utils/components/unordered-list/unordered-list.component.mjs +0 -65
  10. package/esm2022/ngx-utils/directives/async-method.base.mjs +0 -90
  11. package/esm2022/ngx-utils/directives/async-method.directive.mjs +0 -21
  12. package/esm2022/ngx-utils/directives/background.directive.mjs +0 -51
  13. package/esm2022/ngx-utils/directives/dynamic-table-template.directive.mjs +0 -20
  14. package/esm2022/ngx-utils/directives/global-template.directive.mjs +0 -28
  15. package/esm2022/ngx-utils/directives/icon.directive.mjs +0 -67
  16. package/esm2022/ngx-utils/directives/ngx-template-outlet.directive.mjs +0 -90
  17. package/esm2022/ngx-utils/directives/pagination-item.directive.mjs +0 -34
  18. package/esm2022/ngx-utils/directives/pagination.directive.mjs +0 -84
  19. package/esm2022/ngx-utils/directives/resource-if.directive.mjs +0 -50
  20. package/esm2022/ngx-utils/directives/sticky-class.directive.mjs +0 -34
  21. package/esm2022/ngx-utils/directives/sticky.directive.mjs +0 -55
  22. package/esm2022/ngx-utils/directives/unordered-list-item.directive.mjs +0 -79
  23. package/esm2022/ngx-utils/directives/unordered-list-template.directive.mjs +0 -20
  24. package/esm2022/ngx-utils/ngx-utils.imports.mjs +0 -178
  25. package/esm2022/ngx-utils/ngx-utils.module.mjs +0 -204
  26. package/esm2022/ngx-utils/pipes/chunk.pipe.mjs +0 -25
  27. package/esm2022/ngx-utils/pipes/entries.pipe.mjs +0 -28
  28. package/esm2022/ngx-utils/pipes/extra-item-properties.pipe.mjs +0 -31
  29. package/esm2022/ngx-utils/pipes/filter.pipe.mjs +0 -37
  30. package/esm2022/ngx-utils/pipes/find.pipe.mjs +0 -29
  31. package/esm2022/ngx-utils/pipes/format-number.pipe.mjs +0 -21
  32. package/esm2022/ngx-utils/pipes/get-offset.pipe.mjs +0 -17
  33. package/esm2022/ngx-utils/pipes/get-type.pipe.mjs +0 -16
  34. package/esm2022/ngx-utils/pipes/get-value.pipe.mjs +0 -17
  35. package/esm2022/ngx-utils/pipes/global-template.pipe.mjs +0 -39
  36. package/esm2022/ngx-utils/pipes/group-by.pipe.mjs +0 -27
  37. package/esm2022/ngx-utils/pipes/is-type.pipe.mjs +0 -16
  38. package/esm2022/ngx-utils/pipes/join.pipe.mjs +0 -19
  39. package/esm2022/ngx-utils/pipes/keys.pipe.mjs +0 -22
  40. package/esm2022/ngx-utils/pipes/map.pipe.mjs +0 -29
  41. package/esm2022/ngx-utils/pipes/max.pipe.mjs +0 -26
  42. package/esm2022/ngx-utils/pipes/min.pipe.mjs +0 -26
  43. package/esm2022/ngx-utils/pipes/pop.pipe.mjs +0 -16
  44. package/esm2022/ngx-utils/pipes/reduce.pipe.mjs +0 -30
  45. package/esm2022/ngx-utils/pipes/remap.pipe.mjs +0 -32
  46. package/esm2022/ngx-utils/pipes/replace.pipe.mjs +0 -17
  47. package/esm2022/ngx-utils/pipes/reverse.pipe.mjs +0 -24
  48. package/esm2022/ngx-utils/pipes/round.pipe.mjs +0 -21
  49. package/esm2022/ngx-utils/pipes/safe-html.pipe.mjs +0 -34
  50. package/esm2022/ngx-utils/pipes/shift.pipe.mjs +0 -16
  51. package/esm2022/ngx-utils/pipes/split.pipe.mjs +0 -16
  52. package/esm2022/ngx-utils/pipes/translate.pipe.mjs +0 -86
  53. package/esm2022/ngx-utils/pipes/values.pipe.mjs +0 -22
  54. package/esm2022/ngx-utils/plugins/resize-event.plugin.mjs +0 -78
  55. package/esm2022/ngx-utils/plugins/scroll-event.plugin.mjs +0 -39
  56. package/esm2022/ngx-utils/services/acl.service.mjs +0 -84
  57. package/esm2022/ngx-utils/services/api.service.mjs +0 -42
  58. package/esm2022/ngx-utils/services/auth.service.mjs +0 -14
  59. package/esm2022/ngx-utils/services/base-http.client.mjs +0 -47
  60. package/esm2022/ngx-utils/services/base-http.service.mjs +0 -305
  61. package/esm2022/ngx-utils/services/config.service.mjs +0 -130
  62. package/esm2022/ngx-utils/services/error-handler.service.mjs +0 -49
  63. package/esm2022/ngx-utils/services/events.service.mjs +0 -26
  64. package/esm2022/ngx-utils/services/formatter.service.mjs +0 -49
  65. package/esm2022/ngx-utils/services/global-template.service.mjs +0 -37
  66. package/esm2022/ngx-utils/services/icon.service.mjs +0 -26
  67. package/esm2022/ngx-utils/services/language.service.mjs +0 -124
  68. package/esm2022/ngx-utils/services/local-http.service.mjs +0 -47
  69. package/esm2022/ngx-utils/services/open-api.service.mjs +0 -40
  70. package/esm2022/ngx-utils/services/promise.service.mjs +0 -55
  71. package/esm2022/ngx-utils/services/state.service.mjs +0 -185
  72. package/esm2022/ngx-utils/services/static-language.service.mjs +0 -166
  73. package/esm2022/ngx-utils/services/storage.service.mjs +0 -49
  74. package/esm2022/ngx-utils/services/toaster.service.mjs +0 -32
  75. package/esm2022/ngx-utils/services/translated-url.serializer.mjs +0 -73
  76. package/esm2022/ngx-utils/services/universal.service.mjs +0 -81
  77. package/esm2022/ngx-utils/services/wasm.service.mjs +0 -46
  78. package/esm2022/ngx-utils/utils/ajax-request-handler.mjs +0 -40
  79. package/esm2022/ngx-utils/utils/array.utils.mjs +0 -107
  80. package/esm2022/ngx-utils/utils/auth.guard.mjs +0 -181
  81. package/esm2022/ngx-utils/utils/cached-factory.mjs +0 -30
  82. package/esm2022/ngx-utils/utils/canvas.utils.mjs +0 -388
  83. package/esm2022/ngx-utils/utils/date.utils.mjs +0 -29
  84. package/esm2022/ngx-utils/utils/file-system.mjs +0 -25
  85. package/esm2022/ngx-utils/utils/file.utils.mjs +0 -90
  86. package/esm2022/ngx-utils/utils/generic-value.mjs +0 -20
  87. package/esm2022/ngx-utils/utils/geometry.mjs +0 -132
  88. package/esm2022/ngx-utils/utils/initializer.mjs +0 -20
  89. package/esm2022/ngx-utils/utils/jsonfn.mjs +0 -45
  90. package/esm2022/ngx-utils/utils/loader.utils.mjs +0 -55
  91. package/esm2022/ngx-utils/utils/math.utils.mjs +0 -44
  92. package/esm2022/ngx-utils/utils/object.utils.mjs +0 -320
  93. package/esm2022/ngx-utils/utils/observable.utils.mjs +0 -59
  94. package/esm2022/ngx-utils/utils/promise.utils.mjs +0 -23
  95. package/esm2022/ngx-utils/utils/reflect.utils.mjs +0 -33
  96. package/esm2022/ngx-utils/utils/set.utils.mjs +0 -20
  97. package/esm2022/ngx-utils/utils/string.utils.mjs +0 -41
  98. package/esm2022/ngx-utils/utils/timer.utils.mjs +0 -52
  99. package/esm2022/ngx-utils/utils/unique.utils.mjs +0 -24
  100. package/esm2022/ngx-utils/utils/vector.mjs +0 -77
  101. package/esm2022/ngx-utils/utils/wasi.mjs +0 -159
  102. package/esm2022/ngx-utils/utils/wasm-worker-proxy.mjs +0 -99
  103. package/esm2022/ngx-utils/utils/with-options-provider.mjs +0 -24
  104. package/esm2022/public_api.mjs +0 -96
  105. package/esm2022/stemy-ngx-utils.mjs +0 -5
  106. package/esm2022/tools/config.mjs +0 -71
  107. package/esm2022/tools/public_api.mjs +0 -2
  108. package/esm2022/tools/stemy-ngx-utils-tools.mjs +0 -5
@@ -1,52 +0,0 @@
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidGltZXIudXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi9zcmMvbmd4LXV0aWxzL3V0aWxzL3RpbWVyLnV0aWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBQyxXQUFXLEVBQUMsTUFBTSxnQkFBZ0IsQ0FBQztBQUkzQyxNQUFNLE9BQU8sVUFBVTtJQUVuQixNQUFNLENBQUMsYUFBYSxDQUFDLElBQWUsRUFBRSxJQUFhO1FBQy9DLFdBQVc7UUFDWCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxFQUFFLEdBQUcsVUFBVSxDQUFDLEdBQUcsRUFBRTtnQkFDdkIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7Z0JBQ2hCLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQztZQUNqQixDQUFDLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25CLENBQUMsQ0FBQztRQUNGLFdBQVc7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBQ3RCLFlBQVksQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDdkIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFRCxNQUFNLENBQUMsY0FBYyxDQUFDLElBQWUsRUFBRSxJQUFhO1FBQ2hELFdBQVc7UUFDWCxNQUFNLEdBQUcsR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzFCLEtBQUssQ0FBQyxLQUFLLEVBQUUsQ0FBQztZQUNkLEtBQUssQ0FBQyxFQUFFLEdBQUcsV0FBVyxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ25ELENBQUMsQ0FBQztRQUNGLFdBQVc7UUFDWCxNQUFNLEtBQUssR0FBRyxDQUFDLEtBQWEsRUFBRSxFQUFFO1lBQzVCLElBQUksQ0FBQyxLQUFLLENBQUMsRUFBRTtnQkFBRSxPQUFPO1lBQ3RCLGFBQWEsQ0FBQyxLQUFLLENBQUMsRUFBRSxDQUFDLENBQUM7WUFDeEIsS0FBSyxDQUFDLEVBQUUsR0FBRyxJQUFJLENBQUM7UUFDcEIsQ0FBQyxDQUFDO1FBQ0YsT0FBTyxVQUFVLENBQUMsV0FBVyxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxDQUFDO0lBQzFELENBQUM7SUFFTyxNQUFNLENBQUMsV0FBVyxDQUFDLEdBQWMsRUFBRSxLQUFnQixFQUFFLElBQWMsRUFBRSxJQUFZO1FBQ3JGLE1BQU0sS0FBSyxHQUFXLEVBQUUsQ0FBQztRQUN6QixNQUFNLFNBQVMsR0FBRyxDQUFDLElBQWMsRUFBRSxJQUFZLEVBQUUsRUFBRTtZQUMvQyxLQUFLLENBQUMsSUFBSSxHQUFHLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsSUFBSSxDQUFDO1lBQy9ELEtBQUssQ0FBQyxJQUFJLEdBQUcsQ0FBQyxXQUFXLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQztRQUMxRCxDQUFDLENBQUM7UUFDRixLQUFLLENBQUMsR0FBRyxHQUFHLEdBQUcsRUFBRSxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUM3QixLQUFLLENBQUMsS0FBSyxHQUFHLEdBQUcsRUFBRSxDQUFDLEtBQUssQ0FBQyxLQUFLLENBQUMsQ0FBQztRQUNqQyxLQUFLLENBQUMsR0FBRyxHQUFHLENBQUMsSUFBYyxFQUFFLElBQVksRUFBRSxFQUFFO1lBQ3pDLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7WUFDdEIsS0FBSyxDQUFDLEdBQUcsRUFBRSxDQUFDO1FBQ2hCLENBQUMsQ0FBQztRQUNGLFNBQVMsQ0FBQyxJQUFJLEVBQUUsSUFBSSxDQUFDLENBQUM7UUFDdEIsT0FBTyxLQUFLLENBQUM7SUFDakIsQ0FBQztDQUNKIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHtJVGltZXJ9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuaW1wb3J0IHtPYmplY3RVdGlsc30gZnJvbSBcIi4vb2JqZWN0LnV0aWxzXCI7XHJcblxyXG50eXBlIFRpbWVyRnVuYyA9ICh0aW1lcjogSVRpbWVyKSA9PiB2b2lkO1xyXG5cclxuZXhwb3J0IGNsYXNzIFRpbWVyVXRpbHMge1xyXG5cclxuICAgIHN0YXRpYyBjcmVhdGVUaW1lb3V0KGZ1bmM/OiBGdW5jdGlvbiwgdGltZT86IG51bWJlcik6IElUaW1lciB7XHJcbiAgICAgICAgLy8gQGR5bmFtaWNcclxuICAgICAgICBjb25zdCBydW4gPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICB0aW1lci5jbGVhcigpO1xyXG4gICAgICAgICAgICB0aW1lci5pZCA9IHNldFRpbWVvdXQoKCkgPT4ge1xyXG4gICAgICAgICAgICAgICAgdGltZXIuaWQgPSBudWxsO1xyXG4gICAgICAgICAgICAgICAgdGltZXIuZnVuYygpO1xyXG4gICAgICAgICAgICB9LCB0aW1lci50aW1lKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgY2xlYXIgPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRpbWVyLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNsZWFyVGltZW91dCh0aW1lci5pZCk7XHJcbiAgICAgICAgICAgIHRpbWVyLmlkID0gbnVsbDtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHJldHVybiBUaW1lclV0aWxzLmNyZWF0ZVRpbWVyKHJ1biwgY2xlYXIsIGZ1bmMsIHRpbWUpO1xyXG4gICAgfVxyXG5cclxuICAgIHN0YXRpYyBjcmVhdGVJbnRlcnZhbChmdW5jPzogRnVuY3Rpb24sIHRpbWU/OiBudW1iZXIpOiBJVGltZXIge1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgcnVuID0gKHRpbWVyOiBJVGltZXIpID0+IHtcclxuICAgICAgICAgICAgdGltZXIuY2xlYXIoKTtcclxuICAgICAgICAgICAgdGltZXIuaWQgPSBzZXRJbnRlcnZhbCh0aW1lci5mdW5jLCB0aW1lci50aW1lKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIC8vIEBkeW5hbWljXHJcbiAgICAgICAgY29uc3QgY2xlYXIgPSAodGltZXI6IElUaW1lcikgPT4ge1xyXG4gICAgICAgICAgICBpZiAoIXRpbWVyLmlkKSByZXR1cm47XHJcbiAgICAgICAgICAgIGNsZWFySW50ZXJ2YWwodGltZXIuaWQpO1xyXG4gICAgICAgICAgICB0aW1lci5pZCA9IG51bGw7XHJcbiAgICAgICAgfTtcclxuICAgICAgICByZXR1cm4gVGltZXJVdGlscy5jcmVhdGVUaW1lcihydW4sIGNsZWFyLCBmdW5jLCB0aW1lKTtcclxuICAgIH1cclxuXHJcbiAgICBwcml2YXRlIHN0YXRpYyBjcmVhdGVUaW1lcihydW46IFRpbWVyRnVuYywgY2xlYXI6IFRpbWVyRnVuYywgZnVuYzogRnVuY3Rpb24sIHRpbWU6IG51bWJlcik6IElUaW1lciB7XHJcbiAgICAgICAgY29uc3QgdGltZXI6IElUaW1lciA9IHt9O1xyXG4gICAgICAgIGNvbnN0IHNldFBhcmFtcyA9IChmdW5jOiBGdW5jdGlvbiwgdGltZTogbnVtYmVyKSA9PiB7XHJcbiAgICAgICAgICAgIHRpbWVyLmZ1bmMgPSAhT2JqZWN0VXRpbHMuaXNGdW5jdGlvbihmdW5jKSA/ICgoKSA9PiB7fSkgOiBmdW5jO1xyXG4gICAgICAgICAgICB0aW1lci50aW1lID0gIU9iamVjdFV0aWxzLmlzTnVtYmVyKHRpbWUpID8gMTAwIDogdGltZTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHRpbWVyLnJ1biA9ICgpID0+IHJ1bih0aW1lcik7XHJcbiAgICAgICAgdGltZXIuY2xlYXIgPSAoKSA9PiBjbGVhcih0aW1lcik7XHJcbiAgICAgICAgdGltZXIuc2V0ID0gKGZ1bmM6IEZ1bmN0aW9uLCB0aW1lOiBudW1iZXIpID0+IHtcclxuICAgICAgICAgICAgc2V0UGFyYW1zKGZ1bmMsIHRpbWUpO1xyXG4gICAgICAgICAgICB0aW1lci5ydW4oKTtcclxuICAgICAgICB9O1xyXG4gICAgICAgIHNldFBhcmFtcyhmdW5jLCB0aW1lKTtcclxuICAgICAgICByZXR1cm4gdGltZXI7XHJcbiAgICB9XHJcbn1cclxuIl19
@@ -1,24 +0,0 @@
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==
@@ -1,77 +0,0 @@
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==
@@ -1,159 +0,0 @@
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
@@ -1,99 +0,0 @@
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 +0,0 @@
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
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoid2l0aC1vcHRpb25zLXByb3ZpZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vc3JjL25neC11dGlscy91dGlscy93aXRoLW9wdGlvbnMtcHJvdmlkZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFDLFFBQVEsRUFBTyxNQUFNLGVBQWUsQ0FBQztBQUM3QyxPQUFPLEVBQUMsYUFBYSxFQUF1QixNQUFNLGlCQUFpQixDQUFDO0FBRXBFLE1BQU0sVUFBVSxrQkFBa0IsQ0FBNEIsSUFBYSxFQUFFLE9BQVU7SUFDbkYsT0FBTztRQUNILFVBQVUsRUFBRSxVQUFVLFFBQWtCO1lBQ3BDLE1BQU0sV0FBVyxHQUFHLFFBQVEsQ0FBQyxNQUFNLENBQUM7Z0JBQ2hDLFNBQVMsRUFBRTtvQkFDUDt3QkFDSSxPQUFPLEVBQUUsYUFBYTt3QkFDdEIsUUFBUSxFQUFFLE9BQU87cUJBQ3BCO29CQUNEO3dCQUNJLE9BQU8sRUFBRSxJQUFJO3dCQUNiLFFBQVEsRUFBRSxJQUFJO3FCQUNqQjtpQkFDSjtnQkFDRCxNQUFNLEVBQUUsUUFBUTthQUNuQixDQUFDLENBQUM7WUFDSCxPQUFPLFdBQVcsQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakMsQ0FBQztRQUNELElBQUksRUFBRSxDQUFDLFFBQVEsQ0FBQztLQUNuQixDQUFBO0FBQ0wsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7SW5qZWN0b3IsIFR5cGV9IGZyb20gXCJAYW5ndWxhci9jb3JlXCI7XHJcbmltcG9ydCB7T1BUSU9OU19UT0tFTiwgVHlwZWRGYWN0b3J5UHJvdmlkZXJ9IGZyb20gXCIuLi9jb21tb24tdHlwZXNcIjtcclxuXHJcbmV4cG9ydCBmdW5jdGlvbiBwcm92aWRlV2l0aE9wdGlvbnM8TyBleHRlbmRzIE9iamVjdCwgVCA9IGFueT4odHlwZTogVHlwZTxUPiwgb3B0aW9uczogTyk6IFR5cGVkRmFjdG9yeVByb3ZpZGVyPFQ+IHtcclxuICAgIHJldHVybiB7XHJcbiAgICAgICAgdXNlRmFjdG9yeTogZnVuY3Rpb24gKGluamVjdG9yOiBJbmplY3Rvcikge1xyXG4gICAgICAgICAgICBjb25zdCBzdWJJbmplY3RvciA9IEluamVjdG9yLmNyZWF0ZSh7XHJcbiAgICAgICAgICAgICAgICBwcm92aWRlcnM6IFtcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IE9QVElPTlNfVE9LRU4sXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZVZhbHVlOiBvcHRpb25zXHJcbiAgICAgICAgICAgICAgICAgICAgfSxcclxuICAgICAgICAgICAgICAgICAgICB7XHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGU6IHR5cGUsXHJcbiAgICAgICAgICAgICAgICAgICAgICAgIHVzZUNsYXNzOiB0eXBlXHJcbiAgICAgICAgICAgICAgICAgICAgfVxyXG4gICAgICAgICAgICAgICAgXSxcclxuICAgICAgICAgICAgICAgIHBhcmVudDogaW5qZWN0b3JcclxuICAgICAgICAgICAgfSk7XHJcbiAgICAgICAgICAgIHJldHVybiBzdWJJbmplY3Rvci5nZXQodHlwZSk7XHJcbiAgICAgICAgfSxcclxuICAgICAgICBkZXBzOiBbSW5qZWN0b3JdXHJcbiAgICB9XHJcbn1cclxuIl19