shelving 1.236.0 → 1.236.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/api/cache/APICache.d.ts +69 -6
  2. package/api/cache/APICache.js +61 -5
  3. package/api/cache/EndpointCache.d.ts +75 -7
  4. package/api/cache/EndpointCache.js +75 -7
  5. package/api/endpoint/Endpoint.d.ts +141 -25
  6. package/api/endpoint/Endpoint.js +55 -9
  7. package/api/endpoint/util.d.ts +28 -6
  8. package/api/provider/APIProvider.d.ts +58 -14
  9. package/api/provider/APIProvider.js +24 -2
  10. package/api/provider/CachedAPIProvider.d.ts +58 -5
  11. package/api/provider/CachedAPIProvider.js +58 -6
  12. package/api/provider/ClientAPIProvider.d.ts +80 -4
  13. package/api/provider/ClientAPIProvider.js +75 -4
  14. package/api/provider/DebugAPIProvider.d.ts +40 -1
  15. package/api/provider/DebugAPIProvider.js +40 -1
  16. package/api/provider/JSONAPIProvider.d.ts +18 -2
  17. package/api/provider/JSONAPIProvider.js +18 -2
  18. package/api/provider/LoggingAPIProvider.d.ts +25 -2
  19. package/api/provider/LoggingAPIProvider.js +25 -2
  20. package/api/provider/MockAPIProvider.d.ts +72 -1
  21. package/api/provider/MockAPIProvider.js +60 -4
  22. package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
  23. package/api/provider/MockEndpointAPIProvider.js +9 -0
  24. package/api/provider/ThroughAPIProvider.d.ts +67 -1
  25. package/api/provider/ThroughAPIProvider.js +67 -1
  26. package/api/provider/ValidationAPIProvider.d.ts +32 -1
  27. package/api/provider/ValidationAPIProvider.js +32 -1
  28. package/api/provider/XMLAPIProvider.d.ts +18 -2
  29. package/api/provider/XMLAPIProvider.js +18 -2
  30. package/api/store/EndpointStore.d.ts +24 -1
  31. package/api/store/EndpointStore.js +24 -1
  32. package/bun/BunPostgreSQLProvider.d.ts +38 -0
  33. package/bun/BunPostgreSQLProvider.js +38 -2
  34. package/cloudflare/CloudflareD1Provider.d.ts +29 -2
  35. package/cloudflare/CloudflareD1Provider.js +29 -2
  36. package/cloudflare/CloudflareKVProvider.d.ts +115 -0
  37. package/cloudflare/CloudflareKVProvider.js +115 -0
  38. package/cloudflare/types.d.ts +41 -7
  39. package/db/cache/CollectionCache.d.ts +83 -7
  40. package/db/cache/CollectionCache.js +83 -7
  41. package/db/cache/DBCache.d.ts +93 -8
  42. package/db/cache/DBCache.js +85 -7
  43. package/db/collection/Collection.d.ts +103 -15
  44. package/db/collection/Collection.js +58 -6
  45. package/db/migrate/DBMigrator.d.ts +29 -1
  46. package/db/migrate/DBMigrator.js +20 -1
  47. package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
  48. package/db/migrate/PostgreSQLMigrator.js +8 -1
  49. package/db/migrate/SQLMigrator.d.ts +63 -4
  50. package/db/migrate/SQLMigrator.js +51 -1
  51. package/db/migrate/SQLiteMigrator.d.ts +8 -1
  52. package/db/migrate/SQLiteMigrator.js +8 -1
  53. package/db/provider/CacheDBProvider.d.ts +135 -1
  54. package/db/provider/CacheDBProvider.js +135 -1
  55. package/db/provider/ChangesDBProvider.d.ts +84 -3
  56. package/db/provider/ChangesDBProvider.js +77 -2
  57. package/db/provider/DBProvider.d.ts +148 -1
  58. package/db/provider/DBProvider.js +51 -1
  59. package/db/provider/DebugDBProvider.d.ts +118 -1
  60. package/db/provider/DebugDBProvider.js +118 -1
  61. package/db/provider/MemoryDBProvider.d.ts +262 -7
  62. package/db/provider/MemoryDBProvider.js +262 -7
  63. package/db/provider/MockDBProvider.d.ts +113 -2
  64. package/db/provider/MockDBProvider.js +106 -1
  65. package/db/provider/PostgreSQLProvider.d.ts +34 -2
  66. package/db/provider/PostgreSQLProvider.js +34 -4
  67. package/db/provider/SQLProvider.d.ts +250 -14
  68. package/db/provider/SQLProvider.js +237 -13
  69. package/db/provider/SQLiteProvider.d.ts +41 -1
  70. package/db/provider/SQLiteProvider.js +41 -4
  71. package/db/provider/ThroughDBProvider.d.ts +156 -1
  72. package/db/provider/ThroughDBProvider.js +156 -1
  73. package/db/provider/ValidationDBProvider.d.ts +120 -1
  74. package/db/provider/ValidationDBProvider.js +120 -1
  75. package/db/store/ItemStore.d.ts +38 -2
  76. package/db/store/ItemStore.js +38 -2
  77. package/db/store/QueryStore.d.ts +64 -6
  78. package/db/store/QueryStore.js +64 -6
  79. package/error/BaseError.d.ts +27 -2
  80. package/error/BaseError.js +14 -0
  81. package/error/Errors.d.ts +12 -1
  82. package/error/Errors.js +12 -1
  83. package/error/NetworkError.d.ts +13 -1
  84. package/error/NetworkError.js +13 -1
  85. package/error/RequestError.d.ts +90 -7
  86. package/error/RequestError.js +90 -7
  87. package/error/RequiredError.d.ts +11 -1
  88. package/error/RequiredError.js +11 -1
  89. package/error/ResponseError.d.ts +19 -2
  90. package/error/ResponseError.js +19 -2
  91. package/error/UnexpectedError.d.ts +14 -1
  92. package/error/UnexpectedError.js +14 -1
  93. package/error/UnimplementedError.d.ts +13 -1
  94. package/error/UnimplementedError.js +13 -1
  95. package/error/ValueError.d.ts +14 -1
  96. package/error/ValueError.js +14 -1
  97. package/extract/DirectoryExtractor.d.ts +35 -1
  98. package/extract/DirectoryExtractor.js +30 -0
  99. package/extract/Extractor.d.ts +21 -2
  100. package/extract/Extractor.js +7 -1
  101. package/extract/FileExtractor.d.ts +18 -0
  102. package/extract/FileExtractor.js +18 -0
  103. package/extract/IndexExtractor.d.ts +36 -1
  104. package/extract/IndexExtractor.js +31 -0
  105. package/extract/MarkupExtractor.d.ts +15 -0
  106. package/extract/MarkupExtractor.js +15 -0
  107. package/extract/MergingExtractor.d.ts +36 -1
  108. package/extract/MergingExtractor.js +31 -0
  109. package/extract/ModuleExtractor.d.ts +25 -1
  110. package/extract/ModuleExtractor.js +20 -0
  111. package/extract/PackageExtractor.d.ts +36 -1
  112. package/extract/PackageExtractor.js +31 -0
  113. package/extract/ThroughExtractor.d.ts +22 -1
  114. package/extract/ThroughExtractor.js +22 -1
  115. package/extract/TypescriptExtractor.d.ts +21 -0
  116. package/extract/TypescriptExtractor.js +28 -3
  117. package/firestore/client/FirestoreClientProvider.d.ts +129 -4
  118. package/firestore/client/FirestoreClientProvider.js +129 -4
  119. package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
  120. package/firestore/lite/FirestoreLiteProvider.js +128 -3
  121. package/firestore/server/FirestoreServerProvider.d.ts +129 -2
  122. package/firestore/server/FirestoreServerProvider.js +129 -2
  123. package/markup/MarkupParser.d.ts +57 -10
  124. package/markup/MarkupParser.js +50 -9
  125. package/markup/MarkupRule.d.ts +34 -1
  126. package/markup/Parser.d.ts +18 -0
  127. package/markup/Parser.js +11 -0
  128. package/markup/rule/blockquote.d.ts +3 -0
  129. package/markup/rule/blockquote.js +3 -0
  130. package/markup/rule/code.d.ts +3 -0
  131. package/markup/rule/code.js +3 -0
  132. package/markup/rule/fenced.d.ts +3 -0
  133. package/markup/rule/fenced.js +3 -0
  134. package/markup/rule/heading.d.ts +3 -0
  135. package/markup/rule/heading.js +3 -0
  136. package/markup/rule/index.d.ts +16 -3
  137. package/markup/rule/index.js +16 -3
  138. package/markup/rule/inline.d.ts +4 -1
  139. package/markup/rule/inline.js +5 -2
  140. package/markup/rule/linebreak.d.ts +3 -0
  141. package/markup/rule/linebreak.js +3 -0
  142. package/markup/rule/link.d.ts +6 -0
  143. package/markup/rule/link.js +6 -0
  144. package/markup/rule/ordered.d.ts +3 -0
  145. package/markup/rule/ordered.js +3 -0
  146. package/markup/rule/paragraph.d.ts +3 -0
  147. package/markup/rule/paragraph.js +3 -0
  148. package/markup/rule/separator.d.ts +3 -0
  149. package/markup/rule/separator.js +3 -0
  150. package/markup/rule/table.d.ts +3 -0
  151. package/markup/rule/table.js +3 -0
  152. package/markup/rule/unordered.d.ts +3 -0
  153. package/markup/rule/unordered.js +3 -0
  154. package/markup/util/regexp.d.ts +80 -3
  155. package/markup/util/regexp.js +44 -0
  156. package/package.json +1 -1
  157. package/react/createAPIContext.d.ts +15 -0
  158. package/react/createAPIContext.js +10 -0
  159. package/react/createDBContext.d.ts +15 -0
  160. package/react/createDBContext.js +10 -0
  161. package/react/useInstance.d.ts +11 -0
  162. package/react/useInstance.js +11 -0
  163. package/react/useLazy.d.ts +11 -0
  164. package/react/useMap.d.ts +14 -1
  165. package/react/useMap.js +14 -1
  166. package/react/useReduce.d.ts +12 -0
  167. package/react/useSequence.d.ts +10 -0
  168. package/react/useSequence.js +10 -0
  169. package/react/useStore.d.ts +16 -1
  170. package/schema/AddressSchema.d.ts +41 -4
  171. package/schema/AddressSchema.js +36 -3
  172. package/schema/ArraySchema.d.ts +48 -6
  173. package/schema/ArraySchema.js +40 -5
  174. package/schema/BooleanSchema.d.ts +59 -3
  175. package/schema/BooleanSchema.js +51 -2
  176. package/schema/ChoiceSchema.d.ts +61 -7
  177. package/schema/ChoiceSchema.js +44 -2
  178. package/schema/ColorSchema.d.ts +41 -8
  179. package/schema/ColorSchema.js +36 -7
  180. package/schema/CountrySchema.d.ts +44 -4
  181. package/schema/CountrySchema.js +39 -3
  182. package/schema/CurrencyAmountSchema.d.ts +104 -8
  183. package/schema/CurrencyAmountSchema.js +91 -4
  184. package/schema/CurrencyCodeSchema.d.ts +56 -4
  185. package/schema/CurrencyCodeSchema.js +49 -3
  186. package/schema/DataSchema.d.ts +101 -10
  187. package/schema/DataSchema.js +87 -8
  188. package/schema/DateSchema.d.ts +73 -4
  189. package/schema/DateSchema.js +57 -2
  190. package/schema/DateTimeSchema.d.ts +40 -3
  191. package/schema/DateTimeSchema.js +40 -3
  192. package/schema/DictionarySchema.d.ts +54 -4
  193. package/schema/DictionarySchema.js +47 -3
  194. package/schema/EmailSchema.d.ts +34 -3
  195. package/schema/EmailSchema.js +34 -3
  196. package/schema/EntitySchema.d.ts +45 -4
  197. package/schema/EntitySchema.js +38 -3
  198. package/schema/FileSchema.d.ts +45 -4
  199. package/schema/FileSchema.js +39 -3
  200. package/schema/KeySchema.d.ts +32 -3
  201. package/schema/KeySchema.js +32 -3
  202. package/schema/NullableSchema.d.ts +64 -4
  203. package/schema/NullableSchema.js +59 -3
  204. package/schema/NumberSchema.d.ts +137 -12
  205. package/schema/NumberSchema.js +127 -11
  206. package/schema/OptionalSchema.d.ts +61 -4
  207. package/schema/OptionalSchema.js +56 -4
  208. package/schema/PasswordSchema.d.ts +37 -1
  209. package/schema/PasswordSchema.js +32 -1
  210. package/schema/PhoneSchema.d.ts +40 -4
  211. package/schema/PhoneSchema.js +35 -3
  212. package/schema/RequiredSchema.d.ts +39 -3
  213. package/schema/RequiredSchema.js +41 -3
  214. package/schema/Schema.d.ts +67 -7
  215. package/schema/Schema.js +42 -6
  216. package/schema/SlugSchema.d.ts +37 -5
  217. package/schema/SlugSchema.js +37 -5
  218. package/schema/StringSchema.d.ts +124 -19
  219. package/schema/StringSchema.js +107 -17
  220. package/schema/ThroughSchema.d.ts +35 -2
  221. package/schema/ThroughSchema.js +30 -1
  222. package/schema/TimeSchema.d.ts +43 -3
  223. package/schema/TimeSchema.js +43 -3
  224. package/schema/URISchema.d.ts +67 -6
  225. package/schema/URISchema.js +60 -6
  226. package/schema/URLSchema.d.ts +69 -6
  227. package/schema/URLSchema.js +61 -6
  228. package/schema/UUIDSchema.d.ts +37 -4
  229. package/schema/UUIDSchema.js +37 -4
  230. package/sequence/DeferredSequence.d.ts +49 -3
  231. package/sequence/DeferredSequence.js +39 -3
  232. package/sequence/InspectSequence.d.ts +59 -5
  233. package/sequence/InspectSequence.js +59 -5
  234. package/sequence/LazySequence.d.ts +30 -2
  235. package/sequence/LazySequence.js +30 -2
  236. package/sequence/Sequence.d.ts +11 -0
  237. package/sequence/Sequence.js +10 -0
  238. package/sequence/ThroughSequence.d.ts +15 -0
  239. package/sequence/ThroughSequence.js +15 -0
  240. package/store/ArrayStore.d.ts +74 -11
  241. package/store/ArrayStore.js +74 -11
  242. package/store/BooleanStore.d.ts +19 -2
  243. package/store/BooleanStore.js +19 -2
  244. package/store/BusyStore.d.ts +13 -1
  245. package/store/BusyStore.js +13 -1
  246. package/store/DataStore.d.ts +118 -15
  247. package/store/DataStore.js +118 -15
  248. package/store/DictionaryStore.d.ts +66 -8
  249. package/store/DictionaryStore.js +66 -8
  250. package/store/FetchStore.d.ts +43 -6
  251. package/store/FetchStore.js +36 -5
  252. package/store/PathStore.d.ts +44 -5
  253. package/store/PathStore.js +44 -5
  254. package/store/PayloadFetchStore.d.ts +16 -1
  255. package/store/PayloadFetchStore.js +9 -1
  256. package/store/Store.d.ts +85 -16
  257. package/store/Store.js +52 -10
  258. package/store/URLStore.d.ts +173 -15
  259. package/store/URLStore.js +173 -15
  260. package/test/basics.d.ts +70 -0
  261. package/test/basics.js +60 -0
  262. package/test/people.d.ts +45 -0
  263. package/test/people.js +35 -0
  264. package/test/util.d.ts +30 -3
  265. package/test/util.js +30 -3
  266. package/ui/app/App.d.ts +14 -2
  267. package/ui/app/App.js +9 -2
  268. package/ui/app/App.tsx +14 -2
  269. package/ui/block/Address.d.ts +45 -3
  270. package/ui/block/Address.js +30 -3
  271. package/ui/block/Address.tsx +46 -3
  272. package/ui/block/Block.d.ts +23 -1
  273. package/ui/block/Block.js +13 -1
  274. package/ui/block/Block.tsx +23 -1
  275. package/ui/block/Blockquote.d.ts +21 -0
  276. package/ui/block/Blockquote.js +16 -0
  277. package/ui/block/Blockquote.tsx +22 -0
  278. package/ui/block/Caption.d.ts +21 -1
  279. package/ui/block/Caption.js +16 -1
  280. package/ui/block/Caption.tsx +22 -1
  281. package/ui/block/Card.d.ts +6 -0
  282. package/ui/block/Card.js +1 -0
  283. package/ui/block/Card.tsx +6 -0
  284. package/ui/block/Definitions.d.ts +18 -0
  285. package/ui/block/Definitions.js +13 -0
  286. package/ui/block/Definitions.tsx +19 -0
  287. package/ui/block/Divider.d.ts +21 -0
  288. package/ui/block/Divider.js +16 -0
  289. package/ui/block/Divider.tsx +22 -0
  290. package/ui/block/Heading.d.ts +20 -1
  291. package/ui/block/Heading.js +15 -0
  292. package/ui/block/Heading.tsx +21 -1
  293. package/ui/block/Image.d.ts +23 -0
  294. package/ui/block/Image.js +18 -0
  295. package/ui/block/Image.tsx +24 -0
  296. package/ui/block/Label.d.ts +18 -3
  297. package/ui/block/Label.js +13 -3
  298. package/ui/block/Label.tsx +18 -3
  299. package/ui/block/List.d.ts +30 -0
  300. package/ui/block/List.js +25 -0
  301. package/ui/block/List.tsx +32 -0
  302. package/ui/block/Panel.d.ts +13 -1
  303. package/ui/block/Panel.js +3 -0
  304. package/ui/block/Panel.tsx +13 -1
  305. package/ui/block/Paragraph.d.ts +23 -0
  306. package/ui/block/Paragraph.js +18 -0
  307. package/ui/block/Paragraph.tsx +24 -0
  308. package/ui/block/Preformatted.d.ts +20 -0
  309. package/ui/block/Preformatted.js +15 -0
  310. package/ui/block/Preformatted.tsx +21 -0
  311. package/ui/block/Prose.d.ts +14 -1
  312. package/ui/block/Prose.js +9 -1
  313. package/ui/block/Prose.tsx +14 -1
  314. package/ui/block/Section.d.ts +69 -6
  315. package/ui/block/Section.js +59 -6
  316. package/ui/block/Section.tsx +70 -6
  317. package/ui/block/Subheading.d.ts +20 -1
  318. package/ui/block/Subheading.js +15 -0
  319. package/ui/block/Subheading.tsx +21 -1
  320. package/ui/block/Table.d.ts +20 -0
  321. package/ui/block/Table.js +15 -0
  322. package/ui/block/Table.tsx +21 -0
  323. package/ui/block/Title.d.ts +20 -1
  324. package/ui/block/Title.js +15 -0
  325. package/ui/block/Title.tsx +21 -1
  326. package/ui/block/Video.d.ts +50 -3
  327. package/ui/block/Video.js +30 -3
  328. package/ui/block/Video.tsx +50 -3
  329. package/ui/dialog/Dialog.d.ts +28 -1
  330. package/ui/dialog/Dialog.js +18 -1
  331. package/ui/dialog/Dialog.tsx +28 -1
  332. package/ui/dialog/Dialogs.d.ts +53 -6
  333. package/ui/dialog/Dialogs.js +43 -6
  334. package/ui/dialog/Dialogs.tsx +53 -6
  335. package/ui/dialog/Modal.d.ts +13 -0
  336. package/ui/dialog/Modal.js +8 -0
  337. package/ui/dialog/Modal.tsx +13 -0
  338. package/ui/docs/DocumentationButtons.d.ts +5 -1
  339. package/ui/docs/DocumentationButtons.tsx +5 -1
  340. package/ui/docs/DocumentationCard.d.ts +6 -1
  341. package/ui/docs/DocumentationCard.js +6 -1
  342. package/ui/docs/DocumentationCard.tsx +6 -1
  343. package/ui/docs/DocumentationKind.d.ts +13 -1
  344. package/ui/docs/DocumentationKind.js +8 -0
  345. package/ui/docs/DocumentationKind.tsx +13 -1
  346. package/ui/docs/DocumentationPage.d.ts +6 -1
  347. package/ui/docs/DocumentationPage.js +6 -1
  348. package/ui/docs/DocumentationPage.tsx +6 -1
  349. package/ui/docs/DocumentationSignatures.d.ts +10 -1
  350. package/ui/docs/DocumentationSignatures.js +5 -0
  351. package/ui/docs/DocumentationSignatures.tsx +10 -1
  352. package/ui/form/ArrayInput.d.ts +15 -0
  353. package/ui/form/ArrayInput.tsx +15 -0
  354. package/ui/form/ArrayRadioInputs.d.ts +10 -0
  355. package/ui/form/ArrayRadioInputs.js +5 -0
  356. package/ui/form/ArrayRadioInputs.tsx +10 -0
  357. package/ui/form/Button.d.ts +19 -3
  358. package/ui/form/Button.js +14 -2
  359. package/ui/form/Button.tsx +19 -3
  360. package/ui/form/ButtonInput.d.ts +14 -1
  361. package/ui/form/ButtonInput.js +9 -1
  362. package/ui/form/ButtonInput.tsx +14 -1
  363. package/ui/form/ButtonInputPopover.d.ts +10 -0
  364. package/ui/form/ButtonInputPopover.js +5 -0
  365. package/ui/form/ButtonInputPopover.tsx +10 -0
  366. package/ui/form/ButtonPopover.d.ts +11 -1
  367. package/ui/form/ButtonPopover.js +6 -1
  368. package/ui/form/ButtonPopover.tsx +11 -1
  369. package/ui/form/CheckboxInput.d.ts +14 -1
  370. package/ui/form/CheckboxInput.js +9 -1
  371. package/ui/form/CheckboxInput.tsx +14 -1
  372. package/ui/form/ChoiceRadioInputs.d.ts +10 -0
  373. package/ui/form/ChoiceRadioInputs.tsx +10 -0
  374. package/ui/form/Clickable.d.ts +45 -5
  375. package/ui/form/Clickable.js +30 -3
  376. package/ui/form/Clickable.tsx +45 -5
  377. package/ui/form/DataInput.d.ts +14 -0
  378. package/ui/form/DataInput.tsx +14 -0
  379. package/ui/form/DateInput.d.ts +14 -0
  380. package/ui/form/DateInput.js +9 -0
  381. package/ui/form/DateInput.tsx +14 -0
  382. package/ui/form/DictionaryInput.d.ts +15 -0
  383. package/ui/form/DictionaryInput.tsx +15 -0
  384. package/ui/form/Field.d.ts +5 -0
  385. package/ui/form/Field.tsx +5 -0
  386. package/ui/form/FileInput.d.ts +14 -0
  387. package/ui/form/FileInput.js +9 -0
  388. package/ui/form/FileInput.tsx +14 -0
  389. package/ui/form/Form.d.ts +55 -6
  390. package/ui/form/Form.js +35 -3
  391. package/ui/form/Form.tsx +55 -6
  392. package/ui/form/FormContext.d.ts +24 -3
  393. package/ui/form/FormContext.js +5 -1
  394. package/ui/form/FormContext.tsx +24 -3
  395. package/ui/form/FormFields.d.ts +15 -2
  396. package/ui/form/FormFields.js +15 -2
  397. package/ui/form/FormFields.tsx +15 -2
  398. package/ui/form/FormFooter.d.ts +13 -3
  399. package/ui/form/FormFooter.js +8 -3
  400. package/ui/form/FormFooter.tsx +13 -3
  401. package/ui/form/FormInput.d.ts +21 -2
  402. package/ui/form/FormInput.js +16 -2
  403. package/ui/form/FormInput.tsx +21 -2
  404. package/ui/form/FormMessage.d.ts +8 -1
  405. package/ui/form/FormMessage.js +8 -1
  406. package/ui/form/FormMessage.tsx +8 -2
  407. package/ui/form/FormNotice.d.ts +8 -1
  408. package/ui/form/FormNotice.js +8 -1
  409. package/ui/form/FormNotice.tsx +8 -2
  410. package/ui/form/FormNotify.d.ts +8 -1
  411. package/ui/form/FormNotify.js +8 -1
  412. package/ui/form/FormNotify.tsx +8 -2
  413. package/ui/form/FormStore.d.ts +50 -6
  414. package/ui/form/FormStore.js +50 -6
  415. package/ui/form/FormStore.tsx +50 -6
  416. package/ui/form/Input.d.ts +65 -1
  417. package/ui/form/Input.js +60 -0
  418. package/ui/form/Input.tsx +77 -1
  419. package/ui/form/NumberInput.d.ts +14 -0
  420. package/ui/form/NumberInput.js +9 -0
  421. package/ui/form/NumberInput.tsx +14 -0
  422. package/ui/form/OutputInput.d.ts +13 -1
  423. package/ui/form/OutputInput.js +8 -1
  424. package/ui/form/OutputInput.tsx +13 -1
  425. package/ui/form/Popover.d.ts +18 -2
  426. package/ui/form/Popover.js +8 -2
  427. package/ui/form/Popover.tsx +18 -2
  428. package/ui/form/Progress.d.ts +26 -2
  429. package/ui/form/Progress.js +16 -2
  430. package/ui/form/Progress.tsx +26 -2
  431. package/ui/form/QueryInput.d.ts +14 -5
  432. package/ui/form/QueryInput.js +9 -5
  433. package/ui/form/QueryInput.tsx +14 -5
  434. package/ui/form/RadioInput.d.ts +14 -1
  435. package/ui/form/RadioInput.js +9 -1
  436. package/ui/form/RadioInput.tsx +14 -1
  437. package/ui/form/SchemaInput.d.ts +138 -7
  438. package/ui/form/SchemaInput.js +79 -4
  439. package/ui/form/SchemaInput.tsx +138 -7
  440. package/ui/form/SelectInput.d.ts +14 -0
  441. package/ui/form/SelectInput.tsx +14 -0
  442. package/ui/form/SubmitButton.d.ts +14 -1
  443. package/ui/form/SubmitButton.js +9 -1
  444. package/ui/form/SubmitButton.tsx +14 -1
  445. package/ui/form/TextInput.d.ts +15 -0
  446. package/ui/form/TextInput.js +10 -0
  447. package/ui/form/TextInput.tsx +15 -0
  448. package/ui/inline/Code.d.ts +29 -0
  449. package/ui/inline/Code.js +24 -0
  450. package/ui/inline/Code.tsx +31 -0
  451. package/ui/inline/Deleted.d.ts +23 -0
  452. package/ui/inline/Deleted.js +18 -0
  453. package/ui/inline/Deleted.tsx +24 -0
  454. package/ui/inline/Emphasis.d.ts +23 -0
  455. package/ui/inline/Emphasis.js +18 -0
  456. package/ui/inline/Emphasis.tsx +24 -0
  457. package/ui/inline/Inserted.d.ts +23 -0
  458. package/ui/inline/Inserted.js +18 -0
  459. package/ui/inline/Inserted.tsx +24 -0
  460. package/ui/inline/Link.d.ts +23 -0
  461. package/ui/inline/Link.js +18 -0
  462. package/ui/inline/Link.tsx +24 -0
  463. package/ui/inline/Mark.d.ts +23 -0
  464. package/ui/inline/Mark.js +18 -0
  465. package/ui/inline/Mark.tsx +24 -0
  466. package/ui/inline/Small.d.ts +23 -0
  467. package/ui/inline/Small.js +18 -0
  468. package/ui/inline/Small.tsx +24 -0
  469. package/ui/inline/Strong.d.ts +23 -0
  470. package/ui/inline/Strong.js +18 -0
  471. package/ui/inline/Strong.tsx +24 -0
  472. package/ui/inline/Subscript.d.ts +23 -0
  473. package/ui/inline/Subscript.js +18 -0
  474. package/ui/inline/Subscript.tsx +24 -0
  475. package/ui/inline/Superscript.d.ts +23 -0
  476. package/ui/inline/Superscript.js +18 -0
  477. package/ui/inline/Superscript.tsx +24 -0
  478. package/ui/inline/When.d.ts +42 -3
  479. package/ui/inline/When.js +27 -3
  480. package/ui/inline/When.tsx +42 -3
  481. package/ui/layout/CenteredLayout.d.ts +12 -1
  482. package/ui/layout/CenteredLayout.js +7 -1
  483. package/ui/layout/CenteredLayout.tsx +12 -1
  484. package/ui/layout/Layout.d.ts +12 -3
  485. package/ui/layout/Layout.js +12 -3
  486. package/ui/layout/Layout.ts +12 -3
  487. package/ui/layout/SidebarLayout.d.ts +12 -0
  488. package/ui/layout/SidebarLayout.js +7 -0
  489. package/ui/layout/SidebarLayout.tsx +12 -0
  490. package/ui/menu/Menu.d.ts +22 -0
  491. package/ui/menu/Menu.js +12 -0
  492. package/ui/menu/Menu.tsx +22 -0
  493. package/ui/misc/Catcher.d.ts +77 -5
  494. package/ui/misc/Catcher.js +47 -5
  495. package/ui/misc/Catcher.tsx +77 -5
  496. package/ui/misc/Loading.d.ts +20 -0
  497. package/ui/misc/Loading.js +15 -0
  498. package/ui/misc/Loading.tsx +20 -0
  499. package/ui/misc/Mapper.d.ts +13 -1
  500. package/ui/misc/Mapper.js +4 -0
  501. package/ui/misc/Mapper.tsx +13 -1
  502. package/ui/misc/Markup.d.ts +9 -1
  503. package/ui/misc/Markup.js +4 -0
  504. package/ui/misc/Markup.tsx +9 -1
  505. package/ui/misc/MetaContext.d.ts +24 -7
  506. package/ui/misc/MetaContext.js +19 -6
  507. package/ui/misc/MetaContext.tsx +24 -7
  508. package/ui/misc/StatusIcon.d.ts +16 -1
  509. package/ui/misc/StatusIcon.js +11 -1
  510. package/ui/misc/StatusIcon.tsx +16 -1
  511. package/ui/misc/Tag.d.ts +21 -0
  512. package/ui/misc/Tag.js +11 -0
  513. package/ui/misc/Tag.tsx +21 -0
  514. package/ui/notice/Message.d.ts +27 -1
  515. package/ui/notice/Message.js +22 -1
  516. package/ui/notice/Message.tsx +27 -1
  517. package/ui/notice/Notice.d.ts +24 -0
  518. package/ui/notice/Notice.js +19 -0
  519. package/ui/notice/Notice.tsx +24 -0
  520. package/ui/notice/NoticeStore.d.ts +30 -2
  521. package/ui/notice/NoticeStore.js +30 -2
  522. package/ui/notice/NoticeStore.ts +30 -2
  523. package/ui/notice/Notices.d.ts +11 -1
  524. package/ui/notice/Notices.js +6 -1
  525. package/ui/notice/Notices.tsx +11 -1
  526. package/ui/notice/NoticesStore.d.ts +23 -3
  527. package/ui/notice/NoticesStore.js +23 -3
  528. package/ui/notice/NoticesStore.ts +23 -3
  529. package/ui/page/HTML.d.ts +13 -2
  530. package/ui/page/HTML.js +8 -2
  531. package/ui/page/HTML.tsx +13 -2
  532. package/ui/page/Head.d.ts +5 -1
  533. package/ui/page/Head.js +5 -1
  534. package/ui/page/Head.tsx +5 -1
  535. package/ui/page/Page.d.ts +12 -1
  536. package/ui/page/Page.js +7 -1
  537. package/ui/page/Page.tsx +12 -1
  538. package/ui/router/Navigation.d.ts +11 -0
  539. package/ui/router/Navigation.js +6 -0
  540. package/ui/router/Navigation.tsx +11 -0
  541. package/ui/router/NavigationContext.d.ts +14 -2
  542. package/ui/router/NavigationContext.js +14 -2
  543. package/ui/router/NavigationContext.tsx +14 -2
  544. package/ui/router/NavigationStore.d.ts +29 -1
  545. package/ui/router/NavigationStore.js +29 -1
  546. package/ui/router/NavigationStore.tsx +29 -1
  547. package/ui/router/Router.d.ts +12 -1
  548. package/ui/router/Router.js +7 -1
  549. package/ui/router/Router.tsx +12 -1
  550. package/ui/router/Routes.d.ts +14 -4
  551. package/ui/router/Routes.tsx +14 -4
  552. package/ui/style/Color.d.ts +15 -2
  553. package/ui/style/Color.js +5 -0
  554. package/ui/style/Color.tsx +15 -2
  555. package/ui/style/Flex.d.ts +41 -4
  556. package/ui/style/Flex.js +26 -3
  557. package/ui/style/Flex.tsx +41 -4
  558. package/ui/style/Gap.d.ts +18 -3
  559. package/ui/style/Gap.js +8 -1
  560. package/ui/style/Gap.tsx +18 -3
  561. package/ui/style/Padding.d.ts +18 -3
  562. package/ui/style/Padding.js +8 -1
  563. package/ui/style/Padding.tsx +18 -3
  564. package/ui/style/Scroll.d.ts +36 -1
  565. package/ui/style/Scroll.js +26 -1
  566. package/ui/style/Scroll.tsx +37 -1
  567. package/ui/style/Space.d.ts +18 -3
  568. package/ui/style/Space.js +8 -1
  569. package/ui/style/Space.tsx +18 -3
  570. package/ui/style/Status.d.ts +23 -7
  571. package/ui/style/Status.js +13 -5
  572. package/ui/style/Status.tsx +23 -7
  573. package/ui/style/Tint.d.ts +7 -1
  574. package/ui/style/Tint.js +7 -1
  575. package/ui/style/Tint.tsx +7 -1
  576. package/ui/style/Typography.d.ts +38 -6
  577. package/ui/style/Typography.js +8 -0
  578. package/ui/style/Typography.tsx +38 -6
  579. package/ui/style/Width.d.ts +18 -1
  580. package/ui/style/Width.js +8 -0
  581. package/ui/style/Width.tsx +18 -1
  582. package/ui/transition/CollapseTransition.d.ts +13 -0
  583. package/ui/transition/CollapseTransition.js +8 -0
  584. package/ui/transition/CollapseTransition.tsx +13 -0
  585. package/ui/transition/FadeTransition.d.ts +13 -0
  586. package/ui/transition/FadeTransition.js +8 -0
  587. package/ui/transition/FadeTransition.tsx +13 -0
  588. package/ui/transition/HorizontalTransition.d.ts +13 -0
  589. package/ui/transition/HorizontalTransition.js +8 -0
  590. package/ui/transition/HorizontalTransition.tsx +13 -0
  591. package/ui/transition/Transition.d.ts +12 -4
  592. package/ui/transition/Transition.js +7 -3
  593. package/ui/transition/Transition.tsx +12 -4
  594. package/ui/transition/VerticalTransition.d.ts +13 -0
  595. package/ui/transition/VerticalTransition.js +8 -0
  596. package/ui/transition/VerticalTransition.tsx +13 -0
  597. package/ui/transition/util.d.ts +16 -6
  598. package/ui/transition/util.js +7 -1
  599. package/ui/transition/util.tsx +16 -6
  600. package/ui/tree/TreeApp.d.ts +11 -0
  601. package/ui/tree/TreeApp.js +6 -0
  602. package/ui/tree/TreeApp.tsx +11 -0
  603. package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
  604. package/ui/tree/TreeBreadcrumbs.js +6 -0
  605. package/ui/tree/TreeBreadcrumbs.tsx +11 -0
  606. package/ui/tree/TreeButton.d.ts +9 -1
  607. package/ui/tree/TreeButton.js +4 -0
  608. package/ui/tree/TreeButton.tsx +9 -1
  609. package/ui/tree/TreeCard.d.ts +8 -1
  610. package/ui/tree/TreeCard.js +8 -1
  611. package/ui/tree/TreeCard.tsx +8 -1
  612. package/ui/tree/TreeCards.d.ts +16 -1
  613. package/ui/tree/TreeCards.js +11 -1
  614. package/ui/tree/TreeCards.tsx +16 -1
  615. package/ui/tree/TreeContext.d.ts +18 -1
  616. package/ui/tree/TreeContext.js +18 -1
  617. package/ui/tree/TreeContext.tsx +18 -1
  618. package/ui/tree/TreeMenu.d.ts +28 -1
  619. package/ui/tree/TreeMenu.js +23 -1
  620. package/ui/tree/TreeMenu.tsx +28 -1
  621. package/ui/tree/TreePage.d.ts +6 -0
  622. package/ui/tree/TreePage.js +6 -0
  623. package/ui/tree/TreePage.tsx +6 -0
  624. package/ui/tree/TreeRouter.d.ts +17 -2
  625. package/ui/tree/TreeRouter.js +12 -2
  626. package/ui/tree/TreeRouter.tsx +17 -2
  627. package/ui/tree/TreeSidebar.d.ts +11 -0
  628. package/ui/tree/TreeSidebar.js +6 -0
  629. package/ui/tree/TreeSidebar.tsx +11 -0
  630. package/ui/util/context.d.ts +13 -1
  631. package/ui/util/context.ts +13 -1
  632. package/ui/util/css.d.ts +17 -4
  633. package/ui/util/css.js +5 -1
  634. package/ui/util/css.ts +17 -4
  635. package/ui/util/event.d.ts +9 -1
  636. package/ui/util/event.js +9 -1
  637. package/ui/util/event.ts +9 -1
  638. package/ui/util/focus.d.ts +24 -5
  639. package/ui/util/focus.js +24 -5
  640. package/ui/util/focus.ts +24 -5
  641. package/ui/util/meta.d.ts +113 -21
  642. package/ui/util/meta.js +73 -13
  643. package/ui/util/meta.ts +113 -21
  644. package/ui/util/notice.d.ts +98 -10
  645. package/ui/util/notice.js +93 -9
  646. package/ui/util/notice.ts +98 -10
  647. package/ui/util/props.d.ts +10 -2
  648. package/ui/util/props.ts +10 -2
  649. package/ui/util/refresh.d.ts +10 -1
  650. package/ui/util/refresh.js +10 -1
  651. package/ui/util/refresh.ts +10 -1
  652. package/ui/util/scroll.d.ts +20 -4
  653. package/ui/util/scroll.js +20 -4
  654. package/ui/util/scroll.ts +20 -4
  655. package/ui/util/state.d.ts +19 -5
  656. package/ui/util/state.js +19 -5
  657. package/ui/util/state.ts +19 -5
  658. package/util/ansi.d.ts +118 -0
  659. package/util/ansi.js +116 -0
  660. package/util/array.d.ts +349 -33
  661. package/util/array.js +284 -27
  662. package/util/async.d.ts +87 -9
  663. package/util/async.js +80 -8
  664. package/util/base64.d.ts +56 -6
  665. package/util/base64.js +56 -6
  666. package/util/boolean.d.ts +75 -10
  667. package/util/boolean.js +75 -10
  668. package/util/buffer.d.ts +26 -3
  669. package/util/buffer.js +21 -3
  670. package/util/bytes.d.ts +42 -4
  671. package/util/bytes.js +32 -2
  672. package/util/class.d.ts +59 -8
  673. package/util/class.js +44 -5
  674. package/util/color.d.ts +131 -13
  675. package/util/color.js +126 -12
  676. package/util/constants.d.ts +132 -19
  677. package/util/constants.js +132 -19
  678. package/util/crypto.d.ts +17 -1
  679. package/util/crypto.js +17 -1
  680. package/util/currency.d.ts +38 -4
  681. package/util/currency.js +33 -3
  682. package/util/data.d.ts +139 -24
  683. package/util/data.js +39 -5
  684. package/util/date.d.ts +152 -18
  685. package/util/date.js +147 -17
  686. package/util/debug.d.ts +112 -11
  687. package/util/debug.js +114 -11
  688. package/util/dictionary.d.ts +205 -24
  689. package/util/dictionary.js +162 -17
  690. package/util/diff.d.ts +22 -3
  691. package/util/diff.js +11 -1
  692. package/util/dispose.d.ts +74 -2
  693. package/util/dispose.js +74 -2
  694. package/util/duration.d.ts +278 -16
  695. package/util/duration.js +267 -15
  696. package/util/element.d.ts +59 -6
  697. package/util/element.js +32 -3
  698. package/util/entity.d.ts +39 -6
  699. package/util/entity.js +5 -1
  700. package/util/entry.d.ts +56 -9
  701. package/util/entry.js +32 -4
  702. package/util/env.d.ts +26 -4
  703. package/util/env.js +26 -4
  704. package/util/equal.d.ts +181 -17
  705. package/util/equal.js +181 -17
  706. package/util/error.d.ts +57 -5
  707. package/util/error.js +52 -4
  708. package/util/file.d.ts +30 -7
  709. package/util/file.js +25 -6
  710. package/util/filter.d.ts +36 -4
  711. package/util/filter.js +31 -3
  712. package/util/focus.d.ts +9 -1
  713. package/util/focus.js +9 -1
  714. package/util/format.d.ts +186 -22
  715. package/util/format.js +135 -14
  716. package/util/function.d.ts +66 -11
  717. package/util/function.js +31 -4
  718. package/util/geo.d.ts +60 -8
  719. package/util/geo.js +45 -5
  720. package/util/hash.d.ts +21 -2
  721. package/util/hash.js +21 -2
  722. package/util/http.d.ts +134 -19
  723. package/util/http.js +94 -11
  724. package/util/hydrate.d.ts +19 -2
  725. package/util/hydrate.js +12 -1
  726. package/util/item.d.ts +70 -11
  727. package/util/item.js +35 -4
  728. package/util/iterate.d.ts +109 -13
  729. package/util/iterate.js +86 -10
  730. package/util/jwt.d.ts +47 -13
  731. package/util/jwt.js +36 -12
  732. package/util/lazy.d.ts +9 -6
  733. package/util/link.d.ts +10 -3
  734. package/util/link.js +5 -2
  735. package/util/log.d.ts +26 -3
  736. package/util/log.js +26 -3
  737. package/util/map.d.ts +144 -19
  738. package/util/map.js +101 -11
  739. package/util/merge.d.ts +23 -1
  740. package/util/merge.js +6 -0
  741. package/util/null.d.ts +102 -13
  742. package/util/null.js +92 -11
  743. package/util/number.d.ts +125 -8
  744. package/util/number.js +120 -7
  745. package/util/object.d.ts +263 -31
  746. package/util/object.js +154 -17
  747. package/util/path.d.ts +91 -15
  748. package/util/path.js +60 -9
  749. package/util/query.d.ts +78 -9
  750. package/util/query.js +58 -6
  751. package/util/random.d.ts +67 -4
  752. package/util/random.js +67 -4
  753. package/util/regexp.d.ts +201 -24
  754. package/util/regexp.js +106 -11
  755. package/util/sequence.d.ts +66 -8
  756. package/util/sequence.js +52 -7
  757. package/util/serialise.d.ts +7 -1
  758. package/util/serialise.js +7 -1
  759. package/util/set.d.ts +103 -13
  760. package/util/set.js +83 -9
  761. package/util/sort.d.ts +32 -7
  762. package/util/sort.js +26 -6
  763. package/util/source.d.ts +28 -3
  764. package/util/source.js +22 -2
  765. package/util/start.d.ts +62 -5
  766. package/util/start.js +47 -2
  767. package/util/string.d.ts +209 -25
  768. package/util/string.js +188 -21
  769. package/util/template.d.ts +58 -9
  770. package/util/template.js +45 -6
  771. package/util/timeout.d.ts +35 -11
  772. package/util/timeout.js +35 -11
  773. package/util/transform.d.ts +87 -8
  774. package/util/transform.js +75 -7
  775. package/util/tree.d.ts +39 -6
  776. package/util/tree.js +3 -0
  777. package/util/types.d.ts +8 -2
  778. package/util/undefined.d.ts +47 -6
  779. package/util/undefined.js +47 -6
  780. package/util/units.d.ts +107 -12
  781. package/util/units.js +97 -12
  782. package/util/update.d.ts +36 -4
  783. package/util/update.js +24 -2
  784. package/util/uri.d.ts +138 -6
  785. package/util/uri.js +44 -3
  786. package/util/url.d.ts +152 -7
  787. package/util/url.js +136 -5
  788. package/util/uuid.d.ts +28 -3
  789. package/util/uuid.js +28 -3
  790. package/util/validate.d.ts +85 -20
  791. package/util/validate.js +61 -12
  792. package/util/xml.d.ts +9 -10
  793. package/util/xml.js +9 -10
@@ -1,21 +1,98 @@
1
1
  import type { NamedRegExp, NamedRegExpData, PossibleRegExp } from "../../util/regexp.js";
2
+ /**
3
+ * Regular expression source matching block content — the shortest run of any character.
4
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_CONTENT_REGEXP
5
+ */
2
6
  export declare const BLOCK_CONTENT_REGEXP = "[\\s\\S]*?";
7
+ /**
8
+ * Regular expression source matching block whitespace — any single whitespace character.
9
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_SPACE_REGEXP
10
+ */
3
11
  export declare const BLOCK_SPACE_REGEXP = "\\s";
12
+ /**
13
+ * Regular expression source matching the start of a block — the start of the string, or one linebreak.
14
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_START_REGEXP
15
+ */
4
16
  export declare const BLOCK_START_REGEXP = "(?:\\s*\\n|^)";
17
+ /**
18
+ * Regular expression source matching the end of a block — the end of the string, or two linebreaks, with trailing whitespace trimmed.
19
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_END_REGEXP
20
+ */
5
21
  export declare const BLOCK_END_REGEXP = "\\s*(?:$|\\n\\s*\\n)";
22
+ /**
23
+ * Regular expression source matching line content — the shortest run of any character except newline.
24
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_CONTENT_REGEXP
25
+ */
6
26
  export declare const LINE_CONTENT_REGEXP = "[^\\n]*?";
27
+ /**
28
+ * Regular expression source matching line whitespace — any single whitespace character except newline.
29
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_SPACE_REGEXP
30
+ */
7
31
  export declare const LINE_SPACE_REGEXP = "[^\\n\\S]";
32
+ /**
33
+ * Regular expression source matching the start of a line — the start of the string, or one linebreak.
34
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_START_REGEXP
35
+ */
8
36
  export declare const LINE_START_REGEXP = "(?:\\s*\\n|^)";
37
+ /**
38
+ * Regular expression source matching the end of a line — the end of the string, or one linebreak, with trailing whitespace trimmed.
39
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_END_REGEXP
40
+ */
9
41
  export declare const LINE_END_REGEXP = "[^\\n\\S]*(?:\\s*\\n|$)";
42
+ /**
43
+ * Regular expression source matching word content — at least one letter or number character.
44
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/WORD_CONTENT_REGEXP
45
+ */
10
46
  export declare const WORD_CONTENT_REGEXP = "[\\p{L}\\p{N}]+";
47
+ /**
48
+ * Regular expression source matching the start of a word — a zero-width assertion that the previous character is not a letter or number.
49
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/WORD_START_REGEXP
50
+ */
11
51
  export declare const WORD_START_REGEXP = "(?<![\\p{L}\\p{N}])";
52
+ /**
53
+ * Regular expression source matching the end of a word — a zero-width assertion that the next character is not a letter or number.
54
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/WORD_END_REGEXP
55
+ */
12
56
  export declare const WORD_END_REGEXP = "(?![\\p{L}\\p{N}])";
13
- /** Create regular expression that matches a block of content. */
57
+ /**
58
+ * Create a `RegExp` that matches a block of content, wrapped between block-start and block-end boundaries.
59
+ *
60
+ * *Factory for `RegExp`.*
61
+ *
62
+ * @param pattern The content pattern to match between the boundaries (a `NamedRegExp` to type the captured data).
63
+ * @param start The leading boundary pattern (defaults to `BLOCK_START_REGEXP`).
64
+ * @param end The trailing boundary pattern (defaults to `BLOCK_END_REGEXP`).
65
+ * @returns A `RegExp` (a `NamedRegExp<T>` when the content pattern names its capture groups).
66
+ * @example createBlockRegExp("(?<quote>>[\\s\\S]*?)")
67
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/createBlockRegExp
68
+ */
14
69
  export declare function createBlockRegExp<T extends NamedRegExpData>(pattern: NamedRegExp<T>, start?: PossibleRegExp, end?: PossibleRegExp): NamedRegExp<T>;
15
70
  export declare function createBlockRegExp<T extends NamedRegExpData | undefined = undefined>(pattern: PossibleRegExp, start?: PossibleRegExp, end?: PossibleRegExp): T extends NamedRegExpData ? NamedRegExp<T> : RegExp;
16
- /** Create regular expression that matches a line of content. */
71
+ /**
72
+ * Create a `RegExp` that matches a single line of content, wrapped between line-start and line-end boundaries.
73
+ *
74
+ * *Factory for `RegExp`.*
75
+ *
76
+ * @param pattern The content pattern to match between the boundaries (a `NamedRegExp` to type the captured data).
77
+ * @param start The leading boundary pattern (defaults to `LINE_START_REGEXP`).
78
+ * @param end The trailing boundary pattern (defaults to `LINE_END_REGEXP`).
79
+ * @returns A `RegExp` (a `NamedRegExp<T>` when the content pattern names its capture groups).
80
+ * @example createLineRegExp("(?<prefix>#{1,6})")
81
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/createLineRegExp
82
+ */
17
83
  export declare function createLineRegExp<T extends NamedRegExpData>(pattern: NamedRegExp<T>, start?: PossibleRegExp, end?: PossibleRegExp): T extends NamedRegExpData ? NamedRegExp<T> : RegExp;
18
84
  export declare function createLineRegExp<T extends NamedRegExpData | undefined = undefined>(pattern: PossibleRegExp, start?: PossibleRegExp, end?: PossibleRegExp): T extends NamedRegExpData ? NamedRegExp<T> : RegExp;
19
- /** Create regular expression that matches a word of content. */
85
+ /**
86
+ * Create a `RegExp` that matches a word of content, wrapped between word-start and word-end boundaries.
87
+ *
88
+ * *Factory for `RegExp`.*
89
+ *
90
+ * @param pattern The content pattern to match between the boundaries (a `NamedRegExp` to type the captured data).
91
+ * @param start The leading boundary pattern (defaults to `WORD_START_REGEXP`).
92
+ * @param end The trailing boundary pattern (defaults to `WORD_END_REGEXP`).
93
+ * @returns A `RegExp` (a `NamedRegExp<T>` when the content pattern names its capture groups).
94
+ * @example createWordRegExp("(?<char>[*_])+")
95
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/createWordRegExp
96
+ */
20
97
  export declare function createWordRegExp<T extends NamedRegExpData>(pattern: NamedRegExp<T>, start?: PossibleRegExp, end?: PossibleRegExp): T extends NamedRegExpData ? NamedRegExp<T> : RegExp;
21
98
  export declare function createWordRegExp<T extends NamedRegExpData | undefined = undefined>(pattern: PossibleRegExp, start?: PossibleRegExp, end?: PossibleRegExp): T extends NamedRegExpData ? NamedRegExp<T> : RegExp;
@@ -1,14 +1,58 @@
1
1
  import { getRegExpSource } from "../../util/regexp.js";
2
+ /**
3
+ * Regular expression source matching block content — the shortest run of any character.
4
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_CONTENT_REGEXP
5
+ */
2
6
  export const BLOCK_CONTENT_REGEXP = "[\\s\\S]*?"; // Block content (shortest run of any character).
7
+ /**
8
+ * Regular expression source matching block whitespace — any single whitespace character.
9
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_SPACE_REGEXP
10
+ */
3
11
  export const BLOCK_SPACE_REGEXP = "\\s"; // Block whitespace (run of any whitespace character).
12
+ /**
13
+ * Regular expression source matching the start of a block — the start of the string, or one linebreak.
14
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_START_REGEXP
15
+ */
4
16
  export const BLOCK_START_REGEXP = "(?:\\s*\\n|^)"; // Start of block (start of string, or one linebreak).
17
+ /**
18
+ * Regular expression source matching the end of a block — the end of the string, or two linebreaks, with trailing whitespace trimmed.
19
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/BLOCK_END_REGEXP
20
+ */
5
21
  export const BLOCK_END_REGEXP = "\\s*(?:$|\\n\\s*\\n)"; // End of block (end of string, or two linebreaks, trimmed whitespace).
22
+ /**
23
+ * Regular expression source matching line content — the shortest run of any character except newline.
24
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_CONTENT_REGEXP
25
+ */
6
26
  export const LINE_CONTENT_REGEXP = "[^\\n]*?"; // Line content (shortest run of any character except newline).
27
+ /**
28
+ * Regular expression source matching line whitespace — any single whitespace character except newline.
29
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_SPACE_REGEXP
30
+ */
7
31
  export const LINE_SPACE_REGEXP = "[^\\n\\S]"; // Line whitespace (run of any whitespace character except newline).
32
+ /**
33
+ * Regular expression source matching the start of a line — the start of the string, or one linebreak.
34
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_START_REGEXP
35
+ */
8
36
  export const LINE_START_REGEXP = BLOCK_START_REGEXP; // Start of line (start of string, or one linebreak).
37
+ /**
38
+ * Regular expression source matching the end of a line — the end of the string, or one linebreak, with trailing whitespace trimmed.
39
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/LINE_END_REGEXP
40
+ */
9
41
  export const LINE_END_REGEXP = `${LINE_SPACE_REGEXP}*(?:\\s*\\n|$)`; // End of line (end of string, or one linebreak, trimmed whitespace).
42
+ /**
43
+ * Regular expression source matching word content — at least one letter or number character.
44
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/WORD_CONTENT_REGEXP
45
+ */
10
46
  export const WORD_CONTENT_REGEXP = "[\\p{L}\\p{N}]+"; // Word content (at least one character that is a letter or number).
47
+ /**
48
+ * Regular expression source matching the start of a word — a zero-width assertion that the previous character is not a letter or number.
49
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/WORD_START_REGEXP
50
+ */
11
51
  export const WORD_START_REGEXP = "(?<![\\p{L}\\p{N}])"; // Start of word (previous character is not a letter or number).
52
+ /**
53
+ * Regular expression source matching the end of a word — a zero-width assertion that the next character is not a letter or number.
54
+ * @see https://dhoulb.github.io/shelving/markup/util/regexp/WORD_END_REGEXP
55
+ */
12
56
  export const WORD_END_REGEXP = "(?![\\p{L}\\p{N}])"; // End of word (next character is not a letter or number).
13
57
  export function createBlockRegExp(content, start = BLOCK_START_REGEXP, end = BLOCK_END_REGEXP) {
14
58
  return new RegExp(`${start}${getRegExpSource(content)}${end}`, "u");
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shelving",
3
- "version": "1.236.0",
3
+ "version": "1.236.2",
4
4
  "author": "Dave Houlbrooke <dave@shax.com>",
5
5
  "repository": {
6
6
  "type": "git",
@@ -3,6 +3,11 @@ import type { Endpoint } from "../api/endpoint/Endpoint.js";
3
3
  import type { APIProvider } from "../api/provider/APIProvider.js";
4
4
  import type { EndpointStore } from "../api/store/EndpointStore.js";
5
5
  import type { Nullish } from "../util/null.js";
6
+ /**
7
+ * Bundle of hooks and a provider component returned by `createAPIContext()`.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/react/createAPIContext/APIContext
10
+ */
6
11
  export interface APIContext<P, R> {
7
12
  /** Get an `EndpointStore` for the specified endpoint/payload in the current `APIProvider` context. */
8
13
  useAPI<PP extends P, RR extends R>(this: void, endpoint: Endpoint<PP, RR>, payload: PP): EndpointStore<PP, RR>;
@@ -17,6 +22,16 @@ export interface APIContext<P, R> {
17
22
  * - Allows React elements to call `useAPI()` to access endpoint stores in an API provider.
18
23
  * - Each mounted `APIContext` gets its own in-memory store cache.
19
24
  *
25
+ * @param provider `APIProvider` the created context resolves endpoint stores against.
26
+ * @returns `APIContext` bundle containing the `useAPI()` hook and the `<APIContext>` wrapper component.
27
+ *
20
28
  * @todo Use and integreate our `EndpointCache` functionality and use it in this.
29
+ *
30
+ * @example
31
+ * ```tsx
32
+ * const { useAPI, APIContext } = createAPIContext(provider);
33
+ * ```
34
+ *
35
+ * @see https://dhoulb.github.io/shelving/react/createAPIContext
21
36
  */
22
37
  export declare function createAPIContext<P, R>(provider: APIProvider<P, R>): APIContext<P, R>;
@@ -9,7 +9,17 @@ import { useStore } from "./useStore.js";
9
9
  * - Allows React elements to call `useAPI()` to access endpoint stores in an API provider.
10
10
  * - Each mounted `APIContext` gets its own in-memory store cache.
11
11
  *
12
+ * @param provider `APIProvider` the created context resolves endpoint stores against.
13
+ * @returns `APIContext` bundle containing the `useAPI()` hook and the `<APIContext>` wrapper component.
14
+ *
12
15
  * @todo Use and integreate our `EndpointCache` functionality and use it in this.
16
+ *
17
+ * @example
18
+ * ```tsx
19
+ * const { useAPI, APIContext } = createAPIContext(provider);
20
+ * ```
21
+ *
22
+ * @see https://dhoulb.github.io/shelving/react/createAPIContext
13
23
  */
14
24
  export function createAPIContext(provider) {
15
25
  const CacheContext = createContext(undefined);
@@ -7,6 +7,11 @@ import type { Data } from "../util/data.js";
7
7
  import type { Identifier, Item } from "../util/item.js";
8
8
  import type { Nullish } from "../util/null.js";
9
9
  import type { Query } from "../util/query.js";
10
+ /**
11
+ * Bundle of hooks and a provider component returned by `createDBContext()`.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/react/createDBContext/DBContext
14
+ */
10
15
  export interface DBContext<I extends Identifier, T extends Data> {
11
16
  /** Get an `ItemStore` for the specified collection item in the current `DataProvider` context and subscribe to any changes in it. */
12
17
  useItem<II extends I, TT extends T>(collection: Nullish<Collection<string, II, TT>>, //
@@ -27,5 +32,15 @@ export interface DBContext<I extends Identifier, T extends Data> {
27
32
  * Create a data context
28
33
  * - Allows React elements to call `useItem()` and `useQuery()` to access items/queries in a database provider.
29
34
  * - If the database has a `CacheDBProvider` in its chain then in-memory data will be used in the returned stores.
35
+ *
36
+ * @param provider `DBProvider` the created context resolves item and query stores against.
37
+ * @returns `DBContext` bundle containing the `useItem()` and `useQuery()` hooks and the `<DBContext>` wrapper component.
38
+ *
39
+ * @example
40
+ * ```tsx
41
+ * const { useItem, useQuery, DBContext } = createDBContext(provider);
42
+ * ```
43
+ *
44
+ * @see https://dhoulb.github.io/shelving/react/createDBContext
30
45
  */
31
46
  export declare function createDBContext<I extends Identifier, T extends Data>(provider: DBProvider<I, T>): DBContext<I, T>;
@@ -8,6 +8,16 @@ import { useStore } from "./useStore.js";
8
8
  * Create a data context
9
9
  * - Allows React elements to call `useItem()` and `useQuery()` to access items/queries in a database provider.
10
10
  * - If the database has a `CacheDBProvider` in its chain then in-memory data will be used in the returned stores.
11
+ *
12
+ * @param provider `DBProvider` the created context resolves item and query stores against.
13
+ * @returns `DBContext` bundle containing the `useItem()` and `useQuery()` hooks and the `<DBContext>` wrapper component.
14
+ *
15
+ * @example
16
+ * ```tsx
17
+ * const { useItem, useQuery, DBContext } = createDBContext(provider);
18
+ * ```
19
+ *
20
+ * @see https://dhoulb.github.io/shelving/react/createDBContext
11
21
  */
12
22
  export function createDBContext(provider) {
13
23
  const CacheContext = createContext(undefined);
@@ -3,5 +3,16 @@ import type { Arguments } from "../util/function.js";
3
3
  * Use a memoised class instance.
4
4
  * - Creates a new instance of `Constructor` using `args`
5
5
  * - Returns same instance for as long as `args` is equal to previous `args`.
6
+ *
7
+ * @param Constructor Class to instantiate with `args`.
8
+ * @param args Constructor arguments — a change in `args` constructs a fresh instance.
9
+ * @returns The memoised instance, reconstructed only when `args` changes.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const cache = useInstance(DBCache, provider);
14
+ * ```
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/react/useInstance
6
17
  */
7
18
  export declare function useInstance<T, A extends Arguments = []>(Constructor: new (...a: A) => T, ...args: A): T;
@@ -4,6 +4,17 @@ import { isArrayEqual } from "../util/equal.js";
4
4
  * Use a memoised class instance.
5
5
  * - Creates a new instance of `Constructor` using `args`
6
6
  * - Returns same instance for as long as `args` is equal to previous `args`.
7
+ *
8
+ * @param Constructor Class to instantiate with `args`.
9
+ * @param args Constructor arguments — a change in `args` constructs a fresh instance.
10
+ * @returns The memoised instance, reconstructed only when `args` changes.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const cache = useInstance(DBCache, provider);
15
+ * ```
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/react/useInstance
7
18
  */
8
19
  export function useInstance(Constructor, ...args) {
9
20
  const _internals = (useRef(undefined).current ??= {
@@ -4,6 +4,17 @@ import { type Lazy } from "../util/lazy.js";
4
4
  * Use a memoised value with lazy initialisation.
5
5
  * - Returns `value` (if not a function) or the result of calling `value(...args)` (if a function).
6
6
  * - Returns same `value` for as long as `args` is equal to previous `args`.
7
+ *
8
+ * @param value Value to return, or a function called with `args` to lazily produce it.
9
+ * @param args Arguments passed to `value()` when it is a function — a change in `args` recomputes the value.
10
+ * @returns The memoised value, recomputed only when `args` changes.
11
+ *
12
+ * @example
13
+ * ```tsx
14
+ * const config = useLazy(() => expensiveConfig(id), id);
15
+ * ```
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/react/useLazy
7
18
  */
8
19
  export declare function useLazy<T, A extends Arguments = []>(value: (...args: A) => T, ...args: A): T;
9
20
  export declare function useLazy<T>(value: T, ...args: Arguments): T;
package/react/useMap.d.ts CHANGED
@@ -1,2 +1,15 @@
1
- /** Create a mutable Map that persists for the lifetime of the component. */
1
+ /**
2
+ * Create a mutable Map that persists for the lifetime of the component.
3
+ * - The same `Map` instance is returned on every render; mutations are not reactive (won't trigger a re-render).
4
+ *
5
+ * @returns Stable `Map` instance that lives for the lifetime of the component.
6
+ *
7
+ * @example
8
+ * ```tsx
9
+ * const cache = useMap<string, number>();
10
+ * cache.set("a", 1);
11
+ * ```
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/react/useMap
14
+ */
2
15
  export declare function useMap<K, V>(): Map<K, V>;
package/react/useMap.js CHANGED
@@ -1,5 +1,18 @@
1
1
  import { useRef } from "react";
2
- /** Create a mutable Map that persists for the lifetime of the component. */
2
+ /**
3
+ * Create a mutable Map that persists for the lifetime of the component.
4
+ * - The same `Map` instance is returned on every render; mutations are not reactive (won't trigger a re-render).
5
+ *
6
+ * @returns Stable `Map` instance that lives for the lifetime of the component.
7
+ *
8
+ * @example
9
+ * ```tsx
10
+ * const cache = useMap<string, number>();
11
+ * cache.set("a", 1);
12
+ * ```
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/react/useMap
15
+ */
3
16
  export function useMap() {
4
17
  return (useRef(undefined).current ??= new Map());
5
18
  }
@@ -5,6 +5,18 @@ import type { Arguments } from "../util/function.js";
5
5
  * - First argument `previous` is either `undefined` (on first render) or the value returned by `reduce()` on the previous render (on subsequent renders).
6
6
  * - `reduce()` can implement custom logic to decide whether to return the previous value or a new one.
7
7
  * - Returns whatever `reduce()` returns on this render.
8
+ *
9
+ * @param reduce Reducer called on every render with the previous result and `args`; returns this render's value.
10
+ * @param args Additional arguments forwarded to `reduce()` after `previous`.
11
+ * @returns Whatever `reduce()` returned on this render.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * // Keep the highest count ever seen.
16
+ * const max = useReduce((previous = 0, next: number) => Math.max(previous, next), count);
17
+ * ```
18
+ *
19
+ * @see https://dhoulb.github.io/shelving/react/useReduce
8
20
  */
9
21
  export declare function useReduce<T, A extends Arguments = []>(reduce: (previous: T | undefined, ...a: A) => T, ...args: A): T;
10
22
  export declare function useReduce<T, A extends Arguments = []>(reduce: (previous: T | undefined, ...a: A) => T | undefined, ...args: A): T | undefined;
@@ -1,8 +1,18 @@
1
1
  /**
2
2
  * Subscribe to an async iterable for the lifetime of the component.
3
+ * - Re-renders the component with each value yielded by the sequence.
3
4
  *
4
5
  * @param sequence An object implementing the `AsyncIterable` interface.
5
6
  * - Subscription is recreated every time this value changes.
6
7
  * - Memoise this value to persist the subscription for the lifetime of the component.
8
+ * @returns The most recent value yielded by `sequence`, or `undefined` before the first value arrives.
9
+ * @throws unknown Re-throws (during render) any error thrown by the sequence, for an error boundary to catch.
10
+ *
11
+ * @example
12
+ * ```tsx
13
+ * const value = useSequence(myAsyncIterable);
14
+ * ```
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/react/useSequence
7
17
  */
8
18
  export declare function useSequence<T>(sequence?: AsyncIterable<T>): T | undefined;
@@ -2,10 +2,20 @@ import { useEffect, useState } from "react";
2
2
  import { runSequence } from "../util/sequence.js";
3
3
  /**
4
4
  * Subscribe to an async iterable for the lifetime of the component.
5
+ * - Re-renders the component with each value yielded by the sequence.
5
6
  *
6
7
  * @param sequence An object implementing the `AsyncIterable` interface.
7
8
  * - Subscription is recreated every time this value changes.
8
9
  * - Memoise this value to persist the subscription for the lifetime of the component.
10
+ * @returns The most recent value yielded by `sequence`, or `undefined` before the first value arrives.
11
+ * @throws unknown Re-throws (during render) any error thrown by the sequence, for an error boundary to catch.
12
+ *
13
+ * @example
14
+ * ```tsx
15
+ * const value = useSequence(myAsyncIterable);
16
+ * ```
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/react/useSequence
9
19
  */
10
20
  export function useSequence(sequence) {
11
21
  const [value, setValue] = useState(undefined);
@@ -1,4 +1,19 @@
1
1
  import type { AnyStore } from "../store/Store.js";
2
- /** Subscribe to a Shelving `Store` instance to refresh this component when its value changes. */
2
+ /**
3
+ * Subscribe to a Shelving `Store` instance to refresh this component when its value changes.
4
+ * - Re-renders the component whenever the store's value changes for as long as it is mounted.
5
+ * - Pass `undefined` to subscribe to nothing (e.g. for conditional subscriptions).
6
+ *
7
+ * @param store `Store` instance to subscribe to, or `undefined` to subscribe to nothing.
8
+ * @returns The same `store` that was passed in (or `undefined`).
9
+ *
10
+ * @example
11
+ * ```tsx
12
+ * const store = useStore(myStore);
13
+ * return <>{store.value}</>;
14
+ * ```
15
+ *
16
+ * @see https://dhoulb.github.io/shelving/react/useStore
17
+ */
3
18
  export declare function useStore<T extends AnyStore>(store: T): T;
4
19
  export declare function useStore<T extends AnyStore>(store?: T | undefined): T | undefined;
@@ -2,15 +2,52 @@ import { type AddressData, formatAddress } from "../util/geo.js";
2
2
  import { DataSchema, type DataSchemaOptions } from "./DataSchema.js";
3
3
  export type { AddressData };
4
4
  export { formatAddress };
5
- /** Allowed options for `AddressSchema` */
5
+ /**
6
+ * Allowed options for `AddressSchema`.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/AddressSchemaOptions
9
+ */
6
10
  export interface AddressSchemaOptions extends Omit<DataSchemaOptions<AddressData>, "props"> {
7
11
  }
8
- /** Schema that validates a postal address. */
12
+ /**
13
+ * Schema that validates a postal address.
14
+ *
15
+ * - Validates the `address1`, `address2`, `city`, `state`, `postcode`, and `country` fields as a single `AddressData` object.
16
+ * - Formats validated values into a human-readable address string via `formatAddress()`.
17
+ *
18
+ * @example ADDRESS.validate({ address1: "1 High St", city: "London", postcode: "SW1A 1AA", country: "GB" });
19
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/AddressSchema
20
+ */
9
21
  export declare class AddressSchema extends DataSchema<AddressData> {
22
+ /**
23
+ * Create a new `AddressSchema`.
24
+ *
25
+ * @param options Options for the schema (inherits `DataSchema` options except `props`, which is fixed to the postal-address fields).
26
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"address"`).
27
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Address"`).
28
+ */
10
29
  constructor({ one, title, ...options }?: AddressSchemaOptions);
30
+ /**
31
+ * Format a validated address into a human-readable string.
32
+ *
33
+ * @param value The valid address data to format.
34
+ * @returns The address formatted as a single display string.
35
+ * @example ADDRESS.format({ address1: "1 High St", city: "London", postcode: "SW1A 1AA", country: "GB" });
36
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/AddressSchema/format
37
+ */
11
38
  format(value: AddressData): string;
12
39
  }
13
- /** Valid postal address data. */
40
+ /**
41
+ * Valid postal address data.
42
+ *
43
+ * @example ADDRESS.validate({ address1: "1 High St", city: "London", postcode: "SW1A 1AA", country: "GB" });
44
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/ADDRESS
45
+ */
14
46
  export declare const ADDRESS: AddressSchema;
15
- /** Valid postal address data, or `null` */
47
+ /**
48
+ * Valid postal address data, or `null`
49
+ *
50
+ * @example NULLABLE_ADDRESS.validate(null); // Returns null
51
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/NULLABLE_ADDRESS
52
+ */
16
53
  export declare const NULLABLE_ADDRESS: import("./NullableSchema.js").NullableSchema<AddressData>;
@@ -12,16 +12,49 @@ const ADDRESS_PROPS = {
12
12
  postcode: new StringSchema({ title: "Postcode", min: 1, max: 12, case: "upper" }),
13
13
  country: COUNTRY,
14
14
  };
15
- /** Schema that validates a postal address. */
15
+ /**
16
+ * Schema that validates a postal address.
17
+ *
18
+ * - Validates the `address1`, `address2`, `city`, `state`, `postcode`, and `country` fields as a single `AddressData` object.
19
+ * - Formats validated values into a human-readable address string via `formatAddress()`.
20
+ *
21
+ * @example ADDRESS.validate({ address1: "1 High St", city: "London", postcode: "SW1A 1AA", country: "GB" });
22
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/AddressSchema
23
+ */
16
24
  export class AddressSchema extends DataSchema {
25
+ /**
26
+ * Create a new `AddressSchema`.
27
+ *
28
+ * @param options Options for the schema (inherits `DataSchema` options except `props`, which is fixed to the postal-address fields).
29
+ * @param options.one Singular noun describing one value, used in error messages (defaults to `"address"`).
30
+ * @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Address"`).
31
+ */
17
32
  constructor({ one = "address", title = "Address", ...options } = {}) {
18
33
  super({ one, title, props: ADDRESS_PROPS, ...options });
19
34
  }
35
+ /**
36
+ * Format a validated address into a human-readable string.
37
+ *
38
+ * @param value The valid address data to format.
39
+ * @returns The address formatted as a single display string.
40
+ * @example ADDRESS.format({ address1: "1 High St", city: "London", postcode: "SW1A 1AA", country: "GB" });
41
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/AddressSchema/format
42
+ */
20
43
  format(value) {
21
44
  return formatAddress(value);
22
45
  }
23
46
  }
24
- /** Valid postal address data. */
47
+ /**
48
+ * Valid postal address data.
49
+ *
50
+ * @example ADDRESS.validate({ address1: "1 High St", city: "London", postcode: "SW1A 1AA", country: "GB" });
51
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/ADDRESS
52
+ */
25
53
  export const ADDRESS = new AddressSchema({});
26
- /** Valid postal address data, or `null` */
54
+ /**
55
+ * Valid postal address data, or `null`
56
+ *
57
+ * @example NULLABLE_ADDRESS.validate(null); // Returns null
58
+ * @see https://dhoulb.github.io/shelving/schema/AddressSchema/NULLABLE_ADDRESS
59
+ */
27
60
  export const NULLABLE_ADDRESS = NULLABLE(ADDRESS);
@@ -1,7 +1,16 @@
1
1
  import type { ImmutableArray } from "../util/array.js";
2
2
  import type { SchemaOptions } from "./Schema.js";
3
3
  import { Schema } from "./Schema.js";
4
- /** Allowed options for `ArraySchema` */
4
+ /**
5
+ * Options for `ArraySchema`.
6
+ *
7
+ * - `items` — schema every item in the array must conform to.
8
+ * - `min`/`max` — minimum and maximum number of items.
9
+ * - `unique` — deduplicate the items when set.
10
+ * - `separator` — string or `RegExp` used to split a string input into items.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/schema/ArraySchema/ArraySchemaOptions
13
+ */
5
14
  export interface ArraySchemaOptions<T> extends SchemaOptions {
6
15
  /** The default value */
7
16
  readonly value?: ImmutableArray;
@@ -17,10 +26,10 @@ export interface ArraySchemaOptions<T> extends SchemaOptions {
17
26
  readonly separator?: string | RegExp;
18
27
  }
19
28
  /**
20
- * Define a valid array.
29
+ * Schema that validates an array and ensures every item matches a specified item schema.
21
30
  *
22
- * Validates arrays and ensures the array's items match a specified format.
23
- * Only returns a new instance of the object if it changes (for immutability).
31
+ * - A string input is split into items using `separator`.
32
+ * - Items are optionally deduplicated (`unique`), then the count is checked against `min` and `max`.
24
33
  *
25
34
  * @example
26
35
  * const schema = new ArraySchema({ min: 1, max: 2, default: [10,11,12], required: true });
@@ -35,6 +44,8 @@ export interface ArraySchemaOptions<T> extends SchemaOptions {
35
44
  * const schema = new ArraySchema({ schema: Array });
36
45
  * schema.validate(["a", "a"], schema); // Returns ["a", "a"]
37
46
  * schema.validate(["a", null], schema); // Throws Invalids({ "1": Invalid('Must be a string') });
47
+ *
48
+ * @see https://dhoulb.github.io/shelving/schema/ArraySchema/ArraySchema
38
49
  */
39
50
  export declare class ArraySchema<T> extends Schema<ImmutableArray<T>> {
40
51
  readonly value: ImmutableArray<T>;
@@ -43,9 +54,40 @@ export declare class ArraySchema<T> extends Schema<ImmutableArray<T>> {
43
54
  readonly min: number;
44
55
  readonly max: number;
45
56
  readonly separator: string | RegExp;
57
+ /**
58
+ * Create a new `ArraySchema`.
59
+ *
60
+ * @param options Options for the schema, including the `items` schema, `min`/`max` counts, `unique`, and `separator`.
61
+ */
46
62
  constructor({ items, one, many, title, placeholder, unique, min, max, separator, value, ...options }: ArraySchemaOptions<T>);
63
+ /**
64
+ * Validate an unknown value as an array whose items all match the `items` schema.
65
+ *
66
+ * @param unsafeValue The unknown input value to validate; a string is split using `separator` (defaults to this schema's `value`).
67
+ * @returns The valid array with each item validated by the `items` schema.
68
+ * @throws `string` `"Must be array"` if not an array, `"Required"` or `` `Minimum ${min} ${many}` `` if too few items, or `` `Maximum ${max} ${many}` `` if too many.
69
+ * @example schema.validate([1, 2, 3]) // [1, 2, 3]
70
+ * @see https://dhoulb.github.io/shelving/schema/ArraySchema/ArraySchema/validate
71
+ */
47
72
  validate(unsafeValue?: unknown): ImmutableArray<T>;
73
+ /**
74
+ * Format a validated array as a string for display.
75
+ *
76
+ * @param arr The valid array to format.
77
+ * @returns The array's items formatted as a human-readable string.
78
+ * @example schema.format([1, 2, 3]) // "1, 2, 3"
79
+ * @see https://dhoulb.github.io/shelving/schema/ArraySchema/ArraySchema/format
80
+ */
48
81
  format(arr: ImmutableArray<T>): string;
49
82
  }
50
- /** Valid array with specifed items. */
51
- export declare const ARRAY: <T>(items: Schema<T>) => ArraySchema<T>;
83
+ /**
84
+ * Create a schema for a valid array with specified items.
85
+ *
86
+ * *Factory for `ArraySchema`.*
87
+ *
88
+ * @param items Schema every item in the array must conform to.
89
+ * @returns An `ArraySchema` validating arrays of the given item type.
90
+ * @example ARRAY(NUMBER) // ArraySchema<number>
91
+ * @see https://dhoulb.github.io/shelving/schema/ArraySchema/ARRAY
92
+ */
93
+ export declare function ARRAY<T>(items: Schema<T>): ArraySchema<T>;