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
@@ -3,7 +3,7 @@ import { NULLABLE } from "./NullableSchema.js";
3
3
  import { StringSchema } from "./StringSchema.js";
4
4
  const R_MATCH = /^[a-z0-9](?:[a-zA-Z0-9._+-]{0,62}[a-zA-Z0-9])?@(?:[a-z0-9](?:[a-z0-9-]{0,61}[a-z0-9])?\.){1,3}(?:[a-z]{2,63}|xn--[a-z0-9-]{0,58}[a-z0-9])$/;
5
5
  /**
6
- * Define a valid email address.
6
+ * Schema that defines a valid email address.
7
7
  *
8
8
  * - Falsy values are converted to `""` empty string.
9
9
  * - Total length must be 254 characters or fewer (in SMTP email is encoded with `<` and `>` to make 256 characters).
@@ -18,8 +18,18 @@ const R_MATCH = /^[a-z0-9](?:[a-zA-Z0-9._+-]{0,62}[a-zA-Z0-9])?@(?:[a-z0-9](?:[a
18
18
  * - Limited to `[a-z0-9]` with mid-word hyphens only.
19
19
  * - Up to 10 segments of up to 63 characters each, separated by `.`
20
20
  * - TLD is a segment of 2-63 characters, possibly in `xn--` international format.
21
+ *
22
+ * @example EMAIL.validate("Test@Test.com"); // Returns "test@test.com"
23
+ * @see https://dhoulb.github.io/shelving/schema/EmailSchema/EmailSchema
21
24
  */
22
25
  export class EmailSchema extends StringSchema {
26
+ /**
27
+ * Create a new `EmailSchema`.
28
+ *
29
+ * @param options Options for the schema (inherits `StringSchema` options except `type`, `min`, `max`, `match`, and `rows`, which are fixed for emails).
30
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"email address"`).
31
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Email"`).
32
+ */
23
33
  constructor({ one = "email address", title = "Email", ...options }) {
24
34
  super({
25
35
  one,
@@ -32,12 +42,33 @@ export class EmailSchema extends StringSchema {
32
42
  match: R_MATCH,
33
43
  });
34
44
  }
45
+ /**
46
+ * Sanitize the string into a valid email address.
47
+ *
48
+ * - Strips all whitespace (email addresses never contain whitespace).
49
+ * - Lowercases the result (RFC says addresses should be case-insensitive).
50
+ *
51
+ * @param str String to sanitize.
52
+ * @returns The sanitized, lowercased email address.
53
+ * @example EMAIL.sanitize(" Test@Test.com "); // Returns "test@test.com"
54
+ * @see https://dhoulb.github.io/shelving/schema/EmailSchema/EmailSchema/sanitize
55
+ */
35
56
  sanitize(str) {
36
57
  // Email addresses never contain whitespace, so strip it entirely, then lowercase (RFC says addresses should be case-insensitive).
37
58
  return sanitizeWord(str).toLowerCase();
38
59
  }
39
60
  }
40
- /** Valid email, e.g. `test@test.com` */
61
+ /**
62
+ * Valid email, e.g. `test@test.com`
63
+ *
64
+ * @example EMAIL.validate("test@test.com"); // Returns "test@test.com"
65
+ * @see https://dhoulb.github.io/shelving/schema/EmailSchema/EMAIL
66
+ */
41
67
  export const EMAIL = new EmailSchema({});
42
- /** Valid optional email, e.g. `test@test.com`, or `null` */
68
+ /**
69
+ * Valid optional email, e.g. `test@test.com`, or `null`
70
+ *
71
+ * @example NULLABLE_EMAIL.validate(null); // Returns null
72
+ * @see https://dhoulb.github.io/shelving/schema/EmailSchema/NULLABLE_EMAIL
73
+ */
43
74
  export const NULLABLE_EMAIL = NULLABLE(EMAIL);
@@ -1,17 +1,58 @@
1
1
  import { type ImmutableArray } from "../util/array.js";
2
2
  import { type Entity } from "../util/entity.js";
3
3
  import { StringSchema, type StringSchemaOptions } from "./StringSchema.js";
4
- /** Allowed options for `EntitySchema` with specific types */
4
+ /**
5
+ * Options for `EntitySchema`.
6
+ *
7
+ * - `types` — restrict the allowed entity types; any other type is rejected.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/EntitySchemaOptions
10
+ */
5
11
  export interface EntitySchemaOptions<T extends string> extends StringSchemaOptions {
6
12
  readonly types?: ImmutableArray<T> | undefined;
7
13
  }
8
- /** Validate a file name matching one or more extensions. */
14
+ /**
15
+ * Schema that validates an `Entity` string combining a type and ID, e.g. `challenge:a1b2c3`.
16
+ *
17
+ * - The input must contain both a type and an ID separated by `:`, otherwise it is rejected.
18
+ * - When `types` is set, the entity's type must be one of the allowed types.
19
+ *
20
+ * @example
21
+ * const schema = new EntitySchema({ types: ["challenge"] });
22
+ * schema.validate("challenge:a1b2c3"); // "challenge:a1b2c3"
23
+ *
24
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/EntitySchema
25
+ */
9
26
  export declare class EntitySchema<T extends string> extends StringSchema {
10
27
  readonly types: ImmutableArray<T> | undefined;
28
+ /**
29
+ * Create a new `EntitySchema`.
30
+ *
31
+ * @param options Options for the schema, including an optional `types` allow-list.
32
+ */
11
33
  constructor({ one, title, types, ...options }: EntitySchemaOptions<T>);
34
+ /**
35
+ * Validate an unknown value as an `Entity` string with a valid type and ID.
36
+ *
37
+ * @param unsafeValue The unknown input value to validate (defaults to this schema's `value`).
38
+ * @returns The valid `Entity` string.
39
+ * @throws `string` `"Must be entity"` if the value lacks a type and ID, or `"Invalid entity type"` if its type is not in the allowed `types`. Also throws any `string` from the underlying `StringSchema`.
40
+ * @example schema.validate("challenge:a1b2c3") // "challenge:a1b2c3"
41
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/EntitySchema/validate
42
+ */
12
43
  validate(unsafeValue?: unknown): Entity<T>;
13
44
  }
14
- /** Valid file, e.g. `challenge:a1b2c3` */
45
+ /**
46
+ * Valid entity, e.g. `challenge:a1b2c3`
47
+ *
48
+ * @example ENTITY.validate("challenge:a1b2c3") // "challenge:a1b2c3"
49
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/ENTITY
50
+ */
15
51
  export declare const ENTITY: EntitySchema<string>;
16
- /** Valid optional file, e.g. `file.txt`, or `null` */
52
+ /**
53
+ * Valid optional entity, e.g. `challenge:a1b2c3`, or `null`
54
+ *
55
+ * @example NULLABLE_ENTITY.validate("") // null
56
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/NULLABLE_ENTITY
57
+ */
17
58
  export declare const NULLABLE_ENTITY: import("./NullableSchema.js").NullableSchema<string>;
@@ -2,13 +2,38 @@ import { isArrayItem } from "../util/array.js";
2
2
  import { getEntity } from "../util/entity.js";
3
3
  import { NULLABLE } from "./NullableSchema.js";
4
4
  import { StringSchema } from "./StringSchema.js";
5
- /** Validate a file name matching one or more extensions. */
5
+ /**
6
+ * Schema that validates an `Entity` string combining a type and ID, e.g. `challenge:a1b2c3`.
7
+ *
8
+ * - The input must contain both a type and an ID separated by `:`, otherwise it is rejected.
9
+ * - When `types` is set, the entity's type must be one of the allowed types.
10
+ *
11
+ * @example
12
+ * const schema = new EntitySchema({ types: ["challenge"] });
13
+ * schema.validate("challenge:a1b2c3"); // "challenge:a1b2c3"
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/EntitySchema
16
+ */
6
17
  export class EntitySchema extends StringSchema {
7
18
  types;
19
+ /**
20
+ * Create a new `EntitySchema`.
21
+ *
22
+ * @param options Options for the schema, including an optional `types` allow-list.
23
+ */
8
24
  constructor({ one = "entity", title = "Entity", types, ...options }) {
9
25
  super({ one, title, ...options });
10
26
  this.types = types;
11
27
  }
28
+ /**
29
+ * Validate an unknown value as an `Entity` string with a valid type and ID.
30
+ *
31
+ * @param unsafeValue The unknown input value to validate (defaults to this schema's `value`).
32
+ * @returns The valid `Entity` string.
33
+ * @throws `string` `"Must be entity"` if the value lacks a type and ID, or `"Invalid entity type"` if its type is not in the allowed `types`. Also throws any `string` from the underlying `StringSchema`.
34
+ * @example schema.validate("challenge:a1b2c3") // "challenge:a1b2c3"
35
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/EntitySchema/validate
36
+ */
12
37
  validate(unsafeValue = this.value) {
13
38
  const entity = super.validate(unsafeValue);
14
39
  const [type] = getEntity(entity);
@@ -19,7 +44,17 @@ export class EntitySchema extends StringSchema {
19
44
  return entity;
20
45
  }
21
46
  }
22
- /** Valid file, e.g. `challenge:a1b2c3` */
47
+ /**
48
+ * Valid entity, e.g. `challenge:a1b2c3`
49
+ *
50
+ * @example ENTITY.validate("challenge:a1b2c3") // "challenge:a1b2c3"
51
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/ENTITY
52
+ */
23
53
  export const ENTITY = new EntitySchema({});
24
- /** Valid optional file, e.g. `file.txt`, or `null` */
54
+ /**
55
+ * Valid optional entity, e.g. `challenge:a1b2c3`, or `null`
56
+ *
57
+ * @example NULLABLE_ENTITY.validate("") // null
58
+ * @see https://dhoulb.github.io/shelving/schema/EntitySchema/NULLABLE_ENTITY
59
+ */
25
60
  export const NULLABLE_ENTITY = NULLABLE(ENTITY);
@@ -1,16 +1,57 @@
1
1
  import type { FileTypes } from "../util/file.js";
2
2
  import { StringSchema, type StringSchemaOptions } from "./StringSchema.js";
3
- /** Allowed options for `FileSchema` */
3
+ /**
4
+ * Allowed options for `FileSchema`.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/FileSchemaOptions
7
+ */
4
8
  export interface FileSchemaOptions extends StringSchemaOptions {
9
+ /** Set of allowed file extensions; when set, the file name's extension must be one of these. */
5
10
  readonly types?: FileTypes | undefined;
6
11
  }
7
- /** Validate a file name matching one or more extensions. */
12
+ /**
13
+ * Schema that validates a file name matching one or more extensions.
14
+ *
15
+ * - Requires the file name to have an extension.
16
+ * - When `types` is set, the extension must be one of the allowed `FileTypes`.
17
+ *
18
+ * @example FILE.validate("photo.jpg"); // Returns "photo.jpg"
19
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/FileSchema
20
+ */
8
21
  export declare class FileSchema extends StringSchema {
22
+ /** Set of allowed file extensions; when set, the file name's extension must be one of these. */
9
23
  readonly types: FileTypes | undefined;
24
+ /**
25
+ * Create a new `FileSchema`.
26
+ *
27
+ * @param options Options for the schema (inherits all `StringSchema` options plus `types`).
28
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"file"`).
29
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"File"`).
30
+ * @param options.types Set of allowed file extensions; when set, the extension must be one of these.
31
+ */
10
32
  constructor({ one, title, types, ...options }: FileSchemaOptions);
33
+ /**
34
+ * Validate an unknown value as a file name with a valid extension.
35
+ *
36
+ * @param unsafeValue Value to validate (defaults to this schema's `value`).
37
+ * @returns The validated file name.
38
+ * @throws `string` `` `Must have extension` `` if the file name has no extension, or `` `Invalid extension` `` if its extension isn't in `types`. Also throws the `string` messages from `StringSchema.validate()`.
39
+ * @example FILE.validate("photo.jpg"); // Returns "photo.jpg"
40
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/FileSchema/validate
41
+ */
11
42
  validate(unsafeValue?: unknown): string;
12
43
  }
13
- /** Valid file, e.g. `file.txt` */
44
+ /**
45
+ * Valid file, e.g. `file.txt`
46
+ *
47
+ * @example FILE.validate("file.txt"); // Returns "file.txt"
48
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/FILE
49
+ */
14
50
  export declare const FILE: FileSchema;
15
- /** Valid optional file, e.g. `file.txt`, or `null` */
51
+ /**
52
+ * Valid optional file, e.g. `file.txt`, or `null`
53
+ *
54
+ * @example NULLABLE_FILE.validate(null); // Returns null
55
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/NULLABLE_FILE
56
+ */
16
57
  export declare const NULLABLE_FILE: import("./NullableSchema.js").NullableSchema<string>;
@@ -2,13 +2,39 @@ import { getFileExtension } from "../util/file.js";
2
2
  import { isProp } from "../util/object.js";
3
3
  import { NULLABLE } from "./NullableSchema.js";
4
4
  import { StringSchema } from "./StringSchema.js";
5
- /** Validate a file name matching one or more extensions. */
5
+ /**
6
+ * Schema that validates a file name matching one or more extensions.
7
+ *
8
+ * - Requires the file name to have an extension.
9
+ * - When `types` is set, the extension must be one of the allowed `FileTypes`.
10
+ *
11
+ * @example FILE.validate("photo.jpg"); // Returns "photo.jpg"
12
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/FileSchema
13
+ */
6
14
  export class FileSchema extends StringSchema {
15
+ /** Set of allowed file extensions; when set, the file name's extension must be one of these. */
7
16
  types;
17
+ /**
18
+ * Create a new `FileSchema`.
19
+ *
20
+ * @param options Options for the schema (inherits all `StringSchema` options plus `types`).
21
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"file"`).
22
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"File"`).
23
+ * @param options.types Set of allowed file extensions; when set, the extension must be one of these.
24
+ */
8
25
  constructor({ one = "file", title = "File", types, ...options }) {
9
26
  super({ one, title, ...options });
10
27
  this.types = types;
11
28
  }
29
+ /**
30
+ * Validate an unknown value as a file name with a valid extension.
31
+ *
32
+ * @param unsafeValue Value to validate (defaults to this schema's `value`).
33
+ * @returns The validated file name.
34
+ * @throws `string` `` `Must have extension` `` if the file name has no extension, or `` `Invalid extension` `` if its extension isn't in `types`. Also throws the `string` messages from `StringSchema.validate()`.
35
+ * @example FILE.validate("photo.jpg"); // Returns "photo.jpg"
36
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/FileSchema/validate
37
+ */
12
38
  validate(unsafeValue = this.value) {
13
39
  const path = super.validate(unsafeValue);
14
40
  const extension = getFileExtension(path);
@@ -19,7 +45,17 @@ export class FileSchema extends StringSchema {
19
45
  return path;
20
46
  }
21
47
  }
22
- /** Valid file, e.g. `file.txt` */
48
+ /**
49
+ * Valid file, e.g. `file.txt`
50
+ *
51
+ * @example FILE.validate("file.txt"); // Returns "file.txt"
52
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/FILE
53
+ */
23
54
  export const FILE = new FileSchema({});
24
- /** Valid optional file, e.g. `file.txt`, or `null` */
55
+ /**
56
+ * Valid optional file, e.g. `file.txt`, or `null`
57
+ *
58
+ * @example NULLABLE_FILE.validate(null); // Returns null
59
+ * @see https://dhoulb.github.io/shelving/schema/FileSchema/NULLABLE_FILE
60
+ */
25
61
  export const NULLABLE_FILE = NULLABLE(FILE);
@@ -1,17 +1,46 @@
1
1
  import { StringSchema, type StringSchemaOptions } from "./StringSchema.js";
2
2
  /**
3
- * Define a valid database key.
3
+ * Schema that validates a database key string, stripping any non-alphanumeric characters.
4
4
  *
5
5
  * - Characters that are not a-z, A-Z, 0-9 are removed.
6
6
  * - Default minimum key length is 1 character.
7
7
  * - Default maximum key length is 32 characters.
8
8
  * - 32 characters is enough for UUIDs, as the 4 `-` hyphens are removed.
9
+ *
10
+ * @example
11
+ * const schema = new KeySchema({});
12
+ * schema.validate("a1b2-c3d4"); // "a1b2c3d4"
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/KeySchema
9
15
  */
10
16
  export declare class KeySchema extends StringSchema {
17
+ /**
18
+ * Create a new `KeySchema`.
19
+ *
20
+ * @param options Options for the schema (defaults `min` to `1` and `max` to `32`).
21
+ */
11
22
  constructor({ one, title, min, max, ...options }: StringSchemaOptions);
23
+ /**
24
+ * Sanitize the string by removing all characters that are not a-z, A-Z, or 0-9.
25
+ *
26
+ * @param str String to sanitize.
27
+ * @returns The sanitized key with non-alphanumeric characters removed.
28
+ * @example schema.sanitize("a1b2-c3d4") // "a1b2c3d4"
29
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/KeySchema/sanitize
30
+ */
12
31
  sanitize(str: string): string;
13
32
  }
14
- /** Valid database key. */
33
+ /**
34
+ * Valid database key.
35
+ *
36
+ * @example KEY.validate("a1b2c3") // "a1b2c3"
37
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/KEY
38
+ */
15
39
  export declare const KEY: KeySchema;
16
- /** Valid optional database key. */
40
+ /**
41
+ * Valid optional database key, or `null`.
42
+ *
43
+ * @example NULLABLE_KEY.validate("") // null
44
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/NULLABLE_KEY
45
+ */
17
46
  export declare const NULLABLE_KEY: import("./NullableSchema.js").NullableSchema<string>;
@@ -2,22 +2,51 @@ import { NULLABLE } from "./NullableSchema.js";
2
2
  import { StringSchema } from "./StringSchema.js";
3
3
  const R_NOT_CHAR = /[^a-zA-Z0-9]/g;
4
4
  /**
5
- * Define a valid database key.
5
+ * Schema that validates a database key string, stripping any non-alphanumeric characters.
6
6
  *
7
7
  * - Characters that are not a-z, A-Z, 0-9 are removed.
8
8
  * - Default minimum key length is 1 character.
9
9
  * - Default maximum key length is 32 characters.
10
10
  * - 32 characters is enough for UUIDs, as the 4 `-` hyphens are removed.
11
+ *
12
+ * @example
13
+ * const schema = new KeySchema({});
14
+ * schema.validate("a1b2-c3d4"); // "a1b2c3d4"
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/KeySchema
11
17
  */
12
18
  export class KeySchema extends StringSchema {
19
+ /**
20
+ * Create a new `KeySchema`.
21
+ *
22
+ * @param options Options for the schema (defaults `min` to `1` and `max` to `32`).
23
+ */
13
24
  constructor({ one = "key", title = "Key", min = 1, max = 32, ...options }) {
14
25
  super({ one, title, min, max, ...options });
15
26
  }
27
+ /**
28
+ * Sanitize the string by removing all characters that are not a-z, A-Z, or 0-9.
29
+ *
30
+ * @param str String to sanitize.
31
+ * @returns The sanitized key with non-alphanumeric characters removed.
32
+ * @example schema.sanitize("a1b2-c3d4") // "a1b2c3d4"
33
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/KeySchema/sanitize
34
+ */
16
35
  sanitize(str) {
17
36
  return str.replace(R_NOT_CHAR, "");
18
37
  }
19
38
  }
20
- /** Valid database key. */
39
+ /**
40
+ * Valid database key.
41
+ *
42
+ * @example KEY.validate("a1b2c3") // "a1b2c3"
43
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/KEY
44
+ */
21
45
  export const KEY = new KeySchema({ title: "ID" });
22
- /** Valid optional database key. */
46
+ /**
47
+ * Valid optional database key, or `null`.
48
+ *
49
+ * @example NULLABLE_KEY.validate("") // null
50
+ * @see https://dhoulb.github.io/shelving/schema/KeySchema/NULLABLE_KEY
51
+ */
23
52
  export const NULLABLE_KEY = NULLABLE(KEY);
@@ -1,16 +1,76 @@
1
1
  import type { Schema } from "./Schema.js";
2
2
  import { ThroughSchema, type ThroughSchemaOptions } from "./ThroughSchema.js";
3
- /** Allowed options for `NullableSchema` */
3
+ /**
4
+ * Allowed options for `NullableSchema`.
5
+ *
6
+ * - `value` — default value used when the input is `undefined` (defaults to `null`).
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NullableSchemaOptions
9
+ */
4
10
  export interface NullableSchemaOptions<T> extends ThroughSchemaOptions<T | null> {
5
11
  /** Default value (defaults to `null`). */
6
12
  readonly value?: T | null;
7
13
  }
8
- /** Validate a value of a specific type or `null`. */
14
+ /**
15
+ * Schema that wraps a source schema and additionally allows `null`.
16
+ *
17
+ * - Empty-ish inputs (`null`, `undefined`, `""`, `NaN`) validate to `null` instead of being passed to the source schema.
18
+ * - Any other value is delegated to the source schema for validation.
19
+ *
20
+ * @example
21
+ * const schema = new NullableSchema({ source: STRING });
22
+ * schema.validate(""); // Returns null
23
+ * schema.validate("abc"); // Returns "abc"
24
+ *
25
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NullableSchema
26
+ */
9
27
  export declare class NullableSchema<T> extends ThroughSchema<T | null> {
10
28
  readonly value: T | null;
29
+ /**
30
+ * Create a new `NullableSchema`.
31
+ *
32
+ * @param options Options for the schema, including the `source` schema to wrap.
33
+ * @param options.value Default value used when the input is `undefined` (defaults to `null`).
34
+ */
11
35
  constructor({ value, ...options }: NullableSchemaOptions<T>);
36
+ /**
37
+ * Validate an unknown value, returning `null` for empty-ish input or delegating to the source schema.
38
+ *
39
+ * @param unsafeValue Value to validate (defaults to this schema's `value`).
40
+ * @returns The valid value of type `T`, or `null` for empty-ish input.
41
+ * @throws `string` error message if the source schema rejects the value.
42
+ *
43
+ * @example
44
+ * NULLABLE(STRING).validate(""); // Returns null
45
+ *
46
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NullableSchema/validate
47
+ */
12
48
  validate(unsafeValue?: unknown): T | null;
49
+ /**
50
+ * Format a nullable value as a human-readable string for display.
51
+ *
52
+ * @param value Value to format, or `null`.
53
+ * @returns The formatted string, or `` `No ${one}` `` when the value is `null`.
54
+ *
55
+ * @example
56
+ * NULLABLE(STRING).format(null); // Returns "No string"
57
+ *
58
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NullableSchema/format
59
+ */
13
60
  format(value: T | null): string;
14
61
  }
15
- /** Create a new nullable schema from a source schema. */
16
- export declare const NULLABLE: <T>(source: Schema<T>) => NullableSchema<T>;
62
+ /**
63
+ * Create a `NullableSchema` that wraps a source schema and also allows `null`.
64
+ *
65
+ * *Factory for `NullableSchema`.*
66
+ *
67
+ * @param source Source schema to wrap.
68
+ * @returns A `NullableSchema` wrapping `source`.
69
+ *
70
+ * @example
71
+ * const schema = NULLABLE(STRING);
72
+ * schema.validate(""); // Returns null
73
+ *
74
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NULLABLE
75
+ */
76
+ export declare function NULLABLE<T>(source: Schema<T>): NullableSchema<T>;
@@ -1,17 +1,73 @@
1
1
  import { ThroughSchema } from "./ThroughSchema.js";
2
- /** Validate a value of a specific type or `null`. */
2
+ /**
3
+ * Schema that wraps a source schema and additionally allows `null`.
4
+ *
5
+ * - Empty-ish inputs (`null`, `undefined`, `""`, `NaN`) validate to `null` instead of being passed to the source schema.
6
+ * - Any other value is delegated to the source schema for validation.
7
+ *
8
+ * @example
9
+ * const schema = new NullableSchema({ source: STRING });
10
+ * schema.validate(""); // Returns null
11
+ * schema.validate("abc"); // Returns "abc"
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NullableSchema
14
+ */
3
15
  export class NullableSchema extends ThroughSchema {
16
+ /**
17
+ * Create a new `NullableSchema`.
18
+ *
19
+ * @param options Options for the schema, including the `source` schema to wrap.
20
+ * @param options.value Default value used when the input is `undefined` (defaults to `null`).
21
+ */
4
22
  constructor({ value = null, ...options }) {
5
23
  super({ value, ...options });
6
24
  }
25
+ /**
26
+ * Validate an unknown value, returning `null` for empty-ish input or delegating to the source schema.
27
+ *
28
+ * @param unsafeValue Value to validate (defaults to this schema's `value`).
29
+ * @returns The valid value of type `T`, or `null` for empty-ish input.
30
+ * @throws `string` error message if the source schema rejects the value.
31
+ *
32
+ * @example
33
+ * NULLABLE(STRING).validate(""); // Returns null
34
+ *
35
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NullableSchema/validate
36
+ */
7
37
  validate(unsafeValue = this.value) {
8
38
  if (unsafeValue === null || unsafeValue === undefined || unsafeValue === "" || Number.isNaN(unsafeValue))
9
39
  return null;
10
40
  return super.validate(unsafeValue);
11
41
  }
42
+ /**
43
+ * Format a nullable value as a human-readable string for display.
44
+ *
45
+ * @param value Value to format, or `null`.
46
+ * @returns The formatted string, or `` `No ${one}` `` when the value is `null`.
47
+ *
48
+ * @example
49
+ * NULLABLE(STRING).format(null); // Returns "No string"
50
+ *
51
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NullableSchema/format
52
+ */
12
53
  format(value) {
13
54
  return value === null ? `No ${this.source.one}` : super.format(value);
14
55
  }
15
56
  }
16
- /** Create a new nullable schema from a source schema. */
17
- export const NULLABLE = (source) => new NullableSchema({ source });
57
+ /**
58
+ * Create a `NullableSchema` that wraps a source schema and also allows `null`.
59
+ *
60
+ * *Factory for `NullableSchema`.*
61
+ *
62
+ * @param source Source schema to wrap.
63
+ * @returns A `NullableSchema` wrapping `source`.
64
+ *
65
+ * @example
66
+ * const schema = NULLABLE(STRING);
67
+ * schema.validate(""); // Returns null
68
+ *
69
+ * @see https://dhoulb.github.io/shelving/schema/NullableSchema/NULLABLE
70
+ */
71
+ export function NULLABLE(source) {
72
+ return new NullableSchema({ source });
73
+ }