@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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,63 @@
1
1
  # @atproto/lex-schema
2
2
 
3
+ ## 0.0.6
4
+
5
+ ### Patch Changes
6
+
7
+ - [#4443](https://github.com/bluesky-social/atproto/pull/4443) [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Remove `LexMap` exported type
8
+
9
+ - [#4443](https://github.com/bluesky-social/atproto/pull/4443) [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `jsonPayload` schema builder utilities
10
+
11
+ - [#4443](https://github.com/bluesky-social/atproto/pull/4443) [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Expose `lexErrorData` validation schema
12
+
13
+ - [#4443](https://github.com/bluesky-social/atproto/pull/4443) [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Expose `Main<T>` and `getMain()` helpers to work with namespaced schemas
14
+
15
+ - [#4443](https://github.com/bluesky-social/atproto/pull/4443) [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Simplify definition of `TypedObject`
16
+
17
+ - [#4443](https://github.com/bluesky-social/atproto/pull/4443) [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - `ValidationError` now extend `LexError` (from `@atproto/data`)
18
+
19
+ - [#4443](https://github.com/bluesky-social/atproto/pull/4443) [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Memoize most popular schemas
20
+
21
+ - Updated dependencies [[`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c), [`9af7a2d`](https://github.com/bluesky-social/atproto/commit/9af7a2d12240e91248610ce4fe7d93387733c59c)]:
22
+ - @atproto/lex-data@0.0.5
23
+
24
+ ## 0.0.5
25
+
26
+ ### Patch Changes
27
+
28
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `cast()` method to Schema classes. This acts as a type cast that does not alter the value or throws if the value does not match the schema.
29
+
30
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Forbid use of unsafe integers
31
+
32
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Replace `InferParamsSchema` with `InferMethodParams`
33
+
34
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `matchesEncoding` method on the `PayloadSchema` class.
35
+
36
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Replace `InferProcedureParameters` with `InferMethodParams`
37
+
38
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Export format checking utilities for string (`isDidString`, `isCidString`, etc.)
39
+
40
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Expose `$Typed` and `Un$Typed` utilities
41
+
42
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Rename `ResultFailure`'s error field to `reason`
43
+
44
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Type the `encoding` field of `Payload` more accurately. Methods with an encoding of `*/*` are now correctly represented as `${string}/${string}` instead of the `*/*` literal type.
45
+
46
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `matchesMime` utility method on `BlobSchema` class
47
+
48
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Enforce size and accept options when validating blobs
49
+
50
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Replace `InferProcedureInputBody` with `InferMethodInputBody`
51
+
52
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `check()` method to all Schema classes. That method is an alias for the `assert()` method that allows to avoid `ts(2775)` errors.
53
+
54
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Rename format assertion and checking utilities to all contain the `String` prefix (like in `asAtUriString`, `assertAtUriString`, etc.)
55
+
56
+ - [#4457](https://github.com/bluesky-social/atproto/pull/4457) [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Replace `InferProcedureOutputBody` with `InferMethodOutputBody`
57
+
58
+ - Updated dependencies [[`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece), [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece), [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece), [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece), [`e6b6107`](https://github.com/bluesky-social/atproto/commit/e6b6107e028fee964972274b71f5da1329a7bece)]:
59
+ - @atproto/lex-data@0.0.4
60
+
3
61
  ## 0.0.4
4
62
 
5
63
  ### Patch Changes
@@ -1,7 +1,14 @@
1
1
  import { NsidString } from './string-format.js';
2
+ import { OmitKey } from './types.js';
2
3
  export type $Type<N extends NsidString = NsidString, H extends string = string> = N extends NsidString ? string extends H ? N | `${N}#${string}` : H extends 'main' ? N : `${N}#${H}` : never;
3
4
  export type $TypeOf<O extends {
4
5
  $type?: string;
5
6
  }> = NonNullable<O['$type']>;
6
7
  export declare function $type<N extends NsidString, H extends string>(nsid: N, hash: H): $Type<N, H>;
8
+ export type $Typed<V, T extends string = string> = V & {
9
+ $type: T;
10
+ };
11
+ export type Un$Typed<V extends {
12
+ $type?: string;
13
+ }> = OmitKey<V, '$type'>;
7
14
  //# sourceMappingURL=$type.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"$type.d.ts","sourceRoot":"","sources":["../../src/core/$type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAE/C,MAAM,MAAM,KAAK,CACf,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,CAAC,SAAS,MAAM,GAAG,MAAM,IACvB,CAAC,SAAS,UAAU,GACpB,MAAM,SAAS,CAAC,GACd,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,EAAE,GACpB,CAAC,SAAS,MAAM,GACd,CAAC,GACD,GAAG,CAAC,IAAI,CAAC,EAAE,GACf,KAAK,CAAA;AAET,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAG3E,wBAAgB,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,MAAM,EAC1D,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,CAAC,GACN,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAEb"}
1
+ {"version":3,"file":"$type.d.ts","sourceRoot":"","sources":["../../src/core/$type.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAA;AAC/C,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAA;AAEpC,MAAM,MAAM,KAAK,CACf,CAAC,SAAS,UAAU,GAAG,UAAU,EACjC,CAAC,SAAS,MAAM,GAAG,MAAM,IACvB,CAAC,SAAS,UAAU,GACpB,MAAM,SAAS,CAAC,GACd,CAAC,GAAG,GAAG,CAAC,IAAI,MAAM,EAAE,GACpB,CAAC,SAAS,MAAM,GACd,CAAC,GACD,GAAG,CAAC,IAAI,CAAC,EAAE,GACf,KAAK,CAAA;AAET,MAAM,MAAM,OAAO,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,IAAI,WAAW,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAA;AAG3E,wBAAgB,KAAK,CAAC,CAAC,SAAS,UAAU,EAAE,CAAC,SAAS,MAAM,EAC1D,IAAI,EAAE,CAAC,EACP,IAAI,EAAE,CAAC,GACN,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAEb;AAED,MAAM,MAAM,MAAM,CAAC,CAAC,EAAE,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG;IAAE,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AACnE,MAAM,MAAM,QAAQ,CAAC,CAAC,SAAS;IAAE,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,IAAI,OAAO,CAAC,CAAC,EAAE,OAAO,CAAC,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"$type.js","sourceRoot":"","sources":["../../src/core/$type.ts"],"names":[],"mappings":";;AAgBA,sBAKC;AAND,wBAAwB;AACxB,SAAgB,KAAK,CACnB,IAAO,EACP,IAAO;IAEP,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAgB,CAAA;AACpE,CAAC","sourcesContent":["import { NsidString } from './string-format.js'\n\nexport type $Type<\n N extends NsidString = NsidString,\n H extends string = string,\n> = N extends NsidString\n ? string extends H\n ? N | `${N}#${string}`\n : H extends 'main'\n ? N\n : `${N}#${H}`\n : never\n\nexport type $TypeOf<O extends { $type?: string }> = NonNullable<O['$type']>\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function $type<N extends NsidString, H extends string>(\n nsid: N,\n hash: H,\n): $Type<N, H> {\n return (hash === 'main' ? nsid : `${nsid}#${hash}`) as $Type<N, H>\n}\n"]}
1
+ {"version":3,"file":"$type.js","sourceRoot":"","sources":["../../src/core/$type.ts"],"names":[],"mappings":";;AAiBA,sBAKC;AAND,wBAAwB;AACxB,SAAgB,KAAK,CACnB,IAAO,EACP,IAAO;IAEP,OAAO,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,IAAI,EAAE,CAAgB,CAAA;AACpE,CAAC","sourcesContent":["import { NsidString } from './string-format.js'\nimport { OmitKey } from './types.js'\n\nexport type $Type<\n N extends NsidString = NsidString,\n H extends string = string,\n> = N extends NsidString\n ? string extends H\n ? N | `${N}#${string}`\n : H extends 'main'\n ? N\n : `${N}#${H}`\n : never\n\nexport type $TypeOf<O extends { $type?: string }> = NonNullable<O['$type']>\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function $type<N extends NsidString, H extends string>(\n nsid: N,\n hash: H,\n): $Type<N, H> {\n return (hash === 'main' ? nsid : `${nsid}#${hash}`) as $Type<N, H>\n}\n\nexport type $Typed<V, T extends string = string> = V & { $type: T }\nexport type Un$Typed<V extends { $type?: string }> = OmitKey<V, '$type'>\n"]}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-key.d.ts","sourceRoot":"","sources":["../../src/core/property-key.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,MAAM,CAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"property-key.js","sourceRoot":"","sources":["../../src/core/property-key.ts"],"names":[],"mappings":"","sourcesContent":["export type PropertyKey = string | number\n"]}
@@ -4,12 +4,12 @@ export type ResultSuccess<V = any> = {
4
4
  };
5
5
  export type ResultFailure<E = Error> = {
6
6
  success: false;
7
- error: E;
7
+ reason: E;
8
8
  };
9
9
  export type Result<V = any, E = Error> = ResultSuccess<V> | ResultFailure<E>;
10
10
  export declare function success<V>(value: V): ResultSuccess<V>;
11
- export declare function failure<E>(error: E): ResultFailure<E>;
12
- export declare function failureError<T>(result: ResultFailure<T>): T;
11
+ export declare function failure<E>(reason: E): ResultFailure<E>;
12
+ export declare function failureReason<T>(result: ResultFailure<T>): T;
13
13
  export declare function successValue<T>(result: ResultSuccess<T>): T;
14
14
  /**
15
15
  * Catches any error and wraps it in a {@link ResultFailure<Error>}.
@@ -19,9 +19,9 @@ export declare function successValue<T>(result: ResultSuccess<T>): T;
19
19
  * @example
20
20
  *
21
21
  * ```ts
22
- * declare function someFunction(): Promise<ResultSuccess<string>>
22
+ * declare function someFunction(): Promise<string>
23
23
  *
24
- * const result = await someFunction().catch(catchall)
24
+ * const result = await someFunction().then(success, catchall)
25
25
  * if (result.success) {
26
26
  * console.log(result.value) // string
27
27
  * } else {
@@ -41,9 +41,10 @@ export declare function catchall(err: unknown): ResultFailure<Error>;
41
41
  * class FooError extends Error {}
42
42
  * class BarError extends Error {}
43
43
  *
44
- * declare function someFunction(): Promise<ResultSuccess<string>>
44
+ * declare function someFunction(): Promise<string>
45
45
  *
46
46
  * const result = await someFunction()
47
+ * .then(success)
47
48
  * .catch(createCatcher(FooError))
48
49
  * .catch(createCatcher(BarError))
49
50
  *
@@ -1 +1 @@
1
- {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAChE,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,KAAK,IAAI;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAEnE,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAG5E,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAErD;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAErD;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAE3D;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAE3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AAEH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAG3D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AAEH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IACtD,KAAK,OAAO,KAAG,aAAa,CAAC,CAAC,CAAC,CAIxC"}
1
+ {"version":3,"file":"result.d.ts","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,GAAG,IAAI;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,KAAK,EAAE,CAAC,CAAA;CAAE,CAAA;AAChE,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,KAAK,IAAI;IAAE,OAAO,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,CAAC,CAAA;CAAE,CAAA;AAEpE,MAAM,MAAM,MAAM,CAAC,CAAC,GAAG,GAAG,EAAE,CAAC,GAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAAA;AAG5E,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAErD;AAGD,wBAAgB,OAAO,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAEtD;AAGD,wBAAgB,aAAa,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAE5D;AAGD,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAE3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AAEH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAG3D;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AAEH,wBAAgB,aAAa,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,GAAG,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,IACtD,KAAK,OAAO,KAAG,aAAa,CAAC,CAAC,CAAC,CAIxC"}
@@ -2,7 +2,7 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.success = success;
4
4
  exports.failure = failure;
5
- exports.failureError = failureError;
5
+ exports.failureReason = failureReason;
6
6
  exports.successValue = successValue;
7
7
  exports.catchall = catchall;
8
8
  exports.createCatcher = createCatcher;
@@ -11,12 +11,12 @@ function success(value) {
11
11
  return { success: true, value };
12
12
  }
13
13
  /*@__NO_SIDE_EFFECTS__*/
14
- function failure(error) {
15
- return { success: false, error };
14
+ function failure(reason) {
15
+ return { success: false, reason };
16
16
  }
17
17
  /*@__NO_SIDE_EFFECTS__*/
18
- function failureError(result) {
19
- return result.error;
18
+ function failureReason(result) {
19
+ return result.reason;
20
20
  }
21
21
  /*@__NO_SIDE_EFFECTS__*/
22
22
  function successValue(result) {
@@ -30,9 +30,9 @@ function successValue(result) {
30
30
  * @example
31
31
  *
32
32
  * ```ts
33
- * declare function someFunction(): Promise<ResultSuccess<string>>
33
+ * declare function someFunction(): Promise<string>
34
34
  *
35
- * const result = await someFunction().catch(catchall)
35
+ * const result = await someFunction().then(success, catchall)
36
36
  * if (result.success) {
37
37
  * console.log(result.value) // string
38
38
  * } else {
@@ -57,9 +57,10 @@ function catchall(err) {
57
57
  * class FooError extends Error {}
58
58
  * class BarError extends Error {}
59
59
  *
60
- * declare function someFunction(): Promise<ResultSuccess<string>>
60
+ * declare function someFunction(): Promise<string>
61
61
  *
62
62
  * const result = await someFunction()
63
+ * .then(success)
63
64
  * .catch(createCatcher(FooError))
64
65
  * .catch(createCatcher(BarError))
65
66
  *
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":";;AAMA,0BAEC;AAGD,0BAEC;AAGD,oCAEC;AAGD,oCAEC;AAsBD,4BAGC;AAyBD,sCAKC;AAzED,wBAAwB;AACxB,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC;AAED,wBAAwB;AACxB,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AAClC,CAAC;AAED,wBAAwB;AACxB,SAAgB,YAAY,CAAI,MAAwB;IACtD,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED,wBAAwB;AACxB,SAAgB,YAAY,CAAI,MAAwB;IACtD,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAwB;AACxB,SAAgB,QAAQ,CAAC,GAAY;IACnC,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;IAC7C,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,wBAAwB;AACxB,SAAgB,aAAa,CAAI,IAA+B;IAC9D,OAAO,CAAC,GAAY,EAAoB,EAAE;QACxC,IAAI,GAAG,YAAY,IAAI;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5C,MAAM,GAAG,CAAA;IACX,CAAC,CAAA;AACH,CAAC","sourcesContent":["export type ResultSuccess<V = any> = { success: true; value: V }\nexport type ResultFailure<E = Error> = { success: false; error: E }\n\nexport type Result<V = any, E = Error> = ResultSuccess<V> | ResultFailure<E>\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function success<V>(value: V): ResultSuccess<V> {\n return { success: true, value }\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function failure<E>(error: E): ResultFailure<E> {\n return { success: false, error }\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function failureError<T>(result: ResultFailure<T>): T {\n return result.error\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function successValue<T>(result: ResultSuccess<T>): T {\n return result.value\n}\n\n/**\n * Catches any error and wraps it in a {@link ResultFailure<Error>}.\n *\n * @param err - The error to catch.\n * @returns A {@link ResultFailure<Error>} containing the caught error.\n * @example\n *\n * ```ts\n * declare function someFunction(): Promise<ResultSuccess<string>>\n *\n * const result = await someFunction().catch(catchall)\n * if (result.success) {\n * console.log(result.value) // string\n * } else {\n * console.error(result.error instanceof Error) // true\n * console.error(result.error.message) // string\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function catchall(err: unknown): ResultFailure<Error> {\n if (err instanceof Error) return failure(err)\n return failure(new Error('Unknown error', { cause: err }))\n}\n\n/**\n * Creates a catcher function for the given constructor that wraps caught errors\n * in a {@link ResultFailure}.\n *\n * @example\n *\n * ```ts\n * class FooError extends Error {}\n * class BarError extends Error {}\n *\n * declare function someFunction(): Promise<ResultSuccess<string>>\n *\n * const result = await someFunction()\n * .catch(createCatcher(FooError))\n * .catch(createCatcher(BarError))\n *\n * if (result.success) {\n * console.log(result.value) // string\n * } else {\n * console.error(result.error) // FooError | BarError\n * }\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function createCatcher<T>(Ctor: new (...args: any[]) => T) {\n return (err: unknown): ResultFailure<T> => {\n if (err instanceof Ctor) return failure(err)\n throw err\n }\n}\n"]}
1
+ {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":";;AAMA,0BAEC;AAGD,0BAEC;AAGD,sCAEC;AAGD,oCAEC;AAsBD,4BAGC;AA0BD,sCAKC;AA1ED,wBAAwB;AACxB,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC;AAED,wBAAwB;AACxB,SAAgB,OAAO,CAAI,MAAS;IAClC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,CAAA;AACnC,CAAC;AAED,wBAAwB;AACxB,SAAgB,aAAa,CAAI,MAAwB;IACvD,OAAO,MAAM,CAAC,MAAM,CAAA;AACtB,CAAC;AAED,wBAAwB;AACxB,SAAgB,YAAY,CAAI,MAAwB;IACtD,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAwB;AACxB,SAAgB,QAAQ,CAAC,GAAY;IACnC,IAAI,GAAG,YAAY,KAAK;QAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;IAC7C,OAAO,OAAO,CAAC,IAAI,KAAK,CAAC,eAAe,EAAE,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC,CAAC,CAAA;AAC5D,CAAC;AAED;;;;;;;;;;;;;;;;;;;;;;GAsBG;AACH,wBAAwB;AACxB,SAAgB,aAAa,CAAI,IAA+B;IAC9D,OAAO,CAAC,GAAY,EAAoB,EAAE;QACxC,IAAI,GAAG,YAAY,IAAI;YAAE,OAAO,OAAO,CAAC,GAAG,CAAC,CAAA;QAC5C,MAAM,GAAG,CAAA;IACX,CAAC,CAAA;AACH,CAAC","sourcesContent":["export type ResultSuccess<V = any> = { success: true; value: V }\nexport type ResultFailure<E = Error> = { success: false; reason: E }\n\nexport type Result<V = any, E = Error> = ResultSuccess<V> | ResultFailure<E>\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function success<V>(value: V): ResultSuccess<V> {\n return { success: true, value }\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function failure<E>(reason: E): ResultFailure<E> {\n return { success: false, reason }\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function failureReason<T>(result: ResultFailure<T>): T {\n return result.reason\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function successValue<T>(result: ResultSuccess<T>): T {\n return result.value\n}\n\n/**\n * Catches any error and wraps it in a {@link ResultFailure<Error>}.\n *\n * @param err - The error to catch.\n * @returns A {@link ResultFailure<Error>} containing the caught error.\n * @example\n *\n * ```ts\n * declare function someFunction(): Promise<string>\n *\n * const result = await someFunction().then(success, catchall)\n * if (result.success) {\n * console.log(result.value) // string\n * } else {\n * console.error(result.error instanceof Error) // true\n * console.error(result.error.message) // string\n * }\n * ```\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function catchall(err: unknown): ResultFailure<Error> {\n if (err instanceof Error) return failure(err)\n return failure(new Error('Unknown error', { cause: err }))\n}\n\n/**\n * Creates a catcher function for the given constructor that wraps caught errors\n * in a {@link ResultFailure}.\n *\n * @example\n *\n * ```ts\n * class FooError extends Error {}\n * class BarError extends Error {}\n *\n * declare function someFunction(): Promise<string>\n *\n * const result = await someFunction()\n * .then(success)\n * .catch(createCatcher(FooError))\n * .catch(createCatcher(BarError))\n *\n * if (result.success) {\n * console.log(result.value) // string\n * } else {\n * console.error(result.error) // FooError | BarError\n * }\n */\n/*@__NO_SIDE_EFFECTS__*/\nexport function createCatcher<T>(Ctor: new (...args: any[]) => T) {\n return (err: unknown): ResultFailure<T> => {\n if (err instanceof Ctor) return failure(err)\n throw err\n }\n}\n"]}
@@ -1,10 +1,29 @@
1
1
  import { ValidationOptions, ValidationResult, Validator, ValidatorContext } from './validator.js';
2
- export declare abstract class Schema<Output> implements Validator<Output> {
3
- readonly ['_lex']: {
2
+ export declare abstract class Schema<Output = any> implements Validator<Output> {
3
+ readonly ['__lex']: {
4
4
  output: Output;
5
5
  };
6
6
  abstract validateInContext(input: unknown, ctx: ValidatorContext): ValidationResult<Output>;
7
+ /**
8
+ * @note use {@link check}() instead of {@link assert}() if you encounter a
9
+ * `ts(2775)` error and you are not able to fully type the validator. This
10
+ * will typically arise in generic contexts, where the narrowed type is not
11
+ * needed.
12
+ */
7
13
  assert(input: unknown): asserts input is Output;
14
+ /**
15
+ * Alias for {@link assert}(). Most useful in generic contexts where the
16
+ * validator is not exactly typed, allowing to avoid "_Assertions require
17
+ * every name in the call target to be declared with an explicit type
18
+ * annotation. ts(2775)_" errors.
19
+ */
20
+ check(input: unknown): void;
21
+ /**
22
+ * Casts the input (by validating it) to the output type if it matches the
23
+ * schema, otherwise throws. This is the same as calling {@link parse}() with
24
+ * `allowTransform: false`.
25
+ */
26
+ cast<I>(input: I): I & Output;
8
27
  matches(input: unknown): input is Output;
9
28
  ifMatches<I>(input: I): (I & Output) | undefined;
10
29
  parse<I>(input: I, options: ValidationOptions & {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EACjB,gBAAgB,EAChB,SAAS,EACT,gBAAgB,EACjB,MAAM,gBAAgB,CAAA;AAEvB,8BAAsB,MAAM,CAAC,MAAM,GAAG,GAAG,CAAE,YAAW,SAAS,CAAC,MAAM,CAAC;IACrE,SAAiB,CAAC,OAAO,CAAC,EAAE;QAAE,MAAM,EAAE,MAAM,CAAA;KAAE,CAAA;IAE9C,QAAQ,CAAC,iBAAiB,CACxB,KAAK,EAAE,OAAO,EACd,GAAG,EAAE,gBAAgB,GACpB,gBAAgB,CAAC,MAAM,CAAC;IAE3B;;;;;OAKG;IACH,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM;IAK/C;;;;;OAKG;IACH,KAAK,CAAC,KAAK,EAAE,OAAO,GAAG,IAAI;IAI3B;;;;OAIG;IACH,IAAI,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,GAAG,MAAM;IAI7B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;IAKxC,SAAS,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS;IAIhD,KAAK,CAAC,CAAC,EACL,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,iBAAiB,GAAG;QAAE,cAAc,EAAE,KAAK,CAAA;KAAE,GACrD,CAAC,GAAG,MAAM;IACb,KAAK,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAO1D,SAAS,CAAC,CAAC,EACT,KAAK,EAAE,CAAC,EACR,OAAO,EAAE,iBAAiB,GAAG;QAAE,cAAc,EAAE,KAAK,CAAA;KAAE,GACrD,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC;IAC/B,SAAS,CACP,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,MAAM,CAAC;IAsB3B,OAAO,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,KAAK,IAAI,MAAM;IAIhD,QAAQ,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,MAAM;IAIzC,UAAU,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,CAAC,CAAC,GAAG,MAAM,CAAC,GAAG,SAAS;IAIjD,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,MAAM;IAI3D,UAAU,CACR,KAAK,EAAE,OAAO,EACd,OAAO,CAAC,EAAE,iBAAiB,GAC1B,gBAAgB,CAAC,MAAM,CAAC;CAG5B"}
@@ -3,10 +3,33 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.Schema = void 0;
4
4
  const validator_js_1 = require("./validator.js");
5
5
  class Schema {
6
+ /**
7
+ * @note use {@link check}() instead of {@link assert}() if you encounter a
8
+ * `ts(2775)` error and you are not able to fully type the validator. This
9
+ * will typically arise in generic contexts, where the narrowed type is not
10
+ * needed.
11
+ */
6
12
  assert(input) {
7
13
  const result = this.safeParse(input, { allowTransform: false });
8
14
  if (!result.success)
9
- throw result.error;
15
+ throw result.reason;
16
+ }
17
+ /**
18
+ * Alias for {@link assert}(). Most useful in generic contexts where the
19
+ * validator is not exactly typed, allowing to avoid "_Assertions require
20
+ * every name in the call target to be declared with an explicit type
21
+ * annotation. ts(2775)_" errors.
22
+ */
23
+ check(input) {
24
+ this.assert(input);
25
+ }
26
+ /**
27
+ * Casts the input (by validating it) to the output type if it matches the
28
+ * schema, otherwise throws. This is the same as calling {@link parse}() with
29
+ * `allowTransform: false`.
30
+ */
31
+ cast(input) {
32
+ return this.parse(input, { allowTransform: false });
10
33
  }
11
34
  matches(input) {
12
35
  const result = this.safeParse(input, { allowTransform: false });
@@ -18,7 +41,7 @@ class Schema {
18
41
  parse(input, options) {
19
42
  const result = this.safeParse(input, options);
20
43
  if (!result.success)
21
- throw result.error;
44
+ throw result.reason;
22
45
  return result.value;
23
46
  }
24
47
  safeParse(input, options) {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/core/schema.ts"],"names":[],"mappings":";;;AAAA,iDAKuB;AAEvB,MAAsB,MAAM;IAQ1B;;;;;OAKG;IACH,MAAM,CAAC,KAAc;QACnB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,MAAM,CAAA;IAC1C,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,KAAc;QAClB,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IACpB,CAAC;IAED;;;;OAIG;IACH,IAAI,CAAI,KAAQ;QACd,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA;IACrD,CAAC;IAED,OAAO,CAAC,KAAc;QACpB,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,EAAE,cAAc,EAAE,KAAK,EAAE,CAAC,CAAA;QAC/D,OAAO,MAAM,CAAC,OAAO,CAAA;IACvB,CAAC;IAED,SAAS,CAAI,KAAQ;QACnB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,SAAS,CAAA;IAChD,CAAC;IAOD,KAAK,CAAC,KAAc,EAAE,OAA2B;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;QAC7C,IAAI,CAAC,MAAM,CAAC,OAAO;YAAE,MAAM,MAAM,CAAC,MAAM,CAAA;QACxC,OAAO,MAAM,CAAC,KAAK,CAAA;IACrB,CAAC;IAUD,SAAS,CACP,KAAc,EACd,OAA2B;QAE3B,OAAO,+BAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,CAAA;IACxD,CAAC;IAED,yEAAyE;IACzE,4EAA4E;IAC5E,6EAA6E;IAC7E,iEAAiE;IACjE,uEAAuE;IACvE,wEAAwE;IACxE,8EAA8E;IAC9E,2EAA2E;IAC3E,6EAA6E;IAC7E,+DAA+D;IAC/D,EAAE;IACF,wFAAwF;IACxF,qGAAqG;IAErG,OAAO,CAAC,KAAc;QACpB,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;IAC3B,CAAC;IAED,QAAQ,CAAC,KAAc;QACrB,OAAO,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IAED,UAAU,CAAI,KAAQ;QACpB,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAA;IAC9B,CAAC;IAED,MAAM,CAAC,KAAc,EAAE,OAA2B;QAChD,OAAO,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACnC,CAAC;IAED,UAAU,CACR,KAAc,EACd,OAA2B;QAE3B,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,CAAC,CAAA;IACvC,CAAC;CACF;AA7GD,wBA6GC","sourcesContent":["import {\n ValidationOptions,\n ValidationResult,\n Validator,\n ValidatorContext,\n} from './validator.js'\n\nexport abstract class Schema<Output = any> implements Validator<Output> {\n declare readonly ['__lex']: { output: Output }\n\n abstract validateInContext(\n input: unknown,\n ctx: ValidatorContext,\n ): ValidationResult<Output>\n\n /**\n * @note use {@link check}() instead of {@link assert}() if you encounter a\n * `ts(2775)` error and you are not able to fully type the validator. This\n * will typically arise in generic contexts, where the narrowed type is not\n * needed.\n */\n assert(input: unknown): asserts input is Output {\n const result = this.safeParse(input, { allowTransform: false })\n if (!result.success) throw result.reason\n }\n\n /**\n * Alias for {@link assert}(). Most useful in generic contexts where the\n * validator is not exactly typed, allowing to avoid \"_Assertions require\n * every name in the call target to be declared with an explicit type\n * annotation. ts(2775)_\" errors.\n */\n check(input: unknown): void {\n this.assert(input)\n }\n\n /**\n * Casts the input (by validating it) to the output type if it matches the\n * schema, otherwise throws. This is the same as calling {@link parse}() with\n * `allowTransform: false`.\n */\n cast<I>(input: I): I & Output {\n return this.parse(input, { allowTransform: false })\n }\n\n matches(input: unknown): input is Output {\n const result = this.safeParse(input, { allowTransform: false })\n return result.success\n }\n\n ifMatches<I>(input: I): (I & Output) | undefined {\n return this.matches(input) ? input : undefined\n }\n\n parse<I>(\n input: I,\n options: ValidationOptions & { allowTransform: false },\n ): I & Output\n parse(input: unknown, options?: ValidationOptions): Output\n parse(input: unknown, options?: ValidationOptions): Output {\n const result = this.safeParse(input, options)\n if (!result.success) throw result.reason\n return result.value\n }\n\n safeParse<I>(\n input: I,\n options: ValidationOptions & { allowTransform: false },\n ): ValidationResult<I & Output>\n safeParse(\n input: unknown,\n options?: ValidationOptions,\n ): ValidationResult<Output>\n safeParse(\n input: unknown,\n options?: ValidationOptions,\n ): ValidationResult<Output> {\n return ValidatorContext.validate(input, this, options)\n }\n\n // @NOTE The built lexicons namespaces will export utility functions that\n // allow accessing the schema's methods without the need to specify \".main.\"\n // as part of the namespace. This way, a utility for a particular record type\n // can be called like \"app.bsky.feed.post.<utility>()\" instead of\n // \"app.bsky.feed.post.main.<utility>()\". Because those utilities could\n // conflict with other schemas (e.g. if there is a lexicon definition at\n // \"#<utility>\"), those exported utilities will be prefixed with \"$\". In order\n // to be able to consistently call the utilities, when using the \"main\" and\n // non \"main\" definitions, we also expose the same methods with a \"$\" prefix.\n // Thanks to this, both of the following call will be possible:\n //\n // - \"app.bsky.feed.post.$parse(...)\" // calls a utility function created by \"lex build\"\n // - \"app.bsky.feed.defs.postView.$parse(...)\" // uses the alias defined below on the schema instance\n\n $assert(input: unknown): asserts input is Output {\n return this.assert(input)\n }\n\n $matches(input: unknown): input is Output {\n return this.matches(input)\n }\n\n $ifMatches<I>(input: I): (I & Output) | undefined {\n return this.ifMatches(input)\n }\n\n $parse(input: unknown, options?: ValidationOptions): Output {\n return this.parse(input, options)\n }\n\n $safeParse(\n input: unknown,\n options?: ValidationOptions,\n ): ValidationResult<Output> {\n return this.safeParse(input, options)\n }\n}\n"]}
@@ -1,32 +1,43 @@
1
+ import { isLanguageString } from '@atproto/lex-data';
1
2
  import { AtIdentifierString, AtUriString, DatetimeString, DidString, HandleString, NsidString, RecordKeyString, TidString } from '@atproto/syntax';
2
- type AssertFn<T> = <I extends string>(input: I) => asserts input is I & T;
3
- type CastFn<T> = <I extends string>(input: I) => I & T;
4
- export type { AtIdentifierString, AtUriString, DatetimeString, DidString, HandleString, NsidString, RecordKeyString, TidString, };
5
- export declare const assertDid: AssertFn<DidString>;
6
- export declare const assertAtUri: AssertFn<AtUriString>;
7
- export declare const assertAtIdentifier: AssertFn<AtIdentifierString>;
8
- export declare const assertNsid: AssertFn<NsidString>;
9
- export declare const assertTid: AssertFn<TidString>;
10
- export declare const assertRecordKey: AssertFn<RecordKeyString>;
11
- export declare const assertDatetime: AssertFn<DatetimeString>;
12
- export declare const assertCidString: AssertFn<string>;
13
- export declare const assertHandle: AssertFn<HandleString>;
3
+ import { AssertFn, CastFn, CheckFn } from '../util/assertion-util.js';
14
4
  export type CidString = string;
15
- export type UriString = `${string}:${string}`;
16
5
  export type LanguageString = string;
17
- export declare function assertUri(input: string): asserts input is UriString;
18
- export declare function assertLanguage(input: string): asserts input is LanguageString;
19
- export declare const asDid: CastFn<DidString>;
20
- export declare const asAtUri: CastFn<AtUriString>;
21
- export declare const asNsid: CastFn<NsidString>;
22
- export declare const asTid: CastFn<TidString>;
23
- export declare const asRecordKey: CastFn<RecordKeyString>;
24
- export declare const asDatetime: CastFn<DatetimeString>;
25
- export declare const asCidString: CastFn<string>;
26
- export declare const asHandle: CastFn<HandleString>;
27
- export declare const asUri: CastFn<UriString>;
28
- export declare const asLanguage: CastFn<LanguageString>;
29
- export declare const asAtIdentifier: CastFn<AtIdentifierString>;
6
+ export type UriString = `${string}:${string}`;
7
+ export declare function isUriString<T extends string>(input: T): input is T & UriString;
8
+ export type { AtIdentifierString, AtUriString, DatetimeString, DidString, HandleString, NsidString, RecordKeyString, TidString, } from '@atproto/syntax';
9
+ export declare const assertAtIdentifierString: AssertFn<AtIdentifierString>;
10
+ export declare const assertAtUriString: AssertFn<AtUriString>;
11
+ export declare const assertCidString: AssertFn<CidString>;
12
+ export declare const assertDatetimeString: AssertFn<DatetimeString>;
13
+ export declare const assertDidString: AssertFn<DidString>;
14
+ export declare const assertHandleString: AssertFn<HandleString>;
15
+ export declare const assertLanguageString: AssertFn<LanguageString>;
16
+ export declare const assertNsidString: AssertFn<NsidString>;
17
+ export declare const assertRecordKeyString: AssertFn<RecordKeyString>;
18
+ export declare const assertTidString: AssertFn<TidString>;
19
+ export declare const assertUriString: AssertFn<UriString>;
20
+ export declare const asAtIdentifierString: CastFn<AtIdentifierString>;
21
+ export declare const asAtUriString: CastFn<AtUriString>;
22
+ export declare const asCidString: CastFn<CidString>;
23
+ export declare const asDatetimeString: CastFn<DatetimeString>;
24
+ export declare const asDidString: CastFn<DidString>;
25
+ export declare const asHandleString: CastFn<HandleString>;
26
+ export declare const asLanguageString: CastFn<LanguageString>;
27
+ export declare const asNsidString: CastFn<NsidString>;
28
+ export declare const asRecordKeyString: CastFn<RecordKeyString>;
29
+ export declare const asTidString: CastFn<TidString>;
30
+ export declare const asUriString: CastFn<UriString>;
31
+ export { isLanguageString };
32
+ export declare const isAtIdentifierString: CheckFn<AtIdentifierString>;
33
+ export declare const isAtUriString: CheckFn<AtUriString>;
34
+ export declare const isCidString: CheckFn<CidString>;
35
+ export declare const isDatetimeString: CheckFn<DatetimeString>;
36
+ export declare const isDidString: CheckFn<DidString>;
37
+ export declare const isHandleString: CheckFn<HandleString>;
38
+ export declare const isNsidString: CheckFn<NsidString>;
39
+ export declare const isRecordKeyString: CheckFn<RecordKeyString>;
40
+ export declare const isTidString: CheckFn<TidString>;
30
41
  export declare const STRING_FORMATS: readonly ["datetime", "uri", "at-uri", "did", "handle", "at-identifier", "nsid", "cid", "language", "tid", "record-key"];
31
42
  export type StringFormat = (typeof STRING_FORMATS)[number];
32
43
  export type InferStringFormat<F> = F extends 'datetime' ? DatetimeString : F extends 'uri' ? UriString : F extends 'at-uri' ? AtUriString : F extends 'did' ? DidString : F extends 'handle' ? HandleString : F extends 'at-identifier' ? AtIdentifierString : F extends 'nsid' ? NsidString : string;
@@ -1 +1 @@
1
- {"version":3,"file":"string-format.d.ts","sourceRoot":"","sources":["../../src/core/string-format.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"string-format.d.ts","sourceRoot":"","sources":["../../src/core/string-format.ts"],"names":[],"mappings":"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"}
@@ -1,61 +1,68 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.STRING_FORMATS = exports.asAtIdentifier = exports.asLanguage = exports.asUri = exports.asHandle = exports.asCidString = exports.asDatetime = exports.asRecordKey = exports.asTid = exports.asNsid = exports.asAtUri = exports.asDid = exports.assertHandle = exports.assertCidString = exports.assertDatetime = exports.assertRecordKey = exports.assertTid = exports.assertNsid = exports.assertAtIdentifier = exports.assertAtUri = exports.assertDid = void 0;
4
- exports.assertUri = assertUri;
5
- exports.assertLanguage = assertLanguage;
3
+ exports.STRING_FORMATS = exports.isTidString = exports.isRecordKeyString = exports.isNsidString = exports.isHandleString = exports.isDidString = exports.isDatetimeString = exports.isCidString = exports.isAtUriString = exports.isAtIdentifierString = exports.isLanguageString = exports.asUriString = exports.asTidString = exports.asRecordKeyString = exports.asNsidString = exports.asLanguageString = exports.asHandleString = exports.asDidString = exports.asDatetimeString = exports.asCidString = exports.asAtUriString = exports.asAtIdentifierString = exports.assertUriString = exports.assertTidString = exports.assertRecordKeyString = exports.assertNsidString = exports.assertLanguageString = exports.assertHandleString = exports.assertDidString = exports.assertDatetimeString = exports.assertCidString = exports.assertAtUriString = exports.assertAtIdentifierString = void 0;
4
+ exports.isUriString = isUriString;
6
5
  exports.assertStringFormat = assertStringFormat;
7
6
  const lex_data_1 = require("@atproto/lex-data");
7
+ Object.defineProperty(exports, "isLanguageString", { enumerable: true, get: function () { return lex_data_1.isLanguageString; } });
8
8
  const syntax_1 = require("@atproto/syntax");
9
+ const assertion_util_js_1 = require("../util/assertion-util.js");
9
10
  /*@__NO_SIDE_EFFECTS__*/
10
- function createCastFunction(assertFn) {
11
- return (input) => {
12
- assertFn(input);
13
- return input;
14
- };
11
+ function isUriString(input) {
12
+ return /^\w+:(?:\/\/)?[^\s/][^\s]*$/.test(input);
15
13
  }
16
- exports.assertDid = syntax_1.ensureValidDid;
17
- exports.assertAtUri = syntax_1.ensureValidAtUri;
18
- exports.assertAtIdentifier = syntax_1.ensureValidAtIdentifier;
19
- exports.assertNsid = syntax_1.ensureValidNsid;
20
- exports.assertTid = syntax_1.ensureValidTid;
21
- exports.assertRecordKey = syntax_1.ensureValidRecordKey;
22
- exports.assertDatetime = syntax_1.ensureValidDatetime;
14
+ // Export utilities for formats missing from @atproto/syntax
15
+ exports.assertAtIdentifierString = syntax_1.ensureValidAtIdentifier;
16
+ exports.assertAtUriString = syntax_1.ensureValidAtUri;
23
17
  exports.assertCidString = lex_data_1.ensureValidCidString;
24
- exports.assertHandle = syntax_1.ensureValidHandle;
25
- /*@__NO_SIDE_EFFECTS__*/
26
- function assertUri(input) {
27
- if (!/^\w+:(?:\/\/)?[^\s/][^\s]*$/.test(input)) {
28
- throw new Error('Invalid URI');
29
- }
30
- }
31
- /*@__NO_SIDE_EFFECTS__*/
32
- function assertLanguage(input) {
33
- if (!(0, lex_data_1.isLanguage)(input)) {
34
- throw new Error('Invalid BCP 47 string');
35
- }
36
- }
37
- exports.asDid =
38
- /*#__PURE__*/ createCastFunction(syntax_1.ensureValidDid);
39
- exports.asAtUri =
40
- /*#__PURE__*/ createCastFunction(syntax_1.ensureValidAtUri);
41
- exports.asNsid =
42
- /*#__PURE__*/ createCastFunction(syntax_1.ensureValidNsid);
43
- exports.asTid =
44
- /*#__PURE__*/ createCastFunction(syntax_1.ensureValidTid);
45
- exports.asRecordKey =
46
- /*#__PURE__*/ createCastFunction(syntax_1.ensureValidRecordKey);
47
- exports.asDatetime =
48
- /*#__PURE__*/ createCastFunction(syntax_1.ensureValidDatetime);
18
+ exports.assertDatetimeString = syntax_1.ensureValidDatetime;
19
+ exports.assertDidString = syntax_1.ensureValidDid;
20
+ exports.assertHandleString = syntax_1.ensureValidHandle;
21
+ exports.assertLanguageString = (0, assertion_util_js_1.createAssertFunction)(lex_data_1.isLanguageString, 'Invalid BCP 47 string');
22
+ exports.assertNsidString = syntax_1.ensureValidNsid;
23
+ exports.assertRecordKeyString = syntax_1.ensureValidRecordKey;
24
+ exports.assertTidString = syntax_1.ensureValidTid;
25
+ exports.assertUriString = (0, assertion_util_js_1.createAssertFunction)(isUriString, 'Invalid URI');
26
+ exports.asAtIdentifierString =
27
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(exports.assertAtIdentifierString);
28
+ exports.asAtUriString =
29
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(syntax_1.ensureValidAtUri);
49
30
  exports.asCidString =
50
- /*#__PURE__*/ createCastFunction(lex_data_1.ensureValidCidString);
51
- exports.asHandle =
52
- /*#__PURE__*/ createCastFunction(syntax_1.ensureValidHandle);
53
- exports.asUri =
54
- /*#__PURE__*/ createCastFunction(assertUri);
55
- exports.asLanguage =
56
- /*#__PURE__*/ createCastFunction(assertLanguage);
57
- exports.asAtIdentifier =
58
- /*#__PURE__*/ createCastFunction(exports.assertAtIdentifier);
31
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(lex_data_1.ensureValidCidString);
32
+ exports.asDatetimeString =
33
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(syntax_1.ensureValidDatetime);
34
+ exports.asDidString =
35
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(syntax_1.ensureValidDid);
36
+ exports.asHandleString =
37
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(syntax_1.ensureValidHandle);
38
+ exports.asLanguageString =
39
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(exports.assertLanguageString);
40
+ exports.asNsidString =
41
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(syntax_1.ensureValidNsid);
42
+ exports.asRecordKeyString =
43
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(syntax_1.ensureValidRecordKey);
44
+ exports.asTidString =
45
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(syntax_1.ensureValidTid);
46
+ exports.asUriString =
47
+ /*#__PURE__*/ (0, assertion_util_js_1.createCastFunction)(exports.assertUriString);
48
+ exports.isAtIdentifierString =
49
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertAtIdentifierString);
50
+ exports.isAtUriString =
51
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertAtIdentifierString);
52
+ exports.isCidString =
53
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertCidString);
54
+ exports.isDatetimeString =
55
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertDatetimeString);
56
+ exports.isDidString =
57
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertDidString);
58
+ exports.isHandleString =
59
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertHandleString);
60
+ exports.isNsidString =
61
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertNsidString);
62
+ exports.isRecordKeyString =
63
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertRecordKeyString);
64
+ exports.isTidString =
65
+ /*#__PURE__*/ (0, assertion_util_js_1.createCheckFunction)(exports.assertTidString);
59
66
  // String formatting types and utilities
60
67
  exports.STRING_FORMATS = Object.freeze([
61
68
  'datetime',
@@ -71,17 +78,17 @@ exports.STRING_FORMATS = Object.freeze([
71
78
  'record-key',
72
79
  ]);
73
80
  const formatters = /*#__PURE__*/ new Map([
74
- ['datetime', exports.assertDatetime],
75
- ['uri', assertUri],
76
- ['at-uri', exports.assertAtUri],
77
- ['did', exports.assertDid],
78
- ['handle', exports.assertHandle],
79
- ['at-identifier', exports.assertAtIdentifier],
80
- ['nsid', exports.assertNsid],
81
+ ['at-identifier', exports.assertAtIdentifierString],
82
+ ['at-uri', exports.assertAtUriString],
81
83
  ['cid', exports.assertCidString],
82
- ['language', assertLanguage],
83
- ['tid', exports.assertTid],
84
- ['record-key', exports.assertRecordKey],
84
+ ['datetime', exports.assertDatetimeString],
85
+ ['did', exports.assertDidString],
86
+ ['handle', exports.assertHandleString],
87
+ ['language', exports.assertLanguageString],
88
+ ['nsid', exports.assertNsidString],
89
+ ['record-key', exports.assertRecordKeyString],
90
+ ['tid', exports.assertTidString],
91
+ ['uri', exports.assertUriString],
85
92
  ]);
86
93
  /*@__NO_SIDE_EFFECTS__*/
87
94
  function assertStringFormat(input, format) {