@zuplo/cli 6.72.0 → 6.72.2

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 (99) hide show
  1. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify/.github/dependabot.yml +42 -2
  2. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify/README.md +5 -5
  3. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify/index.js +4 -7
  4. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify/package.json +3 -3
  5. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify/test/additionalProperties.test.js +47 -0
  6. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify/test/const.test.js +20 -0
  7. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-json-stringify/test/patternProperties.test.js +24 -0
  8. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/.gitattributes +2 -0
  9. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/.github/dependabot.yml +53 -0
  10. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/.github/workflows/ci.yml +154 -0
  11. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/.github/workflows/lock-threads.yml +19 -0
  12. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/LICENSE +30 -0
  13. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/README.md +152 -0
  14. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/benchmark/benchmark.mjs +159 -0
  15. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/benchmark/encoder.mjs +54 -0
  16. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/benchmark/equal.mjs +51 -0
  17. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/benchmark/non-simple-domain.mjs +22 -0
  18. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/benchmark/package.json +17 -0
  19. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/benchmark/string-array-to-hex-stripped.mjs +24 -0
  20. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/benchmark/ws-is-secure.mjs +65 -0
  21. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/eslint.config.js +6 -0
  22. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/index.js +405 -0
  23. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/lib/schemes.js +267 -0
  24. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/lib/utils.js +585 -0
  25. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/package.json +68 -0
  26. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/ajv.test.js +43 -0
  27. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/equal.test.js +168 -0
  28. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/fixtures/uri-js-parse.json +501 -0
  29. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/fixtures/uri-js-serialize.json +120 -0
  30. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/parse.test.js +325 -0
  31. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/query-fragment-normalization.test.js +33 -0
  32. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/resolve.test.js +87 -0
  33. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/rfc-3986.test.js +90 -0
  34. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/scheme-normalization.test.js +16 -0
  35. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/security-normalization.test.js +39 -0
  36. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/security-utf8-encoding.test.js +0 -0
  37. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/security.test.js +161 -0
  38. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/serialize.test.js +151 -0
  39. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/uri-js-compatibility.test.js +33 -0
  40. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/uri-js.test.js +912 -0
  41. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/test/util.test.js +47 -0
  42. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/tsconfig.json +10 -0
  43. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/types/index.d.ts +51 -0
  44. package/node_modules/@fastify/fast-json-stringify-compiler/node_modules/fast-uri/types/index.tst.ts +15 -0
  45. package/node_modules/@posthog/core/dist/index.d.ts +3 -0
  46. package/node_modules/@posthog/core/dist/index.d.ts.map +1 -1
  47. package/node_modules/@posthog/core/dist/index.js +133 -93
  48. package/node_modules/@posthog/core/dist/index.mjs +2 -1
  49. package/node_modules/@posthog/core/dist/metrics/index.d.ts +61 -0
  50. package/node_modules/@posthog/core/dist/metrics/index.d.ts.map +1 -0
  51. package/node_modules/@posthog/core/dist/metrics/index.js +326 -0
  52. package/node_modules/@posthog/core/dist/metrics/index.mjs +283 -0
  53. package/node_modules/@posthog/core/dist/metrics/metrics-utils.d.ts +41 -0
  54. package/node_modules/@posthog/core/dist/metrics/metrics-utils.d.ts.map +1 -0
  55. package/node_modules/@posthog/core/dist/metrics/metrics-utils.js +117 -0
  56. package/node_modules/@posthog/core/dist/metrics/metrics-utils.mjs +68 -0
  57. package/node_modules/@posthog/core/dist/metrics/types.d.ts +69 -0
  58. package/node_modules/@posthog/core/dist/metrics/types.d.ts.map +1 -0
  59. package/node_modules/@posthog/core/dist/metrics/types.js +18 -0
  60. package/node_modules/@posthog/core/dist/metrics/types.mjs +0 -0
  61. package/node_modules/@posthog/core/dist/posthog-core-stateless.d.ts +2 -0
  62. package/node_modules/@posthog/core/dist/posthog-core-stateless.d.ts.map +1 -1
  63. package/node_modules/@posthog/core/dist/posthog-core-stateless.js +16 -1
  64. package/node_modules/@posthog/core/dist/posthog-core-stateless.mjs +16 -1
  65. package/node_modules/@posthog/core/package.json +2 -2
  66. package/node_modules/@posthog/core/src/index.ts +20 -0
  67. package/node_modules/@posthog/core/src/metrics/index.spec.ts +459 -0
  68. package/node_modules/@posthog/core/src/metrics/index.ts +414 -0
  69. package/node_modules/@posthog/core/src/metrics/metrics-utils.ts +100 -0
  70. package/node_modules/@posthog/core/src/metrics/types.ts +89 -0
  71. package/node_modules/@posthog/core/src/posthog-core-stateless.ts +26 -0
  72. package/node_modules/@posthog/types/dist/capture-metric.d.ts +122 -0
  73. package/node_modules/@posthog/types/dist/capture-metric.d.ts.map +1 -0
  74. package/node_modules/@posthog/types/dist/capture-metric.js +36 -0
  75. package/node_modules/@posthog/types/dist/capture-metric.mjs +2 -0
  76. package/node_modules/@posthog/types/dist/index.d.ts +3 -1
  77. package/node_modules/@posthog/types/dist/index.d.ts.map +1 -1
  78. package/node_modules/@posthog/types/dist/index.js +19 -1
  79. package/node_modules/@posthog/types/dist/index.mjs +2 -0
  80. package/node_modules/@posthog/types/dist/posthog-config.d.ts +60 -0
  81. package/node_modules/@posthog/types/dist/posthog-config.d.ts.map +1 -1
  82. package/node_modules/@posthog/types/package.json +1 -1
  83. package/node_modules/@posthog/types/src/capture-metric.ts +133 -0
  84. package/node_modules/@posthog/types/src/index.ts +17 -0
  85. package/node_modules/@posthog/types/src/posthog-config.ts +62 -0
  86. package/node_modules/@zuplo/core/package.json +1 -1
  87. package/node_modules/@zuplo/graphql/package.json +1 -1
  88. package/node_modules/@zuplo/openapi-tools/package.json +1 -1
  89. package/node_modules/@zuplo/otel/package.json +1 -1
  90. package/node_modules/@zuplo/runtime/out/esm/{chunk-FAOWNDMK.js → chunk-IC7XGD5C.js} +93 -93
  91. package/node_modules/@zuplo/runtime/out/esm/chunk-IC7XGD5C.js.map +1 -0
  92. package/node_modules/@zuplo/runtime/out/esm/index.js +1 -1
  93. package/node_modules/@zuplo/runtime/out/esm/index.js.map +1 -1
  94. package/node_modules/@zuplo/runtime/out/esm/mcp-gateway/index.js +1 -1
  95. package/node_modules/@zuplo/runtime/out/types/index.d.ts +830 -6
  96. package/node_modules/@zuplo/runtime/package.json +1 -1
  97. package/package.json +6 -6
  98. package/node_modules/@zuplo/runtime/out/esm/chunk-FAOWNDMK.js.map +0 -1
  99. /package/node_modules/@zuplo/runtime/out/esm/{chunk-FAOWNDMK.js.LEGAL.txt → chunk-IC7XGD5C.js.LEGAL.txt} +0 -0
@@ -0,0 +1,152 @@
1
+ # fast-uri
2
+
3
+ [![NPM version](https://img.shields.io/npm/v/fast-uri.svg?style=flat)](https://www.npmjs.com/package/fast-uri)
4
+ [![CI](https://github.com/fastify/fast-uri/actions/workflows/ci.yml/badge.svg?branch=main)](https://github.com/fastify/fast-uri/actions/workflows/ci.yml)
5
+ [![neostandard javascript style](https://img.shields.io/badge/code_style-neostandard-brightgreen?style=flat)](https://github.com/neostandard/neostandard)
6
+
7
+ Dependency-free RFC 3986 URI toolbox.
8
+
9
+ ## Usage
10
+
11
+ ## Options
12
+
13
+ All of the above functions can accept an additional options argument that is an object that can contain one or more of the following properties:
14
+
15
+ Malformed authorities and out-of-range ports are reported through the parsed component's `error` field. `normalize()` leaves malformed string inputs unchanged, and `equal()` returns `false` when either string input is malformed.
16
+
17
+ * `scheme` (string)
18
+ Indicates the scheme that the URI should be treated as, overriding the URI's normal scheme parsing behavior.
19
+
20
+ * `reference` (string)
21
+ If set to `"suffix"`, it indicates that the URI is in the suffix format and the parser will use the option's `scheme` property to determine the URI's scheme.
22
+
23
+ * `tolerant` (boolean, false)
24
+ If set to `true`, the parser will relax URI resolving rules.
25
+
26
+ * `absolutePath` (boolean, false)
27
+ If set to `true`, the serializer will not resolve a relative `path` component.
28
+
29
+ * `unicodeSupport` (boolean, false)
30
+ If set to `true`, the parser will unescape non-ASCII characters in the parsed output as per [RFC 3987](https://www.ietf.org/rfc/rfc3987.txt).
31
+
32
+ * `domainHost` (boolean, false)
33
+ If set to `true`, the library will treat the `host` component as a domain name, and convert IDNs (International Domain Names) as per [RFC 5891](https://www.ietf.org/rfc/rfc5891.txt).
34
+
35
+ ### Parse
36
+
37
+ ```js
38
+ const uri = require('fast-uri')
39
+ uri.parse('uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body')
40
+ // Output
41
+ {
42
+ scheme: "uri",
43
+ userinfo: "user:pass",
44
+ host: "example.com",
45
+ port: 123,
46
+ path: "/one/two.three",
47
+ query: "q1=a1&q2=a2",
48
+ fragment: "body"
49
+ }
50
+ ```
51
+
52
+ ### Serialize
53
+
54
+ ```js
55
+ const uri = require('fast-uri')
56
+ uri.serialize({scheme: "http", host: "example.com", fragment: "footer"})
57
+ // Output
58
+ "http://example.com/#footer"
59
+
60
+ ```
61
+
62
+ ### Resolve
63
+
64
+ ```js
65
+ const uri = require('fast-uri')
66
+ uri.resolve("uri://a/b/c/d?q", "../../g")
67
+ // Output
68
+ "uri://a/g"
69
+ ```
70
+
71
+ ### Normalize
72
+
73
+ ```js
74
+ const uri = require('fast-uri')
75
+ uri.normalize('http://example.com/a%2Fb')
76
+ // Output
77
+ "http://example.com/a%2Fb"
78
+ ```
79
+
80
+ Reserved path escapes such as `%2F` and `%2E` are preserved as path data during normalization and comparison.
81
+
82
+ ### Equal
83
+
84
+ ```js
85
+ const uri = require('fast-uri')
86
+ uri.equal("example://a/b/c/%7Bfoo%7D", "eXAMPLE://a/./b/../b/%63/%7bfoo%7d")
87
+ // Output
88
+ true
89
+ ```
90
+
91
+ ## Scheme supports
92
+
93
+ fast-uri supports inserting custom [scheme](https://en.wikipedia.org/wiki/URI_scheme)-dependent processing rules. Currently, fast-uri has built-in support for the following schemes:
94
+
95
+ * http \[[RFC 2616](https://www.ietf.org/rfc/rfc2616.txt)\]
96
+ * https \[[RFC 2818](https://www.ietf.org/rfc/rfc2818.txt)\]
97
+ * ws \[[RFC 6455](https://www.ietf.org/rfc/rfc6455.txt)\]
98
+ * wss \[[RFC 6455](https://www.ietf.org/rfc/rfc6455.txt)\]
99
+ * urn \[[RFC 2141](https://www.ietf.org/rfc/rfc2141.txt)\]
100
+ * urn:uuid \[[RFC 4122](https://www.ietf.org/rfc/rfc4122.txt)\]
101
+
102
+
103
+ ## Benchmarks
104
+
105
+ ```
106
+ fast-uri benchmark
107
+ ┌─────────┬──────────────────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
108
+ │ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
109
+ ├─────────┼──────────────────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
110
+ │ 0 │ 'fast-uri: parse domain' │ '951.31 ± 0.75%' │ '875.00 ± 11.00' │ '1122538 ± 0.01%' │ '1142857 ± 14550' │ 1051187 │
111
+ │ 1 │ 'fast-uri: parse IPv4' │ '443.44 ± 0.22%' │ '406.00 ± 3.00' │ '2422762 ± 0.01%' │ '2463054 ± 18335' │ 2255105 │
112
+ │ 2 │ 'fast-uri: parse IPv6' │ '1241.6 ± 1.74%' │ '1131.0 ± 30.00' │ '875177 ± 0.02%' │ '884173 ± 24092' │ 805399 │
113
+ │ 3 │ 'fast-uri: parse URN' │ '689.19 ± 4.29%' │ '618.00 ± 9.00' │ '1598373 ± 0.01%' │ '1618123 ± 23913' │ 1450972 │
114
+ │ 4 │ 'fast-uri: parse URN uuid' │ '1025.4 ± 2.02%' │ '921.00 ± 19.00' │ '1072419 ± 0.02%' │ '1085776 ± 22871' │ 975236 │
115
+ │ 5 │ 'fast-uri: serialize uri' │ '1028.5 ± 0.53%' │ '933.00 ± 43.00' │ '1063310 ± 0.02%' │ '1071811 ± 50523' │ 972249 │
116
+ │ 6 │ 'fast-uri: serialize long uri with dots' │ '1805.1 ± 0.52%' │ '1627.0 ± 17.00' │ '602620 ± 0.02%' │ '614628 ± 6490' │ 553997 │
117
+ │ 7 │ 'fast-uri: serialize IPv6' │ '2569.4 ± 2.69%' │ '2302.0 ± 21.00' │ '426080 ± 0.03%' │ '434405 ± 3999' │ 389194 │
118
+ │ 8 │ 'fast-uri: serialize ws' │ '979.39 ± 0.43%' │ '882.00 ± 8.00' │ '1111665 ± 0.02%' │ '1133787 ± 10378' │ 1021045 │
119
+ │ 9 │ 'fast-uri: resolve' │ '2208.2 ± 1.08%' │ '1980.0 ± 24.00' │ '495001 ± 0.03%' │ '505051 ± 6049' │ 452848 │
120
+ └─────────┴──────────────────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
121
+ uri-js benchmark
122
+ ┌─────────┬───────────────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
123
+ │ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
124
+ ├─────────┼───────────────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
125
+ │ 0 │ 'urijs: parse domain' │ '3618.3 ± 0.43%' │ '3314.0 ± 33.00' │ '294875 ± 0.04%' │ '301750 ± 2975' │ 276375 │
126
+ │ 1 │ 'urijs: parse IPv4' │ '4024.1 ± 0.41%' │ '3751.0 ± 25.00' │ '261981 ± 0.04%' │ '266596 ± 1789' │ 248506 │
127
+ │ 2 │ 'urijs: parse IPv6' │ '5417.2 ± 0.46%' │ '4968.0 ± 43.00' │ '196023 ± 0.05%' │ '201288 ± 1727' │ 184598 │
128
+ │ 3 │ 'urijs: parse URN' │ '1324.2 ± 0.23%' │ '1229.0 ± 17.00' │ '801535 ± 0.02%' │ '813670 ± 11413' │ 755185 │
129
+ │ 4 │ 'urijs: parse URN uuid' │ '1822.0 ± 3.08%' │ '1655.0 ± 15.00' │ '594433 ± 0.02%' │ '604230 ± 5427' │ 548843 │
130
+ │ 5 │ 'urijs: serialize uri' │ '4196.8 ± 0.36%' │ '3908.0 ± 27.00' │ '251146 ± 0.04%' │ '255885 ± 1756' │ 238276 │
131
+ │ 6 │ 'urijs: serialize long uri with dots' │ '8331.0 ± 1.30%' │ '7658.0 ± 72.00' │ '126440 ± 0.07%' │ '130582 ± 1239' │ 120034 │
132
+ │ 7 │ 'urijs: serialize IPv6' │ '5685.5 ± 0.30%' │ '5366.0 ± 33.00' │ '182632 ± 0.05%' │ '186359 ± 1153' │ 175886 │
133
+ │ 8 │ 'urijs: serialize ws' │ '4159.3 ± 0.20%' │ '3899.0 ± 28.00' │ '250459 ± 0.04%' │ '256476 ± 1855' │ 240423 │
134
+ │ 9 │ 'urijs: resolve' │ '6729.9 ± 0.39%' │ '6261.0 ± 37.00' │ '156361 ± 0.06%' │ '159719 ± 949' │ 148591 │
135
+ └─────────┴───────────────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
136
+ WHATWG URL benchmark
137
+ ┌─────────┬────────────────────────────┬──────────────────┬──────────────────┬────────────────────────┬────────────────────────┬─────────┐
138
+ │ (index) │ Task name │ Latency avg (ns) │ Latency med (ns) │ Throughput avg (ops/s) │ Throughput med (ops/s) │ Samples │
139
+ ├─────────┼────────────────────────────┼──────────────────┼──────────────────┼────────────────────────┼────────────────────────┼─────────┤
140
+ │ 0 │ 'WHATWG URL: parse domain' │ '475.22 ± 0.20%' │ '444.00 ± 5.00' │ '2217599 ± 0.01%' │ '2252252 ± 25652' │ 2104289 │
141
+ │ 1 │ 'WHATWG URL: parse URN' │ '384.78 ± 0.85%' │ '350.00 ± 5.00' │ '2809071 ± 0.01%' │ '2857143 ± 41408' │ 2598885 │
142
+ └─────────┴────────────────────────────┴──────────────────┴──────────────────┴────────────────────────┴────────────────────────┴─────────┘
143
+ ```
144
+
145
+ ## TODO
146
+
147
+ - [ ] Support MailTo
148
+ - [ ] Be 100% iso compatible with uri-js
149
+
150
+ ## License
151
+
152
+ Licensed under [BSD-3-Clause](./LICENSE).
@@ -0,0 +1,159 @@
1
+ import { Bench } from 'tinybench'
2
+ import { fastUri } from '../index.js'
3
+ import { parse as uriJsParse, serialize as uriJsSerialize, resolve as uriJsResolve, equal as uriJsEqual } from 'uri-js'
4
+
5
+ const base = 'uri://a/b/c/d;p?q'
6
+
7
+ const domain = 'https://example.com/foo#bar$fiz'
8
+ const ipv4 = '//10.10.10.10'
9
+ const ipv6 = '//[2001:db8::7]'
10
+ const urn = 'urn:foo:a123,456'
11
+ const urnuuid = 'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6'
12
+
13
+ const urnuuidComponent = {
14
+ scheme: 'urn',
15
+ nid: 'uuid',
16
+ uuid: 'f81d4fae-7dec-11d0-a765-00a0c91e6bf6'
17
+ }
18
+
19
+ const {
20
+ parse: fastUriParse,
21
+ serialize: fastUriSerialize,
22
+ resolve: fastUriResolve,
23
+ equal: fastUriEqual,
24
+ } = fastUri
25
+
26
+ // Initialization as there is a lot to parse at first
27
+ // eg: regexes
28
+ fastUriParse(domain)
29
+ uriJsParse(domain)
30
+
31
+ const benchFastUri = new Bench({ name: 'fast-uri benchmark' })
32
+ const benchUriJs = new Bench({ name: 'uri-js benchmark' })
33
+ const benchWHATWG = new Bench({ name: 'WHATWG URL benchmark' })
34
+
35
+ benchFastUri.add('fast-uri: parse domain', function () {
36
+ fastUriParse(domain)
37
+ })
38
+ benchUriJs.add('urijs: parse domain', function () {
39
+ uriJsParse(domain)
40
+ })
41
+ benchWHATWG.add('WHATWG URL: parse domain', function () {
42
+ // eslint-disable-next-line
43
+ new URL(domain)
44
+ })
45
+ benchFastUri.add('fast-uri: parse IPv4', function () {
46
+ fastUriParse(ipv4)
47
+ })
48
+ benchUriJs.add('urijs: parse IPv4', function () {
49
+ uriJsParse(ipv4)
50
+ })
51
+ benchFastUri.add('fast-uri: parse IPv6', function () {
52
+ fastUriParse(ipv6)
53
+ })
54
+ benchUriJs.add('urijs: parse IPv6', function () {
55
+ uriJsParse(ipv6)
56
+ })
57
+ benchFastUri.add('fast-uri: parse URN', function () {
58
+ fastUriParse(urn)
59
+ })
60
+ benchUriJs.add('urijs: parse URN', function () {
61
+ uriJsParse(urn)
62
+ })
63
+ benchWHATWG.add('WHATWG URL: parse URN', function () {
64
+ // eslint-disable-next-line
65
+ new URL(urn)
66
+ })
67
+ benchFastUri.add('fast-uri: parse URN uuid', function () {
68
+ fastUriParse(urnuuid)
69
+ })
70
+ benchUriJs.add('urijs: parse URN uuid', function () {
71
+ uriJsParse(urnuuid)
72
+ })
73
+ benchFastUri.add('fast-uri: serialize URN uuid', function () {
74
+ fastUriSerialize(urnuuidComponent)
75
+ })
76
+ benchUriJs.add('uri-js: serialize URN uuid', function () {
77
+ uriJsSerialize(urnuuidComponent)
78
+ })
79
+ benchFastUri.add('fast-uri: serialize uri', function () {
80
+ fastUriSerialize({
81
+ scheme: 'uri',
82
+ userinfo: 'foo:bar',
83
+ host: 'example.com',
84
+ port: 1,
85
+ path: 'path',
86
+ query: 'query',
87
+ fragment: 'fragment'
88
+ })
89
+ })
90
+ benchUriJs.add('urijs: serialize uri', function () {
91
+ uriJsSerialize({
92
+ scheme: 'uri',
93
+ userinfo: 'foo:bar',
94
+ host: 'example.com',
95
+ port: 1,
96
+ path: 'path',
97
+ query: 'query',
98
+ fragment: 'fragment'
99
+ })
100
+ })
101
+ benchFastUri.add('fast-uri: serialize long uri with dots', function () {
102
+ fastUriSerialize({
103
+ scheme: 'uri',
104
+ userinfo: 'foo:bar',
105
+ host: 'example.com',
106
+ port: 1,
107
+ path: './a/./b/c/../.././d/../e/f/.././/',
108
+ query: 'query',
109
+ fragment: 'fragment'
110
+ })
111
+ })
112
+ benchUriJs.add('urijs: serialize long uri with dots', function () {
113
+ uriJsSerialize({
114
+ scheme: 'uri',
115
+ userinfo: 'foo:bar',
116
+ host: 'example.com',
117
+ port: 1,
118
+ path: './a/./b/c/../.././d/../e/f/.././/',
119
+ query: 'query',
120
+ fragment: 'fragment'
121
+ })
122
+ })
123
+ benchFastUri.add('fast-uri: serialize IPv6', function () {
124
+ fastUriSerialize({ host: '2606:2800:220:1:248:1893:25c8:1946' })
125
+ })
126
+ benchUriJs.add('urijs: serialize IPv6', function () {
127
+ uriJsSerialize({ host: '2606:2800:220:1:248:1893:25c8:1946' })
128
+ })
129
+ benchFastUri.add('fast-uri: serialize ws', function () {
130
+ fastUriSerialize({ scheme: 'ws', host: 'example.com', resourceName: '/foo?bar', secure: true })
131
+ })
132
+ benchUriJs.add('urijs: serialize ws', function () {
133
+ uriJsSerialize({ scheme: 'ws', host: 'example.com', resourceName: '/foo?bar', secure: true })
134
+ })
135
+ benchFastUri.add('fast-uri: resolve', function () {
136
+ fastUriResolve(base, '../../../g')
137
+ })
138
+ benchUriJs.add('urijs: resolve', function () {
139
+ uriJsResolve(base, '../../../g')
140
+ })
141
+
142
+ benchFastUri.add('fast-uri: equal', function () {
143
+ fastUriEqual('example://a/b/c/%7Bfoo%7D', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d')
144
+ })
145
+ benchUriJs.add('urijs: equal', function () {
146
+ uriJsEqual('example://a/b/c/%7Bfoo%7D', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d')
147
+ })
148
+
149
+ await benchFastUri.run()
150
+ console.log(benchFastUri.name)
151
+ console.table(benchFastUri.table())
152
+
153
+ await benchUriJs.run()
154
+ console.log(benchUriJs.name)
155
+ console.table(benchUriJs.table())
156
+
157
+ await benchWHATWG.run()
158
+ console.log(benchWHATWG.name)
159
+ console.table(benchWHATWG.table())
@@ -0,0 +1,54 @@
1
+ import { Bench } from 'tinybench'
2
+ import { fastUri } from '../index.js'
3
+
4
+ const { serialize, normalize, parse } = fastUri
5
+
6
+ const asciiPath = '/users/profile/settings/account'
7
+ const asciiPathWithSpaces = '/users/john doe/profile page'
8
+ const cjkPath = '/ユーザー/プロフィール/設定'
9
+ const mixedPath = '/users/日本/profile-📱-emoji/設定'
10
+ const emojiPath = '/🚀/🌍/🎉/end'
11
+ const longAsciiPath = '/' + 'a/b/c/d/e/f/g/h/'.repeat(20)
12
+ const longUtf8Path = '/' + '日本/中文/한국/'.repeat(20)
13
+
14
+ const bench = new Bench({ name: 'encoder bench', time: 1000 })
15
+
16
+ bench.add('serialize ascii path', () => {
17
+ serialize({ scheme: 'http', host: 'example.com', path: asciiPath })
18
+ })
19
+
20
+ bench.add('serialize ascii path with spaces', () => {
21
+ serialize({ scheme: 'http', host: 'example.com', path: asciiPathWithSpaces })
22
+ })
23
+
24
+ bench.add('serialize cjk path', () => {
25
+ serialize({ scheme: 'http', host: 'example.com', path: cjkPath })
26
+ })
27
+
28
+ bench.add('serialize mixed path', () => {
29
+ serialize({ scheme: 'http', host: 'example.com', path: mixedPath })
30
+ })
31
+
32
+ bench.add('serialize emoji path', () => {
33
+ serialize({ scheme: 'http', host: 'example.com', path: emojiPath })
34
+ })
35
+
36
+ bench.add('serialize long ascii path', () => {
37
+ serialize({ scheme: 'http', host: 'example.com', path: longAsciiPath })
38
+ })
39
+
40
+ bench.add('serialize long utf8 path', () => {
41
+ serialize({ scheme: 'http', host: 'example.com', path: longUtf8Path })
42
+ })
43
+
44
+ bench.add('normalize utf8 uri', () => {
45
+ normalize('http://example.com/日本/profile')
46
+ })
47
+
48
+ bench.add('parse utf8 uri', () => {
49
+ parse('http://example.com/日本/profile')
50
+ })
51
+
52
+ await bench.run()
53
+ console.log(bench.name)
54
+ console.table(bench.table())
@@ -0,0 +1,51 @@
1
+ import { Bench } from 'tinybench'
2
+ import { fastUri } from '../index.js'
3
+
4
+ const {
5
+ equal: fastUriEqual,
6
+ parse: fastUriParse,
7
+ } = fastUri
8
+
9
+ const stringA = 'example://a/b/c/%7Bfoo%7D'
10
+ const stringB = 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d'
11
+
12
+ const componentA = fastUriParse(stringA)
13
+ const componentB = fastUriParse(stringB)
14
+
15
+ const benchFastUri = new Bench({ name: 'fast-uri equal' })
16
+
17
+ benchFastUri.add('equal string with string', function () {
18
+ fastUriEqual(stringA, stringA)
19
+ })
20
+
21
+ benchFastUri.add('equal component with component', function () {
22
+ fastUriEqual(componentA, componentA)
23
+ })
24
+
25
+ benchFastUri.add('equal component with string', function () {
26
+ fastUriEqual(componentA, stringA)
27
+ })
28
+
29
+ benchFastUri.add('equal string with component', function () {
30
+ fastUriEqual(stringA, componentA)
31
+ })
32
+
33
+ benchFastUri.add('not equal string with string', function () {
34
+ fastUriEqual(stringA, stringB)
35
+ })
36
+
37
+ benchFastUri.add('not equal component with component', function () {
38
+ fastUriEqual(componentA, componentB)
39
+ })
40
+
41
+ benchFastUri.add('not equal component with string', function () {
42
+ fastUriEqual(componentA, stringB)
43
+ })
44
+
45
+ benchFastUri.add('not equal string with component', function () {
46
+ fastUriEqual(stringA, componentB)
47
+ })
48
+
49
+ await benchFastUri.run()
50
+ console.log(benchFastUri.name)
51
+ console.table(benchFastUri.table())
@@ -0,0 +1,22 @@
1
+ import { Bench } from 'tinybench'
2
+ import { nonSimpleDomain } from '../lib/utils.js'
3
+
4
+ const benchNonSimpleDomain = new Bench({ name: 'nonSimpleDomain' })
5
+
6
+ const exampleCom = 'example.com'
7
+ const exaumlmpleCom = 'exämple.com'
8
+ const longDomain = 'abc'.repeat(100) + '.com'
9
+
10
+ console.assert(nonSimpleDomain(exampleCom) === false, 'example.com should be a simple domain')
11
+ console.assert(nonSimpleDomain(exaumlmpleCom) === true, 'exämple.com should not be a simple domain')
12
+ console.assert(nonSimpleDomain(longDomain) === false, `${longDomain} should be a simple domain?`)
13
+
14
+ benchNonSimpleDomain.add('nonSimpleDomain', function () {
15
+ nonSimpleDomain(exampleCom)
16
+ nonSimpleDomain(exaumlmpleCom)
17
+ nonSimpleDomain(longDomain)
18
+ })
19
+
20
+ await benchNonSimpleDomain.run()
21
+ console.log(benchNonSimpleDomain.name)
22
+ console.table(benchNonSimpleDomain.table())
@@ -0,0 +1,17 @@
1
+ {
2
+ "name": "benchmark",
3
+ "version": "1.0.0",
4
+ "description": "",
5
+ "main": "index.js",
6
+ "private": true,
7
+ "scripts": {
8
+ "bench": "node benchmark.mjs"
9
+ },
10
+ "keywords": [],
11
+ "author": "",
12
+ "license": "ISC",
13
+ "dependencies": {
14
+ "tinybench": "^5.0.0",
15
+ "uri-js": "^4.4.1"
16
+ }
17
+ }
@@ -0,0 +1,24 @@
1
+ import { Bench } from 'tinybench'
2
+ import { stringArrayToHexStripped } from '../lib/utils.js'
3
+
4
+ const benchStringArrayToHexStripped = new Bench({ name: 'stringArrayToHexStripped' })
5
+
6
+ const case1 = ['0', '0', '0', '0']
7
+ const case2 = ['0', '0', '0', '1']
8
+ const case3 = ['0', '0', '1', '0']
9
+ const case4 = ['0', '1', '0', '0']
10
+ const case5 = ['1', '0', '0', '0']
11
+ const case6 = ['1', '0', '0', '1']
12
+
13
+ benchStringArrayToHexStripped.add('stringArrayToHexStripped', function () {
14
+ stringArrayToHexStripped(case1)
15
+ stringArrayToHexStripped(case2)
16
+ stringArrayToHexStripped(case3)
17
+ stringArrayToHexStripped(case4)
18
+ stringArrayToHexStripped(case5)
19
+ stringArrayToHexStripped(case6)
20
+ })
21
+
22
+ await benchStringArrayToHexStripped.run()
23
+ console.log(benchStringArrayToHexStripped.name)
24
+ console.table(benchStringArrayToHexStripped.table())
@@ -0,0 +1,65 @@
1
+ import { Bench } from 'tinybench'
2
+ import { wsIsSecure } from '../lib/schemes.js'
3
+
4
+ const benchWsIsSecure = new Bench({ name: 'wsIsSecure' })
5
+
6
+ const wsComponentAttributeSecureTrue = {
7
+ scheme: 'ws',
8
+ secure: true,
9
+ }
10
+
11
+ const wsComponentAttributeSecureFalse = {
12
+ scheme: 'ws',
13
+ secure: false,
14
+ }
15
+
16
+ const wssComponent = {
17
+ scheme: 'wss',
18
+ }
19
+
20
+ const wssComponentMixedCase = {
21
+ scheme: 'Wss',
22
+ }
23
+
24
+ const wssComponentUpperCase = {
25
+ scheme: 'WSS',
26
+ }
27
+
28
+ const httpComponent = {
29
+ scheme: 'http',
30
+ }
31
+
32
+ console.assert(wsIsSecure(wsComponentAttributeSecureTrue) === true, 'wsComponentAttributeSecureTrue should be secure')
33
+ console.assert(wsIsSecure(wsComponentAttributeSecureFalse) === false, 'wsComponentAttributeSecureFalse should not be secure')
34
+ console.assert(wsIsSecure(wssComponent) === true, 'wssComponent should be secure')
35
+ console.assert(wsIsSecure(wssComponentMixedCase) === true, 'wssComponentMixedCase should be secure')
36
+ console.assert(wsIsSecure(wssComponentUpperCase) === true, 'wssComponentUpperCase should be secure')
37
+ console.assert(wsIsSecure(httpComponent) === false, 'httpComponent should not be secure')
38
+
39
+ benchWsIsSecure.add(JSON.stringify(wsComponentAttributeSecureFalse), function () {
40
+ wsIsSecure(wsComponentAttributeSecureFalse)
41
+ })
42
+
43
+ benchWsIsSecure.add(JSON.stringify(wsComponentAttributeSecureTrue), function () {
44
+ wsIsSecure(wsComponentAttributeSecureTrue)
45
+ })
46
+
47
+ benchWsIsSecure.add(JSON.stringify(wssComponent), function () {
48
+ wsIsSecure(wssComponent)
49
+ })
50
+
51
+ benchWsIsSecure.add(JSON.stringify(wssComponentMixedCase), function () {
52
+ wsIsSecure(wssComponentMixedCase)
53
+ })
54
+
55
+ benchWsIsSecure.add(JSON.stringify(wssComponentUpperCase), function () {
56
+ wsIsSecure(wssComponentUpperCase)
57
+ })
58
+
59
+ benchWsIsSecure.add(JSON.stringify(httpComponent), function () {
60
+ wsIsSecure(httpComponent)
61
+ })
62
+
63
+ await benchWsIsSecure.run()
64
+ console.log(benchWsIsSecure.name)
65
+ console.table(benchWsIsSecure.table())
@@ -0,0 +1,6 @@
1
+ 'use strict'
2
+
3
+ module.exports = require('neostandard')({
4
+ ignores: require('neostandard').resolveIgnoresFromGitignore(),
5
+ ts: true
6
+ })