@atproto/lex-schema 0.0.2 → 0.0.4

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 (289) hide show
  1. package/CHANGELOG.md +75 -0
  2. package/dist/core/$type.d.ts +6 -3
  3. package/dist/core/$type.d.ts.map +1 -1
  4. package/dist/core/$type.js +1 -0
  5. package/dist/core/$type.js.map +1 -1
  6. package/dist/core/record-key.d.ts +3 -3
  7. package/dist/core/record-key.d.ts.map +1 -1
  8. package/dist/core/record-key.js +12 -6
  9. package/dist/core/record-key.js.map +1 -1
  10. package/dist/core/result.d.ts.map +1 -1
  11. package/dist/core/result.js +6 -0
  12. package/dist/core/result.js.map +1 -1
  13. package/dist/core/string-format.d.ts +30 -27
  14. package/dist/core/string-format.d.ts.map +1 -1
  15. package/dist/core/string-format.js +56 -42
  16. package/dist/core/string-format.js.map +1 -1
  17. package/dist/core/types.d.ts +9 -1
  18. package/dist/core/types.d.ts.map +1 -1
  19. package/dist/core/types.js.map +1 -1
  20. package/dist/external.d.ts +31 -28
  21. package/dist/external.d.ts.map +1 -1
  22. package/dist/external.js +33 -17
  23. package/dist/external.js.map +1 -1
  24. package/dist/schema/_parameters.d.ts +2 -2
  25. package/dist/schema/_parameters.d.ts.map +1 -1
  26. package/dist/schema/array.d.ts +5 -6
  27. package/dist/schema/array.d.ts.map +1 -1
  28. package/dist/schema/array.js +5 -6
  29. package/dist/schema/array.js.map +1 -1
  30. package/dist/schema/blob.d.ts +2 -3
  31. package/dist/schema/blob.d.ts.map +1 -1
  32. package/dist/schema/blob.js +1 -2
  33. package/dist/schema/blob.js.map +1 -1
  34. package/dist/schema/boolean.d.ts +4 -5
  35. package/dist/schema/boolean.d.ts.map +1 -1
  36. package/dist/schema/boolean.js +2 -3
  37. package/dist/schema/boolean.js.map +1 -1
  38. package/dist/schema/bytes.d.ts +3 -4
  39. package/dist/schema/bytes.d.ts.map +1 -1
  40. package/dist/schema/bytes.js +2 -3
  41. package/dist/schema/bytes.js.map +1 -1
  42. package/dist/schema/cid.d.ts +13 -6
  43. package/dist/schema/cid.d.ts.map +1 -1
  44. package/dist/schema/cid.js +2 -4
  45. package/dist/schema/cid.js.map +1 -1
  46. package/dist/schema/custom.d.ts +3 -4
  47. package/dist/schema/custom.d.ts.map +1 -1
  48. package/dist/schema/custom.js +4 -3
  49. package/dist/schema/custom.js.map +1 -1
  50. package/dist/schema/dict.d.ts +3 -3
  51. package/dist/schema/dict.d.ts.map +1 -1
  52. package/dist/schema/dict.js +1 -1
  53. package/dist/schema/dict.js.map +1 -1
  54. package/dist/schema/discriminated-union.d.ts +15 -24
  55. package/dist/schema/discriminated-union.d.ts.map +1 -1
  56. package/dist/schema/discriminated-union.js +40 -64
  57. package/dist/schema/discriminated-union.js.map +1 -1
  58. package/dist/schema/enum.d.ts +8 -4
  59. package/dist/schema/enum.d.ts.map +1 -1
  60. package/dist/schema/enum.js +5 -3
  61. package/dist/schema/enum.js.map +1 -1
  62. package/dist/schema/integer.d.ts +3 -4
  63. package/dist/schema/integer.d.ts.map +1 -1
  64. package/dist/schema/integer.js +3 -4
  65. package/dist/schema/integer.js.map +1 -1
  66. package/dist/schema/intersection.d.ts +22 -14
  67. package/dist/schema/intersection.d.ts.map +1 -1
  68. package/dist/schema/intersection.js +12 -22
  69. package/dist/schema/intersection.js.map +1 -1
  70. package/dist/schema/literal.d.ts +7 -3
  71. package/dist/schema/literal.d.ts.map +1 -1
  72. package/dist/schema/literal.js +5 -3
  73. package/dist/schema/literal.js.map +1 -1
  74. package/dist/schema/never.d.ts +2 -2
  75. package/dist/schema/never.d.ts.map +1 -1
  76. package/dist/schema/never.js +1 -1
  77. package/dist/schema/never.js.map +1 -1
  78. package/dist/schema/null.d.ts +2 -3
  79. package/dist/schema/null.d.ts.map +1 -1
  80. package/dist/schema/null.js +1 -2
  81. package/dist/schema/null.js.map +1 -1
  82. package/dist/schema/nullable.d.ts +7 -0
  83. package/dist/schema/nullable.d.ts.map +1 -0
  84. package/dist/schema/nullable.js +19 -0
  85. package/dist/schema/nullable.js.map +1 -0
  86. package/dist/schema/object.d.ts +10 -44
  87. package/dist/schema/object.d.ts.map +1 -1
  88. package/dist/schema/object.js +10 -46
  89. package/dist/schema/object.js.map +1 -1
  90. package/dist/schema/optional.d.ts +7 -0
  91. package/dist/schema/optional.d.ts.map +1 -0
  92. package/dist/schema/optional.js +25 -0
  93. package/dist/schema/optional.js.map +1 -0
  94. package/dist/schema/params.d.ts +14 -19
  95. package/dist/schema/params.d.ts.map +1 -1
  96. package/dist/schema/params.js +10 -24
  97. package/dist/schema/params.js.map +1 -1
  98. package/dist/schema/payload.d.ts +4 -4
  99. package/dist/schema/payload.d.ts.map +1 -1
  100. package/dist/schema/payload.js.map +1 -1
  101. package/dist/schema/permission-set.d.ts +6 -6
  102. package/dist/schema/permission-set.d.ts.map +1 -1
  103. package/dist/schema/permission-set.js +1 -2
  104. package/dist/schema/permission-set.js.map +1 -1
  105. package/dist/schema/permission.d.ts +0 -1
  106. package/dist/schema/permission.d.ts.map +1 -1
  107. package/dist/schema/permission.js +0 -1
  108. package/dist/schema/permission.js.map +1 -1
  109. package/dist/schema/procedure.d.ts +8 -9
  110. package/dist/schema/procedure.d.ts.map +1 -1
  111. package/dist/schema/procedure.js +0 -1
  112. package/dist/schema/procedure.js.map +1 -1
  113. package/dist/schema/query.d.ts +7 -8
  114. package/dist/schema/query.d.ts.map +1 -1
  115. package/dist/schema/query.js +0 -1
  116. package/dist/schema/query.js.map +1 -1
  117. package/dist/schema/record.d.ts +34 -28
  118. package/dist/schema/record.d.ts.map +1 -1
  119. package/dist/schema/record.js +1 -2
  120. package/dist/schema/record.js.map +1 -1
  121. package/dist/schema/ref.d.ts +2 -3
  122. package/dist/schema/ref.d.ts.map +1 -1
  123. package/dist/schema/ref.js +1 -2
  124. package/dist/schema/ref.js.map +1 -1
  125. package/dist/schema/refine.d.ts +18 -0
  126. package/dist/schema/refine.d.ts.map +1 -0
  127. package/dist/schema/refine.js +33 -0
  128. package/dist/schema/refine.js.map +1 -0
  129. package/dist/schema/regexp.d.ts +7 -0
  130. package/dist/schema/regexp.d.ts.map +1 -0
  131. package/dist/schema/regexp.js +22 -0
  132. package/dist/schema/regexp.js.map +1 -0
  133. package/dist/schema/string.d.ts +4 -8
  134. package/dist/schema/string.d.ts.map +1 -1
  135. package/dist/schema/string.js +6 -3
  136. package/dist/schema/string.js.map +1 -1
  137. package/dist/schema/subscription.d.ts +7 -6
  138. package/dist/schema/subscription.d.ts.map +1 -1
  139. package/dist/schema/subscription.js.map +1 -1
  140. package/dist/schema/token.d.ts +2 -3
  141. package/dist/schema/token.d.ts.map +1 -1
  142. package/dist/schema/token.js +1 -2
  143. package/dist/schema/token.js.map +1 -1
  144. package/dist/schema/typed-object.d.ts +29 -27
  145. package/dist/schema/typed-object.d.ts.map +1 -1
  146. package/dist/schema/typed-object.js +1 -2
  147. package/dist/schema/typed-object.js.map +1 -1
  148. package/dist/schema/typed-ref.d.ts +2 -2
  149. package/dist/schema/typed-ref.d.ts.map +1 -1
  150. package/dist/schema/typed-ref.js +1 -1
  151. package/dist/schema/typed-ref.js.map +1 -1
  152. package/dist/schema/typed-union.d.ts +3 -4
  153. package/dist/schema/typed-union.d.ts.map +1 -1
  154. package/dist/schema/typed-union.js +3 -10
  155. package/dist/schema/typed-union.js.map +1 -1
  156. package/dist/schema/union.d.ts +2 -2
  157. package/dist/schema/union.d.ts.map +1 -1
  158. package/dist/schema/union.js +1 -1
  159. package/dist/schema/union.js.map +1 -1
  160. package/dist/schema/unknown-object.d.ts +2 -3
  161. package/dist/schema/unknown-object.d.ts.map +1 -1
  162. package/dist/schema/unknown-object.js +1 -2
  163. package/dist/schema/unknown-object.js.map +1 -1
  164. package/dist/schema/unknown.d.ts +2 -2
  165. package/dist/schema/unknown.d.ts.map +1 -1
  166. package/dist/schema/unknown.js +1 -1
  167. package/dist/schema/unknown.js.map +1 -1
  168. package/dist/schema.d.ts +4 -0
  169. package/dist/schema.d.ts.map +1 -1
  170. package/dist/schema.js +6 -1
  171. package/dist/schema.js.map +1 -1
  172. package/dist/util/array-agg.d.ts.map +1 -1
  173. package/dist/util/array-agg.js +1 -0
  174. package/dist/util/array-agg.js.map +1 -1
  175. package/dist/util/lazy-property.d.ts +2 -0
  176. package/dist/util/lazy-property.d.ts.map +1 -0
  177. package/dist/util/lazy-property.js +14 -0
  178. package/dist/util/lazy-property.js.map +1 -0
  179. package/dist/validation/schema.d.ts +24 -0
  180. package/dist/validation/schema.d.ts.map +1 -0
  181. package/dist/validation/schema.js +57 -0
  182. package/dist/validation/schema.js.map +1 -0
  183. package/dist/validation/validation-error.d.ts +3 -3
  184. package/dist/validation/validation-error.d.ts.map +1 -1
  185. package/dist/validation/validation-error.js +32 -4
  186. package/dist/validation/validation-error.js.map +1 -1
  187. package/dist/validation/validation-issue.d.ts +32 -24
  188. package/dist/validation/validation-issue.d.ts.map +1 -1
  189. package/dist/validation/validation-issue.js +136 -92
  190. package/dist/validation/validation-issue.js.map +1 -1
  191. package/dist/validation/validator.d.ts +20 -50
  192. package/dist/validation/validator.d.ts.map +1 -1
  193. package/dist/validation/validator.js +40 -134
  194. package/dist/validation/validator.js.map +1 -1
  195. package/dist/validation.d.ts +1 -0
  196. package/dist/validation.d.ts.map +1 -1
  197. package/dist/validation.js +1 -0
  198. package/dist/validation.js.map +1 -1
  199. package/package.json +8 -4
  200. package/src/core/$type.ts +7 -4
  201. package/src/core/record-key.ts +12 -5
  202. package/src/core/result.ts +6 -0
  203. package/src/core/string-format.ts +97 -61
  204. package/src/core/types.ts +12 -6
  205. package/src/external.ts +92 -70
  206. package/src/schema/_parameters.test.ts +416 -0
  207. package/src/schema/array.test.ts +237 -0
  208. package/src/schema/array.ts +17 -11
  209. package/src/schema/blob.test.ts +506 -0
  210. package/src/schema/blob.ts +3 -5
  211. package/src/schema/boolean.test.ts +116 -0
  212. package/src/schema/boolean.ts +5 -7
  213. package/src/schema/bytes.test.ts +226 -0
  214. package/src/schema/bytes.ts +4 -6
  215. package/src/schema/cid.test.ts +155 -0
  216. package/src/schema/cid.ts +14 -8
  217. package/src/schema/custom.test.ts +413 -0
  218. package/src/schema/custom.ts +10 -8
  219. package/src/schema/dict.test.ts +198 -0
  220. package/src/schema/dict.ts +6 -8
  221. package/src/schema/discriminated-union.test.ts +675 -0
  222. package/src/schema/discriminated-union.ts +68 -95
  223. package/src/schema/enum.test.ts +396 -0
  224. package/src/schema/enum.ts +12 -5
  225. package/src/schema/integer.test.ts +312 -0
  226. package/src/schema/integer.ts +5 -7
  227. package/src/schema/intersection.test.ts +32 -0
  228. package/src/schema/intersection.ts +37 -40
  229. package/src/schema/literal.test.ts +531 -0
  230. package/src/schema/literal.ts +12 -5
  231. package/src/schema/never.test.ts +174 -0
  232. package/src/schema/never.ts +3 -10
  233. package/src/schema/null.test.ts +79 -0
  234. package/src/schema/null.ts +3 -5
  235. package/src/schema/nullable.test.ts +480 -0
  236. package/src/schema/nullable.ts +23 -0
  237. package/src/schema/object.test.ts +47 -115
  238. package/src/schema/object.ts +19 -123
  239. package/src/schema/optional.test.ts +485 -0
  240. package/src/schema/optional.ts +31 -0
  241. package/src/schema/params.test.ts +582 -0
  242. package/src/schema/params.ts +37 -55
  243. package/src/schema/payload.test.ts +345 -0
  244. package/src/schema/payload.ts +5 -5
  245. package/src/schema/permission-set.test.ts +679 -0
  246. package/src/schema/permission-set.ts +6 -8
  247. package/src/schema/permission.test.ts +536 -0
  248. package/src/schema/permission.ts +0 -2
  249. package/src/schema/procedure.test.ts +443 -0
  250. package/src/schema/procedure.ts +11 -13
  251. package/src/schema/query.test.ts +408 -0
  252. package/src/schema/query.ts +9 -11
  253. package/src/schema/record.test.ts +694 -0
  254. package/src/schema/record.ts +38 -36
  255. package/src/schema/ref.test.ts +365 -0
  256. package/src/schema/ref.ts +8 -5
  257. package/src/schema/refine.test.ts +578 -0
  258. package/src/schema/refine.ts +85 -0
  259. package/src/schema/regexp.test.ts +580 -0
  260. package/src/schema/regexp.ts +22 -0
  261. package/src/schema/string.test.ts +612 -0
  262. package/src/schema/string.ts +11 -17
  263. package/src/schema/subscription.test.ts +689 -0
  264. package/src/schema/subscription.ts +13 -8
  265. package/src/schema/token.test.ts +428 -0
  266. package/src/schema/token.ts +3 -5
  267. package/src/schema/typed-object.test.ts +612 -0
  268. package/src/schema/typed-object.ts +23 -20
  269. package/src/schema/typed-ref.test.ts +823 -0
  270. package/src/schema/typed-ref.ts +10 -5
  271. package/src/schema/typed-union.test.ts +378 -0
  272. package/src/schema/typed-union.ts +6 -15
  273. package/src/schema/union.test.ts +200 -0
  274. package/src/schema/union.ts +5 -4
  275. package/src/schema/unknown-object.test.ts +592 -0
  276. package/src/schema/unknown-object.ts +3 -5
  277. package/src/schema/unknown.test.ts +312 -0
  278. package/src/schema/unknown.ts +3 -3
  279. package/src/schema.ts +7 -1
  280. package/src/util/array-agg.ts +1 -0
  281. package/src/util/lazy-property.ts +14 -0
  282. package/src/validation/schema.ts +92 -0
  283. package/src/validation/validation-error.ts +60 -9
  284. package/src/validation/validation-issue.ts +141 -144
  285. package/src/validation/validator.ts +67 -206
  286. package/src/validation.ts +1 -0
  287. package/tsconfig.build.json +12 -0
  288. package/tsconfig.json +7 -0
  289. package/tsconfig.tests.json +9 -0
package/CHANGELOG.md ADDED
@@ -0,0 +1,75 @@
1
+ # @atproto/lex-schema
2
+
3
+ ## 0.0.4
4
+
5
+ ### Patch Changes
6
+
7
+ - Updated dependencies [[`693784c`](https://github.com/bluesky-social/atproto/commit/693784c3a0dee4b6a29aa1e018fce682dcae148f)]:
8
+ - @atproto/lex-data@0.0.3
9
+
10
+ ## 0.0.3
11
+
12
+ ### Patch Changes
13
+
14
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `default` option to `literal` and `enum` schemas
15
+
16
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Rework object validation logic to work without `options` argument
17
+
18
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - `literal` schemas no longer use the value as "default". The "default" must now be explicitly provided.
19
+
20
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Use `l.nullable` for nullable object properties and `l.optional` for optional object properties in lex schemas.
21
+
22
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `l.refine` utility to add custom refinements to existing schemas.
23
+
24
+ - [#4401](https://github.com/bluesky-social/atproto/pull/4401) [`a487ab8`](https://github.com/bluesky-social/atproto/commit/a487ab8afe8f18d00662e666049be8d28de2b57e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add test suite for all schema types
25
+
26
+ - [#4401](https://github.com/bluesky-social/atproto/pull/4401) [`a487ab8`](https://github.com/bluesky-social/atproto/commit/a487ab8afe8f18d00662e666049be8d28de2b57e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Allow `array` schema's generic to be both a Validator type or an item value type
27
+
28
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Validation issues are now child classed to the `Issue` abstract class instead of simple objects with interfaces. This allows for better extensibility and custom behavior on issues (such as custom error messages).
29
+
30
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Replace use of `CID` with `Cid`
31
+
32
+ - [#4401](https://github.com/bluesky-social/atproto/pull/4401) [`a487ab8`](https://github.com/bluesky-social/atproto/commit/a487ab8afe8f18d00662e666049be8d28de2b57e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Drop `lexiconType` property
33
+
34
+ - [#4401](https://github.com/bluesky-social/atproto/pull/4401) [`a487ab8`](https://github.com/bluesky-social/atproto/commit/a487ab8afe8f18d00662e666049be8d28de2b57e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Fix type of `typedObject` and `record` schemas
35
+
36
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Remove options (`required`, `nullable`) from `object` schemas. Those are replaced by `l.optional` and `l.nullable` wrappers.
37
+
38
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Discriminated unions now only accept discriminators to be declared a `literal` or `enum` schemas and will throw at initialization if discriminators values aren't strictly disjoined.
39
+
40
+ - [#4389](https://github.com/bluesky-social/atproto/pull/4389) [`bcae2b7`](https://github.com/bluesky-social/atproto/commit/bcae2b77b68da6dc2ec202651c8bf41fd5769f69) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Use string formats from `@atproto/syntax`
41
+
42
+ - [#4389](https://github.com/bluesky-social/atproto/pull/4389) [`bcae2b7`](https://github.com/bluesky-social/atproto/commit/bcae2b77b68da6dc2ec202651c8bf41fd5769f69) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `l.regexp` schema builder
43
+
44
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Require `l.discriminatedUnion` discriminator field to be a `literal` or `enum` schema
45
+
46
+ - [#4401](https://github.com/bluesky-social/atproto/pull/4401) [`a487ab8`](https://github.com/bluesky-social/atproto/commit/a487ab8afe8f18d00662e666049be8d28de2b57e) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Simplify `ParamsSchema` interface
47
+
48
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Remove options (`required`) from `params` schemas. Those are replaced by `l.optional` wrappers.
49
+
50
+ - [#4387](https://github.com/bluesky-social/atproto/pull/4387) [`9f87ff3`](https://github.com/bluesky-social/atproto/commit/9f87ff3aa60090c8c38b6ce400cba6ceff5cd2e9) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Simplify `dict` type definition
51
+
52
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Rename schema methods `validate`, `check` and `maybe` to `safeParse`, `matches` and `ifMatches` respectively.
53
+
54
+ - [#4397](https://github.com/bluesky-social/atproto/pull/4397) [`688f9d6`](https://github.com/bluesky-social/atproto/commit/688f9d67597ba96d6e9c4a4aec4d394d42f4cbf4) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `CHANGELOG.md` to npm package
55
+
56
+ - [#4390](https://github.com/bluesky-social/atproto/pull/4390) [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Add `default` option to `const` and `enum` schemas
57
+
58
+ - Updated dependencies [[`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba), [`1d445af`](https://github.com/bluesky-social/atproto/commit/1d445af2a7fc27eca5a45869b29266e6a2a7f3ba), [`bcae2b7`](https://github.com/bluesky-social/atproto/commit/bcae2b77b68da6dc2ec202651c8bf41fd5769f69), [`688f9d6`](https://github.com/bluesky-social/atproto/commit/688f9d67597ba96d6e9c4a4aec4d394d42f4cbf4)]:
59
+ - @atproto/lex-data@0.0.2
60
+ - @atproto/syntax@0.4.2
61
+
62
+ ## 0.0.2
63
+
64
+ ### Patch Changes
65
+
66
+ - [#4380](https://github.com/bluesky-social/atproto/pull/4380) [`23c271f`](https://github.com/bluesky-social/atproto/commit/23c271fcac27f090727e2f835697d4733784bdb4) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Use `literal` value as default
67
+
68
+ ## 0.0.1
69
+
70
+ ### Patch Changes
71
+
72
+ - [#4371](https://github.com/bluesky-social/atproto/pull/4371) [`46550d6`](https://github.com/bluesky-social/atproto/commit/46550d6c1ffb298f57d54eb1904067b2df5a40af) Thanks [@matthieusieben](https://github.com/matthieusieben)! - Release
73
+
74
+ - Updated dependencies [[`46550d6`](https://github.com/bluesky-social/atproto/commit/46550d6c1ffb298f57d54eb1904067b2df5a40af)]:
75
+ - @atproto/lex-data@0.0.1
@@ -1,4 +1,7 @@
1
- import { Nsid } from './string-format.js';
2
- export type $Type<N extends Nsid = Nsid, H extends string = string> = N extends Nsid ? string extends H ? N | `${N}#${string}` : H extends 'main' ? N : `${N}#${H}` : never;
3
- export declare function $type<N extends Nsid, H extends string>(nsid: N, hash: H): $Type<N, H>;
1
+ import { NsidString } from './string-format.js';
2
+ 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
+ export type $TypeOf<O extends {
4
+ $type?: string;
5
+ }> = NonNullable<O['$type']>;
6
+ export declare function $type<N extends NsidString, H extends string>(nsid: N, hash: H): $Type<N, H>;
4
7
  //# 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,IAAI,EAAE,MAAM,oBAAoB,CAAA;AAEzC,MAAM,MAAM,KAAK,CACf,CAAC,SAAS,IAAI,GAAG,IAAI,EACrB,CAAC,SAAS,MAAM,GAAG,MAAM,IACvB,CAAC,SAAS,IAAI,GACd,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,wBAAgB,KAAK,CAAC,CAAC,SAAS,IAAI,EAAE,CAAC,SAAS,MAAM,EACpD,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;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,6 +1,7 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.$type = $type;
4
+ /*@__NO_SIDE_EFFECTS__*/
4
5
  function $type(nsid, hash) {
5
6
  return (hash === 'main' ? nsid : `${nsid}#${hash}`);
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"$type.js","sourceRoot":"","sources":["../../src/core/$type.ts"],"names":[],"mappings":";;AAaA,sBAKC;AALD,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 { Nsid } from './string-format.js'\n\nexport type $Type<\n N extends Nsid = Nsid,\n H extends string = string,\n> = N extends Nsid\n ? string extends H\n ? N | `${N}#${string}`\n : H extends 'main'\n ? N\n : `${N}#${H}`\n : never\n\nexport function $type<N extends Nsid, 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":";;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,4 +1,4 @@
1
- export type RecordKey = 'any' | 'nsid' | 'tid' | `literal:${string}`;
2
- export declare function isRecordKey<T>(key: T): key is T & RecordKey;
3
- export declare function asRecordKey(key: unknown): RecordKey;
1
+ export type LexiconRecordKey = 'any' | 'nsid' | 'tid' | `literal:${string}`;
2
+ export declare function isLexiconRecordKey<T>(key: T): key is T & LexiconRecordKey;
3
+ export declare function asLexiconRecordKey(key: unknown): LexiconRecordKey;
4
4
  //# sourceMappingURL=record-key.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"record-key.d.ts","sourceRoot":"","sources":["../../src/core/record-key.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,MAAM,EAAE,CAAA;AAEpE,wBAAgB,WAAW,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,SAAS,CAO3D;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,CAGnD"}
1
+ {"version":3,"file":"record-key.d.ts","sourceRoot":"","sources":["../../src/core/record-key.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,gBAAgB,GAAG,KAAK,GAAG,MAAM,GAAG,KAAK,GAAG,WAAW,MAAM,EAAE,CAAA;AAG3E,wBAAgB,kBAAkB,CAAC,CAAC,EAAE,GAAG,EAAE,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,gBAAgB,CAUzE;AAGD,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,GAAG,gBAAgB,CAGjE"}
@@ -1,15 +1,21 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.isRecordKey = isRecordKey;
4
- exports.asRecordKey = asRecordKey;
5
- function isRecordKey(key) {
3
+ exports.isLexiconRecordKey = isLexiconRecordKey;
4
+ exports.asLexiconRecordKey = asLexiconRecordKey;
5
+ const syntax_1 = require("@atproto/syntax");
6
+ /*@__NO_SIDE_EFFECTS__*/
7
+ function isLexiconRecordKey(key) {
6
8
  return (key === 'any' ||
7
9
  key === 'nsid' ||
8
10
  key === 'tid' ||
9
- (typeof key === 'string' && key.startsWith('literal:')));
11
+ (typeof key === 'string' &&
12
+ key.startsWith('literal:') &&
13
+ key.length > 8 &&
14
+ (0, syntax_1.isValidRecordKey)(key.slice(8))));
10
15
  }
11
- function asRecordKey(key) {
12
- if (isRecordKey(key))
16
+ /*@__NO_SIDE_EFFECTS__*/
17
+ function asLexiconRecordKey(key) {
18
+ if (isLexiconRecordKey(key))
13
19
  return key;
14
20
  throw new Error(`Invalid record key: ${String(key)}`);
15
21
  }
@@ -1 +1 @@
1
- {"version":3,"file":"record-key.js","sourceRoot":"","sources":["../../src/core/record-key.ts"],"names":[],"mappings":";;AAEA,kCAOC;AAED,kCAGC;AAZD,SAAgB,WAAW,CAAI,GAAM;IACnC,OAAO,CACL,GAAG,KAAK,KAAK;QACb,GAAG,KAAK,MAAM;QACd,GAAG,KAAK,KAAK;QACb,CAAC,OAAO,GAAG,KAAK,QAAQ,IAAI,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,CACxD,CAAA;AACH,CAAC;AAED,SAAgB,WAAW,CAAC,GAAY;IACtC,IAAI,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IAChC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACvD,CAAC","sourcesContent":["export type RecordKey = 'any' | 'nsid' | 'tid' | `literal:${string}`\n\nexport function isRecordKey<T>(key: T): key is T & RecordKey {\n return (\n key === 'any' ||\n key === 'nsid' ||\n key === 'tid' ||\n (typeof key === 'string' && key.startsWith('literal:'))\n )\n}\n\nexport function asRecordKey(key: unknown): RecordKey {\n if (isRecordKey(key)) return key\n throw new Error(`Invalid record key: ${String(key)}`)\n}\n"]}
1
+ {"version":3,"file":"record-key.js","sourceRoot":"","sources":["../../src/core/record-key.ts"],"names":[],"mappings":";;AAKA,gDAUC;AAGD,gDAGC;AArBD,4CAAkD;AAIlD,wBAAwB;AACxB,SAAgB,kBAAkB,CAAI,GAAM;IAC1C,OAAO,CACL,GAAG,KAAK,KAAK;QACb,GAAG,KAAK,MAAM;QACd,GAAG,KAAK,KAAK;QACb,CAAC,OAAO,GAAG,KAAK,QAAQ;YACtB,GAAG,CAAC,UAAU,CAAC,UAAU,CAAC;YAC1B,GAAG,CAAC,MAAM,GAAG,CAAC;YACd,IAAA,yBAAgB,EAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAClC,CAAA;AACH,CAAC;AAED,wBAAwB;AACxB,SAAgB,kBAAkB,CAAC,GAAY;IAC7C,IAAI,kBAAkB,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAA;IACvC,MAAM,IAAI,KAAK,CAAC,uBAAuB,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;AACvD,CAAC","sourcesContent":["import { isValidRecordKey } from '@atproto/syntax'\n\nexport type LexiconRecordKey = 'any' | 'nsid' | 'tid' | `literal:${string}`\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function isLexiconRecordKey<T>(key: T): key is T & LexiconRecordKey {\n return (\n key === 'any' ||\n key === 'nsid' ||\n key === 'tid' ||\n (typeof key === 'string' &&\n key.startsWith('literal:') &&\n key.length > 8 &&\n isValidRecordKey(key.slice(8)))\n )\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function asLexiconRecordKey(key: unknown): LexiconRecordKey {\n if (isLexiconRecordKey(key)) return key\n throw new Error(`Invalid record key: ${String(key)}`)\n}\n"]}
@@ -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;AAE5E,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAErD;AAED,wBAAgB,OAAO,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,GAAG,aAAa,CAAC,CAAC,CAAC,CAErD;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAE3D;AAED,wBAAgB,YAAY,CAAC,CAAC,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,GAAG,CAAC,CAE3D;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,aAAa,CAAC,KAAK,CAAC,CAG3D;AAED;;;;;;;;;;;;;;;;;;;;;GAqBG;AACH,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,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"}
@@ -6,15 +6,19 @@ exports.failureError = failureError;
6
6
  exports.successValue = successValue;
7
7
  exports.catchall = catchall;
8
8
  exports.createCatcher = createCatcher;
9
+ /*@__NO_SIDE_EFFECTS__*/
9
10
  function success(value) {
10
11
  return { success: true, value };
11
12
  }
13
+ /*@__NO_SIDE_EFFECTS__*/
12
14
  function failure(error) {
13
15
  return { success: false, error };
14
16
  }
17
+ /*@__NO_SIDE_EFFECTS__*/
15
18
  function failureError(result) {
16
19
  return result.error;
17
20
  }
21
+ /*@__NO_SIDE_EFFECTS__*/
18
22
  function successValue(result) {
19
23
  return result.value;
20
24
  }
@@ -37,6 +41,7 @@ function successValue(result) {
37
41
  * }
38
42
  * ```
39
43
  */
44
+ /*@__NO_SIDE_EFFECTS__*/
40
45
  function catchall(err) {
41
46
  if (err instanceof Error)
42
47
  return failure(err);
@@ -64,6 +69,7 @@ function catchall(err) {
64
69
  * console.error(result.error) // FooError | BarError
65
70
  * }
66
71
  */
72
+ /*@__NO_SIDE_EFFECTS__*/
67
73
  function createCatcher(Ctor) {
68
74
  return (err) => {
69
75
  if (err instanceof Ctor)
@@ -1 +1 @@
1
- {"version":3,"file":"result.js","sourceRoot":"","sources":["../../src/core/result.ts"],"names":[],"mappings":";;AAKA,0BAEC;AAED,0BAEC;AAED,oCAEC;AAED,oCAEC;AAqBD,4BAGC;AAwBD,sCAKC;AAnED,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAA;AACjC,CAAC;AAED,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,CAAA;AAClC,CAAC;AAED,SAAgB,YAAY,CAAI,MAAwB;IACtD,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED,SAAgB,YAAY,CAAI,MAAwB;IACtD,OAAO,MAAM,CAAC,KAAK,CAAA;AACrB,CAAC;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,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,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\nexport function success<V>(value: V): ResultSuccess<V> {\n return { success: true, value }\n}\n\nexport function failure<E>(error: E): ResultFailure<E> {\n return { success: false, error }\n}\n\nexport function failureError<T>(result: ResultFailure<T>): T {\n return result.error\n}\n\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 */\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 */\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,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,31 +1,34 @@
1
- declare global {
2
- interface Date {
3
- toISOString(): `${string}T${string}Z`;
4
- }
5
- }
6
- export declare const STRING_FORMATS: readonly ["datetime", "uri", "at-uri", "did", "handle", "at-identifier", "nsid", "cid", "language", "tid", "record-key"];
7
- export type StringFormat = (typeof STRING_FORMATS)[number];
8
- export type Did<M extends string = string> = `did:${M}:${string}`;
9
- export type Uri = `${string}:${string}`;
10
- export type Nsid = `${string}.${string}.${string}`;
11
- /** An ISO 8601 formatted datetime string (YYYY-MM-DDTHH:mm:ss.sssZ) */
12
- export type Datetime = `${string}T${string}`;
13
- export type Handle = `${string}.${string}`;
14
- export type AtIdentifier = Did | Handle;
15
- export type AtUri = `at://${AtIdentifier}/${Nsid}/${string}`;
16
- export type InferStringFormat<F> = F extends 'datetime' ? Datetime : F extends 'uri' ? Uri : F extends 'at-uri' ? AtUri : F extends 'did' ? Did : F extends 'handle' ? Handle : F extends 'at-identifier' ? AtIdentifier : F extends 'nsid' ? Nsid : string;
1
+ import { AtIdentifierString, AtUriString, DatetimeString, DidString, HandleString, NsidString, RecordKeyString, TidString } from '@atproto/syntax';
17
2
  type AssertFn<T> = <I extends string>(input: I) => asserts input is I & T;
18
- export declare const assertDid: AssertFn<Did>;
19
- export declare const assertAtUri: AssertFn<AtUri>;
20
- export declare const assertNsid: AssertFn<Nsid>;
21
- export declare const assertTid: AssertFn<string>;
22
- export declare const assertRecordKey: AssertFn<string>;
23
- export declare const assertDatetime: AssertFn<Datetime>;
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>;
24
12
  export declare const assertCidString: AssertFn<string>;
25
- export declare const assertHandle: AssertFn<Handle>;
26
- export declare const assertUri: AssertFn<Uri>;
27
- export declare const assertLanguage: AssertFn<string>;
28
- export declare const assertAtIdentifier: AssertFn<AtIdentifier>;
13
+ export declare const assertHandle: AssertFn<HandleString>;
14
+ export type CidString = string;
15
+ export type UriString = `${string}:${string}`;
16
+ 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>;
30
+ export declare const STRING_FORMATS: readonly ["datetime", "uri", "at-uri", "did", "handle", "at-identifier", "nsid", "cid", "language", "tid", "record-key"];
31
+ export type StringFormat = (typeof STRING_FORMATS)[number];
32
+ 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;
29
33
  export declare function assertStringFormat<F extends StringFormat>(input: string, format: F): asserts input is InferStringFormat<F>;
30
- export {};
31
34
  //# sourceMappingURL=string-format.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"string-format.d.ts","sourceRoot":"","sources":["../../src/core/string-format.ts"],"names":[],"mappings":"AAYA,OAAO,CAAC,MAAM,CAAC;IACb,UAAU,IAAI;QACZ,WAAW,IAAI,GAAG,MAAM,IAAI,MAAM,GAAG,CAAA;KACtC;CACF;AAED,eAAO,MAAM,cAAc,0HAYhB,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,MAAM,MAAM,GAAG,CAAC,CAAC,SAAS,MAAM,GAAG,MAAM,IAAI,OAAO,CAAC,IAAI,MAAM,EAAE,CAAA;AACjE,MAAM,MAAM,GAAG,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AACvC,MAAM,MAAM,IAAI,GAAG,GAAG,MAAM,IAAI,MAAM,IAAI,MAAM,EAAE,CAAA;AAClD,uEAAuE;AACvE,MAAM,MAAM,QAAQ,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAC5C,MAAM,MAAM,MAAM,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAC1C,MAAM,MAAM,YAAY,GAAG,GAAG,GAAG,MAAM,CAAA;AACvC,MAAM,MAAM,KAAK,GAAG,QAAQ,YAAY,IAAI,IAAI,IAAI,MAAM,EAAE,CAAA;AAE5D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAE7B,CAAC,SAAS,UAAU,GAChB,QAAQ,GACR,CAAC,SAAS,KAAK,GACb,GAAG,GACH,CAAC,SAAS,QAAQ,GAChB,KAAK,GACL,CAAC,SAAS,KAAK,GACb,GAAG,GACH,CAAC,SAAS,QAAQ,GAChB,MAAM,GACN,CAAC,SAAS,eAAe,GACvB,YAAY,GACZ,CAAC,SAAS,MAAM,GACd,IAAI,GACJ,MAAM,CAAA;AAExB,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAA;AAKzE,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAkB,CAAA;AACtD,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAoB,CAAA;AAC5D,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,IAAI,CAAmB,CAAA;AACzD,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,MAAM,CAAkB,CAAA;AACzD,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAwB,CAAA;AACrE,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,QAAQ,CAAuB,CAAA;AACrE,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAwB,CAAA;AACrE,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,MAAM,CAAqB,CAAA;AAI/D,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,GAAG,CAInC,CAAA;AACD,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,MAAM,CAI3C,CAAA;AACD,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,YAAY,CAYrD,CAAA;AAgBD,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,YAAY,EACvD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAKvC"}
1
+ {"version":3,"file":"string-format.d.ts","sourceRoot":"","sources":["../../src/core/string-format.ts"],"names":[],"mappings":"AACA,OAAO,EACL,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,SAAS,EASV,MAAM,iBAAiB,CAAA;AAExB,KAAK,QAAQ,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,KAAK,IAAI,CAAC,GAAG,CAAC,CAAA;AACzE,KAAK,MAAM,CAAC,CAAC,IAAI,CAAC,CAAC,SAAS,MAAM,EAAE,KAAK,EAAE,CAAC,KAAK,CAAC,GAAG,CAAC,CAAA;AAatD,YAAY,EACV,kBAAkB,EAClB,WAAW,EACX,cAAc,EACd,SAAS,EACT,YAAY,EACZ,UAAU,EACV,eAAe,EACf,SAAS,GACV,CAAA;AAED,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAkB,CAAA;AAC5D,eAAO,MAAM,WAAW,EAAE,QAAQ,CAAC,WAAW,CAAoB,CAAA;AAClE,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,kBAAkB,CACnC,CAAA;AACzB,eAAO,MAAM,UAAU,EAAE,QAAQ,CAAC,UAAU,CAAmB,CAAA;AAC/D,eAAO,MAAM,SAAS,EAAE,QAAQ,CAAC,SAAS,CAAkB,CAAA;AAC5D,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,eAAe,CAAwB,CAAA;AAC9E,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,cAAc,CAAuB,CAAA;AAC3E,eAAO,MAAM,eAAe,EAAE,QAAQ,CAAC,MAAM,CAAwB,CAAA;AACrE,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,CAAqB,CAAA;AAIrE,MAAM,MAAM,SAAS,GAAG,MAAM,CAAA;AAC9B,MAAM,MAAM,SAAS,GAAG,GAAG,MAAM,IAAI,MAAM,EAAE,CAAA;AAC7C,MAAM,MAAM,cAAc,GAAG,MAAM,CAAA;AAGnC,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,SAAS,CAInE;AAGD,wBAAgB,cAAc,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,IAAI,cAAc,CAI7E;AAED,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,SAAS,CACc,CAAA;AAClD,eAAO,MAAM,OAAO,EAAE,MAAM,CAAC,WAAW,CACY,CAAA;AACpD,eAAO,MAAM,MAAM,EAAE,MAAM,CAAC,UAAU,CACa,CAAA;AACnD,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,SAAS,CACc,CAAA;AAClD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,eAAe,CACQ,CAAA;AACxD,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,cAAc,CACS,CAAA;AACvD,eAAO,MAAM,WAAW,EAAE,MAAM,CAAC,MAAM,CACiB,CAAA;AACxD,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,YAAY,CACW,CAAA;AACrD,eAAO,MAAM,KAAK,EAAE,MAAM,CAAC,SAAS,CACS,CAAA;AAC7C,eAAO,MAAM,UAAU,EAAE,MAAM,CAAC,cAAc,CACI,CAAA;AAClD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,kBAAkB,CACA,CAAA;AAItD,eAAO,MAAM,cAAc,0HAYhB,CAAA;AAEX,MAAM,MAAM,YAAY,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,MAAM,CAAC,CAAA;AAE1D,MAAM,MAAM,iBAAiB,CAAC,CAAC,IAE7B,CAAC,SAAS,UAAU,GAChB,cAAc,GACd,CAAC,SAAS,KAAK,GACb,SAAS,GACT,CAAC,SAAS,QAAQ,GAChB,WAAW,GACX,CAAC,SAAS,KAAK,GACb,SAAS,GACT,CAAC,SAAS,QAAQ,GAChB,YAAY,GACZ,CAAC,SAAS,eAAe,GACvB,kBAAkB,GAClB,CAAC,SAAS,MAAM,GACd,UAAU,GAEV,MAAM,CAAA;AAiBxB,wBAAgB,kBAAkB,CAAC,CAAC,SAAS,YAAY,EACvD,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,CAAC,GACR,OAAO,CAAC,KAAK,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAKvC"}
@@ -1,75 +1,89 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.assertAtIdentifier = exports.assertLanguage = exports.assertUri = exports.assertHandle = exports.assertCidString = exports.assertDatetime = exports.assertRecordKey = exports.assertTid = exports.assertNsid = exports.assertAtUri = exports.assertDid = exports.STRING_FORMATS = void 0;
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;
4
6
  exports.assertStringFormat = assertStringFormat;
5
7
  const lex_data_1 = require("@atproto/lex-data");
6
8
  const syntax_1 = require("@atproto/syntax");
7
- exports.STRING_FORMATS = Object.freeze([
8
- 'datetime',
9
- 'uri',
10
- 'at-uri',
11
- 'did',
12
- 'handle',
13
- 'at-identifier',
14
- 'nsid',
15
- 'cid',
16
- 'language',
17
- 'tid',
18
- 'record-key',
19
- ]);
20
- // Re-export utility typed as assertion functions so that TypeScript can
21
- // infer the narrowed type after calling them.
9
+ /*@__NO_SIDE_EFFECTS__*/
10
+ function createCastFunction(assertFn) {
11
+ return (input) => {
12
+ assertFn(input);
13
+ return input;
14
+ };
15
+ }
22
16
  exports.assertDid = syntax_1.ensureValidDid;
23
17
  exports.assertAtUri = syntax_1.ensureValidAtUri;
18
+ exports.assertAtIdentifier = syntax_1.ensureValidAtIdentifier;
24
19
  exports.assertNsid = syntax_1.ensureValidNsid;
25
20
  exports.assertTid = syntax_1.ensureValidTid;
26
21
  exports.assertRecordKey = syntax_1.ensureValidRecordKey;
27
22
  exports.assertDatetime = syntax_1.ensureValidDatetime;
28
23
  exports.assertCidString = lex_data_1.ensureValidCidString;
29
24
  exports.assertHandle = syntax_1.ensureValidHandle;
30
- // Export utilities for formats missing from @atproto/syntax
31
- const assertUri = (input) => {
25
+ /*@__NO_SIDE_EFFECTS__*/
26
+ function assertUri(input) {
32
27
  if (!/^\w+:(?:\/\/)?[^\s/][^\s]*$/.test(input)) {
33
28
  throw new Error('Invalid URI');
34
29
  }
35
- };
36
- exports.assertUri = assertUri;
37
- const assertLanguage = (input) => {
30
+ }
31
+ /*@__NO_SIDE_EFFECTS__*/
32
+ function assertLanguage(input) {
38
33
  if (!(0, lex_data_1.isLanguage)(input)) {
39
34
  throw new Error('Invalid BCP 47 string');
40
35
  }
41
- };
42
- exports.assertLanguage = assertLanguage;
43
- const assertAtIdentifier = (input) => {
44
- if (input.startsWith('did:web:') || input.startsWith('did:plc:')) {
45
- (0, exports.assertDid)(input);
46
- }
47
- else if (input.startsWith('did:')) {
48
- throw new Error('Invalid DID method');
49
- }
50
- else {
51
- try {
52
- (0, exports.assertHandle)(input);
53
- }
54
- catch (cause) {
55
- throw new Error('Invalid DID or handle', { cause });
56
- }
57
- }
58
- };
59
- exports.assertAtIdentifier = assertAtIdentifier;
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);
49
+ 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);
59
+ // String formatting types and utilities
60
+ exports.STRING_FORMATS = Object.freeze([
61
+ 'datetime',
62
+ 'uri',
63
+ 'at-uri',
64
+ 'did',
65
+ 'handle',
66
+ 'at-identifier',
67
+ 'nsid',
68
+ 'cid',
69
+ 'language',
70
+ 'tid',
71
+ 'record-key',
72
+ ]);
60
73
  const formatters = /*#__PURE__*/ new Map([
61
74
  ['datetime', exports.assertDatetime],
62
- ['uri', exports.assertUri],
75
+ ['uri', assertUri],
63
76
  ['at-uri', exports.assertAtUri],
64
77
  ['did', exports.assertDid],
65
78
  ['handle', exports.assertHandle],
66
79
  ['at-identifier', exports.assertAtIdentifier],
67
80
  ['nsid', exports.assertNsid],
68
81
  ['cid', exports.assertCidString],
69
- ['language', exports.assertLanguage],
82
+ ['language', assertLanguage],
70
83
  ['tid', exports.assertTid],
71
84
  ['record-key', exports.assertRecordKey],
72
85
  ]);
86
+ /*@__NO_SIDE_EFFECTS__*/
73
87
  function assertStringFormat(input, format) {
74
88
  const assertFn = formatters.get(format);
75
89
  if (assertFn)
@@ -1 +1 @@
1
- {"version":3,"file":"string-format.js","sourceRoot":"","sources":["../../src/core/string-format.ts"],"names":[],"mappings":"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","sourcesContent":["import { ensureValidCidString, isLanguage } from '@atproto/lex-data'\nimport {\n ensureValidAtUri,\n ensureValidDatetime,\n ensureValidDid,\n ensureValidHandle,\n ensureValidNsid,\n ensureValidRecordKey,\n ensureValidTid,\n} from '@atproto/syntax'\n\n// Allow (date as Date).toISOString() to be used where datetime format is expected\ndeclare global {\n interface Date {\n toISOString(): `${string}T${string}Z`\n }\n}\n\nexport const STRING_FORMATS = Object.freeze([\n 'datetime',\n 'uri',\n 'at-uri',\n 'did',\n 'handle',\n 'at-identifier',\n 'nsid',\n 'cid',\n 'language',\n 'tid',\n 'record-key',\n] as const)\n\nexport type StringFormat = (typeof STRING_FORMATS)[number]\n\nexport type Did<M extends string = string> = `did:${M}:${string}`\nexport type Uri = `${string}:${string}`\nexport type Nsid = `${string}.${string}.${string}`\n/** An ISO 8601 formatted datetime string (YYYY-MM-DDTHH:mm:ss.sssZ) */\nexport type Datetime = `${string}T${string}`\nexport type Handle = `${string}.${string}`\nexport type AtIdentifier = Did | Handle\nexport type AtUri = `at://${AtIdentifier}/${Nsid}/${string}`\n\nexport type InferStringFormat<F> =\n //\n F extends 'datetime'\n ? Datetime\n : F extends 'uri'\n ? Uri\n : F extends 'at-uri'\n ? AtUri\n : F extends 'did'\n ? Did\n : F extends 'handle'\n ? Handle\n : F extends 'at-identifier'\n ? AtIdentifier\n : F extends 'nsid'\n ? Nsid\n : string\n\ntype AssertFn<T> = <I extends string>(input: I) => asserts input is I & T\n\n// Re-export utility typed as assertion functions so that TypeScript can\n// infer the narrowed type after calling them.\n\nexport const assertDid: AssertFn<Did> = ensureValidDid\nexport const assertAtUri: AssertFn<AtUri> = ensureValidAtUri\nexport const assertNsid: AssertFn<Nsid> = ensureValidNsid\nexport const assertTid: AssertFn<string> = ensureValidTid\nexport const assertRecordKey: AssertFn<string> = ensureValidRecordKey\nexport const assertDatetime: AssertFn<Datetime> = ensureValidDatetime\nexport const assertCidString: AssertFn<string> = ensureValidCidString\nexport const assertHandle: AssertFn<Handle> = ensureValidHandle\n\n// Export utilities for formats missing from @atproto/syntax\n\nexport const assertUri: AssertFn<Uri> = (input) => {\n if (!/^\\w+:(?:\\/\\/)?[^\\s/][^\\s]*$/.test(input)) {\n throw new Error('Invalid URI')\n }\n}\nexport const assertLanguage: AssertFn<string> = (input) => {\n if (!isLanguage(input)) {\n throw new Error('Invalid BCP 47 string')\n }\n}\nexport const assertAtIdentifier: AssertFn<AtIdentifier> = (input) => {\n if (input.startsWith('did:web:') || input.startsWith('did:plc:')) {\n assertDid(input)\n } else if (input.startsWith('did:')) {\n throw new Error('Invalid DID method')\n } else {\n try {\n assertHandle(input)\n } catch (cause) {\n throw new Error('Invalid DID or handle', { cause })\n }\n }\n}\n\nconst formatters = /*#__PURE__*/ new Map<StringFormat, (str: string) => void>([\n ['datetime', assertDatetime],\n ['uri', assertUri],\n ['at-uri', assertAtUri],\n ['did', assertDid],\n ['handle', assertHandle],\n ['at-identifier', assertAtIdentifier],\n ['nsid', assertNsid],\n ['cid', assertCidString],\n ['language', assertLanguage],\n ['tid', assertTid],\n ['record-key', assertRecordKey],\n] as const)\n\nexport function assertStringFormat<F extends StringFormat>(\n input: string,\n format: F,\n): asserts input is InferStringFormat<F> {\n const assertFn = formatters.get(format)\n if (assertFn) assertFn(input)\n // Fool-proof\n else throw new Error(`Unknown string format: ${format}`)\n}\n"]}
1
+ {"version":3,"file":"string-format.js","sourceRoot":"","sources":["../../src/core/string-format.ts"],"names":[],"mappings":"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","sourcesContent":["import { ensureValidCidString, isLanguage } from '@atproto/lex-data'\nimport {\n AtIdentifierString,\n AtUriString,\n DatetimeString,\n DidString,\n HandleString,\n NsidString,\n RecordKeyString,\n TidString,\n ensureValidAtIdentifier,\n ensureValidAtUri,\n ensureValidDatetime,\n ensureValidDid,\n ensureValidHandle,\n ensureValidNsid,\n ensureValidRecordKey,\n ensureValidTid,\n} from '@atproto/syntax'\n\ntype AssertFn<T> = <I extends string>(input: I) => asserts input is I & T\ntype CastFn<T> = <I extends string>(input: I) => I & T\n\n/*@__NO_SIDE_EFFECTS__*/\nfunction createCastFunction<T>(assertFn: AssertFn<T>): CastFn<T> {\n return <I extends string>(input: I) => {\n assertFn(input)\n return input as I & T\n }\n}\n\n// Re-export utility typed as assertion functions so that TypeScript can\n// infer the narrowed type after calling them.\n\nexport type {\n AtIdentifierString,\n AtUriString,\n DatetimeString,\n DidString,\n HandleString,\n NsidString,\n RecordKeyString,\n TidString,\n}\n\nexport const assertDid: AssertFn<DidString> = ensureValidDid\nexport const assertAtUri: AssertFn<AtUriString> = ensureValidAtUri\nexport const assertAtIdentifier: AssertFn<AtIdentifierString> =\n ensureValidAtIdentifier\nexport const assertNsid: AssertFn<NsidString> = ensureValidNsid\nexport const assertTid: AssertFn<TidString> = ensureValidTid\nexport const assertRecordKey: AssertFn<RecordKeyString> = ensureValidRecordKey\nexport const assertDatetime: AssertFn<DatetimeString> = ensureValidDatetime\nexport const assertCidString: AssertFn<string> = ensureValidCidString\nexport const assertHandle: AssertFn<HandleString> = ensureValidHandle\n\n// Export utilities for formats missing from @atproto/syntax\n\nexport type CidString = string\nexport type UriString = `${string}:${string}`\nexport type LanguageString = string\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function assertUri(input: string): asserts input is UriString {\n if (!/^\\w+:(?:\\/\\/)?[^\\s/][^\\s]*$/.test(input)) {\n throw new Error('Invalid URI')\n }\n}\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function assertLanguage(input: string): asserts input is LanguageString {\n if (!isLanguage(input)) {\n throw new Error('Invalid BCP 47 string')\n }\n}\n\nexport const asDid: CastFn<DidString> =\n /*#__PURE__*/ createCastFunction(ensureValidDid)\nexport const asAtUri: CastFn<AtUriString> =\n /*#__PURE__*/ createCastFunction(ensureValidAtUri)\nexport const asNsid: CastFn<NsidString> =\n /*#__PURE__*/ createCastFunction(ensureValidNsid)\nexport const asTid: CastFn<TidString> =\n /*#__PURE__*/ createCastFunction(ensureValidTid)\nexport const asRecordKey: CastFn<RecordKeyString> =\n /*#__PURE__*/ createCastFunction(ensureValidRecordKey)\nexport const asDatetime: CastFn<DatetimeString> =\n /*#__PURE__*/ createCastFunction(ensureValidDatetime)\nexport const asCidString: CastFn<string> =\n /*#__PURE__*/ createCastFunction(ensureValidCidString)\nexport const asHandle: CastFn<HandleString> =\n /*#__PURE__*/ createCastFunction(ensureValidHandle)\nexport const asUri: CastFn<UriString> =\n /*#__PURE__*/ createCastFunction(assertUri)\nexport const asLanguage: CastFn<LanguageString> =\n /*#__PURE__*/ createCastFunction(assertLanguage)\nexport const asAtIdentifier: CastFn<AtIdentifierString> =\n /*#__PURE__*/ createCastFunction(assertAtIdentifier)\n\n// String formatting types and utilities\n\nexport const STRING_FORMATS = Object.freeze([\n 'datetime',\n 'uri',\n 'at-uri',\n 'did',\n 'handle',\n 'at-identifier',\n 'nsid',\n 'cid',\n 'language',\n 'tid',\n 'record-key',\n] as const)\n\nexport type StringFormat = (typeof STRING_FORMATS)[number]\n\nexport type InferStringFormat<F> =\n //\n F extends 'datetime'\n ? DatetimeString\n : F extends 'uri'\n ? UriString\n : F extends 'at-uri'\n ? AtUriString\n : F extends 'did'\n ? DidString\n : F extends 'handle'\n ? HandleString\n : F extends 'at-identifier'\n ? AtIdentifierString\n : F extends 'nsid'\n ? NsidString\n : // LanguageString | CidString | TidString | RecordKeyString\n string\n\nconst formatters = /*#__PURE__*/ new Map<StringFormat, (str: string) => void>([\n ['datetime', assertDatetime],\n ['uri', assertUri],\n ['at-uri', assertAtUri],\n ['did', assertDid],\n ['handle', assertHandle],\n ['at-identifier', assertAtIdentifier],\n ['nsid', assertNsid],\n ['cid', assertCidString],\n ['language', assertLanguage],\n ['tid', assertTid],\n ['record-key', assertRecordKey],\n] as const)\n\n/*@__NO_SIDE_EFFECTS__*/\nexport function assertStringFormat<F extends StringFormat>(\n input: string,\n format: F,\n): asserts input is InferStringFormat<F> {\n const assertFn = formatters.get(format)\n if (assertFn) assertFn(input)\n // Fool-proof\n else throw new Error(`Unknown string format: ${format}`)\n}\n"]}
@@ -6,7 +6,6 @@ export type UnknownString = string & NonNullable<unknown>;
6
6
  export type Simplify<T> = {
7
7
  [K in keyof T]: T[K];
8
8
  } & NonNullable<unknown>;
9
- export type ArrayContaining<T, Items = unknown> = readonly [T, ...Items[]] | readonly [...Items[], T];
10
9
  declare const __restricted: unique symbol;
11
10
  /**
12
11
  * A type that represents a value that cannot be used, with a custom
@@ -15,5 +14,14 @@ declare const __restricted: unique symbol;
15
14
  export type Restricted<Message extends string> = typeof __restricted & {
16
15
  [__restricted]: Message;
17
16
  };
17
+ /**
18
+ * Converts all properties of `P` that are optional (i.e. may be `undefined`)
19
+ * into actual optional properties on the resulting type.
20
+ */
21
+ export type WithOptionalProperties<P> = Simplify<{
22
+ -readonly [K in keyof P as undefined extends P[K] ? never : K]-?: P[K];
23
+ } & {
24
+ -readonly [K in keyof P as undefined extends P[K] ? K : never]?: P[K];
25
+ }>;
18
26
  export {};
19
27
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAEzD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAIzE,MAAM,MAAM,eAAe,CAAC,CAAC,EAAE,KAAK,GAAG,OAAO,IAC1C,SAAS,CAAC,CAAC,EAAE,GAAG,KAAK,EAAE,CAAC,GACxB,SAAS,CAAC,GAAG,KAAK,EAAE,EAAE,CAAC,CAAC,CAAA;AAE5B,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAA;AACzC;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,YAAY,GAAG;IACrE,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,MAAM,aAAa,GAAG,MAAM,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAEzD,MAAM,MAAM,QAAQ,CAAC,CAAC,IAAI;KAAG,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CAAE,GAAG,WAAW,CAAC,OAAO,CAAC,CAAA;AAEzE,OAAO,CAAC,MAAM,YAAY,EAAE,OAAO,MAAM,CAAA;AACzC;;;GAGG;AACH,MAAM,MAAM,UAAU,CAAC,OAAO,SAAS,MAAM,IAAI,OAAO,YAAY,GAAG;IACrE,CAAC,YAAY,CAAC,EAAE,OAAO,CAAA;CACxB,CAAA;AAED;;;GAGG;AACH,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAAI,QAAQ,CAC9C;IACE,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;CACvE,GAAG;IACF,CAAC,UAAU,CAAC,IAAI,MAAM,CAAC,IAAI,SAAS,SAAS,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;CACtE,CACF,CAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Same as {@link string} but prevents TypeScript allowing union types to\n * be widened to `string` in IDEs.\n */\nexport type UnknownString = string & NonNullable<unknown>\n\nexport type Simplify<T> = { [K in keyof T]: T[K] } & NonNullable<unknown>\n\n// @NOTE there is no way to express \"array containing at least one P\", so we use\n// \"array that contains P at first or last position\" as a workaround.\nexport type ArrayContaining<T, Items = unknown> =\n | readonly [T, ...Items[]]\n | readonly [...Items[], T]\n\ndeclare const __restricted: unique symbol\n/**\n * A type that represents a value that cannot be used, with a custom\n * message explaining the restriction.\n */\nexport type Restricted<Message extends string> = typeof __restricted & {\n [__restricted]: Message\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"","sourcesContent":["/**\n * Same as {@link string} but prevents TypeScript allowing union types to\n * be widened to `string` in IDEs.\n */\nexport type UnknownString = string & NonNullable<unknown>\n\nexport type Simplify<T> = { [K in keyof T]: T[K] } & NonNullable<unknown>\n\ndeclare const __restricted: unique symbol\n/**\n * A type that represents a value that cannot be used, with a custom\n * message explaining the restriction.\n */\nexport type Restricted<Message extends string> = typeof __restricted & {\n [__restricted]: Message\n}\n\n/**\n * Converts all properties of `P` that are optional (i.e. may be `undefined`)\n * into actual optional properties on the resulting type.\n */\nexport type WithOptionalProperties<P> = Simplify<\n {\n -readonly [K in keyof P as undefined extends P[K] ? never : K]-?: P[K]\n } & {\n -readonly [K in keyof P as undefined extends P[K] ? K : never]?: P[K]\n }\n>\n"]}