@qraft/asyncapi-plugin 1.0.0-beta.6 → 1.0.0-beta.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (74) hide show
  1. package/CHANGELOG.md +12 -0
  2. package/dist/_vendor/@stoplight/json-ref-resolver/crawler.js +1 -1
  3. package/dist/_vendor/@stoplight/json-ref-resolver/runner.js +2 -2
  4. package/dist/_vendor/@stoplight/spectral-core/_vendor/brace-expansion/index.js +13 -10
  5. package/dist/_vendor/@stoplight/spectral-core/_vendor/brace-expansion/index.js.map +1 -1
  6. package/dist/_vendor/@stoplight/spectral-core/_vendor/minimatch/minimatch.js +160 -102
  7. package/dist/_vendor/@stoplight/spectral-core/_vendor/minimatch/minimatch.js.map +1 -1
  8. package/dist/_vendor/@stoplight/spectral-core/dist/document.js +2 -2
  9. package/dist/_vendor/@stoplight/spectral-core/dist/documentInventory.js +2 -2
  10. package/dist/_vendor/@stoplight/spectral-core/dist/ruleset/rule.js +2 -2
  11. package/dist/_vendor/@stoplight/spectral-core/dist/ruleset/ruleset.js +2 -2
  12. package/dist/_vendor/@stoplight/spectral-core/dist/ruleset/utils/guards.js +1 -1
  13. package/dist/_vendor/@stoplight/spectral-core/dist/ruleset/validation/assertions.js +1 -1
  14. package/dist/_vendor/@stoplight/spectral-core/dist/ruleset/validation/validators/alias.js +1 -1
  15. package/dist/_vendor/@stoplight/spectral-core/dist/runner/runner.js +1 -1
  16. package/dist/_vendor/@stoplight/spectral-core/dist/spectral.js +1 -1
  17. package/dist/_vendor/@stoplight/spectral-formats/dist/arazzo.js +1 -1
  18. package/dist/_vendor/@stoplight/spectral-formats/dist/asyncapi.js +1 -1
  19. package/dist/_vendor/@stoplight/spectral-formats/dist/jsonSchema.js +1 -1
  20. package/dist/_vendor/@stoplight/spectral-formats/dist/openapi.js +1 -1
  21. package/dist/_vendor/@stoplight/spectral-functions/dist/length.js +1 -1
  22. package/dist/_vendor/@stoplight/spectral-functions/dist/unreferencedReusableObject.js +1 -1
  23. package/dist/_vendor/@stoplight/spectral-parsers/dist/json.js +1 -1
  24. package/dist/_vendor/@stoplight/spectral-runtime/dist/reader.js +1 -1
  25. package/dist/_vendor/@stoplight/spectral-runtime/dist/utils/decodeSegmentFragment.js +1 -1
  26. package/dist/_vendor/@stoplight/spectral-runtime/dist/utils/index.js +1 -1
  27. package/dist/_vendor/@stoplight/spectral-runtime/dist/utils/printPath.js +1 -1
  28. package/dist/_vendor/@stoplight/spectral-runtime/dist/utils/printValue.js +1 -1
  29. package/dist/_vendor/@stoplight/spectral-runtime/dist/utils/refs.js +2 -2
  30. package/dist/_vendor/@stoplight/yaml/index.js +1 -1
  31. package/dist/_vendor/ajv/dist/refs/json-schema-2020-12/index.js +1 -1
  32. package/dist/_vendor/ajv/dist/vocabularies/applicator/index.js +1 -1
  33. package/dist/_vendor/ajv/dist/vocabularies/core/index.js +1 -1
  34. package/dist/_vendor/ajv/dist/vocabularies/dynamic/index.js +1 -1
  35. package/dist/_vendor/ajv/dist/vocabularies/format/index.js +1 -1
  36. package/dist/_vendor/ajv/dist/vocabularies/unevaluated/index.js +1 -1
  37. package/dist/_vendor/ajv/dist/vocabularies/validation/index.js +1 -1
  38. package/dist/_vendor/fast-uri/index.js +180 -83
  39. package/dist/_vendor/fast-uri/index.js.map +1 -1
  40. package/dist/_vendor/fast-uri/lib/schemes.js +163 -82
  41. package/dist/_vendor/fast-uri/lib/schemes.js.map +1 -1
  42. package/dist/_vendor/fast-uri/lib/utils.js +327 -128
  43. package/dist/_vendor/fast-uri/lib/utils.js.map +1 -1
  44. package/dist/_vendor/lodash/lodash.js +38 -27
  45. package/dist/_vendor/lodash/lodash.js.map +1 -1
  46. package/dist/_vendor/nimma/dist/legacy/cjs/codegen/fast-paths/index.js +1 -1
  47. package/dist/_vendor/nimma/dist/legacy/cjs/codegen/optimizer/index.js +1 -1
  48. package/dist/_vendor/safe-stable-stringify/index.js.map +1 -0
  49. package/dist/_vendor/safe-stable-stringify/stable.js.map +1 -0
  50. package/dist/_virtual/index.es.js +3 -3
  51. package/dist/_virtual/index.es2.js +3 -3
  52. package/dist/_virtual/index25.js +2 -2
  53. package/dist/_virtual/index26.js +2 -2
  54. package/dist/_virtual/index27.js +2 -2
  55. package/dist/_virtual/index28.js +2 -2
  56. package/dist/_virtual/index29.js +1 -1
  57. package/dist/_virtual/index38.js +2 -2
  58. package/dist/_virtual/index39.js +2 -2
  59. package/dist/_virtual/index54.js +2 -2
  60. package/dist/_virtual/index55.js +2 -2
  61. package/dist/_virtual/index56.js +2 -2
  62. package/dist/_virtual/index57.js +2 -2
  63. package/dist/_virtual/index59.js +2 -2
  64. package/dist/packageVersion.d.ts +1 -1
  65. package/dist/packageVersion.js +1 -1
  66. package/dist/packageVersion.js.map +1 -1
  67. package/package.json +4 -4
  68. package/src/packageVersion.ts +1 -1
  69. package/dist/_vendor/@stoplight/json/_vendor/safe-stable-stringify/index.js.map +0 -1
  70. package/dist/_vendor/@stoplight/json/_vendor/safe-stable-stringify/stable.js.map +0 -1
  71. package/dist/_vendor/fast-uri/lib/scopedChars.js +0 -40
  72. package/dist/_vendor/fast-uri/lib/scopedChars.js.map +0 -1
  73. /package/dist/_vendor/{@stoplight/json/_vendor/safe-stable-stringify → safe-stable-stringify}/index.js +0 -0
  74. /package/dist/_vendor/{@stoplight/json/_vendor/safe-stable-stringify → safe-stable-stringify}/stable.js +0 -0
@@ -1,5 +1,3 @@
1
- import { __require as requireScopedChars } from './scopedChars.js';
2
-
3
1
  var utils;
4
2
  var hasRequiredUtils;
5
3
 
@@ -7,60 +5,109 @@ function requireUtils () {
7
5
  if (hasRequiredUtils) return utils;
8
6
  hasRequiredUtils = 1;
9
7
 
10
- const { HEX } = /*@__PURE__*/ requireScopedChars();
8
+ /** @type {(value: string) => boolean} */
9
+ const isUUID = RegExp.prototype.test.bind(/^[\da-f]{8}-[\da-f]{4}-[\da-f]{4}-[\da-f]{4}-[\da-f]{12}$/iu);
11
10
 
12
- function normalizeIPv4 (host) {
13
- if (findToken(host, '.') < 3) { return { host, isIPV4: false } }
14
- const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || [];
15
- const [address] = matches;
16
- if (address) {
17
- return { host: stripLeadingZeros(address, '.'), isIPV4: true }
18
- } else {
19
- return { host, isIPV4: false }
20
- }
21
- }
11
+ /** @type {(value: string) => boolean} */
12
+ const isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)\.){3}(?:25[0-5]|2[0-4]\d|1\d{2}|[1-9]\d|\d)$/u);
13
+
14
+ /** @type {(value: string) => boolean} */
15
+ const isHexPair = RegExp.prototype.test.bind(/^[\da-f]{2}$/iu);
16
+
17
+ /** @type {(value: string) => boolean} */
18
+ const isUnreserved = RegExp.prototype.test.bind(/^[\da-z\-._~]$/iu);
19
+
20
+ /** @type {(value: string) => boolean} */
21
+ const isPathCharacter = RegExp.prototype.test.bind(/^[\da-z\-._~!$&'()*+,;=:@/]$/iu);
22
22
 
23
23
  /**
24
- * @param {string[]} input
25
- * @param {boolean} [keepZero=false]
26
- * @returns {string|undefined}
24
+ * @param {Array<string>} input
25
+ * @returns {string}
27
26
  */
28
- function stringArrayToHexStripped (input, keepZero = false) {
27
+ function stringArrayToHexStripped (input) {
29
28
  let acc = '';
30
- let strip = true;
31
- for (const c of input) {
32
- if (HEX[c] === undefined) return undefined
33
- if (c !== '0' && strip === true) strip = false;
34
- if (!strip) acc += c;
29
+ let code = 0;
30
+ let i = 0;
31
+
32
+ for (i = 0; i < input.length; i++) {
33
+ code = input[i].charCodeAt(0);
34
+ if (code === 48) {
35
+ continue
36
+ }
37
+ if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {
38
+ return ''
39
+ }
40
+ acc += input[i];
41
+ break
42
+ }
43
+
44
+ for (i += 1; i < input.length; i++) {
45
+ code = input[i].charCodeAt(0);
46
+ if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {
47
+ return ''
48
+ }
49
+ acc += input[i];
35
50
  }
36
- if (keepZero && acc.length === 0) acc = '0';
37
51
  return acc
38
52
  }
39
53
 
54
+ /**
55
+ * @typedef {Object} GetIPV6Result
56
+ * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.
57
+ * @property {string} address - The parsed IPv6 address.
58
+ * @property {string} [zone] - The zone identifier, if present.
59
+ */
60
+
61
+ /**
62
+ * @param {string} value
63
+ * @returns {boolean}
64
+ */
65
+ const nonSimpleDomain = RegExp.prototype.test.bind(/[^!"$&'()*+,\-.;=_`a-z{}~]/u);
66
+
67
+ /**
68
+ * @param {Array<string>} buffer
69
+ * @returns {boolean}
70
+ */
71
+ function consumeIsZone (buffer) {
72
+ buffer.length = 0;
73
+ return true
74
+ }
75
+
76
+ /**
77
+ * @param {Array<string>} buffer
78
+ * @param {Array<string>} address
79
+ * @param {GetIPV6Result} output
80
+ * @returns {boolean}
81
+ */
82
+ function consumeHextets (buffer, address, output) {
83
+ if (buffer.length) {
84
+ const hex = stringArrayToHexStripped(buffer);
85
+ if (hex !== '') {
86
+ address.push(hex);
87
+ } else {
88
+ output.error = true;
89
+ return false
90
+ }
91
+ buffer.length = 0;
92
+ }
93
+ return true
94
+ }
95
+
96
+ /**
97
+ * @param {string} input
98
+ * @returns {GetIPV6Result}
99
+ */
40
100
  function getIPV6 (input) {
41
101
  let tokenCount = 0;
42
102
  const output = { error: false, address: '', zone: '' };
103
+ /** @type {Array<string>} */
43
104
  const address = [];
105
+ /** @type {Array<string>} */
44
106
  const buffer = [];
45
- let isZone = false;
46
107
  let endipv6Encountered = false;
47
108
  let endIpv6 = false;
48
109
 
49
- function consume () {
50
- if (buffer.length) {
51
- if (isZone === false) {
52
- const hex = stringArrayToHexStripped(buffer);
53
- if (hex !== undefined) {
54
- address.push(hex);
55
- } else {
56
- output.error = true;
57
- return false
58
- }
59
- }
60
- buffer.length = 0;
61
- }
62
- return true
63
- }
110
+ let consume = consumeHextets;
64
111
 
65
112
  for (let i = 0; i < input.length; i++) {
66
113
  const cursor = input[i];
@@ -69,29 +116,28 @@ function requireUtils () {
69
116
  if (endipv6Encountered === true) {
70
117
  endIpv6 = true;
71
118
  }
72
- if (!consume()) { break }
73
- tokenCount++;
74
- address.push(':');
75
- if (tokenCount > 7) {
119
+ if (!consume(buffer, address, output)) { break }
120
+ if (++tokenCount > 7) {
76
121
  // not valid
77
122
  output.error = true;
78
123
  break
79
124
  }
80
- if (i - 1 >= 0 && input[i - 1] === ':') {
125
+ if (i > 0 && input[i - 1] === ':') {
81
126
  endipv6Encountered = true;
82
127
  }
128
+ address.push(':');
83
129
  continue
84
130
  } else if (cursor === '%') {
85
- if (!consume()) { break }
131
+ if (!consume(buffer, address, output)) { break }
86
132
  // switch to zone detection
87
- isZone = true;
133
+ consume = consumeIsZone;
88
134
  } else {
89
135
  buffer.push(cursor);
90
136
  continue
91
137
  }
92
138
  }
93
139
  if (buffer.length) {
94
- if (isZone) {
140
+ if (consume === consumeIsZone) {
95
141
  output.zone = buffer.join('');
96
142
  } else if (endIpv6) {
97
143
  address.push(buffer.join(''));
@@ -103,7 +149,18 @@ function requireUtils () {
103
149
  return output
104
150
  }
105
151
 
106
- function normalizeIPv6 (host, opts = {}) {
152
+ /**
153
+ * @typedef {Object} NormalizeIPv6Result
154
+ * @property {string} host - The normalized host.
155
+ * @property {string} [escapedHost] - The escaped host.
156
+ * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.
157
+ */
158
+
159
+ /**
160
+ * @param {string} host
161
+ * @returns {NormalizeIPv6Result}
162
+ */
163
+ function normalizeIPv6 (host) {
107
164
  if (findToken(host, ':') < 2) { return { host, isIPV6: false } }
108
165
  const ipv6 = getIPV6(host);
109
166
 
@@ -114,35 +171,17 @@ function requireUtils () {
114
171
  newHost += '%' + ipv6.zone;
115
172
  escapedHost += '%25' + ipv6.zone;
116
173
  }
117
- return { host: newHost, escapedHost, isIPV6: true }
174
+ return { host: newHost, isIPV6: true, escapedHost }
118
175
  } else {
119
176
  return { host, isIPV6: false }
120
177
  }
121
178
  }
122
179
 
123
- function stripLeadingZeros (str, token) {
124
- let out = '';
125
- let skip = true;
126
- const l = str.length;
127
- for (let i = 0; i < l; i++) {
128
- const c = str[i];
129
- if (c === '0' && skip) {
130
- if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {
131
- out += c;
132
- skip = false;
133
- }
134
- } else {
135
- if (c === token) {
136
- skip = true;
137
- } else {
138
- skip = false;
139
- }
140
- out += c;
141
- }
142
- }
143
- return out
144
- }
145
-
180
+ /**
181
+ * @param {string} str
182
+ * @param {string} token
183
+ * @returns {number}
184
+ */
146
185
  function findToken (str, token) {
147
186
  let ind = 0;
148
187
  for (let i = 0; i < str.length; i++) {
@@ -151,98 +190,258 @@ function requireUtils () {
151
190
  return ind
152
191
  }
153
192
 
154
- const RDS1 = /^\.\.?\//u;
155
- const RDS2 = /^\/\.(?:\/|$)/u;
156
- const RDS3 = /^\/\.\.(?:\/|$)/u;
157
- const RDS5 = /^\/?(?:.|\n)*?(?=\/|$)/u;
158
-
159
- function removeDotSegments (input) {
193
+ /**
194
+ * @param {string} path
195
+ * @returns {string}
196
+ *
197
+ * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4
198
+ */
199
+ function removeDotSegments (path) {
200
+ let input = path;
160
201
  const output = [];
202
+ let nextSlash = -1;
203
+ let len = 0;
161
204
 
162
- while (input.length) {
163
- if (input.match(RDS1)) {
164
- input = input.replace(RDS1, '');
165
- } else if (input.match(RDS2)) {
166
- input = input.replace(RDS2, '/');
167
- } else if (input.match(RDS3)) {
168
- input = input.replace(RDS3, '/');
169
- output.pop();
170
- } else if (input === '.' || input === '..') {
171
- input = '';
172
- } else {
173
- const im = input.match(RDS5);
174
- if (im) {
175
- const s = im[0];
176
- input = input.slice(s.length);
177
- output.push(s);
205
+ // eslint-disable-next-line no-cond-assign
206
+ while (len = input.length) {
207
+ if (len === 1) {
208
+ if (input === '.') {
209
+ break
210
+ } else if (input === '/') {
211
+ output.push('/');
212
+ break
178
213
  } else {
179
- throw new Error('Unexpected dot segment condition')
214
+ output.push(input);
215
+ break
216
+ }
217
+ } else if (len === 2) {
218
+ if (input[0] === '.') {
219
+ if (input[1] === '.') {
220
+ break
221
+ } else if (input[1] === '/') {
222
+ input = input.slice(2);
223
+ continue
224
+ }
225
+ } else if (input[0] === '/') {
226
+ if (input[1] === '.' || input[1] === '/') {
227
+ output.push('/');
228
+ break
229
+ }
230
+ }
231
+ } else if (len === 3) {
232
+ if (input === '/..') {
233
+ if (output.length !== 0) {
234
+ output.pop();
235
+ }
236
+ output.push('/');
237
+ break
180
238
  }
181
239
  }
240
+ if (input[0] === '.') {
241
+ if (input[1] === '.') {
242
+ if (input[2] === '/') {
243
+ input = input.slice(3);
244
+ continue
245
+ }
246
+ } else if (input[1] === '/') {
247
+ input = input.slice(2);
248
+ continue
249
+ }
250
+ } else if (input[0] === '/') {
251
+ if (input[1] === '.') {
252
+ if (input[2] === '/') {
253
+ input = input.slice(2);
254
+ continue
255
+ } else if (input[2] === '.') {
256
+ if (input[3] === '/') {
257
+ input = input.slice(3);
258
+ if (output.length !== 0) {
259
+ output.pop();
260
+ }
261
+ continue
262
+ }
263
+ }
264
+ }
265
+ }
266
+
267
+ // Rule 2E: Move normal path segment to output
268
+ if ((nextSlash = input.indexOf('/', 1)) === -1) {
269
+ output.push(input);
270
+ break
271
+ } else {
272
+ output.push(input.slice(0, nextSlash));
273
+ input = input.slice(nextSlash);
274
+ }
182
275
  }
276
+
183
277
  return output.join('')
184
278
  }
185
279
 
186
- function normalizeComponentEncoding (components, esc) {
187
- const func = esc !== true ? escape : unescape;
188
- if (components.scheme !== undefined) {
189
- components.scheme = func(components.scheme);
190
- }
191
- if (components.userinfo !== undefined) {
192
- components.userinfo = func(components.userinfo);
193
- }
194
- if (components.host !== undefined) {
195
- components.host = func(components.host);
280
+ /**
281
+ * Re-escape RFC 3986 gen-delims that must not appear literally in the host.
282
+ * After the URI regex parses, these characters cannot be literal in the host
283
+ * field, so any that appear after decoding came from percent-encoding and
284
+ * must be restored to prevent authority structure changes.
285
+ *
286
+ * @param {string} host
287
+ * @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)
288
+ * @returns {string}
289
+ */
290
+ const HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' };
291
+ const HOST_DELIM_RE = /[@/?#:]/g;
292
+ const HOST_DELIM_NO_COLON_RE = /[@/?#]/g;
293
+
294
+ function reescapeHostDelimiters (host, isIP) {
295
+ const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE;
296
+ re.lastIndex = 0;
297
+ return host.replace(re, (ch) => HOST_DELIMS[ch])
298
+ }
299
+
300
+ /**
301
+ * Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.
302
+ * Reserved delimiters such as `%2F` and `%2E` stay escaped.
303
+ *
304
+ * @param {string} input
305
+ * @param {boolean} [decodeUnreserved=false]
306
+ * @returns {string}
307
+ */
308
+ function normalizePercentEncoding (input, decodeUnreserved = false) {
309
+ if (input.indexOf('%') === -1) {
310
+ return input
196
311
  }
197
- if (components.path !== undefined) {
198
- components.path = func(components.path);
312
+
313
+ let output = '';
314
+
315
+ for (let i = 0; i < input.length; i++) {
316
+ if (input[i] === '%' && i + 2 < input.length) {
317
+ const hex = input.slice(i + 1, i + 3);
318
+ if (isHexPair(hex)) {
319
+ const normalizedHex = hex.toUpperCase();
320
+ const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
321
+
322
+ if (decodeUnreserved && isUnreserved(decoded)) {
323
+ output += decoded;
324
+ } else {
325
+ output += '%' + normalizedHex;
326
+ }
327
+
328
+ i += 2;
329
+ continue
330
+ }
331
+ }
332
+
333
+ output += input[i];
199
334
  }
200
- if (components.query !== undefined) {
201
- components.query = func(components.query);
335
+
336
+ return output
337
+ }
338
+
339
+ /**
340
+ * Normalizes path data without turning reserved escapes into live path syntax.
341
+ * Valid escapes are uppercased, raw unsafe characters are escaped, and only
342
+ * unreserved bytes that are not `.` are decoded.
343
+ *
344
+ * @param {string} input
345
+ * @returns {string}
346
+ */
347
+ function normalizePathEncoding (input) {
348
+ let output = '';
349
+
350
+ for (let i = 0; i < input.length; i++) {
351
+ if (input[i] === '%' && i + 2 < input.length) {
352
+ const hex = input.slice(i + 1, i + 3);
353
+ if (isHexPair(hex)) {
354
+ const normalizedHex = hex.toUpperCase();
355
+ const decoded = String.fromCharCode(parseInt(normalizedHex, 16));
356
+
357
+ if (decoded !== '.' && isUnreserved(decoded)) {
358
+ output += decoded;
359
+ } else {
360
+ output += '%' + normalizedHex;
361
+ }
362
+
363
+ i += 2;
364
+ continue
365
+ }
366
+ }
367
+
368
+ if (isPathCharacter(input[i])) {
369
+ output += input[i];
370
+ } else {
371
+ output += escape(input[i]);
372
+ }
202
373
  }
203
- if (components.fragment !== undefined) {
204
- components.fragment = func(components.fragment);
374
+
375
+ return output
376
+ }
377
+
378
+ /**
379
+ * Escapes a component while preserving existing valid percent escapes.
380
+ *
381
+ * @param {string} input
382
+ * @returns {string}
383
+ */
384
+ function escapePreservingEscapes (input) {
385
+ let output = '';
386
+
387
+ for (let i = 0; i < input.length; i++) {
388
+ if (input[i] === '%' && i + 2 < input.length) {
389
+ const hex = input.slice(i + 1, i + 3);
390
+ if (isHexPair(hex)) {
391
+ output += '%' + hex.toUpperCase();
392
+ i += 2;
393
+ continue
394
+ }
395
+ }
396
+
397
+ output += escape(input[i]);
205
398
  }
206
- return components
399
+
400
+ return output
207
401
  }
208
402
 
209
- function recomposeAuthority (components, options) {
403
+ /**
404
+ * @param {import('../types/index').URIComponent} component
405
+ * @returns {string|undefined}
406
+ */
407
+ function recomposeAuthority (component) {
210
408
  const uriTokens = [];
211
409
 
212
- if (components.userinfo !== undefined) {
213
- uriTokens.push(components.userinfo);
410
+ if (component.userinfo !== undefined) {
411
+ uriTokens.push(component.userinfo);
214
412
  uriTokens.push('@');
215
413
  }
216
414
 
217
- if (components.host !== undefined) {
218
- let host = unescape(components.host);
219
- const ipV4res = normalizeIPv4(host);
220
-
221
- if (ipV4res.isIPV4) {
222
- host = ipV4res.host;
223
- } else {
224
- const ipV6res = normalizeIPv6(ipV4res.host, { });
415
+ if (component.host !== undefined) {
416
+ let host = unescape(component.host);
417
+ if (!isIPv4(host)) {
418
+ const ipV6res = normalizeIPv6(host);
225
419
  if (ipV6res.isIPV6 === true) {
226
420
  host = `[${ipV6res.escapedHost}]`;
227
421
  } else {
228
- host = components.host;
422
+ host = reescapeHostDelimiters(host, false);
229
423
  }
230
424
  }
231
425
  uriTokens.push(host);
232
426
  }
233
427
 
234
- if (typeof components.port === 'number' || typeof components.port === 'string') {
428
+ if (typeof component.port === 'number' || typeof component.port === 'string') {
235
429
  uriTokens.push(':');
236
- uriTokens.push(String(components.port));
430
+ uriTokens.push(String(component.port));
237
431
  }
238
432
 
239
433
  return uriTokens.length ? uriTokens.join('') : undefined
240
434
  }
241
435
  utils = {
436
+ nonSimpleDomain,
242
437
  recomposeAuthority,
243
- normalizeComponentEncoding,
438
+ reescapeHostDelimiters,
439
+ normalizePercentEncoding,
440
+ normalizePathEncoding,
441
+ escapePreservingEscapes,
244
442
  removeDotSegments,
245
- normalizeIPv4,
443
+ isIPv4,
444
+ isUUID,
246
445
  normalizeIPv6,
247
446
  stringArrayToHexStripped
248
447
  };
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sources":["../../../../../../node_modules/fast-uri/lib/utils.js"],"sourcesContent":["'use strict'\n\nconst { HEX } = require('./scopedChars')\n\nfunction normalizeIPv4 (host) {\n if (findToken(host, '.') < 3) { return { host, isIPV4: false } }\n const matches = host.match(/^(?:(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])\\.){3}(?:25[0-5]|2[0-4][0-9]|1[0-9][0-9]|[1-9][0-9]|[0-9])$/u) || []\n const [address] = matches\n if (address) {\n return { host: stripLeadingZeros(address, '.'), isIPV4: true }\n } else {\n return { host, isIPV4: false }\n }\n}\n\n/**\n * @param {string[]} input\n * @param {boolean} [keepZero=false]\n * @returns {string|undefined}\n */\nfunction stringArrayToHexStripped (input, keepZero = false) {\n let acc = ''\n let strip = true\n for (const c of input) {\n if (HEX[c] === undefined) return undefined\n if (c !== '0' && strip === true) strip = false\n if (!strip) acc += c\n }\n if (keepZero && acc.length === 0) acc = '0'\n return acc\n}\n\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n const address = []\n const buffer = []\n let isZone = false\n let endipv6Encountered = false\n let endIpv6 = false\n\n function consume () {\n if (buffer.length) {\n if (isZone === false) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== undefined) {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n }\n buffer.length = 0\n }\n return true\n }\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume()) { break }\n tokenCount++\n address.push(':')\n if (tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i - 1 >= 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n continue\n } else if (cursor === '%') {\n if (!consume()) { break }\n // switch to zone detection\n isZone = true\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (isZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\nfunction normalizeIPv6 (host, opts = {}) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, escapedHost, isIPV6: true }\n } else {\n return { host, isIPV6: false }\n }\n}\n\nfunction stripLeadingZeros (str, token) {\n let out = ''\n let skip = true\n const l = str.length\n for (let i = 0; i < l; i++) {\n const c = str[i]\n if (c === '0' && skip) {\n if ((i + 1 <= l && str[i + 1] === token) || i + 1 === l) {\n out += c\n skip = false\n }\n } else {\n if (c === token) {\n skip = true\n } else {\n skip = false\n }\n out += c\n }\n }\n return out\n}\n\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\nconst RDS1 = /^\\.\\.?\\//u\nconst RDS2 = /^\\/\\.(?:\\/|$)/u\nconst RDS3 = /^\\/\\.\\.(?:\\/|$)/u\nconst RDS5 = /^\\/?(?:.|\\n)*?(?=\\/|$)/u\n\nfunction removeDotSegments (input) {\n const output = []\n\n while (input.length) {\n if (input.match(RDS1)) {\n input = input.replace(RDS1, '')\n } else if (input.match(RDS2)) {\n input = input.replace(RDS2, '/')\n } else if (input.match(RDS3)) {\n input = input.replace(RDS3, '/')\n output.pop()\n } else if (input === '.' || input === '..') {\n input = ''\n } else {\n const im = input.match(RDS5)\n if (im) {\n const s = im[0]\n input = input.slice(s.length)\n output.push(s)\n } else {\n throw new Error('Unexpected dot segment condition')\n }\n }\n }\n return output.join('')\n}\n\nfunction normalizeComponentEncoding (components, esc) {\n const func = esc !== true ? escape : unescape\n if (components.scheme !== undefined) {\n components.scheme = func(components.scheme)\n }\n if (components.userinfo !== undefined) {\n components.userinfo = func(components.userinfo)\n }\n if (components.host !== undefined) {\n components.host = func(components.host)\n }\n if (components.path !== undefined) {\n components.path = func(components.path)\n }\n if (components.query !== undefined) {\n components.query = func(components.query)\n }\n if (components.fragment !== undefined) {\n components.fragment = func(components.fragment)\n }\n return components\n}\n\nfunction recomposeAuthority (components, options) {\n const uriTokens = []\n\n if (components.userinfo !== undefined) {\n uriTokens.push(components.userinfo)\n uriTokens.push('@')\n }\n\n if (components.host !== undefined) {\n let host = unescape(components.host)\n const ipV4res = normalizeIPv4(host)\n\n if (ipV4res.isIPV4) {\n host = ipV4res.host\n } else {\n const ipV6res = normalizeIPv6(ipV4res.host, { isIPV4: false })\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = components.host\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof components.port === 'number' || typeof components.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(components.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n recomposeAuthority,\n normalizeComponentEncoding,\n removeDotSegments,\n normalizeIPv4,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n"],"names":["require$$0"],"mappings":";;;;;;;;;CAEA,MAAM,EAAE,GAAG,EAAE,iBAAGA,kBAAA;;CAEhB,SAAS,aAAa,EAAE,IAAI,EAAE;AAC9B,GAAE,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;GAC9D,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,sHAAsH,CAAC,IAAI;AACxJ,GAAE,MAAM,CAAC,OAAO,CAAC,GAAG;GAClB,IAAI,OAAO,EAAE;AACf,KAAI,OAAO,EAAE,IAAI,EAAE,iBAAiB,CAAC,OAAO,EAAE,GAAG,CAAC,EAAE,MAAM,EAAE,IAAI;AAChE,GAAA,CAAG,MAAM;AACT,KAAI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;AAChC,GAAA;AACA,CAAA;;AAEA;AACA;AACA;AACA;AACA;AACA,CAAA,SAAS,wBAAwB,EAAE,KAAK,EAAE,QAAQ,GAAG,KAAK,EAAE;GAC1D,IAAI,GAAG,GAAG;GACV,IAAI,KAAK,GAAG;AACd,GAAE,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE;KACrB,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,SAAS,EAAE,OAAO;KACjC,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE,KAAK,GAAG;AAC7C,KAAI,IAAI,CAAC,KAAK,EAAE,GAAG,IAAI;AACvB,GAAA;GACE,IAAI,QAAQ,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC,EAAE,GAAG,GAAG;AAC1C,GAAE,OAAO;AACT,CAAA;;CAEA,SAAS,OAAO,EAAE,KAAK,EAAE;GACvB,IAAI,UAAU,GAAG;AACnB,GAAE,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE;GACpD,MAAM,OAAO,GAAG;GAChB,MAAM,MAAM,GAAG;GACf,IAAI,MAAM,GAAG;GACb,IAAI,kBAAkB,GAAG;GACzB,IAAI,OAAO,GAAG;;GAEd,SAAS,OAAO,IAAI;AACtB,KAAI,IAAI,MAAM,CAAC,MAAM,EAAE;AACvB,OAAM,IAAI,MAAM,KAAK,KAAK,EAAE;AAC5B,SAAQ,MAAM,GAAG,GAAG,wBAAwB,CAAC,MAAM;AACnD,SAAQ,IAAI,GAAG,KAAK,SAAS,EAAE;AAC/B,WAAU,OAAO,CAAC,IAAI,CAAC,GAAG;AAC1B,SAAA,CAAS,MAAM;WACL,MAAM,CAAC,KAAK,GAAG;AACzB,WAAU,OAAO;AACjB,SAAA;AACA,OAAA;OACM,MAAM,CAAC,MAAM,GAAG;AACtB,KAAA;AACA,KAAI,OAAO;AACX,GAAA;;AAEA,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;AACzC,KAAI,MAAM,MAAM,GAAG,KAAK,CAAC,CAAC;KACtB,IAAI,MAAM,KAAK,GAAG,IAAI,MAAM,KAAK,GAAG,EAAE,EAAE,QAAQ,CAAA;AACpD,KAAI,IAAI,MAAM,KAAK,GAAG,EAAE;AACxB,OAAM,IAAI,kBAAkB,KAAK,IAAI,EAAE;AACvC,SAAQ,OAAO,GAAG;AAClB,OAAA;AACA,OAAM,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAA;AAC7B,OAAM,UAAU;AAChB,OAAM,OAAO,CAAC,IAAI,CAAC,GAAG;AACtB,OAAM,IAAI,UAAU,GAAG,CAAC,EAAE;AAC1B;SACQ,MAAM,CAAC,KAAK,GAAG;SACf;AACR,OAAA;AACA,OAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,GAAG,EAAE;AAC9C,SAAQ,kBAAkB,GAAG;AAC7B,OAAA;OACM;AACN,KAAA,CAAK,MAAM,IAAI,MAAM,KAAK,GAAG,EAAE;AAC/B,OAAM,IAAI,CAAC,OAAO,EAAE,EAAE,EAAE,KAAK,CAAA;AAC7B;AACA,OAAM,MAAM,GAAG;AACf,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,CAAC,IAAI,CAAC,MAAM;OAClB;AACN,KAAA;AACA,GAAA;AACA,GAAE,IAAI,MAAM,CAAC,MAAM,EAAE;KACjB,IAAI,MAAM,EAAE;OACV,MAAM,CAAC,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,EAAE;KAClC,CAAK,MAAM,IAAI,OAAO,EAAE;OAClB,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;AAClC,KAAA,CAAK,MAAM;AACX,OAAM,OAAO,CAAC,IAAI,CAAC,wBAAwB,CAAC,MAAM,CAAC;AACnD,KAAA;AACA,GAAA;GACE,MAAM,CAAC,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,EAAE;AAClC,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,SAAS,aAAa,EAAE,IAAI,EAAE,IAAI,GAAG,EAAE,EAAE;AACzC,GAAE,IAAI,SAAS,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,CAAA;AAChE,GAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI;;AAE3B,GAAE,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;AACnB,KAAI,IAAI,OAAO,GAAG,IAAI,CAAC;AACvB,KAAI,IAAI,WAAW,GAAG,IAAI,CAAC;AAC3B,KAAI,IAAI,IAAI,CAAC,IAAI,EAAE;AACnB,OAAM,OAAO,IAAI,GAAG,GAAG,IAAI,CAAC;AAC5B,OAAM,WAAW,IAAI,KAAK,GAAG,IAAI,CAAC;AAClC,KAAA;KACI,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI;AACrD,GAAA,CAAG,MAAM;AACT,KAAI,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK;AAChC,GAAA;AACA,CAAA;;AAEA,CAAA,SAAS,iBAAiB,EAAE,GAAG,EAAE,KAAK,EAAE;GACtC,IAAI,GAAG,GAAG;GACV,IAAI,IAAI,GAAG;AACb,GAAE,MAAM,CAAC,GAAG,GAAG,CAAC;AAChB,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE;AAC9B,KAAI,MAAM,CAAC,GAAG,GAAG,CAAC,CAAC;AACnB,KAAI,IAAI,CAAC,KAAK,GAAG,IAAI,IAAI,EAAE;OACrB,IAAI,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE;AAC/D,SAAQ,GAAG,IAAI;AACf,SAAQ,IAAI,GAAG;AACf,OAAA;AACA,KAAA,CAAK,MAAM;AACX,OAAM,IAAI,CAAC,KAAK,KAAK,EAAE;AACvB,SAAQ,IAAI,GAAG;AACf,OAAA,CAAO,MAAM;AACb,SAAQ,IAAI,GAAG;AACf,OAAA;AACA,OAAM,GAAG,IAAI;AACb,KAAA;AACA,GAAA;AACA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,SAAS,SAAS,EAAE,GAAG,EAAE,KAAK,EAAE;GAC9B,IAAI,GAAG,GAAG;AACZ,GAAE,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE;KACnC,IAAI,GAAG,CAAC,CAAC,CAAC,KAAK,KAAK,EAAE,GAAG;AAC7B,GAAA;AACA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,MAAM,IAAI,GAAG;AACb,CAAA,MAAM,IAAI,GAAG;AACb,CAAA,MAAM,IAAI,GAAG;AACb,CAAA,MAAM,IAAI,GAAG;;CAEb,SAAS,iBAAiB,EAAE,KAAK,EAAE;GACjC,MAAM,MAAM,GAAG;;AAEjB,GAAE,OAAO,KAAK,CAAC,MAAM,EAAE;AACvB,KAAI,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;OACrB,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE;KACpC,CAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;OAC5B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;KACrC,CAAK,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE;OAC5B,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG;OAC/B,MAAM,CAAC,GAAG;KAChB,CAAK,MAAM,IAAI,KAAK,KAAK,GAAG,IAAI,KAAK,KAAK,IAAI,EAAE;AAChD,OAAM,KAAK,GAAG;AACd,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI;OAC3B,IAAI,EAAE,EAAE;AACd,SAAQ,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC;SACd,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM;AACpC,SAAQ,MAAM,CAAC,IAAI,CAAC,CAAC;AACrB,OAAA,CAAO,MAAM;AACb,SAAQ,MAAM,IAAI,KAAK,CAAC,kCAAkC;AAC1D,OAAA;AACA,KAAA;AACA,GAAA;AACA,GAAE,OAAO,MAAM,CAAC,IAAI,CAAC,EAAE;AACvB,CAAA;;AAEA,CAAA,SAAS,0BAA0B,EAAE,UAAU,EAAE,GAAG,EAAE;GACpD,MAAM,IAAI,GAAG,GAAG,KAAK,IAAI,GAAG,MAAM,GAAG;AACvC,GAAE,IAAI,UAAU,CAAC,MAAM,KAAK,SAAS,EAAE;KACnC,UAAU,CAAC,MAAM,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM;AAC9C,GAAA;AACA,GAAE,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;KACrC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;AAClD,GAAA;AACA,GAAE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;KACjC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;AAC1C,GAAA;AACA,GAAE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;KACjC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,IAAI;AAC1C,GAAA;AACA,GAAE,IAAI,UAAU,CAAC,KAAK,KAAK,SAAS,EAAE;KAClC,UAAU,CAAC,KAAK,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK;AAC5C,GAAA;AACA,GAAE,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;KACrC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ;AAClD,GAAA;AACA,GAAE,OAAO;AACT,CAAA;;AAEA,CAAA,SAAS,kBAAkB,EAAE,UAAU,EAAE,OAAO,EAAE;GAChD,MAAM,SAAS,GAAG;;AAEpB,GAAE,IAAI,UAAU,CAAC,QAAQ,KAAK,SAAS,EAAE;AACzC,KAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ;AACtC,KAAI,SAAS,CAAC,IAAI,CAAC,GAAG;AACtB,GAAA;;AAEA,GAAE,IAAI,UAAU,CAAC,IAAI,KAAK,SAAS,EAAE;AACrC,KAAI,IAAI,IAAI,GAAG,QAAQ,CAAC,UAAU,CAAC,IAAI;AACvC,KAAI,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI;;AAEtC,KAAI,IAAI,OAAO,CAAC,MAAM,EAAE;OAClB,IAAI,GAAG,OAAO,CAAC;AACrB,KAAA,CAAK,MAAM;AACX,OAAM,MAAM,OAAO,GAAG,aAAa,CAAC,OAAO,CAAC,IAAI,EAAE,EAAe,CAAE;AACnE,OAAM,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,EAAE;SAC3B,IAAI,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,WAAW,CAAC,CAAC;AACxC,OAAA,CAAO,MAAM;SACL,IAAI,GAAG,UAAU,CAAC;AAC1B,OAAA;AACA,KAAA;AACA,KAAI,SAAS,CAAC,IAAI,CAAC,IAAI;AACvB,GAAA;;AAEA,GAAE,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,UAAU,CAAC,IAAI,KAAK,QAAQ,EAAE;AAClF,KAAI,SAAS,CAAC,IAAI,CAAC,GAAG;KAClB,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;AAC1C,GAAA;;GAEE,OAAO,SAAS,CAAC,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG;CACjD;AAEA,CAAA,KAAc,GAAG;AACjB,GAAE,kBAAkB;AACpB,GAAE,0BAA0B;AAC5B,GAAE,iBAAiB;AACnB,GAAE,aAAa;AACf,GAAE,aAAa;GACb;AACF;;;;;;","x_google_ignoreList":[0]}
1
+ {"version":3,"file":"utils.js","sources":["../../../../../../node_modules/fast-uri/lib/utils.js"],"sourcesContent":["'use strict'\n\n/** @type {(value: string) => boolean} */\nconst isUUID = RegExp.prototype.test.bind(/^[\\da-f]{8}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{4}-[\\da-f]{12}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isIPv4 = RegExp.prototype.test.bind(/^(?:(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)\\.){3}(?:25[0-5]|2[0-4]\\d|1\\d{2}|[1-9]\\d|\\d)$/u)\n\n/** @type {(value: string) => boolean} */\nconst isHexPair = RegExp.prototype.test.bind(/^[\\da-f]{2}$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isUnreserved = RegExp.prototype.test.bind(/^[\\da-z\\-._~]$/iu)\n\n/** @type {(value: string) => boolean} */\nconst isPathCharacter = RegExp.prototype.test.bind(/^[\\da-z\\-._~!$&'()*+,;=:@/]$/iu)\n\n/**\n * @param {Array<string>} input\n * @returns {string}\n */\nfunction stringArrayToHexStripped (input) {\n let acc = ''\n let code = 0\n let i = 0\n\n for (i = 0; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (code === 48) {\n continue\n }\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n break\n }\n\n for (i += 1; i < input.length; i++) {\n code = input[i].charCodeAt(0)\n if (!((code >= 48 && code <= 57) || (code >= 65 && code <= 70) || (code >= 97 && code <= 102))) {\n return ''\n }\n acc += input[i]\n }\n return acc\n}\n\n/**\n * @typedef {Object} GetIPV6Result\n * @property {boolean} error - Indicates if there was an error parsing the IPv6 address.\n * @property {string} address - The parsed IPv6 address.\n * @property {string} [zone] - The zone identifier, if present.\n */\n\n/**\n * @param {string} value\n * @returns {boolean}\n */\nconst nonSimpleDomain = RegExp.prototype.test.bind(/[^!\"$&'()*+,\\-.;=_`a-z{}~]/u)\n\n/**\n * @param {Array<string>} buffer\n * @returns {boolean}\n */\nfunction consumeIsZone (buffer) {\n buffer.length = 0\n return true\n}\n\n/**\n * @param {Array<string>} buffer\n * @param {Array<string>} address\n * @param {GetIPV6Result} output\n * @returns {boolean}\n */\nfunction consumeHextets (buffer, address, output) {\n if (buffer.length) {\n const hex = stringArrayToHexStripped(buffer)\n if (hex !== '') {\n address.push(hex)\n } else {\n output.error = true\n return false\n }\n buffer.length = 0\n }\n return true\n}\n\n/**\n * @param {string} input\n * @returns {GetIPV6Result}\n */\nfunction getIPV6 (input) {\n let tokenCount = 0\n const output = { error: false, address: '', zone: '' }\n /** @type {Array<string>} */\n const address = []\n /** @type {Array<string>} */\n const buffer = []\n let endipv6Encountered = false\n let endIpv6 = false\n\n let consume = consumeHextets\n\n for (let i = 0; i < input.length; i++) {\n const cursor = input[i]\n if (cursor === '[' || cursor === ']') { continue }\n if (cursor === ':') {\n if (endipv6Encountered === true) {\n endIpv6 = true\n }\n if (!consume(buffer, address, output)) { break }\n if (++tokenCount > 7) {\n // not valid\n output.error = true\n break\n }\n if (i > 0 && input[i - 1] === ':') {\n endipv6Encountered = true\n }\n address.push(':')\n continue\n } else if (cursor === '%') {\n if (!consume(buffer, address, output)) { break }\n // switch to zone detection\n consume = consumeIsZone\n } else {\n buffer.push(cursor)\n continue\n }\n }\n if (buffer.length) {\n if (consume === consumeIsZone) {\n output.zone = buffer.join('')\n } else if (endIpv6) {\n address.push(buffer.join(''))\n } else {\n address.push(stringArrayToHexStripped(buffer))\n }\n }\n output.address = address.join('')\n return output\n}\n\n/**\n * @typedef {Object} NormalizeIPv6Result\n * @property {string} host - The normalized host.\n * @property {string} [escapedHost] - The escaped host.\n * @property {boolean} isIPV6 - Indicates if the host is an IPv6 address.\n */\n\n/**\n * @param {string} host\n * @returns {NormalizeIPv6Result}\n */\nfunction normalizeIPv6 (host) {\n if (findToken(host, ':') < 2) { return { host, isIPV6: false } }\n const ipv6 = getIPV6(host)\n\n if (!ipv6.error) {\n let newHost = ipv6.address\n let escapedHost = ipv6.address\n if (ipv6.zone) {\n newHost += '%' + ipv6.zone\n escapedHost += '%25' + ipv6.zone\n }\n return { host: newHost, isIPV6: true, escapedHost }\n } else {\n return { host, isIPV6: false }\n }\n}\n\n/**\n * @param {string} str\n * @param {string} token\n * @returns {number}\n */\nfunction findToken (str, token) {\n let ind = 0\n for (let i = 0; i < str.length; i++) {\n if (str[i] === token) ind++\n }\n return ind\n}\n\n/**\n * @param {string} path\n * @returns {string}\n *\n * @see https://datatracker.ietf.org/doc/html/rfc3986#section-5.2.4\n */\nfunction removeDotSegments (path) {\n let input = path\n const output = []\n let nextSlash = -1\n let len = 0\n\n // eslint-disable-next-line no-cond-assign\n while (len = input.length) {\n if (len === 1) {\n if (input === '.') {\n break\n } else if (input === '/') {\n output.push('/')\n break\n } else {\n output.push(input)\n break\n }\n } else if (len === 2) {\n if (input[0] === '.') {\n if (input[1] === '.') {\n break\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.' || input[1] === '/') {\n output.push('/')\n break\n }\n }\n } else if (len === 3) {\n if (input === '/..') {\n if (output.length !== 0) {\n output.pop()\n }\n output.push('/')\n break\n }\n }\n if (input[0] === '.') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(3)\n continue\n }\n } else if (input[1] === '/') {\n input = input.slice(2)\n continue\n }\n } else if (input[0] === '/') {\n if (input[1] === '.') {\n if (input[2] === '/') {\n input = input.slice(2)\n continue\n } else if (input[2] === '.') {\n if (input[3] === '/') {\n input = input.slice(3)\n if (output.length !== 0) {\n output.pop()\n }\n continue\n }\n }\n }\n }\n\n // Rule 2E: Move normal path segment to output\n if ((nextSlash = input.indexOf('/', 1)) === -1) {\n output.push(input)\n break\n } else {\n output.push(input.slice(0, nextSlash))\n input = input.slice(nextSlash)\n }\n }\n\n return output.join('')\n}\n\n/**\n * Re-escape RFC 3986 gen-delims that must not appear literally in the host.\n * After the URI regex parses, these characters cannot be literal in the host\n * field, so any that appear after decoding came from percent-encoding and\n * must be restored to prevent authority structure changes.\n *\n * @param {string} host\n * @param {boolean} isIP - true for IPv4/IPv6 hosts (skip colon re-escaping)\n * @returns {string}\n */\nconst HOST_DELIMS = { '@': '%40', '/': '%2F', '?': '%3F', '#': '%23', ':': '%3A' }\nconst HOST_DELIM_RE = /[@/?#:]/g\nconst HOST_DELIM_NO_COLON_RE = /[@/?#]/g\n\nfunction reescapeHostDelimiters (host, isIP) {\n const re = isIP ? HOST_DELIM_NO_COLON_RE : HOST_DELIM_RE\n re.lastIndex = 0\n return host.replace(re, (ch) => HOST_DELIMS[ch])\n}\n\n/**\n * Normalizes percent escapes and optionally decodes only unreserved ASCII bytes.\n * Reserved delimiters such as `%2F` and `%2E` stay escaped.\n *\n * @param {string} input\n * @param {boolean} [decodeUnreserved=false]\n * @returns {string}\n */\nfunction normalizePercentEncoding (input, decodeUnreserved = false) {\n if (input.indexOf('%') === -1) {\n return input\n }\n\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decodeUnreserved && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n output += input[i]\n }\n\n return output\n}\n\n/**\n * Normalizes path data without turning reserved escapes into live path syntax.\n * Valid escapes are uppercased, raw unsafe characters are escaped, and only\n * unreserved bytes that are not `.` are decoded.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction normalizePathEncoding (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n const normalizedHex = hex.toUpperCase()\n const decoded = String.fromCharCode(parseInt(normalizedHex, 16))\n\n if (decoded !== '.' && isUnreserved(decoded)) {\n output += decoded\n } else {\n output += '%' + normalizedHex\n }\n\n i += 2\n continue\n }\n }\n\n if (isPathCharacter(input[i])) {\n output += input[i]\n } else {\n output += escape(input[i])\n }\n }\n\n return output\n}\n\n/**\n * Escapes a component while preserving existing valid percent escapes.\n *\n * @param {string} input\n * @returns {string}\n */\nfunction escapePreservingEscapes (input) {\n let output = ''\n\n for (let i = 0; i < input.length; i++) {\n if (input[i] === '%' && i + 2 < input.length) {\n const hex = input.slice(i + 1, i + 3)\n if (isHexPair(hex)) {\n output += '%' + hex.toUpperCase()\n i += 2\n continue\n }\n }\n\n output += escape(input[i])\n }\n\n return output\n}\n\n/**\n * @param {import('../types/index').URIComponent} component\n * @returns {string|undefined}\n */\nfunction recomposeAuthority (component) {\n const uriTokens = []\n\n if (component.userinfo !== undefined) {\n uriTokens.push(component.userinfo)\n uriTokens.push('@')\n }\n\n if (component.host !== undefined) {\n let host = unescape(component.host)\n if (!isIPv4(host)) {\n const ipV6res = normalizeIPv6(host)\n if (ipV6res.isIPV6 === true) {\n host = `[${ipV6res.escapedHost}]`\n } else {\n host = reescapeHostDelimiters(host, false)\n }\n }\n uriTokens.push(host)\n }\n\n if (typeof component.port === 'number' || typeof component.port === 'string') {\n uriTokens.push(':')\n uriTokens.push(String(component.port))\n }\n\n return uriTokens.length ? uriTokens.join('') : undefined\n};\n\nmodule.exports = {\n nonSimpleDomain,\n recomposeAuthority,\n reescapeHostDelimiters,\n normalizePercentEncoding,\n normalizePathEncoding,\n escapePreservingEscapes,\n removeDotSegments,\n isIPv4,\n isUUID,\n normalizeIPv6,\n stringArrayToHexStripped\n}\n"],"names":[],"mappings":"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","x_google_ignoreList":[0]}