@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.
- package/fesm2022/stemy-ngx-utils-tools.mjs.map +1 -1
- package/fesm2022/stemy-ngx-utils.mjs +261 -221
- package/fesm2022/stemy-ngx-utils.mjs.map +1 -1
- package/ngx-utils/ngx-utils.module.d.ts +1 -1
- package/package.json +13 -19
- package/esm2022/ngx-utils/common-types.mjs +0 -122
- package/esm2022/ngx-utils/components/dynamic-table/dynamic-table.component.mjs +0 -210
- package/esm2022/ngx-utils/components/pagination-menu/pagination-menu.component.mjs +0 -101
- package/esm2022/ngx-utils/components/unordered-list/unordered-list.component.mjs +0 -65
- package/esm2022/ngx-utils/directives/async-method.base.mjs +0 -90
- package/esm2022/ngx-utils/directives/async-method.directive.mjs +0 -21
- package/esm2022/ngx-utils/directives/background.directive.mjs +0 -51
- package/esm2022/ngx-utils/directives/dynamic-table-template.directive.mjs +0 -20
- package/esm2022/ngx-utils/directives/global-template.directive.mjs +0 -28
- package/esm2022/ngx-utils/directives/icon.directive.mjs +0 -67
- package/esm2022/ngx-utils/directives/ngx-template-outlet.directive.mjs +0 -90
- package/esm2022/ngx-utils/directives/pagination-item.directive.mjs +0 -34
- package/esm2022/ngx-utils/directives/pagination.directive.mjs +0 -84
- package/esm2022/ngx-utils/directives/resource-if.directive.mjs +0 -50
- package/esm2022/ngx-utils/directives/sticky-class.directive.mjs +0 -34
- package/esm2022/ngx-utils/directives/sticky.directive.mjs +0 -55
- package/esm2022/ngx-utils/directives/unordered-list-item.directive.mjs +0 -79
- package/esm2022/ngx-utils/directives/unordered-list-template.directive.mjs +0 -20
- package/esm2022/ngx-utils/ngx-utils.imports.mjs +0 -178
- package/esm2022/ngx-utils/ngx-utils.module.mjs +0 -204
- package/esm2022/ngx-utils/pipes/chunk.pipe.mjs +0 -25
- package/esm2022/ngx-utils/pipes/entries.pipe.mjs +0 -28
- package/esm2022/ngx-utils/pipes/extra-item-properties.pipe.mjs +0 -31
- package/esm2022/ngx-utils/pipes/filter.pipe.mjs +0 -37
- package/esm2022/ngx-utils/pipes/find.pipe.mjs +0 -29
- package/esm2022/ngx-utils/pipes/format-number.pipe.mjs +0 -21
- package/esm2022/ngx-utils/pipes/get-offset.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/get-type.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/get-value.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/global-template.pipe.mjs +0 -39
- package/esm2022/ngx-utils/pipes/group-by.pipe.mjs +0 -27
- package/esm2022/ngx-utils/pipes/is-type.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/join.pipe.mjs +0 -19
- package/esm2022/ngx-utils/pipes/keys.pipe.mjs +0 -22
- package/esm2022/ngx-utils/pipes/map.pipe.mjs +0 -29
- package/esm2022/ngx-utils/pipes/max.pipe.mjs +0 -26
- package/esm2022/ngx-utils/pipes/min.pipe.mjs +0 -26
- package/esm2022/ngx-utils/pipes/pop.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/reduce.pipe.mjs +0 -30
- package/esm2022/ngx-utils/pipes/remap.pipe.mjs +0 -32
- package/esm2022/ngx-utils/pipes/replace.pipe.mjs +0 -17
- package/esm2022/ngx-utils/pipes/reverse.pipe.mjs +0 -24
- package/esm2022/ngx-utils/pipes/round.pipe.mjs +0 -21
- package/esm2022/ngx-utils/pipes/safe-html.pipe.mjs +0 -34
- package/esm2022/ngx-utils/pipes/shift.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/split.pipe.mjs +0 -16
- package/esm2022/ngx-utils/pipes/translate.pipe.mjs +0 -86
- package/esm2022/ngx-utils/pipes/values.pipe.mjs +0 -22
- package/esm2022/ngx-utils/plugins/resize-event.plugin.mjs +0 -78
- package/esm2022/ngx-utils/plugins/scroll-event.plugin.mjs +0 -39
- package/esm2022/ngx-utils/services/acl.service.mjs +0 -84
- package/esm2022/ngx-utils/services/api.service.mjs +0 -42
- package/esm2022/ngx-utils/services/auth.service.mjs +0 -14
- package/esm2022/ngx-utils/services/base-http.client.mjs +0 -47
- package/esm2022/ngx-utils/services/base-http.service.mjs +0 -305
- package/esm2022/ngx-utils/services/config.service.mjs +0 -130
- package/esm2022/ngx-utils/services/error-handler.service.mjs +0 -49
- package/esm2022/ngx-utils/services/events.service.mjs +0 -26
- package/esm2022/ngx-utils/services/formatter.service.mjs +0 -49
- package/esm2022/ngx-utils/services/global-template.service.mjs +0 -37
- package/esm2022/ngx-utils/services/icon.service.mjs +0 -26
- package/esm2022/ngx-utils/services/language.service.mjs +0 -124
- package/esm2022/ngx-utils/services/local-http.service.mjs +0 -47
- package/esm2022/ngx-utils/services/open-api.service.mjs +0 -40
- package/esm2022/ngx-utils/services/promise.service.mjs +0 -55
- package/esm2022/ngx-utils/services/state.service.mjs +0 -185
- package/esm2022/ngx-utils/services/static-language.service.mjs +0 -166
- package/esm2022/ngx-utils/services/storage.service.mjs +0 -49
- package/esm2022/ngx-utils/services/toaster.service.mjs +0 -32
- package/esm2022/ngx-utils/services/translated-url.serializer.mjs +0 -73
- package/esm2022/ngx-utils/services/universal.service.mjs +0 -81
- package/esm2022/ngx-utils/services/wasm.service.mjs +0 -46
- package/esm2022/ngx-utils/utils/ajax-request-handler.mjs +0 -40
- package/esm2022/ngx-utils/utils/array.utils.mjs +0 -107
- package/esm2022/ngx-utils/utils/auth.guard.mjs +0 -181
- package/esm2022/ngx-utils/utils/cached-factory.mjs +0 -30
- package/esm2022/ngx-utils/utils/canvas.utils.mjs +0 -388
- package/esm2022/ngx-utils/utils/date.utils.mjs +0 -29
- package/esm2022/ngx-utils/utils/file-system.mjs +0 -25
- package/esm2022/ngx-utils/utils/file.utils.mjs +0 -90
- package/esm2022/ngx-utils/utils/generic-value.mjs +0 -20
- package/esm2022/ngx-utils/utils/geometry.mjs +0 -132
- package/esm2022/ngx-utils/utils/initializer.mjs +0 -20
- package/esm2022/ngx-utils/utils/jsonfn.mjs +0 -45
- package/esm2022/ngx-utils/utils/loader.utils.mjs +0 -55
- package/esm2022/ngx-utils/utils/math.utils.mjs +0 -44
- package/esm2022/ngx-utils/utils/object.utils.mjs +0 -320
- package/esm2022/ngx-utils/utils/observable.utils.mjs +0 -59
- package/esm2022/ngx-utils/utils/promise.utils.mjs +0 -23
- package/esm2022/ngx-utils/utils/reflect.utils.mjs +0 -33
- package/esm2022/ngx-utils/utils/set.utils.mjs +0 -20
- package/esm2022/ngx-utils/utils/string.utils.mjs +0 -41
- package/esm2022/ngx-utils/utils/timer.utils.mjs +0 -52
- package/esm2022/ngx-utils/utils/unique.utils.mjs +0 -24
- package/esm2022/ngx-utils/utils/vector.mjs +0 -77
- package/esm2022/ngx-utils/utils/wasi.mjs +0 -159
- package/esm2022/ngx-utils/utils/wasm-worker-proxy.mjs +0 -99
- package/esm2022/ngx-utils/utils/with-options-provider.mjs +0 -24
- package/esm2022/public_api.mjs +0 -96
- package/esm2022/stemy-ngx-utils.mjs +0 -5
- package/esm2022/tools/config.mjs +0 -71
- package/esm2022/tools/public_api.mjs +0 -2
- 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
|