@atcute/lexicons 1.0.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.
Files changed (91) hide show
  1. package/LICENSE +17 -0
  2. package/README.md +11 -0
  3. package/dist/ambient.d.ts +8 -0
  4. package/dist/ambient.js +2 -0
  5. package/dist/ambient.js.map +1 -0
  6. package/dist/index.d.ts +16 -0
  7. package/dist/index.js +3 -0
  8. package/dist/index.js.map +1 -0
  9. package/dist/interfaces/blob.d.ts +20 -0
  10. package/dist/interfaces/blob.js +20 -0
  11. package/dist/interfaces/blob.js.map +1 -0
  12. package/dist/interfaces/bytes.d.ts +23 -0
  13. package/dist/interfaces/bytes.js +21 -0
  14. package/dist/interfaces/bytes.js.map +1 -0
  15. package/dist/interfaces/cid-link.d.ts +24 -0
  16. package/dist/interfaces/cid-link.js +13 -0
  17. package/dist/interfaces/cid-link.js.map +1 -0
  18. package/dist/interfaces/index.d.ts +3 -0
  19. package/dist/interfaces/index.js +4 -0
  20. package/dist/interfaces/index.js.map +1 -0
  21. package/dist/syntax/at-identifier.d.ts +8 -0
  22. package/dist/syntax/at-identifier.js +7 -0
  23. package/dist/syntax/at-identifier.js.map +1 -0
  24. package/dist/syntax/at-uri.d.ts +46 -0
  25. package/dist/syntax/at-uri.js +64 -0
  26. package/dist/syntax/at-uri.js.map +1 -0
  27. package/dist/syntax/cid.d.ts +5 -0
  28. package/dist/syntax/cid.js +10 -0
  29. package/dist/syntax/cid.js.map +1 -0
  30. package/dist/syntax/datetime.d.ts +2 -0
  31. package/dist/syntax/datetime.js +6 -0
  32. package/dist/syntax/datetime.js.map +1 -0
  33. package/dist/syntax/did.d.ts +9 -0
  34. package/dist/syntax/did.js +6 -0
  35. package/dist/syntax/did.js.map +1 -0
  36. package/dist/syntax/handle.d.ts +6 -0
  37. package/dist/syntax/handle.js +6 -0
  38. package/dist/syntax/handle.js.map +1 -0
  39. package/dist/syntax/index.d.ts +11 -0
  40. package/dist/syntax/index.js +12 -0
  41. package/dist/syntax/index.js.map +1 -0
  42. package/dist/syntax/language.d.ts +2 -0
  43. package/dist/syntax/language.js +6 -0
  44. package/dist/syntax/language.js.map +1 -0
  45. package/dist/syntax/nsid.d.ts +5 -0
  46. package/dist/syntax/nsid.js +6 -0
  47. package/dist/syntax/nsid.js.map +1 -0
  48. package/dist/syntax/record-key.d.ts +5 -0
  49. package/dist/syntax/record-key.js +6 -0
  50. package/dist/syntax/record-key.js.map +1 -0
  51. package/dist/syntax/tid.d.ts +5 -0
  52. package/dist/syntax/tid.js +6 -0
  53. package/dist/syntax/tid.js.map +1 -0
  54. package/dist/syntax/uri.d.ts +5 -0
  55. package/dist/syntax/uri.js +6 -0
  56. package/dist/syntax/uri.js.map +1 -0
  57. package/dist/types/brand.d.ts +13 -0
  58. package/dist/types/brand.js +2 -0
  59. package/dist/types/brand.js.map +1 -0
  60. package/dist/utils.d.ts +11 -0
  61. package/dist/utils.js +12 -0
  62. package/dist/utils.js.map +1 -0
  63. package/dist/validations/index.d.ts +409 -0
  64. package/dist/validations/index.js +1003 -0
  65. package/dist/validations/index.js.map +1 -0
  66. package/dist/validations/utils.d.ts +8 -0
  67. package/dist/validations/utils.js +54 -0
  68. package/dist/validations/utils.js.map +1 -0
  69. package/lib/ambient.ts +7 -0
  70. package/lib/index.ts +38 -0
  71. package/lib/interfaces/blob.ts +47 -0
  72. package/lib/interfaces/bytes.ts +45 -0
  73. package/lib/interfaces/cid-link.ts +36 -0
  74. package/lib/interfaces/index.ts +3 -0
  75. package/lib/syntax/at-identifier.ts +13 -0
  76. package/lib/syntax/at-uri.ts +117 -0
  77. package/lib/syntax/cid.ts +16 -0
  78. package/lib/syntax/datetime.ts +9 -0
  79. package/lib/syntax/did.ts +16 -0
  80. package/lib/syntax/handle.ts +13 -0
  81. package/lib/syntax/index.ts +11 -0
  82. package/lib/syntax/language.ts +9 -0
  83. package/lib/syntax/nsid.ts +12 -0
  84. package/lib/syntax/record-key.ts +11 -0
  85. package/lib/syntax/tid.ts +11 -0
  86. package/lib/syntax/uri.ts +11 -0
  87. package/lib/types/brand.ts +11 -0
  88. package/lib/utils.ts +15 -0
  89. package/lib/validations/index.ts +1749 -0
  90. package/lib/validations/utils.ts +62 -0
  91. package/package.json +35 -0
@@ -0,0 +1,62 @@
1
+ const segmenter = new Intl.Segmenter();
2
+
3
+ export const getUtf8Length = (str: string): number => {
4
+ const len = str.length;
5
+
6
+ let u16pos = 0;
7
+ let u8pos = 0;
8
+
9
+ while (u16pos < len) {
10
+ const code = str.charCodeAt(u16pos);
11
+
12
+ if (code < 0x80) {
13
+ u16pos += 1;
14
+ u8pos += 1;
15
+ } else if (code < 0x800) {
16
+ u16pos += 1;
17
+ u8pos += 2;
18
+ } else if (code < 0xd800 || code > 0xdbff) {
19
+ u16pos += 1;
20
+ u8pos += 3;
21
+ } else {
22
+ u16pos += 2;
23
+ u8pos += 4;
24
+ }
25
+ }
26
+
27
+ return u8pos;
28
+ };
29
+
30
+ export const getGraphemeLength = (text: string): number => {
31
+ const iterator = segmenter.segment(text)[Symbol.iterator]();
32
+ let count = 0;
33
+
34
+ while (!iterator.next().done) {
35
+ count++;
36
+ }
37
+
38
+ return count;
39
+ };
40
+
41
+ // #__NO_SIDE_EFFECTS__
42
+ export const lazyProperty = <T>(obj: object, prop: string | number | symbol, value: T): T => {
43
+ Object.defineProperty(obj, prop, { value });
44
+ return value;
45
+ };
46
+
47
+ // #__NO_SIDE_EFFECTS__
48
+ export const lazy = <T>(getter: () => T): { readonly value: T } => {
49
+ return {
50
+ get value() {
51
+ const value = getter();
52
+ return lazyProperty(this, 'value', value);
53
+ },
54
+ };
55
+ };
56
+
57
+ export const isArray = /*#__PURE__*/ Array.isArray;
58
+
59
+ // #__NO_SIDE_EFFECTS__
60
+ export const isObject = (input: unknown): input is Record<string, unknown> => {
61
+ return typeof input === 'object' && input !== null && !isArray(input);
62
+ };
package/package.json ADDED
@@ -0,0 +1,35 @@
1
+ {
2
+ "type": "module",
3
+ "name": "@atcute/lexicons",
4
+ "version": "1.0.0",
5
+ "description": "AT Protocol core lexicon types and schema validations",
6
+ "license": "MIT",
7
+ "repository": {
8
+ "url": "https://github.com/mary-ext/atcute",
9
+ "directory": "packages/core/lexicons"
10
+ },
11
+ "files": [
12
+ "dist/",
13
+ "lib/",
14
+ "!lib/**/*.bench.ts",
15
+ "!lib/**/*.test.ts"
16
+ ],
17
+ "exports": {
18
+ ".": "./dist/index.js",
19
+ "./ambient": "./dist/ambient.js",
20
+ "./interfaces": "./dist/interfaces/index.js",
21
+ "./syntax": "./dist/syntax/index.js",
22
+ "./validations": "./dist/validations/index.js"
23
+ },
24
+ "sideEffects": false,
25
+ "devDependencies": {
26
+ "@types/bun": "^1.2.13",
27
+ "@vitest/coverage-v8": "^3.1.3",
28
+ "vitest": "^3.1.3"
29
+ },
30
+ "scripts": {
31
+ "build": "tsc --project tsconfig.build.json",
32
+ "test": "vitest",
33
+ "prepublish": "rm -rf dist; pnpm run build"
34
+ }
35
+ }