@atproto/lex-schema 0.0.4 → 0.0.6

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 (299) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/dist/core/$type.d.ts +7 -0
  3. package/dist/core/$type.d.ts.map +1 -1
  4. package/dist/core/$type.js.map +1 -1
  5. package/dist/core/property-key.d.ts.map +1 -0
  6. package/dist/core/property-key.js.map +1 -0
  7. package/dist/core/result.d.ts +7 -6
  8. package/dist/core/result.d.ts.map +1 -1
  9. package/dist/core/result.js +9 -8
  10. package/dist/core/result.js.map +1 -1
  11. package/dist/{validation → core}/schema.d.ts +21 -2
  12. package/dist/core/schema.d.ts.map +1 -0
  13. package/dist/{validation → core}/schema.js +25 -2
  14. package/dist/core/schema.js.map +1 -0
  15. package/dist/core/string-format.d.ts +37 -26
  16. package/dist/core/string-format.d.ts.map +1 -1
  17. package/dist/core/string-format.js +66 -59
  18. package/dist/core/string-format.js.map +1 -1
  19. package/dist/core/types.d.ts +3 -0
  20. package/dist/core/types.d.ts.map +1 -1
  21. package/dist/core/types.js.map +1 -1
  22. package/dist/core/validation-error.d.ts +19 -0
  23. package/dist/core/validation-error.d.ts.map +1 -0
  24. package/dist/{validation → core}/validation-error.js +13 -6
  25. package/dist/core/validation-error.js.map +1 -0
  26. package/dist/{validation → core}/validation-issue.d.ts +43 -0
  27. package/dist/core/validation-issue.d.ts.map +1 -0
  28. package/dist/{validation → core}/validation-issue.js +55 -2
  29. package/dist/core/validation-issue.js.map +1 -0
  30. package/dist/{validation → core}/validator.d.ts +5 -4
  31. package/dist/core/validator.d.ts.map +1 -0
  32. package/dist/{validation → core}/validator.js +16 -13
  33. package/dist/core/validator.js.map +1 -0
  34. package/dist/core.d.ts +5 -0
  35. package/dist/core.d.ts.map +1 -1
  36. package/dist/core.js +5 -0
  37. package/dist/core.js.map +1 -1
  38. package/dist/external.d.ts +21 -21
  39. package/dist/external.d.ts.map +1 -1
  40. package/dist/external.js +39 -55
  41. package/dist/external.js.map +1 -1
  42. package/dist/helpers.d.ts +41 -0
  43. package/dist/helpers.d.ts.map +1 -0
  44. package/dist/helpers.js +13 -0
  45. package/dist/helpers.js.map +1 -0
  46. package/dist/schema/_parameters.d.ts +1 -1
  47. package/dist/schema/_parameters.d.ts.map +1 -1
  48. package/dist/schema/_parameters.js.map +1 -1
  49. package/dist/schema/array.d.ts +1 -1
  50. package/dist/schema/array.d.ts.map +1 -1
  51. package/dist/schema/array.js +2 -2
  52. package/dist/schema/array.js.map +1 -1
  53. package/dist/schema/blob.d.ts +2 -1
  54. package/dist/schema/blob.d.ts.map +1 -1
  55. package/dist/schema/blob.js +34 -20
  56. package/dist/schema/blob.js.map +1 -1
  57. package/dist/schema/boolean.d.ts +1 -1
  58. package/dist/schema/boolean.d.ts.map +1 -1
  59. package/dist/schema/boolean.js +2 -2
  60. package/dist/schema/boolean.js.map +1 -1
  61. package/dist/schema/bytes.d.ts +1 -1
  62. package/dist/schema/bytes.d.ts.map +1 -1
  63. package/dist/schema/bytes.js +2 -2
  64. package/dist/schema/bytes.js.map +1 -1
  65. package/dist/schema/cid.d.ts +1 -1
  66. package/dist/schema/cid.d.ts.map +1 -1
  67. package/dist/schema/cid.js +2 -2
  68. package/dist/schema/cid.js.map +1 -1
  69. package/dist/schema/custom.d.ts +1 -1
  70. package/dist/schema/custom.d.ts.map +1 -1
  71. package/dist/schema/custom.js +3 -3
  72. package/dist/schema/custom.js.map +1 -1
  73. package/dist/schema/dict.d.ts +1 -1
  74. package/dist/schema/dict.d.ts.map +1 -1
  75. package/dist/schema/dict.js +2 -2
  76. package/dist/schema/dict.js.map +1 -1
  77. package/dist/schema/discriminated-union.d.ts +1 -1
  78. package/dist/schema/discriminated-union.d.ts.map +1 -1
  79. package/dist/schema/discriminated-union.js +2 -2
  80. package/dist/schema/discriminated-union.js.map +1 -1
  81. package/dist/schema/enum.d.ts +1 -1
  82. package/dist/schema/enum.d.ts.map +1 -1
  83. package/dist/schema/enum.js +2 -2
  84. package/dist/schema/enum.js.map +1 -1
  85. package/dist/schema/integer.d.ts +1 -1
  86. package/dist/schema/integer.d.ts.map +1 -1
  87. package/dist/schema/integer.js +4 -4
  88. package/dist/schema/integer.js.map +1 -1
  89. package/dist/schema/intersection.d.ts +1 -2
  90. package/dist/schema/intersection.d.ts.map +1 -1
  91. package/dist/schema/intersection.js +2 -2
  92. package/dist/schema/intersection.js.map +1 -1
  93. package/dist/schema/literal.d.ts +1 -1
  94. package/dist/schema/literal.d.ts.map +1 -1
  95. package/dist/schema/literal.js +2 -2
  96. package/dist/schema/literal.js.map +1 -1
  97. package/dist/schema/never.d.ts +1 -1
  98. package/dist/schema/never.d.ts.map +1 -1
  99. package/dist/schema/never.js +2 -2
  100. package/dist/schema/never.js.map +1 -1
  101. package/dist/schema/null.d.ts +1 -1
  102. package/dist/schema/null.d.ts.map +1 -1
  103. package/dist/schema/null.js +2 -2
  104. package/dist/schema/null.js.map +1 -1
  105. package/dist/schema/nullable.d.ts +1 -1
  106. package/dist/schema/nullable.d.ts.map +1 -1
  107. package/dist/schema/nullable.js +2 -2
  108. package/dist/schema/nullable.js.map +1 -1
  109. package/dist/schema/object.d.ts +1 -2
  110. package/dist/schema/object.d.ts.map +1 -1
  111. package/dist/schema/object.js +2 -2
  112. package/dist/schema/object.js.map +1 -1
  113. package/dist/schema/optional.d.ts +1 -1
  114. package/dist/schema/optional.d.ts.map +1 -1
  115. package/dist/schema/optional.js +2 -2
  116. package/dist/schema/optional.js.map +1 -1
  117. package/dist/schema/params.d.ts +1 -3
  118. package/dist/schema/params.d.ts.map +1 -1
  119. package/dist/schema/params.js +2 -2
  120. package/dist/schema/params.js.map +1 -1
  121. package/dist/schema/payload.d.ts +17 -15
  122. package/dist/schema/payload.d.ts.map +1 -1
  123. package/dist/schema/payload.js +28 -0
  124. package/dist/schema/payload.js.map +1 -1
  125. package/dist/schema/procedure.d.ts +3 -6
  126. package/dist/schema/procedure.d.ts.map +1 -1
  127. package/dist/schema/procedure.js +1 -0
  128. package/dist/schema/procedure.js.map +1 -1
  129. package/dist/schema/query.d.ts +3 -5
  130. package/dist/schema/query.d.ts.map +1 -1
  131. package/dist/schema/query.js +1 -0
  132. package/dist/schema/query.js.map +1 -1
  133. package/dist/schema/record.d.ts +14 -14
  134. package/dist/schema/record.d.ts.map +1 -1
  135. package/dist/schema/record.js +2 -2
  136. package/dist/schema/record.js.map +1 -1
  137. package/dist/schema/ref.d.ts +1 -1
  138. package/dist/schema/ref.d.ts.map +1 -1
  139. package/dist/schema/ref.js +2 -2
  140. package/dist/schema/ref.js.map +1 -1
  141. package/dist/schema/refine.d.ts +18 -1
  142. package/dist/schema/refine.d.ts.map +1 -1
  143. package/dist/schema/refine.js +2 -2
  144. package/dist/schema/refine.js.map +1 -1
  145. package/dist/schema/regexp.d.ts +1 -1
  146. package/dist/schema/regexp.d.ts.map +1 -1
  147. package/dist/schema/regexp.js +2 -2
  148. package/dist/schema/regexp.js.map +1 -1
  149. package/dist/schema/string.d.ts +1 -2
  150. package/dist/schema/string.d.ts.map +1 -1
  151. package/dist/schema/string.js +1 -2
  152. package/dist/schema/string.js.map +1 -1
  153. package/dist/schema/subscription.d.ts +4 -8
  154. package/dist/schema/subscription.d.ts.map +1 -1
  155. package/dist/schema/subscription.js.map +1 -1
  156. package/dist/schema/token.d.ts +1 -1
  157. package/dist/schema/token.d.ts.map +1 -1
  158. package/dist/schema/token.js +2 -2
  159. package/dist/schema/token.js.map +1 -1
  160. package/dist/schema/typed-object.d.ts +8 -8
  161. package/dist/schema/typed-object.d.ts.map +1 -1
  162. package/dist/schema/typed-object.js +2 -2
  163. package/dist/schema/typed-object.js.map +1 -1
  164. package/dist/schema/typed-ref.d.ts +1 -1
  165. package/dist/schema/typed-ref.d.ts.map +1 -1
  166. package/dist/schema/typed-ref.js +2 -2
  167. package/dist/schema/typed-ref.js.map +1 -1
  168. package/dist/schema/typed-union.d.ts +2 -3
  169. package/dist/schema/typed-union.d.ts.map +1 -1
  170. package/dist/schema/typed-union.js +2 -2
  171. package/dist/schema/typed-union.js.map +1 -1
  172. package/dist/schema/union.d.ts +1 -1
  173. package/dist/schema/union.d.ts.map +1 -1
  174. package/dist/schema/union.js +3 -6
  175. package/dist/schema/union.js.map +1 -1
  176. package/dist/schema/unknown-object.d.ts +1 -2
  177. package/dist/schema/unknown-object.d.ts.map +1 -1
  178. package/dist/schema/unknown-object.js +2 -2
  179. package/dist/schema/unknown-object.js.map +1 -1
  180. package/dist/schema/unknown.d.ts +1 -1
  181. package/dist/schema/unknown.d.ts.map +1 -1
  182. package/dist/schema/unknown.js +2 -2
  183. package/dist/schema/unknown.js.map +1 -1
  184. package/dist/util/assertion-util.d.ts +8 -0
  185. package/dist/util/assertion-util.d.ts.map +1 -0
  186. package/dist/util/assertion-util.js +31 -0
  187. package/dist/util/assertion-util.js.map +1 -0
  188. package/dist/util/memoize.d.ts +3 -0
  189. package/dist/util/memoize.d.ts.map +1 -0
  190. package/dist/util/memoize.js +52 -0
  191. package/dist/util/memoize.js.map +1 -0
  192. package/package.json +6 -6
  193. package/src/core/$type.ts +4 -0
  194. package/src/core/result.ts +9 -8
  195. package/src/{validation → core}/schema.ts +29 -4
  196. package/src/core/string-format.ts +88 -68
  197. package/src/core/types.ts +4 -0
  198. package/src/{validation → core}/validation-error.ts +14 -6
  199. package/src/{validation → core}/validation-issue.ts +64 -2
  200. package/src/{validation → core}/validator.ts +17 -13
  201. package/src/core.ts +5 -0
  202. package/src/external.ts +75 -55
  203. package/src/helpers.test.ts +487 -0
  204. package/src/helpers.ts +75 -0
  205. package/src/schema/_parameters.test.ts +1 -0
  206. package/src/schema/_parameters.ts +1 -1
  207. package/src/schema/array.test.ts +1 -0
  208. package/src/schema/array.ts +1 -1
  209. package/src/schema/blob.test.ts +3 -4
  210. package/src/schema/blob.ts +32 -24
  211. package/src/schema/boolean.test.ts +1 -0
  212. package/src/schema/boolean.ts +1 -1
  213. package/src/schema/bytes.test.ts +1 -0
  214. package/src/schema/bytes.ts +1 -1
  215. package/src/schema/cid.test.ts +1 -0
  216. package/src/schema/cid.ts +1 -1
  217. package/src/schema/custom.test.ts +8 -7
  218. package/src/schema/custom.ts +2 -2
  219. package/src/schema/dict.test.ts +1 -0
  220. package/src/schema/dict.ts +1 -1
  221. package/src/schema/discriminated-union.test.ts +1 -0
  222. package/src/schema/discriminated-union.ts +1 -1
  223. package/src/schema/enum.test.ts +1 -0
  224. package/src/schema/enum.ts +1 -1
  225. package/src/schema/integer.test.ts +1 -0
  226. package/src/schema/integer.ts +3 -3
  227. package/src/schema/intersection.test.ts +1 -0
  228. package/src/schema/intersection.ts +2 -2
  229. package/src/schema/literal.test.ts +1 -0
  230. package/src/schema/literal.ts +1 -1
  231. package/src/schema/never.test.ts +1 -0
  232. package/src/schema/never.ts +1 -1
  233. package/src/schema/null.test.ts +1 -0
  234. package/src/schema/null.ts +1 -1
  235. package/src/schema/nullable.test.ts +1 -0
  236. package/src/schema/nullable.ts +1 -1
  237. package/src/schema/object.test.ts +1 -0
  238. package/src/schema/object.ts +3 -3
  239. package/src/schema/optional.test.ts +1 -0
  240. package/src/schema/optional.ts +1 -1
  241. package/src/schema/params.test.ts +1 -0
  242. package/src/schema/params.ts +3 -10
  243. package/src/schema/payload.test.ts +1 -0
  244. package/src/schema/payload.ts +67 -34
  245. package/src/schema/permission-set.test.ts +37 -36
  246. package/src/schema/permission.test.ts +1 -0
  247. package/src/schema/procedure.test.ts +2 -62
  248. package/src/schema/procedure.ts +8 -20
  249. package/src/schema/query.test.ts +23 -69
  250. package/src/schema/query.ts +7 -14
  251. package/src/schema/record.test.ts +1 -0
  252. package/src/schema/record.ts +13 -6
  253. package/src/schema/ref.test.ts +2 -1
  254. package/src/schema/ref.ts +1 -1
  255. package/src/schema/refine.test.ts +1 -0
  256. package/src/schema/refine.ts +19 -2
  257. package/src/schema/regexp.test.ts +1 -0
  258. package/src/schema/regexp.ts +1 -1
  259. package/src/schema/string.test.ts +1 -0
  260. package/src/schema/string.ts +8 -2
  261. package/src/schema/subscription.test.ts +31 -93
  262. package/src/schema/subscription.ts +11 -25
  263. package/src/schema/token.test.ts +1 -0
  264. package/src/schema/token.ts +1 -1
  265. package/src/schema/typed-object.test.ts +1 -0
  266. package/src/schema/typed-object.ts +10 -5
  267. package/src/schema/typed-ref.test.ts +1 -0
  268. package/src/schema/typed-ref.ts +1 -1
  269. package/src/schema/typed-union.test.ts +1 -0
  270. package/src/schema/typed-union.ts +4 -4
  271. package/src/schema/union.test.ts +1 -0
  272. package/src/schema/union.ts +2 -5
  273. package/src/schema/unknown-object.test.ts +1 -0
  274. package/src/schema/unknown-object.ts +1 -2
  275. package/src/schema/unknown.test.ts +1 -0
  276. package/src/schema/unknown.ts +1 -1
  277. package/src/util/array-agg.test.ts +1 -0
  278. package/src/util/assertion-util.ts +40 -0
  279. package/src/util/memoize.ts +57 -0
  280. package/tsconfig.tests.json +2 -2
  281. package/dist/validation/property-key.d.ts.map +0 -1
  282. package/dist/validation/property-key.js.map +0 -1
  283. package/dist/validation/schema.d.ts.map +0 -1
  284. package/dist/validation/schema.js.map +0 -1
  285. package/dist/validation/validation-error.d.ts +0 -9
  286. package/dist/validation/validation-error.d.ts.map +0 -1
  287. package/dist/validation/validation-error.js.map +0 -1
  288. package/dist/validation/validation-issue.d.ts.map +0 -1
  289. package/dist/validation/validation-issue.js.map +0 -1
  290. package/dist/validation/validator.d.ts.map +0 -1
  291. package/dist/validation/validator.js.map +0 -1
  292. package/dist/validation.d.ts +0 -6
  293. package/dist/validation.d.ts.map +0 -1
  294. package/dist/validation.js +0 -9
  295. package/dist/validation.js.map +0 -1
  296. package/src/validation.ts +0 -5
  297. /package/dist/{validation → core}/property-key.d.ts +0 -0
  298. /package/dist/{validation → core}/property-key.js +0 -0
  299. /package/src/{validation → core}/property-key.ts +0 -0
@@ -1,5 +1,4 @@
1
- import { WithOptionalProperties } from '../core.js';
2
- import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../validation.js';
1
+ import { Infer, Schema, ValidationResult, Validator, ValidatorContext, WithOptionalProperties } from '../core.js';
3
2
  export type ObjectSchemaShape = Record<string, Validator>;
4
3
  export type ObjectSchemaOutput<Shape extends ObjectSchemaShape> = WithOptionalProperties<{
5
4
  [K in keyof Shape]: Infer<Shape[K]>;
@@ -1 +1 @@
1
- {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,iBAAiB,IAC5D,sBAAsB,CAAC;KACpB,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAA;AAEJ,qBAAa,YAAY,CACvB,KAAK,CAAC,KAAK,SAAS,iBAAiB,GAAG,GAAG,CAC3C,SAAQ,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;IAIjC,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAI1C;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;CAkC/C"}
1
+ {"version":3,"file":"object.d.ts","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAGnB,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;AAEzD,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,iBAAiB,IAC5D,sBAAsB,CAAC;KACpB,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAA;AAEJ,qBAAa,YAAY,CACvB,KAAK,CAAC,KAAK,SAAS,iBAAiB,GAAG,GAAG,CAC3C,SAAQ,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAQ,CAAC,KAAK,EAAE,KAAK;gBAAZ,KAAK,EAAE,KAAK;IAIjC,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,CAI1C;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;CAkC/C"}
@@ -2,9 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ObjectSchema = void 0;
4
4
  const lex_data_1 = require("@atproto/lex-data");
5
+ const core_js_1 = require("../core.js");
5
6
  const lazy_property_js_1 = require("../util/lazy-property.js");
6
- const validation_js_1 = require("../validation.js");
7
- class ObjectSchema extends validation_js_1.Schema {
7
+ class ObjectSchema extends core_js_1.Schema {
8
8
  shape;
9
9
  constructor(shape) {
10
10
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AAEjD,+DAAuD;AACvD,oDAMyB;AASzB,MAAa,YAEX,SAAQ,sBAAiC;IACpB;IAArB,YAAqB,KAAY;QAC/B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAO;IAEjC,CAAC;IAED,IAAI,aAAa;QACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAE/C,OAAO,IAAA,+BAAY,EAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC9C,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAyC,CAAA;QAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;YACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;oBACpB,sCAAsC;oBACtC,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBACzC,CAAC;gBAED,OAAO,MAAM,CAAA;YACf,CAAC;YAED,uEAAuE;YACvE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClD,SAAQ;YACV,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,CAA8B,CAAA;QAE3D,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;CACF;AAlDD,oCAkDC","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport { WithOptionalProperties } from '../core.js'\nimport { lazyProperty } from '../util/lazy-property.js'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../validation.js'\n\nexport type ObjectSchemaShape = Record<string, Validator>\n\nexport type ObjectSchemaOutput<Shape extends ObjectSchemaShape> =\n WithOptionalProperties<{\n [K in keyof Shape]: Infer<Shape[K]>\n }>\n\nexport class ObjectSchema<\n const Shape extends ObjectSchemaShape = any,\n> extends Schema<ObjectSchemaOutput<Shape>> {\n constructor(readonly shape: Shape) {\n super()\n }\n\n get validatorsMap(): Map<string, Validator> {\n const map = new Map(Object.entries(this.shape))\n\n return lazyProperty(this, 'validatorsMap', map)\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<ObjectSchemaOutput<Shape>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'object')\n }\n\n // Lazily copy value\n let copy: undefined | Record<string, unknown>\n\n for (const [key, propDef] of this.validatorsMap) {\n const result = ctx.validateChild(input, key, propDef)\n if (!result.success) {\n if (!(key in input)) {\n // Transform into \"required key\" issue\n return ctx.issueRequiredKey(input, key)\n }\n\n return result\n }\n\n // Skip copying if key is not present in input (and value is undefined)\n if (result.value === undefined && !(key in input)) {\n continue\n }\n\n if (result.value !== input[key]) {\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n const output = (copy ?? input) as ObjectSchemaOutput<Shape>\n\n return ctx.success(output)\n }\n}\n"]}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../src/schema/object.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,wCAOmB;AACnB,+DAAuD;AASvD,MAAa,YAEX,SAAQ,gBAAiC;IACpB;IAArB,YAAqB,KAAY;QAC/B,KAAK,EAAE,CAAA;QADY,UAAK,GAAL,KAAK,CAAO;IAEjC,CAAC;IAED,IAAI,aAAa;QACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAE/C,OAAO,IAAA,+BAAY,EAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC9C,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAyC,CAAA;QAE7C,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;YACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;oBACpB,sCAAsC;oBACtC,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBACzC,CAAC;gBAED,OAAO,MAAM,CAAA;YACf,CAAC;YAED,uEAAuE;YACvE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClD,SAAQ;YACV,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,MAAM,MAAM,GAAG,CAAC,IAAI,IAAI,KAAK,CAA8B,CAAA;QAE3D,OAAO,GAAG,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;IAC5B,CAAC;CACF;AAlDD,oCAkDC","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n WithOptionalProperties,\n} from '../core.js'\nimport { lazyProperty } from '../util/lazy-property.js'\n\nexport type ObjectSchemaShape = Record<string, Validator>\n\nexport type ObjectSchemaOutput<Shape extends ObjectSchemaShape> =\n WithOptionalProperties<{\n [K in keyof Shape]: Infer<Shape[K]>\n }>\n\nexport class ObjectSchema<\n const Shape extends ObjectSchemaShape = any,\n> extends Schema<ObjectSchemaOutput<Shape>> {\n constructor(readonly shape: Shape) {\n super()\n }\n\n get validatorsMap(): Map<string, Validator> {\n const map = new Map(Object.entries(this.shape))\n\n return lazyProperty(this, 'validatorsMap', map)\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<ObjectSchemaOutput<Shape>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'object')\n }\n\n // Lazily copy value\n let copy: undefined | Record<string, unknown>\n\n for (const [key, propDef] of this.validatorsMap) {\n const result = ctx.validateChild(input, key, propDef)\n if (!result.success) {\n if (!(key in input)) {\n // Transform into \"required key\" issue\n return ctx.issueRequiredKey(input, key)\n }\n\n return result\n }\n\n // Skip copying if key is not present in input (and value is undefined)\n if (result.value === undefined && !(key in input)) {\n continue\n }\n\n if (result.value !== input[key]) {\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n const output = (copy ?? input) as ObjectSchemaOutput<Shape>\n\n return ctx.success(output)\n }\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Schema, ValidationResult, Validator, ValidatorContext } from '../validation.js';
1
+ import { Schema, ValidationResult, Validator, ValidatorContext } from '../core.js';
2
2
  export declare class OptionalSchema<V> extends Schema<V | undefined> {
3
3
  readonly schema: Validator<V>;
4
4
  constructor(schema: Validator<V>);
@@ -1 +1 @@
1
- {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../src/schema/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAEzB,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAApB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAIzC,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC;CAenC"}
1
+ {"version":3,"file":"optional.d.ts","sourceRoot":"","sources":["../../src/schema/optional.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,qBAAa,cAAc,CAAC,CAAC,CAAE,SAAQ,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9C,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;gBAApB,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;IAIzC,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,CAAC,GAAG,SAAS,CAAC;CAenC"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.OptionalSchema = void 0;
4
- const validation_js_1 = require("../validation.js");
5
- class OptionalSchema extends validation_js_1.Schema {
4
+ const core_js_1 = require("../core.js");
5
+ class OptionalSchema extends core_js_1.Schema {
6
6
  schema;
7
7
  constructor(schema) {
8
8
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/schema/optional.ts"],"names":[],"mappings":";;;AAAA,oDAKyB;AAEzB,MAAa,cAAkB,SAAQ,sBAAqB;IACrC;IAArB,YAAqB,MAAoB;QACvC,KAAK,EAAE,CAAA;QADY,WAAM,GAAN,MAAM,CAAc;IAEzC,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,0EAA0E;QAC1E,qCAAqC;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAvBD,wCAuBC","sourcesContent":["import {\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../validation.js'\n\nexport class OptionalSchema<V> extends Schema<V | undefined> {\n constructor(readonly schema: Validator<V>) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<V | undefined> {\n // @NOTE The inner schema might apply a default value so we need to run it\n // first, even if input is undefined.\n const result = ctx.validate(input, this.schema)\n\n if (result.success) {\n return result\n }\n\n if (input === undefined) {\n return ctx.success(input)\n }\n\n return result\n }\n}\n"]}
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../src/schema/optional.ts"],"names":[],"mappings":";;;AAAA,wCAKmB;AAEnB,MAAa,cAAkB,SAAQ,gBAAqB;IACrC;IAArB,YAAqB,MAAoB;QACvC,KAAK,EAAE,CAAA;QADY,WAAM,GAAN,MAAM,CAAc;IAEzC,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,0EAA0E;QAC1E,qCAAqC;QACrC,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/C,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;QAC3B,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC;CACF;AAvBD,wCAuBC","sourcesContent":["import {\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../core.js'\n\nexport class OptionalSchema<V> extends Schema<V | undefined> {\n constructor(readonly schema: Validator<V>) {\n super()\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<V | undefined> {\n // @NOTE The inner schema might apply a default value so we need to run it\n // first, even if input is undefined.\n const result = ctx.validate(input, this.schema)\n\n if (result.success) {\n return result\n }\n\n if (input === undefined) {\n return ctx.success(input)\n }\n\n return result\n }\n}\n"]}
@@ -1,11 +1,9 @@
1
- import { WithOptionalProperties } from '../core.js';
2
- import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../validation.js';
1
+ import { Infer, Schema, ValidationResult, Validator, ValidatorContext, WithOptionalProperties } from '../core.js';
3
2
  import { Param } from './_parameters.js';
4
3
  export type ParamsSchemaShape = Record<string, Validator<Param | undefined>>;
5
4
  export type ParamsSchemaOutput<Shape extends ParamsSchemaShape> = WithOptionalProperties<{
6
5
  [K in keyof Shape]: Infer<Shape[K]>;
7
6
  }>;
8
- export type InferParamsSchema<T> = T extends ParamsSchema<infer P> ? NonNullable<unknown> extends ParamsSchemaOutput<P> ? ParamsSchemaOutput<P> | undefined : ParamsSchemaOutput<P> : never;
9
7
  export declare class ParamsSchema<const Shape extends ParamsSchemaShape = ParamsSchemaShape> extends Schema<ParamsSchemaOutput<Shape>> {
10
8
  readonly validators: Shape;
11
9
  constructor(validators: Shape);
@@ -1 +1 @@
1
- {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAEnD,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,KAAK,EAA4B,MAAM,kBAAkB,CAAA;AAGlE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAA;AAE5E,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,iBAAiB,IAC5D,sBAAsB,CAAC;KACpB,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAA;AAEJ,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAC7B,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,CAAC,GAC3B,WAAW,CAAC,OAAO,CAAC,SAAS,kBAAkB,CAAC,CAAC,CAAC,GAChD,kBAAkB,CAAC,CAAC,CAAC,GAAG,SAAS,GACjC,kBAAkB,CAAC,CAAC,CAAC,GACvB,KAAK,CAAA;AAEX,qBAAa,YAAY,CACvB,KAAK,CAAC,KAAK,SAAS,iBAAiB,GAAG,iBAAiB,CACzD,SAAQ,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,KAAK;gBAAjB,UAAU,EAAE,KAAK;IAItC,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAI7D;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,YAAK,EACnB,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IA+C9C,mBAAmB,CACjB,eAAe,EAAE,eAAe,GAC/B,kBAAkB,CAAC,KAAK,CAAC;IA6B5B,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,eAAe;CAiBrE"}
1
+ {"version":3,"file":"params.d.ts","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EAChB,sBAAsB,EACvB,MAAM,YAAY,CAAA;AAEnB,OAAO,EAAE,KAAK,EAA4B,MAAM,kBAAkB,CAAA;AAGlE,MAAM,MAAM,iBAAiB,GAAG,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAAA;AAE5E,MAAM,MAAM,kBAAkB,CAAC,KAAK,SAAS,iBAAiB,IAC5D,sBAAsB,CAAC;KACpB,CAAC,IAAI,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;CACpC,CAAC,CAAA;AAEJ,qBAAa,YAAY,CACvB,KAAK,CAAC,KAAK,SAAS,iBAAiB,GAAG,iBAAiB,CACzD,SAAQ,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAC7B,QAAQ,CAAC,UAAU,EAAE,KAAK;gBAAjB,UAAU,EAAE,KAAK;IAItC,IAAI,aAAa,IAAI,GAAG,CAAC,MAAM,EAAE,SAAS,CAAC,KAAK,GAAG,SAAS,CAAC,CAAC,CAI7D;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,YAAK,EACnB,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;IA+C9C,mBAAmB,CACjB,eAAe,EAAE,eAAe,GAC/B,kBAAkB,CAAC,KAAK,CAAC;IA6B5B,iBAAiB,CAAC,KAAK,EAAE,kBAAkB,CAAC,KAAK,CAAC,GAAG,eAAe;CAiBrE"}
@@ -2,11 +2,11 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.ParamsSchema = void 0;
4
4
  const lex_data_1 = require("@atproto/lex-data");
5
+ const core_js_1 = require("../core.js");
5
6
  const lazy_property_js_1 = require("../util/lazy-property.js");
6
- const validation_js_1 = require("../validation.js");
7
7
  const _parameters_js_1 = require("./_parameters.js");
8
8
  const string_js_1 = require("./string.js");
9
- class ParamsSchema extends validation_js_1.Schema {
9
+ class ParamsSchema extends core_js_1.Schema {
10
10
  validators;
11
11
  constructor(validators) {
12
12
  super();
@@ -1 +1 @@
1
- {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":"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","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport { WithOptionalProperties } from '../core.js'\nimport { lazyProperty } from '../util/lazy-property.js'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../validation.js'\nimport { Param, ParamScalar, paramSchema } from './_parameters.js'\nimport { StringSchema } from './string.js'\n\nexport type ParamsSchemaShape = Record<string, Validator<Param | undefined>>\n\nexport type ParamsSchemaOutput<Shape extends ParamsSchemaShape> =\n WithOptionalProperties<{\n [K in keyof Shape]: Infer<Shape[K]>\n }>\n\nexport type InferParamsSchema<T> =\n T extends ParamsSchema<infer P>\n ? NonNullable<unknown> extends ParamsSchemaOutput<P>\n ? ParamsSchemaOutput<P> | undefined // Allow undefined if all params are optional\n : ParamsSchemaOutput<P>\n : never\n\nexport class ParamsSchema<\n const Shape extends ParamsSchemaShape = ParamsSchemaShape,\n> extends Schema<ParamsSchemaOutput<Shape>> {\n constructor(readonly validators: Shape) {\n super()\n }\n\n get validatorsMap(): Map<string, Validator<Param | undefined>> {\n const map = new Map(Object.entries(this.validators))\n\n return lazyProperty(this, 'validatorsMap', map)\n }\n\n validateInContext(\n input: unknown = {},\n ctx: ValidatorContext,\n ): ValidationResult<ParamsSchemaOutput<Shape>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'object')\n }\n\n // Lazily copy value\n let copy: undefined | Record<string, unknown>\n\n // Ensure that non-specified params conform to param schema\n for (const key in input) {\n if (this.validatorsMap.has(key)) continue\n\n const result = ctx.validateChild(input, key, paramSchema)\n if (!result.success) return result\n\n if (result.value !== input[key]) {\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n for (const [key, propDef] of this.validatorsMap) {\n const result = ctx.validateChild(input, key, propDef)\n if (!result.success) {\n if (!(key in input)) {\n // Transform into \"required key\" issue\n return ctx.issueRequiredKey(input, key)\n }\n\n return result\n }\n\n // Skip copying if key is not present in input (and value is undefined)\n if (result.value === undefined && !(key in input)) {\n continue\n }\n\n if (result.value !== input[key]) {\n // Copy on write\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n return ctx.success((copy ?? input) as ParamsSchemaOutput<Shape>)\n }\n\n fromURLSearchParams(\n urlSearchParams: URLSearchParams,\n ): ParamsSchemaOutput<Shape> {\n const params: Record<string, Param> = {}\n\n for (const [key, value] of urlSearchParams.entries()) {\n const validator = this.validatorsMap.get(key)\n\n const coerced: ParamScalar =\n validator != null && validator instanceof StringSchema\n ? value\n : value === 'true'\n ? true\n : value === 'false'\n ? false\n : /^-?\\d+$/.test(value)\n ? Number(value)\n : value\n\n if (params[key] === undefined) {\n params[key] = coerced\n } else if (Array.isArray(params[key])) {\n params[key].push(coerced)\n } else {\n params[key] = [params[key] as ParamScalar, coerced]\n }\n }\n\n return this.parse(params)\n }\n\n toURLSearchParams(input: ParamsSchemaOutput<Shape>): URLSearchParams {\n const urlSearchParams = new URLSearchParams()\n\n if (input !== undefined) {\n for (const [key, value] of Object.entries(input)) {\n if (Array.isArray(value)) {\n for (const v of value) {\n urlSearchParams.append(key, String(v))\n }\n } else if (value !== undefined) {\n urlSearchParams.append(key, String(value))\n }\n }\n }\n\n return urlSearchParams\n }\n}\n"]}
1
+ {"version":3,"file":"params.js","sourceRoot":"","sources":["../../src/schema/params.ts"],"names":[],"mappings":";;;AAAA,gDAAiD;AACjD,wCAOmB;AACnB,+DAAuD;AACvD,qDAAkE;AAClE,2CAA0C;AAS1C,MAAa,YAEX,SAAQ,gBAAiC;IACpB;IAArB,YAAqB,UAAiB;QACpC,KAAK,EAAE,CAAA;QADY,eAAU,GAAV,UAAU,CAAO;IAEtC,CAAC;IAED,IAAI,aAAa;QACf,MAAM,GAAG,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,CAAA;QAEpD,OAAO,IAAA,+BAAY,EAAC,IAAI,EAAE,eAAe,EAAE,GAAG,CAAC,CAAA;IACjD,CAAC;IAED,iBAAiB,CACf,QAAiB,EAAE,EACnB,GAAqB;QAErB,IAAI,CAAC,IAAA,wBAAa,EAAC,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;QAC9C,CAAC;QAED,oBAAoB;QACpB,IAAI,IAAyC,CAAA;QAE7C,2DAA2D;QAC3D,KAAK,MAAM,GAAG,IAAI,KAAK,EAAE,CAAC;YACxB,IAAI,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;gBAAE,SAAQ;YAEzC,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,4BAAW,CAAC,CAAA;YACzD,IAAI,CAAC,MAAM,CAAC,OAAO;gBAAE,OAAO,MAAM,CAAA;YAElC,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,IAAI,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,KAAK,MAAM,CAAC,GAAG,EAAE,OAAO,CAAC,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YAChD,MAAM,MAAM,GAAG,GAAG,CAAC,aAAa,CAAC,KAAK,EAAE,GAAG,EAAE,OAAO,CAAC,CAAA;YACrD,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBACpB,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;oBACpB,sCAAsC;oBACtC,OAAO,GAAG,CAAC,gBAAgB,CAAC,KAAK,EAAE,GAAG,CAAC,CAAA;gBACzC,CAAC;gBAED,OAAO,MAAM,CAAA;YACf,CAAC;YAED,uEAAuE;YACvE,IAAI,MAAM,CAAC,KAAK,KAAK,SAAS,IAAI,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,EAAE,CAAC;gBAClD,SAAQ;YACV,CAAC;YAED,IAAI,MAAM,CAAC,KAAK,KAAK,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;gBAChC,gBAAgB;gBAChB,IAAI,KAAK,EAAE,GAAG,KAAK,EAAE,CAAA;gBACrB,IAAI,CAAC,GAAG,CAAC,GAAG,MAAM,CAAC,KAAK,CAAA;YAC1B,CAAC;QACH,CAAC;QAED,OAAO,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,IAAI,KAAK,CAA8B,CAAC,CAAA;IAClE,CAAC;IAED,mBAAmB,CACjB,eAAgC;QAEhC,MAAM,MAAM,GAA0B,EAAE,CAAA;QAExC,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,eAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YACrD,MAAM,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC,CAAA;YAE7C,MAAM,OAAO,GACX,SAAS,IAAI,IAAI,IAAI,SAAS,YAAY,wBAAY;gBACpD,CAAC,CAAC,KAAK;gBACP,CAAC,CAAC,KAAK,KAAK,MAAM;oBAChB,CAAC,CAAC,IAAI;oBACN,CAAC,CAAC,KAAK,KAAK,OAAO;wBACjB,CAAC,CAAC,KAAK;wBACP,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC;4BACrB,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;4BACf,CAAC,CAAC,KAAK,CAAA;YAEjB,IAAI,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,CAAC,GAAG,OAAO,CAAA;YACvB,CAAC;iBAAM,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC;gBACtC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;YAC3B,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAgB,EAAE,OAAO,CAAC,CAAA;YACrD,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAA;IAC3B,CAAC;IAED,iBAAiB,CAAC,KAAgC;QAChD,MAAM,eAAe,GAAG,IAAI,eAAe,EAAE,CAAA;QAE7C,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;wBACtB,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,CAAA;oBACxC,CAAC;gBACH,CAAC;qBAAM,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;oBAC/B,eAAe,CAAC,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAA;gBAC5C,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,eAAe,CAAA;IACxB,CAAC;CACF;AA/GD,oCA+GC","sourcesContent":["import { isPlainObject } from '@atproto/lex-data'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n WithOptionalProperties,\n} from '../core.js'\nimport { lazyProperty } from '../util/lazy-property.js'\nimport { Param, ParamScalar, paramSchema } from './_parameters.js'\nimport { StringSchema } from './string.js'\n\nexport type ParamsSchemaShape = Record<string, Validator<Param | undefined>>\n\nexport type ParamsSchemaOutput<Shape extends ParamsSchemaShape> =\n WithOptionalProperties<{\n [K in keyof Shape]: Infer<Shape[K]>\n }>\n\nexport class ParamsSchema<\n const Shape extends ParamsSchemaShape = ParamsSchemaShape,\n> extends Schema<ParamsSchemaOutput<Shape>> {\n constructor(readonly validators: Shape) {\n super()\n }\n\n get validatorsMap(): Map<string, Validator<Param | undefined>> {\n const map = new Map(Object.entries(this.validators))\n\n return lazyProperty(this, 'validatorsMap', map)\n }\n\n validateInContext(\n input: unknown = {},\n ctx: ValidatorContext,\n ): ValidationResult<ParamsSchemaOutput<Shape>> {\n if (!isPlainObject(input)) {\n return ctx.issueInvalidType(input, 'object')\n }\n\n // Lazily copy value\n let copy: undefined | Record<string, unknown>\n\n // Ensure that non-specified params conform to param schema\n for (const key in input) {\n if (this.validatorsMap.has(key)) continue\n\n const result = ctx.validateChild(input, key, paramSchema)\n if (!result.success) return result\n\n if (result.value !== input[key]) {\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n for (const [key, propDef] of this.validatorsMap) {\n const result = ctx.validateChild(input, key, propDef)\n if (!result.success) {\n if (!(key in input)) {\n // Transform into \"required key\" issue\n return ctx.issueRequiredKey(input, key)\n }\n\n return result\n }\n\n // Skip copying if key is not present in input (and value is undefined)\n if (result.value === undefined && !(key in input)) {\n continue\n }\n\n if (result.value !== input[key]) {\n // Copy on write\n copy ??= { ...input }\n copy[key] = result.value\n }\n }\n\n return ctx.success((copy ?? input) as ParamsSchemaOutput<Shape>)\n }\n\n fromURLSearchParams(\n urlSearchParams: URLSearchParams,\n ): ParamsSchemaOutput<Shape> {\n const params: Record<string, Param> = {}\n\n for (const [key, value] of urlSearchParams.entries()) {\n const validator = this.validatorsMap.get(key)\n\n const coerced: ParamScalar =\n validator != null && validator instanceof StringSchema\n ? value\n : value === 'true'\n ? true\n : value === 'false'\n ? false\n : /^-?\\d+$/.test(value)\n ? Number(value)\n : value\n\n if (params[key] === undefined) {\n params[key] = coerced\n } else if (Array.isArray(params[key])) {\n params[key].push(coerced)\n } else {\n params[key] = [params[key] as ParamScalar, coerced]\n }\n }\n\n return this.parse(params)\n }\n\n toURLSearchParams(input: ParamsSchemaOutput<Shape>): URLSearchParams {\n const urlSearchParams = new URLSearchParams()\n\n if (input !== undefined) {\n for (const [key, value] of Object.entries(input)) {\n if (Array.isArray(value)) {\n for (const v of value) {\n urlSearchParams.append(key, String(v))\n }\n } else if (value !== undefined) {\n urlSearchParams.append(key, String(value))\n }\n }\n }\n\n return urlSearchParams\n }\n}\n"]}
@@ -1,19 +1,21 @@
1
1
  import { LexValue } from '@atproto/lex-data';
2
- import { Infer, Validator } from '../validation.js';
3
- export type LexBody<E extends string = any> = E extends `text/${string}` ? string : E extends 'application/json' ? LexValue : Uint8Array;
4
- export type InferPayloadEncoding<P extends Payload> = P extends Payload<infer E, any> ? E : undefined;
5
- export type InferPayloadBody<P extends Payload> = P extends Payload<any, infer S> ? S extends Validator ? Infer<S> : P extends Payload<infer E extends string> ? LexBody<E> : undefined : undefined;
6
- export type PayloadOutput<E extends string | undefined = any, S extends Validator | undefined = any> = E extends string ? S extends Validator ? {
7
- encoding: E;
8
- body: Infer<S>;
9
- } : {
10
- encoding: E;
11
- body: LexBody<E>;
12
- } : void;
13
- export type PayloadBody<E extends string | undefined> = E extends undefined ? undefined : Validator | undefined;
14
- export declare class Payload<const Encoding extends string | undefined = string | undefined, const Body extends PayloadBody<Encoding> = PayloadBody<Encoding>> {
2
+ import { Infer, Schema } from '../core.js';
3
+ export type InferPayload<P extends Payload, B> = P['encoding'] extends infer E extends string ? {
4
+ encoding: SchemaEncodingToDataEncoding<E>;
5
+ body: InferPayloadBody<P, B>;
6
+ } : void | undefined;
7
+ export type SchemaEncodingToDataEncoding<E extends string> = E extends '*/*' ? `${string}/${string}` : E extends `${infer T extends string}/*` ? `${T}/${string}` : E;
8
+ export type InferPayloadEncoding<P extends Payload> = P['encoding'] extends string ? SchemaEncodingToDataEncoding<P['encoding']> : undefined;
9
+ export type InferPayloadBody<P extends Payload, B> = P['encoding'] extends undefined ? undefined : P['schema'] extends Schema ? Infer<P['schema']> : P['encoding'] extends `application/json` ? LexValue : B;
10
+ export type PayloadSchema<E extends string | undefined> = E extends undefined ? undefined : Schema | undefined;
11
+ export declare class Payload<const Encoding extends string | undefined = string | undefined, const Schema extends PayloadSchema<Encoding> = PayloadSchema<Encoding>> {
15
12
  readonly encoding: Encoding;
16
- readonly schema: Body;
17
- constructor(encoding: Encoding, schema: Body);
13
+ readonly schema: Schema;
14
+ constructor(encoding: Encoding, schema: Schema);
15
+ /**
16
+ * Checks whether the given content-type matches the expected payload schema's
17
+ * encoding.
18
+ */
19
+ matchesEncoding(contentType: string | undefined): boolean;
18
20
  }
19
21
  //# sourceMappingURL=payload.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AAEnD,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,QAAQ,MAAM,EAAE,GACpE,MAAM,GACN,CAAC,SAAS,kBAAkB,GAC1B,QAAQ,GACR,UAAU,CAAA;AAEhB,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,OAAO,IAChD,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAA;AAEjD,MAAM,MAAM,gBAAgB,CAAC,CAAC,SAAS,OAAO,IAC5C,CAAC,SAAS,OAAO,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC,GAC3B,CAAC,SAAS,SAAS,GACjB,KAAK,CAAC,CAAC,CAAC,GACR,CAAC,SAAS,OAAO,CAAC,MAAM,CAAC,SAAS,MAAM,CAAC,GACvC,OAAO,CAAC,CAAC,CAAC,GACV,SAAS,GACb,SAAS,CAAA;AAEf,MAAM,MAAM,aAAa,CACvB,CAAC,SAAS,MAAM,GAAG,SAAS,GAAG,GAAG,EAClC,CAAC,SAAS,SAAS,GAAG,SAAS,GAAG,GAAG,IACnC,CAAC,SAAS,MAAM,GAChB,CAAC,SAAS,SAAS,GACjB;IACE,QAAQ,EAAE,CAAC,CAAA;IACX,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,CAAA;CACf,GACD;IACE,QAAQ,EAAE,CAAC,CAAA;IACX,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,CAAA;CACjB,GACH,IAAI,CAAA;AAER,MAAM,MAAM,WAAW,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,IAAI,CAAC,SAAS,SAAS,GACvE,SAAS,GACT,SAAS,GAAG,SAAS,CAAA;AAEzB,qBAAa,OAAO,CAClB,KAAK,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC9D,KAAK,CAAC,IAAI,SAAS,WAAW,CAAC,QAAQ,CAAC,GAAG,WAAW,CAAC,QAAQ,CAAC;IAG9D,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,MAAM,EAAE,IAAI;gBADZ,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,IAAI;CAMxB"}
1
+ {"version":3,"file":"payload.d.ts","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAA;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAE1C,MAAM,MAAM,YAAY,CACtB,CAAC,SAAS,OAAO,EACjB,CAAC,IACC,CAAC,CAAC,UAAU,CAAC,SAAS,MAAM,CAAC,SAAS,MAAM,GAC5C;IACE,QAAQ,EAAE,4BAA4B,CAAC,CAAC,CAAC,CAAA;IACzC,IAAI,EAAE,gBAAgB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;CAC7B,GACD,IAAI,GAAG,SAAS,CAAA;AAEpB,MAAM,MAAM,4BAA4B,CAAC,CAAC,SAAS,MAAM,IAAI,CAAC,SAAS,KAAK,GACxE,GAAG,MAAM,IAAI,MAAM,EAAE,GACrB,CAAC,SAAS,GAAG,MAAM,CAAC,SAAS,MAAM,IAAI,GACrC,GAAG,CAAC,IAAI,MAAM,EAAE,GAChB,CAAC,CAAA;AAEP,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,OAAO,IAChD,CAAC,CAAC,UAAU,CAAC,SAAS,MAAM,GACxB,4BAA4B,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,GAC3C,SAAS,CAAA;AAEf,MAAM,MAAM,gBAAgB,CAC1B,CAAC,SAAS,OAAO,EACjB,CAAC,IACC,CAAC,CAAC,UAAU,CAAC,SAAS,SAAS,GAC/B,SAAS,GACT,CAAC,CAAC,QAAQ,CAAC,SAAS,MAAM,GACxB,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAClB,CAAC,CAAC,UAAU,CAAC,SAAS,kBAAkB,GACtC,QAAQ,GACR,CAAC,CAAA;AAET,MAAM,MAAM,aAAa,CAAC,CAAC,SAAS,MAAM,GAAG,SAAS,IAAI,CAAC,SAAS,SAAS,GACzE,SAAS,GACT,MAAM,GAAG,SAAS,CAAA;AAEtB,qBAAa,OAAO,CAClB,KAAK,CAAC,QAAQ,SAAS,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,EAC9D,KAAK,CAAC,MAAM,SAAS,aAAa,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC,QAAQ,CAAC;IAGpE,QAAQ,CAAC,QAAQ,EAAE,QAAQ;IAC3B,QAAQ,CAAC,MAAM,EAAE,MAAM;gBADd,QAAQ,EAAE,QAAQ,EAClB,MAAM,EAAE,MAAM;IAOzB;;;OAGG;IACH,eAAe,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO;CA6B1D"}
@@ -11,6 +11,34 @@ class Payload {
11
11
  throw new TypeError('schema cannot be defined when encoding is undefined');
12
12
  }
13
13
  }
14
+ /**
15
+ * Checks whether the given content-type matches the expected payload schema's
16
+ * encoding.
17
+ */
18
+ matchesEncoding(contentType) {
19
+ const mime = contentType?.split(';', 1)[0].trim();
20
+ const { encoding } = this;
21
+ // Handle undefined cases
22
+ if (encoding === undefined) {
23
+ // Expecting no body
24
+ return mime === undefined;
25
+ }
26
+ else if (mime === undefined) {
27
+ // Expecting a body, but got no content-type
28
+ return false;
29
+ }
30
+ if (encoding === '*/*') {
31
+ return true;
32
+ }
33
+ if (encoding.endsWith('/*')) {
34
+ return mime.startsWith(encoding.slice(0, -1));
35
+ }
36
+ // Invalid: Lexicon can only specify "*/*" or "type/*" wildcards
37
+ if (encoding.includes('*')) {
38
+ return false;
39
+ }
40
+ return encoding === mime;
41
+ }
14
42
  }
15
43
  exports.Payload = Payload;
16
44
  //# sourceMappingURL=payload.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":";;;AAwCA,MAAa,OAAO;IAKP;IACA;IAFX,YACW,QAAkB,EAClB,MAAY;QADZ,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAM;QAErB,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;CACF;AAZD,0BAYC","sourcesContent":["import { LexValue } from '@atproto/lex-data'\nimport { Infer, Validator } from '../validation.js'\n\nexport type LexBody<E extends string = any> = E extends `text/${string}`\n ? string // Text encodings always yield string bodies\n : E extends 'application/json'\n ? LexValue\n : Uint8Array\n\nexport type InferPayloadEncoding<P extends Payload> =\n P extends Payload<infer E, any> ? E : undefined\n\nexport type InferPayloadBody<P extends Payload> =\n P extends Payload<any, infer S>\n ? S extends Validator\n ? Infer<S>\n : P extends Payload<infer E extends string>\n ? LexBody<E>\n : undefined\n : undefined\n\nexport type PayloadOutput<\n E extends string | undefined = any,\n S extends Validator | undefined = any,\n> = E extends string\n ? S extends Validator\n ? {\n encoding: E\n body: Infer<S>\n }\n : {\n encoding: E\n body: LexBody<E>\n }\n : void\n\nexport type PayloadBody<E extends string | undefined> = E extends undefined\n ? undefined\n : Validator | undefined\n\nexport class Payload<\n const Encoding extends string | undefined = string | undefined,\n const Body extends PayloadBody<Encoding> = PayloadBody<Encoding>,\n> {\n constructor(\n readonly encoding: Encoding,\n readonly schema: Body,\n ) {\n if (encoding === undefined && schema !== undefined) {\n throw new TypeError('schema cannot be defined when encoding is undefined')\n }\n }\n}\n"]}
1
+ {"version":3,"file":"payload.js","sourceRoot":"","sources":["../../src/schema/payload.ts"],"names":[],"mappings":";;;AAuCA,MAAa,OAAO;IAKP;IACA;IAFX,YACW,QAAkB,EAClB,MAAc;QADd,aAAQ,GAAR,QAAQ,CAAU;QAClB,WAAM,GAAN,MAAM,CAAQ;QAEvB,IAAI,QAAQ,KAAK,SAAS,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;YACnD,MAAM,IAAI,SAAS,CAAC,qDAAqD,CAAC,CAAA;QAC5E,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,eAAe,CAAC,WAA+B;QAC7C,MAAM,IAAI,GAAG,WAAW,EAAE,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAEjD,MAAM,EAAE,QAAQ,EAAE,GAAG,IAAI,CAAA;QAEzB,yBAAyB;QACzB,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;YAC3B,oBAAoB;YACpB,OAAO,IAAI,KAAK,SAAS,CAAA;QAC3B,CAAC;aAAM,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YAC9B,4CAA4C;YAC5C,OAAO,KAAK,CAAA;QACd,CAAC;QAED,IAAI,QAAQ,KAAK,KAAK,EAAE,CAAC;YACvB,OAAO,IAAI,CAAA;QACb,CAAC;QAED,IAAI,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC/C,CAAC;QAED,gEAAgE;QAChE,IAAI,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,OAAO,KAAK,CAAA;QACd,CAAC;QAED,OAAO,QAAQ,KAAK,IAAI,CAAA;IAC1B,CAAC;CACF;AA9CD,0BA8CC","sourcesContent":["import { LexValue } from '@atproto/lex-data'\nimport { Infer, Schema } from '../core.js'\n\nexport type InferPayload<\n P extends Payload,\n B,\n> = P['encoding'] extends infer E extends string\n ? {\n encoding: SchemaEncodingToDataEncoding<E>\n body: InferPayloadBody<P, B>\n }\n : void | undefined\n\nexport type SchemaEncodingToDataEncoding<E extends string> = E extends '*/*'\n ? `${string}/${string}`\n : E extends `${infer T extends string}/*`\n ? `${T}/${string}`\n : E\n\nexport type InferPayloadEncoding<P extends Payload> =\n P['encoding'] extends string\n ? SchemaEncodingToDataEncoding<P['encoding']>\n : undefined\n\nexport type InferPayloadBody<\n P extends Payload,\n B,\n> = P['encoding'] extends undefined\n ? undefined // No encoding, no payload\n : P['schema'] extends Schema\n ? Infer<P['schema']>\n : P['encoding'] extends `application/json`\n ? LexValue\n : B\n\nexport type PayloadSchema<E extends string | undefined> = E extends undefined\n ? undefined\n : Schema | undefined\n\nexport class Payload<\n const Encoding extends string | undefined = string | undefined,\n const Schema extends PayloadSchema<Encoding> = PayloadSchema<Encoding>,\n> {\n constructor(\n readonly encoding: Encoding,\n readonly schema: Schema,\n ) {\n if (encoding === undefined && schema !== undefined) {\n throw new TypeError('schema cannot be defined when encoding is undefined')\n }\n }\n\n /**\n * Checks whether the given content-type matches the expected payload schema's\n * encoding.\n */\n matchesEncoding(contentType: string | undefined): boolean {\n const mime = contentType?.split(';', 1)[0].trim()\n\n const { encoding } = this\n\n // Handle undefined cases\n if (encoding === undefined) {\n // Expecting no body\n return mime === undefined\n } else if (mime === undefined) {\n // Expecting a body, but got no content-type\n return false\n }\n\n if (encoding === '*/*') {\n return true\n }\n\n if (encoding.endsWith('/*')) {\n return mime.startsWith(encoding.slice(0, -1))\n }\n\n // Invalid: Lexicon can only specify \"*/*\" or \"type/*\" wildcards\n if (encoding.includes('*')) {\n return false\n }\n\n return encoding === mime\n }\n}\n"]}
@@ -1,16 +1,13 @@
1
1
  import { NsidString } from '../core.js';
2
- import { Infer } from '../validation.js';
3
2
  import { ParamsSchema } from './params.js';
4
- import { InferPayloadBody, Payload } from './payload.js';
5
- export type InferProcedureParameters<Q extends Procedure> = Q extends Procedure<any, infer P extends ParamsSchema, any> ? Infer<P> : never;
6
- export type InferProcedureInputBody<Q extends Procedure> = Q extends Procedure<any, any, infer I extends Payload, any> ? InferPayloadBody<I> : never;
7
- export type InferProcedureOutputBody<Q extends Procedure> = Q extends Procedure<any, any, any, infer O extends Payload> ? InferPayloadBody<O> : never;
8
- export declare class Procedure<TNsid extends NsidString = any, TParameters extends ParamsSchema = any, TInputPayload extends Payload = any, TOutputPayload extends Payload = any, TErrors extends undefined | readonly string[] = any> {
3
+ import { Payload } from './payload.js';
4
+ export declare class Procedure<TNsid extends NsidString = NsidString, TParameters extends ParamsSchema = ParamsSchema, TInputPayload extends Payload = Payload, TOutputPayload extends Payload = Payload, TErrors extends undefined | readonly string[] = undefined | readonly string[]> {
9
5
  readonly nsid: TNsid;
10
6
  readonly parameters: TParameters;
11
7
  readonly input: TInputPayload;
12
8
  readonly output: TOutputPayload;
13
9
  readonly errors: TErrors;
10
+ readonly type: "procedure";
14
11
  constructor(nsid: TNsid, parameters: TParameters, input: TInputPayload, output: TOutputPayload, errors: TErrors);
15
12
  }
16
13
  //# sourceMappingURL=procedure.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAExD,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,SAAS,IACtD,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,YAAY,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAEhF,MAAM,MAAM,uBAAuB,CAAC,CAAC,SAAS,SAAS,IACrD,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,OAAO,EAAE,GAAG,CAAC,GACvD,gBAAgB,CAAC,CAAC,CAAC,GACnB,KAAK,CAAA;AAEX,MAAM,MAAM,wBAAwB,CAAC,CAAC,SAAS,SAAS,IACtD,CAAC,SAAS,SAAS,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,OAAO,CAAC,GACvD,gBAAgB,CAAC,CAAC,CAAC,GACnB,KAAK,CAAA;AAEX,qBAAa,SAAS,CACpB,KAAK,SAAS,UAAU,GAAG,GAAG,EAC9B,WAAW,SAAS,YAAY,GAAG,GAAG,EACtC,aAAa,SAAS,OAAO,GAAG,GAAG,EACnC,cAAc,SAAS,OAAO,GAAG,GAAG,EACpC,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,GAAG;IAGjD,QAAQ,CAAC,IAAI,EAAE,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,KAAK,EAAE,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO;gBAJf,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO;CAE3B"}
1
+ {"version":3,"file":"procedure.d.ts","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,qBAAa,SAAS,CACpB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,WAAW,SAAS,YAAY,GAAG,YAAY,EAC/C,aAAa,SAAS,OAAO,GAAG,OAAO,EACvC,cAAc,SAAS,OAAO,GAAG,OAAO,EACxC,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE;IAK3E,QAAQ,CAAC,IAAI,EAAE,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,KAAK,EAAE,aAAa;IAC7B,QAAQ,CAAC,MAAM,EAAE,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO;IAP1B,QAAQ,CAAC,IAAI,EAAG,WAAW,CAAS;gBAGzB,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,KAAK,EAAE,aAAa,EACpB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO;CAE3B"}
@@ -7,6 +7,7 @@ class Procedure {
7
7
  input;
8
8
  output;
9
9
  errors;
10
+ type = 'procedure';
10
11
  constructor(nsid, parameters, input, output, errors) {
11
12
  this.nsid = nsid;
12
13
  this.parameters = parameters;
@@ -1 +1 @@
1
- {"version":3,"file":"procedure.js","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":";;;AAkBA,MAAa,SAAS;IAQT;IACA;IACA;IACA;IACA;IALX,YACW,IAAW,EACX,UAAuB,EACvB,KAAoB,EACpB,MAAsB,EACtB,MAAe;QAJf,SAAI,GAAJ,IAAI,CAAO;QACX,eAAU,GAAV,UAAU,CAAa;QACvB,UAAK,GAAL,KAAK,CAAe;QACpB,WAAM,GAAN,MAAM,CAAgB;QACtB,WAAM,GAAN,MAAM,CAAS;IACvB,CAAC;CACL;AAdD,8BAcC","sourcesContent":["import { NsidString } from '../core.js'\nimport { Infer } from '../validation.js'\nimport { ParamsSchema } from './params.js'\nimport { InferPayloadBody, Payload } from './payload.js'\n\nexport type InferProcedureParameters<Q extends Procedure> =\n Q extends Procedure<any, infer P extends ParamsSchema, any> ? Infer<P> : never\n\nexport type InferProcedureInputBody<Q extends Procedure> =\n Q extends Procedure<any, any, infer I extends Payload, any>\n ? InferPayloadBody<I>\n : never\n\nexport type InferProcedureOutputBody<Q extends Procedure> =\n Q extends Procedure<any, any, any, infer O extends Payload>\n ? InferPayloadBody<O>\n : never\n\nexport class Procedure<\n TNsid extends NsidString = any,\n TParameters extends ParamsSchema = any,\n TInputPayload extends Payload = any,\n TOutputPayload extends Payload = any,\n TErrors extends undefined | readonly string[] = any,\n> {\n constructor(\n readonly nsid: TNsid,\n readonly parameters: TParameters,\n readonly input: TInputPayload,\n readonly output: TOutputPayload,\n readonly errors: TErrors,\n ) {}\n}\n"]}
1
+ {"version":3,"file":"procedure.js","sourceRoot":"","sources":["../../src/schema/procedure.ts"],"names":[],"mappings":";;;AAIA,MAAa,SAAS;IAUT;IACA;IACA;IACA;IACA;IAPF,IAAI,GAAG,WAAoB,CAAA;IAEpC,YACW,IAAW,EACX,UAAuB,EACvB,KAAoB,EACpB,MAAsB,EACtB,MAAe;QAJf,SAAI,GAAJ,IAAI,CAAO;QACX,eAAU,GAAV,UAAU,CAAa;QACvB,UAAK,GAAL,KAAK,CAAe;QACpB,WAAM,GAAN,MAAM,CAAgB;QACtB,WAAM,GAAN,MAAM,CAAS;IACvB,CAAC;CACL;AAhBD,8BAgBC","sourcesContent":["import { NsidString } from '../core.js'\nimport { ParamsSchema } from './params.js'\nimport { Payload } from './payload.js'\n\nexport class Procedure<\n TNsid extends NsidString = NsidString,\n TParameters extends ParamsSchema = ParamsSchema,\n TInputPayload extends Payload = Payload,\n TOutputPayload extends Payload = Payload,\n TErrors extends undefined | readonly string[] = undefined | readonly string[],\n> {\n readonly type = 'procedure' as const\n\n constructor(\n readonly nsid: TNsid,\n readonly parameters: TParameters,\n readonly input: TInputPayload,\n readonly output: TOutputPayload,\n readonly errors: TErrors,\n ) {}\n}\n"]}
@@ -1,14 +1,12 @@
1
1
  import { NsidString } from '../core.js';
2
- import { Infer } from '../validation.js';
3
2
  import { ParamsSchema } from './params.js';
4
- import { InferPayloadBody, Payload } from './payload.js';
5
- export type InferQueryParameters<Q extends Query> = Q extends Query<any, infer P extends ParamsSchema, any> ? Infer<P> : never;
6
- export type InferQueryOutputBody<Q extends Query> = Q extends Query<any, any, infer O extends Payload> ? InferPayloadBody<O> : never;
7
- export declare class Query<TNsid extends NsidString = any, TParameters extends ParamsSchema = any, TOutputPayload extends Payload = any, TErrors extends undefined | readonly string[] = any> {
3
+ import { Payload } from './payload.js';
4
+ export declare class Query<TNsid extends NsidString = NsidString, TParameters extends ParamsSchema = ParamsSchema, TOutputPayload extends Payload = Payload, TErrors extends undefined | readonly string[] = undefined | readonly string[]> {
8
5
  readonly nsid: TNsid;
9
6
  readonly parameters: TParameters;
10
7
  readonly output: TOutputPayload;
11
8
  readonly errors: TErrors;
9
+ readonly type: "query";
12
10
  constructor(nsid: TNsid, parameters: TParameters, output: TOutputPayload, errors: TErrors);
13
11
  }
14
12
  //# sourceMappingURL=query.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/schema/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAA;AACxC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,gBAAgB,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAExD,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,KAAK,IAC9C,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,MAAM,CAAC,SAAS,YAAY,EAAE,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAE5E,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,KAAK,IAC9C,CAAC,SAAS,KAAK,CAAC,GAAG,EAAE,GAAG,EAAE,MAAM,CAAC,SAAS,OAAO,CAAC,GAC9C,gBAAgB,CAAC,CAAC,CAAC,GACnB,KAAK,CAAA;AAEX,qBAAa,KAAK,CAChB,KAAK,SAAS,UAAU,GAAG,GAAG,EAC9B,WAAW,SAAS,YAAY,GAAG,GAAG,EACtC,cAAc,SAAS,OAAO,GAAG,GAAG,EACpC,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,GAAG;IAGjD,QAAQ,CAAC,IAAI,EAAE,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO;gBAHf,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO;CAE3B"}
1
+ {"version":3,"file":"query.d.ts","sourceRoot":"","sources":["../../src/schema/query.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AACvC,OAAO,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1C,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAA;AAEtC,qBAAa,KAAK,CAChB,KAAK,SAAS,UAAU,GAAG,UAAU,EACrC,WAAW,SAAS,YAAY,GAAG,YAAY,EAC/C,cAAc,SAAS,OAAO,GAAG,OAAO,EACxC,OAAO,SAAS,SAAS,GAAG,SAAS,MAAM,EAAE,GAAG,SAAS,GAAG,SAAS,MAAM,EAAE;IAK3E,QAAQ,CAAC,IAAI,EAAE,KAAK;IACpB,QAAQ,CAAC,UAAU,EAAE,WAAW;IAChC,QAAQ,CAAC,MAAM,EAAE,cAAc;IAC/B,QAAQ,CAAC,MAAM,EAAE,OAAO;IAN1B,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAS;gBAGrB,IAAI,EAAE,KAAK,EACX,UAAU,EAAE,WAAW,EACvB,MAAM,EAAE,cAAc,EACtB,MAAM,EAAE,OAAO;CAE3B"}
@@ -6,6 +6,7 @@ class Query {
6
6
  parameters;
7
7
  output;
8
8
  errors;
9
+ type = 'query';
9
10
  constructor(nsid, parameters, output, errors) {
10
11
  this.nsid = nsid;
11
12
  this.parameters = parameters;
@@ -1 +1 @@
1
- {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/schema/query.ts"],"names":[],"mappings":";;;AAaA,MAAa,KAAK;IAOL;IACA;IACA;IACA;IAJX,YACW,IAAW,EACX,UAAuB,EACvB,MAAsB,EACtB,MAAe;QAHf,SAAI,GAAJ,IAAI,CAAO;QACX,eAAU,GAAV,UAAU,CAAa;QACvB,WAAM,GAAN,MAAM,CAAgB;QACtB,WAAM,GAAN,MAAM,CAAS;IACvB,CAAC;CACL;AAZD,sBAYC","sourcesContent":["import { NsidString } from '../core.js'\nimport { Infer } from '../validation.js'\nimport { ParamsSchema } from './params.js'\nimport { InferPayloadBody, Payload } from './payload.js'\n\nexport type InferQueryParameters<Q extends Query> =\n Q extends Query<any, infer P extends ParamsSchema, any> ? Infer<P> : never\n\nexport type InferQueryOutputBody<Q extends Query> =\n Q extends Query<any, any, infer O extends Payload>\n ? InferPayloadBody<O>\n : never\n\nexport class Query<\n TNsid extends NsidString = any,\n TParameters extends ParamsSchema = any,\n TOutputPayload extends Payload = any,\n TErrors extends undefined | readonly string[] = any,\n> {\n constructor(\n readonly nsid: TNsid,\n readonly parameters: TParameters,\n readonly output: TOutputPayload,\n readonly errors: TErrors,\n ) {}\n}\n"]}
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../src/schema/query.ts"],"names":[],"mappings":";;;AAIA,MAAa,KAAK;IASL;IACA;IACA;IACA;IANF,IAAI,GAAG,OAAgB,CAAA;IAEhC,YACW,IAAW,EACX,UAAuB,EACvB,MAAsB,EACtB,MAAe;QAHf,SAAI,GAAJ,IAAI,CAAO;QACX,eAAU,GAAV,UAAU,CAAa;QACvB,WAAM,GAAN,MAAM,CAAgB;QACtB,WAAM,GAAN,MAAM,CAAS;IACvB,CAAC;CACL;AAdD,sBAcC","sourcesContent":["import { NsidString } from '../core.js'\nimport { ParamsSchema } from './params.js'\nimport { Payload } from './payload.js'\n\nexport class Query<\n TNsid extends NsidString = NsidString,\n TParameters extends ParamsSchema = ParamsSchema,\n TOutputPayload extends Payload = Payload,\n TErrors extends undefined | readonly string[] = undefined | readonly string[],\n> {\n readonly type = 'query' as const\n\n constructor(\n readonly nsid: TNsid,\n readonly parameters: TParameters,\n readonly output: TOutputPayload,\n readonly errors: TErrors,\n ) {}\n}\n"]}
@@ -1,13 +1,13 @@
1
- import { LexiconRecordKey, NsidString, Simplify, TidString } from '../core.js';
2
- import { Infer, Schema, ValidationResult, Validator, ValidatorContext } from '../validation.js';
1
+ import { Infer, LexiconRecordKey, NsidString, Schema, Simplify, TidString, ValidationResult, Validator, ValidatorContext } from '../core.js';
2
+ import { TypedObject } from './typed-union.js';
3
3
  export type InferRecordKey<R extends RecordSchema> = R extends RecordSchema<infer K> ? RecordKeySchemaOutput<K> : never;
4
4
  export type RecordSchemaOutput<T extends NsidString, S extends Validator<{
5
- [_ in string]?: unknown;
6
- }>> = Simplify<Omit<Infer<S>, '$type'> & {
5
+ [k: string]: unknown;
6
+ }>> = Simplify<{
7
7
  $type: T;
8
- }>;
8
+ } & Omit<Infer<S>, '$type'>>;
9
9
  export declare class RecordSchema<K extends LexiconRecordKey = any, T extends NsidString = any, S extends Validator<{
10
- [_ in string]?: unknown;
10
+ [k: string]: unknown;
11
11
  }> = any> extends Schema<RecordSchemaOutput<T, S>> {
12
12
  readonly key: K;
13
13
  readonly $type: T;
@@ -16,21 +16,21 @@ export declare class RecordSchema<K extends LexiconRecordKey = any, T extends Ns
16
16
  constructor(key: K, $type: T, schema: S);
17
17
  isTypeOf<X extends {
18
18
  $type?: unknown;
19
- }>(value: X): value is X extends {
20
- $type: T;
19
+ }>(value: X): value is Exclude<X extends {
20
+ $type?: T;
21
21
  } ? X : X & {
22
- $type: T;
23
- };
22
+ $type?: T;
23
+ }, TypedObject>;
24
24
  build<X extends Omit<Infer<S>, '$type'>>(input: X): Simplify<Omit<X, '$type'> & {
25
25
  $type: T;
26
26
  }>;
27
27
  $isTypeOf<X extends {
28
28
  $type?: unknown;
29
- }>(value: X): value is X extends {
30
- $type: T;
29
+ }>(value: X): value is Exclude<X extends {
30
+ $type?: T;
31
31
  } ? X : X & {
32
- $type: T;
33
- };
32
+ $type?: T;
33
+ }, TypedObject>;
34
34
  $build<X extends Omit<Infer<S>, '$type'>>(input: X): Omit<X, "$type"> & {
35
35
  $type: T;
36
36
  } extends infer T_1 ? { [K_1 in keyof T_1]: (Omit<X, "$type"> & {
@@ -1 +1 @@
1
- {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/schema/record.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,YAAY,CAAA;AAC9E,OAAO,EACL,KAAK,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAIzB,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,YAAY,IAC/C,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAEpE,MAAM,MAAM,kBAAkB,CAC5B,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,SAAS,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO;CAAE,CAAC,IAC9C,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAC,CAAA;AAEpD,qBAAa,YAAY,CACvB,CAAC,SAAS,gBAAgB,GAAG,GAAG,EAChC,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,CAAC,SAAS,SAAS,CAAC;KAAG,CAAC,IAAI,MAAM,CAAC,CAAC,EAAE,OAAO;CAAE,CAAC,GAAG,GAAG,CACtD,SAAQ,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAItC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,CAAC;IALpB,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;gBAGlB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC;IAMpB,QAAQ,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EACpC,KAAK,EAAE,CAAC,GACP,KAAK,IAAI,CAAC,SAAS;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,CAAC,GAAG;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE;IAIzD,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EACrC,KAAK,EAAE,CAAC,GACP,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC;IAI5C,SAAS,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,KAAK,EAAE,CAAC;eAVlB,CAAC;;eAAsB,CAAC;;IAcvD,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;eARV,CAAC;;eAAD,CAAC;;IAYzC,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAa9C;AAED,MAAM,MAAM,qBAAqB,CAAC,GAAG,SAAS,gBAAgB,IAC5D,GAAG,SAAS,KAAK,GACb,MAAM,GACN,GAAG,SAAS,KAAK,GACf,SAAS,GACT,GAAG,SAAS,MAAM,GAChB,UAAU,GACV,GAAG,SAAS,WAAW,MAAM,CAAC,SAAS,MAAM,EAAE,GAC7C,CAAC,GACD,KAAK,CAAA;AAEjB,MAAM,MAAM,eAAe,CAAC,GAAG,SAAS,gBAAgB,IAAI,MAAM,CAChE,qBAAqB,CAAC,GAAG,CAAC,CAC3B,CAAA"}
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/schema/record.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EACL,gBAAgB,EAChB,UAAU,EACV,MAAM,EACN,QAAQ,EACR,SAAS,EACT,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAGnB,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAA;AAE9C,MAAM,MAAM,cAAc,CAAC,CAAC,SAAS,YAAY,IAC/C,CAAC,SAAS,YAAY,CAAC,MAAM,CAAC,CAAC,GAAG,qBAAqB,CAAC,CAAC,CAAC,GAAG,KAAK,CAAA;AAEpE,MAAM,MAAM,kBAAkB,CAC5B,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,SAAS,CAAC;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,IAC3C,QAAQ,CAAC;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAA;AAEpD,qBAAa,YAAY,CACvB,CAAC,SAAS,gBAAgB,GAAG,GAAG,EAChC,CAAC,SAAS,UAAU,GAAG,GAAG,EAC1B,CAAC,SAAS,SAAS,CAAC;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAAE,CAAC,GAAG,GAAG,CACnD,SAAQ,MAAM,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAItC,QAAQ,CAAC,GAAG,EAAE,CAAC;IACf,QAAQ,CAAC,KAAK,EAAE,CAAC;IACjB,QAAQ,CAAC,MAAM,EAAE,CAAC;IALpB,SAAS,EAAE,eAAe,CAAC,CAAC,CAAC,CAAA;gBAGlB,GAAG,EAAE,CAAC,EACN,KAAK,EAAE,CAAC,EACR,MAAM,EAAE,CAAC;IAMpB,QAAQ,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EACpC,KAAK,EAAE,CAAC,GACP,KAAK,IAAI,OAAO,CACjB,CAAC,SAAS;QAAE,KAAK,CAAC,EAAE,CAAC,CAAA;KAAE,GAAG,CAAC,GAAG,CAAC,GAAG;QAAE,KAAK,CAAC,EAAE,CAAC,CAAA;KAAE,EAC/C,WAAW,CACZ;IAID,KAAK,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EACrC,KAAK,EAAE,CAAC,GACP,QAAQ,CAAC,IAAI,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG;QAAE,KAAK,EAAE,CAAC,CAAA;KAAE,CAAC;IAI5C,SAAS,CAAC,CAAC,SAAS;QAAE,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE,EAAE,KAAK,EAAE,CAAC;gBAZ3B,CAAC;;gBAAuB,CAAC;;IAgB/C,MAAM,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,KAAK,EAAE,CAAC;eARV,CAAC;;eAAD,CAAC;;IAYzC,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,kBAAkB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;CAa9C;AAED,MAAM,MAAM,qBAAqB,CAAC,GAAG,SAAS,gBAAgB,IAC5D,GAAG,SAAS,KAAK,GACb,MAAM,GACN,GAAG,SAAS,KAAK,GACf,SAAS,GACT,GAAG,SAAS,MAAM,GAChB,UAAU,GACV,GAAG,SAAS,WAAW,MAAM,CAAC,SAAS,MAAM,EAAE,GAC7C,CAAC,GACD,KAAK,CAAA;AAEjB,MAAM,MAAM,eAAe,CAAC,GAAG,SAAS,gBAAgB,IAAI,MAAM,CAChE,qBAAqB,CAAC,GAAG,CAAC,CAC3B,CAAA"}
@@ -1,10 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RecordSchema = void 0;
4
- const validation_js_1 = require("../validation.js");
4
+ const core_js_1 = require("../core.js");
5
5
  const literal_js_1 = require("./literal.js");
6
6
  const string_js_1 = require("./string.js");
7
- class RecordSchema extends validation_js_1.Schema {
7
+ class RecordSchema extends core_js_1.Schema {
8
8
  key;
9
9
  $type;
10
10
  schema;
@@ -1 +1 @@
1
- {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/schema/record.ts"],"names":[],"mappings":";;;AACA,oDAMyB;AACzB,6CAA4C;AAC5C,2CAA0C;AAU1C,MAAa,YAIX,SAAQ,sBAAgC;IAI7B;IACA;IACA;IALX,SAAS,CAAoB;IAE7B,YACW,GAAM,EACN,KAAQ,EACR,MAAS;QAElB,KAAK,EAAE,CAAA;QAJE,QAAG,GAAH,GAAG,CAAG;QACN,UAAK,GAAL,KAAK,CAAG;QACR,WAAM,GAAN,MAAM,CAAG;QAGlB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,QAAQ,CACN,KAAQ;QAER,OAAO,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAA;IACnC,CAAC;IAED,KAAK,CACH,KAAQ;QAER,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IACxC,CAAC;IAED,SAAS,CAAgC,KAAQ;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAI,KAAK,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAoC,KAAQ;QAChD,OAAO,IAAI,CAAC,KAAK,CAAI,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,OAAO,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3E,CAAC;QAED,OAAO,MAAoD,CAAA;IAC7D,CAAC;CACF;AApDD,oCAoDC;AAiBD,MAAM,SAAS,GAAG,IAAI,wBAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,MAAM,SAAS,GAAG,IAAI,wBAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACrD,MAAM,UAAU,GAAG,IAAI,wBAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AACvD,MAAM,iBAAiB,GAAG,IAAI,0BAAa,CAAC,MAAM,CAAC,CAAA;AAEnD,SAAS,SAAS,CAChB,GAAQ;IAER,gDAAgD;IAChD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,SAAgB,CAAA;IAC1C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,SAAgB,CAAA;IAC1C,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,UAAiB,CAAA;IAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAA+B,CAAA;QACxD,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,iBAAwB,CAAA;QACrD,OAAO,IAAI,0BAAa,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAA;AACxD,CAAC","sourcesContent":["import { LexiconRecordKey, NsidString, Simplify, TidString } from '../core.js'\nimport {\n Infer,\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../validation.js'\nimport { LiteralSchema } from './literal.js'\nimport { StringSchema } from './string.js'\n\nexport type InferRecordKey<R extends RecordSchema> =\n R extends RecordSchema<infer K> ? RecordKeySchemaOutput<K> : never\n\nexport type RecordSchemaOutput<\n T extends NsidString,\n S extends Validator<{ [_ in string]?: unknown }>,\n> = Simplify<Omit<Infer<S>, '$type'> & { $type: T }>\n\nexport class RecordSchema<\n K extends LexiconRecordKey = any,\n T extends NsidString = any,\n S extends Validator<{ [_ in string]?: unknown }> = any,\n> extends Schema<RecordSchemaOutput<T, S>> {\n keySchema: RecordKeySchema<K>\n\n constructor(\n readonly key: K,\n readonly $type: T,\n readonly schema: S,\n ) {\n super()\n this.keySchema = recordKey(key)\n }\n\n isTypeOf<X extends { $type?: unknown }>(\n value: X,\n ): value is X extends { $type: T } ? X : X & { $type: T } {\n return value.$type === this.$type\n }\n\n build<X extends Omit<Infer<S>, '$type'>>(\n input: X,\n ): Simplify<Omit<X, '$type'> & { $type: T }> {\n return { ...input, $type: this.$type }\n }\n\n $isTypeOf<X extends { $type?: unknown }>(value: X) {\n return this.isTypeOf<X>(value)\n }\n\n $build<X extends Omit<Infer<S>, '$type'>>(input: X) {\n return this.build<X>(input)\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<RecordSchemaOutput<T, S>> {\n const result = ctx.validate(input, this.schema)\n\n if (!result.success) {\n return result\n }\n\n if (this.$type !== result.value.$type) {\n return ctx.issueInvalidPropertyValue(result.value, '$type', [this.$type])\n }\n\n return result as ValidationResult<RecordSchemaOutput<T, S>>\n }\n}\n\nexport type RecordKeySchemaOutput<Key extends LexiconRecordKey> =\n Key extends 'any'\n ? string\n : Key extends 'tid'\n ? TidString\n : Key extends 'nsid'\n ? NsidString\n : Key extends `literal:${infer L extends string}`\n ? L\n : never\n\nexport type RecordKeySchema<Key extends LexiconRecordKey> = Schema<\n RecordKeySchemaOutput<Key>\n>\n\nconst keySchema = new StringSchema({ minLength: 1 })\nconst tidSchema = new StringSchema({ format: 'tid' })\nconst nsidSchema = new StringSchema({ format: 'nsid' })\nconst selfLiteralSchema = new LiteralSchema('self')\n\nfunction recordKey<Key extends LexiconRecordKey>(\n key: Key,\n): RecordKeySchema<Key> {\n // @NOTE Use cached instances for common schemas\n if (key === 'any') return keySchema as any\n if (key === 'tid') return tidSchema as any\n if (key === 'nsid') return nsidSchema as any\n if (key.startsWith('literal:')) {\n const value = key.slice(8) as RecordKeySchemaOutput<Key>\n if (value === 'self') return selfLiteralSchema as any\n return new LiteralSchema(value)\n }\n\n throw new Error(`Unsupported record key type: ${key}`)\n}\n"]}
1
+ {"version":3,"file":"record.js","sourceRoot":"","sources":["../../src/schema/record.ts"],"names":[],"mappings":";;;AAAA,wCAUmB;AACnB,6CAA4C;AAC5C,2CAA0C;AAW1C,MAAa,YAIX,SAAQ,gBAAgC;IAI7B;IACA;IACA;IALX,SAAS,CAAoB;IAE7B,YACW,GAAM,EACN,KAAQ,EACR,MAAS;QAElB,KAAK,EAAE,CAAA;QAJE,QAAG,GAAH,GAAG,CAAG;QACN,UAAK,GAAL,KAAK,CAAG;QACR,WAAM,GAAN,MAAM,CAAG;QAGlB,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;IACjC,CAAC;IAED,QAAQ,CACN,KAAQ;QAKR,OAAO,KAAK,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,CAAA;IACnC,CAAC;IAED,KAAK,CACH,KAAQ;QAER,OAAO,EAAE,GAAG,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAA;IACxC,CAAC;IAED,SAAS,CAAgC,KAAQ;QAC/C,OAAO,IAAI,CAAC,QAAQ,CAAI,KAAK,CAAC,CAAA;IAChC,CAAC;IAED,MAAM,CAAoC,KAAQ;QAChD,OAAO,IAAI,CAAC,KAAK,CAAI,KAAK,CAAC,CAAA;IAC7B,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,MAAM,MAAM,GAAG,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;QAE/C,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,OAAO,MAAM,CAAA;QACf,CAAC;QAED,IAAI,IAAI,CAAC,KAAK,KAAK,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YACtC,OAAO,GAAG,CAAC,yBAAyB,CAAC,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAA;QAC3E,CAAC;QAED,OAAO,MAAoD,CAAA;IAC7D,CAAC;CACF;AAvDD,oCAuDC;AAiBD,MAAM,SAAS,GAAG,IAAI,wBAAY,CAAC,EAAE,SAAS,EAAE,CAAC,EAAE,CAAC,CAAA;AACpD,MAAM,SAAS,GAAG,IAAI,wBAAY,CAAC,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAA;AACrD,MAAM,UAAU,GAAG,IAAI,wBAAY,CAAC,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAA;AACvD,MAAM,iBAAiB,GAAG,IAAI,0BAAa,CAAC,MAAM,CAAC,CAAA;AAEnD,SAAS,SAAS,CAChB,GAAQ;IAER,gDAAgD;IAChD,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,SAAgB,CAAA;IAC1C,IAAI,GAAG,KAAK,KAAK;QAAE,OAAO,SAAgB,CAAA;IAC1C,IAAI,GAAG,KAAK,MAAM;QAAE,OAAO,UAAiB,CAAA;IAC5C,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,CAA+B,CAAA;QACxD,IAAI,KAAK,KAAK,MAAM;YAAE,OAAO,iBAAwB,CAAA;QACrD,OAAO,IAAI,0BAAa,CAAC,KAAK,CAAC,CAAA;IACjC,CAAC;IAED,MAAM,IAAI,KAAK,CAAC,gCAAgC,GAAG,EAAE,CAAC,CAAA;AACxD,CAAC","sourcesContent":["import {\n Infer,\n LexiconRecordKey,\n NsidString,\n Schema,\n Simplify,\n TidString,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../core.js'\nimport { LiteralSchema } from './literal.js'\nimport { StringSchema } from './string.js'\nimport { TypedObject } from './typed-union.js'\n\nexport type InferRecordKey<R extends RecordSchema> =\n R extends RecordSchema<infer K> ? RecordKeySchemaOutput<K> : never\n\nexport type RecordSchemaOutput<\n T extends NsidString,\n S extends Validator<{ [k: string]: unknown }>,\n> = Simplify<{ $type: T } & Omit<Infer<S>, '$type'>>\n\nexport class RecordSchema<\n K extends LexiconRecordKey = any,\n T extends NsidString = any,\n S extends Validator<{ [k: string]: unknown }> = any,\n> extends Schema<RecordSchemaOutput<T, S>> {\n keySchema: RecordKeySchema<K>\n\n constructor(\n readonly key: K,\n readonly $type: T,\n readonly schema: S,\n ) {\n super()\n this.keySchema = recordKey(key)\n }\n\n isTypeOf<X extends { $type?: unknown }>(\n value: X,\n ): value is Exclude<\n X extends { $type?: T } ? X : X & { $type?: T },\n TypedObject\n > {\n return value.$type === this.$type\n }\n\n build<X extends Omit<Infer<S>, '$type'>>(\n input: X,\n ): Simplify<Omit<X, '$type'> & { $type: T }> {\n return { ...input, $type: this.$type }\n }\n\n $isTypeOf<X extends { $type?: unknown }>(value: X) {\n return this.isTypeOf<X>(value)\n }\n\n $build<X extends Omit<Infer<S>, '$type'>>(input: X) {\n return this.build<X>(input)\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<RecordSchemaOutput<T, S>> {\n const result = ctx.validate(input, this.schema)\n\n if (!result.success) {\n return result\n }\n\n if (this.$type !== result.value.$type) {\n return ctx.issueInvalidPropertyValue(result.value, '$type', [this.$type])\n }\n\n return result as ValidationResult<RecordSchemaOutput<T, S>>\n }\n}\n\nexport type RecordKeySchemaOutput<Key extends LexiconRecordKey> =\n Key extends 'any'\n ? string\n : Key extends 'tid'\n ? TidString\n : Key extends 'nsid'\n ? NsidString\n : Key extends `literal:${infer L extends string}`\n ? L\n : never\n\nexport type RecordKeySchema<Key extends LexiconRecordKey> = Schema<\n RecordKeySchemaOutput<Key>\n>\n\nconst keySchema = new StringSchema({ minLength: 1 })\nconst tidSchema = new StringSchema({ format: 'tid' })\nconst nsidSchema = new StringSchema({ format: 'nsid' })\nconst selfLiteralSchema = new LiteralSchema('self')\n\nfunction recordKey<Key extends LexiconRecordKey>(\n key: Key,\n): RecordKeySchema<Key> {\n // @NOTE Use cached instances for common schemas\n if (key === 'any') return keySchema as any\n if (key === 'tid') return tidSchema as any\n if (key === 'nsid') return nsidSchema as any\n if (key.startsWith('literal:')) {\n const value = key.slice(8) as RecordKeySchemaOutput<Key>\n if (value === 'self') return selfLiteralSchema as any\n return new LiteralSchema(value)\n }\n\n throw new Error(`Unsupported record key type: ${key}`)\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Schema, ValidationResult, Validator, ValidatorContext } from '../validation.js';
1
+ import { Schema, ValidationResult, Validator, ValidatorContext } from '../core.js';
2
2
  export type RefSchemaGetter<V> = () => Validator<V>;
3
3
  export declare class RefSchema<V = any> extends Schema<V> {
4
4
  #private;
@@ -1 +1 @@
1
- {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../src/schema/ref.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,kBAAkB,CAAA;AAEzB,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,CAAC,CAAA;AAEnD,qBAAa,SAAS,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;;gBAGnC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAStC,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAgBzB;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,CAAC,CAAC;CAGvB"}
1
+ {"version":3,"file":"ref.d.ts","sourceRoot":"","sources":["../../src/schema/ref.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,MAAM,EACN,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,YAAY,CAAA;AAEnB,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI,MAAM,SAAS,CAAC,CAAC,CAAC,CAAA;AAEnD,qBAAa,SAAS,CAAC,CAAC,GAAG,GAAG,CAAE,SAAQ,MAAM,CAAC,CAAC,CAAC;;gBAGnC,MAAM,EAAE,eAAe,CAAC,CAAC,CAAC;IAStC,IAAI,MAAM,IAAI,SAAS,CAAC,CAAC,CAAC,CAgBzB;IAED,iBAAiB,CACf,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,CAAC,CAAC;CAGvB"}
@@ -1,8 +1,8 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.RefSchema = void 0;
4
- const validation_js_1 = require("../validation.js");
5
- class RefSchema extends validation_js_1.Schema {
4
+ const core_js_1 = require("../core.js");
5
+ class RefSchema extends core_js_1.Schema {
6
6
  #getter;
7
7
  constructor(getter) {
8
8
  // @NOTE In order to avoid circular dependency issues, we don't resolve
@@ -1 +1 @@
1
- {"version":3,"file":"ref.js","sourceRoot":"","sources":["../../src/schema/ref.ts"],"names":[],"mappings":";;;AAAA,oDAKyB;AAIzB,MAAa,SAAmB,SAAQ,sBAAS;IAC/C,OAAO,CAAoB;IAE3B,YAAY,MAA0B;QACpC,uEAAuE;QACvE,sEAAsE;QAEtE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,IAAI,MAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErC,4EAA4E;QAC5E,gCAAgC;QAChC,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAA;QAEjC,mEAAmE;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;QAEF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;CACF;AApCD,8BAoCC;AAED,SAAS,kBAAkB;IACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;AAC3D,CAAC","sourcesContent":["import {\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../validation.js'\n\nexport type RefSchemaGetter<V> = () => Validator<V>\n\nexport class RefSchema<V = any> extends Schema<V> {\n #getter: RefSchemaGetter<V>\n\n constructor(getter: RefSchemaGetter<V>) {\n // @NOTE In order to avoid circular dependency issues, we don't resolve\n // the schema here. Instead, we resolve it lazily when first accessed.\n\n super()\n\n this.#getter = getter\n }\n\n get schema(): Validator<V> {\n const value = this.#getter.call(null)\n\n // Prevents a getter from depending on itself recursively, also allows GC to\n // clean up the getter function.\n this.#getter = throwAlreadyCalled\n\n // Disable the getter and cache the resolved schema on the instance\n Object.defineProperty(this, 'schema', {\n value,\n writable: false,\n enumerable: false,\n configurable: true,\n })\n\n return value\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<V> {\n return ctx.validate(input, this.schema)\n }\n}\n\nfunction throwAlreadyCalled(): never {\n throw new Error('RefSchema getter called multiple times')\n}\n"]}
1
+ {"version":3,"file":"ref.js","sourceRoot":"","sources":["../../src/schema/ref.ts"],"names":[],"mappings":";;;AAAA,wCAKmB;AAInB,MAAa,SAAmB,SAAQ,gBAAS;IAC/C,OAAO,CAAoB;IAE3B,YAAY,MAA0B;QACpC,uEAAuE;QACvE,sEAAsE;QAEtE,KAAK,EAAE,CAAA;QAEP,IAAI,CAAC,OAAO,GAAG,MAAM,CAAA;IACvB,CAAC;IAED,IAAI,MAAM;QACR,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAErC,4EAA4E;QAC5E,gCAAgC;QAChC,IAAI,CAAC,OAAO,GAAG,kBAAkB,CAAA;QAEjC,mEAAmE;QACnE,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,QAAQ,EAAE;YACpC,KAAK;YACL,QAAQ,EAAE,KAAK;YACf,UAAU,EAAE,KAAK;YACjB,YAAY,EAAE,IAAI;SACnB,CAAC,CAAA;QAEF,OAAO,KAAK,CAAA;IACd,CAAC;IAED,iBAAiB,CACf,KAAc,EACd,GAAqB;QAErB,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,CAAA;IACzC,CAAC;CACF;AApCD,8BAoCC;AAED,SAAS,kBAAkB;IACzB,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAA;AAC3D,CAAC","sourcesContent":["import {\n Schema,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from '../core.js'\n\nexport type RefSchemaGetter<V> = () => Validator<V>\n\nexport class RefSchema<V = any> extends Schema<V> {\n #getter: RefSchemaGetter<V>\n\n constructor(getter: RefSchemaGetter<V>) {\n // @NOTE In order to avoid circular dependency issues, we don't resolve\n // the schema here. Instead, we resolve it lazily when first accessed.\n\n super()\n\n this.#getter = getter\n }\n\n get schema(): Validator<V> {\n const value = this.#getter.call(null)\n\n // Prevents a getter from depending on itself recursively, also allows GC to\n // clean up the getter function.\n this.#getter = throwAlreadyCalled\n\n // Disable the getter and cache the resolved schema on the instance\n Object.defineProperty(this, 'schema', {\n value,\n writable: false,\n enumerable: false,\n configurable: true,\n })\n\n return value\n }\n\n validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<V> {\n return ctx.validate(input, this.schema)\n }\n}\n\nfunction throwAlreadyCalled(): never {\n throw new Error('RefSchema getter called multiple times')\n}\n"]}
@@ -1,4 +1,4 @@
1
- import { Infer, PropertyKey, Validator } from '../validation.js';
1
+ import { Infer, PropertyKey, Validator } from '../core.js';
2
2
  import { CustomAssertionContext } from './custom.js';
3
3
  export type RefinementCheck<T> = {
4
4
  check: (value: T, ctx: CustomAssertionContext) => boolean;
@@ -12,6 +12,23 @@ export type RefinementAssertion<T, Out extends T> = {
12
12
  };
13
13
  export type InferRefinement<R> = R extends RefinementCheck<infer T> ? T : R extends RefinementAssertion<infer T, any> ? T : never;
14
14
  export type Refinement<T = any, Out extends T = T> = RefinementCheck<T> | RefinementAssertion<T, Out>;
15
+ /**
16
+ * Create a refined schema based on an existing schema and a refinement check.
17
+ *
18
+ * @param schema - The base schema to refine.
19
+ * @param refinement - The refinement check to apply.
20
+ * @returns A new schema that includes the refinement.
21
+ * @example
22
+ *
23
+ * ```ts
24
+ * const PositiveInt = refine(l.integer(), {
25
+ * check: (value) => value > 0,
26
+ * message: 'Value must be a positive integer',
27
+ * })
28
+ * const result = PositiveInt.validate(-5)
29
+ * // result.success === false
30
+ * ```
31
+ */
15
32
  export declare function refine<S extends Validator, Out extends Infer<S>>(schema: S, refinement: RefinementAssertion<Infer<S>, Out>): S & Validator<Out>;
16
33
  export declare function refine<S extends Validator>(schema: S, refinement: RefinementCheck<Infer<S>>): S;
17
34
  export declare function refine<R extends Refinement, S extends Validator<InferRefinement<R>>>(schema: S, refinement: R): S;
@@ -1 +1 @@
1
- {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../src/schema/refine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAEL,WAAW,EAEX,SAAS,EAEV,MAAM,kBAAkB,CAAA;AACzB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAA;IACzD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI;IAClD,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,sBAAsB,KAAK,KAAK,IAAI,GAAG,CAAA;IAC1E,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,CAAC,GAC9B,CAAC,GACD,CAAC,SAAS,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GACzC,CAAC,GACD,KAAK,CAAA;AAEb,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,IAC7C,eAAe,CAAC,CAAC,CAAC,GAClB,mBAAmB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE/B,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,EAC9D,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAC7C,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;AACrB,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EACxC,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACpC,CAAC,CAAA;AACJ,wBAAgB,MAAM,CACpB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA"}
1
+ {"version":3,"file":"refine.d.ts","sourceRoot":"","sources":["../../src/schema/refine.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,EAEL,WAAW,EAEX,SAAS,EAEV,MAAM,YAAY,CAAA;AACnB,OAAO,EAAE,sBAAsB,EAAE,MAAM,aAAa,CAAA;AAEpD,MAAM,MAAM,eAAe,CAAC,CAAC,IAAI;IAC/B,KAAK,EAAE,CAAC,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,sBAAsB,KAAK,OAAO,CAAA;IACzD,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,mBAAmB,CAAC,CAAC,EAAE,GAAG,SAAS,CAAC,IAAI;IAClD,KAAK,EAAE,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,EAAE,sBAAsB,KAAK,KAAK,IAAI,GAAG,CAAA;IAC1E,OAAO,EAAE,MAAM,CAAA;IACf,IAAI,CAAC,EAAE,WAAW,GAAG,SAAS,WAAW,EAAE,CAAA;CAC5C,CAAA;AAED,MAAM,MAAM,eAAe,CAAC,CAAC,IAC3B,CAAC,SAAS,eAAe,CAAC,MAAM,CAAC,CAAC,GAC9B,CAAC,GACD,CAAC,SAAS,mBAAmB,CAAC,MAAM,CAAC,EAAE,GAAG,CAAC,GACzC,CAAC,GACD,KAAK,CAAA;AAEb,MAAM,MAAM,UAAU,CAAC,CAAC,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC,GAAG,CAAC,IAC7C,eAAe,CAAC,CAAC,CAAC,GAClB,mBAAmB,CAAC,CAAC,EAAE,GAAG,CAAC,CAAA;AAE/B;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EAAE,GAAG,SAAS,KAAK,CAAC,CAAC,CAAC,EAC9D,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,GAC7C,CAAC,GAAG,SAAS,CAAC,GAAG,CAAC,CAAA;AACrB,wBAAgB,MAAM,CAAC,CAAC,SAAS,SAAS,EACxC,MAAM,EAAE,CAAC,EACT,UAAU,EAAE,eAAe,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,GACpC,CAAC,CAAA;AACJ,wBAAgB,MAAM,CACpB,CAAC,SAAS,UAAU,EACpB,CAAC,SAAS,SAAS,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,EACvC,MAAM,EAAE,CAAC,EAAE,UAAU,EAAE,CAAC,GAAG,CAAC,CAAA"}
@@ -1,7 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.refine = refine;
4
- const validation_js_1 = require("../validation.js");
4
+ const core_js_1 = require("../core.js");
5
5
  /*@__NO_SIDE_EFFECTS__*/
6
6
  function refine(schema, refinement) {
7
7
  // This is basically the same as monkey patching the "validateInContext"
@@ -26,7 +26,7 @@ function validateInContextUnbound(input, ctx) {
26
26
  const checkResult = this.refinement.check.call(null, result.value, ctx);
27
27
  if (!checkResult) {
28
28
  const path = ctx.concatPath(this.refinement.path);
29
- return ctx.failure(new validation_js_1.IssueCustom(path, input, this.refinement.message));
29
+ return ctx.issue(new core_js_1.IssueCustom(path, input, this.refinement.message));
30
30
  }
31
31
  return result;
32
32
  }