@zuplo/cli 6.72.0 → 6.72.1

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,168 @@
1
+ 'use strict'
2
+
3
+ const test = require('tape')
4
+ const fastURI = require('..')
5
+
6
+ const fn = fastURI.equal
7
+ const runTest = (t, suite) => {
8
+ suite.forEach(s => {
9
+ const operator = s.result ? '==' : '!='
10
+ t.equal(fn(s.pair[0], s.pair[1]), s.result, `${s.pair[0]} ${operator} ${s.pair[1]}`)
11
+ t.equal(fn(s.pair[1], s.pair[0]), s.result, `${s.pair[1]} ${operator} ${s.pair[0]}`)
12
+ })
13
+ }
14
+
15
+ test('URI Equals', (t) => {
16
+ const suite = [
17
+ { pair: ['example://a/b/c/%7Bfoo%7D', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d'], result: true }, // test from RFC 3986
18
+ { pair: ['http://example.org/~user', 'http://example.org/%7euser'], result: true } // test from RFC 3987
19
+ ]
20
+ runTest(t, suite)
21
+ t.end()
22
+ })
23
+
24
+ // test('IRI Equals', (t) => {
25
+ // // example from RFC 3987
26
+ // t.equal(URI.equal('example://a/b/c/%7Bfoo%7D/ros\xE9', 'eXAMPLE://a/./b/../b/%63/%7bfoo%7d/ros%C3%A9', IRI_OPTION), true)
27
+ // t.end()
28
+ // })
29
+
30
+ test('HTTP Equals', (t) => {
31
+ const suite = [
32
+ // test from RFC 2616
33
+ { pair: ['http://abc.com:80/~smith/home.html', 'http://abc.com/~smith/home.html'], result: true },
34
+ { pair: [{ scheme: 'http', host: 'abc.com', port: 80, path: '/~smith/home.html' }, 'http://abc.com/~smith/home.html'], result: true },
35
+ { pair: ['http://ABC.com/%7Esmith/home.html', 'http://abc.com/~smith/home.html'], result: true },
36
+ { pair: ['http://ABC.com:/%7esmith/home.html', 'http://abc.com/~smith/home.html'], result: true },
37
+ { pair: ['HTTP://ABC.COM', 'http://abc.com/'], result: true },
38
+ // test from RFC 3986
39
+ { pair: ['http://example.com:/', 'http://example.com:80/'], result: true }
40
+ ]
41
+ runTest(t, suite)
42
+ t.end()
43
+ })
44
+
45
+ test('HTTPS Equals', (t) => {
46
+ const suite = [
47
+ { pair: ['https://example.com', 'https://example.com:443/'], result: true },
48
+ { pair: ['https://example.com:/', 'https://example.com:443/'], result: true }
49
+ ]
50
+ runTest(t, suite)
51
+ t.end()
52
+ })
53
+
54
+ test('URN Equals', (t) => {
55
+ const suite = [
56
+ // test from RFC 2141
57
+ { pair: ['urn:foo:a123,456', 'urn:foo:a123,456'], result: true },
58
+ { pair: ['urn:foo:a123,456', 'URN:foo:a123,456'], result: true },
59
+ { pair: ['urn:foo:a123,456', 'urn:FOO:a123,456'], result: true }
60
+ ]
61
+
62
+ // Disabling for now as the whole equal logic might need
63
+ // to be refactored
64
+ // t.equal(URI.equal('urn:foo:a123,456', 'urn:foo:A123,456'), false)
65
+ // t.equal(URI.equal('urn:foo:a123%2C456', 'URN:FOO:a123%2c456'), true)
66
+
67
+ runTest(t, suite)
68
+
69
+ t.throws(() => {
70
+ fn('urn:', 'urn:FOO:a123,456')
71
+ }, 'URN without nid cannot be serialized')
72
+
73
+ t.end()
74
+ })
75
+
76
+ test('UUID Equals', (t) => {
77
+ const suite = [
78
+ { pair: ['URN:UUID:F81D4FAE-7DEC-11D0-A765-00A0C91E6BF6', 'urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6'], result: true }
79
+ ]
80
+
81
+ runTest(t, suite)
82
+ t.end()
83
+ })
84
+
85
+ // test('Mailto Equals', (t) => {
86
+ // // tests from RFC 6068
87
+ // t.equal(URI.equal('mailto:addr1@an.example,addr2@an.example', 'mailto:?to=addr1@an.example,addr2@an.example'), true)
88
+ // t.equal(URI.equal('mailto:?to=addr1@an.example,addr2@an.example', 'mailto:addr1@an.example?to=addr2@an.example'), true)
89
+ // t.end()
90
+ // })
91
+
92
+ test('WS Equal', (t) => {
93
+ const suite = [
94
+ { pair: ['WS://ABC.COM:80/chat#one', 'ws://abc.com/chat'], result: true }
95
+ ]
96
+
97
+ runTest(t, suite)
98
+ t.end()
99
+ })
100
+
101
+ test('WSS Equal', (t) => {
102
+ const suite = [
103
+ { pair: ['WSS://ABC.COM:443/chat#one', 'wss://abc.com/chat'], result: true }
104
+ ]
105
+
106
+ runTest(t, suite)
107
+ t.end()
108
+ })
109
+
110
+ test('URI Equals tolerates malformed fragments', (t) => {
111
+ t.equal(
112
+ fastURI.equal('http://example.com/#%E0%A4A', 'http://example.com/#%E0%A4A'),
113
+ true,
114
+ 'malformed fragment does not throw during equality checks'
115
+ )
116
+ t.end()
117
+ })
118
+
119
+ test('URI Equals — raw UTF-8 char equals its percent-encoded UTF-8 form', (t) => {
120
+ const suite = [
121
+ // BMP characters
122
+ { pair: ['http://example.com/日本', 'http://example.com/%E6%97%A5%E6%9C%AC'], result: true },
123
+ { pair: ['http://example.com/café', 'http://example.com/caf%C3%A9'], result: true },
124
+ { pair: ['http://example.com/€', 'http://example.com/%E2%82%AC'], result: true },
125
+ { pair: ['http://example.com/中文', 'http://example.com/%E4%B8%AD%E6%96%87'], result: true },
126
+ // supplementary plane (emoji, surrogate pairs)
127
+ { pair: ['http://example.com/🚀', 'http://example.com/%F0%9F%9A%80'], result: true },
128
+ { pair: ['http://example.com/😀', 'http://example.com/%F0%9F%98%80'], result: true },
129
+ // mixed encoded + raw in same path
130
+ { pair: ['http://example.com/users/日本/profile', 'http://example.com/users/%E6%97%A5%E6%9C%AC/profile'], result: true },
131
+ { pair: ['http://example.com/a/€/b', 'http://example.com/a/%E2%82%AC/b'], result: true }
132
+ ]
133
+ runTest(t, suite)
134
+ t.end()
135
+ })
136
+
137
+ test('URI Equals — percent-encoded UTF-8 is case-insensitive in hex digits', (t) => {
138
+ const suite = [
139
+ { pair: ['http://example.com/caf%C3%A9', 'http://example.com/caf%c3%a9'], result: true },
140
+ { pair: ['http://example.com/%E6%97%A5', 'http://example.com/%e6%97%a5'], result: true },
141
+ { pair: ['http://example.com/%F0%9F%9A%80', 'http://example.com/%f0%9f%9a%80'], result: true }
142
+ ]
143
+ runTest(t, suite)
144
+ t.end()
145
+ })
146
+
147
+ test('URI Equals — different Unicode code points are not equal', (t) => {
148
+ const suite = [
149
+ { pair: ['http://example.com/日本', 'http://example.com/中文'], result: false },
150
+ { pair: ['http://example.com/café', 'http://example.com/cafe'], result: false },
151
+ { pair: ['http://example.com/🚀', 'http://example.com/🎉'], result: false }
152
+ ]
153
+ runTest(t, suite)
154
+ t.end()
155
+ })
156
+
157
+ test('URI Equals — Latin-1 byte is not equal to UTF-8 multi-byte encoding', (t) => {
158
+ // Parser-differential guard: %C3%A9 (UTF-8 for "é") must NOT equal %E9
159
+ // (raw Latin-1 byte). The old escape() emitted single Latin-1 bytes for
160
+ // non-ASCII, which would have made these incorrectly compare equal in a
161
+ // round-tripped URI.
162
+ const suite = [
163
+ { pair: ['http://example.com/caf%C3%A9', 'http://example.com/caf%E9'], result: false },
164
+ { pair: ['http://example.com/%E6%97%A5', 'http://example.com/%E6'], result: false }
165
+ ]
166
+ runTest(t, suite)
167
+ t.end()
168
+ })
@@ -0,0 +1,501 @@
1
+ [
2
+ [
3
+ "//www.g.com/error\n/bleh/bleh",
4
+ {
5
+ "host": "www.g.com",
6
+ "path": "/error%0A/bleh/bleh",
7
+ "reference": "relative"
8
+ }
9
+ ],
10
+ [
11
+ "https://fastify.org",
12
+ {
13
+ "scheme": "https",
14
+ "host": "fastify.org",
15
+ "path": "",
16
+ "reference": "absolute"
17
+ }
18
+ ],
19
+ [
20
+ "/definitions/Record%3Cstring%2CPerson%3E",
21
+ {
22
+ "path": "/definitions/Record%3Cstring%2CPerson%3E",
23
+ "reference": "relative"
24
+ }
25
+ ],
26
+ [
27
+ "//10.10.10.10",
28
+ {
29
+ "host": "10.10.10.10",
30
+ "path": "",
31
+ "reference": "relative"
32
+ }
33
+ ],
34
+ [
35
+ "//10.10.000.10",
36
+ {
37
+ "host": "10.10.0.10",
38
+ "path": "",
39
+ "reference": "relative"
40
+ }
41
+ ],
42
+ [
43
+ "//[2001:db8::7%en0]",
44
+ {
45
+ "host": "2001:db8::7%en0",
46
+ "path": "",
47
+ "reference": "relative"
48
+ }
49
+ ],
50
+ [
51
+ "//[2001:dbZ::1]:80",
52
+ {
53
+ "host": "[2001:dbz::1]",
54
+ "port": 80,
55
+ "path": "",
56
+ "reference": "relative"
57
+ }
58
+ ],
59
+ [
60
+ "//[2001:db8::1]:80",
61
+ {
62
+ "host": "2001:db8::1",
63
+ "port": 80,
64
+ "path": "",
65
+ "reference": "relative"
66
+ }
67
+ ],
68
+ [
69
+ "//[2001:db8::001]:80",
70
+ {
71
+ "host": "2001:db8::1",
72
+ "port": 80,
73
+ "path": "",
74
+ "reference": "relative"
75
+ }
76
+ ],
77
+ [
78
+ "uri://user:pass@example.com:123/one/two.three?q1=a1&q2=a2#body",
79
+ {
80
+ "scheme": "uri",
81
+ "userinfo": "user:pass",
82
+ "host": "example.com",
83
+ "port": 123,
84
+ "path": "/one/two.three",
85
+ "query": "q1=a1&q2=a2",
86
+ "fragment": "body",
87
+ "reference": "uri"
88
+ }
89
+ ],
90
+ [
91
+ "http://user:pass@example.com:123/one/space in.url?q1=a1&q2=a2#body",
92
+ {
93
+ "scheme": "http",
94
+ "userinfo": "user:pass",
95
+ "host": "example.com",
96
+ "port": 123,
97
+ "path": "/one/space%20in.url",
98
+ "query": "q1=a1&q2=a2",
99
+ "fragment": "body",
100
+ "reference": "uri"
101
+ }
102
+ ],
103
+ [
104
+ "http://User:Pass@example.com:123/one/space in.url?q1=a1&q2=a2#body",
105
+ {
106
+ "scheme": "http",
107
+ "userinfo": "User:Pass",
108
+ "host": "example.com",
109
+ "port": 123,
110
+ "path": "/one/space%20in.url",
111
+ "query": "q1=a1&q2=a2",
112
+ "fragment": "body",
113
+ "reference": "uri"
114
+ }
115
+ ],
116
+ [
117
+ "http://A%3AB@example.com:123/one/space",
118
+ {
119
+ "scheme": "http",
120
+ "userinfo": "A%3AB",
121
+ "host": "example.com",
122
+ "port": 123,
123
+ "path": "/one/space",
124
+ "reference": "absolute"
125
+ }
126
+ ],
127
+ [
128
+ "//[::ffff:129.144.52.38]",
129
+ {
130
+ "host": "::ffff:129.144.52.38",
131
+ "path": "",
132
+ "reference": "relative"
133
+ }
134
+ ],
135
+ [
136
+ "uri://10.10.10.10.example.com/en/process",
137
+ {
138
+ "scheme": "uri",
139
+ "host": "10.10.10.10.example.com",
140
+ "path": "/en/process",
141
+ "reference": "absolute"
142
+ }
143
+ ],
144
+ [
145
+ "//[2606:2800:220:1:248:1893:25c8:1946]/test",
146
+ {
147
+ "host": "2606:2800:220:1:248:1893:25c8:1946",
148
+ "path": "/test",
149
+ "reference": "relative"
150
+ }
151
+ ],
152
+ [
153
+ "ws://example.com/chat",
154
+ {
155
+ "scheme": "ws",
156
+ "host": "example.com",
157
+ "reference": "absolute",
158
+ "secure": false,
159
+ "resourceName": "/chat"
160
+ }
161
+ ],
162
+ [
163
+ "ws://example.com/foo?bar=baz",
164
+ {
165
+ "scheme": "ws",
166
+ "host": "example.com",
167
+ "reference": "absolute",
168
+ "secure": false,
169
+ "resourceName": "/foo?bar=baz"
170
+ }
171
+ ],
172
+ [
173
+ "wss://example.com/?bar=baz",
174
+ {
175
+ "scheme": "wss",
176
+ "host": "example.com",
177
+ "reference": "absolute",
178
+ "secure": true,
179
+ "resourceName": "/?bar=baz"
180
+ }
181
+ ],
182
+ [
183
+ "wss://example.com/chat",
184
+ {
185
+ "scheme": "wss",
186
+ "host": "example.com",
187
+ "reference": "absolute",
188
+ "secure": true,
189
+ "resourceName": "/chat"
190
+ }
191
+ ],
192
+ [
193
+ "wss://example.com/foo?bar=baz",
194
+ {
195
+ "scheme": "wss",
196
+ "host": "example.com",
197
+ "reference": "absolute",
198
+ "secure": true,
199
+ "resourceName": "/foo?bar=baz"
200
+ }
201
+ ],
202
+ [
203
+ "wss://example.com/?bar=baz",
204
+ {
205
+ "scheme": "wss",
206
+ "host": "example.com",
207
+ "reference": "absolute",
208
+ "secure": true,
209
+ "resourceName": "/?bar=baz"
210
+ }
211
+ ],
212
+ [
213
+ "urn:uuid:f81d4fae-7dec-11d0-a765-00a0c91e6bf6",
214
+ {
215
+ "scheme": "urn",
216
+ "reference": "absolute",
217
+ "nid": "uuid",
218
+ "uuid": "f81d4fae-7dec-11d0-a765-00a0c91e6bf6"
219
+ }
220
+ ],
221
+ [
222
+ "urn:uuid:notauuid-7dec-11d0-a765-00a0c91e6bf6",
223
+ {
224
+ "scheme": "urn",
225
+ "reference": "absolute",
226
+ "nid": "uuid",
227
+ "uuid": "notauuid-7dec-11d0-a765-00a0c91e6bf6",
228
+ "error": "UUID is not valid."
229
+ }
230
+ ],
231
+ [
232
+ "urn:example:%D0%B0123,z456",
233
+ {
234
+ "scheme": "urn",
235
+ "reference": "absolute",
236
+ "nid": "example",
237
+ "nss": "%D0%B0123,z456"
238
+ }
239
+ ],
240
+ [
241
+ "//[2606:2800:220:1:248:1893:25c8:1946:43209]",
242
+ {
243
+ "host": "[2606:2800:220:1:248:1893:25c8:1946:43209]",
244
+ "path": "",
245
+ "reference": "relative"
246
+ }
247
+ ],
248
+ [
249
+ "http://foo.bar",
250
+ {
251
+ "scheme": "http",
252
+ "host": "foo.bar",
253
+ "path": "",
254
+ "reference": "absolute"
255
+ }
256
+ ],
257
+ [
258
+ "http://",
259
+ {
260
+ "scheme": "http",
261
+ "host": "",
262
+ "path": "",
263
+ "reference": "absolute",
264
+ "error": "HTTP URIs must have a host."
265
+ }
266
+ ],
267
+ [
268
+ "#/$defs/stringMap",
269
+ {
270
+ "path": "",
271
+ "fragment": "/$defs/stringMap",
272
+ "reference": "same-document"
273
+ }
274
+ ],
275
+ [
276
+ "#/$defs/string%20Map",
277
+ {
278
+ "path": "",
279
+ "fragment": "/$defs/string%20Map",
280
+ "reference": "same-document"
281
+ }
282
+ ],
283
+ [
284
+ "#/$defs/string Map",
285
+ {
286
+ "path": "",
287
+ "fragment": "/$defs/string%20Map",
288
+ "reference": "same-document"
289
+ }
290
+ ],
291
+ [
292
+ "//?json=%7B%22foo%22%3A%22bar%22%7D",
293
+ {
294
+ "host": "",
295
+ "path": "",
296
+ "query": "json=%7B%22foo%22%3A%22bar%22%7D",
297
+ "reference": "relative"
298
+ }
299
+ ],
300
+ [
301
+ "mailto:chris@example.com",
302
+ {
303
+ "scheme": "mailto",
304
+ "reference": "absolute",
305
+ "to": [
306
+ "chris@example.com"
307
+ ]
308
+ }
309
+ ],
310
+ [
311
+ "mailto:infobot@example.com?subject=current-issue",
312
+ {
313
+ "scheme": "mailto",
314
+ "reference": "absolute",
315
+ "to": [
316
+ "infobot@example.com"
317
+ ],
318
+ "subject": "current-issue"
319
+ }
320
+ ],
321
+ [
322
+ "mailto:infobot@example.com?body=send%20current-issue",
323
+ {
324
+ "scheme": "mailto",
325
+ "reference": "absolute",
326
+ "to": [
327
+ "infobot@example.com"
328
+ ],
329
+ "body": "send current-issue"
330
+ }
331
+ ],
332
+ [
333
+ "mailto:infobot@example.com?body=send%20current-issue%0D%0Asend%20index",
334
+ {
335
+ "scheme": "mailto",
336
+ "reference": "absolute",
337
+ "to": [
338
+ "infobot@example.com"
339
+ ],
340
+ "body": "send current-issue\r\nsend index"
341
+ }
342
+ ],
343
+ [
344
+ "mailto:list@example.org?In-Reply-To=%3C3469A91.D10AF4C@example.com%3E",
345
+ {
346
+ "scheme": "mailto",
347
+ "reference": "absolute",
348
+ "to": [
349
+ "list@example.org"
350
+ ],
351
+ "headers": {
352
+ "In-Reply-To": "<3469A91.D10AF4C@example.com>"
353
+ }
354
+ }
355
+ ],
356
+ [
357
+ "mailto:majordomo@example.com?body=subscribe%20bamboo-l",
358
+ {
359
+ "scheme": "mailto",
360
+ "reference": "absolute",
361
+ "to": [
362
+ "majordomo@example.com"
363
+ ],
364
+ "body": "subscribe bamboo-l"
365
+ }
366
+ ],
367
+ [
368
+ "mailto:joe@example.com?cc=bob@example.com&body=hello",
369
+ {
370
+ "scheme": "mailto",
371
+ "reference": "absolute",
372
+ "to": [
373
+ "joe@example.com"
374
+ ],
375
+ "body": "hello",
376
+ "headers": {
377
+ "cc": "bob@example.com"
378
+ }
379
+ }
380
+ ],
381
+ [
382
+ "mailto:gorby%25kremvax@example.com",
383
+ {
384
+ "scheme": "mailto",
385
+ "reference": "absolute",
386
+ "to": [
387
+ "gorby%kremvax@example.com"
388
+ ]
389
+ }
390
+ ],
391
+ [
392
+ "mailto:unlikely%3Faddress@example.com?blat=foop",
393
+ {
394
+ "scheme": "mailto",
395
+ "reference": "absolute",
396
+ "to": [
397
+ "unlikely?address@example.com"
398
+ ],
399
+ "headers": {
400
+ "blat": "foop"
401
+ }
402
+ }
403
+ ],
404
+ [
405
+ "mailto:Mike%26family@example.org",
406
+ {
407
+ "scheme": "mailto",
408
+ "reference": "absolute",
409
+ "to": [
410
+ "Mike&family@example.org"
411
+ ]
412
+ }
413
+ ],
414
+ [
415
+ "mailto:%22not%40me%22@example.org",
416
+ {
417
+ "scheme": "mailto",
418
+ "reference": "absolute",
419
+ "to": [
420
+ "\"not@me\"@example.org"
421
+ ]
422
+ }
423
+ ],
424
+ [
425
+ "mailto:%22oh%5C%5Cno%22@example.org",
426
+ {
427
+ "scheme": "mailto",
428
+ "reference": "absolute",
429
+ "to": [
430
+ "\"oh\\\\no\"@example.org"
431
+ ]
432
+ }
433
+ ],
434
+ [
435
+ "mailto:%22%5C%5C%5C%22it's%5C%20ugly%5C%5C%5C%22%22@example.org",
436
+ {
437
+ "scheme": "mailto",
438
+ "reference": "absolute",
439
+ "to": [
440
+ "\"\\\\\\\"it's\\ ugly\\\\\\\"\"@example.org"
441
+ ]
442
+ }
443
+ ],
444
+ [
445
+ "mailto:user@example.org?subject=caf%C3%A9",
446
+ {
447
+ "scheme": "mailto",
448
+ "reference": "absolute",
449
+ "to": [
450
+ "user@example.org"
451
+ ],
452
+ "subject": "café"
453
+ }
454
+ ],
455
+ [
456
+ "mailto:user@example.org?subject=%3D%3Futf-8%3FQ%3Fcaf%3DC3%3DA9%3F%3D",
457
+ {
458
+ "scheme": "mailto",
459
+ "reference": "absolute",
460
+ "to": [
461
+ "user@example.org"
462
+ ],
463
+ "subject": "=?utf-8?Q?caf=C3=A9?="
464
+ }
465
+ ],
466
+ [
467
+ "mailto:user@example.org?subject=%3D%3Fiso-8859-1%3FQ%3Fcaf%3DE9%3F%3D",
468
+ {
469
+ "scheme": "mailto",
470
+ "reference": "absolute",
471
+ "to": [
472
+ "user@example.org"
473
+ ],
474
+ "subject": "=?iso-8859-1?Q?caf=E9?="
475
+ }
476
+ ],
477
+ [
478
+ "mailto:user@example.org?subject=caf%C3%A9&body=caf%C3%A9",
479
+ {
480
+ "scheme": "mailto",
481
+ "reference": "absolute",
482
+ "to": [
483
+ "user@example.org"
484
+ ],
485
+ "subject": "café",
486
+ "body": "café"
487
+ }
488
+ ],
489
+ [
490
+ "mailto:user@%E7%B4%8D%E8%B1%86.example.org?subject=Test&body=NATTO",
491
+ {
492
+ "scheme": "mailto",
493
+ "reference": "absolute",
494
+ "to": [
495
+ "user@xn--99zt52a.example.org"
496
+ ],
497
+ "subject": "Test",
498
+ "body": "NATTO"
499
+ }
500
+ ]
501
+ ]