@tstdl/base 0.71.88 → 0.78.0-beta2

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 (349) hide show
  1. package/.eslintrc.js +2 -4
  2. package/api/client/client.js +2 -12
  3. package/api/client/client.js.map +1 -1
  4. package/api/default-error-handlers.d.ts +0 -4
  5. package/api/default-error-handlers.js +1 -6
  6. package/api/default-error-handlers.js.map +1 -1
  7. package/api/server/gateway.js +12 -18
  8. package/api/server/gateway.js.map +1 -1
  9. package/api/server/module.d.ts +0 -4
  10. package/api/server/module.js +1 -12
  11. package/api/server/module.js.map +1 -1
  12. package/api/types.d.ts +8 -32
  13. package/api/types.js.map +1 -1
  14. package/container/container.js +2 -2
  15. package/container/container.js.map +1 -1
  16. package/data-structures/index.d.ts +1 -0
  17. package/data-structures/index.js +1 -0
  18. package/data-structures/index.js.map +1 -1
  19. package/data-structures/iterable-weak-map.d.ts +29 -0
  20. package/data-structures/iterable-weak-map.js +128 -0
  21. package/data-structures/iterable-weak-map.js.map +1 -0
  22. package/data-structures/multi-key-map.d.ts +12 -1
  23. package/data-structures/multi-key-map.js +22 -11
  24. package/data-structures/multi-key-map.js.map +1 -1
  25. package/error/custom.error.d.ts +3 -1
  26. package/error/custom.error.js +16 -7
  27. package/error/custom.error.js.map +1 -1
  28. package/examples/api/basic-overview.js +16 -8
  29. package/examples/api/basic-overview.js.map +1 -1
  30. package/image-service/image-service.d.ts +32 -65
  31. package/image-service/image-service.js +73 -15
  32. package/image-service/image-service.js.map +1 -1
  33. package/json-path/json-path.d.ts +8 -3
  34. package/json-path/json-path.js +24 -7
  35. package/json-path/json-path.js.map +1 -1
  36. package/module/modules/index.d.ts +0 -1
  37. package/module/modules/index.js +0 -1
  38. package/module/modules/index.js.map +1 -1
  39. package/openid-connect/oidc-configuration.service.js +7 -7
  40. package/openid-connect/oidc-configuration.service.js.map +1 -1
  41. package/openid-connect/oidc.service.js +7 -7
  42. package/openid-connect/oidc.service.js.map +1 -1
  43. package/package.json +3 -4
  44. package/process-shutdown.js +3 -2
  45. package/process-shutdown.js.map +1 -1
  46. package/reflection/decorators.js +1 -0
  47. package/reflection/decorators.js.map +1 -1
  48. package/reflection/reflection-data-map.d.ts +10 -0
  49. package/reflection/reflection-data-map.js +40 -0
  50. package/reflection/reflection-data-map.js.map +1 -0
  51. package/reflection/registry.d.ts +7 -7
  52. package/reflection/registry.js +7 -6
  53. package/reflection/registry.js.map +1 -1
  54. package/reflection/types.d.ts +1 -0
  55. package/reflection/utils.d.ts +6 -3
  56. package/reflection/utils.js +9 -35
  57. package/reflection/utils.js.map +1 -1
  58. package/schema/array-constraints/index.d.ts +2 -0
  59. package/{old-api/validation/validators → schema/array-constraints}/index.js +2 -1
  60. package/schema/array-constraints/index.js.map +1 -0
  61. package/schema/array-constraints/maximum-length.d.ts +11 -0
  62. package/schema/array-constraints/maximum-length.js +26 -0
  63. package/schema/array-constraints/maximum-length.js.map +1 -0
  64. package/schema/array-constraints/minimum-length.d.ts +11 -0
  65. package/schema/array-constraints/minimum-length.js +26 -0
  66. package/schema/array-constraints/minimum-length.js.map +1 -0
  67. package/schema/coercers/boolean.coercer.d.ts +9 -0
  68. package/schema/coercers/boolean.coercer.js +35 -0
  69. package/schema/coercers/boolean.coercer.js.map +1 -0
  70. package/schema/coercers/date.coercer.d.ts +9 -0
  71. package/schema/coercers/date.coercer.js +24 -0
  72. package/schema/coercers/date.coercer.js.map +1 -0
  73. package/schema/coercers/default-value.coercer.d.ts +9 -0
  74. package/schema/coercers/default-value.coercer.js +16 -0
  75. package/schema/coercers/default-value.coercer.js.map +1 -0
  76. package/schema/coercers/index.d.ts +7 -0
  77. package/schema/coercers/index.js +24 -0
  78. package/schema/coercers/index.js.map +1 -0
  79. package/schema/coercers/number.coercer.d.ts +9 -0
  80. package/schema/coercers/number.coercer.js +22 -0
  81. package/schema/coercers/number.coercer.js.map +1 -0
  82. package/schema/coercers/regexp.coercer.d.ts +11 -0
  83. package/schema/coercers/regexp.coercer.js +24 -0
  84. package/schema/coercers/regexp.coercer.js.map +1 -0
  85. package/schema/coercers/string.coercer.d.ts +9 -0
  86. package/schema/coercers/string.coercer.js +22 -0
  87. package/schema/coercers/string.coercer.js.map +1 -0
  88. package/schema/coercers/uint8-array.coercer.d.ts +9 -0
  89. package/schema/coercers/uint8-array.coercer.js +31 -0
  90. package/schema/coercers/uint8-array.coercer.js.map +1 -0
  91. package/schema/constraints/enumeration.d.ts +13 -0
  92. package/schema/constraints/enumeration.js +29 -0
  93. package/schema/constraints/enumeration.js.map +1 -0
  94. package/schema/constraints/generic.d.ts +22 -0
  95. package/schema/constraints/generic.js +32 -0
  96. package/schema/constraints/generic.js.map +1 -0
  97. package/schema/constraints/index.d.ts +12 -0
  98. package/schema/constraints/index.js +29 -0
  99. package/schema/constraints/index.js.map +1 -0
  100. package/schema/constraints/integer.d.ts +12 -0
  101. package/schema/constraints/integer.js +27 -0
  102. package/schema/constraints/integer.js.map +1 -0
  103. package/schema/constraints/length.d.ts +6 -0
  104. package/schema/constraints/length.js +20 -0
  105. package/schema/constraints/length.js.map +1 -0
  106. package/schema/constraints/literal.d.ts +10 -0
  107. package/schema/constraints/literal.js +26 -0
  108. package/schema/constraints/literal.js.map +1 -0
  109. package/schema/constraints/maximum-date.d.ts +12 -0
  110. package/schema/constraints/maximum-date.js +29 -0
  111. package/schema/constraints/maximum-date.js.map +1 -0
  112. package/schema/constraints/maximum-length.d.ts +12 -0
  113. package/schema/constraints/maximum-length.js +29 -0
  114. package/schema/constraints/maximum-length.js.map +1 -0
  115. package/schema/constraints/maximum.d.ts +12 -0
  116. package/schema/constraints/maximum.js +27 -0
  117. package/schema/constraints/maximum.js.map +1 -0
  118. package/schema/constraints/minimum-date.d.ts +12 -0
  119. package/schema/constraints/minimum-date.js +29 -0
  120. package/schema/constraints/minimum-date.js.map +1 -0
  121. package/schema/constraints/minimum-length.d.ts +12 -0
  122. package/schema/constraints/minimum-length.js +29 -0
  123. package/schema/constraints/minimum-length.js.map +1 -0
  124. package/schema/constraints/minimum.d.ts +12 -0
  125. package/schema/constraints/minimum.js +27 -0
  126. package/schema/constraints/minimum.js.map +1 -0
  127. package/schema/constraints/pattern.d.ts +13 -0
  128. package/schema/constraints/pattern.js +28 -0
  129. package/schema/constraints/pattern.js.map +1 -0
  130. package/schema/decorators/array.d.ts +4 -0
  131. package/schema/decorators/array.js +11 -0
  132. package/schema/decorators/array.js.map +1 -0
  133. package/schema/decorators/coerce.d.ts +2 -0
  134. package/schema/decorators/coerce.js +10 -0
  135. package/schema/decorators/coerce.js.map +1 -0
  136. package/schema/decorators/defaulted.d.ts +3 -0
  137. package/schema/decorators/defaulted.js +11 -0
  138. package/schema/decorators/defaulted.js.map +1 -0
  139. package/schema/decorators/index.d.ts +8 -0
  140. package/{old-api → schema/decorators}/index.js +8 -3
  141. package/schema/decorators/index.js.map +1 -0
  142. package/schema/decorators/nullable.d.ts +2 -0
  143. package/schema/decorators/nullable.js +10 -0
  144. package/schema/decorators/nullable.js.map +1 -0
  145. package/schema/decorators/optional.d.ts +2 -0
  146. package/schema/decorators/optional.js +10 -0
  147. package/schema/decorators/optional.js.map +1 -0
  148. package/schema/decorators/property.d.ts +6 -0
  149. package/schema/decorators/property.js +19 -0
  150. package/schema/decorators/property.js.map +1 -0
  151. package/schema/decorators/type.d.ts +3 -0
  152. package/schema/decorators/type.js +10 -0
  153. package/schema/decorators/type.js.map +1 -0
  154. package/schema/decorators/types.d.ts +18 -0
  155. package/schema/decorators/types.js +3 -0
  156. package/schema/decorators/types.js.map +1 -0
  157. package/schema/decorators/utils.d.ts +10 -0
  158. package/schema/decorators/utils.js +59 -0
  159. package/schema/decorators/utils.js.map +1 -0
  160. package/schema/index.d.ts +7 -1
  161. package/schema/index.js +7 -1
  162. package/schema/index.js.map +1 -1
  163. package/schema/schema.d.ts +19 -0
  164. package/schema/schema.error.d.ts +13 -7
  165. package/schema/schema.error.js +45 -13
  166. package/schema/schema.error.js.map +1 -1
  167. package/schema/schema.js +286 -0
  168. package/schema/schema.js.map +1 -0
  169. package/schema/schemas/any.d.ts +4 -8
  170. package/schema/schemas/any.js +9 -14
  171. package/schema/schemas/any.js.map +1 -1
  172. package/schema/schemas/array.d.ts +7 -13
  173. package/schema/schemas/array.js +14 -43
  174. package/schema/schemas/array.js.map +1 -1
  175. package/schema/schemas/assign.d.ts +8 -0
  176. package/schema/schemas/assign.js +28 -0
  177. package/schema/schemas/assign.js.map +1 -0
  178. package/schema/schemas/boolean.d.ts +5 -9
  179. package/schema/schemas/boolean.js +11 -38
  180. package/schema/schemas/boolean.js.map +1 -1
  181. package/schema/schemas/constraint.d.ts +4 -0
  182. package/schema/schemas/constraint.js +14 -0
  183. package/schema/schemas/constraint.js.map +1 -0
  184. package/schema/schemas/date.d.ts +7 -11
  185. package/schema/schemas/date.js +18 -53
  186. package/schema/schemas/date.js.map +1 -1
  187. package/schema/schemas/defaulted.d.ts +2 -15
  188. package/schema/schemas/defaulted.js +7 -23
  189. package/schema/schemas/defaulted.js.map +1 -1
  190. package/schema/schemas/enumeration.d.ts +6 -18
  191. package/schema/schemas/enumeration.js +13 -50
  192. package/schema/schemas/enumeration.js.map +1 -1
  193. package/schema/schemas/exclude.d.ts +4 -0
  194. package/schema/schemas/exclude.js +17 -0
  195. package/schema/schemas/exclude.js.map +1 -0
  196. package/schema/schemas/index.d.ts +5 -6
  197. package/schema/schemas/index.js +5 -6
  198. package/schema/schemas/index.js.map +1 -1
  199. package/schema/schemas/instance.d.ts +2 -12
  200. package/schema/schemas/instance.js +4 -20
  201. package/schema/schemas/instance.js.map +1 -1
  202. package/schema/schemas/literal.d.ts +4 -11
  203. package/schema/schemas/literal.js +13 -18
  204. package/schema/schemas/literal.js.map +1 -1
  205. package/schema/schemas/nullable.d.ts +3 -13
  206. package/schema/schemas/nullable.js +3 -26
  207. package/schema/schemas/nullable.js.map +1 -1
  208. package/schema/schemas/number.d.ts +7 -14
  209. package/schema/schemas/number.js +23 -44
  210. package/schema/schemas/number.js.map +1 -1
  211. package/schema/schemas/object.d.ts +6 -34
  212. package/schema/schemas/object.js +8 -112
  213. package/schema/schemas/object.js.map +1 -1
  214. package/schema/schemas/optional.d.ts +3 -13
  215. package/schema/schemas/optional.js +3 -26
  216. package/schema/schemas/optional.js.map +1 -1
  217. package/schema/schemas/pick.d.ts +4 -0
  218. package/schema/schemas/pick.js +17 -0
  219. package/schema/schemas/pick.js.map +1 -0
  220. package/schema/schemas/readable-stream.d.ts +4 -9
  221. package/schema/schemas/readable-stream.js +9 -15
  222. package/schema/schemas/readable-stream.js.map +1 -1
  223. package/schema/schemas/record.d.ts +4 -0
  224. package/schema/schemas/record.js +14 -0
  225. package/schema/schemas/record.js.map +1 -0
  226. package/schema/schemas/regexp.d.ts +6 -9
  227. package/schema/schemas/regexp.js +10 -27
  228. package/schema/schemas/regexp.js.map +1 -1
  229. package/schema/schemas/string.d.ts +9 -13
  230. package/schema/schemas/string.js +34 -46
  231. package/schema/schemas/string.js.map +1 -1
  232. package/schema/schemas/transform.d.ts +4 -16
  233. package/schema/schemas/transform.js +7 -36
  234. package/schema/schemas/transform.js.map +1 -1
  235. package/schema/schemas/uint8-array.d.ts +8 -11
  236. package/schema/schemas/uint8-array.js +20 -32
  237. package/schema/schemas/uint8-array.js.map +1 -1
  238. package/schema/schemas/union.d.ts +5 -17
  239. package/schema/schemas/union.js +9 -35
  240. package/schema/schemas/union.js.map +1 -1
  241. package/schema/schemas/unknown.d.ts +4 -8
  242. package/schema/schemas/unknown.js +9 -14
  243. package/schema/schemas/unknown.js.map +1 -1
  244. package/schema/transformers/generic.d.ts +13 -0
  245. package/schema/transformers/generic.js +28 -0
  246. package/schema/transformers/generic.js.map +1 -0
  247. package/schema/transformers/index.d.ts +3 -0
  248. package/{old-api/endpoints → schema/transformers}/index.js +3 -1
  249. package/schema/transformers/index.js.map +1 -0
  250. package/schema/transformers/lowercase.d.ts +9 -0
  251. package/schema/transformers/lowercase.js +22 -0
  252. package/schema/transformers/lowercase.js.map +1 -0
  253. package/schema/transformers/trim.d.ts +9 -0
  254. package/schema/transformers/trim.js +22 -0
  255. package/schema/transformers/trim.js.map +1 -0
  256. package/schema/transformers/uppercase.d.ts +9 -0
  257. package/schema/transformers/uppercase.js +22 -0
  258. package/schema/transformers/uppercase.js.map +1 -0
  259. package/schema/types.d.ts +135 -15
  260. package/schema/types.js +39 -3
  261. package/schema/types.js.map +1 -1
  262. package/schema/utils/index.d.ts +2 -0
  263. package/{old-api/validation → schema/utils}/index.js +2 -1
  264. package/schema/utils/index.js.map +1 -0
  265. package/schema/utils/schema.d.ts +12 -0
  266. package/schema/utils/schema.js +78 -0
  267. package/schema/utils/schema.js.map +1 -0
  268. package/schema/utils/value-type.d.ts +4 -0
  269. package/schema/utils/value-type.js +35 -0
  270. package/schema/utils/value-type.js.map +1 -0
  271. package/templates/providers/file-template.provider.base.d.ts +1 -1
  272. package/templates/providers/file-template.provider.base.js +3 -2
  273. package/templates/providers/file-template.provider.base.js.map +1 -1
  274. package/types.d.ts +6 -3
  275. package/utils/enum.d.ts +1 -1
  276. package/utils/function/memoize.d.ts +6 -2
  277. package/utils/function/memoize.js +28 -20
  278. package/utils/function/memoize.js.map +1 -1
  279. package/utils/index.d.ts +1 -0
  280. package/utils/index.js +1 -0
  281. package/utils/index.js.map +1 -1
  282. package/utils/merge.d.ts +5 -0
  283. package/utils/merge.js +32 -0
  284. package/utils/merge.js.map +1 -0
  285. package/utils/object/dereference.js.map +1 -1
  286. package/utils/object/object.d.ts +4 -0
  287. package/utils/object/object.js +9 -2
  288. package/utils/object/object.js.map +1 -1
  289. package/utils/patterns.d.ts +1 -1
  290. package/utils/patterns.js +3 -3
  291. package/utils/patterns.js.map +1 -1
  292. package/utils/timing.d.ts +0 -8
  293. package/utils/timing.js.map +1 -1
  294. package/utils/type-guards.d.ts +6 -0
  295. package/utils/type-guards.js +16 -4
  296. package/utils/type-guards.js.map +1 -1
  297. package/instance-provider.d.ts +0 -17
  298. package/instance-provider.js +0 -55
  299. package/instance-provider.js.map +0 -1
  300. package/module/modules/old-web-server.module.d.ts +0 -22
  301. package/module/modules/old-web-server.module.js +0 -37
  302. package/module/modules/old-web-server.module.js.map +0 -1
  303. package/old-api/endpoint.d.ts +0 -5
  304. package/old-api/endpoint.js +0 -20
  305. package/old-api/endpoint.js.map +0 -1
  306. package/old-api/endpoints/echo.endpoint.d.ts +0 -2
  307. package/old-api/endpoints/echo.endpoint.js +0 -6
  308. package/old-api/endpoints/echo.endpoint.js.map +0 -1
  309. package/old-api/endpoints/index.d.ts +0 -1
  310. package/old-api/endpoints/index.js.map +0 -1
  311. package/old-api/http-api.d.ts +0 -63
  312. package/old-api/http-api.js +0 -269
  313. package/old-api/http-api.js.map +0 -1
  314. package/old-api/index.d.ts +0 -3
  315. package/old-api/index.js.map +0 -1
  316. package/old-api/validation/index.d.ts +0 -1
  317. package/old-api/validation/index.js.map +0 -1
  318. package/old-api/validation/types.d.ts +0 -6
  319. package/old-api/validation/types.js +0 -6
  320. package/old-api/validation/types.js.map +0 -1
  321. package/old-api/validation/validators/index.d.ts +0 -1
  322. package/old-api/validation/validators/index.js.map +0 -1
  323. package/old-api/validation/validators/noop.d.ts +0 -2
  324. package/old-api/validation/validators/noop.js +0 -8
  325. package/old-api/validation/validators/noop.js.map +0 -1
  326. package/old-api/validation/validators/superstruct.d.ts +0 -14
  327. package/old-api/validation/validators/superstruct.js +0 -66
  328. package/old-api/validation/validators/superstruct.js.map +0 -1
  329. package/old-api/validation/validators/yup.d.ts +0 -7
  330. package/old-api/validation/validators/yup.js +0 -60
  331. package/old-api/validation/validators/yup.js.map +0 -1
  332. package/schema/schema.validator.d.ts +0 -40
  333. package/schema/schema.validator.js +0 -75
  334. package/schema/schema.validator.js.map +0 -1
  335. package/schema/schemas/async-iterable.d.ts +0 -13
  336. package/schema/schemas/async-iterable.js +0 -40
  337. package/schema/schemas/async-iterable.js.map +0 -1
  338. package/schema/schemas/iterable.d.ts +0 -13
  339. package/schema/schemas/iterable.js +0 -40
  340. package/schema/schemas/iterable.js.map +0 -1
  341. package/schema/schemas/never.d.ts +0 -9
  342. package/schema/schemas/never.js +0 -22
  343. package/schema/schemas/never.js.map +0 -1
  344. package/schema/schemas/preprocess.d.ts +0 -16
  345. package/schema/schemas/preprocess.js +0 -35
  346. package/schema/schemas/preprocess.js.map +0 -1
  347. package/schema/schemas/refine.d.ts +0 -24
  348. package/schema/schemas/refine.js +0 -52
  349. package/schema/schemas/refine.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/schema/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,0CAAwB;AACxB,mDAAiC;AACjC,4CAA0B;AAC1B,yCAAuB;AACvB,8CAA4B;AAC5B,gDAA8B;AAC9B,6CAA2B;AAC3B,6CAA2B;AAC3B,4CAA0B;AAC1B,0CAAwB;AACxB,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,+CAA6B;AAC7B,oDAAkC;AAClC,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B;AAC9B,0CAAwB;AACxB,4CAA0B"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../source/schema/schemas/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,wCAAsB;AACtB,0CAAwB;AACxB,2CAAyB;AACzB,4CAA0B;AAC1B,+CAA6B;AAC7B,yCAAuB;AACvB,gDAA8B;AAC9B,4CAA0B;AAC1B,6CAA2B;AAC3B,4CAA0B;AAC1B,6CAA2B;AAC3B,2CAAyB;AACzB,2CAAyB;AACzB,6CAA2B;AAC3B,yCAAuB;AACvB,oDAAkC;AAClC,2CAAyB;AACzB,2CAAyB;AACzB,2CAAyB;AACzB,8CAA4B;AAC5B,gDAA8B;AAC9B,0CAAwB;AACxB,4CAA0B"}
@@ -1,12 +1,2 @@
1
- import type { JsonPath } from "../../json-path";
2
- import type { Type } from "../../types";
3
- import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
4
- import { SchemaValidator, test } from '../schema.validator';
5
- import type { SchemaDefinition, SchemaOptions, SchemaOutput } from '../types';
6
- export declare type InstanceSchemaDefinition<T = unknown> = SchemaDefinition<'instance', T, T> & {
7
- constructor: Type<T>;
8
- };
9
- export declare class InstanceSchemaValidator<T> extends SchemaValidator<InstanceSchemaDefinition<T>> {
10
- [test](value: unknown, _options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<SchemaOutput<InstanceSchemaDefinition<T>>>;
11
- }
12
- export declare function instance<T>(constructor: Type<T>, options?: SchemaOptions<InstanceSchemaDefinition<T>, 'constructor'>): InstanceSchemaValidator<T>;
1
+ import type { ValueSchema, ValueType } from '../types';
2
+ export declare function instance<T>(type: Extract<ValueType<T>, Function>): ValueSchema<T>;
@@ -1,26 +1,10 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/ban-types */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.instance = exports.InstanceSchemaValidator = void 0;
4
- const type_of_1 = require("../../utils/type-of");
5
- const schema_error_1 = require("../schema.error");
6
- const schema_validator_1 = require("../schema.validator");
4
+ exports.instance = void 0;
7
5
  const types_1 = require("../types");
8
- class InstanceSchemaValidator extends schema_validator_1.SchemaValidator {
9
- [schema_validator_1.test](value, _options, path) {
10
- if (value instanceof this.schema.constructor) {
11
- return { valid: true, value: value };
12
- }
13
- return { valid: false, error: schema_error_1.SchemaError.expectedButGot(`instance of ${this.schema.constructor.name}`, (0, type_of_1.typeOf)(value), path) };
14
- }
15
- }
16
- exports.InstanceSchemaValidator = InstanceSchemaValidator;
17
- function instance(constructor, options) {
18
- const schema = (0, types_1.schemaHelper)({
19
- type: 'instance',
20
- constructor,
21
- ...options
22
- });
23
- return new InstanceSchemaValidator(schema);
6
+ function instance(type) {
7
+ return (0, types_1.valueSchema)({ type });
24
8
  }
25
9
  exports.instance = instance;
26
10
  //# sourceMappingURL=instance.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../source/schema/schemas/instance.ts"],"names":[],"mappings":";;;AAEA,iDAAyC;AACzC,kDAA8C;AAE9C,0DAA4D;AAE5D,oCAAwC;AAMxC,MAAa,uBAA2B,SAAQ,kCAA4C;IAC1F,CAAC,uBAAI,CAAC,CAAC,KAAc,EAAE,QAAkC,EAAE,IAAc;QACvE,IAAI,KAAK,YAAY,IAAI,CAAC,MAAM,CAAC,WAAW,EAAE;YAC5C,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAU,EAAE,CAAC;SAC3C;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0BAAW,CAAC,cAAc,CAAC,eAAe,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,EAAE,IAAA,gBAAM,EAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IACjI,CAAC;CACF;AARD,0DAQC;AAED,SAAgB,QAAQ,CAAI,WAAoB,EAAE,OAAmE;IACnH,MAAM,MAAM,GAAG,IAAA,oBAAY,EAA8B;QACvD,IAAI,EAAE,UAAU;QAChB,WAAW;QACX,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAI,uBAAuB,CAAC,MAAM,CAAC,CAAC;AAC7C,CAAC;AARD,4BAQC"}
1
+ {"version":3,"file":"instance.js","sourceRoot":"","sources":["../../../source/schema/schemas/instance.ts"],"names":[],"mappings":";AAAA,iDAAiD;;;AAGjD,oCAAuC;AAEvC,SAAgB,QAAQ,CAAI,IAAqC;IAC/D,OAAO,IAAA,mBAAW,EAAC,EAAE,IAAI,EAAE,CAAC,CAAC;AAC/B,CAAC;AAFD,4BAEC"}
@@ -1,11 +1,4 @@
1
- import type { JsonPath } from "../../json-path";
2
- import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
3
- import { SchemaValidator, test } from '../schema.validator';
4
- import type { SchemaDefinition, SchemaOptions, SchemaOutput } from '../types';
5
- export declare type LiteralSchemaDefinition<T> = SchemaDefinition<'literal', T, T> & {
6
- value: T;
7
- };
8
- export declare class LiteralSchemaValidator<T> extends SchemaValidator<LiteralSchemaDefinition<T>> {
9
- [test](value: unknown, _options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<SchemaOutput<LiteralSchemaDefinition<T>>>;
10
- }
11
- export declare function literal<T>(value: T, options?: SchemaOptions<LiteralSchemaDefinition<T>, 'value'>): LiteralSchemaValidator<T>;
1
+ import type { Decorator } from "../../reflection";
2
+ import type { ValueSchema } from '../types';
3
+ export declare function literal<T>(value: T): ValueSchema<T>;
4
+ export declare function Literal(value: any): Decorator<'property' | 'accessor'>;
@@ -1,25 +1,20 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.literal = exports.LiteralSchemaValidator = void 0;
4
- const schema_error_1 = require("../schema.error");
5
- const schema_validator_1 = require("../schema.validator");
4
+ exports.Literal = exports.literal = void 0;
5
+ const constraints_1 = require("../constraints");
6
+ const decorators_1 = require("../decorators");
6
7
  const types_1 = require("../types");
7
- class LiteralSchemaValidator extends schema_validator_1.SchemaValidator {
8
- [schema_validator_1.test](value, _options, path) {
9
- if (value === this.schema.value) {
10
- return { valid: true, value: value };
11
- }
12
- return { valid: false, error: schema_error_1.SchemaError.expectedButGot(String(this.schema.value), String(value), path) };
13
- }
14
- }
15
- exports.LiteralSchemaValidator = LiteralSchemaValidator;
16
- function literal(value, options) {
17
- const schema = (0, types_1.schemaHelper)({
18
- type: 'literal',
19
- value,
20
- ...options
8
+ const utils_1 = require("../utils");
9
+ function literal(value) {
10
+ return (0, types_1.valueSchema)({
11
+ type: (0, utils_1.getValueType)(value),
12
+ valueConstraints: new constraints_1.LiteralConstraint(value)
21
13
  });
22
- return new LiteralSchemaValidator(schema);
23
14
  }
24
15
  exports.literal = literal;
16
+ function Literal(value) {
17
+ return (0, decorators_1.createSchemaPropertyDecoratorFromValueType)(literal(value));
18
+ }
19
+ exports.Literal = Literal;
25
20
  //# sourceMappingURL=literal.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../source/schema/schemas/literal.ts"],"names":[],"mappings":";;;AACA,kDAA8C;AAE9C,0DAA4D;AAE5D,oCAAwC;AAMxC,MAAa,sBAA0B,SAAQ,kCAA2C;IACxF,CAAC,uBAAI,CAAC,CAAC,KAAc,EAAE,QAAkC,EAAE,IAAc;QACvE,IAAI,KAAK,KAAK,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE;YAC/B,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,KAAU,EAAE,CAAC;SAC3C;QAED,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0BAAW,CAAC,cAAc,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,EAAE,CAAC;IAC7G,CAAC;CACF;AARD,wDAQC;AAED,SAAgB,OAAO,CAAI,KAAQ,EAAE,OAA4D;IAC/F,MAAM,MAAM,GAAG,IAAA,oBAAY,EAA6B;QACtD,IAAI,EAAE,SAAS;QACf,KAAK;QACL,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAI,sBAAsB,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AARD,0BAQC"}
1
+ {"version":3,"file":"literal.js","sourceRoot":"","sources":["../../../source/schema/schemas/literal.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,gDAAmD;AACnD,8CAA2E;AAE3E,oCAAuC;AACvC,oCAAwC;AAExC,SAAgB,OAAO,CAAI,KAAQ;IACjC,OAAO,IAAA,mBAAW,EAAC;QACjB,IAAI,EAAE,IAAA,oBAAY,EAAC,KAAK,CAAC;QACzB,gBAAgB,EAAE,IAAI,+BAAiB,CAAC,KAAK,CAAC;KAC/C,CAAC,CAAC;AACL,CAAC;AALD,0BAKC;AAED,SAAgB,OAAO,CAAC,KAAU;IAChC,OAAO,IAAA,uDAA0C,EAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;AACpE,CAAC;AAFD,0BAEC"}
@@ -1,13 +1,3 @@
1
- import type { JsonPath } from "../../json-path";
2
- import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
3
- import { SchemaValidator, test } from '../schema.validator';
4
- import type { Coercible, SchemaDefinition, SchemaInput, SchemaOptions, SchemaOutput } from '../types';
5
- export declare type NullableSchemaDefinition<T extends SchemaDefinition = SchemaDefinition> = SchemaDefinition<'nullable', SchemaInput<T> | null, SchemaOutput<T> | null> & Coercible & {
6
- schema: T;
7
- };
8
- export declare class NullableSchemaValidator<T extends SchemaDefinition> extends SchemaValidator<NullableSchemaDefinition<T>> {
9
- private readonly innerValidator;
10
- constructor(innerValidator: SchemaValidator<T>, schema: NullableSchemaDefinition<T>);
11
- [test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<SchemaOutput<NullableSchemaDefinition<T>>>;
12
- }
13
- export declare function nullable<T extends SchemaDefinition>(innerValidator: SchemaValidator<T>, options?: SchemaOptions<NullableSchemaDefinition<T>, 'schema'>): NullableSchemaValidator<T>;
1
+ import type { Schema } from '../schema';
2
+ import type { ValueSchema } from '../types';
3
+ export declare function nullable<T>(schema: Schema<T>): ValueSchema<T | null>;
@@ -1,32 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.nullable = exports.NullableSchemaValidator = void 0;
4
- const type_guards_1 = require("../../utils/type-guards");
5
- const schema_validator_1 = require("../schema.validator");
3
+ exports.nullable = void 0;
6
4
  const types_1 = require("../types");
7
- class NullableSchemaValidator extends schema_validator_1.SchemaValidator {
8
- constructor(innerValidator, schema) {
9
- super(schema);
10
- this.innerValidator = innerValidator;
11
- }
12
- [schema_validator_1.test](value, options, path) {
13
- if ((0, type_guards_1.isNull)(value)) {
14
- return { valid: true, value };
15
- }
16
- if ((this.schema.coerce ?? options.coerce) && (0, type_guards_1.isUndefined)(value)) {
17
- return { valid: true, value: null };
18
- }
19
- return this.innerValidator[schema_validator_1.test](value, options, path);
20
- }
21
- }
22
- exports.NullableSchemaValidator = NullableSchemaValidator;
23
- function nullable(innerValidator, options) {
24
- const schema = (0, types_1.schemaHelper)({
25
- type: 'nullable',
26
- schema: innerValidator.schema,
27
- ...options
28
- });
29
- return new NullableSchemaValidator(innerValidator, schema);
5
+ function nullable(schema) {
6
+ return (0, types_1.valueSchema)({ type: schema, nullable: true });
30
7
  }
31
8
  exports.nullable = nullable;
32
9
  //# sourceMappingURL=nullable.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../source/schema/schemas/nullable.ts"],"names":[],"mappings":";;;AACA,yDAA0D;AAE1D,0DAA4D;AAE5D,oCAAwC;AAMxC,MAAa,uBAAoD,SAAQ,kCAA4C;IAGnH,YAAY,cAAkC,EAAE,MAAmC;QACjF,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,CAAC,uBAAI,CAAC,CAAC,KAAc,EAAE,OAAiC,EAAE,IAAc;QACtE,IAAI,IAAA,oBAAM,EAAC,KAAK,CAAC,EAAE;YACjB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SAC/B;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,IAAA,yBAAW,EAAC,KAAK,CAAC,EAAE;YAChE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC;SACrC;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAI,CAAC,CAAC,KAAuB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF;AApBD,0DAoBC;AAED,SAAgB,QAAQ,CAA6B,cAAkC,EAAE,OAA8D;IACrJ,MAAM,MAAM,GAAG,IAAA,oBAAY,EAA8B;QACvD,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAI,uBAAuB,CAAI,cAAc,EAAE,MAAM,CAAC,CAAC;AAChE,CAAC;AARD,4BAQC"}
1
+ {"version":3,"file":"nullable.js","sourceRoot":"","sources":["../../../source/schema/schemas/nullable.ts"],"names":[],"mappings":";;;AAEA,oCAAuC;AAEvC,SAAgB,QAAQ,CAAI,MAAiB;IAC3C,OAAO,IAAA,mBAAW,EAAC,EAAE,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AACvD,CAAC;AAFD,4BAEC"}
@@ -1,16 +1,9 @@
1
- import type { JsonPath } from "../../json-path";
2
- import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
3
- import { SchemaValidator, test } from '../schema.validator';
4
- import type { Coercible, SchemaDefinition, SchemaOptions } from '../types';
5
- export declare type NumberSchemaDefinition = SchemaDefinition<'number', unknown, number> & Coercible & {
6
- /** integer */
1
+ import type { Decorator } from "../../reflection";
2
+ import type { Coercible, ValueSchema } from '../types';
3
+ export declare type NumberOptions = Coercible & {
4
+ minimum?: number;
5
+ maximum?: number;
7
6
  integer?: boolean;
8
- /** min */
9
- min?: number;
10
- /** max */
11
- max?: number;
12
7
  };
13
- export declare class NumberSchemaValidator extends SchemaValidator<NumberSchemaDefinition> {
14
- [test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<number>;
15
- }
16
- export declare function number(options?: SchemaOptions<NumberSchemaDefinition>): NumberSchemaValidator;
8
+ export declare function number(options?: NumberOptions): ValueSchema<number>;
9
+ export declare function Number(options?: NumberOptions): Decorator<'property' | 'accessor'>;
@@ -1,54 +1,33 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.number = exports.NumberSchemaValidator = void 0;
4
- const patterns_1 = require("../../utils/patterns");
4
+ exports.Number = exports.number = void 0;
5
5
  const type_guards_1 = require("../../utils/type-guards");
6
- const schema_error_1 = require("../schema.error");
7
- const schema_validator_1 = require("../schema.validator");
6
+ const integer_1 = require("../constraints/integer");
7
+ const maximum_1 = require("../constraints/maximum");
8
+ const minimum_1 = require("../constraints/minimum");
9
+ const decorators_1 = require("../decorators");
8
10
  const types_1 = require("../types");
9
- const coercerMap = {
10
- string: (string, path) => {
11
- const isNumberString = patterns_1.numberPattern.test(string);
12
- const numberValue = Number(string);
13
- if (!isNumberString || Number.isNaN(numberValue)) {
14
- return { valid: false, error: schema_error_1.SchemaError.couldNotCoerce('number', 'string', 'invalid format', path) };
15
- }
16
- return { valid: true, value: numberValue };
17
- },
18
- boolean: (boolean) => ({ valid: true, value: Number(boolean) }),
19
- bigint: (bigint, path) => {
20
- const numberValue = Number(bigint);
21
- if (!Number.isFinite(numberValue)) {
22
- return { valid: false, error: schema_error_1.SchemaError.couldNotCoerce('number', 'bigint', 'value out of bounds', path) };
23
- }
24
- return { valid: true, value: numberValue };
11
+ function number(options = {}) {
12
+ const constraints = [];
13
+ if ((0, type_guards_1.isDefined)(options.minimum)) {
14
+ constraints.push(new minimum_1.MinimumConstraint(options.minimum));
25
15
  }
26
- };
27
- class NumberSchemaValidator extends schema_validator_1.SchemaValidator {
28
- [schema_validator_1.test](value, options, path) {
29
- const result = super.ensureType('number', value, path, { coerce: this.schema.coerce ?? options.coerce }, coercerMap);
30
- if (!result.valid) {
31
- return result;
32
- }
33
- if ((this.schema.integer == true) && !Number.isInteger(result.value)) {
34
- return { valid: false, error: (0, schema_error_1.schemaError)('expected integer', path) };
35
- }
36
- if ((0, type_guards_1.isDefined)(this.schema.min) && (result.value < this.schema.min)) {
37
- return { valid: false, error: (0, schema_error_1.schemaError)(`minimum valid value is ${this.schema.min}`, path) };
38
- }
39
- if ((0, type_guards_1.isDefined)(this.schema.max) && (result.value > this.schema.max)) {
40
- return { valid: false, error: (0, schema_error_1.schemaError)(`maximum valid value is ${this.schema.max}`, path) };
41
- }
42
- return { valid: true, value: result.value };
16
+ if ((0, type_guards_1.isDefined)(options.maximum)) {
17
+ constraints.push(new maximum_1.MaximumConstraint(options.maximum));
43
18
  }
44
- }
45
- exports.NumberSchemaValidator = NumberSchemaValidator;
46
- function number(options) {
47
- const schema = (0, types_1.schemaHelper)({
48
- type: 'number',
49
- ...options
19
+ if (options.integer == true) {
20
+ constraints.push(integer_1.integerConstraint);
21
+ }
22
+ return (0, types_1.valueSchema)({
23
+ type: globalThis.Number,
24
+ coerce: options.coerce,
25
+ valueConstraints: constraints
50
26
  });
51
- return new NumberSchemaValidator(schema);
52
27
  }
53
28
  exports.number = number;
29
+ function Number(options) {
30
+ return (0, decorators_1.createSchemaPropertyDecoratorFromValueType)(number(options));
31
+ }
32
+ exports.Number = Number;
54
33
  //# sourceMappingURL=number.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../source/schema/schemas/number.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"number.js","sourceRoot":"","sources":["../../../source/schema/schemas/number.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAGzD,yDAAgD;AAChD,oDAA2D;AAC3D,oDAA2D;AAC3D,oDAA2D;AAC3D,8CAA2E;AAE3E,oCAAuC;AAQvC,SAAgB,MAAM,CAAC,UAAyB,EAAE;IAChD,MAAM,WAAW,GAA4B,EAAE,CAAC;IAEhD,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,2BAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1D;IAED,IAAI,IAAA,uBAAS,EAAC,OAAO,CAAC,OAAO,CAAC,EAAE;QAC9B,WAAW,CAAC,IAAI,CAAC,IAAI,2BAAiB,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;KAC1D;IAED,IAAI,OAAO,CAAC,OAAO,IAAI,IAAI,EAAE;QAC3B,WAAW,CAAC,IAAI,CAAC,2BAAiB,CAAC,CAAC;KACrC;IAED,OAAO,IAAA,mBAAW,EAAC;QACjB,IAAI,EAAE,UAAU,CAAC,MAAM;QACvB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,gBAAgB,EAAE,WAAW;KAC9B,CAAC,CAAC;AACL,CAAC;AApBD,wBAoBC;AAED,SAAgB,MAAM,CAAC,OAAuB;IAC5C,OAAO,IAAA,uDAA0C,EAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACrE,CAAC;AAFD,wBAEC"}
@@ -1,34 +1,6 @@
1
- import type { JsonPath } from "../../json-path";
2
- import type { OneOrMany, Optionalize, SimplifyObject, StringMap } from "../../types";
3
- import type { Simplify } from 'type-fest';
4
- import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
5
- import { SchemaValidator, test, testAsync } from '../schema.validator';
6
- import type { Maskable, SchemaDefinition, SchemaOptions, SchemaOutput } from '../types';
7
- export declare type ObjectOutputType<T extends StringMap<SchemaDefinition>> = Simplify<Optionalize<{
8
- [P in keyof T]: SchemaOutput<T[P]>;
9
- }>>;
10
- export declare type ObjectSchemaValidatorEntries<T extends StringMap<SchemaDefinition>> = {
11
- [P in keyof T]: SchemaValidator<T[P]>;
12
- };
13
- export declare type ObjectSchemaDefinition<T extends StringMap<SchemaDefinition> = StringMap<SchemaDefinition>> = SchemaDefinition<'object', unknown, ObjectOutputType<T>> & Maskable & {
14
- entries: T;
15
- /** Keep unknown properties instead of raising an error. This overwrites mask. */
16
- keepUnknown?: boolean;
17
- };
18
- export declare type ObjectAssign<A extends StringMap<SchemaDefinition>, B extends StringMap<SchemaDefinition>> = SimplifyObject<B & Omit<A, keyof B>>;
19
- export declare type ObjectPick<T extends StringMap<SchemaDefinition>, K extends keyof T> = SimplifyObject<Pick<T, K>>;
20
- export declare type ObjectExclude<T extends StringMap<SchemaDefinition>, K extends keyof T> = SimplifyObject<Omit<T, K>>;
21
- export declare class ObjectSchemaValidator<T extends StringMap<SchemaDefinition>> extends SchemaValidator<ObjectSchemaDefinition<T>> {
22
- private readonly validatorEntries;
23
- constructor(validators: ObjectSchemaValidatorEntries<T>, schema: ObjectSchemaDefinition<T>);
24
- static assign<A extends StringMap<SchemaDefinition>, B extends StringMap<SchemaDefinition>>(a: ObjectSchemaValidator<A>, b: ObjectSchemaValidator<B>): ObjectSchemaValidator<ObjectAssign<A, B>>;
25
- static pick<T extends StringMap<SchemaDefinition>, K extends keyof T>(objectSchema: ObjectSchemaValidator<T>, keys: OneOrMany<K>): ObjectSchemaValidator<ObjectPick<T, K>>;
26
- static exclude<T extends StringMap<SchemaDefinition>, K extends keyof T>(objectSchema: ObjectSchemaValidator<T>, keys: OneOrMany<K>): ObjectSchemaValidator<ObjectExclude<T, K>>;
27
- [test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<ObjectOutputType<T>>;
28
- [testAsync](value: unknown, options: DefinedValidationOptions, path: JsonPath): Promise<ValidationTestResult<ObjectOutputType<T>>>;
29
- private _testBase;
30
- }
31
- export declare function object<T extends StringMap<SchemaDefinition>>(entries: ObjectSchemaValidatorEntries<T>, options?: SchemaOptions<ObjectSchemaDefinition<T>, 'entries'>): ObjectSchemaValidator<T>;
32
- export declare function assign<A extends StringMap<SchemaDefinition>, B extends StringMap<SchemaDefinition>>(a: ObjectSchemaValidator<A>, b: ObjectSchemaValidator<B>): ObjectSchemaValidator<ObjectAssign<A, B>>;
33
- export declare function pick<T extends StringMap<SchemaDefinition>, K extends keyof T>(objectSchema: ObjectSchemaValidator<T>, keys: OneOrMany<K>): ObjectSchemaValidator<ObjectPick<T, K>>;
34
- export declare function exclude<T extends StringMap<SchemaDefinition>, K extends keyof T>(objectSchema: ObjectSchemaValidator<T>, keys: OneOrMany<K>): ObjectSchemaValidator<ObjectExclude<T, K>>;
1
+ import type { Record, TypedOmit } from "../../types";
2
+ import type { PartialOnUndefinedDeep } from 'type-fest';
3
+ import type { ObjectSchema, ObjectSchemaProperties } from '../types';
4
+ export declare type ObjectOptions<T extends Record = Record> = TypedOmit<ObjectSchema<T>, 'properties'>;
5
+ export declare function explicitObject<T extends Record>(properties: ObjectSchemaProperties<T>, options?: ObjectOptions<T>): ObjectSchema<T>;
6
+ export declare function object<T extends Record>(properties: ObjectSchemaProperties<T>, options?: ObjectOptions<T>): ObjectSchema<PartialOnUndefinedDeep<T>>;
@@ -1,121 +1,17 @@
1
1
  "use strict";
2
+ /* eslint-disable @typescript-eslint/naming-convention */
2
3
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.exclude = exports.pick = exports.assign = exports.object = exports.ObjectSchemaValidator = void 0;
4
- const array_1 = require("../../utils/array/array");
5
- const map_1 = require("../../utils/map");
6
- const object_1 = require("../../utils/object/object");
7
- const type_guards_1 = require("../../utils/type-guards");
8
- const schema_error_1 = require("../schema.error");
9
- const schema_validator_1 = require("../schema.validator");
4
+ exports.object = exports.explicitObject = void 0;
10
5
  const types_1 = require("../types");
11
- class ObjectSchemaValidator extends schema_validator_1.SchemaValidator {
12
- constructor(validators, schema) {
13
- super(schema);
14
- this.validatorEntries = new Map((0, object_1.objectEntries)(validators));
15
- }
16
- static assign(a, b) {
17
- const validatorEntries = Object.fromEntries([...a.validatorEntries, ...b.validatorEntries]);
18
- const schema = {
19
- type: 'object',
20
- entries: { ...a.schema.entries, ...b.schema.entries }
21
- };
22
- return new ObjectSchemaValidator(validatorEntries, schema);
23
- }
24
- static pick(objectSchema, keys) {
25
- const keysArray = (0, array_1.toArray)(keys);
26
- const validatorEntries = Object.fromEntries([...objectSchema.validatorEntries].filter(([key]) => keysArray.includes(key)));
27
- const schema = {
28
- type: 'object',
29
- entries: Object.fromEntries([...Object.entries(objectSchema.schema.entries)].filter(([key]) => keysArray.includes(key)))
30
- };
31
- return new ObjectSchemaValidator(validatorEntries, schema);
32
- }
33
- static exclude(objectSchema, keys) {
34
- const keysArray = (0, array_1.toArray)(keys);
35
- const validatorEntries = Object.fromEntries([...objectSchema.validatorEntries].filter(([key]) => !keysArray.includes(key)));
36
- const schema = {
37
- type: 'object',
38
- entries: Object.fromEntries([...Object.entries(objectSchema.schema.entries)].filter(([key]) => !keysArray.includes(key)))
39
- };
40
- return new ObjectSchemaValidator(validatorEntries, schema);
41
- }
42
- [schema_validator_1.test](value, options, path) {
43
- const testBaseResult = this._testBase(value, options, path);
44
- if (!testBaseResult.valid) {
45
- return testBaseResult;
46
- }
47
- let resultObject = {};
48
- for (const [key, validator] of this.validatorEntries) {
49
- const innerValue = testBaseResult.value.get(key);
50
- const innerValueValidationTestResult = validator[schema_validator_1.test](innerValue, options, path.add(key));
51
- if (!innerValueValidationTestResult.valid) {
52
- return innerValueValidationTestResult;
53
- }
54
- resultObject[key] = innerValueValidationTestResult.value;
55
- }
56
- if (this.schema.keepUnknown == true) {
57
- resultObject = { ...value, ...resultObject };
58
- }
59
- return { valid: true, value: resultObject };
60
- }
61
- async [schema_validator_1.testAsync](value, options, path) {
62
- const testBaseResult = this._testBase(value, options, path);
63
- if (!testBaseResult.valid) {
64
- return testBaseResult;
65
- }
66
- let resultObject = {};
67
- for (const [key, validator] of this.validatorEntries) {
68
- const innerValue = testBaseResult.value.get(key);
69
- const innerValueValidationTestResult = await validator[schema_validator_1.testAsync](innerValue, options, path.add(key));
70
- if (!innerValueValidationTestResult.valid) {
71
- return innerValueValidationTestResult;
72
- }
73
- resultObject[key] = innerValueValidationTestResult.value;
74
- }
75
- if (this.schema.keepUnknown == true) {
76
- resultObject = { ...value, ...resultObject };
77
- }
78
- return { valid: true, value: resultObject };
79
- }
80
- _testBase(value, options, path) {
81
- const typeResult = this.ensureType('object', value, path);
82
- if (!typeResult.valid) {
83
- return typeResult;
84
- }
85
- else if (value === null) {
86
- return { valid: false, error: schema_error_1.SchemaError.expectedButGot('object', 'null', path) };
87
- }
88
- const valueEntries = new Map((0, object_1.objectEntries)(value));
89
- const unknownKeys = (0, map_1.differenceMaps)(valueEntries, this.validatorEntries);
90
- if ((unknownKeys.length > 0) && (this.schema.mask != true) && ((0, type_guards_1.isBoolean)(this.schema.mask) || !options.mask) && (this.schema.keepUnknown != true)) {
91
- const keys = unknownKeys.map((entry) => entry[0]).join(', ');
92
- return { valid: false, error: (0, schema_error_1.schemaError)(`unexpected keys in object: ${keys}`, path) };
93
- }
94
- return { valid: true, value: valueEntries };
95
- }
6
+ function explicitObject(properties, options) {
7
+ return object(properties, options);
96
8
  }
97
- exports.ObjectSchemaValidator = ObjectSchemaValidator;
98
- function object(entries, options) {
99
- const validatorEntries = (0, object_1.objectEntries)(entries);
100
- const mappedValidatorEntries = validatorEntries.map(([key, value]) => [key, value.schema]);
101
- const schema = (0, types_1.schemaHelper)({
102
- type: 'object',
103
- entries: Object.fromEntries(mappedValidatorEntries),
9
+ exports.explicitObject = explicitObject;
10
+ function object(properties, options) {
11
+ return (0, types_1.objectSchema)({
12
+ properties,
104
13
  ...options
105
14
  });
106
- return new ObjectSchemaValidator(entries, schema);
107
15
  }
108
16
  exports.object = object;
109
- function assign(a, b) {
110
- return ObjectSchemaValidator.assign(a, b);
111
- }
112
- exports.assign = assign;
113
- function pick(objectSchema, keys) {
114
- return ObjectSchemaValidator.pick(objectSchema, keys);
115
- }
116
- exports.pick = pick;
117
- function exclude(objectSchema, keys) {
118
- return ObjectSchemaValidator.exclude(objectSchema, keys);
119
- }
120
- exports.exclude = exclude;
121
17
  //# sourceMappingURL=object.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../source/schema/schemas/object.ts"],"names":[],"mappings":";;;AAEA,mDAA8C;AAC9C,yCAA6C;AAC7C,sDAAsD;AACtD,yDAAgD;AAEhD,kDAA2D;AAE3D,0DAAuE;AAEvE,oCAAwC;AAiBxC,MAAa,qBAA6D,SAAQ,kCAA0C;IAG1H,YAAY,UAA2C,EAAE,MAAiC;QACxF,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,gBAAgB,GAAG,IAAI,GAAG,CAAC,IAAA,sBAAa,EAAC,UAAU,CAAC,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,MAAM,CAA+E,CAA2B,EAAE,CAA2B;QAClJ,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAwC,CAAC;QAEnI,MAAM,MAAM,GAA+C;YACzD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC,MAAM,CAAC,OAAO,EAAE;SACtD,CAAC;QAEF,OAAO,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,IAAI,CAA2D,YAAsC,EAAE,IAAkB;QAC9H,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;QAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAQ,CAAC,CAAC,CAAmD,CAAC;QAElL,MAAM,MAAM,GAAuC;YACjD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAQ,CAAC,CAAC,CAAe;SAC5I,CAAC;QAEF,OAAO,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,MAAM,CAAC,OAAO,CAA2D,YAAsC,EAAE,IAAkB;QACjI,MAAM,SAAS,GAAG,IAAA,eAAO,EAAC,IAAI,CAAC,CAAC;QAChC,MAAM,gBAAgB,GAAG,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,YAAY,CAAC,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAQ,CAAC,CAAC,CAAsD,CAAC;QAEtL,MAAM,MAAM,GAAuC;YACjD,IAAI,EAAE,QAAQ;YACd,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,QAAQ,CAAC,GAAQ,CAAC,CAAC,CAAe;SAC7I,CAAC;QAEF,OAAO,IAAI,qBAAqB,CAAC,gBAAgB,EAAE,MAAM,CAAC,CAAC;IAC7D,CAAC;IAED,CAAC,uBAAI,CAAC,CAAC,KAAc,EAAE,OAAiC,EAAE,IAAc;QACtE,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAE5D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YACzB,OAAO,cAAc,CAAC;SACvB;QAED,IAAI,YAAY,GAAW,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACpD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;YAE3D,MAAM,8BAA8B,GAAG,SAAS,CAAC,uBAAI,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC,CAAC;YAErG,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE;gBACzC,OAAO,8BAA8B,CAAC;aACvC;YAED,YAAY,CAAC,GAAa,CAAC,GAAG,8BAA8B,CAAC,KAAK,CAAC;SACpE;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE;YACnC,YAAY,GAAG,EAAE,GAAI,KAAgB,EAAE,GAAG,YAAY,EAAE,CAAC;SAC1D;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAmC,EAAE,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,CAAC,4BAAS,CAAC,CAAC,KAAc,EAAE,OAAiC,EAAE,IAAc;QACjF,MAAM,cAAc,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;QAE5D,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE;YACzB,OAAO,cAAc,CAAC;SACvB;QAED,IAAI,YAAY,GAAW,EAAE,CAAC;QAE9B,KAAK,MAAM,CAAC,GAAG,EAAE,SAAS,CAAC,IAAI,IAAI,CAAC,gBAAgB,EAAE;YACpD,MAAM,UAAU,GAAG,cAAc,CAAC,KAAK,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC;YAE3D,MAAM,8BAA8B,GAAG,MAAM,SAAS,CAAC,4BAAS,CAAC,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,GAAa,CAAC,CAAC,CAAC;YAEhH,IAAI,CAAC,8BAA8B,CAAC,KAAK,EAAE;gBACzC,OAAO,8BAA8B,CAAC;aACvC;YAED,YAAY,CAAC,GAAa,CAAC,GAAG,8BAA8B,CAAC,KAAK,CAAC;SACpE;QAED,IAAI,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,EAAE;YACnC,YAAY,GAAG,EAAE,GAAI,KAAgB,EAAE,GAAG,YAAY,EAAE,CAAC;SAC1D;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAmC,EAAE,CAAC;IACrE,CAAC;IAEO,SAAS,CAAC,KAAc,EAAE,OAAiC,EAAE,IAAc;QACjF,MAAM,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC,QAAQ,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;QAE1D,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE;YACrB,OAAO,UAAU,CAAC;SACnB;aACI,IAAI,KAAK,KAAK,IAAI,EAAE;YACvB,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,0BAAW,CAAC,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,CAAC;SACpF;QAED,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,IAAA,sBAAa,EAAC,KAAe,CAAC,CAAC,CAAC;QAC7D,MAAM,WAAW,GAAG,IAAA,oBAAc,EAAC,YAAY,EAAE,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAExE,IAAI,CAAC,WAAW,CAAC,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,IAAA,uBAAS,EAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,IAAI,CAAC,EAAE;YACjJ,MAAM,IAAI,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC7D,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAA,0BAAW,EAAC,8BAA8B,IAAI,EAAE,EAAE,IAAI,CAAC,EAAE,CAAC;SACzF;QAED,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC;IAC9C,CAAC;CACF;AAxHD,sDAwHC;AAED,SAAgB,MAAM,CAAwC,OAAwC,EAAE,OAA6D;IACnK,MAAM,gBAAgB,GAAG,IAAA,sBAAa,EAAC,OAAO,CAAqC,CAAC;IACpF,MAAM,sBAAsB,GAAG,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,MAAM,CAAU,CAAC,CAAC;IAEpG,MAAM,MAAM,GAAG,IAAA,oBAAY,EAA4B;QACrD,IAAI,EAAE,QAAQ;QACd,OAAO,EAAE,MAAM,CAAC,WAAW,CAAC,sBAAsB,CAAM;QACxD,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAI,qBAAqB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;AACpD,CAAC;AAXD,wBAWC;AAED,SAAgB,MAAM,CAA+E,CAA2B,EAAE,CAA2B;IAC3J,OAAO,qBAAqB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5C,CAAC;AAFD,wBAEC;AAED,SAAgB,IAAI,CAA2D,YAAsC,EAAE,IAAkB;IACvI,OAAO,qBAAqB,CAAC,IAAI,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AACxD,CAAC;AAFD,oBAEC;AAED,SAAgB,OAAO,CAA2D,YAAsC,EAAE,IAAkB;IAC1I,OAAO,qBAAqB,CAAC,OAAO,CAAC,YAAY,EAAE,IAAI,CAAC,CAAC;AAC3D,CAAC;AAFD,0BAEC"}
1
+ {"version":3,"file":"object.js","sourceRoot":"","sources":["../../../source/schema/schemas/object.ts"],"names":[],"mappings":";AAAA,yDAAyD;;;AAKzD,oCAAwC;AAIxC,SAAgB,cAAc,CAAmB,UAAqC,EAAE,OAA0B;IAChH,OAAO,MAAM,CAAC,UAAU,EAAE,OAAO,CAA2B,CAAC;AAC/D,CAAC;AAFD,wCAEC;AAED,SAAgB,MAAM,CAAmB,UAAqC,EAAE,OAA0B;IACxG,OAAO,IAAA,oBAAY,EAAC;QAClB,UAAU;QACV,GAAG,OAAO;KACX,CAA4C,CAAC;AAChD,CAAC;AALD,wBAKC"}
@@ -1,13 +1,3 @@
1
- import type { JsonPath } from "../../json-path";
2
- import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
3
- import { SchemaValidator, test } from '../schema.validator';
4
- import type { Coercible, SchemaDefinition, SchemaInput, SchemaOptions, SchemaOutput } from '../types';
5
- export declare type OptionalSchemaDefinition<T extends SchemaDefinition = SchemaDefinition> = SchemaDefinition<'optional', SchemaInput<T> | undefined, SchemaOutput<T> | undefined> & Coercible & {
6
- schema: T;
7
- };
8
- export declare class OptionalSchemaValidator<T extends SchemaDefinition> extends SchemaValidator<OptionalSchemaDefinition<T>> {
9
- private readonly innerValidator;
10
- constructor(innerValidator: SchemaValidator<T>, schema: OptionalSchemaDefinition<T>);
11
- [test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<SchemaOutput<OptionalSchemaDefinition<T>>>;
12
- }
13
- export declare function optional<T extends SchemaDefinition>(innerValidator: SchemaValidator<T>, options?: SchemaOptions<OptionalSchemaDefinition<T>, 'schema'>): OptionalSchemaValidator<T>;
1
+ import type { Schema } from '../schema';
2
+ import type { ValueSchema } from '../types';
3
+ export declare function optional<T>(schema: Schema<T>): ValueSchema<T | undefined>;
@@ -1,32 +1,9 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.optional = exports.OptionalSchemaValidator = void 0;
4
- const type_guards_1 = require("../../utils/type-guards");
5
- const schema_validator_1 = require("../schema.validator");
3
+ exports.optional = void 0;
6
4
  const types_1 = require("../types");
7
- class OptionalSchemaValidator extends schema_validator_1.SchemaValidator {
8
- constructor(innerValidator, schema) {
9
- super(schema);
10
- this.innerValidator = innerValidator;
11
- }
12
- [schema_validator_1.test](value, options, path) {
13
- if ((0, type_guards_1.isUndefined)(value)) {
14
- return { valid: true, value };
15
- }
16
- if ((this.schema.coerce ?? options.coerce) && (0, type_guards_1.isNull)(value)) {
17
- return { valid: true, value: undefined };
18
- }
19
- return this.innerValidator[schema_validator_1.test](value, options, path);
20
- }
21
- }
22
- exports.OptionalSchemaValidator = OptionalSchemaValidator;
23
- function optional(innerValidator, options) {
24
- const schema = (0, types_1.schemaHelper)({
25
- type: 'optional',
26
- schema: innerValidator.schema,
27
- ...options
28
- });
29
- return new OptionalSchemaValidator(innerValidator, schema);
5
+ function optional(schema) {
6
+ return (0, types_1.valueSchema)({ type: schema, optional: true });
30
7
  }
31
8
  exports.optional = optional;
32
9
  //# sourceMappingURL=optional.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../source/schema/schemas/optional.ts"],"names":[],"mappings":";;;AACA,yDAA0D;AAE1D,0DAA4D;AAE5D,oCAAwC;AAMxC,MAAa,uBAAoD,SAAQ,kCAA4C;IAGnH,YAAY,cAAkC,EAAE,MAAmC;QACjF,KAAK,CAAC,MAAM,CAAC,CAAC;QAEd,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;IACvC,CAAC;IAED,CAAC,uBAAI,CAAC,CAAC,KAAc,EAAE,OAAiC,EAAE,IAAc;QACtE,IAAI,IAAA,yBAAW,EAAC,KAAK,CAAC,EAAE;YACtB,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;SAC/B;QAED,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,CAAC,IAAI,IAAA,oBAAM,EAAC,KAAK,CAAC,EAAE;YAC3D,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;SAC1C;QAED,OAAO,IAAI,CAAC,cAAc,CAAC,uBAAI,CAAC,CAAC,KAAuB,EAAE,OAAO,EAAE,IAAI,CAAC,CAAC;IAC3E,CAAC;CACF;AApBD,0DAoBC;AAED,SAAgB,QAAQ,CAA6B,cAAkC,EAAE,OAA8D;IACrJ,MAAM,MAAM,GAAG,IAAA,oBAAY,EAA8B;QACvD,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,cAAc,CAAC,MAAM;QAC7B,GAAG,OAAO;KACX,CAAC,CAAC;IAEH,OAAO,IAAI,uBAAuB,CAAC,cAAc,EAAE,MAAM,CAAC,CAAC;AAC7D,CAAC;AARD,4BAQC"}
1
+ {"version":3,"file":"optional.js","sourceRoot":"","sources":["../../../source/schema/schemas/optional.ts"],"names":[],"mappings":";;;AAEA,oCAAuC;AAEvC,SAAgB,QAAQ,CAAI,MAAiB;IAC3C,OAAO,IAAA,mBAAW,EAAC,EAAE,IAAI,EAAE,MAA+B,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;AAChF,CAAC;AAFD,4BAEC"}
@@ -0,0 +1,4 @@
1
+ import type { OneOrMany, Record } from "../../types";
2
+ import type { Simplify } from 'type-fest';
3
+ import type { ObjectSchema } from '../types';
4
+ export declare function pick<T extends Record, K extends keyof T>(schema: ObjectSchema<T>, key: OneOrMany<K>): ObjectSchema<Simplify<Pick<T, K>>>;
@@ -0,0 +1,17 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.pick = void 0;
4
+ const array_1 = require("../../utils/array/array");
5
+ const types_1 = require("../types");
6
+ function pick(schema, key) {
7
+ const keys = (0, array_1.toArray)(key);
8
+ const entries = Object.entries(schema.properties);
9
+ const pickedEntries = entries.filter(([propertyKey]) => keys.includes(propertyKey));
10
+ const pickedSchema = (0, types_1.objectSchema)({
11
+ ...schema,
12
+ properties: Object.fromEntries(pickedEntries)
13
+ });
14
+ return pickedSchema;
15
+ }
16
+ exports.pick = pick;
17
+ //# sourceMappingURL=pick.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pick.js","sourceRoot":"","sources":["../../../source/schema/schemas/pick.ts"],"names":[],"mappings":";;;AACA,mDAA8C;AAG9C,oCAAwC;AAExC,SAAgB,IAAI,CAAsC,MAAuB,EAAE,GAAiB;IAClG,MAAM,IAAI,GAAG,IAAA,eAAO,EAAC,GAAG,CAAC,CAAC;IAE1B,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAClD,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,WAAgB,CAAC,CAAC,CAAC;IAEzF,MAAM,YAAY,GAAG,IAAA,oBAAY,EAAC;QAChC,GAAG,MAAM;QACT,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,aAAa,CAAe;KAC5D,CAAC,CAAC;IAEH,OAAO,YAAwC,CAAC;AAClD,CAAC;AAZD,oBAYC"}
@@ -1,9 +1,4 @@
1
- import type { JsonPath } from "../../json-path";
2
- import type { DefinedValidationOptions, ValidationTestResult } from '../schema.validator';
3
- import { SchemaValidator, test } from '../schema.validator';
4
- import type { SchemaDefinition, SchemaOptions, SchemaOutput } from '../types';
5
- export declare type ReadableStreamSchemaDefinition = SchemaDefinition<'readableStream', unknown, ReadableStream>;
6
- export declare class ReadableStreamSchemaValidator extends SchemaValidator<ReadableStreamSchemaDefinition> {
7
- [test](value: unknown, options: DefinedValidationOptions, path: JsonPath): ValidationTestResult<SchemaOutput<ReadableStreamSchemaDefinition>>;
8
- }
9
- export declare function readableStream(options?: SchemaOptions<ReadableStreamSchemaDefinition>): ReadableStreamSchemaValidator;
1
+ import type { Decorator } from "../../reflection";
2
+ import type { ValueSchema } from '../types';
3
+ export declare function readableStream(): ValueSchema<globalThis.ReadableStream>;
4
+ export declare function ReadableStream(): Decorator<'property' | 'accessor'>;