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