@yelon/util 15.2.0 → 15.2.1
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +21 -21
- package/README.md +22 -22
- package/array/array-type.service.d.ts +68 -68
- package/array/array.service.d.ts +78 -78
- package/array/index.d.ts +2 -2
- package/browser/cookie.service.d.ts +67 -67
- package/browser/copy.d.ts +6 -6
- package/browser/index.d.ts +5 -5
- package/browser/is-empty.d.ts +6 -6
- package/browser/scroll.service.d.ts +37 -37
- package/browser/style.d.ts +21 -21
- package/config/abc/date-picker.type.d.ts +52 -52
- package/config/abc/error-collect.type.d.ts +10 -10
- package/config/abc/exception.type.d.ts +9 -9
- package/config/abc/image.type.d.ts +15 -15
- package/config/abc/index.d.ts +17 -17
- package/config/abc/loading.type.d.ts +31 -31
- package/config/abc/lodop.type.d.ts +33 -33
- package/config/abc/media.type.d.ts +11 -11
- package/config/abc/onboarding.type.d.ts +4 -4
- package/config/abc/page-header.type.d.ts +39 -39
- package/config/abc/pdf.type.d.ts +35 -35
- package/config/abc/qr.type.d.ts +25 -25
- package/config/abc/se.type.d.ts +32 -32
- package/config/abc/sg.type.d.ts +10 -10
- package/config/abc/st.type.d.ts +465 -465
- package/config/abc/sv.type.d.ts +14 -14
- package/config/abc/xlsx.type.d.ts +12 -12
- package/config/abc/zip.type.d.ts +10 -10
- package/config/acl/acl.type.d.ts +32 -32
- package/config/auth/auth.type.d.ts +55 -55
- package/config/bis/bis.type.d.ts +7 -7
- package/config/cache/cache.type.d.ts +40 -40
- package/config/chart/chart.type.d.ts +33 -33
- package/config/config.service.d.ts +13 -13
- package/config/config.types.d.ts +48 -48
- package/config/index.d.ts +14 -14
- package/config/mock/mock.type.d.ts +18 -18
- package/config/sf/sf.type.d.ts +133 -133
- package/config/socket/socket.type.d.ts +4 -4
- package/config/theme/http.type.d.ts +14 -14
- package/config/theme/i18n.type.d.ts +14 -14
- package/config/theme/index.d.ts +3 -3
- package/config/theme/responsive.type.d.ts +12 -12
- package/config/util/array.type.d.ts +22 -22
- package/config/util/currency.type.d.ts +39 -39
- package/date-time/index.d.ts +2 -2
- package/date-time/picker.d.ts +68 -68
- package/date-time/time.d.ts +29 -29
- package/decorator/convert.d.ts +24 -24
- package/decorator/index.d.ts +2 -2
- package/decorator/zone-outside.d.ts +35 -35
- package/esm2020/array/array-type.service.mjs +1 -1
- package/esm2020/array/array.mjs +4 -4
- package/esm2020/array/array.service.mjs +276 -276
- package/esm2020/array/index.mjs +2 -2
- package/esm2020/browser/browser.mjs +4 -4
- package/esm2020/browser/cookie.service.mjs +102 -102
- package/esm2020/browser/copy.mjs +27 -27
- package/esm2020/browser/index.mjs +5 -5
- package/esm2020/browser/is-empty.mjs +18 -18
- package/esm2020/browser/scroll.service.mjs +87 -87
- package/esm2020/browser/style.mjs +37 -37
- package/esm2020/config/abc/date-picker.type.mjs +1 -1
- package/esm2020/config/abc/error-collect.type.mjs +1 -1
- package/esm2020/config/abc/exception.type.mjs +1 -1
- package/esm2020/config/abc/image.type.mjs +1 -1
- package/esm2020/config/abc/index.mjs +17 -17
- package/esm2020/config/abc/loading.type.mjs +1 -1
- package/esm2020/config/abc/lodop.type.mjs +1 -1
- package/esm2020/config/abc/media.type.mjs +1 -1
- package/esm2020/config/abc/onboarding.type.mjs +1 -1
- package/esm2020/config/abc/page-header.type.mjs +1 -1
- package/esm2020/config/abc/pdf.type.mjs +1 -1
- package/esm2020/config/abc/qr.type.mjs +1 -1
- package/esm2020/config/abc/se.type.mjs +1 -1
- package/esm2020/config/abc/sg.type.mjs +1 -1
- package/esm2020/config/abc/st.type.mjs +1 -1
- package/esm2020/config/abc/sv.type.mjs +2 -2
- package/esm2020/config/abc/xlsx.type.mjs +1 -1
- package/esm2020/config/abc/zip.type.mjs +1 -1
- package/esm2020/config/acl/acl.type.mjs +1 -1
- package/esm2020/config/auth/auth.type.mjs +1 -1
- package/esm2020/config/bis/bis.type.mjs +1 -1
- package/esm2020/config/cache/cache.type.mjs +1 -1
- package/esm2020/config/chart/chart.type.mjs +1 -1
- package/esm2020/config/config.mjs +4 -4
- package/esm2020/config/config.service.mjs +36 -36
- package/esm2020/config/config.types.mjs +8 -8
- package/esm2020/config/index.mjs +14 -14
- package/esm2020/config/mock/mock.type.mjs +1 -1
- package/esm2020/config/sf/sf.type.mjs +1 -1
- package/esm2020/config/socket/socket.type.mjs +1 -1
- package/esm2020/config/theme/http.type.mjs +1 -1
- package/esm2020/config/theme/i18n.type.mjs +1 -1
- package/esm2020/config/theme/index.mjs +3 -3
- package/esm2020/config/theme/responsive.type.mjs +1 -1
- package/esm2020/config/util/array.type.mjs +1 -1
- package/esm2020/config/util/currency.type.mjs +1 -1
- package/esm2020/date-time/date-time.mjs +4 -4
- package/esm2020/date-time/index.mjs +2 -2
- package/esm2020/date-time/picker.mjs +115 -115
- package/esm2020/date-time/time.mjs +88 -88
- package/esm2020/decorator/convert.mjs +57 -57
- package/esm2020/decorator/decorator.mjs +4 -4
- package/esm2020/decorator/index.mjs +2 -2
- package/esm2020/decorator/zone-outside.mjs +56 -56
- package/esm2020/form/form.mjs +4 -4
- package/esm2020/form/index.mjs +2 -2
- package/esm2020/form/match-control.mjs +29 -29
- package/esm2020/form/validators.mjs +80 -80
- package/esm2020/format/currency.service.mjs +237 -237
- package/esm2020/format/currency.types.mjs +7 -7
- package/esm2020/format/format.mjs +4 -4
- package/esm2020/format/index.mjs +4 -4
- package/esm2020/format/string.mjs +84 -84
- package/esm2020/format/validate.mjs +93 -93
- package/esm2020/index.mjs +11 -11
- package/esm2020/math/in-range.mjs +24 -24
- package/esm2020/math/index.mjs +2 -2
- package/esm2020/math/math.mjs +4 -4
- package/esm2020/math/round.mjs +52 -52
- package/esm2020/other/assert.mjs +66 -66
- package/esm2020/other/deep.mjs +77 -77
- package/esm2020/other/favicon.mjs +28 -28
- package/esm2020/other/index.mjs +7 -7
- package/esm2020/other/lazy.service.mjs +131 -131
- package/esm2020/other/logger.mjs +32 -32
- package/esm2020/other/other.mjs +4 -4
- package/esm2020/other/path-to-regexp.service.mjs +238 -238
- package/esm2020/other/resize.mjs +3 -3
- package/esm2020/pipes/currency/cny.pipe.mjs +22 -22
- package/esm2020/pipes/currency/index.mjs +4 -4
- package/esm2020/pipes/currency/mega.pipe.mjs +28 -28
- package/esm2020/pipes/currency/module.mjs +18 -18
- package/esm2020/pipes/currency/pipe-currency.mjs +4 -4
- package/esm2020/pipes/currency/price.pipe.mjs +26 -26
- package/esm2020/pipes/filter/filter.pipe.mjs +18 -18
- package/esm2020/pipes/filter/index.mjs +2 -2
- package/esm2020/pipes/filter/module.mjs +16 -16
- package/esm2020/pipes/filter/pipe-filter.mjs +4 -4
- package/esm2020/pipes/format/index.mjs +2 -2
- package/esm2020/pipes/format/mask.pipe.mjs +33 -33
- package/esm2020/pipes/format/module.mjs +16 -16
- package/esm2020/pipes/format/pipe-format.mjs +4 -4
- package/esm2020/pipes/index.mjs +3 -3
- package/esm2020/pipes/pipes.mjs +4 -4
- package/esm2020/token/index.mjs +2 -2
- package/esm2020/token/page-visibility.mjs +14 -14
- package/esm2020/token/token.mjs +4 -4
- package/esm2020/token/window.mjs +16 -16
- package/esm2020/yelon-util.mjs +4 -4
- package/fesm2015/array.mjs +254 -254
- package/fesm2015/browser.mjs +283 -283
- package/fesm2015/config.mjs +56 -56
- package/fesm2015/date-time.mjs +207 -207
- package/fesm2015/decorator.mjs +121 -121
- package/fesm2015/form.mjs +118 -118
- package/fesm2015/format.mjs +413 -413
- package/fesm2015/math.mjs +85 -85
- package/fesm2015/other.mjs +589 -589
- package/fesm2015/pipe-currency.mjs +96 -96
- package/fesm2015/pipe-filter.mjs +40 -40
- package/fesm2015/pipe-format.mjs +55 -55
- package/fesm2015/pipes.mjs +8 -8
- package/fesm2015/token.mjs +37 -37
- package/fesm2015/yelon-util.mjs +16 -16
- package/fesm2020/array.mjs +284 -284
- package/fesm2020/browser.mjs +279 -279
- package/fesm2020/config.mjs +54 -54
- package/fesm2020/date-time.mjs +211 -211
- package/fesm2020/decorator.mjs +121 -121
- package/fesm2020/form.mjs +118 -118
- package/fesm2020/format.mjs +431 -431
- package/fesm2020/math.mjs +85 -85
- package/fesm2020/other.mjs +586 -586
- package/fesm2020/pipe-currency.mjs +94 -94
- package/fesm2020/pipe-filter.mjs +40 -40
- package/fesm2020/pipe-format.mjs +55 -55
- package/fesm2020/pipes.mjs +8 -8
- package/fesm2020/token.mjs +37 -37
- package/fesm2020/yelon-util.mjs +16 -16
- package/form/index.d.ts +2 -2
- package/form/match-control.d.ts +15 -15
- package/form/validators.d.ts +62 -62
- package/format/currency.service.d.ts +37 -37
- package/format/currency.types.d.ts +77 -77
- package/format/index.d.ts +4 -4
- package/format/string.d.ts +44 -44
- package/format/validate.d.ts +72 -72
- package/index.d.ts +11 -11
- package/math/in-range.d.ts +14 -14
- package/math/index.d.ts +2 -2
- package/math/round.d.ts +33 -33
- package/other/assert.d.ts +36 -36
- package/other/deep.d.ts +35 -35
- package/other/favicon.d.ts +2 -2
- package/other/index.d.ts +7 -7
- package/other/lazy.service.d.ts +48 -48
- package/other/logger.d.ts +5 -5
- package/other/path-to-regexp.service.d.ts +26 -26
- package/other/resize.d.ts +1 -1
- package/package.json +157 -157
- package/pipes/currency/cny.pipe.d.ts +15 -15
- package/pipes/currency/index.d.ts +4 -4
- package/pipes/currency/mega.pipe.d.ts +16 -16
- package/pipes/currency/module.d.ts +9 -9
- package/pipes/currency/price.pipe.d.ts +19 -19
- package/pipes/filter/filter.pipe.d.ts +13 -13
- package/pipes/filter/index.d.ts +2 -2
- package/pipes/filter/module.d.ts +7 -7
- package/pipes/format/index.d.ts +2 -2
- package/pipes/format/mask.pipe.d.ts +27 -27
- package/pipes/format/module.d.ts +7 -7
- package/pipes/index.d.ts +3 -3
- package/token/index.d.ts +2 -2
- package/token/page-visibility.d.ts +8 -8
- package/token/window.d.ts +7 -7
@@ -1,132 +1,132 @@
|
|
1
|
-
import { DOCUMENT } from '@angular/common';
|
2
|
-
import { Inject, Injectable } from '@angular/core';
|
3
|
-
import { BehaviorSubject, filter, share } from 'rxjs';
|
4
|
-
import * as i0 from "@angular/core";
|
5
|
-
/**
|
6
|
-
* `LazyService` delay loading JS or CSS files.
|
7
|
-
*
|
8
|
-
* 延迟加载资源(js 或 css)服务
|
9
|
-
*/
|
10
|
-
export class LazyService {
|
11
|
-
constructor(doc) {
|
12
|
-
this.doc = doc;
|
13
|
-
this.list = {};
|
14
|
-
this.cached = {};
|
15
|
-
this._notify = new BehaviorSubject([]);
|
16
|
-
}
|
17
|
-
get change() {
|
18
|
-
return this._notify.asObservable().pipe(share(), filter(ls => ls.length !== 0));
|
19
|
-
}
|
20
|
-
clear() {
|
21
|
-
this.list = {};
|
22
|
-
this.cached = {};
|
23
|
-
}
|
24
|
-
attachAttributes(el, attributes) {
|
25
|
-
if (attributes == null)
|
26
|
-
return;
|
27
|
-
Object.entries(attributes).forEach(([key, value]) => {
|
28
|
-
el.setAttribute(key, value);
|
29
|
-
});
|
30
|
-
}
|
31
|
-
/**
|
32
|
-
* Load script or style files
|
33
|
-
*/
|
34
|
-
load(paths) {
|
35
|
-
if (!Array.isArray(paths)) {
|
36
|
-
paths = [paths];
|
37
|
-
}
|
38
|
-
const promises = [];
|
39
|
-
paths
|
40
|
-
.map(v => (typeof v !== 'object' ? { path: v } : v))
|
41
|
-
.forEach(item => {
|
42
|
-
if (item.path.endsWith('.js')) {
|
43
|
-
promises.push(this.loadScript(item.path, item.options));
|
44
|
-
}
|
45
|
-
else {
|
46
|
-
promises.push(this.loadStyle(item.path, item.options));
|
47
|
-
}
|
48
|
-
});
|
49
|
-
return Promise.all(promises).then(res => {
|
50
|
-
this._notify.next(res);
|
51
|
-
return Promise.resolve(res);
|
52
|
-
});
|
53
|
-
}
|
54
|
-
loadScript(path, innerContent, attributes) {
|
55
|
-
const options = typeof innerContent === 'object'
|
56
|
-
? innerContent
|
57
|
-
: {
|
58
|
-
innerContent,
|
59
|
-
attributes
|
60
|
-
};
|
61
|
-
return new Promise(resolve => {
|
62
|
-
if (this.list[path] === true) {
|
63
|
-
resolve({ ...this.cached[path], status: 'loading' });
|
64
|
-
return;
|
65
|
-
}
|
66
|
-
this.list[path] = true;
|
67
|
-
const onSuccess = (item) => {
|
68
|
-
this.cached[path] = item;
|
69
|
-
resolve(item);
|
70
|
-
this._notify.next([item]);
|
71
|
-
};
|
72
|
-
const node = this.doc.createElement('script');
|
73
|
-
node.type = 'text/javascript';
|
74
|
-
node.src = path;
|
75
|
-
this.attachAttributes(node, options.attributes);
|
76
|
-
if (options.innerContent) {
|
77
|
-
node.innerHTML = options.innerContent;
|
78
|
-
}
|
79
|
-
node.onload = () => onSuccess({
|
80
|
-
path,
|
81
|
-
status: 'ok'
|
82
|
-
});
|
83
|
-
node.onerror = error => onSuccess({
|
84
|
-
path,
|
85
|
-
status: 'error',
|
86
|
-
error
|
87
|
-
});
|
88
|
-
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
89
|
-
});
|
90
|
-
}
|
91
|
-
loadStyle(path, rel, innerContent, attributes) {
|
92
|
-
const options = typeof rel === 'object'
|
93
|
-
? rel
|
94
|
-
: {
|
95
|
-
rel,
|
96
|
-
innerContent,
|
97
|
-
attributes
|
98
|
-
};
|
99
|
-
return new Promise(resolve => {
|
100
|
-
if (this.list[path] === true) {
|
101
|
-
resolve(this.cached[path]);
|
102
|
-
return;
|
103
|
-
}
|
104
|
-
this.list[path] = true;
|
105
|
-
const node = this.doc.createElement('link');
|
106
|
-
node.rel = options.rel ?? 'stylesheet';
|
107
|
-
node.type = 'text/css';
|
108
|
-
node.href = path;
|
109
|
-
this.attachAttributes(node, options.attributes);
|
110
|
-
if (options.innerContent) {
|
111
|
-
node.innerHTML = options.innerContent;
|
112
|
-
}
|
113
|
-
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
114
|
-
const item = {
|
115
|
-
path,
|
116
|
-
status: 'ok'
|
117
|
-
};
|
118
|
-
this.cached[path] = item;
|
119
|
-
resolve(item);
|
120
|
-
});
|
121
|
-
}
|
122
|
-
}
|
123
|
-
LazyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.
|
124
|
-
LazyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.
|
125
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.
|
126
|
-
type: Injectable,
|
127
|
-
args: [{ providedIn: 'root' }]
|
128
|
-
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
129
|
-
type: Inject,
|
130
|
-
args: [DOCUMENT]
|
131
|
-
}] }]; } });
|
1
|
+
import { DOCUMENT } from '@angular/common';
|
2
|
+
import { Inject, Injectable } from '@angular/core';
|
3
|
+
import { BehaviorSubject, filter, share } from 'rxjs';
|
4
|
+
import * as i0 from "@angular/core";
|
5
|
+
/**
|
6
|
+
* `LazyService` delay loading JS or CSS files.
|
7
|
+
*
|
8
|
+
* 延迟加载资源(js 或 css)服务
|
9
|
+
*/
|
10
|
+
export class LazyService {
|
11
|
+
constructor(doc) {
|
12
|
+
this.doc = doc;
|
13
|
+
this.list = {};
|
14
|
+
this.cached = {};
|
15
|
+
this._notify = new BehaviorSubject([]);
|
16
|
+
}
|
17
|
+
get change() {
|
18
|
+
return this._notify.asObservable().pipe(share(), filter(ls => ls.length !== 0));
|
19
|
+
}
|
20
|
+
clear() {
|
21
|
+
this.list = {};
|
22
|
+
this.cached = {};
|
23
|
+
}
|
24
|
+
attachAttributes(el, attributes) {
|
25
|
+
if (attributes == null)
|
26
|
+
return;
|
27
|
+
Object.entries(attributes).forEach(([key, value]) => {
|
28
|
+
el.setAttribute(key, value);
|
29
|
+
});
|
30
|
+
}
|
31
|
+
/**
|
32
|
+
* Load script or style files
|
33
|
+
*/
|
34
|
+
load(paths) {
|
35
|
+
if (!Array.isArray(paths)) {
|
36
|
+
paths = [paths];
|
37
|
+
}
|
38
|
+
const promises = [];
|
39
|
+
paths
|
40
|
+
.map(v => (typeof v !== 'object' ? { path: v } : v))
|
41
|
+
.forEach(item => {
|
42
|
+
if (item.path.endsWith('.js')) {
|
43
|
+
promises.push(this.loadScript(item.path, item.options));
|
44
|
+
}
|
45
|
+
else {
|
46
|
+
promises.push(this.loadStyle(item.path, item.options));
|
47
|
+
}
|
48
|
+
});
|
49
|
+
return Promise.all(promises).then(res => {
|
50
|
+
this._notify.next(res);
|
51
|
+
return Promise.resolve(res);
|
52
|
+
});
|
53
|
+
}
|
54
|
+
loadScript(path, innerContent, attributes) {
|
55
|
+
const options = typeof innerContent === 'object'
|
56
|
+
? innerContent
|
57
|
+
: {
|
58
|
+
innerContent,
|
59
|
+
attributes
|
60
|
+
};
|
61
|
+
return new Promise(resolve => {
|
62
|
+
if (this.list[path] === true) {
|
63
|
+
resolve({ ...this.cached[path], status: 'loading' });
|
64
|
+
return;
|
65
|
+
}
|
66
|
+
this.list[path] = true;
|
67
|
+
const onSuccess = (item) => {
|
68
|
+
this.cached[path] = item;
|
69
|
+
resolve(item);
|
70
|
+
this._notify.next([item]);
|
71
|
+
};
|
72
|
+
const node = this.doc.createElement('script');
|
73
|
+
node.type = 'text/javascript';
|
74
|
+
node.src = path;
|
75
|
+
this.attachAttributes(node, options.attributes);
|
76
|
+
if (options.innerContent) {
|
77
|
+
node.innerHTML = options.innerContent;
|
78
|
+
}
|
79
|
+
node.onload = () => onSuccess({
|
80
|
+
path,
|
81
|
+
status: 'ok'
|
82
|
+
});
|
83
|
+
node.onerror = error => onSuccess({
|
84
|
+
path,
|
85
|
+
status: 'error',
|
86
|
+
error
|
87
|
+
});
|
88
|
+
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
89
|
+
});
|
90
|
+
}
|
91
|
+
loadStyle(path, rel, innerContent, attributes) {
|
92
|
+
const options = typeof rel === 'object'
|
93
|
+
? rel
|
94
|
+
: {
|
95
|
+
rel,
|
96
|
+
innerContent,
|
97
|
+
attributes
|
98
|
+
};
|
99
|
+
return new Promise(resolve => {
|
100
|
+
if (this.list[path] === true) {
|
101
|
+
resolve(this.cached[path]);
|
102
|
+
return;
|
103
|
+
}
|
104
|
+
this.list[path] = true;
|
105
|
+
const node = this.doc.createElement('link');
|
106
|
+
node.rel = options.rel ?? 'stylesheet';
|
107
|
+
node.type = 'text/css';
|
108
|
+
node.href = path;
|
109
|
+
this.attachAttributes(node, options.attributes);
|
110
|
+
if (options.innerContent) {
|
111
|
+
node.innerHTML = options.innerContent;
|
112
|
+
}
|
113
|
+
this.doc.getElementsByTagName('head')[0].appendChild(node);
|
114
|
+
const item = {
|
115
|
+
path,
|
116
|
+
status: 'ok'
|
117
|
+
};
|
118
|
+
this.cached[path] = item;
|
119
|
+
resolve(item);
|
120
|
+
});
|
121
|
+
}
|
122
|
+
}
|
123
|
+
LazyService.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LazyService, deps: [{ token: DOCUMENT }], target: i0.ɵɵFactoryTarget.Injectable });
|
124
|
+
LazyService.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LazyService, providedIn: 'root' });
|
125
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "15.2.9", ngImport: i0, type: LazyService, decorators: [{
|
126
|
+
type: Injectable,
|
127
|
+
args: [{ providedIn: 'root' }]
|
128
|
+
}], ctorParameters: function () { return [{ type: undefined, decorators: [{
|
129
|
+
type: Inject,
|
130
|
+
args: [DOCUMENT]
|
131
|
+
}] }]; } });
|
132
132
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGF6eS5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9vdGhlci9sYXp5LnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFFBQVEsRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQzNDLE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ25ELE9BQU8sRUFBRSxlQUFlLEVBQWMsTUFBTSxFQUFFLEtBQUssRUFBRSxNQUFNLE1BQU0sQ0FBQzs7QUFxQmxFOzs7O0dBSUc7QUFFSCxNQUFNLE9BQU8sV0FBVztJQUt0QixZQUFzQyxHQUFjO1FBQWQsUUFBRyxHQUFILEdBQUcsQ0FBVztRQUo1QyxTQUFJLEdBQStCLEVBQUUsQ0FBQztRQUN0QyxXQUFNLEdBQWtDLEVBQUUsQ0FBQztRQUMzQyxZQUFPLEdBQWtDLElBQUksZUFBZSxDQUFlLEVBQUUsQ0FBQyxDQUFDO0lBRWhDLENBQUM7SUFFeEQsSUFBSSxNQUFNO1FBQ1IsT0FBTyxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksRUFBRSxDQUFDLElBQUksQ0FDckMsS0FBSyxFQUFFLEVBQ1AsTUFBTSxDQUFDLEVBQUUsQ0FBQyxFQUFFLENBQUMsRUFBRSxDQUFDLE1BQU0sS0FBSyxDQUFDLENBQUMsQ0FDOUIsQ0FBQztJQUNKLENBQUM7SUFFRCxLQUFLO1FBQ0gsSUFBSSxDQUFDLElBQUksR0FBRyxFQUFFLENBQUM7UUFDZixJQUFJLENBQUMsTUFBTSxHQUFHLEVBQUUsQ0FBQztJQUNuQixDQUFDO0lBRU8sZ0JBQWdCLENBQUMsRUFBZSxFQUFFLFVBQWdEO1FBQ3hGLElBQUksVUFBVSxJQUFJLElBQUk7WUFBRSxPQUFPO1FBRS9CLE1BQU0sQ0FBQyxPQUFPLENBQUMsVUFBVSxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxHQUFHLEVBQUUsS0FBSyxDQUFDLEVBQUUs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QyxJQUFJLEdBQUcsSUFBSSxDQUFDO1lBQ2pCLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxJQUFJLEVBQUUsT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1lBQ2hELElBQUksT0FBTyxDQUFDLFlBQVksRUFBRTtnQkFDeEIsSUFBSSxDQUFDLFNBQVMsR0FBRyxPQUFPLENBQUMsWUFBWSxDQUFDO2FBQ3ZDO1lBQ0QsSUFBSSxDQUFDLEdBQUcsQ0FBQyxvQkFBb0IsQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLENBQUM7WUFDM0QsTUFBTSxJQUFJLEdBQWU7Z0JBQ3ZCLElBQUk7Z0JBQ0osTUFBTSxFQUFFLElBQUk7YUFDYixDQUFDO1lBQ0YsSUFBSSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxJQUFJLENBQUM7WUFDekIsT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQ2hCLENBQUMsQ0FBQyxDQUFDO0lBQ0wsQ0FBQzs7d0dBakpVLFdBQVcsa0JBS0YsUUFBUTs0R0FMakIsV0FBVyxjQURFLE1BQU07MkZBQ25CLFdBQVc7a0JBRHZCLFVBQVU7bUJBQUMsRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFOzswQkFNbkIsTUFBTTsyQkFBQyxRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgRE9DVU1FTlQgfSBmcm9tICdAYW5ndWxhci9jb21tb24nO1xuaW1wb3J0IHsgSW5qZWN0LCBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBCZWhhdmlvclN1YmplY3QsIE9ic2VydmFibGUsIGZpbHRlciwgc2hhcmUgfSBmcm9tICdyeGpzJztcblxuaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5leHBvcnQgaW50ZXJmYWNlIExhenlSZXN1bHQge1xuICBwYXRoOiBzdHJpbmc7XG4gIHN0YXR1czogJ29rJyB8ICdlcnJvcicgfCAnbG9hZGluZyc7XG4gIGVycm9yPzogTnpTYWZlQW55O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIExhenlMb2FkSXRlbSB7XG4gIHBhdGg6IHN0cmluZztcbiAgb3B0aW9ucz86IExhenlMb2FkT3B0aW9ucztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBMYXp5TG9hZE9wdGlvbnMge1xuICBpbm5lckNvbnRlbnQ/OiBzdHJpbmc7XG4gIGF0dHJpYnV0ZXM/OiB7IFtxdWFsaWZpZWROYW1lOiBzdHJpbmddOiBzdHJpbmcgfTtcbiAgcmVsPzogc3RyaW5nO1xufVxuXG4vKipcbiAqIGBMYXp5U2VydmljZWAgZGVsYXkgbG9hZGluZyBKUyBvciBDU1MgZmlsZXMuXG4gKlxuICog5bu26L+f5Yqg6L296LWE5rqQ77yIanMg5oiWIGNzc++8ieacjeWKoVxuICovXG5ASW5qZWN0YWJsZSh7IHByb3ZpZGVkSW46ICdyb290JyB9KVxuZXhwb3J0IGNsYXNzIExhenlTZXJ2aWNlIHtcbiAgcHJpdmF0ZSBsaXN0OiB7IFtrZXk6IHN0cmluZ106IGJvb2xlYW4gfSA9IHt9O1xuICBwcml2YXRlIGNhY2hlZDogeyBba2V5OiBzdHJpbmddOiBMYXp5UmVzdWx0IH0gPSB7fTtcbiAgcHJpdmF0ZSBfbm90aWZ5OiBCZWhhdmlvclN1YmplY3Q8TGF6eVJlc3VsdFtdPiA9IG5ldyBCZWhhdmlvclN1YmplY3Q8TGF6eVJlc3VsdFtdPihbXSk7XG5cbiAgY29uc3RydWN0b3IoQEluamVjdChET0NVTUVOVCkgcHJpdmF0ZSBkb2M6IE56U2FmZUFueSkge31cblxuICBnZXQgY2hhbmdlKCk6IE9ic2VydmFibGU8TGF6eVJlc3VsdFtdPiB7XG4gICAgcmV0dXJuIHRoaXMuX25vdGlmeS5hc09ic2VydmFibGUoKS5waXBlKFxuICAgICAgc2hhcmUoKSxcbiAgICAgIGZpbHRlcihscyA9PiBscy5sZW5ndGggIT09IDApXG4gICAgKTtcbiAgfVxuXG4gIGNsZWFyKCk6IHZvaWQge1xuICAgIHRoaXMubGlzdCA9IHt9O1xuICAgIHRoaXMuY2FjaGVkID0ge307XG4gIH1cblxuICBwcml2YXRlIGF0dGFjaEF0dHJpYnV0ZXMoZWw6IEhUTUxFbGVtZW50LCBhdHRyaWJ1dGVzPzogeyBbcXVhbGlmaWVkTmFtZTogc3RyaW5nXTogc3RyaW5nIH0pOiB2b2lkIHtcbiAgICBpZiAoYXR0cmlidXRlcyA9PSBudWxsKSByZXR1cm47XG5cbiAgICBPYmplY3QuZW50cmllcyhhdHRyaWJ1dGVzKS5mb3JFYWNoKChba2V5LCB2YWx1ZV0pID0+IHtcbiAgICAgIGVsLnNldEF0dHJpYnV0ZShrZXksIHZhbHVlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIHNjcmlwdCBvciBzdHlsZSBmaWxlc1xuICAgKi9cbiAgbG9hZChwYXRoczogc3RyaW5nIHwgTGF6eUxvYWRJdGVtIHwgQXJyYXk8c3RyaW5nIHwgTGF6eUxvYWRJdGVtPik6IFByb21pc2U8TGF6eVJlc3VsdFtdPiB7XG4gICAgaWYgKCFBcnJheS5pc0FycmF5KHBhdGhzKSkge1xuICAgICAgcGF0aHMgPSBbcGF0aHNdO1xuICAgIH1cblxuICAgIGNvbnN0IHByb21pc2VzOiBBcnJheTxQcm9taXNlPExhenlSZXN1bHQ+PiA9IFtdO1xuICAgIHBhdGhzXG4gICAgICAubWFwKHYgPT4gKHR5cGVvZiB2ICE9PSAnb2JqZWN0JyA/ICh7IHBhdGg6IHYgfSBhcyBMYXp5TG9hZEl0ZW0pIDogdikpXG4gICAgICAuZm9yRWFjaChpdGVtID0+IHtcbiAgICAgICAgaWYgKGl0ZW0ucGF0aC5lbmRzV2l0aCgnLmpzJykpIHtcbiAgICAgICAgICBwcm9taXNlcy5wdXNoKHRoaXMubG9hZFNjcmlwdChpdGVtLnBhdGgsIGl0ZW0ub3B0aW9ucykpO1xuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHByb21pc2VzLnB1c2godGhpcy5sb2FkU3R5bGUoaXRlbS5wYXRoLCBpdGVtLm9wdGlvbnMpKTtcbiAgICAgICAgfVxuICAgICAgfSk7XG5cbiAgICByZXR1cm4gUHJvbWlzZS5hbGwocHJvbWlzZXMpLnRoZW4ocmVzID0+IHtcbiAgICAgIHRoaXMuX25vdGlmeS5uZXh0KHJlcyk7XG4gICAgICByZXR1cm4gUHJvbWlzZS5yZXNvbHZlKHJlcyk7XG4gICAgfSk7XG4gIH1cblxuICAvKipcbiAgICogTG9hZCBhIHNjcmlwdCBmaWxlXG4gICAqL1xuICBsb2FkU2NyaXB0KHBhdGg6IHN0cmluZywgb3B0aW9ucz86IExhenlMb2FkT3B0aW9ucyk6IFByb21pc2U8TGF6eVJlc3VsdD47XG4gIGxvYWRTY3JpcHQoXG4gICAgcGF0aDogc3RyaW5nLFxuICAgIGlubmVyQ29udGVudD86IHN0cmluZyB8IExhenlMb2FkT3B0aW9ucyxcbiAgICBhdHRyaWJ1dGVzPzogeyBbcXVhbGlmaWVkTmFtZTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKTogUHJvbWlzZTxMYXp5UmVzdWx0PiB7XG4gICAgY29uc3Qgb3B0aW9uczogTGF6eUxvYWRPcHRpb25zID1cbiAgICAgIHR5cGVvZiBpbm5lckNvbnRlbnQgPT09ICdvYmplY3QnXG4gICAgICAgID8gaW5uZXJDb250ZW50XG4gICAgICAgIDoge1xuICAgICAgICAgICAgaW5uZXJDb250ZW50LFxuICAgICAgICAgICAgYXR0cmlidXRlc1xuICAgICAgICAgIH07XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKHRoaXMubGlzdFtwYXRoXSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXNvbHZlKHsgLi4udGhpcy5jYWNoZWRbcGF0aF0sIHN0YXR1czogJ2xvYWRpbmcnIH0pO1xuICAgICAgICByZXR1cm47XG4gICAgICB9XG5cbiAgICAgIHRoaXMubGlzdFtwYXRoXSA9IHRydWU7XG4gICAgICBjb25zdCBvblN1Y2Nlc3MgPSAoaXRlbTogTGF6eVJlc3VsdCk6IHZvaWQgPT4ge1xuICAgICAgICB0aGlzLmNhY2hlZFtwYXRoXSA9IGl0ZW07XG4gICAgICAgIHJlc29sdmUoaXRlbSk7XG4gICAgICAgIHRoaXMuX25vdGlmeS5uZXh0KFtpdGVtXSk7XG4gICAgICB9O1xuXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnc2NyaXB0JykgYXMgSFRNTFNjcmlwdEVsZW1lbnQ7XG4gICAgICBub2RlLnR5cGUgPSAndGV4dC9qYXZhc2NyaXB0JztcbiAgICAgIG5vZGUuc3JjID0gcGF0aDtcbiAgICAgIHRoaXMuYXR0YWNoQXR0cmlidXRlcyhub2RlLCBvcHRpb25zLmF0dHJpYnV0ZXMpO1xuICAgICAgaWYgKG9wdGlvbnMuaW5uZXJDb250ZW50KSB7XG4gICAgICAgIG5vZGUuaW5uZXJIVE1MID0gb3B0aW9ucy5pbm5lckNvbnRlbnQ7XG4gICAgICB9XG4gICAgICBub2RlLm9ubG9hZCA9ICgpID0+XG4gICAgICAgIG9uU3VjY2Vzcyh7XG4gICAgICAgICAgcGF0aCxcbiAgICAgICAgICBzdGF0dXM6ICdvaydcbiAgICAgICAgfSk7XG4gICAgICBub2RlLm9uZXJyb3IgPSBlcnJvciA9PlxuICAgICAgICBvblN1Y2Nlc3Moe1xuICAgICAgICAgIHBhdGgsXG4gICAgICAgICAgc3RhdHVzOiAnZXJyb3InLFxuICAgICAgICAgIGVycm9yXG4gICAgICAgIH0pO1xuICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChub2RlKTtcbiAgICB9KTtcbiAgfVxuXG4gIC8qKlxuICAgKiBMb2FkIGEgc3R5bGUgZmlsZVxuICAgKi9cbiAgbG9hZFN0eWxlKHBhdGg6IHN0cmluZywgb3B0aW9ucz86IExhenlMb2FkT3B0aW9ucyk6IFByb21pc2U8TGF6eVJlc3VsdD47XG4gIGxvYWRTdHlsZShcbiAgICBwYXRoOiBzdHJpbmcsXG4gICAgcmVsPzogc3RyaW5nIHwgTGF6eUxvYWRPcHRpb25zLFxuICAgIGlubmVyQ29udGVudD86IHN0cmluZyxcbiAgICBhdHRyaWJ1dGVzPzogeyBbcXVhbGlmaWVkTmFtZTogc3RyaW5nXTogc3RyaW5nIH1cbiAgKTogUHJvbWlzZTxMYXp5UmVzdWx0PiB7XG4gICAgY29uc3Qgb3B0aW9uczogTGF6eUxvYWRPcHRpb25zID1cbiAgICAgIHR5cGVvZiByZWwgPT09ICdvYmplY3QnXG4gICAgICAgID8gcmVsXG4gICAgICAgIDoge1xuICAgICAgICAgICAgcmVsLFxuICAgICAgICAgICAgaW5uZXJDb250ZW50LFxuICAgICAgICAgICAgYXR0cmlidXRlc1xuICAgICAgICAgIH07XG4gICAgcmV0dXJuIG5ldyBQcm9taXNlKHJlc29sdmUgPT4ge1xuICAgICAgaWYgKHRoaXMubGlzdFtwYXRoXSA9PT0gdHJ1ZSkge1xuICAgICAgICByZXNvbHZlKHRoaXMuY2FjaGVkW3BhdGhdKTtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuXG4gICAgICB0aGlzLmxpc3RbcGF0aF0gPSB0cnVlO1xuXG4gICAgICBjb25zdCBub2RlID0gdGhpcy5kb2MuY3JlYXRlRWxlbWVudCgnbGluaycpIGFzIEhUTUxMaW5rRWxlbWVudDtcbiAgICAgIG5vZGUucmVsID0gb3B0aW9ucy5yZWwgPz8gJ3N0eWxlc2hlZXQnO1xuICAgICAgbm9kZS50eXBlID0gJ3RleHQvY3NzJztcbiAgICAgIG5vZGUuaHJlZiA9IHBhdGg7XG4gICAgICB0aGlzLmF0dGFjaEF0dHJpYnV0ZXMobm9kZSwgb3B0aW9ucy5hdHRyaWJ1dGVzKTtcbiAgICAgIGlmIChvcHRpb25zLmlubmVyQ29udGVudCkge1xuICAgICAgICBub2RlLmlubmVySFRNTCA9IG9wdGlvbnMuaW5uZXJDb250ZW50O1xuICAgICAgfVxuICAgICAgdGhpcy5kb2MuZ2V0RWxlbWVudHNCeVRhZ05hbWUoJ2hlYWQnKVswXS5hcHBlbmRDaGlsZChub2RlKTtcbiAgICAgIGNvbnN0IGl0ZW06IExhenlSZXN1bHQgPSB7XG4gICAgICAgIHBhdGgsXG4gICAgICAgIHN0YXR1czogJ29rJ1xuICAgICAgfTtcbiAgICAgIHRoaXMuY2FjaGVkW3BhdGhdID0gaXRlbTtcbiAgICAgIHJlc29sdmUoaXRlbSk7XG4gICAgfSk7XG4gIH1cbn1cbiJdfQ==
|
package/esm2020/other/logger.mjs
CHANGED
@@ -1,33 +1,33 @@
|
|
1
|
-
const record = {};
|
2
|
-
export const PREFIX = '[@YELON]:';
|
3
|
-
function notRecorded(...args) {
|
4
|
-
const asRecord = args.reduce((acc, c) => acc + c.toString(), '');
|
5
|
-
if (record[asRecord]) {
|
6
|
-
return false;
|
7
|
-
}
|
8
|
-
else {
|
9
|
-
record[asRecord] = true;
|
10
|
-
return true;
|
11
|
-
}
|
12
|
-
}
|
13
|
-
function consoleCommonBehavior(consoleFunc, ...args) {
|
14
|
-
if ((typeof ngDevMode === 'undefined' || ngDevMode) && notRecorded(...args)) {
|
15
|
-
consoleFunc(...args);
|
16
|
-
}
|
17
|
-
}
|
18
|
-
// Warning should only be printed in dev mode and only once.
|
19
|
-
export const warn = (...args) => consoleCommonBehavior((...arg) => console.warn(PREFIX, ...arg), ...args);
|
20
|
-
export const warnDeprecation = (...args) => {
|
21
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
22
|
-
return () => { };
|
23
|
-
}
|
24
|
-
const stack = new Error().stack;
|
25
|
-
return consoleCommonBehavior((...arg) => console.warn(PREFIX, 'deprecated:', ...arg, stack), ...args);
|
26
|
-
};
|
27
|
-
// Log should only be printed in dev mode.
|
28
|
-
export const log = (...args) => {
|
29
|
-
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
30
|
-
console.log(PREFIX, ...args);
|
31
|
-
}
|
32
|
-
};
|
1
|
+
const record = {};
|
2
|
+
export const PREFIX = '[@YELON]:';
|
3
|
+
function notRecorded(...args) {
|
4
|
+
const asRecord = args.reduce((acc, c) => acc + c.toString(), '');
|
5
|
+
if (record[asRecord]) {
|
6
|
+
return false;
|
7
|
+
}
|
8
|
+
else {
|
9
|
+
record[asRecord] = true;
|
10
|
+
return true;
|
11
|
+
}
|
12
|
+
}
|
13
|
+
function consoleCommonBehavior(consoleFunc, ...args) {
|
14
|
+
if ((typeof ngDevMode === 'undefined' || ngDevMode) && notRecorded(...args)) {
|
15
|
+
consoleFunc(...args);
|
16
|
+
}
|
17
|
+
}
|
18
|
+
// Warning should only be printed in dev mode and only once.
|
19
|
+
export const warn = (...args) => consoleCommonBehavior((...arg) => console.warn(PREFIX, ...arg), ...args);
|
20
|
+
export const warnDeprecation = (...args) => {
|
21
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
22
|
+
return () => { };
|
23
|
+
}
|
24
|
+
const stack = new Error().stack;
|
25
|
+
return consoleCommonBehavior((...arg) => console.warn(PREFIX, 'deprecated:', ...arg, stack), ...args);
|
26
|
+
};
|
27
|
+
// Log should only be printed in dev mode.
|
28
|
+
export const log = (...args) => {
|
29
|
+
if (typeof ngDevMode === 'undefined' || ngDevMode) {
|
30
|
+
console.log(PREFIX, ...args);
|
31
|
+
}
|
32
|
+
};
|
33
33
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9nZ2VyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9vdGhlci9sb2dnZXIudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBSUEsTUFBTSxNQUFNLEdBQTRCLEVBQUUsQ0FBQztBQUUzQyxNQUFNLENBQUMsTUFBTSxNQUFNLEdBQUcsV0FBVyxDQUFDO0FBRWxDLFNBQVMsV0FBVyxDQUFDLEdBQUcsSUFBaUI7SUFDdkMsTUFBTSxRQUFRLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxDQUFDLEdBQUcsRUFBRSxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFBRSxDQUFDLENBQUM7SUFFakUsSUFBSSxNQUFNLENBQUMsUUFBUSxDQUFDLEVBQUU7UUFDcEIsT0FBTyxLQUFLLENBQUM7S0FDZDtTQUFNO1FBQ0wsTUFBTSxDQUFDLFFBQVEsQ0FBQyxHQUFHLElBQUksQ0FBQztRQUN4QixPQUFPLElBQUksQ0FBQztLQUNiO0FBQ0gsQ0FBQztBQUVELFNBQVMscUJBQXFCLENBQUMsV0FBeUMsRUFBRSxHQUFHLElBQWlCO0lBQzVGLElBQUksQ0FBQyxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxDQUFDLElBQUksV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLEVBQUU7UUFDM0UsV0FBVyxDQUFDLEdBQUcsSUFBSSxDQUFDLENBQUM7S0FDdEI7QUFDSCxDQUFDO0FBRUQsNERBQTREO0FBQzVELE1BQU0sQ0FBQyxNQUFNLElBQUksR0FBRyxDQUFDLEdBQUcsSUFBaUIsRUFBUSxFQUFFLENBQ2pELHFCQUFxQixDQUFDLENBQUMsR0FBRyxHQUFnQixFQUFFLEVBQUUsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sRUFBRSxHQUFHLEdBQUcsQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFFeEYsTUFBTSxDQUFDLE1BQU0sZUFBZSxHQUFHLENBQUMsR0FBRyxJQUFpQixFQUFhLEVBQUU7SUFDakUsSUFBSSxPQUFPLFNBQVMsS0FBSyxXQUFXLElBQUksU0FBUyxFQUFFO1FBQ2pELE9BQU8sR0FBRyxFQUFFLEdBQUUsQ0FBQyxDQUFDO0tBQ2pCO0lBQ0QsTUFBTSxLQUFLLEdBQUcsSUFBSSxLQUFLLEVBQUUsQ0FBQyxLQUFLLENBQUM7SUFDaEMsT0FBTyxxQkFBcUIsQ0FBQyxDQUFDLEdBQUcsR0FBZ0IsRUFBRSxFQUFFLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLEVBQUUsYUFBYSxFQUFFLEdBQUcsR0FBRyxFQUFFLEtBQUssQ0FBQyxFQUFFLEdBQUcsSUFBSSxDQUFDLENBQUM7QUFDckgsQ0FBQyxDQUFDO0FBRUYsMENBQTBDO0FBQzFDLE1BQU0sQ0FBQyxNQUFNLEdBQUcsR0FBRyxDQUFDLEdBQUcsSUFBaUIsRUFBUSxFQUFFO0lBQ2hELElBQUksT0FBTyxTQUFTLEtBQUssV0FBVyxJQUFJLFNBQVMsRUFBRTtRQUNqRCxPQUFPLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxHQUFHLElBQUksQ0FBQyxDQUFDO0tBQzlCO0FBQ0gsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHR5cGUgeyBOelNhZmVBbnkgfSBmcm9tICduZy16b3Jyby1hbnRkL2NvcmUvdHlwZXMnO1xuXG5kZWNsYXJlIGNvbnN0IG5nRGV2TW9kZTogYm9vbGVhbjtcblxuY29uc3QgcmVjb3JkOiBSZWNvcmQ8c3RyaW5nLCBib29sZWFuPiA9IHt9O1xuXG5leHBvcnQgY29uc3QgUFJFRklYID0gJ1tAWUVMT05dOic7XG5cbmZ1bmN0aW9uIG5vdFJlY29yZGVkKC4uLmFyZ3M6IE56U2FmZUFueVtdKTogYm9vbGVhbiB7XG4gIGNvbnN0IGFzUmVjb3JkID0gYXJncy5yZWR1Y2UoKGFjYywgYykgPT4gYWNjICsgYy50b1N0cmluZygpLCAnJyk7XG5cbiAgaWYgKHJlY29yZFthc1JlY29yZF0pIHtcbiAgICByZXR1cm4gZmFsc2U7XG4gIH0gZWxzZSB7XG4gICAgcmVjb3JkW2FzUmVjb3JkXSA9IHRydWU7XG4gICAgcmV0dXJuIHRydWU7XG4gIH1cbn1cblxuZnVuY3Rpb24gY29uc29sZUNvbW1vbkJlaGF2aW9yKGNvbnNvbGVGdW5jOiAoLi4uYXJnczogTnpTYWZlQW55KSA9PiB2b2lkLCAuLi5hcmdzOiBOelNhZmVBbnlbXSk6IHZvaWQge1xuICBpZiAoKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkgJiYgbm90UmVjb3JkZWQoLi4uYXJncykpIHtcbiAgICBjb25zb2xlRnVuYyguLi5hcmdzKTtcbiAgfVxufVxuXG4vLyBXYXJuaW5nIHNob3VsZCBvbmx5IGJlIHByaW50ZWQgaW4gZGV2IG1vZGUgYW5kIG9ubHkgb25jZS5cbmV4cG9ydCBjb25zdCB3YXJuID0gKC4uLmFyZ3M6IE56U2FmZUFueVtdKTogdm9pZCA9PlxuICBjb25zb2xlQ29tbW9uQmVoYXZpb3IoKC4uLmFyZzogTnpTYWZlQW55W10pID0+IGNvbnNvbGUud2FybihQUkVGSVgsIC4uLmFyZyksIC4uLmFyZ3MpO1xuXG5leHBvcnQgY29uc3Qgd2FybkRlcHJlY2F0aW9uID0gKC4uLmFyZ3M6IE56U2FmZUFueVtdKTogTnpTYWZlQW55ID0+IHtcbiAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgIHJldHVybiAoKSA9PiB7fTtcbiAgfVxuICBjb25zdCBzdGFjayA9IG5ldyBFcnJvcigpLnN0YWNrO1xuICByZXR1cm4gY29uc29sZUNvbW1vbkJlaGF2aW9yKCguLi5hcmc6IE56U2FmZUFueVtdKSA9PiBjb25zb2xlLndhcm4oUFJFRklYLCAnZGVwcmVjYXRlZDonLCAuLi5hcmcsIHN0YWNrKSwgLi4uYXJncyk7XG59O1xuXG4vLyBMb2cgc2hvdWxkIG9ubHkgYmUgcHJpbnRlZCBpbiBkZXYgbW9kZS5cbmV4cG9ydCBjb25zdCBsb2cgPSAoLi4uYXJnczogTnpTYWZlQW55W10pOiB2b2lkID0+IHtcbiAgaWYgKHR5cGVvZiBuZ0Rldk1vZGUgPT09ICd1bmRlZmluZWQnIHx8IG5nRGV2TW9kZSkge1xuICAgIGNvbnNvbGUubG9nKFBSRUZJWCwgLi4uYXJncyk7XG4gIH1cbn07XG4iXX0=
|
package/esm2020/other/other.mjs
CHANGED
@@ -1,5 +1,5 @@
|
|
1
|
-
/**
|
2
|
-
* Generated bundle index. Do not edit.
|
3
|
-
*/
|
4
|
-
export * from './index';
|
1
|
+
/**
|
2
|
+
* Generated bundle index. Do not edit.
|
3
|
+
*/
|
4
|
+
export * from './index';
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib3RoZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL290aGVyL290aGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBOztHQUVHO0FBRUgsY0FBYyxTQUFTLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vaW5kZXgnO1xuIl19
|