@atcute/lexicons 1.2.8 → 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.
@@ -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;AAE9D;;;;;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;AAkB9F,eAAO,MAAM,aAAa,0CAkBzB,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"}
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"}
@@ -3,6 +3,7 @@ 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';
6
7
  // minimum valid non-canonical at-uri is `at://a.a` (8 chars)
7
8
  const AT_URI_MIN_LENGTH = 8;
8
9
  // minimum canonical at-uri is `at://did:m:v/a.b.c/x` (20 chars)
@@ -15,6 +16,32 @@ const AT_URI_MAX_LENGTH = 5 + 2048 + 1 + 317 + 1 + 512;
15
16
  // rkey: [a-zA-Z0-9._~:@!$&%')(*+,;=-]
16
17
  // fragment: /[a-zA-Z0-9._~:@!$&%')(*+,;=\-[\]/\\]*
17
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
+ };
18
45
  // #__NO_SIDE_EFFECTS__
19
46
  export const isResourceUri = (input) => {
20
47
  if (typeof input !== 'string') {
@@ -24,12 +51,59 @@ export const isResourceUri = (input) => {
24
51
  if (len < AT_URI_MIN_LENGTH || len > AT_URI_MAX_LENGTH) {
25
52
  return false;
26
53
  }
27
- const match = ATURI_RE.exec(input);
28
- if (match === null) {
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) {
29
101
  return false;
30
102
  }
31
- const [, r, c, k] = match;
32
- return isActorIdentifier(r) && (c === undefined || isNsid(c)) && (k === undefined || isRecordKey(k));
103
+ const repo = input.substring(5, repoEnd);
104
+ return (isActorIdentifier(repo) &&
105
+ (collection === undefined || isNsid(collection)) &&
106
+ (rkey === undefined || isRecordKey(rkey)));
33
107
  };
34
108
  // #__NO_SIDE_EFFECTS__
35
109
  export const parseResourceUri = (input) => {
@@ -1 +1 @@
1
- {"version":3,"file":"at-uri.js","sourceRoot":"","sources":["../../lib/syntax/at-uri.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"at-uri.js","sourceRoot":"","sources":["../../lib/syntax/at-uri.ts"],"names":[],"mappings":"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"}
@@ -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,qCAOjB,CAAC"}
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"}
@@ -1,10 +1,6 @@
1
- const DASL_CID_RE = /^baf[ky]re(?:aa|i[a-z2-7]{52})$/;
1
+ const DASL_CID_RE = /^baf[ky]rei[a-z2-7]{52}$/;
2
2
  // #__NO_SIDE_EFFECTS__
3
3
  export const isCid = (input) => {
4
- if (typeof input !== 'string') {
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
@@ -1 +1 @@
1
- {"version":3,"file":"cid.js","sourceRoot":"","sources":["../../lib/syntax/cid.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,GAAG,iCAAiC,CAAC;AAEtD,uBAAuB;AACvB,MAAM,CAAC,MAAM,KAAK,GAAG,CAAC,KAAc,EAAgB,EAAE,CAAC;IACtD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC/B,OAAO,KAAK,CAAC;IACd,CAAC;IAED,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC5B,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,MAAM,KAAK,EAAE,CAAC,IAAI,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;AAAA,CAClE,CAAC"}
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":"AAAA;;;GAGG;AACH,MAAM,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAC;AA+B3C,eAAO,MAAM,QAAQ,oDAgCpB,CAAC"}
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"}
@@ -1,5 +1,4 @@
1
- const isAlpha = (c) => (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
2
- const isAlphaNum = (c) => isAlpha(c) || (c >= 0x30 && c <= 0x39);
1
+ import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.js';
3
2
  // validates a domain label: starts/ends with alphanumeric, middle allows hyphens, max 63 chars
4
3
  const isValidLabel = (input, start, end) => {
5
4
  const len = end - start;
@@ -7,15 +6,15 @@ const isValidLabel = (input, start, end) => {
7
6
  return false;
8
7
  }
9
8
  const first = input.charCodeAt(start);
10
- if (!isAlphaNum(first)) {
9
+ if (!isAsciiAlphaNum(first)) {
11
10
  return false;
12
11
  }
13
12
  if (len > 1) {
14
- if (!isAlphaNum(input.charCodeAt(end - 1)))
13
+ if (!isAsciiAlphaNum(input.charCodeAt(end - 1)))
15
14
  return false;
16
15
  for (let j = start + 1; j < end - 1; j++) {
17
16
  const c = input.charCodeAt(j);
18
- if (!isAlphaNum(c) && c !== 0x2d) {
17
+ if (!isAsciiAlphaNum(c) && c !== 0x2d) {
19
18
  return false;
20
19
  }
21
20
  }
@@ -49,6 +48,6 @@ export const isHandle = (input) => {
49
48
  return false;
50
49
  }
51
50
  // TLD must start with a letter
52
- return isAlpha(input.charCodeAt(lastLabelStart));
51
+ return isAsciiAlpha(input.charCodeAt(lastLabelStart));
53
52
  };
54
53
  //# sourceMappingURL=handle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"handle.js","sourceRoot":"","sources":["../../lib/syntax/handle.ts"],"names":[],"mappings":"AAMA,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACpF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAEzE,+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,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,KAAK,CAAC;IACd,CAAC;IAED,IAAI,GAAG,GAAG,CAAC,EAAE,CAAC;QACb,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAC;QACzD,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,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBAClC,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,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,CAAC;AAAA,CACjD,CAAC"}
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"}
@@ -1 +1 @@
1
- {"version":3,"file":"nsid.d.ts","sourceRoot":"","sources":["../../lib/syntax/nsid.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAC;AAMnD,eAAO,MAAM,MAAM,8DAoFlB,CAAC"}
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"}
@@ -1,5 +1,4 @@
1
- const isAlpha = (c) => (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
2
- const isAlphaNum = (c) => isAlpha(c) || (c >= 0x30 && c <= 0x39);
1
+ import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.js';
3
2
  // #__NO_SIDE_EFFECTS__
4
3
  export const isNsid = (input) => {
5
4
  if (typeof input !== 'string') {
@@ -32,23 +31,23 @@ export const isNsid = (input) => {
32
31
  const first = input.charCodeAt(segStart);
33
32
  if (segIdx === 0) {
34
33
  // first domain label must start with a letter
35
- if (!isAlpha(first)) {
34
+ if (!isAsciiAlpha(first)) {
36
35
  return false;
37
36
  }
38
37
  }
39
38
  else {
40
39
  // subsequent domain labels start with alphanumeric
41
- if (!isAlphaNum(first)) {
40
+ if (!isAsciiAlphaNum(first)) {
42
41
  return false;
43
42
  }
44
43
  }
45
44
  if (segLen > 1) {
46
- if (!isAlphaNum(input.charCodeAt(i - 1))) {
45
+ if (!isAsciiAlphaNum(input.charCodeAt(i - 1))) {
47
46
  return false;
48
47
  }
49
48
  for (let j = segStart + 1; j < i - 1; j++) {
50
49
  const c = input.charCodeAt(j);
51
- if (!isAlphaNum(c) && c !== 0x2d) {
50
+ if (!isAsciiAlphaNum(c) && c !== 0x2d) {
52
51
  return false;
53
52
  }
54
53
  }
@@ -67,11 +66,11 @@ export const isNsid = (input) => {
67
66
  if (nameLen === 0 || nameLen > 63) {
68
67
  return false;
69
68
  }
70
- if (!isAlpha(input.charCodeAt(nameStart))) {
69
+ if (!isAsciiAlpha(input.charCodeAt(nameStart))) {
71
70
  return false;
72
71
  }
73
72
  for (let j = nameStart + 1; j < len; j++) {
74
- if (!isAlphaNum(input.charCodeAt(j))) {
73
+ if (!isAsciiAlphaNum(input.charCodeAt(j))) {
75
74
  return false;
76
75
  }
77
76
  }
@@ -1 +1 @@
1
- {"version":3,"file":"nsid.js","sourceRoot":"","sources":["../../lib/syntax/nsid.ts"],"names":[],"mappings":"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"}
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":"AAAA;;GAEG;AACH,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAM/B,eAAO,MAAM,WAAW,qCA+BvB,CAAC"}
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,5 +1,4 @@
1
- const isAlpha = (c) => (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
2
- const isAlphaNum = (c) => isAlpha(c) || (c >= 0x30 && c <= 0x39);
1
+ import { isAsciiAlphaNum } from './utils/ascii.js';
3
2
  // #__NO_SIDE_EFFECTS__
4
3
  export const isRecordKey = (input) => {
5
4
  if (typeof input !== 'string') {
@@ -16,7 +15,7 @@ export const isRecordKey = (input) => {
16
15
  for (let i = 0; i < len; i++) {
17
16
  const c = input.charCodeAt(i);
18
17
  // [a-zA-Z0-9_~.:-]
19
- if (!isAlphaNum(c) &&
18
+ if (!isAsciiAlphaNum(c) &&
20
19
  c !== 0x5f && // _
21
20
  c !== 0x7e && // ~
22
21
  c !== 0x2e && // .
@@ -1 +1 @@
1
- {"version":3,"file":"record-key.js","sourceRoot":"","sources":["../../lib/syntax/record-key.ts"],"names":[],"mappings":"AAKA,MAAM,OAAO,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AACpF,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC;AAEzE,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,UAAU,CAAC,CAAC,CAAC;YACd,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"}
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,3 @@
1
+ export declare const isAsciiAlpha: (c: number) => boolean;
2
+ export declare const isAsciiAlphaNum: (c: number) => boolean;
3
+ //# sourceMappingURL=ascii.d.ts.map
@@ -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"}
@@ -4,6 +4,7 @@ import { isActorIdentifier, type ActorIdentifier } from './at-identifier.ts';
4
4
  import { isDid, type Did } from './did.ts';
5
5
  import { isNsid, type Nsid } from './nsid.ts';
6
6
  import { isRecordKey, type RecordKey } from './record-key.ts';
7
+ import { isAsciiAlphaNum } from './utils/ascii.ts';
7
8
 
8
9
  /**
9
10
  * represents a general AT Protocol URI, representing either an entire
@@ -36,6 +37,34 @@ const AT_URI_MAX_LENGTH = 5 + 2048 + 1 + 317 + 1 + 512;
36
37
  const ATURI_RE =
37
38
  /^at:\/\/([a-zA-Z0-9._:%-]+)(?:\/([a-zA-Z0-9-.]+)(?:\/([a-zA-Z0-9._~:@!$&%')(*+,;=-]+))?)?(?:#(\/[a-zA-Z0-9._~:@!$&%')(*+,;=\-[\]/\\]*))?$/;
38
39
 
40
+ const isFragmentChar = (c: number): boolean => {
41
+ return (
42
+ isAsciiAlphaNum(c) ||
43
+ c === 0x2e || // .
44
+ c === 0x5f || // _
45
+ c === 0x7e || // ~
46
+ c === 0x3a || // :
47
+ c === 0x40 || // @
48
+ c === 0x21 || // !
49
+ c === 0x24 || // $
50
+ c === 0x26 || // &
51
+ c === 0x25 || // %
52
+ c === 0x27 || // '
53
+ c === 0x29 || // )
54
+ c === 0x28 || // (
55
+ c === 0x2a || // *
56
+ c === 0x2b || // +
57
+ c === 0x2c || // ,
58
+ c === 0x3b || // ;
59
+ c === 0x3d || // =
60
+ c === 0x2d || // -
61
+ c === 0x5b || // [
62
+ c === 0x5d || // ]
63
+ c === 0x2f || // /
64
+ c === 0x5c // \
65
+ );
66
+ };
67
+
39
68
  // #__NO_SIDE_EFFECTS__
40
69
  export const isResourceUri = (input: unknown): input is ResourceUri => {
41
70
  if (typeof input !== 'string') {
@@ -47,14 +76,74 @@ export const isResourceUri = (input: unknown): input is ResourceUri => {
47
76
  return false;
48
77
  }
49
78
 
50
- const match = ATURI_RE.exec(input);
51
- if (match === null) {
79
+ if (
80
+ input.charCodeAt(0) !== 0x61 ||
81
+ input.charCodeAt(1) !== 0x74 ||
82
+ input.charCodeAt(2) !== 0x3a ||
83
+ input.charCodeAt(3) !== 0x2f ||
84
+ input.charCodeAt(4) !== 0x2f
85
+ ) {
86
+ return false;
87
+ }
88
+
89
+ const hash = input.indexOf('#', 5);
90
+ const stop = hash === -1 ? len : hash;
91
+
92
+ if (hash !== -1) {
93
+ const fragmentStart = hash + 1;
94
+ if (fragmentStart >= len || input.charCodeAt(fragmentStart) !== 0x2f) {
95
+ return false;
96
+ }
97
+
98
+ for (let idx = fragmentStart; idx < len; idx++) {
99
+ if (!isFragmentChar(input.charCodeAt(idx))) {
100
+ return false;
101
+ }
102
+ }
103
+ }
104
+
105
+ const firstSlash = input.indexOf('/', 5);
106
+ let repoEnd = stop;
107
+ let collection: string | undefined;
108
+ let rkey: string | undefined;
109
+
110
+ if (firstSlash !== -1 && firstSlash < stop) {
111
+ repoEnd = firstSlash;
112
+
113
+ const collectionStart = firstSlash + 1;
114
+ if (collectionStart >= stop) {
115
+ return false;
116
+ }
117
+
118
+ const secondSlash = input.indexOf('/', collectionStart);
119
+ if (secondSlash !== -1 && secondSlash < stop) {
120
+ if (secondSlash === collectionStart || secondSlash + 1 >= stop) {
121
+ return false;
122
+ }
123
+
124
+ const thirdSlash = input.indexOf('/', secondSlash + 1);
125
+ if (thirdSlash !== -1 && thirdSlash < stop) {
126
+ return false;
127
+ }
128
+
129
+ collection = input.substring(collectionStart, secondSlash);
130
+ rkey = input.substring(secondSlash + 1, stop);
131
+ } else {
132
+ collection = input.substring(collectionStart, stop);
133
+ }
134
+ }
135
+
136
+ if (repoEnd <= 5) {
52
137
  return false;
53
138
  }
54
139
 
55
- const [, r, c, k] = match;
140
+ const repo = input.substring(5, repoEnd);
56
141
 
57
- return isActorIdentifier(r) && (c === undefined || isNsid(c)) && (k === undefined || isRecordKey(k));
142
+ return (
143
+ isActorIdentifier(repo) &&
144
+ (collection === undefined || isNsid(collection)) &&
145
+ (rkey === undefined || isRecordKey(rkey))
146
+ );
58
147
  };
59
148
 
60
149
  // #__NO_SIDE_EFFECTS__
package/lib/syntax/cid.ts CHANGED
@@ -3,14 +3,9 @@
3
3
  */
4
4
  export type Cid = string;
5
5
 
6
- const DASL_CID_RE = /^baf[ky]re(?:aa|i[a-z2-7]{52})$/;
6
+ const DASL_CID_RE = /^baf[ky]rei[a-z2-7]{52}$/;
7
7
 
8
8
  // #__NO_SIDE_EFFECTS__
9
9
  export const isCid = (input: unknown): input is Cid => {
10
- if (typeof input !== 'string') {
11
- return false;
12
- }
13
-
14
- const length = input.length;
15
- return (length === 8 || length === 59) && DASL_CID_RE.test(input);
10
+ return typeof input === 'string' && input.length === 59 && DASL_CID_RE.test(input);
16
11
  };
@@ -1,12 +1,11 @@
1
+ import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.ts';
2
+
1
3
  /**
2
4
  * represents an account's handle, using domains as a human-friendly
3
5
  * identifier.
4
6
  */
5
7
  export type Handle = `${string}.${string}`;
6
8
 
7
- const isAlpha = (c: number) => (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
8
- const isAlphaNum = (c: number) => isAlpha(c) || (c >= 0x30 && c <= 0x39);
9
-
10
9
  // validates a domain label: starts/ends with alphanumeric, middle allows hyphens, max 63 chars
11
10
  const isValidLabel = (input: string, start: number, end: number): boolean => {
12
11
  const len = end - start;
@@ -15,15 +14,15 @@ const isValidLabel = (input: string, start: number, end: number): boolean => {
15
14
  }
16
15
 
17
16
  const first = input.charCodeAt(start);
18
- if (!isAlphaNum(first)) {
17
+ if (!isAsciiAlphaNum(first)) {
19
18
  return false;
20
19
  }
21
20
 
22
21
  if (len > 1) {
23
- if (!isAlphaNum(input.charCodeAt(end - 1))) return false;
22
+ if (!isAsciiAlphaNum(input.charCodeAt(end - 1))) return false;
24
23
  for (let j = start + 1; j < end - 1; j++) {
25
24
  const c = input.charCodeAt(j);
26
- if (!isAlphaNum(c) && c !== 0x2d) {
25
+ if (!isAsciiAlphaNum(c) && c !== 0x2d) {
27
26
  return false;
28
27
  }
29
28
  }
@@ -64,5 +63,5 @@ export const isHandle = (input: unknown): input is Handle => {
64
63
  }
65
64
 
66
65
  // TLD must start with a letter
67
- return isAlpha(input.charCodeAt(lastLabelStart));
66
+ return isAsciiAlpha(input.charCodeAt(lastLabelStart));
68
67
  };
@@ -1,11 +1,10 @@
1
+ import { isAsciiAlpha, isAsciiAlphaNum } from './utils/ascii.ts';
2
+
1
3
  /**
2
4
  * represents a namespace identifier (NSID)
3
5
  */
4
6
  export type Nsid = `${string}.${string}.${string}`;
5
7
 
6
- const isAlpha = (c: number) => (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
7
- const isAlphaNum = (c: number) => isAlpha(c) || (c >= 0x30 && c <= 0x39);
8
-
9
8
  // #__NO_SIDE_EFFECTS__
10
9
  export const isNsid = (input: unknown): input is Nsid => {
11
10
  if (typeof input !== 'string') {
@@ -42,23 +41,23 @@ export const isNsid = (input: unknown): input is Nsid => {
42
41
  const first = input.charCodeAt(segStart);
43
42
  if (segIdx === 0) {
44
43
  // first domain label must start with a letter
45
- if (!isAlpha(first)) {
44
+ if (!isAsciiAlpha(first)) {
46
45
  return false;
47
46
  }
48
47
  } else {
49
48
  // subsequent domain labels start with alphanumeric
50
- if (!isAlphaNum(first)) {
49
+ if (!isAsciiAlphaNum(first)) {
51
50
  return false;
52
51
  }
53
52
  }
54
53
 
55
54
  if (segLen > 1) {
56
- if (!isAlphaNum(input.charCodeAt(i - 1))) {
55
+ if (!isAsciiAlphaNum(input.charCodeAt(i - 1))) {
57
56
  return false;
58
57
  }
59
58
  for (let j = segStart + 1; j < i - 1; j++) {
60
59
  const c = input.charCodeAt(j);
61
- if (!isAlphaNum(c) && c !== 0x2d) {
60
+ if (!isAsciiAlphaNum(c) && c !== 0x2d) {
62
61
  return false;
63
62
  }
64
63
  }
@@ -81,11 +80,11 @@ export const isNsid = (input: unknown): input is Nsid => {
81
80
  return false;
82
81
  }
83
82
 
84
- if (!isAlpha(input.charCodeAt(nameStart))) {
83
+ if (!isAsciiAlpha(input.charCodeAt(nameStart))) {
85
84
  return false;
86
85
  }
87
86
  for (let j = nameStart + 1; j < len; j++) {
88
- if (!isAlphaNum(input.charCodeAt(j))) {
87
+ if (!isAsciiAlphaNum(input.charCodeAt(j))) {
89
88
  return false;
90
89
  }
91
90
  }
@@ -1,11 +1,10 @@
1
+ import { isAsciiAlphaNum } from './utils/ascii.ts';
2
+
1
3
  /**
2
4
  * represents a record key
3
5
  */
4
6
  export type RecordKey = string;
5
7
 
6
- const isAlpha = (c: number) => (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
7
- const isAlphaNum = (c: number) => isAlpha(c) || (c >= 0x30 && c <= 0x39);
8
-
9
8
  // #__NO_SIDE_EFFECTS__
10
9
  export const isRecordKey = (input: unknown): input is RecordKey => {
11
10
  if (typeof input !== 'string') {
@@ -26,7 +25,7 @@ export const isRecordKey = (input: unknown): input is RecordKey => {
26
25
  const c = input.charCodeAt(i);
27
26
  // [a-zA-Z0-9_~.:-]
28
27
  if (
29
- !isAlphaNum(c) &&
28
+ !isAsciiAlphaNum(c) &&
30
29
  c !== 0x5f && // _
31
30
  c !== 0x7e && // ~
32
31
  c !== 0x2e && // .
@@ -0,0 +1,9 @@
1
+ // #__NO_SIDE_EFFECTS__
2
+ export const isAsciiAlpha = (c: number): boolean => {
3
+ return (c >= 0x41 && c <= 0x5a) || (c >= 0x61 && c <= 0x7a);
4
+ };
5
+
6
+ // #__NO_SIDE_EFFECTS__
7
+ export const isAsciiAlphaNum = (c: number): boolean => {
8
+ return isAsciiAlpha(c) || (c >= 0x30 && c <= 0x39);
9
+ };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@atcute/lexicons",
3
- "version": "1.2.8",
3
+ "version": "1.2.9",
4
4
  "description": "AT Protocol core lexicon types and schema validations",
5
5
  "license": "0BSD",
6
6
  "repository": {
@@ -28,14 +28,14 @@
28
28
  "dependencies": {
29
29
  "@standard-schema/spec": "^1.1.0",
30
30
  "esm-env": "^1.2.2",
31
- "@atcute/util-text": "^1.1.0",
32
- "@atcute/uint8array": "^1.1.0"
31
+ "@atcute/uint8array": "^1.1.1",
32
+ "@atcute/util-text": "^1.1.1"
33
33
  },
34
34
  "devDependencies": {
35
35
  "@vitest/coverage-v8": "^4.0.18",
36
36
  "vitest": "^4.0.18",
37
- "@atcute/cbor": "^2.3.1",
38
- "@atcute/multibase": "^1.1.7"
37
+ "@atcute/cbor": "^2.3.2",
38
+ "@atcute/multibase": "^1.1.8"
39
39
  },
40
40
  "scripts": {
41
41
  "build": "tsgo --project tsconfig.build.json",