@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.
Files changed (236) hide show
  1. package/LICENSE +21 -21
  2. package/README.md +27 -27
  3. package/array/array-type.service.d.ts +68 -68
  4. package/array/array.service.d.ts +78 -78
  5. package/array/index.d.ts +2 -2
  6. package/browser/cookie.service.d.ts +64 -64
  7. package/browser/copy.d.ts +6 -6
  8. package/browser/index.d.ts +5 -5
  9. package/browser/is-empty.d.ts +6 -6
  10. package/browser/scroll.service.d.ts +34 -34
  11. package/browser/style.d.ts +21 -21
  12. package/config/abc/cell.type.d.ts +118 -118
  13. package/config/abc/date-picker.type.d.ts +52 -52
  14. package/config/abc/error-collect.type.d.ts +10 -10
  15. package/config/abc/exception.type.d.ts +9 -9
  16. package/config/abc/image.type.d.ts +15 -15
  17. package/config/abc/index.d.ts +17 -18
  18. package/config/abc/loading.type.d.ts +31 -31
  19. package/config/abc/lodop.type.d.ts +33 -33
  20. package/config/abc/media.type.d.ts +11 -11
  21. package/config/abc/onboarding.type.d.ts +4 -4
  22. package/config/abc/page-header.type.d.ts +39 -39
  23. package/config/abc/pdf.type.d.ts +35 -35
  24. package/config/abc/se.type.d.ts +32 -32
  25. package/config/abc/sg.type.d.ts +10 -10
  26. package/config/abc/st.type.d.ts +465 -465
  27. package/config/abc/sv.type.d.ts +14 -14
  28. package/config/abc/xlsx.type.d.ts +12 -12
  29. package/config/abc/zip.type.d.ts +10 -10
  30. package/config/acl/acl.type.d.ts +32 -32
  31. package/config/auth/auth.type.d.ts +51 -51
  32. package/config/bis/bis.type.d.ts +11 -11
  33. package/config/cache/cache.type.d.ts +66 -66
  34. package/config/chart/chart.type.d.ts +33 -33
  35. package/config/config.service.d.ts +13 -13
  36. package/config/config.types.d.ts +51 -52
  37. package/config/index.d.ts +14 -14
  38. package/config/mock/mock.type.d.ts +14 -14
  39. package/config/sf/sf.type.d.ts +133 -133
  40. package/config/socket/socket.type.d.ts +4 -4
  41. package/config/theme/http.type.d.ts +15 -15
  42. package/config/theme/i18n.type.d.ts +14 -14
  43. package/config/theme/index.d.ts +3 -3
  44. package/config/theme/pipe.type.d.ts +3 -3
  45. package/config/theme/responsive.type.d.ts +12 -12
  46. package/config/util/array.type.d.ts +22 -22
  47. package/config/util/currency.type.d.ts +39 -39
  48. package/date-time/index.d.ts +2 -2
  49. package/date-time/picker.d.ts +68 -68
  50. package/date-time/time.d.ts +39 -39
  51. package/decorator/convert.d.ts +32 -32
  52. package/decorator/index.d.ts +2 -2
  53. package/decorator/zone-outside.d.ts +35 -35
  54. package/esm2022/array/array-type.service.mjs +1 -1
  55. package/esm2022/array/array.mjs +4 -4
  56. package/esm2022/array/array.service.mjs +277 -277
  57. package/esm2022/array/index.mjs +2 -2
  58. package/esm2022/browser/browser.mjs +4 -4
  59. package/esm2022/browser/cookie.service.mjs +99 -99
  60. package/esm2022/browser/copy.mjs +27 -27
  61. package/esm2022/browser/index.mjs +5 -5
  62. package/esm2022/browser/is-empty.mjs +18 -18
  63. package/esm2022/browser/scroll.service.mjs +84 -84
  64. package/esm2022/browser/style.mjs +37 -37
  65. package/esm2022/config/abc/cell.type.mjs +1 -1
  66. package/esm2022/config/abc/date-picker.type.mjs +1 -1
  67. package/esm2022/config/abc/error-collect.type.mjs +1 -1
  68. package/esm2022/config/abc/exception.type.mjs +1 -1
  69. package/esm2022/config/abc/image.type.mjs +1 -1
  70. package/esm2022/config/abc/index.mjs +18 -19
  71. package/esm2022/config/abc/loading.type.mjs +1 -1
  72. package/esm2022/config/abc/lodop.type.mjs +1 -1
  73. package/esm2022/config/abc/media.type.mjs +1 -1
  74. package/esm2022/config/abc/onboarding.type.mjs +1 -1
  75. package/esm2022/config/abc/page-header.type.mjs +1 -1
  76. package/esm2022/config/abc/pdf.type.mjs +1 -1
  77. package/esm2022/config/abc/se.type.mjs +1 -1
  78. package/esm2022/config/abc/sg.type.mjs +1 -1
  79. package/esm2022/config/abc/st.type.mjs +1 -1
  80. package/esm2022/config/abc/sv.type.mjs +2 -2
  81. package/esm2022/config/abc/xlsx.type.mjs +1 -1
  82. package/esm2022/config/abc/zip.type.mjs +1 -1
  83. package/esm2022/config/acl/acl.type.mjs +1 -1
  84. package/esm2022/config/auth/auth.type.mjs +1 -1
  85. package/esm2022/config/bis/bis.type.mjs +1 -1
  86. package/esm2022/config/cache/cache.type.mjs +1 -1
  87. package/esm2022/config/chart/chart.type.mjs +1 -1
  88. package/esm2022/config/config.mjs +4 -4
  89. package/esm2022/config/config.service.mjs +37 -37
  90. package/esm2022/config/config.types.mjs +12 -12
  91. package/esm2022/config/index.mjs +14 -14
  92. package/esm2022/config/mock/mock.type.mjs +1 -1
  93. package/esm2022/config/sf/sf.type.mjs +1 -1
  94. package/esm2022/config/socket/socket.type.mjs +1 -1
  95. package/esm2022/config/theme/http.type.mjs +1 -1
  96. package/esm2022/config/theme/i18n.type.mjs +1 -1
  97. package/esm2022/config/theme/index.mjs +3 -3
  98. package/esm2022/config/theme/pipe.type.mjs +1 -1
  99. package/esm2022/config/theme/responsive.type.mjs +1 -1
  100. package/esm2022/config/util/array.type.mjs +1 -1
  101. package/esm2022/config/util/currency.type.mjs +1 -1
  102. package/esm2022/date-time/date-time.mjs +4 -4
  103. package/esm2022/date-time/index.mjs +2 -2
  104. package/esm2022/date-time/picker.mjs +115 -115
  105. package/esm2022/date-time/time.mjs +100 -100
  106. package/esm2022/decorator/convert.mjs +65 -65
  107. package/esm2022/decorator/decorator.mjs +4 -4
  108. package/esm2022/decorator/index.mjs +2 -2
  109. package/esm2022/decorator/zone-outside.mjs +56 -56
  110. package/esm2022/form/form.mjs +4 -4
  111. package/esm2022/form/index.mjs +2 -2
  112. package/esm2022/form/match-control.mjs +29 -29
  113. package/esm2022/form/validators.mjs +80 -80
  114. package/esm2022/format/currency.service.mjs +232 -232
  115. package/esm2022/format/currency.types.mjs +7 -7
  116. package/esm2022/format/format.mjs +4 -4
  117. package/esm2022/format/index.mjs +4 -4
  118. package/esm2022/format/string.mjs +84 -84
  119. package/esm2022/format/validate.mjs +93 -93
  120. package/esm2022/index.mjs +13 -13
  121. package/esm2022/math/in-range.mjs +24 -24
  122. package/esm2022/math/index.mjs +2 -2
  123. package/esm2022/math/math.mjs +4 -4
  124. package/esm2022/math/round.mjs +52 -52
  125. package/esm2022/mcache/index.mjs +1 -1
  126. package/esm2022/mcache/localStorageUtils.mjs +58 -58
  127. package/esm2022/mcache/mcache.mjs +4 -4
  128. package/esm2022/mtypes/authority.type.mjs +1 -1
  129. package/esm2022/mtypes/header-menu.type.mjs +1 -1
  130. package/esm2022/mtypes/index.mjs +9 -9
  131. package/esm2022/mtypes/menu.type.mjs +1 -1
  132. package/esm2022/mtypes/mtypes.mjs +4 -4
  133. package/esm2022/mtypes/nav.types.mjs +8 -8
  134. package/esm2022/mtypes/page.mjs +41 -41
  135. package/esm2022/mtypes/project-info.types.mjs +1 -1
  136. package/esm2022/mtypes/response.mjs +1 -1
  137. package/esm2022/mtypes/role.type.mjs +1 -1
  138. package/esm2022/mtypes/user.types.mjs +1 -1
  139. package/esm2022/other/assert.mjs +66 -66
  140. package/esm2022/other/deep.mjs +77 -77
  141. package/esm2022/other/favicon.mjs +28 -28
  142. package/esm2022/other/index.mjs +7 -7
  143. package/esm2022/other/lazy.service.mjs +128 -128
  144. package/esm2022/other/logger.mjs +32 -32
  145. package/esm2022/other/other.mjs +4 -4
  146. package/esm2022/other/path-to-regexp.service.mjs +238 -238
  147. package/esm2022/other/resize.mjs +3 -3
  148. package/esm2022/pipes/currency/cny.pipe.mjs +22 -22
  149. package/esm2022/pipes/currency/index.mjs +4 -4
  150. package/esm2022/pipes/currency/mega.pipe.mjs +24 -24
  151. package/esm2022/pipes/currency/module.mjs +18 -18
  152. package/esm2022/pipes/currency/pipe-currency.mjs +4 -4
  153. package/esm2022/pipes/currency/price.pipe.mjs +26 -26
  154. package/esm2022/pipes/filter/filter.pipe.mjs +19 -19
  155. package/esm2022/pipes/filter/index.mjs +2 -2
  156. package/esm2022/pipes/filter/module.mjs +16 -16
  157. package/esm2022/pipes/filter/pipe-filter.mjs +4 -4
  158. package/esm2022/pipes/format/index.mjs +2 -2
  159. package/esm2022/pipes/format/mask.pipe.mjs +33 -33
  160. package/esm2022/pipes/format/module.mjs +16 -16
  161. package/esm2022/pipes/format/pipe-format.mjs +4 -4
  162. package/esm2022/pipes/index.mjs +3 -3
  163. package/esm2022/pipes/pipes.mjs +4 -4
  164. package/esm2022/token/index.mjs +2 -2
  165. package/esm2022/token/page-visibility.mjs +14 -14
  166. package/esm2022/token/token.mjs +4 -4
  167. package/esm2022/token/window.mjs +16 -16
  168. package/esm2022/yelon-util.mjs +4 -4
  169. package/fesm2022/array.mjs +285 -285
  170. package/fesm2022/browser.mjs +273 -273
  171. package/fesm2022/config.mjs +58 -58
  172. package/fesm2022/config.mjs.map +1 -1
  173. package/fesm2022/date-time.mjs +223 -223
  174. package/fesm2022/decorator.mjs +129 -129
  175. package/fesm2022/form.mjs +118 -118
  176. package/fesm2022/format.mjs +426 -426
  177. package/fesm2022/math.mjs +85 -85
  178. package/fesm2022/mcache.mjs +65 -65
  179. package/fesm2022/mtypes.mjs +57 -57
  180. package/fesm2022/other.mjs +583 -583
  181. package/fesm2022/pipe-currency.mjs +90 -90
  182. package/fesm2022/pipe-filter.mjs +41 -41
  183. package/fesm2022/pipe-format.mjs +55 -55
  184. package/fesm2022/pipes.mjs +8 -8
  185. package/fesm2022/token.mjs +37 -37
  186. package/fesm2022/yelon-util.mjs +18 -18
  187. package/form/index.d.ts +2 -2
  188. package/form/match-control.d.ts +15 -15
  189. package/form/validators.d.ts +62 -62
  190. package/format/currency.service.d.ts +38 -38
  191. package/format/currency.types.d.ts +82 -82
  192. package/format/index.d.ts +4 -4
  193. package/format/string.d.ts +44 -44
  194. package/format/validate.d.ts +72 -72
  195. package/index.d.ts +13 -13
  196. package/math/in-range.d.ts +14 -14
  197. package/math/index.d.ts +2 -2
  198. package/math/round.d.ts +33 -33
  199. package/mcache/index.d.ts +1 -1
  200. package/mcache/localStorageUtils.d.ts +18 -18
  201. package/mtypes/authority.type.d.ts +3 -3
  202. package/mtypes/header-menu.type.d.ts +13 -13
  203. package/mtypes/index.d.ts +9 -9
  204. package/mtypes/menu.type.d.ts +41 -41
  205. package/mtypes/nav.types.d.ts +29 -29
  206. package/mtypes/page.d.ts +47 -47
  207. package/mtypes/project-info.types.d.ts +22 -22
  208. package/mtypes/response.d.ts +7 -7
  209. package/mtypes/role.type.d.ts +10 -10
  210. package/mtypes/user.types.d.ts +22 -22
  211. package/other/assert.d.ts +36 -36
  212. package/other/deep.d.ts +35 -35
  213. package/other/favicon.d.ts +2 -2
  214. package/other/index.d.ts +7 -7
  215. package/other/lazy.service.d.ts +47 -47
  216. package/other/logger.d.ts +5 -5
  217. package/other/path-to-regexp.service.d.ts +27 -27
  218. package/other/resize.d.ts +1 -1
  219. package/package.json +135 -135
  220. package/pipes/currency/cny.pipe.d.ts +14 -14
  221. package/pipes/currency/index.d.ts +4 -4
  222. package/pipes/currency/mega.pipe.d.ts +15 -15
  223. package/pipes/currency/module.d.ts +9 -9
  224. package/pipes/currency/price.pipe.d.ts +18 -18
  225. package/pipes/filter/filter.pipe.d.ts +13 -13
  226. package/pipes/filter/index.d.ts +2 -2
  227. package/pipes/filter/module.d.ts +7 -7
  228. package/pipes/format/index.d.ts +2 -2
  229. package/pipes/format/mask.pipe.d.ts +27 -27
  230. package/pipes/format/module.d.ts +7 -7
  231. package/pipes/index.d.ts +3 -3
  232. package/token/index.d.ts +2 -2
  233. package/token/page-visibility.d.ts +8 -8
  234. package/token/window.d.ts +7 -7
  235. package/config/abc/qr.type.d.ts +0 -25
  236. 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: "17.3.0", ngImport: i0, type: PathToRegexpService, deps: [], target: i0.ɵɵFactoryTarget.Injectable }); }
231
- static { this.ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PathToRegexpService, providedIn: 'root' }); }
232
- }
233
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: PathToRegexpService, decorators: [{
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=
@@ -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.3.0", ngImport: i0, type: CurrencyCNYPipe, deps: [], target: i0.ɵɵFactoryTarget.Pipe }); }
17
- static { this.ɵpipe = i0.ɵɵngDeclarePipe({ minVersion: "14.0.0", version: "17.3.0", ngImport: i0, type: CurrencyCNYPipe, isStandalone: true, name: "cny" }); }
18
- }
19
- i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "17.3.0", ngImport: i0, type: CurrencyCNYPipe, decorators: [{
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