@atproto/lexicon 0.3.1 → 0.3.3-next.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 (57) hide show
  1. package/CHANGELOG.md +17 -0
  2. package/LICENSE.txt +1 -1
  3. package/dist/blob-refs.d.ts +8 -7
  4. package/dist/blob-refs.d.ts.map +1 -0
  5. package/dist/blob-refs.js +82 -0
  6. package/dist/blob-refs.js.map +1 -0
  7. package/dist/index.d.ts +1 -0
  8. package/dist/index.d.ts.map +1 -0
  9. package/dist/index.js +20 -15097
  10. package/dist/index.js.map +1 -7
  11. package/dist/lexicons.d.ts +43 -1
  12. package/dist/lexicons.d.ts.map +1 -0
  13. package/dist/lexicons.js +228 -0
  14. package/dist/lexicons.js.map +1 -0
  15. package/dist/serialize.d.ts +3 -2
  16. package/dist/serialize.d.ts.map +1 -0
  17. package/dist/serialize.js +80 -0
  18. package/dist/serialize.js.map +1 -0
  19. package/dist/types.d.ts +430 -429
  20. package/dist/types.d.ts.map +1 -0
  21. package/dist/types.js +331 -0
  22. package/dist/types.js.map +1 -0
  23. package/dist/util.d.ts +1 -0
  24. package/dist/util.d.ts.map +1 -0
  25. package/dist/util.js +158 -0
  26. package/dist/util.js.map +1 -0
  27. package/dist/validation.d.ts +1 -0
  28. package/dist/validation.d.ts.map +1 -0
  29. package/dist/validation.js +67 -0
  30. package/dist/validation.js.map +1 -0
  31. package/dist/validators/blob.d.ts +1 -0
  32. package/dist/validators/blob.d.ts.map +1 -0
  33. package/dist/validators/blob.js +17 -0
  34. package/dist/validators/blob.js.map +1 -0
  35. package/dist/validators/complex.d.ts +1 -0
  36. package/dist/validators/complex.d.ts.map +1 -0
  37. package/dist/validators/complex.js +144 -0
  38. package/dist/validators/complex.js.map +1 -0
  39. package/dist/validators/formats.d.ts +1 -0
  40. package/dist/validators/formats.d.ts.map +1 -0
  41. package/dist/validators/formats.js +125 -0
  42. package/dist/validators/formats.js.map +1 -0
  43. package/dist/validators/primitives.d.ts +1 -0
  44. package/dist/validators/primitives.d.ts.map +1 -0
  45. package/dist/validators/primitives.js +289 -0
  46. package/dist/validators/primitives.js.map +1 -0
  47. package/dist/validators/xrpc.d.ts +1 -0
  48. package/dist/validators/xrpc.d.ts.map +1 -0
  49. package/dist/validators/xrpc.js +67 -0
  50. package/dist/validators/xrpc.js.map +1 -0
  51. package/jest.config.js +4 -3
  52. package/package.json +9 -8
  53. package/src/lexicons.ts +13 -17
  54. package/tsconfig.build.json +6 -2
  55. package/tsconfig.json +3 -10
  56. package/tsconfig.tests.json +7 -0
  57. package/build.js +0 -14
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validation.js","sourceRoot":"","sources":["../src/validation.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;AAOA,iCAAyC;AAEzC,wEAAyD;AACzD,kEAAmD;AAEnD,SAAgB,iBAAiB,CAC/B,QAAkB,EAClB,GAAc,EACd,KAAc;IAEd,MAAM,GAAG,GAAG,iBAAiB,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAA;IAC3E,IAAI,CAAC,GAAG,CAAC,OAAO;QAAE,MAAM,GAAG,CAAC,KAAK,CAAA;IACjC,OAAO,GAAG,CAAC,KAAK,CAAA;AAClB,CAAC;AARD,8CAQC;AAED,SAAgB,qBAAqB,CACnC,QAAkB,EAClB,GAA0D,EAC1D,KAAc;IAEd,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;QACnB,MAAM,GAAG,GAAG,cAAc,CAAC,MAAM,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,UAAU,EAAE,KAAK,CAAC,CAAA;QAC5E,IAAI,CAAC,GAAG,CAAC,OAAO;YAAE,MAAM,GAAG,CAAC,KAAK,CAAA;QACjC,OAAO,GAAG,CAAC,KAAK,CAAA;IAClB,CAAC;AACH,CAAC;AAVD,sDAUC;AAED,SAAgB,oBAAoB,CAClC,QAAkB,EAClB,GAAqB,EACrB,KAAc;IAEd,IAAI,GAAG,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;QACtB,qCAAqC;QACrC,OAAO,IAAA,uBAAgB,EAAC,QAAQ,EAAE,OAAO,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC3E,CAAC;AACH,CAAC;AATD,oDASC;AAED,SAAgB,qBAAqB,CACnC,QAAkB,EAClB,GAAoC,EACpC,KAAc;IAEd,IAAI,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC;QACvB,sCAAsC;QACtC,OAAO,IAAA,uBAAgB,EAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,CAAC,CAAA;IAC7E,CAAC;AACH,CAAC;AATD,sDASC;AAED,SAAgB,sBAAsB,CACpC,QAAkB,EAClB,GAAwB,EACxB,KAAc;IAEd,IAAI,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,CAAC;QACxB,sCAAsC;QACtC,OAAO,IAAA,uBAAgB,EACrB,QAAQ,EACR,SAAS,EACT,GAAG,CAAC,OAAO,CAAC,MAAM,EAClB,KAAK,EACL,IAAI,CACL,CAAA;IACH,CAAC;AACH,CAAC;AAfD,wDAeC"}
@@ -1,3 +1,4 @@
1
1
  import { Lexicons } from '../lexicons';
2
2
  import { LexUserType, ValidationResult } from '../types';
3
3
  export declare function blob(lexicons: Lexicons, path: string, def: LexUserType, value: unknown): ValidationResult;
4
+ //# sourceMappingURL=blob.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.d.ts","sourceRoot":"","sources":["../../src/validators/blob.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EAAE,WAAW,EAAE,gBAAgB,EAAmB,MAAM,UAAU,CAAA;AAEzE,wBAAgB,IAAI,CAClB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CASlB"}
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.blob = void 0;
4
+ const blob_refs_1 = require("../blob-refs");
5
+ const types_1 = require("../types");
6
+ function blob(lexicons, path, def, value) {
7
+ // check
8
+ if (!value || !(value instanceof blob_refs_1.BlobRef)) {
9
+ return {
10
+ success: false,
11
+ error: new types_1.ValidationError(`${path} should be a blob ref`),
12
+ };
13
+ }
14
+ return { success: true, value };
15
+ }
16
+ exports.blob = blob;
17
+ //# sourceMappingURL=blob.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"blob.js","sourceRoot":"","sources":["../../src/validators/blob.ts"],"names":[],"mappings":";;;AAAA,4CAAsC;AAEtC,oCAAyE;AAEzE,SAAgB,IAAI,CAClB,QAAkB,EAClB,IAAY,EACZ,GAAgB,EAChB,KAAc;IAEd,QAAQ;IACR,IAAI,CAAC,KAAK,IAAI,CAAC,CAAC,KAAK,YAAY,mBAAO,CAAC,EAAE,CAAC;QAC1C,OAAO;YACL,OAAO,EAAE,KAAK;YACd,KAAK,EAAE,IAAI,uBAAe,CAAC,GAAG,IAAI,uBAAuB,CAAC;SAC3D,CAAA;IACH,CAAC;IACD,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC;AAdD,oBAcC"}
@@ -3,3 +3,4 @@ import { LexArray, LexUserType, ValidationResult } from '../types';
3
3
  export declare function validate(lexicons: Lexicons, path: string, def: LexUserType, value: unknown): ValidationResult;
4
4
  export declare function array(lexicons: Lexicons, path: string, def: LexArray, value: unknown): ValidationResult;
5
5
  export declare function object(lexicons: Lexicons, path: string, def: LexUserType, value: unknown): ValidationResult;
6
+ //# sourceMappingURL=complex.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complex.d.ts","sourceRoot":"","sources":["../../src/validators/complex.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AACtC,OAAO,EACL,QAAQ,EAER,WAAW,EACX,gBAAgB,EAEjB,MAAM,UAAU,CAAA;AAMjB,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CA0BlB;AAED,wBAAgB,KAAK,CACnB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,QAAQ,EACb,KAAK,EAAE,OAAO,GACb,gBAAgB,CA6ClB;AAED,wBAAgB,MAAM,CACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CA+ClB"}
@@ -0,0 +1,144 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.object = exports.array = exports.validate = void 0;
27
+ const types_1 = require("../types");
28
+ const util_1 = require("../util");
29
+ const Primitives = __importStar(require("./primitives"));
30
+ const Blob = __importStar(require("./blob"));
31
+ function validate(lexicons, path, def, value) {
32
+ switch (def.type) {
33
+ case 'boolean':
34
+ return Primitives.boolean(lexicons, path, def, value);
35
+ case 'integer':
36
+ return Primitives.integer(lexicons, path, def, value);
37
+ case 'string':
38
+ return Primitives.string(lexicons, path, def, value);
39
+ case 'bytes':
40
+ return Primitives.bytes(lexicons, path, def, value);
41
+ case 'cid-link':
42
+ return Primitives.cidLink(lexicons, path, def, value);
43
+ case 'unknown':
44
+ return Primitives.unknown(lexicons, path, def, value);
45
+ case 'object':
46
+ return object(lexicons, path, def, value);
47
+ case 'array':
48
+ return array(lexicons, path, def, value);
49
+ case 'blob':
50
+ return Blob.blob(lexicons, path, def, value);
51
+ default:
52
+ return {
53
+ success: false,
54
+ error: new types_1.ValidationError(`Unexpected lexicon type: ${def.type}`),
55
+ };
56
+ }
57
+ }
58
+ exports.validate = validate;
59
+ function array(lexicons, path, def, value) {
60
+ // type
61
+ if (!Array.isArray(value)) {
62
+ return {
63
+ success: false,
64
+ error: new types_1.ValidationError(`${path} must be an array`),
65
+ };
66
+ }
67
+ // maxLength
68
+ if (typeof def.maxLength === 'number') {
69
+ if (value.length > def.maxLength) {
70
+ return {
71
+ success: false,
72
+ error: new types_1.ValidationError(`${path} must not have more than ${def.maxLength} elements`),
73
+ };
74
+ }
75
+ }
76
+ // minLength
77
+ if (typeof def.minLength === 'number') {
78
+ if (value.length < def.minLength) {
79
+ return {
80
+ success: false,
81
+ error: new types_1.ValidationError(`${path} must not have fewer than ${def.minLength} elements`),
82
+ };
83
+ }
84
+ }
85
+ // items
86
+ const itemsDef = def.items;
87
+ for (let i = 0; i < value.length; i++) {
88
+ const itemValue = value[i];
89
+ const itemPath = `${path}/${i}`;
90
+ const res = (0, util_1.validateOneOf)(lexicons, itemPath, itemsDef, itemValue);
91
+ if (!res.success) {
92
+ return res;
93
+ }
94
+ }
95
+ return { success: true, value };
96
+ }
97
+ exports.array = array;
98
+ function object(lexicons, path, def, value) {
99
+ def = def;
100
+ // type
101
+ if (!value || typeof value !== 'object') {
102
+ return {
103
+ success: false,
104
+ error: new types_1.ValidationError(`${path} must be an object`),
105
+ };
106
+ }
107
+ const requiredProps = new Set(def.required);
108
+ const nullableProps = new Set(def.nullable);
109
+ // properties
110
+ let resultValue = value;
111
+ if (typeof def.properties === 'object') {
112
+ for (const key in def.properties) {
113
+ if (value[key] === null && nullableProps.has(key)) {
114
+ continue;
115
+ }
116
+ const propDef = def.properties[key];
117
+ const propPath = `${path}/${key}`;
118
+ const validated = (0, util_1.validateOneOf)(lexicons, propPath, propDef, value[key]);
119
+ const propValue = validated.success ? validated.value : value[key];
120
+ const propIsUndefined = typeof propValue === 'undefined';
121
+ // Return error for bad validation, giving required rule precedence
122
+ if (propIsUndefined && requiredProps.has(key)) {
123
+ return {
124
+ success: false,
125
+ error: new types_1.ValidationError(`${path} must have the property "${key}"`),
126
+ };
127
+ }
128
+ else if (!propIsUndefined && !validated.success) {
129
+ return validated;
130
+ }
131
+ // Adjust value based on e.g. applied defaults, cloning shallowly if there was a changed value
132
+ if (propValue !== value[key]) {
133
+ if (resultValue === value) {
134
+ // Lazy shallow clone
135
+ resultValue = { ...value };
136
+ }
137
+ resultValue[key] = propValue;
138
+ }
139
+ }
140
+ }
141
+ return { success: true, value: resultValue };
142
+ }
143
+ exports.object = object;
144
+ //# sourceMappingURL=complex.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"complex.js","sourceRoot":"","sources":["../../src/validators/complex.ts"],"names":[],"mappings":"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"}
@@ -8,3 +8,4 @@ export declare function atIdentifier(path: string, value: string): ValidationRes
8
8
  export declare function nsid(path: string, value: string): ValidationResult;
9
9
  export declare function cid(path: string, value: string): ValidationResult;
10
10
  export declare function language(path: string, value: string): ValidationResult;
11
+ //# sourceMappingURL=formats.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.d.ts","sourceRoot":"","sources":["../../src/validators/formats.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,gBAAgB,EAAmB,MAAM,UAAU,CAAA;AAS5D,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CActE;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CASjE;AAED,wBAAgB,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUnE;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUjE;AAED,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUpE;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAY1E;AAED,wBAAgB,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUlE;AAED,wBAAgB,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUjE;AAGD,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAUtE"}
@@ -0,0 +1,125 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.language = exports.cid = exports.nsid = exports.atIdentifier = exports.handle = exports.did = exports.atUri = exports.uri = exports.datetime = void 0;
4
+ const iso_datestring_validator_1 = require("iso-datestring-validator");
5
+ const cid_1 = require("multiformats/cid");
6
+ const types_1 = require("../types");
7
+ const syntax_1 = require("@atproto/syntax");
8
+ const common_web_1 = require("@atproto/common-web");
9
+ function datetime(path, value) {
10
+ try {
11
+ if (!(0, iso_datestring_validator_1.isValidISODateString)(value)) {
12
+ throw new Error();
13
+ }
14
+ }
15
+ catch {
16
+ return {
17
+ success: false,
18
+ error: new types_1.ValidationError(`${path} must be an valid atproto datetime (both RFC-3339 and ISO-8601)`),
19
+ };
20
+ }
21
+ return { success: true, value };
22
+ }
23
+ exports.datetime = datetime;
24
+ function uri(path, value) {
25
+ const isUri = value.match(/^\w+:(?:\/\/)?[^\s/][^\s]*$/) !== null;
26
+ if (!isUri) {
27
+ return {
28
+ success: false,
29
+ error: new types_1.ValidationError(`${path} must be a uri`),
30
+ };
31
+ }
32
+ return { success: true, value };
33
+ }
34
+ exports.uri = uri;
35
+ function atUri(path, value) {
36
+ try {
37
+ (0, syntax_1.ensureValidAtUri)(value);
38
+ }
39
+ catch {
40
+ return {
41
+ success: false,
42
+ error: new types_1.ValidationError(`${path} must be a valid at-uri`),
43
+ };
44
+ }
45
+ return { success: true, value };
46
+ }
47
+ exports.atUri = atUri;
48
+ function did(path, value) {
49
+ try {
50
+ (0, syntax_1.ensureValidDid)(value);
51
+ }
52
+ catch {
53
+ return {
54
+ success: false,
55
+ error: new types_1.ValidationError(`${path} must be a valid did`),
56
+ };
57
+ }
58
+ return { success: true, value };
59
+ }
60
+ exports.did = did;
61
+ function handle(path, value) {
62
+ try {
63
+ (0, syntax_1.ensureValidHandle)(value);
64
+ }
65
+ catch {
66
+ return {
67
+ success: false,
68
+ error: new types_1.ValidationError(`${path} must be a valid handle`),
69
+ };
70
+ }
71
+ return { success: true, value };
72
+ }
73
+ exports.handle = handle;
74
+ function atIdentifier(path, value) {
75
+ const isDid = did(path, value);
76
+ if (!isDid.success) {
77
+ const isHandle = handle(path, value);
78
+ if (!isHandle.success) {
79
+ return {
80
+ success: false,
81
+ error: new types_1.ValidationError(`${path} must be a valid did or a handle`),
82
+ };
83
+ }
84
+ }
85
+ return { success: true, value };
86
+ }
87
+ exports.atIdentifier = atIdentifier;
88
+ function nsid(path, value) {
89
+ try {
90
+ (0, syntax_1.ensureValidNsid)(value);
91
+ }
92
+ catch {
93
+ return {
94
+ success: false,
95
+ error: new types_1.ValidationError(`${path} must be a valid nsid`),
96
+ };
97
+ }
98
+ return { success: true, value };
99
+ }
100
+ exports.nsid = nsid;
101
+ function cid(path, value) {
102
+ try {
103
+ cid_1.CID.parse(value);
104
+ }
105
+ catch {
106
+ return {
107
+ success: false,
108
+ error: new types_1.ValidationError(`${path} must be a cid string`),
109
+ };
110
+ }
111
+ return { success: true, value };
112
+ }
113
+ exports.cid = cid;
114
+ // The language format validates well-formed BCP 47 language tags: https://www.rfc-editor.org/info/bcp47
115
+ function language(path, value) {
116
+ if ((0, common_web_1.validateLanguage)(value)) {
117
+ return { success: true, value };
118
+ }
119
+ return {
120
+ success: false,
121
+ error: new types_1.ValidationError(`${path} must be a well-formed BCP 47 language tag`),
122
+ };
123
+ }
124
+ exports.language = language;
125
+ //# sourceMappingURL=formats.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"formats.js","sourceRoot":"","sources":["../../src/validators/formats.ts"],"names":[],"mappings":"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"}
@@ -7,3 +7,4 @@ export declare function string(lexicons: Lexicons, path: string, def: LexUserTyp
7
7
  export declare function bytes(lexicons: Lexicons, path: string, def: LexUserType, value: unknown): ValidationResult;
8
8
  export declare function cidLink(lexicons: Lexicons, path: string, def: LexUserType, value: unknown): ValidationResult;
9
9
  export declare function unknown(lexicons: Lexicons, path: string, def: LexUserType, value: unknown): ValidationResult;
10
+ //# sourceMappingURL=primitives.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.d.ts","sourceRoot":"","sources":["../../src/validators/primitives.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAA;AAEtC,OAAO,EACL,WAAW,EAIX,gBAAgB,EAGjB,MAAM,UAAU,CAAA;AAEjB,wBAAgB,QAAQ,CACtB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CAoBlB;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CA+BlB;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CAmElB;AAED,wBAAgB,MAAM,CACpB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CAiHlB;AAED,wBAAgB,KAAK,CACnB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CAmClB;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CASlB;AAED,wBAAgB,OAAO,CACrB,QAAQ,EAAE,QAAQ,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,EAAE,WAAW,EAChB,KAAK,EAAE,OAAO,GACb,gBAAgB,CAUlB"}
@@ -0,0 +1,289 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.unknown = exports.cidLink = exports.bytes = exports.string = exports.integer = exports.boolean = exports.validate = void 0;
27
+ const common_web_1 = require("@atproto/common-web");
28
+ const cid_1 = require("multiformats/cid");
29
+ const formats = __importStar(require("./formats"));
30
+ const types_1 = require("../types");
31
+ function validate(lexicons, path, def, value) {
32
+ switch (def.type) {
33
+ case 'boolean':
34
+ return boolean(lexicons, path, def, value);
35
+ case 'integer':
36
+ return integer(lexicons, path, def, value);
37
+ case 'string':
38
+ return string(lexicons, path, def, value);
39
+ case 'bytes':
40
+ return bytes(lexicons, path, def, value);
41
+ case 'cid-link':
42
+ return cidLink(lexicons, path, def, value);
43
+ case 'unknown':
44
+ return unknown(lexicons, path, def, value);
45
+ default:
46
+ return {
47
+ success: false,
48
+ error: new types_1.ValidationError(`Unexpected lexicon type: ${def.type}`),
49
+ };
50
+ }
51
+ }
52
+ exports.validate = validate;
53
+ function boolean(lexicons, path, def, value) {
54
+ def = def;
55
+ // type
56
+ const type = typeof value;
57
+ if (type === 'undefined') {
58
+ if (typeof def.default === 'boolean') {
59
+ return { success: true, value: def.default };
60
+ }
61
+ return {
62
+ success: false,
63
+ error: new types_1.ValidationError(`${path} must be a boolean`),
64
+ };
65
+ }
66
+ else if (type !== 'boolean') {
67
+ return {
68
+ success: false,
69
+ error: new types_1.ValidationError(`${path} must be a boolean`),
70
+ };
71
+ }
72
+ // const
73
+ if (typeof def.const === 'boolean') {
74
+ if (value !== def.const) {
75
+ return {
76
+ success: false,
77
+ error: new types_1.ValidationError(`${path} must be ${def.const}`),
78
+ };
79
+ }
80
+ }
81
+ return { success: true, value };
82
+ }
83
+ exports.boolean = boolean;
84
+ function integer(lexicons, path, def, value) {
85
+ def = def;
86
+ // type
87
+ const type = typeof value;
88
+ if (type === 'undefined') {
89
+ if (typeof def.default === 'number') {
90
+ return { success: true, value: def.default };
91
+ }
92
+ return {
93
+ success: false,
94
+ error: new types_1.ValidationError(`${path} must be an integer`),
95
+ };
96
+ }
97
+ else if (!Number.isInteger(value)) {
98
+ return {
99
+ success: false,
100
+ error: new types_1.ValidationError(`${path} must be an integer`),
101
+ };
102
+ }
103
+ // const
104
+ if (typeof def.const === 'number') {
105
+ if (value !== def.const) {
106
+ return {
107
+ success: false,
108
+ error: new types_1.ValidationError(`${path} must be ${def.const}`),
109
+ };
110
+ }
111
+ }
112
+ // enum
113
+ if (Array.isArray(def.enum)) {
114
+ if (!def.enum.includes(value)) {
115
+ return {
116
+ success: false,
117
+ error: new types_1.ValidationError(`${path} must be one of (${def.enum.join('|')})`),
118
+ };
119
+ }
120
+ }
121
+ // maximum
122
+ if (typeof def.maximum === 'number') {
123
+ if (value > def.maximum) {
124
+ return {
125
+ success: false,
126
+ error: new types_1.ValidationError(`${path} can not be greater than ${def.maximum}`),
127
+ };
128
+ }
129
+ }
130
+ // minimum
131
+ if (typeof def.minimum === 'number') {
132
+ if (value < def.minimum) {
133
+ return {
134
+ success: false,
135
+ error: new types_1.ValidationError(`${path} can not be less than ${def.minimum}`),
136
+ };
137
+ }
138
+ }
139
+ return { success: true, value };
140
+ }
141
+ exports.integer = integer;
142
+ function string(lexicons, path, def, value) {
143
+ def = def;
144
+ // type
145
+ if (typeof value === 'undefined') {
146
+ if (typeof def.default === 'string') {
147
+ return { success: true, value: def.default };
148
+ }
149
+ return {
150
+ success: false,
151
+ error: new types_1.ValidationError(`${path} must be a string`),
152
+ };
153
+ }
154
+ else if (typeof value !== 'string') {
155
+ return {
156
+ success: false,
157
+ error: new types_1.ValidationError(`${path} must be a string`),
158
+ };
159
+ }
160
+ // const
161
+ if (typeof def.const === 'string') {
162
+ if (value !== def.const) {
163
+ return {
164
+ success: false,
165
+ error: new types_1.ValidationError(`${path} must be ${def.const}`),
166
+ };
167
+ }
168
+ }
169
+ // enum
170
+ if (Array.isArray(def.enum)) {
171
+ if (!def.enum.includes(value)) {
172
+ return {
173
+ success: false,
174
+ error: new types_1.ValidationError(`${path} must be one of (${def.enum.join('|')})`),
175
+ };
176
+ }
177
+ }
178
+ // maxLength
179
+ if (typeof def.maxLength === 'number') {
180
+ if ((0, common_web_1.utf8Len)(value) > def.maxLength) {
181
+ return {
182
+ success: false,
183
+ error: new types_1.ValidationError(`${path} must not be longer than ${def.maxLength} characters`),
184
+ };
185
+ }
186
+ }
187
+ // minLength
188
+ if (typeof def.minLength === 'number') {
189
+ if ((0, common_web_1.utf8Len)(value) < def.minLength) {
190
+ return {
191
+ success: false,
192
+ error: new types_1.ValidationError(`${path} must not be shorter than ${def.minLength} characters`),
193
+ };
194
+ }
195
+ }
196
+ // maxGraphemes
197
+ if (typeof def.maxGraphemes === 'number') {
198
+ if ((0, common_web_1.graphemeLen)(value) > def.maxGraphemes) {
199
+ return {
200
+ success: false,
201
+ error: new types_1.ValidationError(`${path} must not be longer than ${def.maxGraphemes} graphemes`),
202
+ };
203
+ }
204
+ }
205
+ // minGraphemes
206
+ if (typeof def.minGraphemes === 'number') {
207
+ if ((0, common_web_1.graphemeLen)(value) < def.minGraphemes) {
208
+ return {
209
+ success: false,
210
+ error: new types_1.ValidationError(`${path} must not be shorter than ${def.minGraphemes} graphemes`),
211
+ };
212
+ }
213
+ }
214
+ if (typeof def.format === 'string') {
215
+ switch (def.format) {
216
+ case 'datetime':
217
+ return formats.datetime(path, value);
218
+ case 'uri':
219
+ return formats.uri(path, value);
220
+ case 'at-uri':
221
+ return formats.atUri(path, value);
222
+ case 'did':
223
+ return formats.did(path, value);
224
+ case 'handle':
225
+ return formats.handle(path, value);
226
+ case 'at-identifier':
227
+ return formats.atIdentifier(path, value);
228
+ case 'nsid':
229
+ return formats.nsid(path, value);
230
+ case 'cid':
231
+ return formats.cid(path, value);
232
+ case 'language':
233
+ return formats.language(path, value);
234
+ }
235
+ }
236
+ return { success: true, value };
237
+ }
238
+ exports.string = string;
239
+ function bytes(lexicons, path, def, value) {
240
+ def = def;
241
+ if (!value || !(value instanceof Uint8Array)) {
242
+ return {
243
+ success: false,
244
+ error: new types_1.ValidationError(`${path} must be a byte array`),
245
+ };
246
+ }
247
+ // maxLength
248
+ if (typeof def.maxLength === 'number') {
249
+ if (value.byteLength > def.maxLength) {
250
+ return {
251
+ success: false,
252
+ error: new types_1.ValidationError(`${path} must not be larger than ${def.maxLength} bytes`),
253
+ };
254
+ }
255
+ }
256
+ // minLength
257
+ if (typeof def.minLength === 'number') {
258
+ if (value.byteLength < def.minLength) {
259
+ return {
260
+ success: false,
261
+ error: new types_1.ValidationError(`${path} must not be smaller than ${def.minLength} bytes`),
262
+ };
263
+ }
264
+ }
265
+ return { success: true, value };
266
+ }
267
+ exports.bytes = bytes;
268
+ function cidLink(lexicons, path, def, value) {
269
+ if (cid_1.CID.asCID(value) === null) {
270
+ return {
271
+ success: false,
272
+ error: new types_1.ValidationError(`${path} must be a CID`),
273
+ };
274
+ }
275
+ return { success: true, value };
276
+ }
277
+ exports.cidLink = cidLink;
278
+ function unknown(lexicons, path, def, value) {
279
+ // type
280
+ if (!value || typeof value !== 'object') {
281
+ return {
282
+ success: false,
283
+ error: new types_1.ValidationError(`${path} must be an object`),
284
+ };
285
+ }
286
+ return { success: true, value };
287
+ }
288
+ exports.unknown = unknown;
289
+ //# sourceMappingURL=primitives.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"primitives.js","sourceRoot":"","sources":["../../src/validators/primitives.ts"],"names":[],"mappings":"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"}
@@ -1,3 +1,4 @@
1
1
  import { Lexicons } from '../lexicons';
2
2
  import { LexXrpcParameters, ValidationResult } from '../types';
3
3
  export declare function params(lexicons: Lexicons, path: string, def: LexXrpcParameters, val: unknown): ValidationResult;
4
+ //# sourceMappingURL=xrpc.d.ts.map