@yelon/util 17.3.1 → 18.0.0
Sign up to get free protection for your applications and to get access to all the features.
- package/LICENSE +21 -21
- package/README.md +27 -27
- 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 +64 -64
- 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 +34 -34
- package/browser/style.d.ts +21 -21
- package/config/abc/cell.type.d.ts +118 -118
- 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 -18
- 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/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 +51 -51
- package/config/bis/bis.type.d.ts +11 -11
- package/config/cache/cache.type.d.ts +66 -66
- package/config/chart/chart.type.d.ts +33 -33
- package/config/config.service.d.ts +13 -13
- package/config/config.types.d.ts +51 -52
- package/config/index.d.ts +14 -14
- package/config/mock/mock.type.d.ts +14 -14
- 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 +15 -15
- package/config/theme/i18n.type.d.ts +14 -14
- package/config/theme/index.d.ts +3 -3
- package/config/theme/pipe.type.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 +39 -39
- package/decorator/convert.d.ts +32 -32
- package/decorator/index.d.ts +2 -2
- package/decorator/zone-outside.d.ts +35 -35
- package/esm2022/array/array-type.service.mjs +1 -1
- package/esm2022/array/array.mjs +4 -4
- package/esm2022/array/array.service.mjs +277 -277
- package/esm2022/array/index.mjs +2 -2
- package/esm2022/browser/browser.mjs +4 -4
- package/esm2022/browser/cookie.service.mjs +99 -99
- package/esm2022/browser/copy.mjs +27 -27
- package/esm2022/browser/index.mjs +5 -5
- package/esm2022/browser/is-empty.mjs +18 -18
- package/esm2022/browser/scroll.service.mjs +84 -84
- package/esm2022/browser/style.mjs +37 -37
- package/esm2022/config/abc/cell.type.mjs +1 -1
- package/esm2022/config/abc/date-picker.type.mjs +1 -1
- package/esm2022/config/abc/error-collect.type.mjs +1 -1
- package/esm2022/config/abc/exception.type.mjs +1 -1
- package/esm2022/config/abc/image.type.mjs +1 -1
- package/esm2022/config/abc/index.mjs +18 -19
- package/esm2022/config/abc/loading.type.mjs +1 -1
- package/esm2022/config/abc/lodop.type.mjs +1 -1
- package/esm2022/config/abc/media.type.mjs +1 -1
- package/esm2022/config/abc/onboarding.type.mjs +1 -1
- package/esm2022/config/abc/page-header.type.mjs +1 -1
- package/esm2022/config/abc/pdf.type.mjs +1 -1
- package/esm2022/config/abc/se.type.mjs +1 -1
- package/esm2022/config/abc/sg.type.mjs +1 -1
- package/esm2022/config/abc/st.type.mjs +1 -1
- package/esm2022/config/abc/sv.type.mjs +2 -2
- package/esm2022/config/abc/xlsx.type.mjs +1 -1
- package/esm2022/config/abc/zip.type.mjs +1 -1
- package/esm2022/config/acl/acl.type.mjs +1 -1
- package/esm2022/config/auth/auth.type.mjs +1 -1
- package/esm2022/config/bis/bis.type.mjs +1 -1
- package/esm2022/config/cache/cache.type.mjs +1 -1
- package/esm2022/config/chart/chart.type.mjs +1 -1
- package/esm2022/config/config.mjs +4 -4
- package/esm2022/config/config.service.mjs +37 -37
- package/esm2022/config/config.types.mjs +12 -12
- package/esm2022/config/index.mjs +14 -14
- package/esm2022/config/mock/mock.type.mjs +1 -1
- package/esm2022/config/sf/sf.type.mjs +1 -1
- package/esm2022/config/socket/socket.type.mjs +1 -1
- package/esm2022/config/theme/http.type.mjs +1 -1
- package/esm2022/config/theme/i18n.type.mjs +1 -1
- package/esm2022/config/theme/index.mjs +3 -3
- package/esm2022/config/theme/pipe.type.mjs +1 -1
- package/esm2022/config/theme/responsive.type.mjs +1 -1
- package/esm2022/config/util/array.type.mjs +1 -1
- package/esm2022/config/util/currency.type.mjs +1 -1
- package/esm2022/date-time/date-time.mjs +4 -4
- package/esm2022/date-time/index.mjs +2 -2
- package/esm2022/date-time/picker.mjs +115 -115
- package/esm2022/date-time/time.mjs +100 -100
- package/esm2022/decorator/convert.mjs +65 -65
- package/esm2022/decorator/decorator.mjs +4 -4
- package/esm2022/decorator/index.mjs +2 -2
- package/esm2022/decorator/zone-outside.mjs +56 -56
- package/esm2022/form/form.mjs +4 -4
- package/esm2022/form/index.mjs +2 -2
- package/esm2022/form/match-control.mjs +29 -29
- package/esm2022/form/validators.mjs +80 -80
- package/esm2022/format/currency.service.mjs +232 -232
- package/esm2022/format/currency.types.mjs +7 -7
- package/esm2022/format/format.mjs +4 -4
- package/esm2022/format/index.mjs +4 -4
- package/esm2022/format/string.mjs +84 -84
- package/esm2022/format/validate.mjs +93 -93
- package/esm2022/index.mjs +13 -13
- package/esm2022/math/in-range.mjs +24 -24
- package/esm2022/math/index.mjs +2 -2
- package/esm2022/math/math.mjs +4 -4
- package/esm2022/math/round.mjs +52 -52
- package/esm2022/mcache/index.mjs +1 -1
- package/esm2022/mcache/localStorageUtils.mjs +58 -58
- package/esm2022/mcache/mcache.mjs +4 -4
- package/esm2022/mtypes/authority.type.mjs +1 -1
- package/esm2022/mtypes/header-menu.type.mjs +1 -1
- package/esm2022/mtypes/index.mjs +9 -9
- package/esm2022/mtypes/menu.type.mjs +1 -1
- package/esm2022/mtypes/mtypes.mjs +4 -4
- package/esm2022/mtypes/nav.types.mjs +8 -8
- package/esm2022/mtypes/page.mjs +41 -41
- package/esm2022/mtypes/project-info.types.mjs +1 -1
- package/esm2022/mtypes/response.mjs +1 -1
- package/esm2022/mtypes/role.type.mjs +1 -1
- package/esm2022/mtypes/user.types.mjs +1 -1
- package/esm2022/other/assert.mjs +66 -66
- package/esm2022/other/deep.mjs +77 -77
- package/esm2022/other/favicon.mjs +28 -28
- package/esm2022/other/index.mjs +7 -7
- package/esm2022/other/lazy.service.mjs +128 -128
- package/esm2022/other/logger.mjs +32 -32
- package/esm2022/other/other.mjs +4 -4
- package/esm2022/other/path-to-regexp.service.mjs +238 -238
- package/esm2022/other/resize.mjs +3 -3
- package/esm2022/pipes/currency/cny.pipe.mjs +22 -22
- package/esm2022/pipes/currency/index.mjs +4 -4
- package/esm2022/pipes/currency/mega.pipe.mjs +24 -24
- package/esm2022/pipes/currency/module.mjs +18 -18
- package/esm2022/pipes/currency/pipe-currency.mjs +4 -4
- package/esm2022/pipes/currency/price.pipe.mjs +26 -26
- package/esm2022/pipes/filter/filter.pipe.mjs +19 -19
- package/esm2022/pipes/filter/index.mjs +2 -2
- package/esm2022/pipes/filter/module.mjs +16 -16
- package/esm2022/pipes/filter/pipe-filter.mjs +4 -4
- package/esm2022/pipes/format/index.mjs +2 -2
- package/esm2022/pipes/format/mask.pipe.mjs +33 -33
- package/esm2022/pipes/format/module.mjs +16 -16
- package/esm2022/pipes/format/pipe-format.mjs +4 -4
- package/esm2022/pipes/index.mjs +3 -3
- package/esm2022/pipes/pipes.mjs +4 -4
- package/esm2022/token/index.mjs +2 -2
- package/esm2022/token/page-visibility.mjs +14 -14
- package/esm2022/token/token.mjs +4 -4
- package/esm2022/token/window.mjs +16 -16
- package/esm2022/yelon-util.mjs +4 -4
- package/fesm2022/array.mjs +285 -285
- package/fesm2022/browser.mjs +273 -273
- package/fesm2022/config.mjs +58 -58
- package/fesm2022/config.mjs.map +1 -1
- package/fesm2022/date-time.mjs +223 -223
- package/fesm2022/decorator.mjs +129 -129
- package/fesm2022/form.mjs +118 -118
- package/fesm2022/format.mjs +426 -426
- package/fesm2022/math.mjs +85 -85
- package/fesm2022/mcache.mjs +65 -65
- package/fesm2022/mtypes.mjs +57 -57
- package/fesm2022/other.mjs +583 -583
- package/fesm2022/pipe-currency.mjs +90 -90
- package/fesm2022/pipe-filter.mjs +41 -41
- package/fesm2022/pipe-format.mjs +55 -55
- package/fesm2022/pipes.mjs +8 -8
- package/fesm2022/token.mjs +37 -37
- package/fesm2022/yelon-util.mjs +18 -18
- 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 +38 -38
- package/format/currency.types.d.ts +82 -82
- 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 +13 -13
- package/math/in-range.d.ts +14 -14
- package/math/index.d.ts +2 -2
- package/math/round.d.ts +33 -33
- package/mcache/index.d.ts +1 -1
- package/mcache/localStorageUtils.d.ts +18 -18
- package/mtypes/authority.type.d.ts +3 -3
- package/mtypes/header-menu.type.d.ts +13 -13
- package/mtypes/index.d.ts +9 -9
- package/mtypes/menu.type.d.ts +41 -41
- package/mtypes/nav.types.d.ts +29 -29
- package/mtypes/page.d.ts +47 -47
- package/mtypes/project-info.types.d.ts +22 -22
- package/mtypes/response.d.ts +7 -7
- package/mtypes/role.type.d.ts +10 -10
- package/mtypes/user.types.d.ts +22 -22
- 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 +47 -47
- package/other/logger.d.ts +5 -5
- package/other/path-to-regexp.service.d.ts +27 -27
- package/other/resize.d.ts +1 -1
- package/package.json +135 -135
- package/pipes/currency/cny.pipe.d.ts +14 -14
- package/pipes/currency/index.d.ts +4 -4
- package/pipes/currency/mega.pipe.d.ts +15 -15
- package/pipes/currency/module.d.ts +9 -9
- package/pipes/currency/price.pipe.d.ts +18 -18
- 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
- package/config/abc/qr.type.d.ts +0 -25
- package/esm2022/config/abc/qr.type.mjs +0 -2
@@ -1,239 +1,239 @@
|
|
1
|
-
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
2
|
-
import { Injectable } from '@angular/core';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
export class PathToRegexpService {
|
5
|
-
constructor() {
|
6
|
-
this.DEFAULT_DELIMITER = '/';
|
7
|
-
this.PATH_REGEXP = new RegExp(['(\\\\.)', '(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?'].join('|'), 'g');
|
8
|
-
}
|
9
|
-
parse(str, options) {
|
10
|
-
const tokens = [];
|
11
|
-
let key = 0;
|
12
|
-
let index = 0;
|
13
|
-
let path = '';
|
14
|
-
const defaultDelimiter = (options && options.delimiter) || this.DEFAULT_DELIMITER;
|
15
|
-
const whitelist = (options && options.whitelist) || undefined;
|
16
|
-
let pathEscaped = false;
|
17
|
-
let res;
|
18
|
-
while ((res = this.PATH_REGEXP.exec(str)) !== null) {
|
19
|
-
const m = res[0];
|
20
|
-
const escaped = res[1];
|
21
|
-
const offset = res.index;
|
22
|
-
path += str.slice(index, offset);
|
23
|
-
index = offset + m.length;
|
24
|
-
// Ignore already escaped sequences.
|
25
|
-
if (escaped) {
|
26
|
-
path += escaped[1];
|
27
|
-
pathEscaped = true;
|
28
|
-
continue;
|
29
|
-
}
|
30
|
-
let prev = '';
|
31
|
-
const name = res[2];
|
32
|
-
const capture = res[3];
|
33
|
-
const group = res[4];
|
34
|
-
const modifier = res[5];
|
35
|
-
if (!pathEscaped && path.length) {
|
36
|
-
const k = path.length - 1;
|
37
|
-
const c = path[k];
|
38
|
-
const matches = whitelist ? whitelist.indexOf(c) > -1 : true;
|
39
|
-
if (matches) {
|
40
|
-
prev = c;
|
41
|
-
path = path.slice(0, k);
|
42
|
-
}
|
43
|
-
}
|
44
|
-
// Push the current path onto the tokens.
|
45
|
-
if (path) {
|
46
|
-
tokens.push(path);
|
47
|
-
path = '';
|
48
|
-
pathEscaped = false;
|
49
|
-
}
|
50
|
-
const repeat = modifier === '+' || modifier === '*';
|
51
|
-
const optional = modifier === '?' || modifier === '*';
|
52
|
-
const pattern = capture || group;
|
53
|
-
const delimiter = prev || defaultDelimiter;
|
54
|
-
tokens.push({
|
55
|
-
name: name || key++,
|
56
|
-
prefix: prev,
|
57
|
-
delimiter: delimiter,
|
58
|
-
optional: optional,
|
59
|
-
repeat: repeat,
|
60
|
-
pattern: pattern
|
61
|
-
? this.escapeGroup(pattern)
|
62
|
-
: `[^${this.escapeString(delimiter === defaultDelimiter ? delimiter : delimiter + defaultDelimiter)}]+?`
|
63
|
-
});
|
64
|
-
}
|
65
|
-
// Push NzSafeAny remaining characters.
|
66
|
-
if (path || index < str.length) {
|
67
|
-
tokens.push(path + str.substr(index));
|
68
|
-
}
|
69
|
-
return tokens;
|
70
|
-
}
|
71
|
-
compile(str, options) {
|
72
|
-
return this.tokensToFunction(this.parse(str, options), options);
|
73
|
-
}
|
74
|
-
tokensToFunction(tokens, options) {
|
75
|
-
const matches = new Array(tokens.length);
|
76
|
-
for (let i = 0; i < tokens.length; i++) {
|
77
|
-
if (typeof tokens[i] === 'object') {
|
78
|
-
matches[i] = new RegExp(`^(?:${tokens[i].pattern})$`, this.flags(options));
|
79
|
-
}
|
80
|
-
}
|
81
|
-
return function (data, options) {
|
82
|
-
let path = '';
|
83
|
-
const encode = (options && options.encode) || encodeURIComponent;
|
84
|
-
const validate = options ? options.validate !== false : true;
|
85
|
-
for (let i = 0; i < tokens.length; i++) {
|
86
|
-
const token = tokens[i];
|
87
|
-
if (typeof token === 'string') {
|
88
|
-
path += token;
|
89
|
-
continue;
|
90
|
-
}
|
91
|
-
const value = data ? data[token.name] : undefined;
|
92
|
-
let segment;
|
93
|
-
if (Array.isArray(value)) {
|
94
|
-
if (!token.repeat) {
|
95
|
-
throw new TypeError(`Expected "${token.name}" to not repeat, but got array`);
|
96
|
-
}
|
97
|
-
if (value.length === 0) {
|
98
|
-
if (token.optional) {
|
99
|
-
continue;
|
100
|
-
}
|
101
|
-
throw new TypeError(`Expected "${token.name}" to not be empty`);
|
102
|
-
}
|
103
|
-
for (let j = 0; j < value.length; j++) {
|
104
|
-
segment = encode(value[j], token);
|
105
|
-
if (validate && !matches[i].test(segment)) {
|
106
|
-
throw new TypeError(`Expected all "${token.name}" to match "${token.pattern}"`);
|
107
|
-
}
|
108
|
-
path += (j === 0 ? token.prefix : token.delimiter) + segment;
|
109
|
-
}
|
110
|
-
continue;
|
111
|
-
}
|
112
|
-
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
113
|
-
segment = encode(String(value), token);
|
114
|
-
if (validate && !matches[i].test(segment)) {
|
115
|
-
throw new TypeError(`Expected "${token.name}" to match "${token.pattern}", but got "${segment}"`);
|
116
|
-
}
|
117
|
-
path += token.prefix + segment;
|
118
|
-
continue;
|
119
|
-
}
|
120
|
-
if (token.optional) {
|
121
|
-
continue;
|
122
|
-
}
|
123
|
-
throw new TypeError(`Expected "${token.name}" to be ${token.repeat ? 'an array' : 'a string'}`);
|
124
|
-
}
|
125
|
-
return path;
|
126
|
-
};
|
127
|
-
}
|
128
|
-
escapeString(str) {
|
129
|
-
return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, '\\$1');
|
130
|
-
}
|
131
|
-
escapeGroup(group) {
|
132
|
-
return group.replace(/([=!:$/()])/g, '\\$1');
|
133
|
-
}
|
134
|
-
flags(options) {
|
135
|
-
return options && options.sensitive ? '' : 'i';
|
136
|
-
}
|
137
|
-
regexpToRegexp(path, keys) {
|
138
|
-
if (!keys) {
|
139
|
-
return path;
|
140
|
-
}
|
141
|
-
const groups = path.source.match(/\((?!\?)/g);
|
142
|
-
if (groups) {
|
143
|
-
for (let i = 0; i < groups.length; i++) {
|
144
|
-
keys.push({
|
145
|
-
name: i,
|
146
|
-
prefix: null,
|
147
|
-
delimiter: null,
|
148
|
-
optional: false,
|
149
|
-
repeat: false,
|
150
|
-
pattern: null
|
151
|
-
});
|
152
|
-
}
|
153
|
-
}
|
154
|
-
return path;
|
155
|
-
}
|
156
|
-
arrayToRegexp(path, keys, options) {
|
157
|
-
const parts = [];
|
158
|
-
for (let i = 0; i < path.length; i++) {
|
159
|
-
parts.push(this.pathToRegexp(path[i], keys, options).source);
|
160
|
-
}
|
161
|
-
return new RegExp(`(?:${parts.join('|')})`, this.flags(options));
|
162
|
-
}
|
163
|
-
stringToRegexp(path, keys, options) {
|
164
|
-
return this.tokensToRegExp(this.parse(path, options), keys, options);
|
165
|
-
}
|
166
|
-
tokensToRegExp(tokens, keys, options) {
|
167
|
-
options = options || {};
|
168
|
-
const strict = options.strict;
|
169
|
-
const start = options.start !== false;
|
170
|
-
const end = options.end !== false;
|
171
|
-
const delimiter = options.delimiter || this.DEFAULT_DELIMITER;
|
172
|
-
const endsWith = []
|
173
|
-
.concat(options.endsWith || [])
|
174
|
-
.map(this.escapeString)
|
175
|
-
.concat('$')
|
176
|
-
.join('|');
|
177
|
-
let route = start ? '^' : '';
|
178
|
-
for (let i = 0; i < tokens.length; i++) {
|
179
|
-
const token = tokens[i];
|
180
|
-
if (typeof token === 'string') {
|
181
|
-
route += this.escapeString(token);
|
182
|
-
}
|
183
|
-
else {
|
184
|
-
const capture = token.repeat
|
185
|
-
? `(?:${token.pattern})(?:${this.escapeString(token.delimiter)}(?:${token.pattern}))*`
|
186
|
-
: token.pattern;
|
187
|
-
if (keys) {
|
188
|
-
keys.push(token);
|
189
|
-
}
|
190
|
-
if (token.optional) {
|
191
|
-
if (!token.prefix) {
|
192
|
-
route += `(${capture})?`;
|
193
|
-
}
|
194
|
-
else {
|
195
|
-
route += `(?:${this.escapeString(token.prefix)}(${capture}))?`;
|
196
|
-
}
|
197
|
-
}
|
198
|
-
else {
|
199
|
-
route += `${this.escapeString(token.prefix)}(${capture})`;
|
200
|
-
}
|
201
|
-
}
|
202
|
-
}
|
203
|
-
if (end) {
|
204
|
-
if (!strict) {
|
205
|
-
route += `(?:${this.escapeString(delimiter)})?`;
|
206
|
-
}
|
207
|
-
route += endsWith === '$' ? '$' : `(?=${endsWith})`;
|
208
|
-
}
|
209
|
-
else {
|
210
|
-
const endToken = tokens[tokens.length - 1];
|
211
|
-
const isEndDelimited = typeof endToken === 'string' ? endToken[endToken.length - 1] === delimiter : endToken === undefined;
|
212
|
-
if (!strict) {
|
213
|
-
route += `(?:${this.escapeString(delimiter)}(?=${endsWith}))?`;
|
214
|
-
}
|
215
|
-
if (!isEndDelimited) {
|
216
|
-
route += `(?=${this.escapeString(delimiter)}|${endsWith})`;
|
217
|
-
}
|
218
|
-
}
|
219
|
-
return new RegExp(route, this.flags(options));
|
220
|
-
}
|
221
|
-
pathToRegexp(path, keys, options) {
|
222
|
-
if (path instanceof RegExp) {
|
223
|
-
return this.regexpToRegexp(path, keys);
|
224
|
-
}
|
225
|
-
if (Array.isArray(path)) {
|
226
|
-
return this.arrayToRegexp(/** @type {!Array} */ path, keys, options);
|
227
|
-
}
|
228
|
-
return this.stringToRegexp(/** @type {string} */ path, keys, options);
|
229
|
-
}
|
230
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
231
|
-
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "
|
232
|
-
}
|
233
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
234
|
-
type: Injectable,
|
235
|
-
args: [{
|
236
|
-
providedIn: 'root'
|
237
|
-
}]
|
238
|
-
}], ctorParameters: () => [] });
|
1
|
+
/* eslint-disable @typescript-eslint/explicit-function-return-type */
|
2
|
+
import { Injectable } from '@angular/core';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
export class PathToRegexpService {
|
5
|
+
constructor() {
|
6
|
+
this.DEFAULT_DELIMITER = '/';
|
7
|
+
this.PATH_REGEXP = new RegExp(['(\\\\.)', '(?:\\:(\\w+)(?:\\(((?:\\\\.|[^\\\\()])+)\\))?|\\(((?:\\\\.|[^\\\\()])+)\\))([+*?])?'].join('|'), 'g');
|
8
|
+
}
|
9
|
+
parse(str, options) {
|
10
|
+
const tokens = [];
|
11
|
+
let key = 0;
|
12
|
+
let index = 0;
|
13
|
+
let path = '';
|
14
|
+
const defaultDelimiter = (options && options.delimiter) || this.DEFAULT_DELIMITER;
|
15
|
+
const whitelist = (options && options.whitelist) || undefined;
|
16
|
+
let pathEscaped = false;
|
17
|
+
let res;
|
18
|
+
while ((res = this.PATH_REGEXP.exec(str)) !== null) {
|
19
|
+
const m = res[0];
|
20
|
+
const escaped = res[1];
|
21
|
+
const offset = res.index;
|
22
|
+
path += str.slice(index, offset);
|
23
|
+
index = offset + m.length;
|
24
|
+
// Ignore already escaped sequences.
|
25
|
+
if (escaped) {
|
26
|
+
path += escaped[1];
|
27
|
+
pathEscaped = true;
|
28
|
+
continue;
|
29
|
+
}
|
30
|
+
let prev = '';
|
31
|
+
const name = res[2];
|
32
|
+
const capture = res[3];
|
33
|
+
const group = res[4];
|
34
|
+
const modifier = res[5];
|
35
|
+
if (!pathEscaped && path.length) {
|
36
|
+
const k = path.length - 1;
|
37
|
+
const c = path[k];
|
38
|
+
const matches = whitelist ? whitelist.indexOf(c) > -1 : true;
|
39
|
+
if (matches) {
|
40
|
+
prev = c;
|
41
|
+
path = path.slice(0, k);
|
42
|
+
}
|
43
|
+
}
|
44
|
+
// Push the current path onto the tokens.
|
45
|
+
if (path) {
|
46
|
+
tokens.push(path);
|
47
|
+
path = '';
|
48
|
+
pathEscaped = false;
|
49
|
+
}
|
50
|
+
const repeat = modifier === '+' || modifier === '*';
|
51
|
+
const optional = modifier === '?' || modifier === '*';
|
52
|
+
const pattern = capture || group;
|
53
|
+
const delimiter = prev || defaultDelimiter;
|
54
|
+
tokens.push({
|
55
|
+
name: name || key++,
|
56
|
+
prefix: prev,
|
57
|
+
delimiter: delimiter,
|
58
|
+
optional: optional,
|
59
|
+
repeat: repeat,
|
60
|
+
pattern: pattern
|
61
|
+
? this.escapeGroup(pattern)
|
62
|
+
: `[^${this.escapeString(delimiter === defaultDelimiter ? delimiter : delimiter + defaultDelimiter)}]+?`
|
63
|
+
});
|
64
|
+
}
|
65
|
+
// Push NzSafeAny remaining characters.
|
66
|
+
if (path || index < str.length) {
|
67
|
+
tokens.push(path + str.substr(index));
|
68
|
+
}
|
69
|
+
return tokens;
|
70
|
+
}
|
71
|
+
compile(str, options) {
|
72
|
+
return this.tokensToFunction(this.parse(str, options), options);
|
73
|
+
}
|
74
|
+
tokensToFunction(tokens, options) {
|
75
|
+
const matches = new Array(tokens.length);
|
76
|
+
for (let i = 0; i < tokens.length; i++) {
|
77
|
+
if (typeof tokens[i] === 'object') {
|
78
|
+
matches[i] = new RegExp(`^(?:${tokens[i].pattern})$`, this.flags(options));
|
79
|
+
}
|
80
|
+
}
|
81
|
+
return function (data, options) {
|
82
|
+
let path = '';
|
83
|
+
const encode = (options && options.encode) || encodeURIComponent;
|
84
|
+
const validate = options ? options.validate !== false : true;
|
85
|
+
for (let i = 0; i < tokens.length; i++) {
|
86
|
+
const token = tokens[i];
|
87
|
+
if (typeof token === 'string') {
|
88
|
+
path += token;
|
89
|
+
continue;
|
90
|
+
}
|
91
|
+
const value = data ? data[token.name] : undefined;
|
92
|
+
let segment;
|
93
|
+
if (Array.isArray(value)) {
|
94
|
+
if (!token.repeat) {
|
95
|
+
throw new TypeError(`Expected "${token.name}" to not repeat, but got array`);
|
96
|
+
}
|
97
|
+
if (value.length === 0) {
|
98
|
+
if (token.optional) {
|
99
|
+
continue;
|
100
|
+
}
|
101
|
+
throw new TypeError(`Expected "${token.name}" to not be empty`);
|
102
|
+
}
|
103
|
+
for (let j = 0; j < value.length; j++) {
|
104
|
+
segment = encode(value[j], token);
|
105
|
+
if (validate && !matches[i].test(segment)) {
|
106
|
+
throw new TypeError(`Expected all "${token.name}" to match "${token.pattern}"`);
|
107
|
+
}
|
108
|
+
path += (j === 0 ? token.prefix : token.delimiter) + segment;
|
109
|
+
}
|
110
|
+
continue;
|
111
|
+
}
|
112
|
+
if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {
|
113
|
+
segment = encode(String(value), token);
|
114
|
+
if (validate && !matches[i].test(segment)) {
|
115
|
+
throw new TypeError(`Expected "${token.name}" to match "${token.pattern}", but got "${segment}"`);
|
116
|
+
}
|
117
|
+
path += token.prefix + segment;
|
118
|
+
continue;
|
119
|
+
}
|
120
|
+
if (token.optional) {
|
121
|
+
continue;
|
122
|
+
}
|
123
|
+
throw new TypeError(`Expected "${token.name}" to be ${token.repeat ? 'an array' : 'a string'}`);
|
124
|
+
}
|
125
|
+
return path;
|
126
|
+
};
|
127
|
+
}
|
128
|
+
escapeString(str) {
|
129
|
+
return str.replace(/([.+*?=^!:${}()[\]|/\\])/g, '\\$1');
|
130
|
+
}
|
131
|
+
escapeGroup(group) {
|
132
|
+
return group.replace(/([=!:$/()])/g, '\\$1');
|
133
|
+
}
|
134
|
+
flags(options) {
|
135
|
+
return options && options.sensitive ? '' : 'i';
|
136
|
+
}
|
137
|
+
regexpToRegexp(path, keys) {
|
138
|
+
if (!keys) {
|
139
|
+
return path;
|
140
|
+
}
|
141
|
+
const groups = path.source.match(/\((?!\?)/g);
|
142
|
+
if (groups) {
|
143
|
+
for (let i = 0; i < groups.length; i++) {
|
144
|
+
keys.push({
|
145
|
+
name: i,
|
146
|
+
prefix: null,
|
147
|
+
delimiter: null,
|
148
|
+
optional: false,
|
149
|
+
repeat: false,
|
150
|
+
pattern: null
|
151
|
+
});
|
152
|
+
}
|
153
|
+
}
|
154
|
+
return path;
|
155
|
+
}
|
156
|
+
arrayToRegexp(path, keys, options) {
|
157
|
+
const parts = [];
|
158
|
+
for (let i = 0; i < path.length; i++) {
|
159
|
+
parts.push(this.pathToRegexp(path[i], keys, options).source);
|
160
|
+
}
|
161
|
+
return new RegExp(`(?:${parts.join('|')})`, this.flags(options));
|
162
|
+
}
|
163
|
+
stringToRegexp(path, keys, options) {
|
164
|
+
return this.tokensToRegExp(this.parse(path, options), keys, options);
|
165
|
+
}
|
166
|
+
tokensToRegExp(tokens, keys, options) {
|
167
|
+
options = options || {};
|
168
|
+
const strict = options.strict;
|
169
|
+
const start = options.start !== false;
|
170
|
+
const end = options.end !== false;
|
171
|
+
const delimiter = options.delimiter || this.DEFAULT_DELIMITER;
|
172
|
+
const endsWith = []
|
173
|
+
.concat(options.endsWith || [])
|
174
|
+
.map(this.escapeString)
|
175
|
+
.concat('$')
|
176
|
+
.join('|');
|
177
|
+
let route = start ? '^' : '';
|
178
|
+
for (let i = 0; i < tokens.length; i++) {
|
179
|
+
const token = tokens[i];
|
180
|
+
if (typeof token === 'string') {
|
181
|
+
route += this.escapeString(token);
|
182
|
+
}
|
183
|
+
else {
|
184
|
+
const capture = token.repeat
|
185
|
+
? `(?:${token.pattern})(?:${this.escapeString(token.delimiter)}(?:${token.pattern}))*`
|
186
|
+
: token.pattern;
|
187
|
+
if (keys) {
|
188
|
+
keys.push(token);
|
189
|
+
}
|
190
|
+
if (token.optional) {
|
191
|
+
if (!token.prefix) {
|
192
|
+
route += `(${capture})?`;
|
193
|
+
}
|
194
|
+
else {
|
195
|
+
route += `(?:${this.escapeString(token.prefix)}(${capture}))?`;
|
196
|
+
}
|
197
|
+
}
|
198
|
+
else {
|
199
|
+
route += `${this.escapeString(token.prefix)}(${capture})`;
|
200
|
+
}
|
201
|
+
}
|
202
|
+
}
|
203
|
+
if (end) {
|
204
|
+
if (!strict) {
|
205
|
+
route += `(?:${this.escapeString(delimiter)})?`;
|
206
|
+
}
|
207
|
+
route += endsWith === '$' ? '$' : `(?=${endsWith})`;
|
208
|
+
}
|
209
|
+
else {
|
210
|
+
const endToken = tokens[tokens.length - 1];
|
211
|
+
const isEndDelimited = typeof endToken === 'string' ? endToken[endToken.length - 1] === delimiter : endToken === undefined;
|
212
|
+
if (!strict) {
|
213
|
+
route += `(?:${this.escapeString(delimiter)}(?=${endsWith}))?`;
|
214
|
+
}
|
215
|
+
if (!isEndDelimited) {
|
216
|
+
route += `(?=${this.escapeString(delimiter)}|${endsWith})`;
|
217
|
+
}
|
218
|
+
}
|
219
|
+
return new RegExp(route, this.flags(options));
|
220
|
+
}
|
221
|
+
pathToRegexp(path, keys, options) {
|
222
|
+
if (path instanceof RegExp) {
|
223
|
+
return this.regexpToRegexp(path, keys);
|
224
|
+
}
|
225
|
+
if (Array.isArray(path)) {
|
226
|
+
return this.arrayToRegexp(/** @type {!Array} */ path, keys, options);
|
227
|
+
}
|
228
|
+
return this.stringToRegexp(/** @type {string} */ path, keys, options);
|
229
|
+
}
|
230
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: PathToRegexpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
|
231
|
+
static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: PathToRegexpService, providedIn: 'root' }); }
|
232
|
+
}
|
233
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: PathToRegexpService, decorators: [{
|
234
|
+
type: Injectable,
|
235
|
+
args: [{
|
236
|
+
providedIn: 'root'
|
237
|
+
}]
|
238
|
+
}], ctorParameters: () => [] });
|
239
239
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicGF0aC10by1yZWdleHAuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uL3BhY2thZ2VzL3V0aWwvb3RoZXIvcGF0aC10by1yZWdleHAuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxxRUFBcUU7QUFDckUsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLGVBQWUsQ0FBQzs7QUFPM0MsTUFBTSxPQUFPLG1CQUFtQjtJQUM5QjtRQUNBLHNCQUFpQixHQUFHLEdBQUcsQ0FBQztRQUV4QixnQkFBVyxHQUFHLElBQUksTUFBTSxDQUN0QixDQUFDLFNBQVMsRUFBRSxxRkFBcUYsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFDNUcsR0FBRyxDQUNKLENBQUM7SUFOYSxDQUFDO0lBUWhCLEtBQUssQ0FBQyxHQUFjLEVBQUUsT0FBa0I7UUFDdEMsTUFBTSxNQUFNLEdBQUcsRUFBRSxDQUFDO1FBQ2xCLElBQUksR0FBRyxHQUFHLENBQUMsQ0FBQztRQUNaLElBQUksS0FBSyxHQUFHLENBQUMsQ0FBQztRQUNkLElBQUksSUFBSSxHQUFHLEVBQUUsQ0FBQztRQUNkLE1BQU0sZ0JBQWdCLEdBQUcsQ0FBQyxPQUFPLElBQUksT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLElBQUksQ0FBQyxpQkFBaUIsQ0FBQztRQUNsRixNQUFNLFNBQVMsR0FBRyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksU0FBUyxDQUFDO1FBQzlELElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztRQUN4QixJQUFJLEdBQUcsQ0FBQztRQUVSLE9BQU8sQ0FBQyxHQUFHLEdBQUcsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDLENBQUMsS0FBSyxJQUFJLEVBQUUsQ0FBQztZQUNuRCxNQUFNLENBQUMsR0FBRyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUM7WUFDakIsTUFBTSxPQUFP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cUIsQ0FBQyxJQUFJLEVBQUUsSUFBSSxFQUFFLE9BQU8sQ0FBQyxDQUFDO1FBQ3ZFLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxjQUFjLENBQUMscUJBQXFCLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxPQUFPLENBQUMsQ0FBQztJQUN4RSxDQUFDOzhHQXZSVSxtQkFBbUI7a0hBQW5CLG1CQUFtQixjQUZsQixNQUFNOzsyRkFFUCxtQkFBbUI7a0JBSC9CLFVBQVU7bUJBQUM7b0JBQ1YsVUFBVSxFQUFFLE1BQU07aUJBQ25CIiwic291cmNlc0NvbnRlbnQiOlsiLyogZXNsaW50LWRpc2FibGUgQHR5cGVzY3JpcHQtZXNsaW50L2V4cGxpY2l0LWZ1bmN0aW9uLXJldHVybi10eXBlICovXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IE56U2FmZUFueSB9IGZyb20gJ25nLXpvcnJvLWFudGQvY29yZS90eXBlcyc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIFBhdGhUb1JlZ2V4cFNlcnZpY2Uge1xuICBjb25zdHJ1Y3RvcigpIHt9XG4gIERFRkFVTFRfREVMSU1JVEVSID0gJy8nO1xuXG4gIFBBVEhfUkVHRVhQID0gbmV3IFJlZ0V4cChcbiAgICBbJyhcXFxcXFxcXC4pJywgJyg/OlxcXFw6KFxcXFx3KykoPzpcXFxcKCgoPzpcXFxcXFxcXC58W15cXFxcXFxcXCgpXSkrKVxcXFwpKT98XFxcXCgoKD86XFxcXFxcXFwufFteXFxcXFxcXFwoKV0pKylcXFxcKSkoWysqP10pPyddLmpvaW4oJ3wnKSxcbiAgICAnZydcbiAgKTtcblxuICBwYXJzZShzdHI6IE56U2FmZUFueSwgb3B0aW9uczogTnpTYWZlQW55KSB7XG4gICAgY29uc3QgdG9rZW5zID0gW107XG4gICAgbGV0IGtleSA9IDA7XG4gICAgbGV0IGluZGV4ID0gMDtcbiAgICBsZXQgcGF0aCA9ICcnO1xuICAgIGNvbnN0IGRlZmF1bHREZWxpbWl0ZXIgPSAob3B0aW9ucyAmJiBvcHRpb25zLmRlbGltaXRlcikgfHwgdGhpcy5ERUZBVUxUX0RFTElNSVRFUjtcbiAgICBjb25zdCB3aGl0ZWxpc3QgPSAob3B0aW9ucyAmJiBvcHRpb25zLndoaXRlbGlzdCkgfHwgdW5kZWZpbmVkO1xuICAgIGxldCBwYXRoRXNjYXBlZCA9IGZhbHNlO1xuICAgIGxldCByZXM7XG5cbiAgICB3aGlsZSAoKHJlcyA9IHRoaXMuUEFUSF9SRUdFWFAuZXhlYyhzdHIpKSAhPT0gbnVsbCkge1xuICAgICAgY29uc3QgbSA9IHJlc1swXTtcbiAgICAgIGNvbnN0IGVzY2FwZWQgPSByZXNbMV07XG4gICAgICBjb25zdCBvZmZzZXQgPSByZXMuaW5kZXg7XG4gICAgICBwYXRoICs9IHN0ci5zbGljZShpbmRleCwgb2Zmc2V0KTtcbiAgICAgIGluZGV4ID0gb2Zmc2V0ICsgbS5sZW5ndGg7XG5cbiAgICAgIC8vIElnbm9yZSBhbHJlYWR5IGVzY2FwZWQgc2VxdWVuY2VzLlxuICAgICAgaWYgKGVzY2FwZWQpIHtcbiAgICAgICAgcGF0aCArPSBlc2NhcGVkWzFdO1xuICAgICAgICBwYXRoRXNjYXBlZCA9IHRydWU7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBsZXQgcHJldiA9ICcnO1xuICAgICAgY29uc3QgbmFtZSA9IHJlc1syXTtcbiAgICAgIGNvbnN0IGNhcHR1cmUgPSByZXNbM107XG4gICAgICBjb25zdCBncm91cCA9IHJlc1s0XTtcbiAgICAgIGNvbnN0IG1vZGlmaWVyID0gcmVzWzVdO1xuXG4gICAgICBpZiAoIXBhdGhFc2NhcGVkICYmIHBhdGgubGVuZ3RoKSB7XG4gICAgICAgIGNvbnN0IGsgPSBwYXRoLmxlbmd0aCAtIDE7XG4gICAgICAgIGNvbnN0IGMgPSBwYXRoW2tdO1xuICAgICAgICBjb25zdCBtYXRjaGVzID0gd2hpdGVsaXN0ID8gd2hpdGVsaXN0LmluZGV4T2YoYykgPiAtMSA6IHRydWU7XG5cbiAgICAgICAgaWYgKG1hdGNoZXMpIHtcbiAgICAgICAgICBwcmV2ID0gYztcbiAgICAgICAgICBwYXRoID0gcGF0aC5zbGljZSgwLCBrKTtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAvLyBQdXNoIHRoZSBjdXJyZW50IHBhdGggb250byB0aGUgdG9rZW5zLlxuICAgICAgaWYgKHBhdGgpIHtcbiAgICAgICAgdG9rZW5zLnB1c2gocGF0aCk7XG4gICAgICAgIHBhdGggPSAnJztcbiAgICAgICAgcGF0aEVzY2FwZWQgPSBmYWxzZTtcbiAgICAgIH1cblxuICAgICAgY29uc3QgcmVwZWF0ID0gbW9kaWZpZXIgPT09ICcrJyB8fCBtb2RpZmllciA9PT0gJyonO1xuICAgICAgY29uc3Qgb3B0aW9uYWwgPSBtb2RpZmllciA9PT0gJz8nIHx8IG1vZGlmaWVyID09PSAnKic7XG4gICAgICBjb25zdCBwYXR0ZXJuID0gY2FwdHVyZSB8fCBncm91cDtcbiAgICAgIGNvbnN0IGRlbGltaXRlciA9IHByZXYgfHwgZGVmYXVsdERlbGltaXRlcjtcblxuICAgICAgdG9rZW5zLnB1c2goe1xuICAgICAgICBuYW1lOiBuYW1lIHx8IGtleSsrLFxuICAgICAgICBwcmVmaXg6IHByZXYsXG4gICAgICAgIGRlbGltaXRlcjogZGVsaW1pdGVyLFxuICAgICAgICBvcHRpb25hbDogb3B0aW9uYWwsXG4gICAgICAgIHJlcGVhdDogcmVwZWF0LFxuICAgICAgICBwYXR0ZXJuOiBwYXR0ZXJuXG4gICAgICAgICAgPyB0aGlzLmVzY2FwZUdyb3VwKHBhdHRlcm4pXG4gICAgICAgICAgOiBgW14ke3RoaXMuZXNjYXBlU3RyaW5nKGRlbGltaXRlciA9PT0gZGVmYXVsdERlbGltaXRlciA/IGRlbGltaXRlciA6IGRlbGltaXRlciArIGRlZmF1bHREZWxpbWl0ZXIpfV0rP2BcbiAgICAgIH0pO1xuICAgIH1cblxuICAgIC8vIFB1c2ggTnpTYWZlQW55IHJlbWFpbmluZyBjaGFyYWN0ZXJzLlxuICAgIGlmIChwYXRoIHx8IGluZGV4IDwgc3RyLmxlbmd0aCkge1xuICAgICAgdG9rZW5zLnB1c2gocGF0aCArIHN0ci5zdWJzdHIoaW5kZXgpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gdG9rZW5zO1xuICB9XG4gIGNvbXBpbGUoc3RyOiBOelNhZmVBbnksIG9wdGlvbnM6IE56U2FmZUFueSkge1xuICAgIHJldHVybiB0aGlzLnRva2Vuc1RvRnVuY3Rpb24odGhpcy5wYXJzZShzdHIsIG9wdGlvbnMpLCBvcHRpb25zKTtcbiAgfVxuXG4gIHRva2Vuc1RvRnVuY3Rpb24odG9rZW5zOiBOelNhZmVBbnksIG9wdGlvbnM6IE56U2FmZUFueSkge1xuICAgIGNvbnN0IG1hdGNoZXMgPSBuZXcgQXJyYXkodG9rZW5zLmxlbmd0aCk7XG5cbiAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgaWYgKHR5cGVvZiB0b2tlbnNbaV0gPT09ICdvYmplY3QnKSB7XG4gICAgICAgIG1hdGNoZXNbaV0gPSBuZXcgUmVnRXhwKGBeKD86JHt0b2tlbnNbaV0ucGF0dGVybn0pJGAsIHRoaXMuZmxhZ3Mob3B0aW9ucykpO1xuICAgICAgfVxuICAgIH1cblxuICAgIHJldHVybiBmdW5jdGlvbiAoZGF0YTogTnpTYWZlQW55LCBvcHRpb25zOiBOelNhZmVBbnkpIHtcbiAgICAgIGxldCBwYXRoID0gJyc7XG4gICAgICBjb25zdCBlbmNvZGUgPSAob3B0aW9ucyAmJiBvcHRpb25zLmVuY29kZSkgfHwgZW5jb2RlVVJJQ29tcG9uZW50O1xuICAgICAgY29uc3QgdmFsaWRhdGUgPSBvcHRpb25zID8gb3B0aW9ucy52YWxpZGF0ZSAhPT0gZmFsc2UgOiB0cnVlO1xuXG4gICAgICBmb3IgKGxldCBpID0gMDsgaSA8IHRva2Vucy5sZW5ndGg7IGkrKykge1xuICAgICAgICBjb25zdCB0b2tlbiA9IHRva2Vuc1tpXTtcblxuICAgICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICAgIHBhdGggKz0gdG9rZW47XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCB2YWx1ZSA9IGRhdGEgPyBkYXRhW3Rva2VuLm5hbWVdIDogdW5kZWZpbmVkO1xuICAgICAgICBsZXQgc2VnbWVudDtcblxuICAgICAgICBpZiAoQXJyYXkuaXNBcnJheSh2YWx1ZSkpIHtcbiAgICAgICAgICBpZiAoIXRva2VuLnJlcGVhdCkge1xuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXCIke3Rva2VuLm5hbWV9XCIgdG8gbm90IHJlcGVhdCwgYnV0IGdvdCBhcnJheWApO1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGlmICh2YWx1ZS5sZW5ndGggPT09IDApIHtcbiAgICAgICAgICAgIGlmICh0b2tlbi5vcHRpb25hbCkge1xuICAgICAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgdGhyb3cgbmV3IFR5cGVFcnJvcihgRXhwZWN0ZWQgXCIke3Rva2VuLm5hbWV9XCIgdG8gbm90IGJlIGVtcHR5YCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgZm9yIChsZXQgaiA9IDA7IGogPCB2YWx1ZS5sZW5ndGg7IGorKykge1xuICAgICAgICAgICAgc2VnbWVudCA9IGVuY29kZSh2YWx1ZVtqXSwgdG9rZW4pO1xuXG4gICAgICAgICAgICBpZiAodmFsaWRhdGUgJiYgIW1hdGNoZXNbaV0udGVzdChzZWdtZW50KSkge1xuICAgICAgICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBhbGwgXCIke3Rva2VuLm5hbWV9XCIgdG8gbWF0Y2ggXCIke3Rva2VuLnBhdHRlcm59XCJgKTtcbiAgICAgICAgICAgIH1cblxuICAgICAgICAgICAgcGF0aCArPSAoaiA9PT0gMCA/IHRva2VuLnByZWZpeCA6IHRva2VuLmRlbGltaXRlcikgKyBzZWdtZW50O1xuICAgICAgICAgIH1cblxuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHR5cGVvZiB2YWx1ZSA9PT0gJ3N0cmluZycgfHwgdHlwZW9mIHZhbHVlID09PSAnbnVtYmVyJyB8fCB0eXBlb2YgdmFsdWUgPT09ICdib29sZWFuJykge1xuICAgICAgICAgIHNlZ21lbnQgPSBlbmNvZGUoU3RyaW5nKHZhbHVlKSwgdG9rZW4pO1xuXG4gICAgICAgICAgaWYgKHZhbGlkYXRlICYmICFtYXRjaGVzW2ldLnRlc3Qoc2VnbWVudCkpIHtcbiAgICAgICAgICAgIHRocm93IG5ldyBUeXBlRXJyb3IoYEV4cGVjdGVkIFwiJHt0b2tlbi5uYW1lfVwiIHRvIG1hdGNoIFwiJHt0b2tlbi5wYXR0ZXJufVwiLCBidXQgZ290IFwiJHtzZWdtZW50fVwiYCk7XG4gICAgICAgICAgfVxuXG4gICAgICAgICAgcGF0aCArPSB0b2tlbi5wcmVmaXggKyBzZWdtZW50O1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVHlwZUVycm9yKGBFeHBlY3RlZCBcIiR7dG9rZW4ubmFtZX1cIiB0byBiZSAke3Rva2VuLnJlcGVhdCA/ICdhbiBhcnJheScgOiAnYSBzdHJpbmcnfWApO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcGF0aDtcbiAgICB9O1xuICB9XG5cbiAgZXNjYXBlU3RyaW5nKHN0cjogTnpTYWZlQW55KSB7XG4gICAgcmV0dXJuIHN0ci5yZXBsYWNlKC8oWy4rKj89XiE6JHt9KClbXFxdfC9cXFxcXSkvZywgJ1xcXFwkMScpO1xuICB9XG5cbiAgZXNjYXBlR3JvdXAoZ3JvdXA6IE56U2FmZUFueSkge1xuICAgIHJldHVybiBncm91cC5yZXBsYWNlKC8oWz0hOiQvKCldKS9nLCAnXFxcXCQxJyk7XG4gIH1cblxuICBmbGFncyhvcHRpb25zOiBOelNhZmVBbnkpIHtcbiAgICByZXR1cm4gb3B0aW9ucyAmJiBvcHRpb25zLnNlbnNpdGl2ZSA/ICcnIDogJ2knO1xuICB9XG5cbiAgcmVnZXhwVG9SZWdleHAocGF0aDogTnpTYWZlQW55LCBrZXlzOiBOelNhZmVBbnkpIHtcbiAgICBpZiAoIWtleXMpIHtcbiAgICAgIHJldHVybiBwYXRoO1xuICAgIH1cblxuICAgIGNvbnN0IGdyb3VwcyA9IHBhdGguc291cmNlLm1hdGNoKC9cXCgoPyFcXD8pL2cpO1xuXG4gICAgaWYgKGdyb3Vwcykge1xuICAgICAgZm9yIChsZXQgaSA9IDA7IGkgPCBncm91cHMubGVuZ3RoOyBpKyspIHtcbiAgICAgICAga2V5cy5wdXNoKHtcbiAgICAgICAgICBuYW1lOiBpLFxuICAgICAgICAgIHByZWZpeDogbnVsbCxcbiAgICAgICAgICBkZWxpbWl0ZXI6IG51bGwsXG4gICAgICAgICAgb3B0aW9uYWw6IGZhbHNlLFxuICAgICAgICAgIHJlcGVhdDogZmFsc2UsXG4gICAgICAgICAgcGF0dGVybjogbnVsbFxuICAgICAgICB9KTtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gcGF0aDtcbiAgfVxuXG4gIGFycmF5VG9SZWdleHAocGF0aDogTnpTYWZlQW55LCBrZXlzOiBOelNhZmVBbnksIG9wdGlvbnM6IE56U2FmZUFueSk6IFJlZ0V4cCB7XG4gICAgY29uc3QgcGFydHMgPSBbXTtcblxuICAgIGZvciAobGV0IGkgPSAwOyBpIDwgcGF0aC5sZW5ndGg7IGkrKykge1xuICAgICAgcGFydHMucHVzaCh0aGlzLnBhdGhUb1JlZ2V4cChwYXRoW2ldLCBrZXlzLCBvcHRpb25zKS5zb3VyY2UpO1xuICAgIH1cblxuICAgIHJldHVybiBuZXcgUmVnRXhwKGAoPzoke3BhcnRzLmpvaW4oJ3wnKX0pYCwgdGhpcy5mbGFncyhvcHRpb25zKSk7XG4gIH1cblxuICBzdHJpbmdUb1JlZ2V4cChwYXRoOiBOelNhZmVBbnksIGtleXM6IE56U2FmZUFueSwgb3B0aW9uczogTnpTYWZlQW55KSB7XG4gICAgcmV0dXJuIHRoaXMudG9rZW5zVG9SZWdFeHAodGhpcy5wYXJzZShwYXRoLCBvcHRpb25zKSwga2V5cywgb3B0aW9ucyk7XG4gIH1cblxuICB0b2tlbnNUb1JlZ0V4cCh0b2tlbnM6IE56U2FmZUFueSwga2V5czogTnpTYWZlQW55LCBvcHRpb25zOiBOelNhZmVBbnkpIHtcbiAgICBvcHRpb25zID0gb3B0aW9ucyB8fCB7fTtcblxuICAgIGNvbnN0IHN0cmljdCA9IG9wdGlvbnMuc3RyaWN0O1xuICAgIGNvbnN0IHN0YXJ0ID0gb3B0aW9ucy5zdGFydCAhPT0gZmFsc2U7XG4gICAgY29uc3QgZW5kID0gb3B0aW9ucy5lbmQgIT09IGZhbHNlO1xuICAgIGNvbnN0IGRlbGltaXRlciA9IG9wdGlvbnMuZGVsaW1pdGVyIHx8IHRoaXMuREVGQVVMVF9ERUxJTUlURVI7XG4gICAgY29uc3QgZW5kc1dpdGggPSBbXVxuICAgICAgLmNvbmNhdChvcHRpb25zLmVuZHNXaXRoIHx8IFtdKVxuICAgICAgLm1hcCh0aGlzLmVzY2FwZVN0cmluZylcbiAgICAgIC5jb25jYXQoJyQnKVxuICAgICAgLmpvaW4oJ3wnKTtcbiAgICBsZXQgcm91dGUgPSBzdGFydCA/ICdeJyA6ICcnO1xuXG4gICAgZm9yIChsZXQgaSA9IDA7IGkgPCB0b2tlbnMubGVuZ3RoOyBpKyspIHtcbiAgICAgIGNvbnN0IHRva2VuID0gdG9rZW5zW2ldO1xuXG4gICAgICBpZiAodHlwZW9mIHRva2VuID09PSAnc3RyaW5nJykge1xuICAgICAgICByb3V0ZSArPSB0aGlzLmVzY2FwZVN0cmluZyh0b2tlbik7XG4gICAgICB9IGVsc2Uge1xuICAgICAgICBjb25zdCBjYXB0dXJlID0gdG9rZW4ucmVwZWF0XG4gICAgICAgICAgPyBgKD86JHt0b2tlbi5wYXR0ZXJufSkoPzoke3RoaXMuZXNjYXBlU3RyaW5nKHRva2VuLmRlbGltaXRlcil9KD86JHt0b2tlbi5wYXR0ZXJufSkpKmBcbiAgICAgICAgICA6IHRva2VuLnBhdHRlcm47XG5cbiAgICAgICAgaWYgKGtleXMpIHtcbiAgICAgICAgICBrZXlzLnB1c2godG9rZW4pO1xuICAgICAgICB9XG5cbiAgICAgICAgaWYgKHRva2VuLm9wdGlvbmFsKSB7XG4gICAgICAgICAgaWYgKCF0b2tlbi5wcmVmaXgpIHtcbiAgICAgICAgICAgIHJvdXRlICs9IGAoJHtjYXB0dXJlfSk/YDtcbiAgICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgICAgcm91dGUgKz0gYCg/OiR7dGhpcy5lc2NhcGVTdHJpbmcodG9rZW4ucHJlZml4KX0oJHtjYXB0dXJlfSkpP2A7XG4gICAgICAgICAgfVxuICAgICAgICB9IGVsc2Uge1xuICAgICAgICAgIHJvdXRlICs9IGAke3RoaXMuZXNjYXBlU3RyaW5nKHRva2VuLnByZWZpeCl9KCR7Y2FwdHVyZX0pYDtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIH1cblxuICAgIGlmIChlbmQpIHtcbiAgICAgIGlmICghc3RyaWN0KSB7XG4gICAgICAgIHJvdXRlICs9IGAoPzoke3RoaXMuZXNjYXBlU3RyaW5nKGRlbGltaXRlcil9KT9gO1xuICAgICAgfVxuXG4gICAgICByb3V0ZSArPSBlbmRzV2l0aCA9PT0gJyQnID8gJyQnIDogYCg/PSR7ZW5kc1dpdGh9KWA7XG4gICAgfSBlbHNlIHtcbiAgICAgIGNvbnN0IGVuZFRva2VuID0gdG9rZW5zW3Rva2Vucy5sZW5ndGggLSAxXTtcbiAgICAgIGNvbnN0IGlzRW5kRGVsaW1pdGVkID1cbiAgICAgICAgdHlwZW9mIGVuZFRva2VuID09PSAnc3RyaW5nJyA/IGVuZFRva2VuW2VuZFRva2VuLmxlbmd0aCAtIDFdID09PSBkZWxpbWl0ZXIgOiBlbmRUb2tlbiA9PT0gdW5kZWZpbmVkO1xuXG4gICAgICBpZiAoIXN0cmljdCkge1xuICAgICAgICByb3V0ZSArPSBgKD86JHt0aGlzLmVzY2FwZVN0cmluZyhkZWxpbWl0ZXIpfSg/PSR7ZW5kc1dpdGh9KSk/YDtcbiAgICAgIH1cbiAgICAgIGlmICghaXNFbmREZWxpbWl0ZWQpIHtcbiAgICAgICAgcm91dGUgKz0gYCg/PSR7dGhpcy5lc2NhcGVTdHJpbmcoZGVsaW1pdGVyKX18JHtlbmRzV2l0aH0pYDtcbiAgICAgIH1cbiAgICB9XG5cbiAgICByZXR1cm4gbmV3IFJlZ0V4cChyb3V0ZSwgdGhpcy5mbGFncyhvcHRpb25zKSk7XG4gIH1cblxuICBwYXRoVG9SZWdleHAocGF0aDogTnpTYWZlQW55LCBrZXlzOiBOelNhZmVBbnksIG9wdGlvbnM6IE56U2FmZUFueSkge1xuICAgIGlmIChwYXRoIGluc3RhbmNlb2YgUmVnRXhwKSB7XG4gICAgICByZXR1cm4gdGhpcy5yZWdleHBUb1JlZ2V4cChwYXRoLCBrZXlzKTtcbiAgICB9XG5cbiAgICBpZiAoQXJyYXkuaXNBcnJheShwYXRoKSkge1xuICAgICAgcmV0dXJuIHRoaXMuYXJyYXlUb1JlZ2V4cCgvKiogQHR5cGUgeyFBcnJheX0gKi8gcGF0aCwga2V5cywgb3B0aW9ucyk7XG4gICAgfVxuXG4gICAgcmV0dXJuIHRoaXMuc3RyaW5nVG9SZWdleHAoLyoqIEB0eXBlIHtzdHJpbmd9ICovIHBhdGgsIGtleXMsIG9wdGlvbnMpO1xuICB9XG59XG4iXX0=
|
package/esm2022/other/resize.mjs
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
export const resizeWindow = () => {
|
2
|
-
window.dispatchEvent(new Event('resize'));
|
3
|
-
};
|
1
|
+
export const resizeWindow = () => {
|
2
|
+
window.dispatchEvent(new Event('resize'));
|
3
|
+
};
|
4
4
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicmVzaXplLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vcGFja2FnZXMvdXRpbC9vdGhlci9yZXNpemUudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLEdBQVMsRUFBRTtJQUNyQyxNQUFNLENBQUMsYUFBYSxDQUFDLElBQUksS0FBSyxDQUFDLFFBQVEsQ0FBQyxDQUFDLENBQUM7QUFDNUMsQ0FBQyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0IGNvbnN0IHJlc2l6ZVdpbmRvdyA9ICgpOiB2b2lkID0+IHtcbiAgd2luZG93LmRpc3BhdGNoRXZlbnQobmV3IEV2ZW50KCdyZXNpemUnKSk7XG59O1xuIl19
|
@@ -1,23 +1,23 @@
|
|
1
|
-
import { Pipe, inject } from '@angular/core';
|
2
|
-
import { CurrencyService } from '@yelon/util/format';
|
3
|
-
import * as i0 from "@angular/core";
|
4
|
-
/**
|
5
|
-
* Converted into RMB notation.
|
6
|
-
*
|
7
|
-
* 转化成人民币表示法
|
8
|
-
*/
|
9
|
-
export class CurrencyCNYPipe {
|
10
|
-
constructor() {
|
11
|
-
this.srv = inject(CurrencyService);
|
12
|
-
}
|
13
|
-
transform(value, options) {
|
14
|
-
return this.srv.cny(value, options);
|
15
|
-
}
|
16
|
-
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "
|
17
|
-
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "
|
18
|
-
}
|
19
|
-
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "
|
20
|
-
type: Pipe,
|
21
|
-
args: [{ name: 'cny', standalone: true }]
|
22
|
-
}] });
|
1
|
+
import { Pipe, inject } from '@angular/core';
|
2
|
+
import { CurrencyService } from '@yelon/util/format';
|
3
|
+
import * as i0 from "@angular/core";
|
4
|
+
/**
|
5
|
+
* Converted into RMB notation.
|
6
|
+
*
|
7
|
+
* 转化成人民币表示法
|
8
|
+
*/
|
9
|
+
export class CurrencyCNYPipe {
|
10
|
+
constructor() {
|
11
|
+
this.srv = inject(CurrencyService);
|
12
|
+
}
|
13
|
+
transform(value, options) {
|
14
|
+
return this.srv.cny(value, options);
|
15
|
+
}
|
16
|
+
static { this.ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CurrencyCNYPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
|
17
|
+
static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "18.0.6", ngImport: i0, type: CurrencyCNYPipe, isStandalone: true, name: "cny" }); }
|
18
|
+
}
|
19
|
+
i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.0.6", ngImport: i0, type: CurrencyCNYPipe, decorators: [{
|
20
|
+
type: Pipe,
|
21
|
+
args: [{ name: 'cny', standalone: true }]
|
22
|
+
}] });
|
23
23
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY255LnBpcGUuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL3BpcGVzL2N1cnJlbmN5L2NueS5waXBlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxJQUFJLEVBQWlCLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUU1RCxPQUFPLEVBQXNCLGVBQWUsRUFBRSxNQUFNLG9CQUFvQixDQUFDOztBQUV6RTs7OztHQUlHO0FBRUgsTUFBTSxPQUFPLGVBQWU7SUFENUI7UUFFbUIsUUFBRyxHQUFHLE1BQU0sQ0FBQyxlQUFlLENBQUMsQ0FBQztLQUtoRDtJQUhDLFNBQVMsQ0FBQyxLQUFzQixFQUFFLE9BQTRCO1FBQzVELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3RDLENBQUM7OEdBTFUsZUFBZTs0R0FBZixlQUFlOzsyRkFBZixlQUFlO2tCQUQzQixJQUFJO21CQUFDLEVBQUUsSUFBSSxFQUFFLEtBQUssRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgUGlwZSwgUGlwZVRyYW5zZm9ybSwgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5cbmltcG9ydCB7IEN1cnJlbmN5Q05ZT3B0aW9ucywgQ3VycmVuY3lTZXJ2aWNlIH0gZnJvbSAnQHllbG9uL3V0aWwvZm9ybWF0JztcblxuLyoqXG4gKiBDb252ZXJ0ZWQgaW50byBSTUIgbm90YXRpb24uXG4gKlxuICog6L2s5YyW5oiQ5Lq65rCR5biB6KGo56S65rOVXG4gKi9cbkBQaXBlKHsgbmFtZTogJ2NueScsIHN0YW5kYWxvbmU6IHRydWUgfSlcbmV4cG9ydCBjbGFzcyBDdXJyZW5jeUNOWVBpcGUgaW1wbGVtZW50cyBQaXBlVHJhbnNmb3JtIHtcbiAgcHJpdmF0ZSByZWFkb25seSBzcnYgPSBpbmplY3QoQ3VycmVuY3lTZXJ2aWNlKTtcblxuICB0cmFuc2Zvcm0odmFsdWU6IG51bWJlciB8IHN0cmluZywgb3B0aW9ucz86IEN1cnJlbmN5Q05ZT3B0aW9ucyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIHRoaXMuc3J2LmNueSh2YWx1ZSwgb3B0aW9ucyk7XG4gIH1cbn1cbiJdfQ==
|
@@ -1,5 +1,5 @@
|
|
1
|
-
export * from './mega.pipe';
|
2
|
-
export * from './price.pipe';
|
3
|
-
export * from './module';
|
4
|
-
export * from './cny.pipe';
|
1
|
+
export * from './mega.pipe';
|
2
|
+
export * from './price.pipe';
|
3
|
+
export * from './module';
|
4
|
+
export * from './cny.pipe';
|
5
5
|
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wYWNrYWdlcy91dGlsL3BpcGVzL2N1cnJlbmN5L2luZGV4LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLGNBQWMsYUFBYSxDQUFDO0FBQzVCLGNBQWMsY0FBYyxDQUFDO0FBQzdCLGNBQWMsVUFBVSxDQUFDO0FBQ3pCLGNBQWMsWUFBWSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSAnLi9tZWdhLnBpcGUnO1xuZXhwb3J0ICogZnJvbSAnLi9wcmljZS5waXBlJztcbmV4cG9ydCAqIGZyb20gJy4vbW9kdWxlJztcbmV4cG9ydCAqIGZyb20gJy4vY255LnBpcGUnO1xuIl19
|