@atcute/lexicons 1.2.7 → 1.2.9
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/index.d.ts +16 -16
- package/dist/interfaces/blob.d.ts +2 -2
- package/dist/interfaces/cid-link.d.ts +1 -1
- package/dist/interfaces/index.d.ts +3 -3
- package/dist/syntax/at-identifier.d.ts +2 -2
- package/dist/syntax/at-uri.d.ts +5 -5
- package/dist/syntax/at-uri.d.ts.map +1 -1
- package/dist/syntax/at-uri.js +125 -8
- package/dist/syntax/at-uri.js.map +1 -1
- package/dist/syntax/cid.d.ts.map +1 -1
- package/dist/syntax/cid.js +2 -6
- package/dist/syntax/cid.js.map +1 -1
- package/dist/syntax/handle.d.ts.map +1 -1
- package/dist/syntax/handle.js +49 -2
- package/dist/syntax/handle.js.map +1 -1
- package/dist/syntax/index.d.ts +11 -11
- package/dist/syntax/nsid.d.ts.map +1 -1
- package/dist/syntax/nsid.js +75 -2
- package/dist/syntax/nsid.js.map +1 -1
- package/dist/syntax/record-key.d.ts.map +1 -1
- package/dist/syntax/record-key.js +26 -2
- package/dist/syntax/record-key.js.map +1 -1
- package/dist/syntax/utils/ascii.d.ts +3 -0
- package/dist/syntax/utils/ascii.d.ts.map +1 -0
- package/dist/syntax/utils/ascii.js +9 -0
- package/dist/syntax/utils/ascii.js.map +1 -0
- package/dist/validations/index.d.ts +3 -3
- package/dist/validations/index.d.ts.map +1 -1
- package/dist/validations/index.js +16 -11
- package/dist/validations/index.js.map +1 -1
- package/dist/validations/utils.d.ts.map +1 -1
- package/dist/validations/utils.js +1 -0
- package/dist/validations/utils.js.map +1 -1
- package/lib/index.ts +16 -16
- package/lib/interfaces/blob.ts +2 -2
- package/lib/interfaces/cid-link.ts +1 -1
- package/lib/interfaces/index.ts +3 -3
- package/lib/syntax/at-identifier.ts +2 -2
- package/lib/syntax/at-uri.ts +155 -13
- package/lib/syntax/cid.ts +2 -7
- package/lib/syntax/handle.ts +57 -3
- package/lib/syntax/index.ts +11 -11
- package/lib/syntax/nsid.ts +85 -4
- package/lib/syntax/record-key.ts +32 -3
- package/lib/syntax/utils/ascii.ts +9 -0
- package/lib/validations/index.ts +33 -30
- package/lib/validations/utils.ts +1 -0
- package/package.json +7 -7
package/dist/index.d.ts
CHANGED
|
@@ -1,17 +1,17 @@
|
|
|
1
|
-
export type { ActorIdentifier } from './syntax/at-identifier.
|
|
2
|
-
export { isCanonicalResourceUri, isResourceUri, parseCanonicalResourceUri, parseResourceUri, type CanonicalResourceUri, type ParsedCanonicalResourceUri, type ParsedResourceUri, type ResourceUri, } from './syntax/at-uri.
|
|
3
|
-
export type { Cid } from './syntax/cid.
|
|
4
|
-
export type { Datetime } from './syntax/datetime.
|
|
5
|
-
export type { Did } from './syntax/did.
|
|
6
|
-
export type { Handle } from './syntax/handle.
|
|
7
|
-
export type { LanguageCode } from './syntax/language.
|
|
8
|
-
export type { Nsid } from './syntax/nsid.
|
|
9
|
-
export type { RecordKey } from './syntax/record-key.
|
|
10
|
-
export type { Tid } from './syntax/tid.
|
|
11
|
-
export type { GenericUri } from './syntax/uri.
|
|
12
|
-
export type { Blob, LegacyBlob } from './interfaces/blob.
|
|
13
|
-
export type { Bytes } from './interfaces/bytes.
|
|
14
|
-
export type { CidLink } from './interfaces/cid-link.
|
|
15
|
-
export type { $type } from './types/brand.
|
|
16
|
-
export { is, parse, safeParse, ValidationError, type InferInput, type InferOutput, type InferXRPCBodyInput, type InferXRPCBodyOutput, type ValidationResult, } from './validations/index.
|
|
1
|
+
export type { ActorIdentifier } from './syntax/at-identifier.ts';
|
|
2
|
+
export { isCanonicalResourceUri, isResourceUri, parseCanonicalResourceUri, parseResourceUri, type CanonicalResourceUri, type ParsedCanonicalResourceUri, type ParsedResourceUri, type ResourceUri, } from './syntax/at-uri.ts';
|
|
3
|
+
export type { Cid } from './syntax/cid.ts';
|
|
4
|
+
export type { Datetime } from './syntax/datetime.ts';
|
|
5
|
+
export type { Did } from './syntax/did.ts';
|
|
6
|
+
export type { Handle } from './syntax/handle.ts';
|
|
7
|
+
export type { LanguageCode } from './syntax/language.ts';
|
|
8
|
+
export type { Nsid } from './syntax/nsid.ts';
|
|
9
|
+
export type { RecordKey } from './syntax/record-key.ts';
|
|
10
|
+
export type { Tid } from './syntax/tid.ts';
|
|
11
|
+
export type { GenericUri } from './syntax/uri.ts';
|
|
12
|
+
export type { Blob, LegacyBlob } from './interfaces/blob.ts';
|
|
13
|
+
export type { Bytes } from './interfaces/bytes.ts';
|
|
14
|
+
export type { CidLink } from './interfaces/cid-link.ts';
|
|
15
|
+
export type { $type } from './types/brand.ts';
|
|
16
|
+
export { is, parse, safeParse, ValidationError, type InferInput, type InferOutput, type InferXRPCBodyInput, type InferXRPCBodyOutput, type ValidationResult, } from './validations/index.ts';
|
|
17
17
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export { isBlob, isLegacyBlob, type Blob, type LegacyBlob } from './blob.
|
|
2
|
-
export { isBytes, type Bytes } from './bytes.
|
|
3
|
-
export { isCidLink, type CidLink } from './cid-link.
|
|
1
|
+
export { isBlob, isLegacyBlob, type Blob, type LegacyBlob } from './blob.ts';
|
|
2
|
+
export { isBytes, type Bytes } from './bytes.ts';
|
|
3
|
+
export { isCidLink, type CidLink } from './cid-link.ts';
|
|
4
4
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/syntax/at-uri.d.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { type Result } from '../utils.
|
|
2
|
-
import { type ActorIdentifier } from './at-identifier.
|
|
3
|
-
import { type Did } from './did.
|
|
4
|
-
import { type Nsid } from './nsid.
|
|
5
|
-
import { type RecordKey } from './record-key.
|
|
1
|
+
import { type Result } from '../utils.ts';
|
|
2
|
+
import { type ActorIdentifier } from './at-identifier.ts';
|
|
3
|
+
import { type Did } from './did.ts';
|
|
4
|
+
import { type Nsid } from './nsid.ts';
|
|
5
|
+
import { type RecordKey } from './record-key.ts';
|
|
6
6
|
/**
|
|
7
7
|
* represents a general AT Protocol URI, representing either an entire
|
|
8
8
|
* repository, a specific collection within a repository, or a record.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"at-uri.d.ts","sourceRoot":"","sources":["../../lib/syntax/at-uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAS,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"at-uri.d.ts","sourceRoot":"","sources":["../../lib/syntax/at-uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,MAAM,EAAE,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAqB,KAAK,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAS,KAAK,GAAG,EAAE,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAU,KAAK,IAAI,EAAE,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAe,KAAK,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG9D;;;;;GAKG;AACH,MAAM,MAAM,WAAW,GACpB,QAAQ,eAAe,EAAE,GACzB,QAAQ,eAAe,IAAI,IAAI,EAAE,GACjC,QAAQ,eAAe,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;AAElD,MAAM,MAAM,iBAAiB,GAC1B;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,SAAS,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC/F;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,GAC1F;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,UAAU,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC;AA8C9F,eAAO,MAAM,aAAa,0CA8EzB,CAAC;AAGF,eAAO,MAAM,gBAAgB,sDA0B5B,CAAC;AAEF;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,IAAI,IAAI,IAAI,SAAS,EAAE,CAAC;AAEtE,MAAM,MAAM,0BAA0B,GAAG;IACxC,IAAI,EAAE,GAAG,CAAC;IACV,UAAU,EAAE,IAAI,CAAC;IACjB,IAAI,EAAE,SAAS,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,SAAS,CAAC;CAC7B,CAAC;AAGF,eAAO,MAAM,sBAAsB,qGAuClC,CAAC;AAGF,eAAO,MAAM,yBAAyB,+DA0BrC,CAAC"}
|
package/dist/syntax/at-uri.js
CHANGED
|
@@ -3,21 +3,114 @@ import { isActorIdentifier } from './at-identifier.js';
|
|
|
3
3
|
import { isDid } from './did.js';
|
|
4
4
|
import { isNsid } from './nsid.js';
|
|
5
5
|
import { isRecordKey } from './record-key.js';
|
|
6
|
+
import { isAsciiAlphaNum } from './utils/ascii.js';
|
|
7
|
+
// minimum valid non-canonical at-uri is `at://a.a` (8 chars)
|
|
8
|
+
const AT_URI_MIN_LENGTH = 8;
|
|
9
|
+
// minimum canonical at-uri is `at://did:m:v/a.b.c/x` (20 chars)
|
|
10
|
+
const CANONICAL_AT_URI_MIN_LENGTH = 5 + 7 + 1 + 5 + 1 + 1;
|
|
11
|
+
// maximum structural length:
|
|
12
|
+
// `at://` + DID (2048) + `/` + NSID (317) + `/` + rkey (512)
|
|
13
|
+
const AT_URI_MAX_LENGTH = 5 + 2048 + 1 + 317 + 1 + 512;
|
|
14
|
+
// repo: [a-zA-Z0-9._:%-]
|
|
15
|
+
// collection: [a-zA-Z0-9.-]
|
|
16
|
+
// rkey: [a-zA-Z0-9._~:@!$&%')(*+,;=-]
|
|
17
|
+
// fragment: /[a-zA-Z0-9._~:@!$&%')(*+,;=\-[\]/\\]*
|
|
6
18
|
const ATURI_RE = /^at:\/\/([a-zA-Z0-9._:%-]+)(?:\/([a-zA-Z0-9-.]+)(?:\/([a-zA-Z0-9._~:@!$&%')(*+,;=-]+))?)?(?:#(\/[a-zA-Z0-9._~:@!$&%')(*+,;=\-[\]/\\]*))?$/;
|
|
19
|
+
const isFragmentChar = (c) => {
|
|
20
|
+
return (isAsciiAlphaNum(c) ||
|
|
21
|
+
c === 0x2e || // .
|
|
22
|
+
c === 0x5f || // _
|
|
23
|
+
c === 0x7e || // ~
|
|
24
|
+
c === 0x3a || // :
|
|
25
|
+
c === 0x40 || // @
|
|
26
|
+
c === 0x21 || // !
|
|
27
|
+
c === 0x24 || // $
|
|
28
|
+
c === 0x26 || // &
|
|
29
|
+
c === 0x25 || // %
|
|
30
|
+
c === 0x27 || // '
|
|
31
|
+
c === 0x29 || // )
|
|
32
|
+
c === 0x28 || // (
|
|
33
|
+
c === 0x2a || // *
|
|
34
|
+
c === 0x2b || // +
|
|
35
|
+
c === 0x2c || // ,
|
|
36
|
+
c === 0x3b || // ;
|
|
37
|
+
c === 0x3d || // =
|
|
38
|
+
c === 0x2d || // -
|
|
39
|
+
c === 0x5b || // [
|
|
40
|
+
c === 0x5d || // ]
|
|
41
|
+
c === 0x2f || // /
|
|
42
|
+
c === 0x5c // \
|
|
43
|
+
);
|
|
44
|
+
};
|
|
7
45
|
// #__NO_SIDE_EFFECTS__
|
|
8
46
|
export const isResourceUri = (input) => {
|
|
9
47
|
if (typeof input !== 'string') {
|
|
10
48
|
return false;
|
|
11
49
|
}
|
|
12
|
-
const
|
|
13
|
-
if (
|
|
50
|
+
const len = input.length;
|
|
51
|
+
if (len < AT_URI_MIN_LENGTH || len > AT_URI_MAX_LENGTH) {
|
|
14
52
|
return false;
|
|
15
53
|
}
|
|
16
|
-
|
|
17
|
-
|
|
54
|
+
if (input.charCodeAt(0) !== 0x61 ||
|
|
55
|
+
input.charCodeAt(1) !== 0x74 ||
|
|
56
|
+
input.charCodeAt(2) !== 0x3a ||
|
|
57
|
+
input.charCodeAt(3) !== 0x2f ||
|
|
58
|
+
input.charCodeAt(4) !== 0x2f) {
|
|
59
|
+
return false;
|
|
60
|
+
}
|
|
61
|
+
const hash = input.indexOf('#', 5);
|
|
62
|
+
const stop = hash === -1 ? len : hash;
|
|
63
|
+
if (hash !== -1) {
|
|
64
|
+
const fragmentStart = hash + 1;
|
|
65
|
+
if (fragmentStart >= len || input.charCodeAt(fragmentStart) !== 0x2f) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
for (let idx = fragmentStart; idx < len; idx++) {
|
|
69
|
+
if (!isFragmentChar(input.charCodeAt(idx))) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
const firstSlash = input.indexOf('/', 5);
|
|
75
|
+
let repoEnd = stop;
|
|
76
|
+
let collection;
|
|
77
|
+
let rkey;
|
|
78
|
+
if (firstSlash !== -1 && firstSlash < stop) {
|
|
79
|
+
repoEnd = firstSlash;
|
|
80
|
+
const collectionStart = firstSlash + 1;
|
|
81
|
+
if (collectionStart >= stop) {
|
|
82
|
+
return false;
|
|
83
|
+
}
|
|
84
|
+
const secondSlash = input.indexOf('/', collectionStart);
|
|
85
|
+
if (secondSlash !== -1 && secondSlash < stop) {
|
|
86
|
+
if (secondSlash === collectionStart || secondSlash + 1 >= stop) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
const thirdSlash = input.indexOf('/', secondSlash + 1);
|
|
90
|
+
if (thirdSlash !== -1 && thirdSlash < stop) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
collection = input.substring(collectionStart, secondSlash);
|
|
94
|
+
rkey = input.substring(secondSlash + 1, stop);
|
|
95
|
+
}
|
|
96
|
+
else {
|
|
97
|
+
collection = input.substring(collectionStart, stop);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
if (repoEnd <= 5) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
const repo = input.substring(5, repoEnd);
|
|
104
|
+
return (isActorIdentifier(repo) &&
|
|
105
|
+
(collection === undefined || isNsid(collection)) &&
|
|
106
|
+
(rkey === undefined || isRecordKey(rkey)));
|
|
18
107
|
};
|
|
19
108
|
// #__NO_SIDE_EFFECTS__
|
|
20
109
|
export const parseResourceUri = (input) => {
|
|
110
|
+
const len = input.length;
|
|
111
|
+
if (len < AT_URI_MIN_LENGTH || len > AT_URI_MAX_LENGTH) {
|
|
112
|
+
return { ok: false, error: `invalid at-uri: ${input}` };
|
|
113
|
+
}
|
|
21
114
|
const match = ATURI_RE.exec(input);
|
|
22
115
|
if (match === null) {
|
|
23
116
|
return { ok: false, error: `invalid at-uri: ${input}` };
|
|
@@ -39,15 +132,39 @@ export const isCanonicalResourceUri = (input) => {
|
|
|
39
132
|
if (typeof input !== 'string') {
|
|
40
133
|
return false;
|
|
41
134
|
}
|
|
42
|
-
const
|
|
43
|
-
if (
|
|
135
|
+
const len = input.length;
|
|
136
|
+
if (len < CANONICAL_AT_URI_MIN_LENGTH || len > AT_URI_MAX_LENGTH) {
|
|
137
|
+
return false;
|
|
138
|
+
}
|
|
139
|
+
// must start with "at://"
|
|
140
|
+
if (input.charCodeAt(0) !== 0x61 ||
|
|
141
|
+
input.charCodeAt(1) !== 0x74 ||
|
|
142
|
+
input.charCodeAt(2) !== 0x3a ||
|
|
143
|
+
input.charCodeAt(3) !== 0x2f ||
|
|
144
|
+
input.charCodeAt(4) !== 0x2f) {
|
|
145
|
+
return false;
|
|
146
|
+
}
|
|
147
|
+
const firstSlash = input.indexOf('/', 5);
|
|
148
|
+
if (firstSlash === -1) {
|
|
149
|
+
return false;
|
|
150
|
+
}
|
|
151
|
+
const secondSlash = input.indexOf('/', firstSlash + 1);
|
|
152
|
+
if (secondSlash === -1) {
|
|
44
153
|
return false;
|
|
45
154
|
}
|
|
46
|
-
|
|
47
|
-
|
|
155
|
+
// check for fragment
|
|
156
|
+
const hashPos = input.indexOf('#', secondSlash + 1);
|
|
157
|
+
const repo = input.substring(5, firstSlash);
|
|
158
|
+
const collection = input.substring(firstSlash + 1, secondSlash);
|
|
159
|
+
const rkey = hashPos === -1 ? input.substring(secondSlash + 1) : input.substring(secondSlash + 1, hashPos);
|
|
160
|
+
return isDid(repo) && isNsid(collection) && isRecordKey(rkey);
|
|
48
161
|
};
|
|
49
162
|
// #__NO_SIDE_EFFECTS__
|
|
50
163
|
export const parseCanonicalResourceUri = (input) => {
|
|
164
|
+
const len = input.length;
|
|
165
|
+
if (len < CANONICAL_AT_URI_MIN_LENGTH || len > AT_URI_MAX_LENGTH) {
|
|
166
|
+
return { ok: false, error: `invalid canonical-at-uri: ${input}` };
|
|
167
|
+
}
|
|
51
168
|
const match = ATURI_RE.exec(input);
|
|
52
169
|
if (match === null) {
|
|
53
170
|
return { ok: false, error: `invalid canonical-at-uri: ${input}` };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"at-uri.js","sourceRoot":"","sources":["../../lib/syntax/at-uri.ts"],"names":[],"mappings":"AAAA,OAAO,EAAe,MAAM,aAAa,CAAC;AAE1C,OAAO,EAAE,iBAAiB,EAAwB,MAAM,oBAAoB,CAAC;AAC7E,OAAO,EAAE,KAAK,EAAY,MAAM,UAAU,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAa,MAAM,WAAW,CAAC;AAC9C,OAAO,EAAE,WAAW,EAAkB,MAAM,iBAAiB,CAAC;
|
|
1
|
+
{"version":3,"file":"at-uri.js","sourceRoot":"","sources":["../../lib/syntax/at-uri.ts"],"names":[],"mappings":"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"}
|
package/dist/syntax/cid.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid.d.ts","sourceRoot":"","sources":["../../lib/syntax/cid.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAKzB,eAAO,MAAM,KAAK,
|
|
1
|
+
{"version":3,"file":"cid.d.ts","sourceRoot":"","sources":["../../lib/syntax/cid.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC;AAKzB,eAAO,MAAM,KAAK,qCAEjB,CAAC"}
|
package/dist/syntax/cid.js
CHANGED
|
@@ -1,10 +1,6 @@
|
|
|
1
|
-
const DASL_CID_RE = /^baf[ky]
|
|
1
|
+
const DASL_CID_RE = /^baf[ky]rei[a-z2-7]{52}$/;
|
|
2
2
|
// #__NO_SIDE_EFFECTS__
|
|
3
3
|
export const isCid = (input) => {
|
|
4
|
-
|
|
5
|
-
return false;
|
|
6
|
-
}
|
|
7
|
-
const length = input.length;
|
|
8
|
-
return (length === 8 || length === 59) && DASL_CID_RE.test(input);
|
|
4
|
+
return typeof input === 'string' && input.length === 59 && DASL_CID_RE.test(input);
|
|
9
5
|
};
|
|
10
6
|
//# sourceMappingURL=cid.js.map
|
package/dist/syntax/cid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cid.js","sourceRoot":"","sources":["../../lib/syntax/cid.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,GAAG,
|
|
1
|
+
{"version":3,"file":"cid.js","sourceRoot":"","sources":["../../lib/syntax/cid.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,GAAG,0BAA0B,CAAC;AAE/C,uBAAuB;AACvB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAc,EAAgB,EAAE,CAAC;IACtD,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,KAAK,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAAA,CACnF,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../lib/syntax/handle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handle.d.ts","sourceRoot":"","sources":["../../lib/syntax/handle.ts"],"names":[],"mappings":"AAEA;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AA4B3C,eAAO,MAAM,QAAQ,oDAgCpB,CAAC"}
|
package/dist/syntax/handle.js
CHANGED
|
@@ -1,6 +1,53 @@
|
|
|
1
|
-
|
|
1
|
+
import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.js';
|
|
2
|
+
// validates a domain label: starts/ends with alphanumeric, middle allows hyphens, max 63 chars
|
|
3
|
+
const isValidLabel = (input, start, end) => {
|
|
4
|
+
const len = end - start;
|
|
5
|
+
if (len === 0 || len > 63) {
|
|
6
|
+
return false;
|
|
7
|
+
}
|
|
8
|
+
const first = input.charCodeAt(start);
|
|
9
|
+
if (!isAsciiAlphaNum(first)) {
|
|
10
|
+
return false;
|
|
11
|
+
}
|
|
12
|
+
if (len > 1) {
|
|
13
|
+
if (!isAsciiAlphaNum(input.charCodeAt(end - 1)))
|
|
14
|
+
return false;
|
|
15
|
+
for (let j = start + 1; j < end - 1; j++) {
|
|
16
|
+
const c = input.charCodeAt(j);
|
|
17
|
+
if (!isAsciiAlphaNum(c) && c !== 0x2d) {
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
return true;
|
|
23
|
+
};
|
|
2
24
|
// #__NO_SIDE_EFFECTS__
|
|
3
25
|
export const isHandle = (input) => {
|
|
4
|
-
|
|
26
|
+
if (typeof input !== 'string') {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
const len = input.length;
|
|
30
|
+
if (len < 3 || len > 253) {
|
|
31
|
+
return false;
|
|
32
|
+
}
|
|
33
|
+
let labelStart = 0;
|
|
34
|
+
let labelCount = 0;
|
|
35
|
+
let lastLabelStart = 0;
|
|
36
|
+
for (let i = 0; i <= len; i++) {
|
|
37
|
+
if (i === len || input.charCodeAt(i) === 0x2e) {
|
|
38
|
+
if (!isValidLabel(input, labelStart, i)) {
|
|
39
|
+
return false;
|
|
40
|
+
}
|
|
41
|
+
lastLabelStart = labelStart;
|
|
42
|
+
labelStart = i + 1;
|
|
43
|
+
labelCount++;
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
// need at least 2 labels (one dot)
|
|
47
|
+
if (labelCount < 2) {
|
|
48
|
+
return false;
|
|
49
|
+
}
|
|
50
|
+
// TLD must start with a letter
|
|
51
|
+
return isAsciiAlpha(input.charCodeAt(lastLabelStart));
|
|
5
52
|
};
|
|
6
53
|
//# sourceMappingURL=handle.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../../lib/syntax/handle.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"handle.js","sourceRoot":"","sources":["../../lib/syntax/handle.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAQjE,+FAA+F;AAC/F,MAAM,YAAY,GAAG,CAAC,KAAa,EAAE,KAAa,EAAE,GAAW,EAAW,EAAE,CAAC;IAC5E,MAAM,GAAG,GAAG,GAAG,GAAG,KAAK,CAAC;IACxB,IAAI,GAAG,KAAK,CAAC,IAAI,GAAG,GAAG,EAAE,EAAE,CAAC;QAC3B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;IACtC,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACb,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QAC9D,KAAK,IAAI,CAAC,GAAG,KAAK,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;YAC1C,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YAC9B,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACvC,OAAO,KAAK,CAAC;YACd,CAAC;QACF,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AAAA,CACZ,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,MAAM,QAAQ,GAAG,CAAC,KAAc,EAAmB,EAAE,CAAC;IAC5D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,cAAc,GAAG,CAAC,CAAC;IAEvB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC/B,IAAI,CAAC,KAAK,GAAG,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,EAAE,CAAC;YAC/C,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,UAAU,EAAE,CAAC,CAAC,EAAE,CAAC;gBACzC,OAAO,KAAK,CAAC;YACd,CAAC;YACD,cAAc,GAAG,UAAU,CAAC;YAC5B,UAAU,GAAG,CAAC,GAAG,CAAC,CAAC;YACnB,UAAU,EAAE,CAAC;QACd,CAAC;IACF,CAAC;IAED,mCAAmC;IACnC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC;QACpB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,+BAA+B;IAC/B,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AAAA,CACtD,CAAC"}
|
package/dist/syntax/index.d.ts
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
|
-
export * from './at-identifier.
|
|
2
|
-
export * from './at-uri.
|
|
3
|
-
export * from './cid.
|
|
4
|
-
export * from './datetime.
|
|
5
|
-
export * from './did.
|
|
6
|
-
export * from './handle.
|
|
7
|
-
export * from './language.
|
|
8
|
-
export * from './nsid.
|
|
9
|
-
export * from './record-key.
|
|
10
|
-
export * from './tid.
|
|
11
|
-
export * from './uri.
|
|
1
|
+
export * from './at-identifier.ts';
|
|
2
|
+
export * from './at-uri.ts';
|
|
3
|
+
export * from './cid.ts';
|
|
4
|
+
export * from './datetime.ts';
|
|
5
|
+
export * from './did.ts';
|
|
6
|
+
export * from './handle.ts';
|
|
7
|
+
export * from './language.ts';
|
|
8
|
+
export * from './nsid.ts';
|
|
9
|
+
export * from './record-key.ts';
|
|
10
|
+
export * from './tid.ts';
|
|
11
|
+
export * from './uri.ts';
|
|
12
12
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nsid.d.ts","sourceRoot":"","sources":["../../lib/syntax/nsid.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nsid.d.ts","sourceRoot":"","sources":["../../lib/syntax/nsid.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAGnD,eAAO,MAAM,MAAM,8DAoFlB,CAAC"}
|
package/dist/syntax/nsid.js
CHANGED
|
@@ -1,6 +1,79 @@
|
|
|
1
|
-
|
|
1
|
+
import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.js';
|
|
2
2
|
// #__NO_SIDE_EFFECTS__
|
|
3
3
|
export const isNsid = (input) => {
|
|
4
|
-
|
|
4
|
+
if (typeof input !== 'string') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
const len = input.length;
|
|
8
|
+
if (len < 5 || len > 317) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
// find the last dot to separate domain labels from the name segment
|
|
12
|
+
let lastDot = -1;
|
|
13
|
+
for (let j = len - 1; j >= 0; j--) {
|
|
14
|
+
if (input.charCodeAt(j) === 0x2e) {
|
|
15
|
+
lastDot = j;
|
|
16
|
+
break;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
if (lastDot === -1) {
|
|
20
|
+
return false;
|
|
21
|
+
}
|
|
22
|
+
// validate domain segments (before lastDot)
|
|
23
|
+
let segStart = 0;
|
|
24
|
+
let segIdx = 0;
|
|
25
|
+
for (let i = 0; i <= lastDot; i++) {
|
|
26
|
+
if (i === lastDot || input.charCodeAt(i) === 0x2e) {
|
|
27
|
+
const segLen = i - segStart;
|
|
28
|
+
if (segLen === 0 || segLen > 63) {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
const first = input.charCodeAt(segStart);
|
|
32
|
+
if (segIdx === 0) {
|
|
33
|
+
// first domain label must start with a letter
|
|
34
|
+
if (!isAsciiAlpha(first)) {
|
|
35
|
+
return false;
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
else {
|
|
39
|
+
// subsequent domain labels start with alphanumeric
|
|
40
|
+
if (!isAsciiAlphaNum(first)) {
|
|
41
|
+
return false;
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (segLen > 1) {
|
|
45
|
+
if (!isAsciiAlphaNum(input.charCodeAt(i - 1))) {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
for (let j = segStart + 1; j < i - 1; j++) {
|
|
49
|
+
const c = input.charCodeAt(j);
|
|
50
|
+
if (!isAsciiAlphaNum(c) && c !== 0x2d) {
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
segStart = i + 1;
|
|
56
|
+
segIdx++;
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
// need at least 2 domain segments
|
|
60
|
+
if (segIdx < 2) {
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
// name segment (after lastDot): starts with letter, rest alphanumeric, max 63
|
|
64
|
+
const nameStart = lastDot + 1;
|
|
65
|
+
const nameLen = len - nameStart;
|
|
66
|
+
if (nameLen === 0 || nameLen > 63) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
if (!isAsciiAlpha(input.charCodeAt(nameStart))) {
|
|
70
|
+
return false;
|
|
71
|
+
}
|
|
72
|
+
for (let j = nameStart + 1; j < len; j++) {
|
|
73
|
+
if (!isAsciiAlphaNum(input.charCodeAt(j))) {
|
|
74
|
+
return false;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
return true;
|
|
5
78
|
};
|
|
6
79
|
//# sourceMappingURL=nsid.js.map
|
package/dist/syntax/nsid.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nsid.js","sourceRoot":"","sources":["../../lib/syntax/nsid.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"nsid.js","sourceRoot":"","sources":["../../lib/syntax/nsid.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-key.d.ts","sourceRoot":"","sources":["../../lib/syntax/record-key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"record-key.d.ts","sourceRoot":"","sources":["../../lib/syntax/record-key.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAG/B,eAAO,MAAM,WAAW,qCA+BvB,CAAC"}
|
|
@@ -1,6 +1,30 @@
|
|
|
1
|
-
|
|
1
|
+
import { isAsciiAlphaNum } from './utils/ascii.js';
|
|
2
2
|
// #__NO_SIDE_EFFECTS__
|
|
3
3
|
export const isRecordKey = (input) => {
|
|
4
|
-
|
|
4
|
+
if (typeof input !== 'string') {
|
|
5
|
+
return false;
|
|
6
|
+
}
|
|
7
|
+
const len = input.length;
|
|
8
|
+
if (len < 1 || len > 512) {
|
|
9
|
+
return false;
|
|
10
|
+
}
|
|
11
|
+
// reject "." and ".."
|
|
12
|
+
if (len <= 2 && input.charCodeAt(0) === 0x2e && (len === 1 || input.charCodeAt(1) === 0x2e)) {
|
|
13
|
+
return false;
|
|
14
|
+
}
|
|
15
|
+
for (let i = 0; i < len; i++) {
|
|
16
|
+
const c = input.charCodeAt(i);
|
|
17
|
+
// [a-zA-Z0-9_~.:-]
|
|
18
|
+
if (!isAsciiAlphaNum(c) &&
|
|
19
|
+
c !== 0x5f && // _
|
|
20
|
+
c !== 0x7e && // ~
|
|
21
|
+
c !== 0x2e && // .
|
|
22
|
+
c !== 0x3a && // :
|
|
23
|
+
c !== 0x2d // -
|
|
24
|
+
) {
|
|
25
|
+
return false;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
return true;
|
|
5
29
|
};
|
|
6
30
|
//# sourceMappingURL=record-key.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"record-key.js","sourceRoot":"","sources":["../../lib/syntax/record-key.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"record-key.js","sourceRoot":"","sources":["../../lib/syntax/record-key.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAOnD,uBAAuB;AACvB,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,KAAc,EAAsB,EAAE,CAAC;IAClE,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,MAAM,CAAC;IACzB,IAAI,GAAG,GAAG,CAAC,IAAI,GAAG,GAAG,GAAG,EAAE,CAAC;QAC1B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,sBAAsB;IACtB,IAAI,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,KAAK,IAAI,CAAC,EAAE,CAAC;QAC7F,OAAO,KAAK,CAAC;IACd,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,GAAG,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QAC9B,mBAAmB;QACnB,IACC,CAAC,eAAe,CAAC,CAAC,CAAC;YACnB,CAAC,KAAK,IAAI,IAAI,IAAI;YAClB,CAAC,KAAK,IAAI,IAAI,IAAI;YAClB,CAAC,KAAK,IAAI,IAAI,IAAI;YAClB,CAAC,KAAK,IAAI,IAAI,IAAI;YAClB,CAAC,KAAK,IAAI,CAAC,IAAI;UACd,CAAC;YACF,OAAO,KAAK,CAAC;QACd,CAAC;IACF,CAAC;IAED,OAAO,IAAI,CAAC;AAAA,CACZ,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ascii.d.ts","sourceRoot":"","sources":["../../../lib/syntax/utils/ascii.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,YAAY,wBAExB,CAAC;AAGF,eAAO,MAAM,eAAe,wBAE3B,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
// #__NO_SIDE_EFFECTS__
|
|
2
|
+
export const isAsciiAlpha = (c) => {
|
|
3
|
+
return (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
|
|
4
|
+
};
|
|
5
|
+
// #__NO_SIDE_EFFECTS__
|
|
6
|
+
export const isAsciiAlphaNum = (c) => {
|
|
7
|
+
return isAsciiAlpha(c) || (c >= 0x30 && c <= 0x39);
|
|
8
|
+
};
|
|
9
|
+
//# sourceMappingURL=ascii.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ascii.js","sourceRoot":"","sources":["../../../lib/syntax/utils/ascii.ts"],"names":[],"mappings":"AAAA,uBAAuB;AACvB,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC;IACnD,OAAO,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,CAC5D,CAAC;AAEF,uBAAuB;AACvB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAS,EAAW,EAAE,CAAC;IACtD,OAAO,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAAA,CACnD,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { StandardSchemaV1 } from '@standard-schema/spec';
|
|
2
|
-
import * as interfaces from '../interfaces/index.
|
|
3
|
-
import * as syntax from '../syntax/index.
|
|
4
|
-
import type { $type } from '../types/brand.
|
|
2
|
+
import * as interfaces from '../interfaces/index.ts';
|
|
3
|
+
import * as syntax from '../syntax/index.ts';
|
|
4
|
+
import type { $type } from '../types/brand.ts';
|
|
5
5
|
/**
|
|
6
6
|
* flag indicating whether xrpc schema generation helpers are used. set to true
|
|
7
7
|
* when query() or procedure() is called. this enables conditional tree-shaking
|