shelving 1.236.0 → 1.236.2

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 (793) hide show
  1. package/api/cache/APICache.d.ts +69 -6
  2. package/api/cache/APICache.js +61 -5
  3. package/api/cache/EndpointCache.d.ts +75 -7
  4. package/api/cache/EndpointCache.js +75 -7
  5. package/api/endpoint/Endpoint.d.ts +141 -25
  6. package/api/endpoint/Endpoint.js +55 -9
  7. package/api/endpoint/util.d.ts +28 -6
  8. package/api/provider/APIProvider.d.ts +58 -14
  9. package/api/provider/APIProvider.js +24 -2
  10. package/api/provider/CachedAPIProvider.d.ts +58 -5
  11. package/api/provider/CachedAPIProvider.js +58 -6
  12. package/api/provider/ClientAPIProvider.d.ts +80 -4
  13. package/api/provider/ClientAPIProvider.js +75 -4
  14. package/api/provider/DebugAPIProvider.d.ts +40 -1
  15. package/api/provider/DebugAPIProvider.js +40 -1
  16. package/api/provider/JSONAPIProvider.d.ts +18 -2
  17. package/api/provider/JSONAPIProvider.js +18 -2
  18. package/api/provider/LoggingAPIProvider.d.ts +25 -2
  19. package/api/provider/LoggingAPIProvider.js +25 -2
  20. package/api/provider/MockAPIProvider.d.ts +72 -1
  21. package/api/provider/MockAPIProvider.js +60 -4
  22. package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
  23. package/api/provider/MockEndpointAPIProvider.js +9 -0
  24. package/api/provider/ThroughAPIProvider.d.ts +67 -1
  25. package/api/provider/ThroughAPIProvider.js +67 -1
  26. package/api/provider/ValidationAPIProvider.d.ts +32 -1
  27. package/api/provider/ValidationAPIProvider.js +32 -1
  28. package/api/provider/XMLAPIProvider.d.ts +18 -2
  29. package/api/provider/XMLAPIProvider.js +18 -2
  30. package/api/store/EndpointStore.d.ts +24 -1
  31. package/api/store/EndpointStore.js +24 -1
  32. package/bun/BunPostgreSQLProvider.d.ts +38 -0
  33. package/bun/BunPostgreSQLProvider.js +38 -2
  34. package/cloudflare/CloudflareD1Provider.d.ts +29 -2
  35. package/cloudflare/CloudflareD1Provider.js +29 -2
  36. package/cloudflare/CloudflareKVProvider.d.ts +115 -0
  37. package/cloudflare/CloudflareKVProvider.js +115 -0
  38. package/cloudflare/types.d.ts +41 -7
  39. package/db/cache/CollectionCache.d.ts +83 -7
  40. package/db/cache/CollectionCache.js +83 -7
  41. package/db/cache/DBCache.d.ts +93 -8
  42. package/db/cache/DBCache.js +85 -7
  43. package/db/collection/Collection.d.ts +103 -15
  44. package/db/collection/Collection.js +58 -6
  45. package/db/migrate/DBMigrator.d.ts +29 -1
  46. package/db/migrate/DBMigrator.js +20 -1
  47. package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
  48. package/db/migrate/PostgreSQLMigrator.js +8 -1
  49. package/db/migrate/SQLMigrator.d.ts +63 -4
  50. package/db/migrate/SQLMigrator.js +51 -1
  51. package/db/migrate/SQLiteMigrator.d.ts +8 -1
  52. package/db/migrate/SQLiteMigrator.js +8 -1
  53. package/db/provider/CacheDBProvider.d.ts +135 -1
  54. package/db/provider/CacheDBProvider.js +135 -1
  55. package/db/provider/ChangesDBProvider.d.ts +84 -3
  56. package/db/provider/ChangesDBProvider.js +77 -2
  57. package/db/provider/DBProvider.d.ts +148 -1
  58. package/db/provider/DBProvider.js +51 -1
  59. package/db/provider/DebugDBProvider.d.ts +118 -1
  60. package/db/provider/DebugDBProvider.js +118 -1
  61. package/db/provider/MemoryDBProvider.d.ts +262 -7
  62. package/db/provider/MemoryDBProvider.js +262 -7
  63. package/db/provider/MockDBProvider.d.ts +113 -2
  64. package/db/provider/MockDBProvider.js +106 -1
  65. package/db/provider/PostgreSQLProvider.d.ts +34 -2
  66. package/db/provider/PostgreSQLProvider.js +34 -4
  67. package/db/provider/SQLProvider.d.ts +250 -14
  68. package/db/provider/SQLProvider.js +237 -13
  69. package/db/provider/SQLiteProvider.d.ts +41 -1
  70. package/db/provider/SQLiteProvider.js +41 -4
  71. package/db/provider/ThroughDBProvider.d.ts +156 -1
  72. package/db/provider/ThroughDBProvider.js +156 -1
  73. package/db/provider/ValidationDBProvider.d.ts +120 -1
  74. package/db/provider/ValidationDBProvider.js +120 -1
  75. package/db/store/ItemStore.d.ts +38 -2
  76. package/db/store/ItemStore.js +38 -2
  77. package/db/store/QueryStore.d.ts +64 -6
  78. package/db/store/QueryStore.js +64 -6
  79. package/error/BaseError.d.ts +27 -2
  80. package/error/BaseError.js +14 -0
  81. package/error/Errors.d.ts +12 -1
  82. package/error/Errors.js +12 -1
  83. package/error/NetworkError.d.ts +13 -1
  84. package/error/NetworkError.js +13 -1
  85. package/error/RequestError.d.ts +90 -7
  86. package/error/RequestError.js +90 -7
  87. package/error/RequiredError.d.ts +11 -1
  88. package/error/RequiredError.js +11 -1
  89. package/error/ResponseError.d.ts +19 -2
  90. package/error/ResponseError.js +19 -2
  91. package/error/UnexpectedError.d.ts +14 -1
  92. package/error/UnexpectedError.js +14 -1
  93. package/error/UnimplementedError.d.ts +13 -1
  94. package/error/UnimplementedError.js +13 -1
  95. package/error/ValueError.d.ts +14 -1
  96. package/error/ValueError.js +14 -1
  97. package/extract/DirectoryExtractor.d.ts +35 -1
  98. package/extract/DirectoryExtractor.js +30 -0
  99. package/extract/Extractor.d.ts +21 -2
  100. package/extract/Extractor.js +7 -1
  101. package/extract/FileExtractor.d.ts +18 -0
  102. package/extract/FileExtractor.js +18 -0
  103. package/extract/IndexExtractor.d.ts +36 -1
  104. package/extract/IndexExtractor.js +31 -0
  105. package/extract/MarkupExtractor.d.ts +15 -0
  106. package/extract/MarkupExtractor.js +15 -0
  107. package/extract/MergingExtractor.d.ts +36 -1
  108. package/extract/MergingExtractor.js +31 -0
  109. package/extract/ModuleExtractor.d.ts +25 -1
  110. package/extract/ModuleExtractor.js +20 -0
  111. package/extract/PackageExtractor.d.ts +36 -1
  112. package/extract/PackageExtractor.js +31 -0
  113. package/extract/ThroughExtractor.d.ts +22 -1
  114. package/extract/ThroughExtractor.js +22 -1
  115. package/extract/TypescriptExtractor.d.ts +21 -0
  116. package/extract/TypescriptExtractor.js +28 -3
  117. package/firestore/client/FirestoreClientProvider.d.ts +129 -4
  118. package/firestore/client/FirestoreClientProvider.js +129 -4
  119. package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
  120. package/firestore/lite/FirestoreLiteProvider.js +128 -3
  121. package/firestore/server/FirestoreServerProvider.d.ts +129 -2
  122. package/firestore/server/FirestoreServerProvider.js +129 -2
  123. package/markup/MarkupParser.d.ts +57 -10
  124. package/markup/MarkupParser.js +50 -9
  125. package/markup/MarkupRule.d.ts +34 -1
  126. package/markup/Parser.d.ts +18 -0
  127. package/markup/Parser.js +11 -0
  128. package/markup/rule/blockquote.d.ts +3 -0
  129. package/markup/rule/blockquote.js +3 -0
  130. package/markup/rule/code.d.ts +3 -0
  131. package/markup/rule/code.js +3 -0
  132. package/markup/rule/fenced.d.ts +3 -0
  133. package/markup/rule/fenced.js +3 -0
  134. package/markup/rule/heading.d.ts +3 -0
  135. package/markup/rule/heading.js +3 -0
  136. package/markup/rule/index.d.ts +16 -3
  137. package/markup/rule/index.js +16 -3
  138. package/markup/rule/inline.d.ts +4 -1
  139. package/markup/rule/inline.js +5 -2
  140. package/markup/rule/linebreak.d.ts +3 -0
  141. package/markup/rule/linebreak.js +3 -0
  142. package/markup/rule/link.d.ts +6 -0
  143. package/markup/rule/link.js +6 -0
  144. package/markup/rule/ordered.d.ts +3 -0
  145. package/markup/rule/ordered.js +3 -0
  146. package/markup/rule/paragraph.d.ts +3 -0
  147. package/markup/rule/paragraph.js +3 -0
  148. package/markup/rule/separator.d.ts +3 -0
  149. package/markup/rule/separator.js +3 -0
  150. package/markup/rule/table.d.ts +3 -0
  151. package/markup/rule/table.js +3 -0
  152. package/markup/rule/unordered.d.ts +3 -0
  153. package/markup/rule/unordered.js +3 -0
  154. package/markup/util/regexp.d.ts +80 -3
  155. package/markup/util/regexp.js +44 -0
  156. package/package.json +1 -1
  157. package/react/createAPIContext.d.ts +15 -0
  158. package/react/createAPIContext.js +10 -0
  159. package/react/createDBContext.d.ts +15 -0
  160. package/react/createDBContext.js +10 -0
  161. package/react/useInstance.d.ts +11 -0
  162. package/react/useInstance.js +11 -0
  163. package/react/useLazy.d.ts +11 -0
  164. package/react/useMap.d.ts +14 -1
  165. package/react/useMap.js +14 -1
  166. package/react/useReduce.d.ts +12 -0
  167. package/react/useSequence.d.ts +10 -0
  168. package/react/useSequence.js +10 -0
  169. package/react/useStore.d.ts +16 -1
  170. package/schema/AddressSchema.d.ts +41 -4
  171. package/schema/AddressSchema.js +36 -3
  172. package/schema/ArraySchema.d.ts +48 -6
  173. package/schema/ArraySchema.js +40 -5
  174. package/schema/BooleanSchema.d.ts +59 -3
  175. package/schema/BooleanSchema.js +51 -2
  176. package/schema/ChoiceSchema.d.ts +61 -7
  177. package/schema/ChoiceSchema.js +44 -2
  178. package/schema/ColorSchema.d.ts +41 -8
  179. package/schema/ColorSchema.js +36 -7
  180. package/schema/CountrySchema.d.ts +44 -4
  181. package/schema/CountrySchema.js +39 -3
  182. package/schema/CurrencyAmountSchema.d.ts +104 -8
  183. package/schema/CurrencyAmountSchema.js +91 -4
  184. package/schema/CurrencyCodeSchema.d.ts +56 -4
  185. package/schema/CurrencyCodeSchema.js +49 -3
  186. package/schema/DataSchema.d.ts +101 -10
  187. package/schema/DataSchema.js +87 -8
  188. package/schema/DateSchema.d.ts +73 -4
  189. package/schema/DateSchema.js +57 -2
  190. package/schema/DateTimeSchema.d.ts +40 -3
  191. package/schema/DateTimeSchema.js +40 -3
  192. package/schema/DictionarySchema.d.ts +54 -4
  193. package/schema/DictionarySchema.js +47 -3
  194. package/schema/EmailSchema.d.ts +34 -3
  195. package/schema/EmailSchema.js +34 -3
  196. package/schema/EntitySchema.d.ts +45 -4
  197. package/schema/EntitySchema.js +38 -3
  198. package/schema/FileSchema.d.ts +45 -4
  199. package/schema/FileSchema.js +39 -3
  200. package/schema/KeySchema.d.ts +32 -3
  201. package/schema/KeySchema.js +32 -3
  202. package/schema/NullableSchema.d.ts +64 -4
  203. package/schema/NullableSchema.js +59 -3
  204. package/schema/NumberSchema.d.ts +137 -12
  205. package/schema/NumberSchema.js +127 -11
  206. package/schema/OptionalSchema.d.ts +61 -4
  207. package/schema/OptionalSchema.js +56 -4
  208. package/schema/PasswordSchema.d.ts +37 -1
  209. package/schema/PasswordSchema.js +32 -1
  210. package/schema/PhoneSchema.d.ts +40 -4
  211. package/schema/PhoneSchema.js +35 -3
  212. package/schema/RequiredSchema.d.ts +39 -3
  213. package/schema/RequiredSchema.js +41 -3
  214. package/schema/Schema.d.ts +67 -7
  215. package/schema/Schema.js +42 -6
  216. package/schema/SlugSchema.d.ts +37 -5
  217. package/schema/SlugSchema.js +37 -5
  218. package/schema/StringSchema.d.ts +124 -19
  219. package/schema/StringSchema.js +107 -17
  220. package/schema/ThroughSchema.d.ts +35 -2
  221. package/schema/ThroughSchema.js +30 -1
  222. package/schema/TimeSchema.d.ts +43 -3
  223. package/schema/TimeSchema.js +43 -3
  224. package/schema/URISchema.d.ts +67 -6
  225. package/schema/URISchema.js +60 -6
  226. package/schema/URLSchema.d.ts +69 -6
  227. package/schema/URLSchema.js +61 -6
  228. package/schema/UUIDSchema.d.ts +37 -4
  229. package/schema/UUIDSchema.js +37 -4
  230. package/sequence/DeferredSequence.d.ts +49 -3
  231. package/sequence/DeferredSequence.js +39 -3
  232. package/sequence/InspectSequence.d.ts +59 -5
  233. package/sequence/InspectSequence.js +59 -5
  234. package/sequence/LazySequence.d.ts +30 -2
  235. package/sequence/LazySequence.js +30 -2
  236. package/sequence/Sequence.d.ts +11 -0
  237. package/sequence/Sequence.js +10 -0
  238. package/sequence/ThroughSequence.d.ts +15 -0
  239. package/sequence/ThroughSequence.js +15 -0
  240. package/store/ArrayStore.d.ts +74 -11
  241. package/store/ArrayStore.js +74 -11
  242. package/store/BooleanStore.d.ts +19 -2
  243. package/store/BooleanStore.js +19 -2
  244. package/store/BusyStore.d.ts +13 -1
  245. package/store/BusyStore.js +13 -1
  246. package/store/DataStore.d.ts +118 -15
  247. package/store/DataStore.js +118 -15
  248. package/store/DictionaryStore.d.ts +66 -8
  249. package/store/DictionaryStore.js +66 -8
  250. package/store/FetchStore.d.ts +43 -6
  251. package/store/FetchStore.js +36 -5
  252. package/store/PathStore.d.ts +44 -5
  253. package/store/PathStore.js +44 -5
  254. package/store/PayloadFetchStore.d.ts +16 -1
  255. package/store/PayloadFetchStore.js +9 -1
  256. package/store/Store.d.ts +85 -16
  257. package/store/Store.js +52 -10
  258. package/store/URLStore.d.ts +173 -15
  259. package/store/URLStore.js +173 -15
  260. package/test/basics.d.ts +70 -0
  261. package/test/basics.js +60 -0
  262. package/test/people.d.ts +45 -0
  263. package/test/people.js +35 -0
  264. package/test/util.d.ts +30 -3
  265. package/test/util.js +30 -3
  266. package/ui/app/App.d.ts +14 -2
  267. package/ui/app/App.js +9 -2
  268. package/ui/app/App.tsx +14 -2
  269. package/ui/block/Address.d.ts +45 -3
  270. package/ui/block/Address.js +30 -3
  271. package/ui/block/Address.tsx +46 -3
  272. package/ui/block/Block.d.ts +23 -1
  273. package/ui/block/Block.js +13 -1
  274. package/ui/block/Block.tsx +23 -1
  275. package/ui/block/Blockquote.d.ts +21 -0
  276. package/ui/block/Blockquote.js +16 -0
  277. package/ui/block/Blockquote.tsx +22 -0
  278. package/ui/block/Caption.d.ts +21 -1
  279. package/ui/block/Caption.js +16 -1
  280. package/ui/block/Caption.tsx +22 -1
  281. package/ui/block/Card.d.ts +6 -0
  282. package/ui/block/Card.js +1 -0
  283. package/ui/block/Card.tsx +6 -0
  284. package/ui/block/Definitions.d.ts +18 -0
  285. package/ui/block/Definitions.js +13 -0
  286. package/ui/block/Definitions.tsx +19 -0
  287. package/ui/block/Divider.d.ts +21 -0
  288. package/ui/block/Divider.js +16 -0
  289. package/ui/block/Divider.tsx +22 -0
  290. package/ui/block/Heading.d.ts +20 -1
  291. package/ui/block/Heading.js +15 -0
  292. package/ui/block/Heading.tsx +21 -1
  293. package/ui/block/Image.d.ts +23 -0
  294. package/ui/block/Image.js +18 -0
  295. package/ui/block/Image.tsx +24 -0
  296. package/ui/block/Label.d.ts +18 -3
  297. package/ui/block/Label.js +13 -3
  298. package/ui/block/Label.tsx +18 -3
  299. package/ui/block/List.d.ts +30 -0
  300. package/ui/block/List.js +25 -0
  301. package/ui/block/List.tsx +32 -0
  302. package/ui/block/Panel.d.ts +13 -1
  303. package/ui/block/Panel.js +3 -0
  304. package/ui/block/Panel.tsx +13 -1
  305. package/ui/block/Paragraph.d.ts +23 -0
  306. package/ui/block/Paragraph.js +18 -0
  307. package/ui/block/Paragraph.tsx +24 -0
  308. package/ui/block/Preformatted.d.ts +20 -0
  309. package/ui/block/Preformatted.js +15 -0
  310. package/ui/block/Preformatted.tsx +21 -0
  311. package/ui/block/Prose.d.ts +14 -1
  312. package/ui/block/Prose.js +9 -1
  313. package/ui/block/Prose.tsx +14 -1
  314. package/ui/block/Section.d.ts +69 -6
  315. package/ui/block/Section.js +59 -6
  316. package/ui/block/Section.tsx +70 -6
  317. package/ui/block/Subheading.d.ts +20 -1
  318. package/ui/block/Subheading.js +15 -0
  319. package/ui/block/Subheading.tsx +21 -1
  320. package/ui/block/Table.d.ts +20 -0
  321. package/ui/block/Table.js +15 -0
  322. package/ui/block/Table.tsx +21 -0
  323. package/ui/block/Title.d.ts +20 -1
  324. package/ui/block/Title.js +15 -0
  325. package/ui/block/Title.tsx +21 -1
  326. package/ui/block/Video.d.ts +50 -3
  327. package/ui/block/Video.js +30 -3
  328. package/ui/block/Video.tsx +50 -3
  329. package/ui/dialog/Dialog.d.ts +28 -1
  330. package/ui/dialog/Dialog.js +18 -1
  331. package/ui/dialog/Dialog.tsx +28 -1
  332. package/ui/dialog/Dialogs.d.ts +53 -6
  333. package/ui/dialog/Dialogs.js +43 -6
  334. package/ui/dialog/Dialogs.tsx +53 -6
  335. package/ui/dialog/Modal.d.ts +13 -0
  336. package/ui/dialog/Modal.js +8 -0
  337. package/ui/dialog/Modal.tsx +13 -0
  338. package/ui/docs/DocumentationButtons.d.ts +5 -1
  339. package/ui/docs/DocumentationButtons.tsx +5 -1
  340. package/ui/docs/DocumentationCard.d.ts +6 -1
  341. package/ui/docs/DocumentationCard.js +6 -1
  342. package/ui/docs/DocumentationCard.tsx +6 -1
  343. package/ui/docs/DocumentationKind.d.ts +13 -1
  344. package/ui/docs/DocumentationKind.js +8 -0
  345. package/ui/docs/DocumentationKind.tsx +13 -1
  346. package/ui/docs/DocumentationPage.d.ts +6 -1
  347. package/ui/docs/DocumentationPage.js +6 -1
  348. package/ui/docs/DocumentationPage.tsx +6 -1
  349. package/ui/docs/DocumentationSignatures.d.ts +10 -1
  350. package/ui/docs/DocumentationSignatures.js +5 -0
  351. package/ui/docs/DocumentationSignatures.tsx +10 -1
  352. package/ui/form/ArrayInput.d.ts +15 -0
  353. package/ui/form/ArrayInput.tsx +15 -0
  354. package/ui/form/ArrayRadioInputs.d.ts +10 -0
  355. package/ui/form/ArrayRadioInputs.js +5 -0
  356. package/ui/form/ArrayRadioInputs.tsx +10 -0
  357. package/ui/form/Button.d.ts +19 -3
  358. package/ui/form/Button.js +14 -2
  359. package/ui/form/Button.tsx +19 -3
  360. package/ui/form/ButtonInput.d.ts +14 -1
  361. package/ui/form/ButtonInput.js +9 -1
  362. package/ui/form/ButtonInput.tsx +14 -1
  363. package/ui/form/ButtonInputPopover.d.ts +10 -0
  364. package/ui/form/ButtonInputPopover.js +5 -0
  365. package/ui/form/ButtonInputPopover.tsx +10 -0
  366. package/ui/form/ButtonPopover.d.ts +11 -1
  367. package/ui/form/ButtonPopover.js +6 -1
  368. package/ui/form/ButtonPopover.tsx +11 -1
  369. package/ui/form/CheckboxInput.d.ts +14 -1
  370. package/ui/form/CheckboxInput.js +9 -1
  371. package/ui/form/CheckboxInput.tsx +14 -1
  372. package/ui/form/ChoiceRadioInputs.d.ts +10 -0
  373. package/ui/form/ChoiceRadioInputs.tsx +10 -0
  374. package/ui/form/Clickable.d.ts +45 -5
  375. package/ui/form/Clickable.js +30 -3
  376. package/ui/form/Clickable.tsx +45 -5
  377. package/ui/form/DataInput.d.ts +14 -0
  378. package/ui/form/DataInput.tsx +14 -0
  379. package/ui/form/DateInput.d.ts +14 -0
  380. package/ui/form/DateInput.js +9 -0
  381. package/ui/form/DateInput.tsx +14 -0
  382. package/ui/form/DictionaryInput.d.ts +15 -0
  383. package/ui/form/DictionaryInput.tsx +15 -0
  384. package/ui/form/Field.d.ts +5 -0
  385. package/ui/form/Field.tsx +5 -0
  386. package/ui/form/FileInput.d.ts +14 -0
  387. package/ui/form/FileInput.js +9 -0
  388. package/ui/form/FileInput.tsx +14 -0
  389. package/ui/form/Form.d.ts +55 -6
  390. package/ui/form/Form.js +35 -3
  391. package/ui/form/Form.tsx +55 -6
  392. package/ui/form/FormContext.d.ts +24 -3
  393. package/ui/form/FormContext.js +5 -1
  394. package/ui/form/FormContext.tsx +24 -3
  395. package/ui/form/FormFields.d.ts +15 -2
  396. package/ui/form/FormFields.js +15 -2
  397. package/ui/form/FormFields.tsx +15 -2
  398. package/ui/form/FormFooter.d.ts +13 -3
  399. package/ui/form/FormFooter.js +8 -3
  400. package/ui/form/FormFooter.tsx +13 -3
  401. package/ui/form/FormInput.d.ts +21 -2
  402. package/ui/form/FormInput.js +16 -2
  403. package/ui/form/FormInput.tsx +21 -2
  404. package/ui/form/FormMessage.d.ts +8 -1
  405. package/ui/form/FormMessage.js +8 -1
  406. package/ui/form/FormMessage.tsx +8 -2
  407. package/ui/form/FormNotice.d.ts +8 -1
  408. package/ui/form/FormNotice.js +8 -1
  409. package/ui/form/FormNotice.tsx +8 -2
  410. package/ui/form/FormNotify.d.ts +8 -1
  411. package/ui/form/FormNotify.js +8 -1
  412. package/ui/form/FormNotify.tsx +8 -2
  413. package/ui/form/FormStore.d.ts +50 -6
  414. package/ui/form/FormStore.js +50 -6
  415. package/ui/form/FormStore.tsx +50 -6
  416. package/ui/form/Input.d.ts +65 -1
  417. package/ui/form/Input.js +60 -0
  418. package/ui/form/Input.tsx +77 -1
  419. package/ui/form/NumberInput.d.ts +14 -0
  420. package/ui/form/NumberInput.js +9 -0
  421. package/ui/form/NumberInput.tsx +14 -0
  422. package/ui/form/OutputInput.d.ts +13 -1
  423. package/ui/form/OutputInput.js +8 -1
  424. package/ui/form/OutputInput.tsx +13 -1
  425. package/ui/form/Popover.d.ts +18 -2
  426. package/ui/form/Popover.js +8 -2
  427. package/ui/form/Popover.tsx +18 -2
  428. package/ui/form/Progress.d.ts +26 -2
  429. package/ui/form/Progress.js +16 -2
  430. package/ui/form/Progress.tsx +26 -2
  431. package/ui/form/QueryInput.d.ts +14 -5
  432. package/ui/form/QueryInput.js +9 -5
  433. package/ui/form/QueryInput.tsx +14 -5
  434. package/ui/form/RadioInput.d.ts +14 -1
  435. package/ui/form/RadioInput.js +9 -1
  436. package/ui/form/RadioInput.tsx +14 -1
  437. package/ui/form/SchemaInput.d.ts +138 -7
  438. package/ui/form/SchemaInput.js +79 -4
  439. package/ui/form/SchemaInput.tsx +138 -7
  440. package/ui/form/SelectInput.d.ts +14 -0
  441. package/ui/form/SelectInput.tsx +14 -0
  442. package/ui/form/SubmitButton.d.ts +14 -1
  443. package/ui/form/SubmitButton.js +9 -1
  444. package/ui/form/SubmitButton.tsx +14 -1
  445. package/ui/form/TextInput.d.ts +15 -0
  446. package/ui/form/TextInput.js +10 -0
  447. package/ui/form/TextInput.tsx +15 -0
  448. package/ui/inline/Code.d.ts +29 -0
  449. package/ui/inline/Code.js +24 -0
  450. package/ui/inline/Code.tsx +31 -0
  451. package/ui/inline/Deleted.d.ts +23 -0
  452. package/ui/inline/Deleted.js +18 -0
  453. package/ui/inline/Deleted.tsx +24 -0
  454. package/ui/inline/Emphasis.d.ts +23 -0
  455. package/ui/inline/Emphasis.js +18 -0
  456. package/ui/inline/Emphasis.tsx +24 -0
  457. package/ui/inline/Inserted.d.ts +23 -0
  458. package/ui/inline/Inserted.js +18 -0
  459. package/ui/inline/Inserted.tsx +24 -0
  460. package/ui/inline/Link.d.ts +23 -0
  461. package/ui/inline/Link.js +18 -0
  462. package/ui/inline/Link.tsx +24 -0
  463. package/ui/inline/Mark.d.ts +23 -0
  464. package/ui/inline/Mark.js +18 -0
  465. package/ui/inline/Mark.tsx +24 -0
  466. package/ui/inline/Small.d.ts +23 -0
  467. package/ui/inline/Small.js +18 -0
  468. package/ui/inline/Small.tsx +24 -0
  469. package/ui/inline/Strong.d.ts +23 -0
  470. package/ui/inline/Strong.js +18 -0
  471. package/ui/inline/Strong.tsx +24 -0
  472. package/ui/inline/Subscript.d.ts +23 -0
  473. package/ui/inline/Subscript.js +18 -0
  474. package/ui/inline/Subscript.tsx +24 -0
  475. package/ui/inline/Superscript.d.ts +23 -0
  476. package/ui/inline/Superscript.js +18 -0
  477. package/ui/inline/Superscript.tsx +24 -0
  478. package/ui/inline/When.d.ts +42 -3
  479. package/ui/inline/When.js +27 -3
  480. package/ui/inline/When.tsx +42 -3
  481. package/ui/layout/CenteredLayout.d.ts +12 -1
  482. package/ui/layout/CenteredLayout.js +7 -1
  483. package/ui/layout/CenteredLayout.tsx +12 -1
  484. package/ui/layout/Layout.d.ts +12 -3
  485. package/ui/layout/Layout.js +12 -3
  486. package/ui/layout/Layout.ts +12 -3
  487. package/ui/layout/SidebarLayout.d.ts +12 -0
  488. package/ui/layout/SidebarLayout.js +7 -0
  489. package/ui/layout/SidebarLayout.tsx +12 -0
  490. package/ui/menu/Menu.d.ts +22 -0
  491. package/ui/menu/Menu.js +12 -0
  492. package/ui/menu/Menu.tsx +22 -0
  493. package/ui/misc/Catcher.d.ts +77 -5
  494. package/ui/misc/Catcher.js +47 -5
  495. package/ui/misc/Catcher.tsx +77 -5
  496. package/ui/misc/Loading.d.ts +20 -0
  497. package/ui/misc/Loading.js +15 -0
  498. package/ui/misc/Loading.tsx +20 -0
  499. package/ui/misc/Mapper.d.ts +13 -1
  500. package/ui/misc/Mapper.js +4 -0
  501. package/ui/misc/Mapper.tsx +13 -1
  502. package/ui/misc/Markup.d.ts +9 -1
  503. package/ui/misc/Markup.js +4 -0
  504. package/ui/misc/Markup.tsx +9 -1
  505. package/ui/misc/MetaContext.d.ts +24 -7
  506. package/ui/misc/MetaContext.js +19 -6
  507. package/ui/misc/MetaContext.tsx +24 -7
  508. package/ui/misc/StatusIcon.d.ts +16 -1
  509. package/ui/misc/StatusIcon.js +11 -1
  510. package/ui/misc/StatusIcon.tsx +16 -1
  511. package/ui/misc/Tag.d.ts +21 -0
  512. package/ui/misc/Tag.js +11 -0
  513. package/ui/misc/Tag.tsx +21 -0
  514. package/ui/notice/Message.d.ts +27 -1
  515. package/ui/notice/Message.js +22 -1
  516. package/ui/notice/Message.tsx +27 -1
  517. package/ui/notice/Notice.d.ts +24 -0
  518. package/ui/notice/Notice.js +19 -0
  519. package/ui/notice/Notice.tsx +24 -0
  520. package/ui/notice/NoticeStore.d.ts +30 -2
  521. package/ui/notice/NoticeStore.js +30 -2
  522. package/ui/notice/NoticeStore.ts +30 -2
  523. package/ui/notice/Notices.d.ts +11 -1
  524. package/ui/notice/Notices.js +6 -1
  525. package/ui/notice/Notices.tsx +11 -1
  526. package/ui/notice/NoticesStore.d.ts +23 -3
  527. package/ui/notice/NoticesStore.js +23 -3
  528. package/ui/notice/NoticesStore.ts +23 -3
  529. package/ui/page/HTML.d.ts +13 -2
  530. package/ui/page/HTML.js +8 -2
  531. package/ui/page/HTML.tsx +13 -2
  532. package/ui/page/Head.d.ts +5 -1
  533. package/ui/page/Head.js +5 -1
  534. package/ui/page/Head.tsx +5 -1
  535. package/ui/page/Page.d.ts +12 -1
  536. package/ui/page/Page.js +7 -1
  537. package/ui/page/Page.tsx +12 -1
  538. package/ui/router/Navigation.d.ts +11 -0
  539. package/ui/router/Navigation.js +6 -0
  540. package/ui/router/Navigation.tsx +11 -0
  541. package/ui/router/NavigationContext.d.ts +14 -2
  542. package/ui/router/NavigationContext.js +14 -2
  543. package/ui/router/NavigationContext.tsx +14 -2
  544. package/ui/router/NavigationStore.d.ts +29 -1
  545. package/ui/router/NavigationStore.js +29 -1
  546. package/ui/router/NavigationStore.tsx +29 -1
  547. package/ui/router/Router.d.ts +12 -1
  548. package/ui/router/Router.js +7 -1
  549. package/ui/router/Router.tsx +12 -1
  550. package/ui/router/Routes.d.ts +14 -4
  551. package/ui/router/Routes.tsx +14 -4
  552. package/ui/style/Color.d.ts +15 -2
  553. package/ui/style/Color.js +5 -0
  554. package/ui/style/Color.tsx +15 -2
  555. package/ui/style/Flex.d.ts +41 -4
  556. package/ui/style/Flex.js +26 -3
  557. package/ui/style/Flex.tsx +41 -4
  558. package/ui/style/Gap.d.ts +18 -3
  559. package/ui/style/Gap.js +8 -1
  560. package/ui/style/Gap.tsx +18 -3
  561. package/ui/style/Padding.d.ts +18 -3
  562. package/ui/style/Padding.js +8 -1
  563. package/ui/style/Padding.tsx +18 -3
  564. package/ui/style/Scroll.d.ts +36 -1
  565. package/ui/style/Scroll.js +26 -1
  566. package/ui/style/Scroll.tsx +37 -1
  567. package/ui/style/Space.d.ts +18 -3
  568. package/ui/style/Space.js +8 -1
  569. package/ui/style/Space.tsx +18 -3
  570. package/ui/style/Status.d.ts +23 -7
  571. package/ui/style/Status.js +13 -5
  572. package/ui/style/Status.tsx +23 -7
  573. package/ui/style/Tint.d.ts +7 -1
  574. package/ui/style/Tint.js +7 -1
  575. package/ui/style/Tint.tsx +7 -1
  576. package/ui/style/Typography.d.ts +38 -6
  577. package/ui/style/Typography.js +8 -0
  578. package/ui/style/Typography.tsx +38 -6
  579. package/ui/style/Width.d.ts +18 -1
  580. package/ui/style/Width.js +8 -0
  581. package/ui/style/Width.tsx +18 -1
  582. package/ui/transition/CollapseTransition.d.ts +13 -0
  583. package/ui/transition/CollapseTransition.js +8 -0
  584. package/ui/transition/CollapseTransition.tsx +13 -0
  585. package/ui/transition/FadeTransition.d.ts +13 -0
  586. package/ui/transition/FadeTransition.js +8 -0
  587. package/ui/transition/FadeTransition.tsx +13 -0
  588. package/ui/transition/HorizontalTransition.d.ts +13 -0
  589. package/ui/transition/HorizontalTransition.js +8 -0
  590. package/ui/transition/HorizontalTransition.tsx +13 -0
  591. package/ui/transition/Transition.d.ts +12 -4
  592. package/ui/transition/Transition.js +7 -3
  593. package/ui/transition/Transition.tsx +12 -4
  594. package/ui/transition/VerticalTransition.d.ts +13 -0
  595. package/ui/transition/VerticalTransition.js +8 -0
  596. package/ui/transition/VerticalTransition.tsx +13 -0
  597. package/ui/transition/util.d.ts +16 -6
  598. package/ui/transition/util.js +7 -1
  599. package/ui/transition/util.tsx +16 -6
  600. package/ui/tree/TreeApp.d.ts +11 -0
  601. package/ui/tree/TreeApp.js +6 -0
  602. package/ui/tree/TreeApp.tsx +11 -0
  603. package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
  604. package/ui/tree/TreeBreadcrumbs.js +6 -0
  605. package/ui/tree/TreeBreadcrumbs.tsx +11 -0
  606. package/ui/tree/TreeButton.d.ts +9 -1
  607. package/ui/tree/TreeButton.js +4 -0
  608. package/ui/tree/TreeButton.tsx +9 -1
  609. package/ui/tree/TreeCard.d.ts +8 -1
  610. package/ui/tree/TreeCard.js +8 -1
  611. package/ui/tree/TreeCard.tsx +8 -1
  612. package/ui/tree/TreeCards.d.ts +16 -1
  613. package/ui/tree/TreeCards.js +11 -1
  614. package/ui/tree/TreeCards.tsx +16 -1
  615. package/ui/tree/TreeContext.d.ts +18 -1
  616. package/ui/tree/TreeContext.js +18 -1
  617. package/ui/tree/TreeContext.tsx +18 -1
  618. package/ui/tree/TreeMenu.d.ts +28 -1
  619. package/ui/tree/TreeMenu.js +23 -1
  620. package/ui/tree/TreeMenu.tsx +28 -1
  621. package/ui/tree/TreePage.d.ts +6 -0
  622. package/ui/tree/TreePage.js +6 -0
  623. package/ui/tree/TreePage.tsx +6 -0
  624. package/ui/tree/TreeRouter.d.ts +17 -2
  625. package/ui/tree/TreeRouter.js +12 -2
  626. package/ui/tree/TreeRouter.tsx +17 -2
  627. package/ui/tree/TreeSidebar.d.ts +11 -0
  628. package/ui/tree/TreeSidebar.js +6 -0
  629. package/ui/tree/TreeSidebar.tsx +11 -0
  630. package/ui/util/context.d.ts +13 -1
  631. package/ui/util/context.ts +13 -1
  632. package/ui/util/css.d.ts +17 -4
  633. package/ui/util/css.js +5 -1
  634. package/ui/util/css.ts +17 -4
  635. package/ui/util/event.d.ts +9 -1
  636. package/ui/util/event.js +9 -1
  637. package/ui/util/event.ts +9 -1
  638. package/ui/util/focus.d.ts +24 -5
  639. package/ui/util/focus.js +24 -5
  640. package/ui/util/focus.ts +24 -5
  641. package/ui/util/meta.d.ts +113 -21
  642. package/ui/util/meta.js +73 -13
  643. package/ui/util/meta.ts +113 -21
  644. package/ui/util/notice.d.ts +98 -10
  645. package/ui/util/notice.js +93 -9
  646. package/ui/util/notice.ts +98 -10
  647. package/ui/util/props.d.ts +10 -2
  648. package/ui/util/props.ts +10 -2
  649. package/ui/util/refresh.d.ts +10 -1
  650. package/ui/util/refresh.js +10 -1
  651. package/ui/util/refresh.ts +10 -1
  652. package/ui/util/scroll.d.ts +20 -4
  653. package/ui/util/scroll.js +20 -4
  654. package/ui/util/scroll.ts +20 -4
  655. package/ui/util/state.d.ts +19 -5
  656. package/ui/util/state.js +19 -5
  657. package/ui/util/state.ts +19 -5
  658. package/util/ansi.d.ts +118 -0
  659. package/util/ansi.js +116 -0
  660. package/util/array.d.ts +349 -33
  661. package/util/array.js +284 -27
  662. package/util/async.d.ts +87 -9
  663. package/util/async.js +80 -8
  664. package/util/base64.d.ts +56 -6
  665. package/util/base64.js +56 -6
  666. package/util/boolean.d.ts +75 -10
  667. package/util/boolean.js +75 -10
  668. package/util/buffer.d.ts +26 -3
  669. package/util/buffer.js +21 -3
  670. package/util/bytes.d.ts +42 -4
  671. package/util/bytes.js +32 -2
  672. package/util/class.d.ts +59 -8
  673. package/util/class.js +44 -5
  674. package/util/color.d.ts +131 -13
  675. package/util/color.js +126 -12
  676. package/util/constants.d.ts +132 -19
  677. package/util/constants.js +132 -19
  678. package/util/crypto.d.ts +17 -1
  679. package/util/crypto.js +17 -1
  680. package/util/currency.d.ts +38 -4
  681. package/util/currency.js +33 -3
  682. package/util/data.d.ts +139 -24
  683. package/util/data.js +39 -5
  684. package/util/date.d.ts +152 -18
  685. package/util/date.js +147 -17
  686. package/util/debug.d.ts +112 -11
  687. package/util/debug.js +114 -11
  688. package/util/dictionary.d.ts +205 -24
  689. package/util/dictionary.js +162 -17
  690. package/util/diff.d.ts +22 -3
  691. package/util/diff.js +11 -1
  692. package/util/dispose.d.ts +74 -2
  693. package/util/dispose.js +74 -2
  694. package/util/duration.d.ts +278 -16
  695. package/util/duration.js +267 -15
  696. package/util/element.d.ts +59 -6
  697. package/util/element.js +32 -3
  698. package/util/entity.d.ts +39 -6
  699. package/util/entity.js +5 -1
  700. package/util/entry.d.ts +56 -9
  701. package/util/entry.js +32 -4
  702. package/util/env.d.ts +26 -4
  703. package/util/env.js +26 -4
  704. package/util/equal.d.ts +181 -17
  705. package/util/equal.js +181 -17
  706. package/util/error.d.ts +57 -5
  707. package/util/error.js +52 -4
  708. package/util/file.d.ts +30 -7
  709. package/util/file.js +25 -6
  710. package/util/filter.d.ts +36 -4
  711. package/util/filter.js +31 -3
  712. package/util/focus.d.ts +9 -1
  713. package/util/focus.js +9 -1
  714. package/util/format.d.ts +186 -22
  715. package/util/format.js +135 -14
  716. package/util/function.d.ts +66 -11
  717. package/util/function.js +31 -4
  718. package/util/geo.d.ts +60 -8
  719. package/util/geo.js +45 -5
  720. package/util/hash.d.ts +21 -2
  721. package/util/hash.js +21 -2
  722. package/util/http.d.ts +134 -19
  723. package/util/http.js +94 -11
  724. package/util/hydrate.d.ts +19 -2
  725. package/util/hydrate.js +12 -1
  726. package/util/item.d.ts +70 -11
  727. package/util/item.js +35 -4
  728. package/util/iterate.d.ts +109 -13
  729. package/util/iterate.js +86 -10
  730. package/util/jwt.d.ts +47 -13
  731. package/util/jwt.js +36 -12
  732. package/util/lazy.d.ts +9 -6
  733. package/util/link.d.ts +10 -3
  734. package/util/link.js +5 -2
  735. package/util/log.d.ts +26 -3
  736. package/util/log.js +26 -3
  737. package/util/map.d.ts +144 -19
  738. package/util/map.js +101 -11
  739. package/util/merge.d.ts +23 -1
  740. package/util/merge.js +6 -0
  741. package/util/null.d.ts +102 -13
  742. package/util/null.js +92 -11
  743. package/util/number.d.ts +125 -8
  744. package/util/number.js +120 -7
  745. package/util/object.d.ts +263 -31
  746. package/util/object.js +154 -17
  747. package/util/path.d.ts +91 -15
  748. package/util/path.js +60 -9
  749. package/util/query.d.ts +78 -9
  750. package/util/query.js +58 -6
  751. package/util/random.d.ts +67 -4
  752. package/util/random.js +67 -4
  753. package/util/regexp.d.ts +201 -24
  754. package/util/regexp.js +106 -11
  755. package/util/sequence.d.ts +66 -8
  756. package/util/sequence.js +52 -7
  757. package/util/serialise.d.ts +7 -1
  758. package/util/serialise.js +7 -1
  759. package/util/set.d.ts +103 -13
  760. package/util/set.js +83 -9
  761. package/util/sort.d.ts +32 -7
  762. package/util/sort.js +26 -6
  763. package/util/source.d.ts +28 -3
  764. package/util/source.js +22 -2
  765. package/util/start.d.ts +62 -5
  766. package/util/start.js +47 -2
  767. package/util/string.d.ts +209 -25
  768. package/util/string.js +188 -21
  769. package/util/template.d.ts +58 -9
  770. package/util/template.js +45 -6
  771. package/util/timeout.d.ts +35 -11
  772. package/util/timeout.js +35 -11
  773. package/util/transform.d.ts +87 -8
  774. package/util/transform.js +75 -7
  775. package/util/tree.d.ts +39 -6
  776. package/util/tree.js +3 -0
  777. package/util/types.d.ts +8 -2
  778. package/util/undefined.d.ts +47 -6
  779. package/util/undefined.js +47 -6
  780. package/util/units.d.ts +107 -12
  781. package/util/units.js +97 -12
  782. package/util/update.d.ts +36 -4
  783. package/util/update.js +24 -2
  784. package/util/uri.d.ts +138 -6
  785. package/util/uri.js +44 -3
  786. package/util/url.d.ts +152 -7
  787. package/util/url.js +136 -5
  788. package/util/uuid.d.ts +28 -3
  789. package/util/uuid.js +28 -3
  790. package/util/validate.d.ts +85 -20
  791. package/util/validate.js +61 -12
  792. package/util/xml.d.ts +9 -10
  793. package/util/xml.js +9 -10
@@ -1,6 +1,14 @@
1
1
  import { type CurrencyCode } from "../util/currency.js";
2
+ import type { NullableSchema } from "./NullableSchema.js";
2
3
  import { NumberSchema, type NumberSchemaOptions } from "./NumberSchema.js";
3
- /** Allowed options for `CurrencyAmountSchema`. */
4
+ /**
5
+ * Options for `CurrencyAmountSchema`.
6
+ *
7
+ * - `currency` — ISO 4217 currency code that determines the step and symbol.
8
+ * - `symbol` — override the currency symbol used when formatting.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchemaOptions
11
+ */
4
12
  export interface CurrencyAmountSchemaOptions extends NumberSchemaOptions {
5
13
  readonly symbol?: string | undefined;
6
14
  readonly currency: CurrencyCode;
@@ -15,21 +23,109 @@ export interface CurrencyAmountSchemaOptions extends NumberSchemaOptions {
15
23
  * const PRICE = new CurrencyAmountSchema({ currency: "GBP", min: 0 });
16
24
  * PRICE.validate("12.345"); // 12.35
17
25
  * PRICE.format(12.3); // "£12.30"
26
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema
18
27
  */
19
28
  export declare class CurrencyAmountSchema extends NumberSchema {
29
+ /**
30
+ * Rounding step, always defined and inferred from the currency's minor units.
31
+ *
32
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/step
33
+ */
20
34
  readonly step: number;
35
+ /**
36
+ * ISO 4217 currency code this schema validates amounts for.
37
+ *
38
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/currency
39
+ */
21
40
  readonly currency: CurrencyCode;
41
+ /**
42
+ * Currency symbol used when formatting amounts.
43
+ *
44
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/symbol
45
+ */
22
46
  readonly symbol: string;
47
+ /**
48
+ * Create a new `CurrencyAmountSchema`.
49
+ *
50
+ * @param options Options for the schema (`currency` required, optional `symbol`, `step`, plus base `NumberSchemaOptions`).
51
+ * @throws `string` if `currency` is not a valid ISO 4217 currency code.
52
+ */
23
53
  constructor({ currency, one, title, symbol, step, ...options }: CurrencyAmountSchemaOptions);
54
+ /**
55
+ * Format a validated amount as a currency string for display.
56
+ *
57
+ * - Decimal places are omitted when `step` is `1` or more.
58
+ *
59
+ * @param value The validated amount to format.
60
+ * @returns The amount formatted using the schema's currency and symbol.
61
+ * @example schema.format(12.3) // "£12.30"
62
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/format
63
+ */
24
64
  format(value: number): string;
25
65
  }
26
- /** Valid non-negative monetary amount in the a currency. */
27
- export declare const CURRENCY_AMOUNT: (currency: CurrencyCode) => CurrencyAmountSchema;
66
+ /**
67
+ * Create a `CurrencyAmountSchema` for a non-negative monetary amount in a currency.
68
+ *
69
+ * *Factory for `CurrencyAmountSchema`.*
70
+ *
71
+ * @param currency ISO 4217 currency code that determines the step and symbol.
72
+ * @returns A `CurrencyAmountSchema` validating amounts in `currency`.
73
+ * @throws `string` if `currency` is not a valid ISO 4217 currency code.
74
+ * @example CURRENCY_AMOUNT("GBP").validate("12.345") // 12.35
75
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CURRENCY_AMOUNT
76
+ */
77
+ export declare function CURRENCY_AMOUNT(currency: CurrencyCode): CurrencyAmountSchema;
78
+ /**
79
+ * Valid US dollar amount, e.g. `12.35`.
80
+ *
81
+ * @example USD_AMOUNT.validate("12.345") // 12.35
82
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/USD_AMOUNT
83
+ */
28
84
  export declare const USD_AMOUNT: CurrencyAmountSchema;
85
+ /**
86
+ * Valid pound sterling amount, e.g. `12.35`.
87
+ *
88
+ * @example GBP_AMOUNT.validate("12.345") // 12.35
89
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/GBP_AMOUNT
90
+ */
29
91
  export declare const GBP_AMOUNT: CurrencyAmountSchema;
92
+ /**
93
+ * Valid euro amount, e.g. `12.35`.
94
+ *
95
+ * @example EUR_AMOUNT.validate("12.345") // 12.35
96
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/EUR_AMOUNT
97
+ */
30
98
  export declare const EUR_AMOUNT: CurrencyAmountSchema;
31
- /** Valid optional monetary amount in the default currency, or `null`. */
32
- export declare const NULLABLE_CURRENCY_AMOUNT: (currency: CurrencyCode) => import("./NullableSchema.js").NullableSchema<number>;
33
- export declare const NULLABLE_USD_AMOUNT: import("./NullableSchema.js").NullableSchema<number>;
34
- export declare const NULLABLE_GBP_AMOUNT: import("./NullableSchema.js").NullableSchema<number>;
35
- export declare const NULLABLE_EUR_AMOUNT: import("./NullableSchema.js").NullableSchema<number>;
99
+ /**
100
+ * Create a `NullableSchema` for an optional monetary amount in a currency, or `null`.
101
+ *
102
+ * *Factory for `NullableSchema`.*
103
+ *
104
+ * @param currency ISO 4217 currency code that determines the step and symbol.
105
+ * @returns A `NullableSchema` validating amounts in `currency`, or `null`.
106
+ * @throws `string` if `currency` is not a valid ISO 4217 currency code.
107
+ * @example NULLABLE_CURRENCY_AMOUNT("GBP").validate(null) // null
108
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_CURRENCY_AMOUNT
109
+ */
110
+ export declare function NULLABLE_CURRENCY_AMOUNT(currency: CurrencyCode): NullableSchema<number>;
111
+ /**
112
+ * Valid US dollar amount, e.g. `12.35`, or `null`.
113
+ *
114
+ * @example NULLABLE_USD_AMOUNT.validate(null) // null
115
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_USD_AMOUNT
116
+ */
117
+ export declare const NULLABLE_USD_AMOUNT: NullableSchema<number>;
118
+ /**
119
+ * Valid pound sterling amount, e.g. `12.35`, or `null`.
120
+ *
121
+ * @example NULLABLE_GBP_AMOUNT.validate(null) // null
122
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_GBP_AMOUNT
123
+ */
124
+ export declare const NULLABLE_GBP_AMOUNT: NullableSchema<number>;
125
+ /**
126
+ * Valid euro amount, e.g. `12.35`, or `null`.
127
+ *
128
+ * @example NULLABLE_EUR_AMOUNT.validate(null) // null
129
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_EUR_AMOUNT
130
+ */
131
+ export declare const NULLABLE_EUR_AMOUNT: NullableSchema<number>;
@@ -12,10 +12,27 @@ import { NumberSchema } from "./NumberSchema.js";
12
12
  * const PRICE = new CurrencyAmountSchema({ currency: "GBP", min: 0 });
13
13
  * PRICE.validate("12.345"); // 12.35
14
14
  * PRICE.format(12.3); // "£12.30"
15
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema
15
16
  */
16
17
  export class CurrencyAmountSchema extends NumberSchema {
18
+ /**
19
+ * ISO 4217 currency code this schema validates amounts for.
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/currency
22
+ */
17
23
  currency;
24
+ /**
25
+ * Currency symbol used when formatting amounts.
26
+ *
27
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/symbol
28
+ */
18
29
  symbol;
30
+ /**
31
+ * Create a new `CurrencyAmountSchema`.
32
+ *
33
+ * @param options Options for the schema (`currency` required, optional `symbol`, `step`, plus base `NumberSchemaOptions`).
34
+ * @throws `string` if `currency` is not a valid ISO 4217 currency code.
35
+ */
19
36
  constructor({ currency, one = "amount", title = "Amount", symbol, step, ...options }) {
20
37
  const validCurrency = requireCurrencyCode(currency, CurrencyAmountSchema);
21
38
  super({
@@ -27,18 +44,88 @@ export class CurrencyAmountSchema extends NumberSchema {
27
44
  this.currency = validCurrency;
28
45
  this.symbol = symbol ?? getCurrencySymbol(validCurrency, CurrencyAmountSchema);
29
46
  }
47
+ /**
48
+ * Format a validated amount as a currency string for display.
49
+ *
50
+ * - Decimal places are omitted when `step` is `1` or more.
51
+ *
52
+ * @param value The validated amount to format.
53
+ * @returns The amount formatted using the schema's currency and symbol.
54
+ * @example schema.format(12.3) // "£12.30"
55
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/format
56
+ */
30
57
  format(value) {
31
58
  const options = this.step >= 1 ? { maximumFractionDigits: 0 } : {}; // Skip showing decimal places if step is 1 or more.
32
59
  return formatCurrency(value, this.currency, options, this.format);
33
60
  }
34
61
  }
35
- /** Valid non-negative monetary amount in the a currency. */
36
- export const CURRENCY_AMOUNT = (currency) => new CurrencyAmountSchema({ currency });
62
+ /**
63
+ * Create a `CurrencyAmountSchema` for a non-negative monetary amount in a currency.
64
+ *
65
+ * *Factory for `CurrencyAmountSchema`.*
66
+ *
67
+ * @param currency ISO 4217 currency code that determines the step and symbol.
68
+ * @returns A `CurrencyAmountSchema` validating amounts in `currency`.
69
+ * @throws `string` if `currency` is not a valid ISO 4217 currency code.
70
+ * @example CURRENCY_AMOUNT("GBP").validate("12.345") // 12.35
71
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CURRENCY_AMOUNT
72
+ */
73
+ export function CURRENCY_AMOUNT(currency) {
74
+ return new CurrencyAmountSchema({ currency });
75
+ }
76
+ /**
77
+ * Valid US dollar amount, e.g. `12.35`.
78
+ *
79
+ * @example USD_AMOUNT.validate("12.345") // 12.35
80
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/USD_AMOUNT
81
+ */
37
82
  export const USD_AMOUNT = new CurrencyAmountSchema({ currency: "USD" });
83
+ /**
84
+ * Valid pound sterling amount, e.g. `12.35`.
85
+ *
86
+ * @example GBP_AMOUNT.validate("12.345") // 12.35
87
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/GBP_AMOUNT
88
+ */
38
89
  export const GBP_AMOUNT = new CurrencyAmountSchema({ currency: "GBP" });
90
+ /**
91
+ * Valid euro amount, e.g. `12.35`.
92
+ *
93
+ * @example EUR_AMOUNT.validate("12.345") // 12.35
94
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/EUR_AMOUNT
95
+ */
39
96
  export const EUR_AMOUNT = new CurrencyAmountSchema({ currency: "EUR" });
40
- /** Valid optional monetary amount in the default currency, or `null`. */
41
- export const NULLABLE_CURRENCY_AMOUNT = (currency) => NULLABLE(CURRENCY_AMOUNT(currency));
97
+ /**
98
+ * Create a `NullableSchema` for an optional monetary amount in a currency, or `null`.
99
+ *
100
+ * *Factory for `NullableSchema`.*
101
+ *
102
+ * @param currency ISO 4217 currency code that determines the step and symbol.
103
+ * @returns A `NullableSchema` validating amounts in `currency`, or `null`.
104
+ * @throws `string` if `currency` is not a valid ISO 4217 currency code.
105
+ * @example NULLABLE_CURRENCY_AMOUNT("GBP").validate(null) // null
106
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_CURRENCY_AMOUNT
107
+ */
108
+ export function NULLABLE_CURRENCY_AMOUNT(currency) {
109
+ return NULLABLE(CURRENCY_AMOUNT(currency));
110
+ }
111
+ /**
112
+ * Valid US dollar amount, e.g. `12.35`, or `null`.
113
+ *
114
+ * @example NULLABLE_USD_AMOUNT.validate(null) // null
115
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_USD_AMOUNT
116
+ */
42
117
  export const NULLABLE_USD_AMOUNT = NULLABLE(USD_AMOUNT);
118
+ /**
119
+ * Valid pound sterling amount, e.g. `12.35`, or `null`.
120
+ *
121
+ * @example NULLABLE_GBP_AMOUNT.validate(null) // null
122
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_GBP_AMOUNT
123
+ */
43
124
  export const NULLABLE_GBP_AMOUNT = NULLABLE(GBP_AMOUNT);
125
+ /**
126
+ * Valid euro amount, e.g. `12.35`, or `null`.
127
+ *
128
+ * @example NULLABLE_EUR_AMOUNT.validate(null) // null
129
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_EUR_AMOUNT
130
+ */
44
131
  export const NULLABLE_EUR_AMOUNT = NULLABLE(EUR_AMOUNT);
@@ -2,20 +2,72 @@ import type { ImmutableArray } from "../util/array.js";
2
2
  import { type CurrencyCode } from "../util/currency.js";
3
3
  import type { StringSchemaOptions } from "./StringSchema.js";
4
4
  import { StringSchema } from "./StringSchema.js";
5
- /** Options for a `CurrencyCodeSchema` */
5
+ /**
6
+ * Options for `CurrencyCodeSchema`.
7
+ *
8
+ * - `currencies` — set of allowed ISO 4217 currency codes (defaults to all known codes).
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchemaOptions
11
+ */
6
12
  export interface CurrencyCodeSchemaOptions extends Omit<StringSchemaOptions, "input" | "min" | "max" | "match" | "rows"> {
7
13
  currencies?: ImmutableArray<CurrencyCode>;
8
14
  }
9
15
  /**
10
- * Type of `StringSchema` that defines a valid currency code.
16
+ * Schema that defines a valid ISO 4217 currency code, e.g. `GBP`.
17
+ *
18
+ * - The input is sanitized to three uppercase letters, then checked against the allowed `currencies`.
19
+ *
20
+ * @example
21
+ * const schema = new CurrencyCodeSchema({});
22
+ * schema.validate("gbp"); // "GBP"
23
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
11
24
  */
12
25
  export declare class CurrencyCodeSchema extends StringSchema {
26
+ /**
27
+ * Set of allowed ISO 4217 currency codes.
28
+ *
29
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/currencies
30
+ */
13
31
  readonly currencies: ImmutableArray<CurrencyCode>;
32
+ /**
33
+ * Create a new `CurrencyCodeSchema`.
34
+ *
35
+ * @param options Options for the schema (`currencies`, plus base `StringSchemaOptions` except `input`/`min`/`max`/`match`/`rows`).
36
+ * @example new CurrencyCodeSchema({ currencies: ["GBP", "USD"] })
37
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
38
+ */
14
39
  constructor({ one, title, currencies, ...options }: CurrencyCodeSchemaOptions);
40
+ /**
41
+ * Sanitize an input string down to uppercase `A-Z` letters.
42
+ *
43
+ * @param insaneString The raw input string to sanitize.
44
+ * @returns The sanitized string with all non-`A-Z` characters stripped.
45
+ * @example schema.sanitize(" gb p ") // "GBP"
46
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/sanitize
47
+ */
15
48
  sanitize(insaneString: string): string;
49
+ /**
50
+ * Validate an unknown input value and return a valid currency code.
51
+ *
52
+ * @param value The value to validate (defaults to this schema's `value`).
53
+ * @returns The validated three-letter uppercase currency code.
54
+ * @throws `string` if the value is not a valid string, or `"Unknown currency code"` if it is not in `currencies`.
55
+ * @example schema.validate("gbp") // "GBP"
56
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/validate
57
+ */
16
58
  validate(value?: unknown): string;
17
59
  }
18
- /** Valid currency code, e.g. `GBP` */
60
+ /**
61
+ * Valid currency code, e.g. `GBP` (required because falsy values are invalid).
62
+ *
63
+ * @example CURRENCY_CODE.validate("gbp") // "GBP"
64
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CURRENCY_CODE
65
+ */
19
66
  export declare const CURRENCY_CODE: CurrencyCodeSchema;
20
- /** Valid currency code, e.g. `GBP`, or `null` */
67
+ /**
68
+ * Valid currency code, e.g. `GBP`, or `null`.
69
+ *
70
+ * @example NULLABLE_CURRENCY_CODE.validate(null) // null
71
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/NULLABLE_CURRENCY_CODE
72
+ */
21
73
  export declare const NULLABLE_CURRENCY_CODE: import("./NullableSchema.js").NullableSchema<string>;
@@ -2,10 +2,29 @@ import { CURRENCY_CODES } from "../util/currency.js";
2
2
  import { NULLABLE } from "./NullableSchema.js";
3
3
  import { StringSchema } from "./StringSchema.js";
4
4
  /**
5
- * Type of `StringSchema` that defines a valid currency code.
5
+ * Schema that defines a valid ISO 4217 currency code, e.g. `GBP`.
6
+ *
7
+ * - The input is sanitized to three uppercase letters, then checked against the allowed `currencies`.
8
+ *
9
+ * @example
10
+ * const schema = new CurrencyCodeSchema({});
11
+ * schema.validate("gbp"); // "GBP"
12
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
6
13
  */
7
14
  export class CurrencyCodeSchema extends StringSchema {
15
+ /**
16
+ * Set of allowed ISO 4217 currency codes.
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/currencies
19
+ */
8
20
  currencies;
21
+ /**
22
+ * Create a new `CurrencyCodeSchema`.
23
+ *
24
+ * @param options Options for the schema (`currencies`, plus base `StringSchemaOptions` except `input`/`min`/`max`/`match`/`rows`).
25
+ * @example new CurrencyCodeSchema({ currencies: ["GBP", "USD"] })
26
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
27
+ */
9
28
  constructor({ one = "currency", title = "Currency", currencies = CURRENCY_CODES, ...options }) {
10
29
  super({
11
30
  one,
@@ -19,10 +38,27 @@ export class CurrencyCodeSchema extends StringSchema {
19
38
  });
20
39
  this.currencies = currencies;
21
40
  }
41
+ /**
42
+ * Sanitize an input string down to uppercase `A-Z` letters.
43
+ *
44
+ * @param insaneString The raw input string to sanitize.
45
+ * @returns The sanitized string with all non-`A-Z` characters stripped.
46
+ * @example schema.sanitize(" gb p ") // "GBP"
47
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/sanitize
48
+ */
22
49
  sanitize(insaneString) {
23
50
  // Strip characters that aren't A-Z (including whitespace).
24
51
  return super.sanitize(insaneString).replace(/[^A-Z+]/g, "");
25
52
  }
53
+ /**
54
+ * Validate an unknown input value and return a valid currency code.
55
+ *
56
+ * @param value The value to validate (defaults to this schema's `value`).
57
+ * @returns The validated three-letter uppercase currency code.
58
+ * @throws `string` if the value is not a valid string, or `"Unknown currency code"` if it is not in `currencies`.
59
+ * @example schema.validate("gbp") // "GBP"
60
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/validate
61
+ */
26
62
  validate(value) {
27
63
  const currency = super.validate(value);
28
64
  if (!this.currencies.includes(currency))
@@ -30,7 +66,17 @@ export class CurrencyCodeSchema extends StringSchema {
30
66
  return currency;
31
67
  }
32
68
  }
33
- /** Valid currency code, e.g. `GBP` */
69
+ /**
70
+ * Valid currency code, e.g. `GBP` (required because falsy values are invalid).
71
+ *
72
+ * @example CURRENCY_CODE.validate("gbp") // "GBP"
73
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CURRENCY_CODE
74
+ */
34
75
  export const CURRENCY_CODE = new CurrencyCodeSchema({});
35
- /** Valid currency code, e.g. `GBP`, or `null` */
76
+ /**
77
+ * Valid currency code, e.g. `GBP`, or `null`.
78
+ *
79
+ * @example NULLABLE_CURRENCY_CODE.validate(null) // null
80
+ * @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/NULLABLE_CURRENCY_CODE
81
+ */
36
82
  export const NULLABLE_CURRENCY_CODE = NULLABLE(CURRENCY_CODE);
@@ -4,28 +4,119 @@ import { type Key } from "../util/object.js";
4
4
  import type { NullableSchema } from "./NullableSchema.js";
5
5
  import type { SchemaOptions, Schemas } from "./Schema.js";
6
6
  import { Schema } from "./Schema.js";
7
- /** Allowed options for `PropsSchema` (a schema that has props). */
7
+ /**
8
+ * Options for `DataSchema`.
9
+ *
10
+ * - `props` — a named schema for each property the data object must have.
11
+ * - `value` — partial default value merged over the per-prop defaults.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchemaOptions
14
+ */
8
15
  export interface DataSchemaOptions<T extends Data> extends SchemaOptions {
9
16
  readonly props: Schemas<T>;
10
17
  readonly value?: Partial<T> | undefined;
11
18
  }
12
- /** Validate a data object. */
19
+ /**
20
+ * Schema that validates a data object against a fixed set of named property schemas.
21
+ *
22
+ * - Each property is validated by its own schema in `props`.
23
+ * - Excess keys are stripped and `undefined` outputs removed (via `validateData()`).
24
+ *
25
+ * @example
26
+ * const schema = new DataSchema({ props: { name: STRING, age: NUMBER } });
27
+ * schema.validate({ name: "Dave", age: 40 }); // { name: "Dave", age: 40 }
28
+ *
29
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema
30
+ */
13
31
  export declare class DataSchema<T extends Data> extends Schema<unknown> {
14
32
  readonly value: T;
15
33
  readonly props: Schemas<T>;
34
+ /**
35
+ * Create a new `DataSchema`.
36
+ *
37
+ * @param options Options for the schema, including the `props` schemas and an optional partial `value`.
38
+ */
16
39
  constructor({ one, title, props, value: partialValue, ...options }: DataSchemaOptions<T>);
40
+ /**
41
+ * Validate an unknown value as a data object matching this schema's props.
42
+ *
43
+ * @param unsafeValue The unknown input value to validate (defaults to this schema's `value`).
44
+ * @returns The valid data object with each property validated by its schema.
45
+ * @throws `string` `"Must be object"` if the value is not a data object, or a `"key: message"` line per invalid property.
46
+ * @example schema.validate({ name: "Dave" }) // { name: "Dave" }
47
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/validate
48
+ */
17
49
  validate(unsafeValue?: unknown): T;
18
- /** Make a new `DataSchema` that only uses a defined subset of the current props. */
50
+ /**
51
+ * Make a new `DataSchema` that only uses a defined subset of the current props.
52
+ *
53
+ * @param keys The property keys to keep.
54
+ * @returns A new `DataSchema` containing only the picked props.
55
+ * @example schema.pick("name", "age") // DataSchema<Pick<T, "name" | "age">>
56
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/pick
57
+ */
19
58
  pick<K extends Key<T>>(...keys: K[]): DataSchema<Pick<T, K>>;
20
- /** Make a new `DataSchema` that omits one or more of the current props. */
59
+ /**
60
+ * Make a new `DataSchema` that omits one or more of the current props.
61
+ *
62
+ * @param keys The property keys to remove.
63
+ * @returns A new `DataSchema` without the omitted props.
64
+ * @example schema.omit("age") // DataSchema<Omit<T, "age">>
65
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/omit
66
+ */
21
67
  omit<K extends Key<T>>(...keys: K[]): DataSchema<Omit<T, K>>;
68
+ /**
69
+ * Format a validated data object as a string for display.
70
+ *
71
+ * @param value The valid data object to format.
72
+ * @returns The data object formatted as a human-readable string.
73
+ * @example schema.format({ name: "Dave" }) // "name: Dave"
74
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/format
75
+ */
22
76
  format(value: T): string;
23
77
  }
24
- /** Create a `DataSchema` for a set of properties. */
25
- export declare const DATA: <T extends Data>(props: Schemas<T>) => DataSchema<T>;
26
- /** Valid data object with specifed properties, or `null` */
27
- export declare const NULLABLE_DATA: <T extends Data>(props: Schemas<T>) => NullableSchema<T>;
28
- /** Create a `DataSchema` that validates partially, i.e. properties can be their value, or `undefined` */
78
+ /**
79
+ * Create a `DataSchema` for a set of properties.
80
+ *
81
+ * *Factory for `DataSchema`.*
82
+ *
83
+ * @param props A named schema for each property of the data object.
84
+ * @returns A `DataSchema` validating data with the given props.
85
+ * @example DATA({ name: STRING, age: NUMBER }) // DataSchema<{ name: string; age: number }>
86
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/DATA
87
+ */
88
+ export declare function DATA<T extends Data>(props: Schemas<T>): DataSchema<T>;
89
+ /**
90
+ * Create a schema for a valid data object with specified properties, or `null`.
91
+ *
92
+ * *Factory for `NullableSchema`.*
93
+ *
94
+ * @param props A named schema for each property of the data object.
95
+ * @returns A `NullableSchema` wrapping a `DataSchema` with the given props.
96
+ * @example NULLABLE_DATA({ name: STRING }) // NullableSchema<{ name: string }>
97
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/NULLABLE_DATA
98
+ */
99
+ export declare function NULLABLE_DATA<T extends Data>(props: Schemas<T>): NullableSchema<T>;
100
+ /**
101
+ * Create a `DataSchema` that validates partially, i.e. every property can be its value or `undefined`.
102
+ *
103
+ * *Factory for `DataSchema`.*
104
+ *
105
+ * @param source The props schemas or an existing `DataSchema` to make partial.
106
+ * @returns A `DataSchema` whose every property is optional.
107
+ * @example PARTIAL({ name: STRING, age: NUMBER }) // DataSchema<{ name?: string; age?: number }>
108
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/PARTIAL
109
+ */
29
110
  export declare function PARTIAL<T extends Data>(source: Schemas<T> | DataSchema<T>): DataSchema<PartialData<T>>;
30
- /** Create a `DataSchema` that validates a data item, i.e. it has a string or number `.id` identifier property. */
111
+ /**
112
+ * Create a `DataSchema` that validates a data item, i.e. it has a string or number `.id` identifier property.
113
+ *
114
+ * *Factory for `DataSchema`.*
115
+ *
116
+ * @param id Schema for the item's `id` identifier property.
117
+ * @param schemas The props schemas or an existing `DataSchema` for the rest of the item.
118
+ * @returns A `DataSchema` validating an item with an `id` property plus the given props.
119
+ * @example ITEM(NUMBER, { name: STRING }) // DataSchema<{ id: number; name: string }>
120
+ * @see https://dhoulb.github.io/shelving/schema/DataSchema/ITEM
121
+ */
31
122
  export declare function ITEM<I extends Identifier, T extends Data>(id: Schema<I>, schemas: Schemas<T> | DataSchema<T>): DataSchema<Item<I, T>>;