@atproto/lex-schema 0.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (243) hide show
  1. package/dist/core/$type.d.ts +4 -0
  2. package/dist/core/$type.d.ts.map +1 -0
  3. package/dist/core/$type.js +7 -0
  4. package/dist/core/$type.js.map +1 -0
  5. package/dist/core/record-key.d.ts +4 -0
  6. package/dist/core/record-key.d.ts.map +1 -0
  7. package/dist/core/record-key.js +16 -0
  8. package/dist/core/record-key.js.map +1 -0
  9. package/dist/core/result.d.ts +57 -0
  10. package/dist/core/result.d.ts.map +1 -0
  11. package/dist/core/result.js +74 -0
  12. package/dist/core/result.js.map +1 -0
  13. package/dist/core/string-format.d.ts +31 -0
  14. package/dist/core/string-format.d.ts.map +1 -0
  15. package/dist/core/string-format.js +81 -0
  16. package/dist/core/string-format.js.map +1 -0
  17. package/dist/core/types.d.ts +19 -0
  18. package/dist/core/types.d.ts.map +1 -0
  19. package/dist/core/types.js +3 -0
  20. package/dist/core/types.js.map +1 -0
  21. package/dist/core.d.ts +6 -0
  22. package/dist/core.d.ts.map +1 -0
  23. package/dist/core.js +9 -0
  24. package/dist/core.js.map +1 -0
  25. package/dist/external.d.ts +86 -0
  26. package/dist/external.d.ts.map +1 -0
  27. package/dist/external.js +171 -0
  28. package/dist/external.js.map +1 -0
  29. package/dist/index.d.ts +4 -0
  30. package/dist/index.d.ts.map +1 -0
  31. package/dist/index.js +8 -0
  32. package/dist/index.js.map +1 -0
  33. package/dist/schema/_parameters.d.ts +17 -0
  34. package/dist/schema/_parameters.d.ts.map +1 -0
  35. package/dist/schema/_parameters.js +20 -0
  36. package/dist/schema/_parameters.js.map +1 -0
  37. package/dist/schema/array.d.ts +13 -0
  38. package/dist/schema/array.d.ts.map +1 -0
  39. package/dist/schema/array.js +40 -0
  40. package/dist/schema/array.js.map +1 -0
  41. package/dist/schema/blob.d.ts +32 -0
  42. package/dist/schema/blob.d.ts.map +1 -0
  43. package/dist/schema/blob.js +40 -0
  44. package/dist/schema/blob.js.map +1 -0
  45. package/dist/schema/boolean.d.ts +11 -0
  46. package/dist/schema/boolean.d.ts.map +1 -0
  47. package/dist/schema/boolean.js +20 -0
  48. package/dist/schema/boolean.js.map +1 -0
  49. package/dist/schema/bytes.d.ts +12 -0
  50. package/dist/schema/bytes.d.ts.map +1 -0
  51. package/dist/schema/bytes.js +31 -0
  52. package/dist/schema/bytes.js.map +1 -0
  53. package/dist/schema/cid.d.ts +13 -0
  54. package/dist/schema/cid.d.ts.map +1 -0
  55. package/dist/schema/cid.js +22 -0
  56. package/dist/schema/cid.js.map +1 -0
  57. package/dist/schema/custom.d.ts +15 -0
  58. package/dist/schema/custom.d.ts.map +1 -0
  59. package/dist/schema/custom.js +22 -0
  60. package/dist/schema/custom.js.map +1 -0
  61. package/dist/schema/dict.d.ts +18 -0
  62. package/dist/schema/dict.d.ts.map +1 -0
  63. package/dist/schema/dict.js +48 -0
  64. package/dist/schema/dict.js.map +1 -0
  65. package/dist/schema/discriminated-union.d.ts +34 -0
  66. package/dist/schema/discriminated-union.d.ts.map +1 -0
  67. package/dist/schema/discriminated-union.js +93 -0
  68. package/dist/schema/discriminated-union.js.map +1 -0
  69. package/dist/schema/enum.d.ts +7 -0
  70. package/dist/schema/enum.d.ts.map +1 -0
  71. package/dist/schema/enum.js +19 -0
  72. package/dist/schema/enum.js.map +1 -0
  73. package/dist/schema/integer.d.ts +13 -0
  74. package/dist/schema/integer.d.ts.map +1 -0
  75. package/dist/schema/integer.js +32 -0
  76. package/dist/schema/integer.js.map +1 -0
  77. package/dist/schema/intersection.d.ts +16 -0
  78. package/dist/schema/intersection.d.ts.map +1 -0
  79. package/dist/schema/intersection.js +33 -0
  80. package/dist/schema/intersection.js.map +1 -0
  81. package/dist/schema/literal.d.ts +7 -0
  82. package/dist/schema/literal.d.ts.map +1 -0
  83. package/dist/schema/literal.js +19 -0
  84. package/dist/schema/literal.js.map +1 -0
  85. package/dist/schema/never.d.ts +5 -0
  86. package/dist/schema/never.d.ts.map +1 -0
  87. package/dist/schema/never.js +11 -0
  88. package/dist/schema/never.js.map +1 -0
  89. package/dist/schema/null.d.ts +7 -0
  90. package/dist/schema/null.d.ts.map +1 -0
  91. package/dist/schema/null.js +18 -0
  92. package/dist/schema/null.js.map +1 -0
  93. package/dist/schema/object.d.ts +47 -0
  94. package/dist/schema/object.d.ts.map +1 -0
  95. package/dist/schema/object.js +89 -0
  96. package/dist/schema/object.js.map +1 -0
  97. package/dist/schema/params.d.ts +22 -0
  98. package/dist/schema/params.d.ts.map +1 -0
  99. package/dist/schema/params.js +115 -0
  100. package/dist/schema/params.js.map +1 -0
  101. package/dist/schema/payload.d.ts +19 -0
  102. package/dist/schema/payload.d.ts.map +1 -0
  103. package/dist/schema/payload.js +16 -0
  104. package/dist/schema/payload.js.map +1 -0
  105. package/dist/schema/permission-set.d.ts +15 -0
  106. package/dist/schema/permission-set.d.ts.map +1 -0
  107. package/dist/schema/permission-set.js +16 -0
  108. package/dist/schema/permission-set.js.map +1 -0
  109. package/dist/schema/permission.d.ts +9 -0
  110. package/dist/schema/permission.d.ts.map +1 -0
  111. package/dist/schema/permission.js +14 -0
  112. package/dist/schema/permission.js.map +1 -0
  113. package/dist/schema/procedure.d.ts +17 -0
  114. package/dist/schema/procedure.d.ts.map +1 -0
  115. package/dist/schema/procedure.js +20 -0
  116. package/dist/schema/procedure.js.map +1 -0
  117. package/dist/schema/query.d.ts +15 -0
  118. package/dist/schema/query.d.ts.map +1 -0
  119. package/dist/schema/query.js +18 -0
  120. package/dist/schema/query.js.map +1 -0
  121. package/dist/schema/record.d.ts +37 -0
  122. package/dist/schema/record.d.ts.map +1 -0
  123. package/dist/schema/record.js +64 -0
  124. package/dist/schema/record.js.map +1 -0
  125. package/dist/schema/ref.d.ts +10 -0
  126. package/dist/schema/ref.d.ts.map +1 -0
  127. package/dist/schema/ref.js +36 -0
  128. package/dist/schema/ref.js.map +1 -0
  129. package/dist/schema/string.d.ts +24 -0
  130. package/dist/schema/string.d.ts.map +1 -0
  131. package/dist/schema/string.js +107 -0
  132. package/dist/schema/string.js.map +1 -0
  133. package/dist/schema/subscription.d.ts +16 -0
  134. package/dist/schema/subscription.d.ts.map +1 -0
  135. package/dist/schema/subscription.js +18 -0
  136. package/dist/schema/subscription.js.map +1 -0
  137. package/dist/schema/token.d.ts +10 -0
  138. package/dist/schema/token.d.ts.map +1 -0
  139. package/dist/schema/token.js +36 -0
  140. package/dist/schema/token.js.map +1 -0
  141. package/dist/schema/typed-object.d.ts +32 -0
  142. package/dist/schema/typed-object.d.ts.map +1 -0
  143. package/dist/schema/typed-object.js +40 -0
  144. package/dist/schema/typed-object.js.map +1 -0
  145. package/dist/schema/typed-ref.d.ts +30 -0
  146. package/dist/schema/typed-ref.d.ts.map +1 -0
  147. package/dist/schema/typed-ref.js +44 -0
  148. package/dist/schema/typed-ref.js.map +1 -0
  149. package/dist/schema/typed-union.d.ts +26 -0
  150. package/dist/schema/typed-union.d.ts.map +1 -0
  151. package/dist/schema/typed-union.js +54 -0
  152. package/dist/schema/typed-union.js.map +1 -0
  153. package/dist/schema/union.d.ts +9 -0
  154. package/dist/schema/union.d.ts.map +1 -0
  155. package/dist/schema/union.js +29 -0
  156. package/dist/schema/union.js.map +1 -0
  157. package/dist/schema/unknown-object.d.ts +9 -0
  158. package/dist/schema/unknown-object.d.ts.map +1 -0
  159. package/dist/schema/unknown-object.js +16 -0
  160. package/dist/schema/unknown-object.js.map +1 -0
  161. package/dist/schema/unknown.d.ts +5 -0
  162. package/dist/schema/unknown.d.ts.map +1 -0
  163. package/dist/schema/unknown.js +11 -0
  164. package/dist/schema/unknown.js.map +1 -0
  165. package/dist/schema.d.ts +34 -0
  166. package/dist/schema.d.ts.map +1 -0
  167. package/dist/schema.js +41 -0
  168. package/dist/schema.js.map +1 -0
  169. package/dist/util/array-agg.d.ts +20 -0
  170. package/dist/util/array-agg.d.ts.map +1 -0
  171. package/dist/util/array-agg.js +42 -0
  172. package/dist/util/array-agg.js.map +1 -0
  173. package/dist/validation/property-key.d.ts +2 -0
  174. package/dist/validation/property-key.d.ts.map +1 -0
  175. package/dist/validation/property-key.js +3 -0
  176. package/dist/validation/property-key.js.map +1 -0
  177. package/dist/validation/validation-error.d.ts +9 -0
  178. package/dist/validation/validation-error.d.ts.map +1 -0
  179. package/dist/validation/validation-error.js +27 -0
  180. package/dist/validation/validation-error.js.map +1 -0
  181. package/dist/validation/validation-issue.d.ts +45 -0
  182. package/dist/validation/validation-issue.d.ts.map +1 -0
  183. package/dist/validation/validation-issue.js +167 -0
  184. package/dist/validation/validation-issue.js.map +1 -0
  185. package/dist/validation/validator.d.ts +113 -0
  186. package/dist/validation/validator.d.ts.map +1 -0
  187. package/dist/validation/validator.js +209 -0
  188. package/dist/validation/validator.js.map +1 -0
  189. package/dist/validation.d.ts +5 -0
  190. package/dist/validation.d.ts.map +1 -0
  191. package/dist/validation.js +8 -0
  192. package/dist/validation.js.map +1 -0
  193. package/package.json +45 -0
  194. package/src/core/$type.ts +19 -0
  195. package/src/core/record-key.ts +15 -0
  196. package/src/core/result.ts +73 -0
  197. package/src/core/string-format.ts +124 -0
  198. package/src/core/types.ts +22 -0
  199. package/src/core.ts +5 -0
  200. package/src/external.ts +365 -0
  201. package/src/index.ts +3 -0
  202. package/src/schema/_parameters.ts +26 -0
  203. package/src/schema/array.ts +51 -0
  204. package/src/schema/blob.ts +82 -0
  205. package/src/schema/boolean.ts +24 -0
  206. package/src/schema/bytes.ts +38 -0
  207. package/src/schema/cid.ts +27 -0
  208. package/src/schema/custom.ts +36 -0
  209. package/src/schema/dict.ts +69 -0
  210. package/src/schema/discriminated-union.ts +144 -0
  211. package/src/schema/enum.ts +20 -0
  212. package/src/schema/integer.ts +41 -0
  213. package/src/schema/intersection.ts +57 -0
  214. package/src/schema/literal.ts +20 -0
  215. package/src/schema/never.ts +14 -0
  216. package/src/schema/null.ts +20 -0
  217. package/src/schema/object.test.ts +138 -0
  218. package/src/schema/object.ts +180 -0
  219. package/src/schema/params.ts +157 -0
  220. package/src/schema/payload.ts +53 -0
  221. package/src/schema/permission-set.ts +22 -0
  222. package/src/schema/permission.ts +15 -0
  223. package/src/schema/procedure.ts +35 -0
  224. package/src/schema/query.ts +28 -0
  225. package/src/schema/record.ts +106 -0
  226. package/src/schema/ref.ts +47 -0
  227. package/src/schema/string.ts +139 -0
  228. package/src/schema/subscription.ts +35 -0
  229. package/src/schema/token.ts +41 -0
  230. package/src/schema/typed-object.ts +64 -0
  231. package/src/schema/typed-ref.ts +68 -0
  232. package/src/schema/typed-union.ts +106 -0
  233. package/src/schema/union.ts +40 -0
  234. package/src/schema/unknown-object.ts +20 -0
  235. package/src/schema/unknown.ts +10 -0
  236. package/src/schema.ts +40 -0
  237. package/src/util/array-agg.test.ts +41 -0
  238. package/src/util/array-agg.ts +43 -0
  239. package/src/validation/property-key.ts +1 -0
  240. package/src/validation/validation-error.ts +32 -0
  241. package/src/validation/validation-issue.ts +231 -0
  242. package/src/validation/validator.ts +361 -0
  243. package/src/validation.ts +4 -0
@@ -0,0 +1,4 @@
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>;
4
+ //# sourceMappingURL=$type.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.$type = $type;
4
+ function $type(nsid, hash) {
5
+ return (hash === 'main' ? nsid : `${nsid}#${hash}`);
6
+ }
7
+ //# sourceMappingURL=$type.js.map
@@ -0,0 +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"]}
@@ -0,0 +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;
4
+ //# sourceMappingURL=record-key.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,16 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.isRecordKey = isRecordKey;
4
+ exports.asRecordKey = asRecordKey;
5
+ function isRecordKey(key) {
6
+ return (key === 'any' ||
7
+ key === 'nsid' ||
8
+ key === 'tid' ||
9
+ (typeof key === 'string' && key.startsWith('literal:')));
10
+ }
11
+ function asRecordKey(key) {
12
+ if (isRecordKey(key))
13
+ return key;
14
+ throw new Error(`Invalid record key: ${String(key)}`);
15
+ }
16
+ //# sourceMappingURL=record-key.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,57 @@
1
+ export type ResultSuccess<V = any> = {
2
+ success: true;
3
+ value: V;
4
+ };
5
+ export type ResultFailure<E = Error> = {
6
+ success: false;
7
+ error: E;
8
+ };
9
+ export type Result<V = any, E = Error> = ResultSuccess<V> | ResultFailure<E>;
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;
13
+ export declare function successValue<T>(result: ResultSuccess<T>): T;
14
+ /**
15
+ * Catches any error and wraps it in a {@link ResultFailure<Error>}.
16
+ *
17
+ * @param err - The error to catch.
18
+ * @returns A {@link ResultFailure<Error>} containing the caught error.
19
+ * @example
20
+ *
21
+ * ```ts
22
+ * declare function someFunction(): Promise<ResultSuccess<string>>
23
+ *
24
+ * const result = await someFunction().catch(catchall)
25
+ * if (result.success) {
26
+ * console.log(result.value) // string
27
+ * } else {
28
+ * console.error(result.error instanceof Error) // true
29
+ * console.error(result.error.message) // string
30
+ * }
31
+ * ```
32
+ */
33
+ export declare function catchall(err: unknown): ResultFailure<Error>;
34
+ /**
35
+ * Creates a catcher function for the given constructor that wraps caught errors
36
+ * in a {@link ResultFailure}.
37
+ *
38
+ * @example
39
+ *
40
+ * ```ts
41
+ * class FooError extends Error {}
42
+ * class BarError extends Error {}
43
+ *
44
+ * declare function someFunction(): Promise<ResultSuccess<string>>
45
+ *
46
+ * const result = await someFunction()
47
+ * .catch(createCatcher(FooError))
48
+ * .catch(createCatcher(BarError))
49
+ *
50
+ * if (result.success) {
51
+ * console.log(result.value) // string
52
+ * } else {
53
+ * console.error(result.error) // FooError | BarError
54
+ * }
55
+ */
56
+ export declare function createCatcher<T>(Ctor: new (...args: any[]) => T): (err: unknown) => ResultFailure<T>;
57
+ //# sourceMappingURL=result.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,74 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.success = success;
4
+ exports.failure = failure;
5
+ exports.failureError = failureError;
6
+ exports.successValue = successValue;
7
+ exports.catchall = catchall;
8
+ exports.createCatcher = createCatcher;
9
+ function success(value) {
10
+ return { success: true, value };
11
+ }
12
+ function failure(error) {
13
+ return { success: false, error };
14
+ }
15
+ function failureError(result) {
16
+ return result.error;
17
+ }
18
+ function successValue(result) {
19
+ return result.value;
20
+ }
21
+ /**
22
+ * Catches any error and wraps it in a {@link ResultFailure<Error>}.
23
+ *
24
+ * @param err - The error to catch.
25
+ * @returns A {@link ResultFailure<Error>} containing the caught error.
26
+ * @example
27
+ *
28
+ * ```ts
29
+ * declare function someFunction(): Promise<ResultSuccess<string>>
30
+ *
31
+ * const result = await someFunction().catch(catchall)
32
+ * if (result.success) {
33
+ * console.log(result.value) // string
34
+ * } else {
35
+ * console.error(result.error instanceof Error) // true
36
+ * console.error(result.error.message) // string
37
+ * }
38
+ * ```
39
+ */
40
+ function catchall(err) {
41
+ if (err instanceof Error)
42
+ return failure(err);
43
+ return failure(new Error('Unknown error', { cause: err }));
44
+ }
45
+ /**
46
+ * Creates a catcher function for the given constructor that wraps caught errors
47
+ * in a {@link ResultFailure}.
48
+ *
49
+ * @example
50
+ *
51
+ * ```ts
52
+ * class FooError extends Error {}
53
+ * class BarError extends Error {}
54
+ *
55
+ * declare function someFunction(): Promise<ResultSuccess<string>>
56
+ *
57
+ * const result = await someFunction()
58
+ * .catch(createCatcher(FooError))
59
+ * .catch(createCatcher(BarError))
60
+ *
61
+ * if (result.success) {
62
+ * console.log(result.value) // string
63
+ * } else {
64
+ * console.error(result.error) // FooError | BarError
65
+ * }
66
+ */
67
+ function createCatcher(Ctor) {
68
+ return (err) => {
69
+ if (err instanceof Ctor)
70
+ return failure(err);
71
+ throw err;
72
+ };
73
+ }
74
+ //# sourceMappingURL=result.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,31 @@
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;
17
+ 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>;
24
+ 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>;
29
+ export declare function assertStringFormat<F extends StringFormat>(input: string, format: F): asserts input is InferStringFormat<F>;
30
+ export {};
31
+ //# sourceMappingURL=string-format.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,81 @@
1
+ "use strict";
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;
4
+ exports.assertStringFormat = assertStringFormat;
5
+ const lex_data_1 = require("@atproto/lex-data");
6
+ 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.
22
+ exports.assertDid = syntax_1.ensureValidDid;
23
+ exports.assertAtUri = syntax_1.ensureValidAtUri;
24
+ exports.assertNsid = syntax_1.ensureValidNsid;
25
+ exports.assertTid = syntax_1.ensureValidTid;
26
+ exports.assertRecordKey = syntax_1.ensureValidRecordKey;
27
+ exports.assertDatetime = syntax_1.ensureValidDatetime;
28
+ exports.assertCidString = lex_data_1.ensureValidCidString;
29
+ exports.assertHandle = syntax_1.ensureValidHandle;
30
+ // Export utilities for formats missing from @atproto/syntax
31
+ const assertUri = (input) => {
32
+ if (!/^\w+:(?:\/\/)?[^\s/][^\s]*$/.test(input)) {
33
+ throw new Error('Invalid URI');
34
+ }
35
+ };
36
+ exports.assertUri = assertUri;
37
+ const assertLanguage = (input) => {
38
+ if (!(0, lex_data_1.isLanguage)(input)) {
39
+ throw new Error('Invalid BCP 47 string');
40
+ }
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;
60
+ const formatters = /*#__PURE__*/ new Map([
61
+ ['datetime', exports.assertDatetime],
62
+ ['uri', exports.assertUri],
63
+ ['at-uri', exports.assertAtUri],
64
+ ['did', exports.assertDid],
65
+ ['handle', exports.assertHandle],
66
+ ['at-identifier', exports.assertAtIdentifier],
67
+ ['nsid', exports.assertNsid],
68
+ ['cid', exports.assertCidString],
69
+ ['language', exports.assertLanguage],
70
+ ['tid', exports.assertTid],
71
+ ['record-key', exports.assertRecordKey],
72
+ ]);
73
+ function assertStringFormat(input, format) {
74
+ const assertFn = formatters.get(format);
75
+ if (assertFn)
76
+ assertFn(input);
77
+ // Fool-proof
78
+ else
79
+ throw new Error(`Unknown string format: ${format}`);
80
+ }
81
+ //# sourceMappingURL=string-format.js.map
@@ -0,0 +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"]}
@@ -0,0 +1,19 @@
1
+ /**
2
+ * Same as {@link string} but prevents TypeScript allowing union types to
3
+ * be widened to `string` in IDEs.
4
+ */
5
+ export type UnknownString = string & NonNullable<unknown>;
6
+ export type Simplify<T> = {
7
+ [K in keyof T]: T[K];
8
+ } & NonNullable<unknown>;
9
+ export type ArrayContaining<T, Items = unknown> = readonly [T, ...Items[]] | readonly [...Items[], T];
10
+ declare const __restricted: unique symbol;
11
+ /**
12
+ * A type that represents a value that cannot be used, with a custom
13
+ * message explaining the restriction.
14
+ */
15
+ export type Restricted<Message extends string> = typeof __restricted & {
16
+ [__restricted]: Message;
17
+ };
18
+ export {};
19
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +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"]}
package/dist/core.d.ts ADDED
@@ -0,0 +1,6 @@
1
+ export * from './core/$type.js';
2
+ export * from './core/record-key.js';
3
+ export * from './core/result.js';
4
+ export * from './core/string-format.js';
5
+ export * from './core/types.js';
6
+ //# sourceMappingURL=core.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAA;AAC/B,cAAc,sBAAsB,CAAA;AACpC,cAAc,kBAAkB,CAAA;AAChC,cAAc,yBAAyB,CAAA;AACvC,cAAc,iBAAiB,CAAA"}
package/dist/core.js ADDED
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const tslib_1 = require("tslib");
4
+ tslib_1.__exportStar(require("./core/$type.js"), exports);
5
+ tslib_1.__exportStar(require("./core/record-key.js"), exports);
6
+ tslib_1.__exportStar(require("./core/result.js"), exports);
7
+ tslib_1.__exportStar(require("./core/string-format.js"), exports);
8
+ tslib_1.__exportStar(require("./core/types.js"), exports);
9
+ //# sourceMappingURL=core.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../src/core.ts"],"names":[],"mappings":";;;AAAA,0DAA+B;AAC/B,+DAAoC;AACpC,2DAAgC;AAChC,kEAAuC;AACvC,0DAA+B","sourcesContent":["export * from './core/$type.js'\nexport * from './core/record-key.js'\nexport * from './core/result.js'\nexport * from './core/string-format.js'\nexport * from './core/types.js'\n"]}
@@ -0,0 +1,86 @@
1
+ import { $Type, Nsid, RecordKey } from './core.js';
2
+ import { ArraySchema, ArraySchemaOptions, BlobSchema, BlobSchemaOptions, BooleanSchema, BooleanSchemaOptions, BytesSchema, BytesSchemaOptions, CidSchema, CustomAssertion, CustomSchema, DictSchema, DiscriminatedUnionSchema, DiscriminatedUnionSchemaVariants, EnumSchema, IntegerSchema, IntegerSchemaOptions, IntersectionSchema, IntersectionSchemaValidators, LiteralSchema, NeverSchema, NullSchema, ObjectSchema, ObjectSchemaOptions, ObjectSchemaProperties, ParamsSchema, ParamsSchemaOptions, ParamsSchemaProperties, Payload, PayloadBody, Permission, PermissionOptions, PermissionSet, PermissionSetOptions, Procedure, Query, RecordSchema, RefSchema, RefSchemaGetter, StringSchema, StringSchemaOptions, Subscription, TokenSchema, TypedObjectSchema, TypedRefGetter, TypedRefSchema, TypedUnionSchema, UnionSchema, UnionSchemaValidators, UnknownObjectOutput, UnknownObjectSchema, UnknownSchema } from './schema.js';
3
+ import { Infer, PropertyKey, Validator } from './validation.js';
4
+ export * from './core.js';
5
+ export * from './schema.js';
6
+ export * from './validation.js';
7
+ export declare function never(): NeverSchema;
8
+ export declare function unknown(): UnknownSchema;
9
+ export declare function _null(): NullSchema;
10
+ export { _null as null };
11
+ export declare function literal<const V extends null | string | number | boolean>(value: V): LiteralSchema<V>;
12
+ export declare function _enum<const V extends null | string | number | boolean>(value: readonly V[]): EnumSchema<V>;
13
+ export { _enum as enum };
14
+ export declare function boolean(options?: BooleanSchemaOptions): BooleanSchema;
15
+ export declare function integer(options?: IntegerSchemaOptions): IntegerSchema;
16
+ export declare function cidLink(): CidSchema;
17
+ export declare function bytes(options?: BytesSchemaOptions): BytesSchema;
18
+ export declare function blob(options?: BlobSchemaOptions): BlobSchema<BlobSchemaOptions>;
19
+ export declare function string<const O extends StringSchemaOptions = NonNullable<unknown>>(options?: StringSchemaOptions & O): StringSchema<O>;
20
+ export declare function array<const T>(items: Validator<T>, options?: ArraySchemaOptions): ArraySchema<T>;
21
+ export declare function object<const P extends ObjectSchemaProperties, const O extends ObjectSchemaOptions = NonNullable<unknown>>(properties: ObjectSchemaProperties & P, options?: ObjectSchemaOptions & O): ObjectSchema<P, O, import("./schema.js").ObjectSchemaOutput<P, O>>;
22
+ export declare function dict<const K extends Validator, const V extends Validator>(key: K, value: V): DictSchema<K, V>;
23
+ export type { UnknownObjectOutput as UnknownObject };
24
+ export declare function unknownObject(): UnknownObjectSchema;
25
+ export declare function ref<T>(get: RefSchemaGetter<T>): RefSchema<T>;
26
+ export declare function custom<T>(assertion: CustomAssertion<T>, message: string, path?: PropertyKey | readonly PropertyKey[]): CustomSchema<T>;
27
+ export declare function union<const V extends UnionSchemaValidators>(validators: V): UnionSchema<V>;
28
+ export declare function intersection<const V extends IntersectionSchemaValidators>(validators: V): IntersectionSchema<V>;
29
+ export declare function discriminatedUnion<const Discriminator extends string, const Options extends DiscriminatedUnionSchemaVariants<Discriminator>>(discriminator: Discriminator, variants: Options): DiscriminatedUnionSchema<Discriminator, Options>;
30
+ export declare function token<const N extends Nsid, const H extends string>(nsid: N, hash: H): TokenSchema<$Type<N, H>>;
31
+ export declare function typedRef<const V extends {
32
+ $type?: string;
33
+ }>(get: TypedRefGetter<V>): TypedRefSchema<V>;
34
+ export declare function typedUnion<const R extends readonly TypedRefSchema[], const C extends boolean>(refs: R, closed: C): TypedUnionSchema<R, C>;
35
+ /**
36
+ * This function offers two overloads:
37
+ * - One that allows creating a {@link TypedObjectSchema}, and infer the output
38
+ * type from the provided arguments, without requiring to specify any of the
39
+ * generics. This is useful when you want to define a record without
40
+ * explicitly defining its interface. This version does not support circular
41
+ * references, as TypeScript cannot infer types in such cases.
42
+ * - One allows creating a {@link TypedObjectSchema} with an explicitly defined
43
+ * interface. This will typically be used by codegen (`lex build`) to generate
44
+ * schemas that work even if they contain circular references.
45
+ */
46
+ export declare function typedObject<const N extends Nsid, const H extends string, const Schema extends Validator<{
47
+ [_ in string]?: unknown;
48
+ }>>(nsid: N, hash: H, schema: Schema): TypedObjectSchema<$Type<N, H>, Schema>;
49
+ export declare function typedObject<const V extends {
50
+ $type?: $Type;
51
+ }>(nsid: V extends {
52
+ $type?: infer T extends string;
53
+ } ? T extends `${infer N}#${string}` ? N : T : never, hash: V extends {
54
+ $type?: infer T extends string;
55
+ } ? T extends `${string}#${infer H}` ? H : 'main' : never, schema: Validator<Omit<V, '$type'>>): TypedObjectSchema<NonNullable<V['$type']>, typeof schema, V>;
56
+ /**
57
+ * Ensures that a `$type` used in a record is a valid NSID (i.e. no fragment).
58
+ */
59
+ type AsNsid<T> = T extends `${string}#${string}` ? never : T;
60
+ /**
61
+ * This function offers two overloads:
62
+ * - One that allows creating a {@link RecordSchema}, and infer the output type
63
+ * from the provided arguments, without requiring to specify any of the
64
+ * generics. This is useful when you want to define a record without
65
+ * explicitly defining its interface. This version does not support circular
66
+ * references, as TypeScript cannot infer types in such cases.
67
+ * - One allows creating a {@link RecordSchema} with an explicitly defined
68
+ * interface. This will typically be used by codegen (`lex build`) to generate
69
+ * schemas that work even if they contain circular references.
70
+ */
71
+ export declare function record<const K extends RecordKey, const T extends Nsid, const S extends Validator<{
72
+ [_ in string]?: unknown;
73
+ }>>(key: K, type: AsNsid<T>, schema: S): RecordSchema<K, T, S, Infer<S> & {
74
+ $type: T;
75
+ }>;
76
+ export declare function record<const K extends RecordKey, const V extends {
77
+ $type: Nsid;
78
+ }>(key: K, type: AsNsid<V['$type']>, schema: Validator<Omit<V, '$type'>>): RecordSchema<K, V['$type'], typeof schema, V>;
79
+ export declare function params<const P extends ParamsSchemaProperties = NonNullable<unknown>, const O extends ParamsSchemaOptions = ParamsSchemaOptions>(properties?: P, options?: ParamsSchemaOptions & O): ParamsSchema<P, O, import("./schema.js").ObjectSchemaPropertiesOutput<P, O>>;
80
+ export declare function payload<const E extends string | undefined = undefined, const S extends PayloadBody<E> = undefined>(encoding?: E, schema?: S): Payload<E, S>;
81
+ export declare function query<const N extends Nsid, const P extends ParamsSchema, const O extends Payload, const E extends undefined | readonly string[] = undefined>(nsid: N, parameters: P, output: O, errors?: E): Query<N, P, O, E>;
82
+ export declare function procedure<const N extends Nsid, const P extends ParamsSchema, const I extends Payload, const O extends Payload, const E extends undefined | readonly string[] = undefined>(nsid: N, parameters: P, input: I, output: O, errors?: E): Procedure<N, P, I, O, E>;
83
+ export declare function subscription<const N extends string, const P extends ParamsSchema, const M extends undefined | RefSchema | TypedUnionSchema | ObjectSchema, const E extends undefined | readonly string[] = undefined>(nsid: N, parameters: P, message: M, errors?: E): Subscription<N, P, M, E>;
84
+ export declare function permission<const R extends string, const O extends PermissionOptions>(resource: R, options?: PermissionOptions & O): Permission<R, O>;
85
+ export declare function permissionSet<const N extends string, const P extends readonly Permission[], const O extends PermissionSetOptions>(nsid: N, permissions: P, options?: PermissionSetOptions & O): PermissionSet<N, P, O>;
86
+ //# sourceMappingURL=external.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"external.d.ts","sourceRoot":"","sources":["../src/external.ts"],"names":[],"mappings":"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"}