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,7 +1,16 @@
1
1
  import { formatNumber } from "../util/format.js";
2
2
  import type { SchemaOptions } from "./Schema.js";
3
3
  import { Schema } from "./Schema.js";
4
- /** Allowed options for `NumberSchema` */
4
+ /**
5
+ * Allowed options for `NumberSchema`.
6
+ *
7
+ * - `value` — default number value used when the input is `undefined`.
8
+ * - `min`/`max` — minimum and maximum allowed value.
9
+ * - `step` — rounding step the value is snapped to (e.g. `1` for integers).
10
+ * - `format` — function used to render the number for display in downstream UIs.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchemaOptions
13
+ */
5
14
  export interface NumberSchemaOptions extends SchemaOptions {
6
15
  readonly value?: number | undefined;
7
16
  readonly min?: number | undefined;
@@ -10,33 +19,149 @@ export interface NumberSchemaOptions extends SchemaOptions {
10
19
  /** Format the number for display in downstream UIs. */
11
20
  readonly format?: typeof formatNumber | undefined;
12
21
  }
13
- /** Schema that defines a valid number. */
22
+ /**
23
+ * Schema that defines a valid number.
24
+ *
25
+ * - Values are coerced with `getNumber`; anything that cannot become a number is rejected.
26
+ * - The number is snapped to `step` (if set), then checked against `min` and `max`.
27
+ *
28
+ * @example
29
+ * const schema = new NumberSchema({ min: 0, max: 100, step: 1 });
30
+ * schema.validate("42"); // Returns 42
31
+ *
32
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema
33
+ */
14
34
  export declare class NumberSchema extends Schema<number> {
15
35
  readonly value: number | undefined;
16
36
  readonly min: number;
17
37
  readonly max: number;
18
38
  readonly step: number | undefined;
39
+ /**
40
+ * Create a new `NumberSchema`.
41
+ *
42
+ * @param options Options for the schema.
43
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"number"`).
44
+ * @param options.title Human-readable title for the schema (defaults to `"Number"`).
45
+ * @param options.min Minimum allowed value (defaults to `Number.NEGATIVE_INFINITY`).
46
+ * @param options.max Maximum allowed value (defaults to `Number.POSITIVE_INFINITY`).
47
+ * @param options.step Rounding step the value is snapped to.
48
+ * @param options.format Function used to render the number for display (defaults to `formatNumber`).
49
+ * @param options.value Default number value used when the input is `undefined`.
50
+ */
19
51
  constructor({ one, title, min, max, step, format, value, ...options }: NumberSchemaOptions);
52
+ /**
53
+ * Validate an unknown value and coerce it to a number.
54
+ *
55
+ * @param value Value to validate (defaults to this schema's `value`).
56
+ * @returns The coerced (and optionally stepped) number value.
57
+ * @throws `string` `"Required"` if the value is empty or missing, `` `Must be ${one}` `` if it cannot be coerced to a number, `` `Minimum ${min}` `` if below `min`, or `` `Maximum ${max}` `` if above `max`.
58
+ *
59
+ * @example
60
+ * NUMBER.validate("42"); // Returns 42
61
+ *
62
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/validate
63
+ */
20
64
  validate(value?: unknown): number;
65
+ /**
66
+ * Format a number value as a human-readable string for display.
67
+ *
68
+ * @param value Number value to format.
69
+ * @returns The formatted string.
70
+ *
71
+ * @example
72
+ * NUMBER.format(2048.5); // Returns "2,048.5"
73
+ *
74
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/format
75
+ */
21
76
  format(value: number): string;
22
77
  }
23
- /** Valid number, e.g. `2048.12345` or `0` zero and a default value of zero. */
78
+ /**
79
+ * Valid number, e.g. `2048.12345` or `0` zero and a default value of zero.
80
+ *
81
+ * @example
82
+ * NUMBER.validate("42"); // Returns 42
83
+ *
84
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NUMBER
85
+ */
24
86
  export declare const NUMBER: NumberSchema;
25
- /** Valid optional number, e.g. `2048.12345` or `0` zero, or `null` */
87
+ /**
88
+ * Valid optional number, e.g. `2048.12345` or `0` zero, or `null`.
89
+ *
90
+ * @example
91
+ * NULLABLE_NUMBER.validate(null); // Returns null
92
+ *
93
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_NUMBER
94
+ */
26
95
  export declare const NULLABLE_NUMBER: import("./NullableSchema.js").NullableSchema<number>;
27
- /** Valid integer number, e.g. `2048` or `0` zero. */
96
+ /**
97
+ * Valid integer number, e.g. `2048` or `0` zero.
98
+ *
99
+ * @example
100
+ * INTEGER.validate("42.7"); // Returns 43 (rounded to step)
101
+ *
102
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/INTEGER
103
+ */
28
104
  export declare const INTEGER: NumberSchema;
29
- /** Valid positive integer number, e.g. `1,2,3` (not including zero). */
105
+ /**
106
+ * Valid positive integer number, e.g. `1,2,3` (not including zero).
107
+ *
108
+ * @example
109
+ * POSITIVE_INTEGER.validate(0); // Throws "Required"
110
+ *
111
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/POSITIVE_INTEGER
112
+ */
30
113
  export declare const POSITIVE_INTEGER: NumberSchema;
31
- /** Valid non-negative integer number, e.g. `0,1,2,3` (including zero). */
114
+ /**
115
+ * Valid non-negative integer number, e.g. `0,1,2,3` (including zero).
116
+ *
117
+ * @example
118
+ * NON_NEGATIVE_INTEGER.validate(0); // Returns 0
119
+ *
120
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_NEGATIVE_INTEGER
121
+ */
32
122
  export declare const NON_NEGATIVE_INTEGER: NumberSchema;
33
- /** Valid negative integer number, e.g. `-1,-2,-3` (not including zero). */
123
+ /**
124
+ * Valid negative integer number, e.g. `-1,-2,-3` (not including zero).
125
+ *
126
+ * @example
127
+ * NEGATIVE_INTEGER.validate(-3); // Returns -3
128
+ *
129
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NEGATIVE_INTEGER
130
+ */
34
131
  export declare const NEGATIVE_INTEGER: NumberSchema;
35
- /** Valid non-positive integer number, e.g. `0,-1,-2,-3` (including zero). */
132
+ /**
133
+ * Valid non-positive integer number, e.g. `0,-1,-2,-3` (including zero).
134
+ *
135
+ * @example
136
+ * NON_POSITIVE_INTEGER.validate(0); // Returns 0
137
+ *
138
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_POSITIVE_INTEGER
139
+ */
36
140
  export declare const NON_POSITIVE_INTEGER: NumberSchema;
37
- /** Valid optional integer number, e.g. `2048` or `0` zero, or `null` */
141
+ /**
142
+ * Valid optional integer number, e.g. `2048` or `0` zero, or `null`.
143
+ *
144
+ * @example
145
+ * NULLABLE_INTEGER.validate(null); // Returns null
146
+ *
147
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_INTEGER
148
+ */
38
149
  export declare const NULLABLE_INTEGER: import("./NullableSchema.js").NullableSchema<number>;
39
- /** Valid Unix timestamp (including milliseconds). */
150
+ /**
151
+ * Valid Unix timestamp (including milliseconds).
152
+ *
153
+ * @example
154
+ * TIMESTAMP.validate(1700000000000); // Returns 1700000000000
155
+ *
156
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/TIMESTAMP
157
+ */
40
158
  export declare const TIMESTAMP: NumberSchema;
41
- /** Valid Unix timestamp (including milliseconds). */
159
+ /**
160
+ * Valid optional Unix timestamp (including milliseconds), or `null`.
161
+ *
162
+ * @example
163
+ * NULLABLE_TIMESTAMP.validate(null); // Returns null
164
+ *
165
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_TIMESTAMP
166
+ */
42
167
  export declare const NULLABLE_TIMESTAMP: import("./NullableSchema.js").NullableSchema<number>;
@@ -2,17 +2,52 @@ import { formatNumber } from "../util/format.js";
2
2
  import { getNumber, roundStep } from "../util/number.js";
3
3
  import { NULLABLE } from "./NullableSchema.js";
4
4
  import { Schema } from "./Schema.js";
5
- /** Schema that defines a valid number. */
5
+ /**
6
+ * Schema that defines a valid number.
7
+ *
8
+ * - Values are coerced with `getNumber`; anything that cannot become a number is rejected.
9
+ * - The number is snapped to `step` (if set), then checked against `min` and `max`.
10
+ *
11
+ * @example
12
+ * const schema = new NumberSchema({ min: 0, max: 100, step: 1 });
13
+ * schema.validate("42"); // Returns 42
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema
16
+ */
6
17
  export class NumberSchema extends Schema {
7
18
  min;
8
19
  max;
9
20
  step;
21
+ /**
22
+ * Create a new `NumberSchema`.
23
+ *
24
+ * @param options Options for the schema.
25
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"number"`).
26
+ * @param options.title Human-readable title for the schema (defaults to `"Number"`).
27
+ * @param options.min Minimum allowed value (defaults to `Number.NEGATIVE_INFINITY`).
28
+ * @param options.max Maximum allowed value (defaults to `Number.POSITIVE_INFINITY`).
29
+ * @param options.step Rounding step the value is snapped to.
30
+ * @param options.format Function used to render the number for display (defaults to `formatNumber`).
31
+ * @param options.value Default number value used when the input is `undefined`.
32
+ */
10
33
  constructor({ one = "number", title = "Number", min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY, step, format = formatNumber, value, ...options }) {
11
34
  super({ one, title, value, ...options });
12
35
  this.min = min;
13
36
  this.max = max;
14
37
  this.step = step;
15
38
  }
39
+ /**
40
+ * Validate an unknown value and coerce it to a number.
41
+ *
42
+ * @param value Value to validate (defaults to this schema's `value`).
43
+ * @returns The coerced (and optionally stepped) number value.
44
+ * @throws `string` `"Required"` if the value is empty or missing, `` `Must be ${one}` `` if it cannot be coerced to a number, `` `Minimum ${min}` `` if below `min`, or `` `Maximum ${max}` `` if above `max`.
45
+ *
46
+ * @example
47
+ * NUMBER.validate("42"); // Returns 42
48
+ *
49
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/validate
50
+ */
16
51
  validate(value = this.value) {
17
52
  const number = getNumber(value);
18
53
  if (typeof number !== "number")
@@ -24,32 +59,113 @@ export class NumberSchema extends Schema {
24
59
  throw `Maximum ${this.format(this.max)}`;
25
60
  return stepped;
26
61
  }
62
+ /**
63
+ * Format a number value as a human-readable string for display.
64
+ *
65
+ * @param value Number value to format.
66
+ * @returns The formatted string.
67
+ *
68
+ * @example
69
+ * NUMBER.format(2048.5); // Returns "2,048.5"
70
+ *
71
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/format
72
+ */
27
73
  format(value) {
28
74
  return formatNumber(value);
29
75
  }
30
76
  }
31
- /** Valid number, e.g. `2048.12345` or `0` zero and a default value of zero. */
77
+ /**
78
+ * Valid number, e.g. `2048.12345` or `0` zero and a default value of zero.
79
+ *
80
+ * @example
81
+ * NUMBER.validate("42"); // Returns 42
82
+ *
83
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NUMBER
84
+ */
32
85
  export const NUMBER = new NumberSchema({ title: "Number" });
33
- /** Valid optional number, e.g. `2048.12345` or `0` zero, or `null` */
86
+ /**
87
+ * Valid optional number, e.g. `2048.12345` or `0` zero, or `null`.
88
+ *
89
+ * @example
90
+ * NULLABLE_NUMBER.validate(null); // Returns null
91
+ *
92
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_NUMBER
93
+ */
34
94
  export const NULLABLE_NUMBER = NULLABLE(NUMBER);
35
- /** Valid integer number, e.g. `2048` or `0` zero. */
95
+ /**
96
+ * Valid integer number, e.g. `2048` or `0` zero.
97
+ *
98
+ * @example
99
+ * INTEGER.validate("42.7"); // Returns 43 (rounded to step)
100
+ *
101
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/INTEGER
102
+ */
36
103
  export const INTEGER = new NumberSchema({ step: 1, min: Number.MIN_SAFE_INTEGER, max: Number.MAX_SAFE_INTEGER });
37
- /** Valid positive integer number, e.g. `1,2,3` (not including zero). */
104
+ /**
105
+ * Valid positive integer number, e.g. `1,2,3` (not including zero).
106
+ *
107
+ * @example
108
+ * POSITIVE_INTEGER.validate(0); // Throws "Required"
109
+ *
110
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/POSITIVE_INTEGER
111
+ */
38
112
  export const POSITIVE_INTEGER = new NumberSchema({ step: 1, min: 1, max: Number.MAX_SAFE_INTEGER });
39
- /** Valid non-negative integer number, e.g. `0,1,2,3` (including zero). */
113
+ /**
114
+ * Valid non-negative integer number, e.g. `0,1,2,3` (including zero).
115
+ *
116
+ * @example
117
+ * NON_NEGATIVE_INTEGER.validate(0); // Returns 0
118
+ *
119
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_NEGATIVE_INTEGER
120
+ */
40
121
  export const NON_NEGATIVE_INTEGER = new NumberSchema({ step: 1, min: 0, max: Number.MAX_SAFE_INTEGER });
41
- /** Valid negative integer number, e.g. `-1,-2,-3` (not including zero). */
122
+ /**
123
+ * Valid negative integer number, e.g. `-1,-2,-3` (not including zero).
124
+ *
125
+ * @example
126
+ * NEGATIVE_INTEGER.validate(-3); // Returns -3
127
+ *
128
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NEGATIVE_INTEGER
129
+ */
42
130
  export const NEGATIVE_INTEGER = new NumberSchema({ step: 1, min: Number.MIN_SAFE_INTEGER, max: -1 });
43
- /** Valid non-positive integer number, e.g. `0,-1,-2,-3` (including zero). */
131
+ /**
132
+ * Valid non-positive integer number, e.g. `0,-1,-2,-3` (including zero).
133
+ *
134
+ * @example
135
+ * NON_POSITIVE_INTEGER.validate(0); // Returns 0
136
+ *
137
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_POSITIVE_INTEGER
138
+ */
44
139
  export const NON_POSITIVE_INTEGER = new NumberSchema({ step: 1, min: Number.MIN_SAFE_INTEGER, max: 0 });
45
- /** Valid optional integer number, e.g. `2048` or `0` zero, or `null` */
140
+ /**
141
+ * Valid optional integer number, e.g. `2048` or `0` zero, or `null`.
142
+ *
143
+ * @example
144
+ * NULLABLE_INTEGER.validate(null); // Returns null
145
+ *
146
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_INTEGER
147
+ */
46
148
  export const NULLABLE_INTEGER = NULLABLE(INTEGER);
47
- /** Valid Unix timestamp (including milliseconds). */
149
+ /**
150
+ * Valid Unix timestamp (including milliseconds).
151
+ *
152
+ * @example
153
+ * TIMESTAMP.validate(1700000000000); // Returns 1700000000000
154
+ *
155
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/TIMESTAMP
156
+ */
48
157
  export const TIMESTAMP = new NumberSchema({
49
158
  title: "Timestamp",
50
159
  step: 1,
51
160
  min: Number.MIN_SAFE_INTEGER,
52
161
  max: Number.MAX_SAFE_INTEGER,
53
162
  });
54
- /** Valid Unix timestamp (including milliseconds). */
163
+ /**
164
+ * Valid optional Unix timestamp (including milliseconds), or `null`.
165
+ *
166
+ * @example
167
+ * NULLABLE_TIMESTAMP.validate(null); // Returns null
168
+ *
169
+ * @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_TIMESTAMP
170
+ */
55
171
  export const NULLABLE_TIMESTAMP = NULLABLE_INTEGER;
@@ -1,20 +1,77 @@
1
1
  import type { Schema } from "./Schema.js";
2
2
  import { ThroughSchema, type ThroughSchemaOptions } from "./ThroughSchema.js";
3
+ /**
4
+ * Allowed options for `OptionalSchema`.
5
+ *
6
+ * - `value` — default value is always `undefined` (the default is only used when a value is `undefined`, so otherwise `undefined` could never be returned).
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchemaOptions
9
+ */
3
10
  export interface OptionalSchemaOptions<T> extends ThroughSchemaOptions<T | undefined> {
4
11
  /** Default value for an `OptionalSchema` can always `undefined` */
5
12
  readonly value?: undefined;
6
13
  }
7
14
  /**
8
- * Validate a property in an optional way, i.e. it can be the value, or `undefined`
9
- * - If the prop is `undefined`, then `undefined` is returned.
15
+ * Schema that wraps a source schema and additionally allows `undefined`.
16
+ *
17
+ * - `undefined` input validates to `undefined` instead of being passed to the source schema.
10
18
  * - When used with `validateData()` this means the prop can be silently skipped.
19
+ * - Any other value is delegated to the source schema for validation.
20
+ *
21
+ * @example
22
+ * const schema = new OptionalSchema({ source: STRING });
23
+ * schema.validate(undefined); // Returns undefined
24
+ * schema.validate("abc"); // Returns "abc"
25
+ *
26
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema
11
27
  */
12
28
  export declare class OptionalSchema<T> extends ThroughSchema<T | undefined> {
13
29
  /** Default value for an `OptionalSchema` is always `undefined` (default value is only used when a value is `undefined`, so otherwise `undefined` could never be returned as a value). */
14
30
  readonly value: undefined;
31
+ /**
32
+ * Create a new `OptionalSchema`.
33
+ *
34
+ * @param options Options for the schema, including the `source` schema to wrap.
35
+ */
15
36
  constructor(options: OptionalSchemaOptions<T>);
37
+ /**
38
+ * Validate an unknown value, returning `undefined` for `undefined` input or delegating to the source schema.
39
+ *
40
+ * @param unsafeValue Value to validate.
41
+ * @returns The valid value of type `T`, or `undefined` when the input is `undefined`.
42
+ * @throws `string` error message if the source schema rejects the value.
43
+ *
44
+ * @example
45
+ * OPTIONAL(STRING).validate(undefined); // Returns undefined
46
+ *
47
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/validate
48
+ */
16
49
  validate(unsafeValue: unknown): T | undefined;
50
+ /**
51
+ * Format an optional value as a human-readable string for display.
52
+ *
53
+ * @param value Value to format, or `undefined`.
54
+ * @returns The formatted string, or `` `No ${one}` `` when the value is `undefined`.
55
+ *
56
+ * @example
57
+ * OPTIONAL(STRING).format(undefined); // Returns "No string"
58
+ *
59
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/format
60
+ */
17
61
  format(value: T | undefined): string;
18
62
  }
19
- /** Make a property of a set of data optional, i.e. it can be the value or `undefined` */
20
- export declare const OPTIONAL: <T>(source: Schema<T>) => OptionalSchema<T>;
63
+ /**
64
+ * Create an `OptionalSchema` that wraps a source schema and also allows `undefined`.
65
+ *
66
+ * *Factory for `OptionalSchema`.*
67
+ *
68
+ * @param source Source schema to wrap.
69
+ * @returns An `OptionalSchema` wrapping `source`.
70
+ *
71
+ * @example
72
+ * const schema = OPTIONAL(STRING);
73
+ * schema.validate(undefined); // Returns undefined
74
+ *
75
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OPTIONAL
76
+ */
77
+ export declare function OPTIONAL<T>(source: Schema<T>): OptionalSchema<T>;
@@ -1,21 +1,73 @@
1
1
  import { ThroughSchema } from "./ThroughSchema.js";
2
2
  /**
3
- * Validate a property in an optional way, i.e. it can be the value, or `undefined`
4
- * - If the prop is `undefined`, then `undefined` is returned.
3
+ * Schema that wraps a source schema and additionally allows `undefined`.
4
+ *
5
+ * - `undefined` input validates to `undefined` instead of being passed to the source schema.
5
6
  * - When used with `validateData()` this means the prop can be silently skipped.
7
+ * - Any other value is delegated to the source schema for validation.
8
+ *
9
+ * @example
10
+ * const schema = new OptionalSchema({ source: STRING });
11
+ * schema.validate(undefined); // Returns undefined
12
+ * schema.validate("abc"); // Returns "abc"
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema
6
15
  */
7
16
  export class OptionalSchema extends ThroughSchema {
17
+ /**
18
+ * Create a new `OptionalSchema`.
19
+ *
20
+ * @param options Options for the schema, including the `source` schema to wrap.
21
+ */
8
22
  constructor(options) {
9
23
  super({ ...options, value: undefined });
10
24
  }
25
+ /**
26
+ * Validate an unknown value, returning `undefined` for `undefined` input or delegating to the source schema.
27
+ *
28
+ * @param unsafeValue Value to validate.
29
+ * @returns The valid value of type `T`, or `undefined` when the input is `undefined`.
30
+ * @throws `string` error message if the source schema rejects the value.
31
+ *
32
+ * @example
33
+ * OPTIONAL(STRING).validate(undefined); // Returns undefined
34
+ *
35
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/validate
36
+ */
11
37
  validate(unsafeValue) {
12
38
  if (unsafeValue === undefined)
13
39
  return undefined;
14
40
  return super.validate(unsafeValue);
15
41
  }
42
+ /**
43
+ * Format an optional value as a human-readable string for display.
44
+ *
45
+ * @param value Value to format, or `undefined`.
46
+ * @returns The formatted string, or `` `No ${one}` `` when the value is `undefined`.
47
+ *
48
+ * @example
49
+ * OPTIONAL(STRING).format(undefined); // Returns "No string"
50
+ *
51
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/format
52
+ */
16
53
  format(value) {
17
54
  return value === undefined ? `No ${this.source.one}` : super.format(value);
18
55
  }
19
56
  }
20
- /** Make a property of a set of data optional, i.e. it can be the value or `undefined` */
21
- export const OPTIONAL = (source) => new OptionalSchema({ source });
57
+ /**
58
+ * Create an `OptionalSchema` that wraps a source schema and also allows `undefined`.
59
+ *
60
+ * *Factory for `OptionalSchema`.*
61
+ *
62
+ * @param source Source schema to wrap.
63
+ * @returns An `OptionalSchema` wrapping `source`.
64
+ *
65
+ * @example
66
+ * const schema = OPTIONAL(STRING);
67
+ * schema.validate(undefined); // Returns undefined
68
+ *
69
+ * @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OPTIONAL
70
+ */
71
+ export function OPTIONAL(source) {
72
+ return new OptionalSchema({ source });
73
+ }
@@ -1,9 +1,45 @@
1
1
  import { StringSchema, type StringSchemaOptions } from "./StringSchema.js";
2
+ /**
3
+ * Options for a `PasswordSchema`.
4
+ *
5
+ * @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchemaOptions
6
+ */
2
7
  export interface PasswordSchemaOptions extends Omit<StringSchemaOptions, "input"> {
3
8
  }
9
+ /**
10
+ * Schema that defines a valid password string.
11
+ *
12
+ * - Forces the `<input />` hint to `"password"` for downstream UIs.
13
+ * - Never formats the value for display (`format()` always returns `""`).
14
+ *
15
+ * @example new PasswordSchema({}).validate("hunter2"); // Returns "hunter2"
16
+ * @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema
17
+ */
4
18
  export declare class PasswordSchema extends StringSchema {
19
+ /**
20
+ * Create a new `PasswordSchema`.
21
+ *
22
+ * @param options Options for the schema (inherits `StringSchema` options except `input`, which is fixed to `"password"`).
23
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"password"`).
24
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Password"`).
25
+ * @param options.min Minimum allowed character length (defaults to `6`).
26
+ */
5
27
  constructor({ one, title, min, ...options }?: PasswordSchemaOptions);
28
+ /**
29
+ * Format a password value for display (always returns `""`).
30
+ *
31
+ * - Passwords are never shown, so this deliberately yields an empty string.
32
+ *
33
+ * @returns An empty string.
34
+ * @example new PasswordSchema({}).format("hunter2"); // Returns ""
35
+ * @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema/format
36
+ */
6
37
  format(): string;
7
38
  }
8
- /** Password string. */
39
+ /**
40
+ * Password string.
41
+ *
42
+ * @example PASSWORD.validate("hunter2"); // Returns "hunter2"
43
+ * @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PASSWORD
44
+ */
9
45
  export declare const PASSWORD: StringSchema;
@@ -1,11 +1,42 @@
1
1
  import { StringSchema } from "./StringSchema.js";
2
+ /**
3
+ * Schema that defines a valid password string.
4
+ *
5
+ * - Forces the `<input />` hint to `"password"` for downstream UIs.
6
+ * - Never formats the value for display (`format()` always returns `""`).
7
+ *
8
+ * @example new PasswordSchema({}).validate("hunter2"); // Returns "hunter2"
9
+ * @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema
10
+ */
2
11
  export class PasswordSchema extends StringSchema {
12
+ /**
13
+ * Create a new `PasswordSchema`.
14
+ *
15
+ * @param options Options for the schema (inherits `StringSchema` options except `input`, which is fixed to `"password"`).
16
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"password"`).
17
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Password"`).
18
+ * @param options.min Minimum allowed character length (defaults to `6`).
19
+ */
3
20
  constructor({ one = "password", title = "Password", min = 6, ...options } = {}) {
4
21
  super({ one, title, min, ...options, input: "password" });
5
22
  }
23
+ /**
24
+ * Format a password value for display (always returns `""`).
25
+ *
26
+ * - Passwords are never shown, so this deliberately yields an empty string.
27
+ *
28
+ * @returns An empty string.
29
+ * @example new PasswordSchema({}).format("hunter2"); // Returns ""
30
+ * @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema/format
31
+ */
6
32
  format() {
7
33
  return ""; // Never format a password for display.
8
34
  }
9
35
  }
10
- /** Password string. */
36
+ /**
37
+ * Password string.
38
+ *
39
+ * @example PASSWORD.validate("hunter2"); // Returns "hunter2"
40
+ * @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PASSWORD
41
+ */
11
42
  export const PASSWORD = new StringSchema({});
@@ -1,18 +1,54 @@
1
1
  import type { StringSchemaOptions } from "./StringSchema.js";
2
2
  import { StringSchema } from "./StringSchema.js";
3
- /** Options for a `PhoneSchema` */
3
+ /**
4
+ * Options for a `PhoneSchema`.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PhoneSchemaOptions
7
+ */
4
8
  export interface PhoneSchemaOptions extends Omit<StringSchemaOptions, "input" | "min" | "max" | "match" | "rows"> {
5
9
  }
6
10
  /**
7
- * Type of `StringSchema` that defines a valid phone number.
11
+ * Schema that defines a valid phone number.
12
+ *
8
13
  * - Multiple string formats are automatically converted to E.164 format (starting with `+` plus).
9
14
  * - Falsy values are converted to `""` empty string.
15
+ *
16
+ * @example PHONE.validate("+44 1234 567890"); // Returns "+441234567890"
17
+ * @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PhoneSchema
10
18
  */
11
19
  export declare class PhoneSchema extends StringSchema {
20
+ /**
21
+ * Create a new `PhoneSchema`.
22
+ *
23
+ * @param options Options for the schema (inherits `StringSchema` options except `input`, `min`, `max`, `match`, and `rows`, which are fixed for phone numbers).
24
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"phone number"`).
25
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Phone"`).
26
+ */
12
27
  constructor({ one, title, ...options }: PhoneSchemaOptions);
28
+ /**
29
+ * Sanitize the string into a valid E.164 phone number.
30
+ *
31
+ * - Strips every character that isn't `0`–`9` or `+` plus (including whitespace).
32
+ * - Keeps a `+` plus only when it is the first character.
33
+ *
34
+ * @param insaneString String to sanitize.
35
+ * @returns The sanitized phone number.
36
+ * @example PHONE.sanitize("+44 (1234) 567890"); // Returns "+441234567890"
37
+ * @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PhoneSchema/sanitize
38
+ */
13
39
  sanitize(insaneString: string): string;
14
40
  }
15
- /** Valid phone number, e.g. `+441234567890` */
41
+ /**
42
+ * Valid phone number, e.g. `+441234567890`
43
+ *
44
+ * @example PHONE.validate("+441234567890"); // Returns "+441234567890"
45
+ * @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PHONE
46
+ */
16
47
  export declare const PHONE: PhoneSchema;
17
- /** Valid phone number, e.g. `+441234567890`, or `null` */
48
+ /**
49
+ * Valid phone number, e.g. `+441234567890`, or `null`
50
+ *
51
+ * @example NULLABLE_PHONE.validate(null); // Returns null
52
+ * @see https://dhoulb.github.io/shelving/schema/PhoneSchema/NULLABLE_PHONE
53
+ */
18
54
  export declare const NULLABLE_PHONE: import("./NullableSchema.js").NullableSchema<string>;