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
@@ -4,17 +4,16 @@ import { Schema } from "./Schema.js";
4
4
  /**
5
5
  * Schema that defines a valid string.
6
6
  *
7
+ * - Numbers are coerced to strings; all other non-string values are rejected.
8
+ * - The value is sanitized (and optionally case-folded), then checked against `match`, `min`, and `max`.
9
+ *
7
10
  * @example
8
- * const schema = new StringSchema({ default: 'abc', required: true, min: 2, max: 6, match: /^[a-z0-9]+$/, trim: true });
9
- * schema.validate('def'); // Returns 'def'
10
- * schema.validate('abcdefghijk'); // Returns 'abcdef' (due to max)
11
- * schema.validate(undefined); // Returns 'abc' (due to value)
12
- * schema.validate(' ghi '); // Returns 'ghi' (due to schema.trim, defaults to true)
13
- * schema.validate(1234); // Returns '1234' (numbers are converted to strings)
14
- * schema.validate('---'); // Throws 'Incorrect)
15
- * schema.validate(true); // Throws 'Must be)
16
- * schema.validate(''); // Throws Required
17
- * schema.validate('j'); // Throws 'Minimum 3 chaacters'
11
+ * const schema = new StringSchema({ min: 2, max: 6, match: /^[a-z0-9]+$/ });
12
+ * schema.validate("def"); // Returns "def"
13
+ * schema.validate(1234); // Returns "1234" (numbers are coerced)
14
+ * schema.validate("j"); // Throws "Minimum 2 characters"
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/StringSchema
18
17
  */
19
18
  export class StringSchema extends Schema {
20
19
  input;
@@ -23,6 +22,19 @@ export class StringSchema extends Schema {
23
22
  rows;
24
23
  match;
25
24
  case;
25
+ /**
26
+ * Create a new `StringSchema`.
27
+ *
28
+ * @param options Options for the schema.
29
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"string"`).
30
+ * @param options.min Minimum allowed character length (defaults to `0`).
31
+ * @param options.max Maximum allowed character length (defaults to `Number.POSITIVE_INFINITY`).
32
+ * @param options.value Default string value used when the input is `undefined` (defaults to `""`).
33
+ * @param options.rows Number of rows; more than one enables multiline sanitization (defaults to `1`).
34
+ * @param options.match Regular expression the sanitized string must match.
35
+ * @param options.case Force the result to `"upper"` or `"lower"` case.
36
+ * @param options.input HTML `<input />` `type=""` hint for downstream UIs (defaults to `"text"`).
37
+ */
26
38
  constructor({ one = "string", min = 0, max = Number.POSITIVE_INFINITY, value = "", rows = 1, match, case: _case, input = "text", ...options }) {
27
39
  super({ one, value, ...options });
28
40
  this.min = min;
@@ -32,6 +44,18 @@ export class StringSchema extends Schema {
32
44
  this.case = _case;
33
45
  this.input = input;
34
46
  }
47
+ /**
48
+ * Validate an unknown value and coerce it to a sanitized string.
49
+ *
50
+ * @param value Value to validate (defaults to this schema's `value`).
51
+ * @returns The sanitized string value.
52
+ * @throws `string` `"Required"` if the value is empty or missing, `` `Must be ${one}` `` if it is not a string or number, `` `Invalid ${one}` `` if it fails `match`, `` `Minimum ${min} characters` `` if too short, or `` `Maximum ${max} characters` `` if too long.
53
+ *
54
+ * @example
55
+ * STRING.validate(123); // Returns "123"
56
+ *
57
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/StringSchema/validate
58
+ */
35
59
  validate(value = this.value) {
36
60
  const str = typeof value === "number" ? value.toString() : value;
37
61
  if (typeof str !== "string")
@@ -45,7 +69,20 @@ export class StringSchema extends Schema {
45
69
  throw `Maximum ${this.max} characters`;
46
70
  return sane;
47
71
  }
48
- /** Sanitize the string by removing unwanted characters. */
72
+ /**
73
+ * Sanitize the string by removing unwanted characters.
74
+ *
75
+ * - Uses multiline sanitization when `rows` is greater than one, otherwise single-line sanitization.
76
+ * - Applies the configured `case` folding (`"upper"` or `"lower"`) if set.
77
+ *
78
+ * @param str String to sanitize.
79
+ * @returns The sanitized (and optionally case-folded) string.
80
+ *
81
+ * @example
82
+ * STRING.sanitize(" hello "); // Returns "hello"
83
+ *
84
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/StringSchema/sanitize
85
+ */
49
86
  sanitize(str) {
50
87
  const sane = this.rows > 1 ? sanitizeMultilineText(str) : sanitizeText(str);
51
88
  if (this.case === "upper")
@@ -54,19 +91,72 @@ export class StringSchema extends Schema {
54
91
  return sane.toLowerCase();
55
92
  return sane;
56
93
  }
94
+ /**
95
+ * Format a string value for display (returns the string unchanged).
96
+ *
97
+ * @param str String value to format.
98
+ * @returns The same string value.
99
+ *
100
+ * @example
101
+ * STRING.format("abc"); // Returns "abc"
102
+ *
103
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/StringSchema/format
104
+ */
57
105
  format(str) {
58
106
  return str;
59
107
  }
60
108
  }
61
- /** Valid string, e.g. `Hello there!` */
109
+ /**
110
+ * Valid string, e.g. `Hello there!`
111
+ *
112
+ * @example
113
+ * STRING.validate(123); // Returns "123"
114
+ *
115
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/STRING
116
+ */
62
117
  export const STRING = new StringSchema({});
63
- /** Valid string, `Hello there!`, with more than one character. */
118
+ /**
119
+ * Valid string, `Hello there!`, with more than one character.
120
+ *
121
+ * @example
122
+ * REQUIRED_STRING.validate(""); // Throws "Required"
123
+ *
124
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/REQUIRED_STRING
125
+ */
64
126
  export const REQUIRED_STRING = new StringSchema({ min: 1 });
65
- /** Title string, e.g. `Title of something` */
127
+ /**
128
+ * Title string, e.g. `Title of something` (1–100 characters).
129
+ *
130
+ * @example
131
+ * TITLE.validate("My Title"); // Returns "My Title"
132
+ *
133
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/TITLE
134
+ */
66
135
  export const TITLE = new StringSchema({ one: "title", title: "Title", min: 1, max: 100 });
67
- /** Optional name string, e.g. `Title of something` or `null` */
136
+ /**
137
+ * Optional title string, e.g. `Title of something` or `null`.
138
+ *
139
+ * @example
140
+ * NULLABLE_TITLE.validate(null); // Returns null
141
+ *
142
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/NULLABLE_TITLE
143
+ */
68
144
  export const NULLABLE_TITLE = NULLABLE(TITLE);
69
- /** Name string, e.g. `Name of Something` */
145
+ /**
146
+ * Name string, e.g. `Name of Something` (1–100 characters).
147
+ *
148
+ * @example
149
+ * NAME.validate("Dave"); // Returns "Dave"
150
+ *
151
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/NAME
152
+ */
70
153
  export const NAME = new StringSchema({ one: "name", title: "Name", min: 1, max: 100 });
71
- /** Optional name string, e.g. `Name of Something` or `null` */
154
+ /**
155
+ * Optional name string, e.g. `Name of Something` or `null`.
156
+ *
157
+ * @example
158
+ * NULLABLE_NAME.validate(null); // Returns null
159
+ *
160
+ * @see https://dhoulb.github.io/shelving/schema/StringSchema/NULLABLE_NAME
161
+ */
72
162
  export const NULLABLE_NAME = NULLABLE(NAME);
@@ -1,14 +1,47 @@
1
1
  import type { Sourceable } from "../util/source.js";
2
2
  import type { SchemaOptions } from "./Schema.js";
3
3
  import { Schema } from "./Schema.js";
4
- /** Allowed options for `ThroughSchema` */
4
+ /**
5
+ * Allowed options for `ThroughSchema`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/schema/ThroughSchema/ThroughSchemaOptions
8
+ */
5
9
  export interface ThroughSchemaOptions<T> extends SchemaOptions {
6
10
  source: Schema<T>;
7
11
  }
8
- /** Schema that passes through to a source schema. */
12
+ /**
13
+ * Schema that wraps and passes through to a source schema, used as a base for schemas that augment another schema's behaviour (e.g. `NullableSchema`, `OptionalSchema`, `RequiredSchema`).
14
+ *
15
+ * @example
16
+ * class WrapSchema<T> extends ThroughSchema<T> {} // Delegates `validate()` to `this.source`.
17
+ * @see https://dhoulb.github.io/shelving/schema/ThroughSchema/ThroughSchema
18
+ */
9
19
  export declare abstract class ThroughSchema<T> extends Schema<T> implements Sourceable<Schema<T>> {
20
+ /** The source schema this schema passes through to. */
10
21
  readonly source: Schema<T>;
22
+ /**
23
+ * Create a new `ThroughSchema`.
24
+ *
25
+ * @param options Options for the schema, including the `source` schema to wrap.
26
+ */
11
27
  constructor({ source, ...options }: ThroughSchemaOptions<T>);
28
+ /**
29
+ * Validate an unknown input value by passing it through to the source schema.
30
+ *
31
+ * @param unsafeValue The unknown input value to validate.
32
+ * @returns The valid value of type `T`.
33
+ * @throws `string` error message if the value is invalid.
34
+ * @example schema.validate(input) // Delegates to source schema.
35
+ * @see https://dhoulb.github.io/shelving/schema/ThroughSchema/ThroughSchema/validate
36
+ */
12
37
  validate(unsafeValue: unknown): T;
38
+ /**
39
+ * Format a valid value by passing it through to the source schema.
40
+ *
41
+ * @param value The valid value to format.
42
+ * @returns The value formatted as a human-readable string.
43
+ * @example schema.format(value) // Delegates to source schema.
44
+ * @see https://dhoulb.github.io/shelving/schema/ThroughSchema/ThroughSchema/format
45
+ */
13
46
  format(value: T): string;
14
47
  }
@@ -1,14 +1,43 @@
1
1
  import { Schema } from "./Schema.js";
2
- /** Schema that passes through to a source schema. */
2
+ /**
3
+ * Schema that wraps and passes through to a source schema, used as a base for schemas that augment another schema's behaviour (e.g. `NullableSchema`, `OptionalSchema`, `RequiredSchema`).
4
+ *
5
+ * @example
6
+ * class WrapSchema<T> extends ThroughSchema<T> {} // Delegates `validate()` to `this.source`.
7
+ * @see https://dhoulb.github.io/shelving/schema/ThroughSchema/ThroughSchema
8
+ */
3
9
  export class ThroughSchema extends Schema {
10
+ /** The source schema this schema passes through to. */
4
11
  source;
12
+ /**
13
+ * Create a new `ThroughSchema`.
14
+ *
15
+ * @param options Options for the schema, including the `source` schema to wrap.
16
+ */
5
17
  constructor({ source, ...options }) {
6
18
  super(source instanceof Schema ? { ...source, ...options } : options);
7
19
  this.source = source;
8
20
  }
21
+ /**
22
+ * Validate an unknown input value by passing it through to the source schema.
23
+ *
24
+ * @param unsafeValue The unknown input value to validate.
25
+ * @returns The valid value of type `T`.
26
+ * @throws `string` error message if the value is invalid.
27
+ * @example schema.validate(input) // Delegates to source schema.
28
+ * @see https://dhoulb.github.io/shelving/schema/ThroughSchema/ThroughSchema/validate
29
+ */
9
30
  validate(unsafeValue) {
10
31
  return this.source.validate(unsafeValue);
11
32
  }
33
+ /**
34
+ * Format a valid value by passing it through to the source schema.
35
+ *
36
+ * @param value The valid value to format.
37
+ * @returns The value formatted as a human-readable string.
38
+ * @example schema.format(value) // Delegates to source schema.
39
+ * @see https://dhoulb.github.io/shelving/schema/ThroughSchema/ThroughSchema/format
40
+ */
12
41
  format(value) {
13
42
  return this.source.format(value);
14
43
  }
@@ -1,11 +1,51 @@
1
1
  import { DateSchema, type DateSchemaOptions } from "./DateSchema.js";
2
- /** Define a valid time in 24h hh:mm:ss.fff format, e.g. `23:59` or `24:00 */
2
+ /**
3
+ * Schema that defines a valid abstract time in 24h `hh:mm:ss.fff` format, e.g. `23:59` or `24:00`.
4
+ *
5
+ * - Validates a time without a timezone, e.g. a daily alarm; use `DateSchema` for dates and `DateTimeSchema` for UTC datetimes.
6
+ *
7
+ * @example
8
+ * const schema = new TimeSchema({});
9
+ * schema.validate("23:59"); // "23:59:00.000"
10
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TimeSchema
11
+ */
3
12
  export declare class TimeSchema extends DateSchema {
13
+ /**
14
+ * Create a new `TimeSchema`.
15
+ *
16
+ * @param options Options for the schema (same as `DateSchemaOptions`).
17
+ */
4
18
  constructor({ one, title, input, ...options }: DateSchemaOptions);
19
+ /**
20
+ * Convert a `Date` object to a `hh:mm:ss.fff` time string.
21
+ *
22
+ * @param value The `Date` to convert.
23
+ * @returns The time portion as a `hh:mm:ss.fff` string.
24
+ * @example schema.stringify(new Date("2005-09-12T23:59:00Z")) // "23:59:00.000"
25
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TimeSchema/stringify
26
+ */
5
27
  stringify(value: Date): string;
28
+ /**
29
+ * Format a validated time string as a human-readable string for display.
30
+ *
31
+ * @param value The validated time string to format.
32
+ * @returns The time formatted for display.
33
+ * @example schema.format("23:59") // "23:59"
34
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TimeSchema/format
35
+ */
6
36
  format(value: string): string;
7
37
  }
8
- /** Valid time, e.g. `2005-09-12` (required because falsy values are invalid). */
38
+ /**
39
+ * Valid time, e.g. `23:59` (required because falsy values are invalid).
40
+ *
41
+ * @example TIME.validate("23:59") // "23:59:00.000"
42
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TIME
43
+ */
9
44
  export declare const TIME: TimeSchema;
10
- /** Valid time, e.g. `2005-09-12`, or `null` */
45
+ /**
46
+ * Valid time, e.g. `23:59`, or `null`.
47
+ *
48
+ * @example NULLABLE_TIME.validate(null) // null
49
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/NULLABLE_TIME
50
+ */
11
51
  export declare const NULLABLE_TIME: import("./NullableSchema.js").NullableSchema<string>;
@@ -2,19 +2,59 @@ import { requireTimeString } from "../util/date.js";
2
2
  import { formatTime } from "../util/format.js";
3
3
  import { DateSchema } from "./DateSchema.js";
4
4
  import { NULLABLE } from "./NullableSchema.js";
5
- /** Define a valid time in 24h hh:mm:ss.fff format, e.g. `23:59` or `24:00 */
5
+ /**
6
+ * Schema that defines a valid abstract time in 24h `hh:mm:ss.fff` format, e.g. `23:59` or `24:00`.
7
+ *
8
+ * - Validates a time without a timezone, e.g. a daily alarm; use `DateSchema` for dates and `DateTimeSchema` for UTC datetimes.
9
+ *
10
+ * @example
11
+ * const schema = new TimeSchema({});
12
+ * schema.validate("23:59"); // "23:59:00.000"
13
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TimeSchema
14
+ */
6
15
  export class TimeSchema extends DateSchema {
16
+ /**
17
+ * Create a new `TimeSchema`.
18
+ *
19
+ * @param options Options for the schema (same as `DateSchemaOptions`).
20
+ */
7
21
  constructor({ one = "time", title = "Time", input = "time", ...options }) {
8
22
  super({ one, title, input, ...options });
9
23
  }
24
+ /**
25
+ * Convert a `Date` object to a `hh:mm:ss.fff` time string.
26
+ *
27
+ * @param value The `Date` to convert.
28
+ * @returns The time portion as a `hh:mm:ss.fff` string.
29
+ * @example schema.stringify(new Date("2005-09-12T23:59:00Z")) // "23:59:00.000"
30
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TimeSchema/stringify
31
+ */
10
32
  stringify(value) {
11
33
  return requireTimeString(value);
12
34
  }
35
+ /**
36
+ * Format a validated time string as a human-readable string for display.
37
+ *
38
+ * @param value The validated time string to format.
39
+ * @returns The time formatted for display.
40
+ * @example schema.format("23:59") // "23:59"
41
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TimeSchema/format
42
+ */
13
43
  format(value) {
14
44
  return formatTime(value, undefined, this.format);
15
45
  }
16
46
  }
17
- /** Valid time, e.g. `2005-09-12` (required because falsy values are invalid). */
47
+ /**
48
+ * Valid time, e.g. `23:59` (required because falsy values are invalid).
49
+ *
50
+ * @example TIME.validate("23:59") // "23:59:00.000"
51
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/TIME
52
+ */
18
53
  export const TIME = new TimeSchema({});
19
- /** Valid time, e.g. `2005-09-12`, or `null` */
54
+ /**
55
+ * Valid time, e.g. `23:59`, or `null`.
56
+ *
57
+ * @example NULLABLE_TIME.validate(null) // null
58
+ * @see https://dhoulb.github.io/shelving/schema/TimeSchema/NULLABLE_TIME
59
+ */
20
60
  export const NULLABLE_TIME = NULLABLE(TIME);
@@ -1,23 +1,84 @@
1
1
  import { type URISchemes, type URIString } from "../util/uri.js";
2
2
  import type { StringSchemaOptions } from "./StringSchema.js";
3
3
  import { StringSchema } from "./StringSchema.js";
4
- /** Allowed options for `URISchema` */
4
+ /**
5
+ * Options for `URISchema`.
6
+ *
7
+ * - `schemes` — whitelist of allowed URI schemes (defaults to HTTP/HTTPS).
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchemaOptions
10
+ */
5
11
  export interface URISchemaOptions extends Omit<StringSchemaOptions, "input" | "min" | "max" | "rows"> {
6
12
  readonly schemes?: URISchemes | undefined;
7
13
  }
8
14
  /**
9
- * Type of `StringSchema` that defines a valid URI string.
10
- * - Checks URI scheme against a whitelist (always).
11
- * - URIs are limited to 512 characters, but generally these won't be data: URIs so this is a reasonable limit.
15
+ * Schema that defines a valid absolute URI string.
16
+ *
17
+ * - Checks the URI scheme against a whitelist (always).
18
+ * - URIs are limited to 512 characters, but generally these won't be `data:` URIs so this is a reasonable limit.
19
+ *
20
+ * @example
21
+ * const schema = new URISchema({});
22
+ * schema.validate("https://www.google.com") // "https://www.google.com/"
23
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema
12
24
  */
13
25
  export declare class URISchema extends StringSchema {
26
+ /** Whitelist of allowed URI schemes, e.g. `["https:", "http:"]`. */
14
27
  readonly schemes: URISchemes;
28
+ /**
29
+ * Create a new `URISchema`.
30
+ *
31
+ * @param options Options for the schema (`schemes`, plus inherited string options like `one`, `title`, `value`).
32
+ */
15
33
  constructor({ one, title, schemes, ...options }: URISchemaOptions);
34
+ /**
35
+ * Validate an unknown input value and return a normalised absolute URI string.
36
+ *
37
+ * - Override to validate the URI and check the scheme against the whitelist.
38
+ *
39
+ * @param unsafeValue The unknown input value to validate.
40
+ * @returns The valid, normalised URI string.
41
+ * @throws `string` error message if the value is empty, malformed, or uses a disallowed scheme.
42
+ * @example schema.validate("https://www.google.com") // "https://www.google.com/"
43
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema/validate
44
+ */
16
45
  validate(unsafeValue: unknown): URIString;
46
+ /**
47
+ * Sanitize a string before validation by stripping all whitespace.
48
+ *
49
+ * - URIs never contain whitespace (a real space must be `%20`-encoded), so strip it entirely.
50
+ *
51
+ * @param str The raw string to sanitize.
52
+ * @returns The sanitized string with all whitespace removed.
53
+ * @example schema.sanitize(" https://a.com ") // "https://a.com"
54
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema/sanitize
55
+ */
17
56
  sanitize(str: string): string;
57
+ /**
58
+ * Format a validated URI string for display.
59
+ *
60
+ * @param value The valid URI string to format.
61
+ * @returns The URI formatted as a human-readable string.
62
+ * @example schema.format("https://www.google.com/") // "www.google.com"
63
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema/format
64
+ */
18
65
  format(value: string): string;
19
66
  }
20
- /** Valid URI string, e.g. `https://www.google.com` */
67
+ /**
68
+ * Valid URI string, e.g. `https://www.google.com`.
69
+ *
70
+ * *Factory for `URISchema`.*
71
+ *
72
+ * @example URI_SCHEMA.validate("https://www.google.com") // "https://www.google.com/"
73
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URI_SCHEMA
74
+ */
21
75
  export declare const URI_SCHEMA: URISchema;
22
- /** Valid URI string, e.g. `https://www.google.com`, or `null` */
76
+ /**
77
+ * Valid URI string, e.g. `https://www.google.com`, or `null`.
78
+ *
79
+ * *Factory for `NullableSchema`.*
80
+ *
81
+ * @example NULLABLE_URI_SCHEMA.validate(null) // null
82
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/NULLABLE_URI_SCHEMA
83
+ */
23
84
  export declare const NULLABLE_URI_SCHEMA: import("./NullableSchema.js").NullableSchema<string>;
@@ -4,12 +4,24 @@ import { getURI, HTTP_SCHEMES } from "../util/uri.js";
4
4
  import { NULLABLE } from "./NullableSchema.js";
5
5
  import { StringSchema } from "./StringSchema.js";
6
6
  /**
7
- * Type of `StringSchema` that defines a valid URI string.
8
- * - Checks URI scheme against a whitelist (always).
9
- * - URIs are limited to 512 characters, but generally these won't be data: URIs so this is a reasonable limit.
7
+ * Schema that defines a valid absolute URI string.
8
+ *
9
+ * - Checks the URI scheme against a whitelist (always).
10
+ * - URIs are limited to 512 characters, but generally these won't be `data:` URIs so this is a reasonable limit.
11
+ *
12
+ * @example
13
+ * const schema = new URISchema({});
14
+ * schema.validate("https://www.google.com") // "https://www.google.com/"
15
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema
10
16
  */
11
17
  export class URISchema extends StringSchema {
18
+ /** Whitelist of allowed URI schemes, e.g. `["https:", "http:"]`. */
12
19
  schemes;
20
+ /**
21
+ * Create a new `URISchema`.
22
+ *
23
+ * @param options Options for the schema (`schemes`, plus inherited string options like `one`, `title`, `value`).
24
+ */
13
25
  constructor({ one = "URI", title = "URI", schemes = HTTP_SCHEMES, ...options }) {
14
26
  super({
15
27
  one,
@@ -22,7 +34,17 @@ export class URISchema extends StringSchema {
22
34
  });
23
35
  this.schemes = schemes;
24
36
  }
25
- // Override to validate the URI and check the schemes and hosts against the whitelists.
37
+ /**
38
+ * Validate an unknown input value and return a normalised absolute URI string.
39
+ *
40
+ * - Override to validate the URI and check the scheme against the whitelist.
41
+ *
42
+ * @param unsafeValue The unknown input value to validate.
43
+ * @returns The valid, normalised URI string.
44
+ * @throws `string` error message if the value is empty, malformed, or uses a disallowed scheme.
45
+ * @example schema.validate("https://www.google.com") // "https://www.google.com/"
46
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema/validate
47
+ */
26
48
  validate(unsafeValue) {
27
49
  const str = super.validate(unsafeValue);
28
50
  const uri = getURI(str);
@@ -32,15 +54,47 @@ export class URISchema extends StringSchema {
32
54
  throw `Invalid ${this.one} scheme`;
33
55
  return uri.href;
34
56
  }
57
+ /**
58
+ * Sanitize a string before validation by stripping all whitespace.
59
+ *
60
+ * - URIs never contain whitespace (a real space must be `%20`-encoded), so strip it entirely.
61
+ *
62
+ * @param str The raw string to sanitize.
63
+ * @returns The sanitized string with all whitespace removed.
64
+ * @example schema.sanitize(" https://a.com ") // "https://a.com"
65
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema/sanitize
66
+ */
35
67
  sanitize(str) {
36
68
  // URIs never contain whitespace (a real space must be `%20`-encoded), so strip it entirely.
37
69
  return sanitizeWord(str);
38
70
  }
71
+ /**
72
+ * Format a validated URI string for display.
73
+ *
74
+ * @param value The valid URI string to format.
75
+ * @returns The URI formatted as a human-readable string.
76
+ * @example schema.format("https://www.google.com/") // "www.google.com"
77
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URISchema/format
78
+ */
39
79
  format(value) {
40
80
  return formatURI(value, this.format);
41
81
  }
42
82
  }
43
- /** Valid URI string, e.g. `https://www.google.com` */
83
+ /**
84
+ * Valid URI string, e.g. `https://www.google.com`.
85
+ *
86
+ * *Factory for `URISchema`.*
87
+ *
88
+ * @example URI_SCHEMA.validate("https://www.google.com") // "https://www.google.com/"
89
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/URI_SCHEMA
90
+ */
44
91
  export const URI_SCHEMA = new URISchema({});
45
- /** Valid URI string, e.g. `https://www.google.com`, or `null` */
92
+ /**
93
+ * Valid URI string, e.g. `https://www.google.com`, or `null`.
94
+ *
95
+ * *Factory for `NullableSchema`.*
96
+ *
97
+ * @example NULLABLE_URI_SCHEMA.validate(null) // null
98
+ * @see https://dhoulb.github.io/shelving/schema/URISchema/NULLABLE_URI_SCHEMA
99
+ */
46
100
  export const NULLABLE_URI_SCHEMA = NULLABLE(URI_SCHEMA);
@@ -2,25 +2,88 @@ import { type URISchemes } from "../util/uri.js";
2
2
  import { type URLString } from "../util/url.js";
3
3
  import type { StringSchemaOptions } from "./StringSchema.js";
4
4
  import { StringSchema } from "./StringSchema.js";
5
- /** Allowed options for `URLSchema` */
5
+ /**
6
+ * Options for `URLSchema`.
7
+ *
8
+ * - `base` — base URL that relative URLs are resolved against.
9
+ * - `schemes` — whitelist of allowed URL schemes (defaults to HTTP/HTTPS).
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchemaOptions
12
+ */
6
13
  export interface URLSchemaOptions extends Omit<StringSchemaOptions, "input" | "min" | "max" | "rows"> {
7
14
  readonly base?: URL | URLString | undefined;
8
15
  readonly schemes?: URISchemes | undefined;
9
16
  }
10
17
  /**
11
- * Type of `StringSchema` that defines a valid URL string.
12
- * - Checks URL scheme against a whitelist (always), and checks URL domain against a whitelist (optional).
13
- * - URLs are limited to 512 characters, but generally these won't be data: URIs so this is a reasonable limit.
18
+ * Schema that defines a valid absolute or relative URL string.
19
+ *
20
+ * - Checks the URL scheme against a whitelist (always), and resolves relative URLs against `base` when set.
21
+ * - URLs are limited to 512 characters, but generally these won't be `data:` URIs so this is a reasonable limit.
22
+ *
23
+ * @example
24
+ * const schema = new URLSchema({ base: "https://example.com" });
25
+ * schema.validate("/page") // "https://example.com/page"
26
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema
14
27
  */
15
28
  export declare class URLSchema extends StringSchema {
29
+ /** Base URL that relative URLs are resolved against, or `undefined` when not set. */
16
30
  readonly base: URLString | undefined;
31
+ /** Whitelist of allowed URL schemes, e.g. `["https:", "http:"]`. */
17
32
  readonly schemes: URISchemes;
33
+ /**
34
+ * Create a new `URLSchema`.
35
+ *
36
+ * @param options Options for the schema (`base`, `schemes`, plus inherited string options like `one`, `title`, `value`).
37
+ */
18
38
  constructor({ one, title, base, schemes, ...options }: URLSchemaOptions);
39
+ /**
40
+ * Validate an unknown input value and return a normalised absolute URL string.
41
+ *
42
+ * - Override to validate the URL and check the scheme and host against the whitelists.
43
+ *
44
+ * @param unsafeValue The unknown input value to validate.
45
+ * @returns The valid, fully-resolved URL string.
46
+ * @throws `string` error message if the value is empty, malformed, or uses a disallowed scheme.
47
+ * @example schema.validate("https://www.google.com") // "https://www.google.com/"
48
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema/validate
49
+ */
19
50
  validate(unsafeValue: unknown): URLString;
51
+ /**
52
+ * Sanitize a string before validation by stripping all whitespace.
53
+ *
54
+ * - URLs never contain whitespace (a real space must be `%20`-encoded), so strip it entirely.
55
+ *
56
+ * @param str The raw string to sanitize.
57
+ * @returns The sanitized string with all whitespace removed.
58
+ * @example schema.sanitize(" https://a.com ") // "https://a.com"
59
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema/sanitize
60
+ */
20
61
  sanitize(str: string): string;
62
+ /**
63
+ * Format a validated URL string for display.
64
+ *
65
+ * @param value The valid URL string to format.
66
+ * @returns The URL formatted as a human-readable string.
67
+ * @example schema.format("https://www.google.com/") // "www.google.com"
68
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema/format
69
+ */
21
70
  format(value: string): string;
22
71
  }
23
- /** Valid URL string, e.g. `https://www.google.com` */
72
+ /**
73
+ * Valid URL string, e.g. `https://www.google.com`.
74
+ *
75
+ * *Factory for `URLSchema`.*
76
+ *
77
+ * @example URL_SCHEMA.validate("https://www.google.com") // "https://www.google.com/"
78
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URL_SCHEMA
79
+ */
24
80
  export declare const URL_SCHEMA: URLSchema;
25
- /** Valid URL string, e.g. `https://www.google.com`, or `null` */
81
+ /**
82
+ * Valid URL string, e.g. `https://www.google.com`, or `null`.
83
+ *
84
+ * *Factory for `NullableSchema`.*
85
+ *
86
+ * @example NULLABLE_URL_SCHEMA.validate(null) // null
87
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/NULLABLE_URL_SCHEMA
88
+ */
26
89
  export declare const NULLABLE_URL_SCHEMA: import("./NullableSchema.js").NullableSchema<string>;