pema 0.1.0 → 0.2.1

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 (358) hide show
  1. package/LICENSE +19 -0
  2. package/lib/private/ArrayType.d.ts +31 -5
  3. package/lib/private/ArrayType.js +86 -22
  4. package/lib/private/BigIntDataType.d.ts +3 -0
  5. package/lib/private/BigIntDataType.js +2 -0
  6. package/lib/private/BigIntType.d.ts +8 -3
  7. package/lib/private/BigIntType.js +7 -4
  8. package/lib/private/BigUintDataType.d.ts +3 -0
  9. package/lib/private/BigUintDataType.js +2 -0
  10. package/lib/private/BigUintType.d.ts +10 -0
  11. package/lib/private/BigUintType.js +10 -0
  12. package/lib/private/BlobType.d.ts +12 -2
  13. package/lib/private/BlobType.js +12 -2
  14. package/lib/private/BooleanType.d.ts +10 -2
  15. package/lib/private/BooleanType.js +14 -2
  16. package/lib/private/BuiltinType.d.ts +7 -5
  17. package/lib/private/BuiltinType.js +18 -17
  18. package/lib/private/CoerceKey.d.ts +4 -0
  19. package/lib/private/CoerceKey.js +3 -0
  20. package/lib/private/ConstructorType.d.ts +10 -4
  21. package/lib/private/ConstructorType.js +13 -11
  22. package/lib/private/DataKey.d.ts +4 -0
  23. package/lib/private/DataKey.js +2 -0
  24. package/lib/private/DataType.d.ts +23 -0
  25. package/lib/private/DataType.js +2 -0
  26. package/lib/private/DateType.d.ts +12 -2
  27. package/lib/private/DateType.js +15 -2
  28. package/lib/private/DecrementDepth.d.ts +3 -0
  29. package/lib/private/DecrementDepth.js +2 -0
  30. package/lib/private/DefaultType.d.ts +13 -6
  31. package/lib/private/DefaultType.js +19 -11
  32. package/lib/private/FileType.d.ts +12 -2
  33. package/lib/private/FileType.js +12 -2
  34. package/lib/private/FloatDataType.d.ts +3 -0
  35. package/lib/private/FloatDataType.js +2 -0
  36. package/lib/private/GenericType.d.ts +2 -2
  37. package/lib/private/GenericType.js +2 -2
  38. package/lib/private/Id.d.ts +3 -0
  39. package/lib/private/Id.js +2 -0
  40. package/lib/private/Infer.d.ts +2 -2
  41. package/lib/private/InferInputSchema.d.ts +26 -0
  42. package/lib/private/InferInputSchema.js +2 -0
  43. package/lib/private/InferSchema.d.ts +5 -5
  44. package/lib/private/InferStore.d.ts +9 -0
  45. package/lib/private/InferStore.js +2 -0
  46. package/lib/private/InferStoreOut.d.ts +8 -0
  47. package/lib/private/InferStoreOut.js +2 -0
  48. package/lib/private/IntDataType.d.ts +3 -0
  49. package/lib/private/IntDataType.js +2 -0
  50. package/lib/private/IntType.d.ts +10 -5
  51. package/lib/private/IntType.js +13 -12
  52. package/lib/private/Issue.d.ts +6 -0
  53. package/lib/private/Issue.js +2 -0
  54. package/lib/private/LiteralType.d.ts +9 -2
  55. package/lib/private/LiteralType.js +17 -9
  56. package/lib/private/NormalizeSchema.d.ts +12 -7
  57. package/lib/private/NullType.d.ts +6 -2
  58. package/lib/private/NullType.js +11 -11
  59. package/lib/private/NumberType.d.ts +7 -3
  60. package/lib/private/NumberType.js +7 -4
  61. package/lib/private/NumericType.d.ts +25 -0
  62. package/lib/private/NumericType.js +38 -0
  63. package/lib/private/ObjectType.d.ts +23 -0
  64. package/lib/private/ObjectType.js +53 -0
  65. package/lib/private/OptionalType.d.ts +12 -5
  66. package/lib/private/OptionalType.js +16 -4
  67. package/lib/private/ParseError.d.ts +10 -0
  68. package/lib/private/ParseError.js +51 -0
  69. package/lib/private/ParseIssue.d.ts +5 -0
  70. package/lib/private/ParseIssue.js +2 -0
  71. package/lib/private/ParseOptions.d.ts +10 -0
  72. package/lib/private/ParseOptions.js +3 -0
  73. package/lib/private/Parsed.d.ts +24 -0
  74. package/lib/private/Parsed.js +17 -0
  75. package/lib/private/ParsedKey.d.ts +4 -0
  76. package/lib/private/ParsedKey.js +3 -0
  77. package/lib/private/PartialType.d.ts +25 -0
  78. package/lib/private/PartialType.js +69 -0
  79. package/lib/private/Partialable.d.ts +5 -0
  80. package/lib/private/Partialable.js +2 -0
  81. package/lib/private/PrimaryType.d.ts +14 -0
  82. package/lib/private/PrimaryType.js +26 -0
  83. package/lib/private/PrimitiveType.d.ts +12 -4
  84. package/lib/private/PrimitiveType.js +50 -17
  85. package/lib/private/PureType.d.ts +15 -0
  86. package/lib/private/PureType.js +21 -0
  87. package/lib/private/RecordType.d.ts +19 -4
  88. package/lib/private/RecordType.js +43 -14
  89. package/lib/private/RecordTypeKey.d.ts +1 -1
  90. package/lib/private/Schema.d.ts +3 -3
  91. package/lib/private/SchemaError.d.ts +4 -0
  92. package/lib/private/SchemaError.js +8 -0
  93. package/lib/private/Serialized.d.ts +72 -0
  94. package/lib/private/Serialized.js +2 -0
  95. package/lib/private/StoreId.d.ts +6 -0
  96. package/lib/private/StoreId.js +2 -0
  97. package/lib/private/StoreSchema.d.ts +8 -0
  98. package/lib/private/StoreSchema.js +2 -0
  99. package/lib/private/StoreType.d.ts +21 -0
  100. package/lib/private/StoreType.js +45 -0
  101. package/lib/private/Storeable.d.ts +15 -0
  102. package/lib/private/Storeable.js +7 -0
  103. package/lib/private/StringType.d.ts +17 -5
  104. package/lib/private/StringType.js +47 -13
  105. package/lib/private/SymbolType.d.ts +4 -1
  106. package/lib/private/SymbolType.js +5 -2
  107. package/lib/private/TupleType.d.ts +11 -4
  108. package/lib/private/TupleType.js +16 -22
  109. package/lib/private/Type.d.ts +5 -3
  110. package/lib/private/Type.js +2 -2
  111. package/lib/private/URLType.d.ts +16 -2
  112. package/lib/private/URLType.js +12 -2
  113. package/lib/private/UintDataType.d.ts +3 -0
  114. package/lib/private/UintDataType.js +2 -0
  115. package/lib/private/UintType.d.ts +14 -7
  116. package/lib/private/UintType.js +20 -12
  117. package/lib/private/UndefinedType.d.ts +4 -1
  118. package/lib/private/UndefinedType.js +7 -2
  119. package/lib/private/UnionType.d.ts +15 -4
  120. package/lib/private/UnionType.js +32 -26
  121. package/lib/private/UnknownType.d.ts +5 -0
  122. package/lib/private/UnknownType.js +7 -0
  123. package/lib/private/Validator.d.ts +1 -1
  124. package/lib/private/VirtualType.d.ts +6 -0
  125. package/lib/private/VirtualType.js +11 -0
  126. package/lib/private/array.d.ts +6 -3
  127. package/lib/private/array.js +7 -1
  128. package/lib/private/bigint.d.ts +1 -3
  129. package/lib/private/bigint.js +1 -2
  130. package/lib/private/biguint.d.ts +2 -0
  131. package/lib/private/biguint.js +2 -0
  132. package/lib/private/boolean.d.ts +3 -0
  133. package/lib/private/boolean.js +3 -0
  134. package/lib/private/coerce/bigint.d.ts +2 -0
  135. package/lib/private/coerce/bigint.js +13 -0
  136. package/lib/private/coerce/date.d.ts +2 -0
  137. package/lib/private/coerce/date.js +56 -0
  138. package/lib/private/coerce/int.d.ts +2 -0
  139. package/lib/private/coerce/int.js +8 -0
  140. package/lib/private/constructor.d.ts +5 -2
  141. package/lib/private/constructor.js +3 -0
  142. package/lib/private/error/fail.d.ts +3 -0
  143. package/lib/private/error/fail.js +5 -0
  144. package/lib/private/error/schemafail.d.ts +3 -0
  145. package/lib/private/error/schemafail.js +5 -0
  146. package/lib/private/error.d.ts +3 -2
  147. package/lib/private/error.js +10 -3
  148. package/lib/private/expect.d.ts +12 -11
  149. package/lib/private/expect.js +22 -11
  150. package/lib/private/expected.js +10 -1
  151. package/lib/private/f32.d.ts +4 -0
  152. package/lib/private/f32.js +4 -0
  153. package/lib/private/f64.d.ts +4 -0
  154. package/lib/private/f64.js +3 -0
  155. package/lib/private/i128.d.ts +4 -0
  156. package/lib/private/i128.js +6 -0
  157. package/lib/private/i16.d.ts +4 -0
  158. package/lib/private/i16.js +6 -0
  159. package/lib/private/i32.d.ts +4 -0
  160. package/lib/private/i32.js +6 -0
  161. package/lib/private/i64.d.ts +4 -0
  162. package/lib/private/i64.js +6 -0
  163. package/lib/private/i8.d.ts +4 -0
  164. package/lib/private/i8.js +6 -0
  165. package/lib/private/index.d.ts +4 -2
  166. package/lib/private/index.js +5 -40
  167. package/lib/private/int.d.ts +1 -3
  168. package/lib/private/int.js +1 -2
  169. package/lib/private/is-parsed-type.d.ts +3 -0
  170. package/lib/private/is-parsed-type.js +6 -0
  171. package/lib/private/json/JSONIssue.d.ts +6 -0
  172. package/lib/private/json/JSONIssue.js +2 -0
  173. package/lib/private/json/JSONPayload.d.ts +5 -0
  174. package/lib/private/json/JSONPayload.js +2 -0
  175. package/lib/private/literal.d.ts +1 -2
  176. package/lib/private/literal.js +1 -1
  177. package/lib/private/normalize.d.ts +4 -0
  178. package/lib/private/normalize.js +42 -0
  179. package/lib/private/number.d.ts +1 -3
  180. package/lib/private/number.js +1 -2
  181. package/lib/private/object.d.ts +11 -0
  182. package/lib/private/object.js +10 -0
  183. package/lib/private/optional.d.ts +2 -2
  184. package/lib/private/partial.d.ts +9 -0
  185. package/lib/private/partial.js +8 -0
  186. package/lib/private/path/join.d.ts +3 -0
  187. package/lib/private/path/join.js +13 -0
  188. package/lib/private/path/next.d.ts +9 -0
  189. package/lib/private/path/next.js +9 -0
  190. package/lib/private/path/rebase.d.ts +3 -0
  191. package/lib/private/path/rebase.js +9 -0
  192. package/lib/private/primary.d.ts +4 -0
  193. package/lib/private/primary.js +3 -0
  194. package/lib/private/pure.d.ts +3 -0
  195. package/lib/private/pure.js +5 -0
  196. package/lib/private/record.d.ts +5 -2
  197. package/lib/private/record.js +3 -0
  198. package/lib/private/spec/bigint.d.ts +5 -0
  199. package/lib/private/spec/bigint.js +73 -0
  200. package/lib/private/spec/biguint.d.ts +5 -0
  201. package/lib/private/spec/biguint.js +73 -0
  202. package/lib/private/spec/int.d.ts +5 -0
  203. package/lib/private/spec/int.js +70 -0
  204. package/lib/private/spec/uint.d.ts +5 -0
  205. package/lib/private/spec/uint.js +73 -0
  206. package/lib/private/string.d.ts +3 -0
  207. package/lib/private/string.js +3 -0
  208. package/lib/private/test/messages-of.d.ts +3 -0
  209. package/lib/private/test/messages-of.js +4 -0
  210. package/lib/private/test/paths-of.d.ts +3 -0
  211. package/lib/private/test/paths-of.js +4 -0
  212. package/lib/private/test/throws-issues.d.ts +4 -0
  213. package/lib/private/test/throws-issues.js +13 -0
  214. package/lib/private/trait/Default.d.ts +9 -0
  215. package/lib/private/trait/Default.js +4 -0
  216. package/lib/private/trait/Optional.d.ts +11 -0
  217. package/lib/private/trait/Optional.js +4 -0
  218. package/lib/private/tuple.d.ts +6 -2
  219. package/lib/private/tuple.js +6 -1
  220. package/lib/private/u128.d.ts +4 -0
  221. package/lib/private/u128.js +6 -0
  222. package/lib/private/u16.d.ts +4 -0
  223. package/lib/private/u16.js +6 -0
  224. package/lib/private/u32.d.ts +7 -0
  225. package/lib/private/u32.js +9 -0
  226. package/lib/private/u64.d.ts +4 -0
  227. package/lib/private/u64.js +6 -0
  228. package/lib/private/u8.d.ts +4 -0
  229. package/lib/private/u8.js +6 -0
  230. package/lib/private/uint.d.ts +1 -3
  231. package/lib/private/uint.js +1 -2
  232. package/lib/private/union.d.ts +6 -5
  233. package/lib/private/union.js +4 -1
  234. package/lib/private/unknown.d.ts +7 -0
  235. package/lib/private/unknown.js +6 -0
  236. package/lib/private/validator/email.d.ts +3 -0
  237. package/lib/private/validator/email.js +4 -0
  238. package/lib/private/validator/ends-with.d.ts +4 -0
  239. package/lib/private/validator/ends-with.js +11 -0
  240. package/lib/private/validator/f32.d.ts +2 -0
  241. package/lib/private/validator/f32.js +11 -0
  242. package/lib/private/validator/integer.d.ts +3 -0
  243. package/lib/private/validator/integer.js +12 -0
  244. package/lib/private/validator/isotime.d.ts +2 -0
  245. package/lib/private/validator/isotime.js +30 -0
  246. package/lib/private/validator/length.d.ts +5 -0
  247. package/lib/private/validator/length.js +29 -0
  248. package/lib/private/validator/max.d.ts +6 -0
  249. package/lib/private/validator/max.js +37 -0
  250. package/lib/private/validator/min.d.ts +6 -0
  251. package/lib/private/validator/min.js +37 -0
  252. package/lib/private/validator/port.d.ts +3 -0
  253. package/lib/private/validator/port.js +15 -0
  254. package/lib/private/validator/range.d.ts +3 -0
  255. package/lib/private/validator/range.js +22 -0
  256. package/lib/private/validator/regex.d.ts +5 -0
  257. package/lib/private/validator/regex.js +15 -0
  258. package/lib/private/validator/starts-with.d.ts +4 -0
  259. package/lib/private/validator/starts-with.js +11 -0
  260. package/lib/private/validator/unique-by.d.ts +2 -0
  261. package/lib/private/validator/unique-by.js +23 -0
  262. package/lib/private/validator/unique-with.d.ts +2 -0
  263. package/lib/private/validator/unique-with.js +18 -0
  264. package/lib/private/validator/unique.d.ts +2 -0
  265. package/lib/private/validator/unique.js +19 -0
  266. package/lib/private/validator/uuid.d.ts +3 -0
  267. package/lib/private/validator/uuid.js +4 -0
  268. package/lib/private/validator/values.d.ts +4 -0
  269. package/lib/private/validator/values.js +14 -0
  270. package/lib/public/DataType.d.ts +2 -0
  271. package/lib/public/DataType.js +2 -0
  272. package/lib/public/Id.d.ts +2 -0
  273. package/lib/public/Id.js +2 -0
  274. package/lib/public/InferStore.d.ts +2 -0
  275. package/lib/public/InferStore.js +2 -0
  276. package/lib/public/InferStoreOut.d.ts +2 -0
  277. package/lib/public/InferStoreOut.js +2 -0
  278. package/lib/public/Issue.d.ts +2 -0
  279. package/lib/public/Issue.js +2 -0
  280. package/lib/public/JSONPayload.d.ts +2 -0
  281. package/lib/public/JSONPayload.js +2 -0
  282. package/lib/public/ParseError.d.ts +2 -0
  283. package/lib/public/ParseError.js +2 -0
  284. package/lib/public/Serialized.d.ts +2 -0
  285. package/lib/public/Serialized.js +2 -0
  286. package/lib/public/StoreId.d.ts +2 -0
  287. package/lib/public/StoreId.js +2 -0
  288. package/lib/public/StoreSchema.d.ts +2 -0
  289. package/lib/public/StoreSchema.js +2 -0
  290. package/lib/public/StoreType.d.ts +3 -0
  291. package/lib/public/StoreType.js +2 -0
  292. package/lib/public/array.d.ts +3 -0
  293. package/lib/public/array.js +3 -0
  294. package/lib/public/bigint.d.ts +2 -0
  295. package/lib/public/bigint.js +2 -0
  296. package/lib/public/biguint.d.ts +2 -0
  297. package/lib/public/biguint.js +2 -0
  298. package/lib/public/boolean.d.ts +1 -0
  299. package/lib/public/boolean.js +1 -0
  300. package/lib/public/constructor.d.ts +1 -0
  301. package/lib/public/constructor.js +1 -0
  302. package/lib/public/f32.d.ts +2 -0
  303. package/lib/public/f32.js +2 -0
  304. package/lib/public/f64.d.ts +2 -0
  305. package/lib/public/f64.js +2 -0
  306. package/lib/public/i128.d.ts +2 -0
  307. package/lib/public/i128.js +2 -0
  308. package/lib/public/i16.d.ts +2 -0
  309. package/lib/public/i16.js +2 -0
  310. package/lib/public/i32.d.ts +2 -0
  311. package/lib/public/i32.js +2 -0
  312. package/lib/public/i64.d.ts +2 -0
  313. package/lib/public/i64.js +2 -0
  314. package/lib/public/i8.d.ts +2 -0
  315. package/lib/public/i8.js +2 -0
  316. package/lib/public/index.d.ts +6 -0
  317. package/lib/public/index.js +6 -0
  318. package/lib/public/number.d.ts +1 -0
  319. package/lib/public/number.js +1 -0
  320. package/lib/public/primary.d.ts +2 -0
  321. package/lib/public/primary.js +2 -0
  322. package/lib/public/pure.d.ts +2 -0
  323. package/lib/public/pure.js +2 -0
  324. package/lib/public/record.d.ts +1 -0
  325. package/lib/public/record.js +1 -0
  326. package/lib/public/string.d.ts +1 -0
  327. package/lib/public/string.js +1 -0
  328. package/lib/public/u128.d.ts +2 -0
  329. package/lib/public/u128.js +2 -0
  330. package/lib/public/u16.d.ts +2 -0
  331. package/lib/public/u16.js +2 -0
  332. package/lib/public/u32.d.ts +2 -0
  333. package/lib/public/u32.js +2 -0
  334. package/lib/public/u64.d.ts +2 -0
  335. package/lib/public/u64.js +2 -0
  336. package/lib/public/u8.d.ts +2 -0
  337. package/lib/public/u8.js +2 -0
  338. package/lib/public/uint.d.ts +3 -0
  339. package/lib/public/uint.js +3 -0
  340. package/lib/public/union.d.ts +1 -0
  341. package/lib/public/union.js +1 -0
  342. package/lib/public/unknown.d.ts +3 -0
  343. package/lib/public/unknown.js +2 -0
  344. package/package.json +14 -11
  345. package/lib/private/AbstractConstructor.d.ts +0 -3
  346. package/lib/private/AbstractConstructor.js +0 -2
  347. package/lib/private/MaybeInt.d.ts +0 -3
  348. package/lib/private/MaybeInt.js +0 -2
  349. package/lib/private/SchemaType.d.ts +0 -13
  350. package/lib/private/SchemaType.js +0 -63
  351. package/lib/private/Validated.d.ts +0 -8
  352. package/lib/private/Validated.js +0 -10
  353. package/lib/private/ValidatedKey.d.ts +0 -4
  354. package/lib/private/ValidatedKey.js +0 -3
  355. package/lib/private/is-int.d.ts +0 -3
  356. package/lib/private/is-int.js +0 -5
  357. package/lib/private/is_validated_type.d.ts +0 -4
  358. package/lib/private/is_validated_type.js +0 -5
@@ -0,0 +1,6 @@
1
+ import UintType from "#UintType";
2
+ import range from "#validator/range";
3
+ const from = 0;
4
+ const to = 2 ** 8 - 1;
5
+ export default new UintType("u8", [range(from, to)]);
6
+ //# sourceMappingURL=u8.js.map
@@ -1,4 +1,2 @@
1
- import UintType from "#UintType";
2
- declare const _default: UintType;
3
- export default _default;
1
+ export { default } from "#u32";
4
2
  //# sourceMappingURL=uint.d.ts.map
@@ -1,3 +1,2 @@
1
- import UintType from "#UintType";
2
- export default new UintType();
1
+ export { default } from "#u32";
3
2
  //# sourceMappingURL=uint.js.map
@@ -1,9 +1,10 @@
1
- import UnionType from "#UnionType";
2
- import type Schema from "#Schema";
3
1
  import type NormalizeSchema from "#NormalizeSchema";
4
- type NormalizeSchemas<T extends Schema[]> = {
2
+ import type Schema from "#Schema";
3
+ import UnionType from "#UnionType";
4
+ type NormalizeArray<T extends Schema[]> = {
5
5
  [K in keyof T]: NormalizeSchema<T[K]>;
6
6
  };
7
- declare const _default: <const T extends Schema[]>(...types: T) => UnionType<NormalizeSchemas<T>>;
8
- export default _default;
7
+ export default function union(): UnionType<[]>;
8
+ export default function union<const T extends Schema[]>(...types: T): UnionType<NormalizeArray<T>>;
9
+ export {};
9
10
  //# sourceMappingURL=union.d.ts.map
@@ -1,3 +1,6 @@
1
1
  import UnionType from "#UnionType";
2
- export default (...types) => new UnionType(types);
2
+ import normalize from "#normalize";
3
+ export default function union(...types) {
4
+ return new UnionType(types.map(normalize));
5
+ }
3
6
  //# sourceMappingURL=union.js.map
@@ -0,0 +1,7 @@
1
+ import UnknownType from "#UnknownType";
2
+ /**
3
+ * Value is an unknown type.
4
+ */
5
+ declare const _default: UnknownType;
6
+ export default _default;
7
+ //# sourceMappingURL=unknown.d.ts.map
@@ -0,0 +1,6 @@
1
+ import UnknownType from "#UnknownType";
2
+ /**
3
+ * Value is an unknown type.
4
+ */
5
+ export default new UnknownType();
6
+ //# sourceMappingURL=unknown.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: import("../Validator.js").default<string>;
2
+ export default _default;
3
+ //# sourceMappingURL=email.d.ts.map
@@ -0,0 +1,4 @@
1
+ import regex from "#validator/regex";
2
+ const email = /^[^\s@]+@[^\s@]+\.[^\s@]+$/u;
3
+ export default regex(email, x => `"${x}" is not a valid email`);
4
+ //# sourceMappingURL=email.js.map
@@ -0,0 +1,4 @@
1
+ import type Validator from "#Validator";
2
+ declare const _default: (suffix: string) => Validator<string>;
3
+ export default _default;
4
+ //# sourceMappingURL=ends-with.d.ts.map
@@ -0,0 +1,11 @@
1
+ import ParseError from "#ParseError";
2
+ export default (suffix) => (x) => {
3
+ if (!x.endsWith(suffix)) {
4
+ throw new ParseError([{
5
+ input: x,
6
+ message: `"${x}" does not end with "${suffix}"`,
7
+ path: "",
8
+ }]);
9
+ }
10
+ };
11
+ //# sourceMappingURL=ends-with.js.map
@@ -0,0 +1,2 @@
1
+ export default function f32(x: number): void;
2
+ //# sourceMappingURL=f32.d.ts.map
@@ -0,0 +1,11 @@
1
+ import ParseError from "#ParseError";
2
+ export default function f32(x) {
3
+ if (x !== new Float32Array([x])[0]) {
4
+ throw new ParseError([{
5
+ input: x,
6
+ message: `${x} is not a 32-bit float`,
7
+ path: "",
8
+ }]);
9
+ }
10
+ }
11
+ //# sourceMappingURL=f32.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: (x: bigint | number) => void;
2
+ export default _default;
3
+ //# sourceMappingURL=integer.d.ts.map
@@ -0,0 +1,12 @@
1
+ import ParseError from "#ParseError";
2
+ import integer from "@rcompat/is/integer";
3
+ export default (x) => {
4
+ if (!integer(x)) {
5
+ throw new ParseError([{
6
+ input: x,
7
+ message: `${x} is not an integer`,
8
+ path: "",
9
+ }]);
10
+ }
11
+ };
12
+ //# sourceMappingURL=integer.js.map
@@ -0,0 +1,2 @@
1
+ export default function isotime(x: string): void;
2
+ //# sourceMappingURL=isotime.d.ts.map
@@ -0,0 +1,30 @@
1
+ import ParseError from "#ParseError";
2
+ import regex from "#validator/regex";
3
+ const ISOTIME = /^T?(?<hour>\d{2}):?(?<minute>\d{2}):?(?<second>\d{2})$/u;
4
+ const RANGE = {
5
+ hour: { max: 23, min: 0 },
6
+ minute: { max: 59, min: 0 },
7
+ second: { max: 60, min: 0 },
8
+ };
9
+ export default function isotime(x) {
10
+ // check format
11
+ regex(ISOTIME, y => `"${y}" is not a valid ISO time`)(x);
12
+ // check range
13
+ const match = ISOTIME.exec(x);
14
+ const g = match.groups;
15
+ const h = Number(g.hour);
16
+ const m = Number(g.minute);
17
+ const s = Number(g.second);
18
+ const inRange = h >= RANGE.hour.min && h <= RANGE.hour.max &&
19
+ m >= RANGE.minute.min && m <= RANGE.minute.max &&
20
+ s >= RANGE.second.min && s <= RANGE.second.max;
21
+ if (!inRange) {
22
+ throw new ParseError([{
23
+ input: x,
24
+ message: `"${x}" is not a valid ISO time`,
25
+ path: "",
26
+ }]);
27
+ }
28
+ }
29
+ ;
30
+ //# sourceMappingURL=isotime.js.map
@@ -0,0 +1,5 @@
1
+ import type Validator from "#Validator";
2
+ type Input = string | unknown[];
3
+ export default function length(from: number, to: number): Validator<Input>;
4
+ export {};
5
+ //# sourceMappingURL=length.d.ts.map
@@ -0,0 +1,29 @@
1
+ import fail from "#error/fail";
2
+ import schemafail from "#error/schemafail";
3
+ import ParseError from "#ParseError";
4
+ import isFinite from "@rcompat/is/finite";
5
+ export default function length(from, to) {
6
+ if (!isFinite(from) || !isFinite(to)) {
7
+ throw schemafail("length: {0} and {1} must be finite numbers", from, to);
8
+ }
9
+ if (from < 0 || to < 0) {
10
+ throw schemafail("length: {0} and {1} must be positive", from, to);
11
+ }
12
+ if (from > to) {
13
+ throw schemafail("length: {0} must be lower than {1}", from, to);
14
+ }
15
+ return (x) => {
16
+ if (typeof x !== "string" && !Array.isArray(x)) {
17
+ throw fail(x, "invalid type");
18
+ }
19
+ if (x.length < from || x.length > to) {
20
+ throw new ParseError([{
21
+ input: x,
22
+ message: "length out of range",
23
+ path: "",
24
+ }]);
25
+ }
26
+ };
27
+ }
28
+ ;
29
+ //# sourceMappingURL=length.js.map
@@ -0,0 +1,6 @@
1
+ import type Validator from "#Validator";
2
+ type Limit = bigint | number;
3
+ type Input = bigint | number | string | unknown[];
4
+ export default function max(limit: Limit): Validator<Input>;
5
+ export {};
6
+ //# sourceMappingURL=max.d.ts.map
@@ -0,0 +1,37 @@
1
+ import fail from "#error/fail";
2
+ import schemafail from "#error/schemafail";
3
+ import isFinite from "@rcompat/is/finite";
4
+ export default function max(limit) {
5
+ // validate limit once
6
+ if (typeof limit === "number") {
7
+ if (!isFinite(limit)) {
8
+ throw schemafail("max: limit {0} must be a finite number", limit);
9
+ }
10
+ return (x) => {
11
+ if (typeof x === "number") {
12
+ if (x > limit)
13
+ throw fail(x, `${x} is greater than max (${limit})`);
14
+ }
15
+ else if (typeof x === "string" || Array.isArray(x)) {
16
+ if (x.length > limit) {
17
+ const unit = typeof x === "string" ? "characters" : "items";
18
+ throw fail(x, `max ${limit} ${unit}`);
19
+ }
20
+ }
21
+ else {
22
+ throw fail(x, "invalid type");
23
+ }
24
+ };
25
+ }
26
+ // bigint
27
+ return (x) => {
28
+ if (typeof x === "bigint") {
29
+ if (x > limit)
30
+ throw fail(x, `${x} is greater than max (${limit})`);
31
+ }
32
+ else {
33
+ throw fail(x, "invalid type");
34
+ }
35
+ };
36
+ }
37
+ //# sourceMappingURL=max.js.map
@@ -0,0 +1,6 @@
1
+ import type Validator from "#Validator";
2
+ type Limit = bigint | number;
3
+ type Input = bigint | number | string | unknown[];
4
+ export default function min(limit: Limit): Validator<Input>;
5
+ export {};
6
+ //# sourceMappingURL=min.d.ts.map
@@ -0,0 +1,37 @@
1
+ import fail from "#error/fail";
2
+ import schemafail from "#error/schemafail";
3
+ import isFinite from "@rcompat/is/finite";
4
+ export default function min(limit) {
5
+ // validate limit once
6
+ if (typeof limit === "number") {
7
+ if (!isFinite(limit)) {
8
+ throw schemafail("max: limit {0} must be a finite number", limit);
9
+ }
10
+ return (x) => {
11
+ if (typeof x === "number") {
12
+ if (x < limit)
13
+ throw fail(x, `${x} is lower than min (${limit})`);
14
+ }
15
+ else if (typeof x === "string" || Array.isArray(x)) {
16
+ if (x.length < limit) {
17
+ const unit = typeof x === "string" ? "characters" : "items";
18
+ throw fail(x, `min ${limit} ${unit}`);
19
+ }
20
+ }
21
+ else {
22
+ throw fail(x, "invalid type");
23
+ }
24
+ };
25
+ }
26
+ // bigint
27
+ return (x) => {
28
+ if (typeof x === "bigint") {
29
+ if (x < limit)
30
+ throw fail(x, `${x} is lower than min (${limit})`);
31
+ }
32
+ else {
33
+ throw fail(x, "invalid type");
34
+ }
35
+ };
36
+ }
37
+ //# sourceMappingURL=min.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: (port: number) => void;
2
+ export default _default;
3
+ //# sourceMappingURL=port.d.ts.map
@@ -0,0 +1,15 @@
1
+ import ParseError from "#ParseError";
2
+ // 1000
3
+ const min = 2 ** 10;
4
+ // 65535
5
+ const max = 2 ** 16 - 1;
6
+ export default (port) => {
7
+ if (port < min || port > max) {
8
+ throw new ParseError([{
9
+ input: port,
10
+ message: `${port} out of port range (${min} - ${max})`,
11
+ path: "",
12
+ }]);
13
+ }
14
+ };
15
+ //# sourceMappingURL=port.js.map
@@ -0,0 +1,3 @@
1
+ import type Validator from "#Validator";
2
+ export default function range<From extends bigint | number, To extends From>(from: From, to: To): Validator<From>;
3
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1,22 @@
1
+ import ParseError from "#ParseError";
2
+ import isFinite from "@rcompat/is/finite";
3
+ const fail = (input, msg) => new ParseError([{ input, message: msg, path: "" }]);
4
+ export default function range(from, to) {
5
+ if (!isFinite(from) || !isFinite(to)) {
6
+ throw new TypeError("range(): from and to must be finite numbers");
7
+ }
8
+ return (x) => {
9
+ if (typeof x !== "number" && typeof x !== "bigint") {
10
+ throw fail(x, "invalid type");
11
+ }
12
+ if (x < from || x > to) {
13
+ throw new ParseError([{
14
+ input: x,
15
+ message: `${x} is out of range`,
16
+ path: "",
17
+ }]);
18
+ }
19
+ };
20
+ }
21
+ ;
22
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1,5 @@
1
+ import type Validator from "#Validator";
2
+ type ErrorFunction = (x: string) => string;
3
+ export default function validateRegex(regex: RegExp, error?: ErrorFunction): Validator<string>;
4
+ export {};
5
+ //# sourceMappingURL=regex.d.ts.map
@@ -0,0 +1,15 @@
1
+ import ParseError from "#ParseError";
2
+ export default function validateRegex(regex, error) {
3
+ return (x) => {
4
+ if (!regex.test(x)) {
5
+ const message = (error ?? ((y) => `"${y}" is not a valid ${String(regex)}`))(x);
6
+ throw new ParseError([{
7
+ input: x,
8
+ message,
9
+ path: "", // root; the calling type should rebase if needed
10
+ }]);
11
+ }
12
+ };
13
+ }
14
+ ;
15
+ //# sourceMappingURL=regex.js.map
@@ -0,0 +1,4 @@
1
+ import type Validator from "#Validator";
2
+ declare const _default: (prefix: string) => Validator<string>;
3
+ export default _default;
4
+ //# sourceMappingURL=starts-with.d.ts.map
@@ -0,0 +1,11 @@
1
+ import ParseError from "#ParseError";
2
+ export default (prefix) => (x) => {
3
+ if (!x.startsWith(prefix)) {
4
+ throw new ParseError([{
5
+ input: x,
6
+ message: `"${x}" does not start with "${prefix}"`,
7
+ path: "",
8
+ }]);
9
+ }
10
+ };
11
+ //# sourceMappingURL=starts-with.js.map
@@ -0,0 +1,2 @@
1
+ export default function uniqueBy<T, K extends PropertyKey>(selector: (item: T) => K): (array: Array<T>) => void;
2
+ //# sourceMappingURL=unique-by.d.ts.map
@@ -0,0 +1,23 @@
1
+ import ParseError from "#ParseError";
2
+ import join from "#path/join";
3
+ function message(k, i, first) {
4
+ return `duplicate key "${String(k)}" at index ${i} (first ${first})`;
5
+ }
6
+ export default function uniqueBy(selector) {
7
+ return (array) => {
8
+ const seen = new Map();
9
+ for (let i = 0; i < array.length; i++) {
10
+ const k = selector(array[i]);
11
+ if (seen.has(k)) {
12
+ const first = seen.get(k);
13
+ throw new ParseError([{
14
+ input: array,
15
+ message: message(k, i, first),
16
+ path: join("", i),
17
+ }]);
18
+ }
19
+ seen.set(k, i);
20
+ }
21
+ };
22
+ }
23
+ //# sourceMappingURL=unique-by.js.map
@@ -0,0 +1,2 @@
1
+ export default function uniqueWith<T>(equals: (a: T, b: T) => boolean): (array: Array<T>) => void;
2
+ //# sourceMappingURL=unique-with.d.ts.map
@@ -0,0 +1,18 @@
1
+ import ParseError from "#ParseError";
2
+ import join from "#path/join";
3
+ export default function uniqueWith(equals) {
4
+ return (array) => {
5
+ for (let i = 0; i < array.length; i++) {
6
+ for (let j = 0; j < i; j++) {
7
+ if (equals(array[i], array[j])) {
8
+ throw new ParseError([{
9
+ input: array,
10
+ message: `items at ${j} and ${i} considered equal`,
11
+ path: join("", i),
12
+ }]);
13
+ }
14
+ }
15
+ }
16
+ };
17
+ }
18
+ //# sourceMappingURL=unique-with.js.map
@@ -0,0 +1,2 @@
1
+ export default function unique<T>(array: Array<T>): void;
2
+ //# sourceMappingURL=unique.d.ts.map
@@ -0,0 +1,19 @@
1
+ import ParseError from "#ParseError";
2
+ import join from "#path/join";
3
+ export default function unique(array) {
4
+ const seen = new Map();
5
+ for (let i = 0; i < array.length; i++) {
6
+ const v = array[i];
7
+ if (seen.has(v)) {
8
+ const first = seen.get(v);
9
+ // key = current duplicate index
10
+ throw new ParseError([{
11
+ input: array,
12
+ message: `duplicate value at index ${i} (first seen at ${first})`,
13
+ path: join("", i),
14
+ }]);
15
+ }
16
+ seen.set(v, i);
17
+ }
18
+ }
19
+ //# sourceMappingURL=unique.js.map
@@ -0,0 +1,3 @@
1
+ declare const _default: import("../Validator.js").default<string>;
2
+ export default _default;
3
+ //# sourceMappingURL=uuid.d.ts.map
@@ -0,0 +1,4 @@
1
+ import regex from "#validator/regex";
2
+ const uuid = /^[^\W_]{8}-[^\W_]{4}-[^\W_]{4}-[^\W_]{4}-[^\W_]{12}$/u;
3
+ export default regex(uuid, x => `"${x}" is not a valid UUID`);
4
+ //# sourceMappingURL=uuid.js.map
@@ -0,0 +1,4 @@
1
+ import type Validator from "#Validator";
2
+ import type Dict from "@rcompat/type/Dict";
3
+ export default function values<T>(input: Dict<T>): Validator<T>;
4
+ //# sourceMappingURL=values.d.ts.map
@@ -0,0 +1,14 @@
1
+ import ParseError from "#ParseError";
2
+ export default function values(input) {
3
+ const allowed = Object.values(input).map(v => String(v)).join(", ");
4
+ return (x) => {
5
+ if (!Object.values(input).includes(x)) {
6
+ throw new ParseError([{
7
+ input: x,
8
+ message: `"${x}" not in given list of values (${allowed})`,
9
+ path: "",
10
+ }]);
11
+ }
12
+ };
13
+ }
14
+ //# sourceMappingURL=values.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#DataType";
2
+ //# sourceMappingURL=DataType.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=DataType.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#Id";
2
+ //# sourceMappingURL=Id.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Id.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#InferStore";
2
+ //# sourceMappingURL=InferStore.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=InferStore.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#InferStoreOut";
2
+ //# sourceMappingURL=InferStoreOut.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=InferStoreOut.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#Issue";
2
+ //# sourceMappingURL=Issue.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Issue.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#json/JSONPayload";
2
+ //# sourceMappingURL=JSONPayload.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=JSONPayload.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#ParseError";
2
+ //# sourceMappingURL=ParseError.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#ParseError";
2
+ //# sourceMappingURL=ParseError.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#Serialized";
2
+ //# sourceMappingURL=Serialized.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=Serialized.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#StoreId";
2
+ //# sourceMappingURL=StoreId.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=StoreId.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#StoreSchema";
2
+ //# sourceMappingURL=StoreSchema.d.ts.map
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=StoreSchema.js.map
@@ -0,0 +1,3 @@
1
+ export { default as Serialized } from "#Serialized";
2
+ export { default } from "#StoreType";
3
+ //# sourceMappingURL=StoreType.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#StoreType";
2
+ //# sourceMappingURL=StoreType.js.map
@@ -0,0 +1,3 @@
1
+ export { default } from "#array";
2
+ export { default as ArrayType } from "#ArrayType";
3
+ //# sourceMappingURL=array.d.ts.map
@@ -0,0 +1,3 @@
1
+ export { default } from "#array";
2
+ export { default as ArrayType } from "#ArrayType";
3
+ //# sourceMappingURL=array.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#bigint";
2
+ //# sourceMappingURL=bigint.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#bigint";
2
+ //# sourceMappingURL=bigint.js.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#biguint";
2
+ //# sourceMappingURL=biguint.d.ts.map
@@ -0,0 +1,2 @@
1
+ export { default } from "#biguint";
2
+ //# sourceMappingURL=biguint.js.map
@@ -1,2 +1,3 @@
1
1
  export { default } from "#boolean";
2
+ export { default as BooleanType } from "#BooleanType";
2
3
  //# sourceMappingURL=boolean.d.ts.map
@@ -1,2 +1,3 @@
1
1
  export { default } from "#boolean";
2
+ export { default as BooleanType } from "#BooleanType";
2
3
  //# sourceMappingURL=boolean.js.map