@cfworker/json-schema 1.9.0 → 1.12.0
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.
- package/dist/dereference.js +6 -5
- package/dist/validator.js +0 -4
- package/package.json +7 -8
- package/src/dereference.ts +7 -5
- package/src/format.ts +24 -12
- package/tsconfig.json +8 -3
- package/LICENSE.md +0 -21
package/dist/dereference.js
CHANGED
|
@@ -55,13 +55,14 @@ export const ignoredKeyword = {
|
|
|
55
55
|
minProperties: true
|
|
56
56
|
};
|
|
57
57
|
export let initialBaseURI = typeof self !== 'undefined' && self.location
|
|
58
|
-
?
|
|
58
|
+
?
|
|
59
|
+
new URL(self.location.origin + self.location.pathname + location.search)
|
|
59
60
|
: new URL('https://github.com/cfworker');
|
|
60
61
|
export function dereference(schema, lookup = Object.create(null), baseURI = initialBaseURI, basePointer = '') {
|
|
61
62
|
if (schema && typeof schema === 'object' && !Array.isArray(schema)) {
|
|
62
63
|
const id = schema.$id || schema.id;
|
|
63
64
|
if (id) {
|
|
64
|
-
const url = new URL(id, baseURI);
|
|
65
|
+
const url = new URL(id, baseURI.href);
|
|
65
66
|
if (url.hash.length > 1) {
|
|
66
67
|
lookup[url.href] = schema;
|
|
67
68
|
}
|
|
@@ -94,7 +95,7 @@ export function dereference(schema, lookup = Object.create(null), baseURI = init
|
|
|
94
95
|
});
|
|
95
96
|
}
|
|
96
97
|
if (schema.$ref && schema.__absolute_ref__ === undefined) {
|
|
97
|
-
const url = new URL(schema.$ref, baseURI);
|
|
98
|
+
const url = new URL(schema.$ref, baseURI.href);
|
|
98
99
|
url.hash = url.hash;
|
|
99
100
|
Object.defineProperty(schema, '__absolute_ref__', {
|
|
100
101
|
enumerable: false,
|
|
@@ -102,7 +103,7 @@ export function dereference(schema, lookup = Object.create(null), baseURI = init
|
|
|
102
103
|
});
|
|
103
104
|
}
|
|
104
105
|
if (schema.$recursiveRef && schema.__absolute_recursive_ref__ === undefined) {
|
|
105
|
-
const url = new URL(schema.$recursiveRef, baseURI);
|
|
106
|
+
const url = new URL(schema.$recursiveRef, baseURI.href);
|
|
106
107
|
url.hash = url.hash;
|
|
107
108
|
Object.defineProperty(schema, '__absolute_recursive_ref__', {
|
|
108
109
|
enumerable: false,
|
|
@@ -110,7 +111,7 @@ export function dereference(schema, lookup = Object.create(null), baseURI = init
|
|
|
110
111
|
});
|
|
111
112
|
}
|
|
112
113
|
if (schema.$anchor) {
|
|
113
|
-
const url = new URL('#' + schema.$anchor, baseURI);
|
|
114
|
+
const url = new URL('#' + schema.$anchor, baseURI.href);
|
|
114
115
|
lookup[url.href] = schema;
|
|
115
116
|
}
|
|
116
117
|
for (let key in schema) {
|
package/dist/validator.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
1
|
import { dereference } from './dereference.js';
|
|
2
2
|
import { validate } from './validate.js';
|
|
3
3
|
export class Validator {
|
|
4
|
-
schema;
|
|
5
|
-
draft;
|
|
6
|
-
shortCircuit;
|
|
7
|
-
lookup;
|
|
8
4
|
constructor(schema, draft = '2019-09', shortCircuit = true) {
|
|
9
5
|
this.schema = schema;
|
|
10
6
|
this.draft = draft;
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@cfworker/json-schema",
|
|
3
3
|
"type": "module",
|
|
4
|
-
"version": "1.
|
|
4
|
+
"version": "1.12.0",
|
|
5
5
|
"description": "A JSON schema validator that will run on Cloudflare workers. Supports drafts 4, 7, 2019-09, and 2020-12.",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"json-schema",
|
|
@@ -39,13 +39,12 @@
|
|
|
39
39
|
"test": "cfworker test test/**/*.spec.ts --nocheck"
|
|
40
40
|
},
|
|
41
41
|
"devDependencies": {
|
|
42
|
-
"@cfworker/dev": "^1.
|
|
43
|
-
"@types/chai": "^4.2.
|
|
44
|
-
"@types/mocha": "^
|
|
42
|
+
"@cfworker/dev": "^1.12.0",
|
|
43
|
+
"@types/chai": "^4.2.22",
|
|
44
|
+
"@types/mocha": "^9.0.0",
|
|
45
45
|
"chai": "^4.3.4",
|
|
46
46
|
"json-schema-test-suite": "git+https://github.com/json-schema-org/JSON-Schema-Test-Suite#76b529f",
|
|
47
|
-
"mocha": "^
|
|
48
|
-
"typescript": "^4.
|
|
49
|
-
}
|
|
50
|
-
"gitHead": "d333ff940566a7acc384ab791d8b73bed2a9a211"
|
|
47
|
+
"mocha": "^9.1.3",
|
|
48
|
+
"typescript": "^4.5.2"
|
|
49
|
+
}
|
|
51
50
|
}
|
package/src/dereference.ts
CHANGED
|
@@ -66,8 +66,10 @@ export const ignoredKeyword: Record<string, boolean> = {
|
|
|
66
66
|
* https://tools.ietf.org/html/rfc3986#section-5.1
|
|
67
67
|
*/
|
|
68
68
|
export let initialBaseURI =
|
|
69
|
+
// @ts-ignore
|
|
69
70
|
typeof self !== 'undefined' && self.location
|
|
70
|
-
?
|
|
71
|
+
? //@ts-ignore
|
|
72
|
+
new URL(self.location.origin + self.location.pathname + location.search)
|
|
71
73
|
: new URL('https://github.com/cfworker');
|
|
72
74
|
|
|
73
75
|
export function dereference(
|
|
@@ -79,7 +81,7 @@ export function dereference(
|
|
|
79
81
|
if (schema && typeof schema === 'object' && !Array.isArray(schema)) {
|
|
80
82
|
const id: string = schema.$id || schema.id;
|
|
81
83
|
if (id) {
|
|
82
|
-
const url = new URL(id, baseURI);
|
|
84
|
+
const url = new URL(id, baseURI.href);
|
|
83
85
|
if (url.hash.length > 1) {
|
|
84
86
|
lookup[url.href] = schema;
|
|
85
87
|
} else {
|
|
@@ -117,7 +119,7 @@ export function dereference(
|
|
|
117
119
|
|
|
118
120
|
// if a $ref is found, resolve it's absolute URI.
|
|
119
121
|
if (schema.$ref && schema.__absolute_ref__ === undefined) {
|
|
120
|
-
const url = new URL(schema.$ref, baseURI);
|
|
122
|
+
const url = new URL(schema.$ref, baseURI.href);
|
|
121
123
|
url.hash = url.hash; // normalize hash https://url.spec.whatwg.org/#dom-url-hash
|
|
122
124
|
Object.defineProperty(schema, '__absolute_ref__', {
|
|
123
125
|
enumerable: false,
|
|
@@ -127,7 +129,7 @@ export function dereference(
|
|
|
127
129
|
|
|
128
130
|
// if a $recursiveRef is found, resolve it's absolute URI.
|
|
129
131
|
if (schema.$recursiveRef && schema.__absolute_recursive_ref__ === undefined) {
|
|
130
|
-
const url = new URL(schema.$recursiveRef, baseURI);
|
|
132
|
+
const url = new URL(schema.$recursiveRef, baseURI.href);
|
|
131
133
|
url.hash = url.hash; // normalize hash https://url.spec.whatwg.org/#dom-url-hash
|
|
132
134
|
Object.defineProperty(schema, '__absolute_recursive_ref__', {
|
|
133
135
|
enumerable: false,
|
|
@@ -137,7 +139,7 @@ export function dereference(
|
|
|
137
139
|
|
|
138
140
|
// if an $anchor is found, compute it's URI and add it to the mapping.
|
|
139
141
|
if (schema.$anchor) {
|
|
140
|
-
const url = new URL('#' + schema.$anchor, baseURI);
|
|
142
|
+
const url = new URL('#' + schema.$anchor, baseURI.href);
|
|
141
143
|
lookup[url.href] = schema;
|
|
142
144
|
}
|
|
143
145
|
|
package/src/format.ts
CHANGED
|
@@ -3,27 +3,36 @@
|
|
|
3
3
|
const DATE = /^(\d\d\d\d)-(\d\d)-(\d\d)$/;
|
|
4
4
|
const DAYS = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31];
|
|
5
5
|
const TIME = /^(\d\d):(\d\d):(\d\d)(\.\d+)?(z|[+-]\d\d(?::?\d\d)?)?$/i;
|
|
6
|
-
const HOSTNAME =
|
|
6
|
+
const HOSTNAME =
|
|
7
|
+
/^(?=.{1,253}\.?$)[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?(?:\.[a-z0-9](?:[-0-9a-z]{0,61}[0-9a-z])?)*\.?$/i;
|
|
7
8
|
// const URI = /^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
|
|
8
|
-
const URIREF =
|
|
9
|
+
const URIREF =
|
|
10
|
+
/^(?:[a-z][a-z0-9+\-.]*:)?(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'"()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'"()*+,;=:@]|%[0-9a-f]{2})*)*)?(?:\?(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'"()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
|
|
9
11
|
// uri-template: https://tools.ietf.org/html/rfc6570
|
|
10
|
-
const URITEMPLATE =
|
|
12
|
+
const URITEMPLATE =
|
|
13
|
+
/^(?:(?:[^\x00-\x20"'<>%\\^`{|}]|%[0-9a-f]{2})|\{[+#./;?&=,!@|]?(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?(?:,(?:[a-z0-9_]|%[0-9a-f]{2})+(?::[1-9][0-9]{0,3}|\*)?)*\})*$/i;
|
|
11
14
|
// For the source: https://gist.github.com/dperini/729294
|
|
12
15
|
// For test cases: https://mathiasbynens.be/demo/url-regex
|
|
13
|
-
const URL_ =
|
|
16
|
+
const URL_ =
|
|
17
|
+
/^(?:(?:https?|ftp):\/\/)(?:\S+(?::\S*)?@)?(?:(?!10(?:\.\d{1,3}){3})(?!127(?:\.\d{1,3}){3})(?!169\.254(?:\.\d{1,3}){2})(?!192\.168(?:\.\d{1,3}){2})(?!172\.(?:1[6-9]|2\d|3[0-1])(?:\.\d{1,3}){2})(?:[1-9]\d?|1\d\d|2[01]\d|22[0-3])(?:\.(?:1?\d{1,2}|2[0-4]\d|25[0-5])){2}(?:\.(?:[1-9]\d?|1\d\d|2[0-4]\d|25[0-4]))|(?:(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)(?:\.(?:[a-z\u{00a1}-\u{ffff}0-9]+-?)*[a-z\u{00a1}-\u{ffff}0-9]+)*(?:\.(?:[a-z\u{00a1}-\u{ffff}]{2,})))(?::\d{2,5})?(?:\/[^\s]*)?$/iu;
|
|
14
18
|
const UUID = /^(?:urn:uuid:)?[0-9a-f]{8}-(?:[0-9a-f]{4}-){3}[0-9a-f]{12}$/i;
|
|
15
19
|
const JSON_POINTER = /^(?:\/(?:[^~/]|~0|~1)*)*$/;
|
|
16
|
-
const JSON_POINTER_URI_FRAGMENT =
|
|
17
|
-
|
|
20
|
+
const JSON_POINTER_URI_FRAGMENT =
|
|
21
|
+
/^#(?:\/(?:[a-z0-9_\-.!$&'()*+,;:=@]|%[0-9a-f]{2}|~0|~1)*)*$/i;
|
|
22
|
+
const RELATIVE_JSON_POINTER =
|
|
23
|
+
/^(?:0|[1-9][0-9]*)(?:#|(?:\/(?:[^~/]|~0|~1)*)*)$/;
|
|
18
24
|
|
|
19
25
|
// date: http://tools.ietf.org/html/rfc3339#section-5.6
|
|
20
26
|
const FASTDATE = /^\d\d\d\d-[0-1]\d-[0-3]\d$/;
|
|
21
27
|
// date-time: http://tools.ietf.org/html/rfc3339#section-5.6
|
|
22
|
-
const FASTTIME =
|
|
23
|
-
|
|
28
|
+
const FASTTIME =
|
|
29
|
+
/^(?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)?$/i;
|
|
30
|
+
const FASTDATETIME =
|
|
31
|
+
/^\d\d\d\d-[0-1]\d-[0-3]\d[t\s](?:[0-2]\d:[0-5]\d:[0-5]\d|23:59:60)(?:\.\d+)?(?:z|[+-]\d\d(?::?\d\d)?)$/i;
|
|
24
32
|
// uri: https://github.com/mafintosh/is-my-json-valid/blob/master/formats.js
|
|
25
33
|
// const FASTURI = /^(?:[a-z][a-z0-9+-.]*:)(?:\/?\/)?[^\s]*$/i;
|
|
26
|
-
const FASTURIREFERENCE =
|
|
34
|
+
const FASTURIREFERENCE =
|
|
35
|
+
/^(?:(?:[a-z][a-z0-9+-.]*:)?\/?\/)?(?:[^\\\s#][^\s#]*)?(?:#[^\\\s]*)?$/i;
|
|
27
36
|
|
|
28
37
|
// https://github.com/ExodusMovement/schemasafe/blob/master/src/formats.js
|
|
29
38
|
const EMAIL = (input: string) => {
|
|
@@ -50,9 +59,11 @@ const EMAIL = (input: string) => {
|
|
|
50
59
|
};
|
|
51
60
|
|
|
52
61
|
// optimized https://www.safaribooksonline.com/library/view/regular-expressions-cookbook/9780596802837/ch07s16.html
|
|
53
|
-
const IPV4 =
|
|
62
|
+
const IPV4 =
|
|
63
|
+
/^(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)$/;
|
|
54
64
|
// optimized http://stackoverflow.com/questions/53497/regular-expression-that-matches-valid-ipv6-addresses
|
|
55
|
-
const IPV6 =
|
|
65
|
+
const IPV6 =
|
|
66
|
+
/^((([0-9a-f]{1,4}:){7}([0-9a-f]{1,4}|:))|(([0-9a-f]{1,4}:){6}(:[0-9a-f]{1,4}|((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){5}(((:[0-9a-f]{1,4}){1,2})|:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3})|:))|(([0-9a-f]{1,4}:){4}(((:[0-9a-f]{1,4}){1,3})|((:[0-9a-f]{1,4})?:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){3}(((:[0-9a-f]{1,4}){1,4})|((:[0-9a-f]{1,4}){0,2}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){2}(((:[0-9a-f]{1,4}){1,5})|((:[0-9a-f]{1,4}){0,3}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(([0-9a-f]{1,4}:){1}(((:[0-9a-f]{1,4}){1,6})|((:[0-9a-f]{1,4}){0,4}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:))|(:(((:[0-9a-f]{1,4}){1,7})|((:[0-9a-f]{1,4}){0,5}:((25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)(\.(25[0-5]|2[0-4]\d|1\d\d|[1-9]?\d)){3}))|:)))$/i;
|
|
56
67
|
|
|
57
68
|
// https://github.com/ExodusMovement/schemasafe/blob/master/src/formats.js
|
|
58
69
|
const DURATION = (input: string) =>
|
|
@@ -141,7 +152,8 @@ function date_time(str: string) {
|
|
|
141
152
|
}
|
|
142
153
|
|
|
143
154
|
const NOT_URI_FRAGMENT = /\/|:/;
|
|
144
|
-
const URI_PATTERN =
|
|
155
|
+
const URI_PATTERN =
|
|
156
|
+
/^(?:[a-z][a-z0-9+\-.]*:)(?:\/?\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:]|%[0-9a-f]{2})*@)?(?:\[(?:(?:(?:(?:[0-9a-f]{1,4}:){6}|::(?:[0-9a-f]{1,4}:){5}|(?:[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){4}|(?:(?:[0-9a-f]{1,4}:){0,1}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){3}|(?:(?:[0-9a-f]{1,4}:){0,2}[0-9a-f]{1,4})?::(?:[0-9a-f]{1,4}:){2}|(?:(?:[0-9a-f]{1,4}:){0,3}[0-9a-f]{1,4})?::[0-9a-f]{1,4}:|(?:(?:[0-9a-f]{1,4}:){0,4}[0-9a-f]{1,4})?::)(?:[0-9a-f]{1,4}:[0-9a-f]{1,4}|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?))|(?:(?:[0-9a-f]{1,4}:){0,5}[0-9a-f]{1,4})?::[0-9a-f]{1,4}|(?:(?:[0-9a-f]{1,4}:){0,6}[0-9a-f]{1,4})?::)|[Vv][0-9a-f]+\.[a-z0-9\-._~!$&'()*+,;=:]+)\]|(?:(?:25[0-5]|2[0-4]\d|[01]?\d\d?)\.){3}(?:25[0-5]|2[0-4]\d|[01]?\d\d?)|(?:[a-z0-9\-._~!$&'()*+,;=]|%[0-9a-f]{2})*)(?::\d*)?(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*|\/(?:(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)?|(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})+(?:\/(?:[a-z0-9\-._~!$&'()*+,;=:@]|%[0-9a-f]{2})*)*)(?:\?(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?(?:#(?:[a-z0-9\-._~!$&'()*+,;=:@/?]|%[0-9a-f]{2})*)?$/i;
|
|
145
157
|
|
|
146
158
|
function uri(str: string): boolean {
|
|
147
159
|
// http://jmrware.com/articles/2009/uri_regexp/URI_regex.html + optional protocol + required "."
|
package/tsconfig.json
CHANGED
|
@@ -1,9 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"extends": "../../tsconfig-base",
|
|
3
3
|
"compilerOptions": {
|
|
4
|
-
"target": "
|
|
5
|
-
"lib": ["
|
|
6
|
-
"types": [
|
|
4
|
+
"target": "ES2021",
|
|
5
|
+
"lib": ["ESNext", "WebWorker", "Webworker.Iterable"],
|
|
6
|
+
"types": [
|
|
7
|
+
"chai",
|
|
8
|
+
"mocha",
|
|
9
|
+
"@cfworker/worker-types",
|
|
10
|
+
"@cloudflare/workers-types"
|
|
11
|
+
],
|
|
7
12
|
"outDir": "dist",
|
|
8
13
|
"rootDir": "./src"
|
|
9
14
|
},
|
package/LICENSE.md
DELETED
|
@@ -1,21 +0,0 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2020 Jeremy Danyow
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|