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
package/util/http.js CHANGED
@@ -42,12 +42,16 @@ function _parseMessageBody(message, MessageError, caller) {
42
42
  /**
43
43
  * Parse the body content of an HTTP `Request` based on its content type, or throw `RequestError` if the content could not be parsed.
44
44
  *
45
+ * @param request The `Request` whose body to parse.
46
+ * @param caller Identity of the calling function for error attribution.
45
47
  * @returns undefined If the request method is `GET` or `HEAD` (these request methods have no body).
46
48
  * @returns unknown If content type is `application/json` and has valid JSON (including `undefined` if the content is empty).
47
49
  * @returns unknown If content type is `multipart/form-data` then convert it to a simple `Data` object.
48
50
  * @returns string If content type is `text/plain` or anything else (including `""` empty string if it's empty).
49
51
  *
50
- * @throws RequestError if the content is not `text/plain`, or `application/json` with valid JSON.
52
+ * @throws {RequestError} If the content is not `text/plain`, or `application/json` with valid JSON.
53
+ * @example const body = await parseRequestBody(request);
54
+ * @see https://dhoulb.github.io/shelving/util/http/parseRequestBody
51
55
  */
52
56
  export function parseRequestBody(request, caller = parseRequestBody) {
53
57
  return _parseMessageBody(request, RequestError, caller);
@@ -55,7 +59,12 @@ export function parseRequestBody(request, caller = parseRequestBody) {
55
59
  /**
56
60
  * Parse JSON from an HTTP `Request`, or return `undefined` when the request has no body.
57
61
  *
58
- * @throws RequestError If the request body is not valid JSON.
62
+ * @param request The `Request` whose JSON body to parse.
63
+ * @param caller Identity of the calling function for error attribution.
64
+ * @returns The parsed JSON value, or `undefined` if the body is empty.
65
+ * @throws {RequestError} If the request body is not valid JSON.
66
+ * @example const data = await parseRequestJSON(request);
67
+ * @see https://dhoulb.github.io/shelving/util/http/parseRequestJSON
59
68
  */
60
69
  export function parseRequestJSON(request, caller = parseRequestJSON) {
61
70
  return _parseMessageJSON(request, RequestError, caller);
@@ -63,7 +72,12 @@ export function parseRequestJSON(request, caller = parseRequestJSON) {
63
72
  /**
64
73
  * Parse `FormData` from an HTTP `Request`, or return `undefined` when the request has no body.
65
74
  *
66
- * @throws RequestError If the request body is not valid multipart form-data.
75
+ * @param request The `Request` whose form-data body to parse.
76
+ * @param caller Identity of the calling function for error attribution.
77
+ * @returns The parsed `FormData`.
78
+ * @throws {RequestError} If the request body is not valid multipart form-data.
79
+ * @example const form = await parseRequestFormData(request);
80
+ * @see https://dhoulb.github.io/shelving/util/http/parseRequestFormData
67
81
  */
68
82
  export function parseRequestFormData(request, caller = parseRequestFormData) {
69
83
  return _parseMessageFormData(request, RequestError, caller);
@@ -71,11 +85,15 @@ export function parseRequestFormData(request, caller = parseRequestFormData) {
71
85
  /**
72
86
  * Parse the body content of an HTTP `Response` based on its content type, or throw `ResponseError` if the content could not be parsed.
73
87
  *
88
+ * @param response The `Response` whose body to parse.
89
+ * @param caller Identity of the calling function for error attribution.
74
90
  * @returns unknown If content type is `application/json` and has valid JSON (including `undefined` if the content is empty).
75
91
  * @returns unknown If content type is `multipart/form-data` then convert it to a simple `Data` object.
76
92
  * @returns string If content type is `text/plain` or anything else (including `""` empty string if it's empty).
77
93
  *
78
- * @throws ResponseError if the content is not `text/plain` or `application/json` with valid JSON.
94
+ * @throws {ResponseError} If the content is not `text/plain` or `application/json` with valid JSON.
95
+ * @example const body = await parseResponseBody(response);
96
+ * @see https://dhoulb.github.io/shelving/util/http/parseResponseBody
79
97
  */
80
98
  export function parseResponseBody(response, caller = parseResponseBody) {
81
99
  return _parseMessageBody(response, ResponseError, caller);
@@ -83,7 +101,12 @@ export function parseResponseBody(response, caller = parseResponseBody) {
83
101
  /**
84
102
  * Parse JSON from an HTTP `Response`, or return `undefined` when the response has no body.
85
103
  *
86
- * @throws ResponseError If the response body is not valid JSON.
104
+ * @param response The `Response` whose JSON body to parse.
105
+ * @param caller Identity of the calling function for error attribution.
106
+ * @returns The parsed JSON value, or `undefined` if the body is empty.
107
+ * @throws {ResponseError} If the response body is not valid JSON.
108
+ * @example const data = await parseResponseJSON(response);
109
+ * @see https://dhoulb.github.io/shelving/util/http/parseResponseJSON
87
110
  */
88
111
  export function parseResponseJSON(response, caller = parseResponseJSON) {
89
112
  return _parseMessageJSON(response, ResponseError, caller);
@@ -91,16 +114,26 @@ export function parseResponseJSON(response, caller = parseResponseJSON) {
91
114
  /**
92
115
  * Parse `FormData` from an HTTP `Response`, or return `undefined` when the response has no body.
93
116
  *
94
- * @throws ResponseError If the response body is not valid multipart form-data.
117
+ * @param response The `Response` whose form-data body to parse.
118
+ * @param caller Identity of the calling function for error attribution.
119
+ * @returns The parsed `FormData`.
120
+ * @throws {ResponseError} If the response body is not valid multipart form-data.
121
+ * @example const form = await parseResponseFormData(response);
122
+ * @see https://dhoulb.github.io/shelving/util/http/parseResponseFormData
95
123
  */
96
124
  export function parseResponseFormData(response, caller = parseResponseFormData) {
97
125
  return _parseMessageFormData(response, ResponseError, caller);
98
126
  }
99
127
  /**
100
128
  * Get an HTTP `Response` for an unknown value.
129
+ * - A `Response` value is returned unchanged.
130
+ * - `undefined` becomes a `204 No Content` response.
131
+ * - Anything else becomes a `200` JSON response.
101
132
  *
102
133
  * @param value The value to convert to a `Response`.
103
134
  * @returns A `Response` with a 2xx status, and response body as JSON (if it was set), or no body if `value` is `undefined`
135
+ * @example getResponse({ name: "abc" }) // 200 JSON Response
136
+ * @see https://dhoulb.github.io/shelving/util/http/getResponse
104
137
  */
105
138
  export function getResponse(value) {
106
139
  // If it's already a `Response`, return it directly.
@@ -123,7 +156,10 @@ export function getResponse(value) {
123
156
  * - Anything else returns a 500 response.
124
157
  *
125
158
  * @param reason The error value to convert to a `Response`.
126
- * @param debug If `true` include the error message in the response (for debugging), or `false` to return generic error codes (for security).
159
+ * @param debug If `true` include the error message in the response (for debugging), or `false` to return generic error codes (for security). Defaults to `false`.
160
+ * @returns A `Response` with a status code and (optionally) body derived from the error.
161
+ * @example getErrorResponse("Invalid input") // 422 Response
162
+ * @see https://dhoulb.github.io/shelving/util/http/getErrorResponse
127
163
  */
128
164
  export function getErrorResponse(reason, debug = false) {
129
165
  // If it's already a `Response`, return it directly.
@@ -147,11 +183,25 @@ export function getErrorResponse(reason, debug = false) {
147
183
  const _REQUEST_HEAD_METHODS = ["HEAD", "GET"];
148
184
  const _REQUEST_BODY_METHODS = ["POST", "PUT", "PATCH", "DELETE"];
149
185
  const _REQUEST_METHODS = [..._REQUEST_HEAD_METHODS, ..._REQUEST_BODY_METHODS];
150
- /** Check whether an HTTP Request method string is a supported request methods. */
186
+ /**
187
+ * Is a string a supported HTTP request method?
188
+ *
189
+ * @param method The method string to test.
190
+ * @returns `true` if `method` is a supported `RequestMethod`, narrowing its type.
191
+ * @example isRequestMethod("GET") // true
192
+ * @see https://dhoulb.github.io/shelving/util/http/isRequestMethod
193
+ */
151
194
  export function isRequestMethod(method) {
152
195
  return _REQUEST_METHODS.includes(method);
153
196
  }
154
- /** Check whether an HTTP Request method string is a supported request method that never sends a body. */
197
+ /**
198
+ * Is a string a supported HTTP request method that never sends a body?
199
+ *
200
+ * @param method The method string to test.
201
+ * @returns `true` if `method` is a supported `RequestHeadMethod`, narrowing its type.
202
+ * @example isRequestHeadMethod("GET") // true
203
+ * @see https://dhoulb.github.io/shelving/util/http/isRequestHeadMethod
204
+ */
155
205
  export function isRequestHeadMethod(method) {
156
206
  return _REQUEST_HEAD_METHODS.includes(method);
157
207
  }
@@ -160,6 +210,12 @@ export function isRequestHeadMethod(method) {
160
210
  * - Scalar options from `b` override `a`.
161
211
  * - Header dictionaries are merged so call-level headers override default headers by key.
162
212
  * - Abort signals are merged, so either abort signal will cancel the request.
213
+ *
214
+ * @param a The provider-level (default) request options.
215
+ * @param b The call-level request options whose values override `a`.
216
+ * @returns A merged `RequestOptions` with combined headers and abort signals.
217
+ * @example mergeRequestOptions({ cache: "no-store" }, { mode: "cors" }) // { cache: "no-store", mode: "cors", ... }
218
+ * @see https://dhoulb.github.io/shelving/util/http/mergeRequestOptions
163
219
  */
164
220
  export function mergeRequestOptions({ headers: aHeaders, signal: aSignal, ...a } = {}, { headers: bHeaders, signal: bSignal, ...b } = {}) {
165
221
  const headers = { ...aHeaders, ...bHeaders };
@@ -174,9 +230,11 @@ export function mergeRequestOptions({ headers: aHeaders, signal: aSignal, ...a }
174
230
  * @param url The target URL.
175
231
  * @param params `?query` params to encode into the URL.
176
232
  * @param options Additional request options.
233
+ * @param caller Function to attribute a thrown error to (defaults to `createHeadRequest`).
177
234
  * @returns A `Request` with no body content.
178
235
  *
179
236
  * @example createHeadRequest("POST", "https://api.example.com/items", { name: "abc" })
237
+ * @see https://dhoulb.github.io/shelving/util/http/createHeadRequest
180
238
  */
181
239
  export function createHeadRequest(method, url, params, options = {}, caller = createHeadRequest) {
182
240
  return new Request(withURIParams(requireURL(url, undefined, caller), params), { ...options, method, body: null });
@@ -190,9 +248,11 @@ export function createHeadRequest(method, url, params, options = {}, caller = cr
190
248
  * @param url The target URL.
191
249
  * @param body The plain-text request body.
192
250
  * @param options Additional request options.
251
+ * @param caller Function to attribute a thrown error to (defaults to `createTextRequest`).
193
252
  * @returns A `Request` with `text/plain` content type.
194
253
  *
195
254
  * @example createTextRequest("POST", "https://api.example.com/items", "hello")
255
+ * @see https://dhoulb.github.io/shelving/util/http/createTextRequest
196
256
  */
197
257
  export function createTextRequest(method, url, body, options = {}, caller = createTextRequest) {
198
258
  return new Request(requireURL(url, undefined, caller), { ...mergeRequestOptions(_REQUEST_TEXT_OPTIONS, options), method, body });
@@ -207,9 +267,11 @@ const _REQUEST_TEXT_OPTIONS = { headers: { "Content-Type": "text/plain" } };
207
267
  * @param url The target URL.
208
268
  * @param body The value to JSON-encode.
209
269
  * @param options Additional request options.
270
+ * @param caller Function to attribute a thrown error to (defaults to `createJSONRequest`).
210
271
  * @returns A `Request` with `application/json` content type.
211
272
  *
212
273
  * @example createJSONRequest("POST", "https://api.example.com/items", { name: "abc" })
274
+ * @see https://dhoulb.github.io/shelving/util/http/createJSONRequest
213
275
  */
214
276
  export function createJSONRequest(method, url, body, options = {}, caller = createJSONRequest) {
215
277
  return new Request(requireURL(url, undefined, caller), {
@@ -227,9 +289,11 @@ const _REQUEST_JSON_OPTIONS = { headers: { "Content-Type": "application/json" }
227
289
  * @param url The target URL.
228
290
  * @param body The `FormData` payload.
229
291
  * @param options Additional request options.
292
+ * @param caller Function to attribute a thrown error to (defaults to `createFormDataRequest`).
230
293
  * @returns A `Request` with a multipart body.
231
294
  *
232
295
  * @example createFormDataRequest("POST", "https://api.example.com/upload", new FormData())
296
+ * @see https://dhoulb.github.io/shelving/util/http/createFormDataRequest
233
297
  */
234
298
  export function createFormDataRequest(method, url, body, options = {}, caller = createFormDataRequest) {
235
299
  return new Request(requireURL(url, undefined, caller), { ...options, method, body });
@@ -243,11 +307,13 @@ export function createFormDataRequest(method, url, body, options = {}, caller =
243
307
  * @param url The target URL.
244
308
  * @param data The data object to serialize as XML.
245
309
  * @param options Additional request options.
310
+ * @param caller Function to attribute a thrown error to (defaults to `createXMLRequest`).
246
311
  * @returns A `Request` with `application/xml` content type.
247
312
  *
248
313
  * @throws {RequiredError} If the XML data contains invalid element names or values.
249
314
  *
250
315
  * @example createXMLRequest("POST", "https://api.example.com/items", { item: { name: "abc" } })
316
+ * @see https://dhoulb.github.io/shelving/util/http/createXMLRequest
251
317
  */
252
318
  export function createXMLRequest(method, url, data, options = {}, caller = createXMLRequest) {
253
319
  return new Request(requireURL(url, undefined, caller), {
@@ -266,9 +332,17 @@ const _REQUEST_XML_OPTIONS = { headers: { "Content-Type": "application/xml; char
266
332
  * - Expects a fully valid URL (any `{placeholders}` in the URL are not considered).
267
333
  * - As per the HTTP spec, `GET` and `HEAD` requests cannot contain a body
268
334
  *
269
- * @returns Request object.
335
+ * @param method The HTTP method.
336
+ * @param url The target URL.
337
+ * @param payload The body payload, whose type selects the content type.
338
+ * @param options Additional request options.
339
+ * @param caller Function to attribute a thrown error to (defaults to `createRequest`).
340
+ * @returns A `Request` with a content type chosen to match `payload`.
270
341
  *
271
342
  * @throws {RequiredError} if this is a `HEAD` or `GET` request but `body` is not a data object.
343
+ *
344
+ * @example createRequest("POST", "https://api.example.com/items", { name: "abc" }) // JSON Request
345
+ * @see https://dhoulb.github.io/shelving/util/http/createRequest
272
346
  */
273
347
  export function createRequest(method, url, payload, options = {}, caller = createRequest) {
274
348
  url = requireURL(url, undefined, caller);
@@ -289,7 +363,16 @@ export function createRequest(method, url, payload, options = {}, caller = creat
289
363
  // JSON is the default.
290
364
  return createJSONRequest(method, url, payload, options, caller);
291
365
  }
292
- /** Assert that the payload for a HEAD or GET method is a data object, null, or undefined. */
366
+ /**
367
+ * Assert that the payload for a `HEAD` or `GET` method is a data object, `null`, or `undefined`.
368
+ *
369
+ * @param payload The payload to assert.
370
+ * @param method The HTTP method the payload is for (used in the error message).
371
+ * @param caller Function to attribute a thrown error to (defaults to `assertRequestHeadPayload`).
372
+ * @throws {RequiredError} If `payload` is not a data object, `null`, or `undefined`.
373
+ * @example assertRequestHeadPayload({ q: "abc" }, "GET"); // passes
374
+ * @see https://dhoulb.github.io/shelving/util/http/assertRequestHeadPayload
375
+ */
293
376
  export function assertRequestHeadPayload(payload, method, caller = assertRequestHeadPayload) {
294
377
  if (!isData(payload) && !isNullish(payload))
295
378
  throw new RequiredError(`Payload for ${method} request must be data object, null, or undefined`, { received: payload, caller });
package/util/hydrate.d.ts CHANGED
@@ -3,9 +3,15 @@ import type { ImmutableDictionary } from "./dictionary.js";
3
3
  /**
4
4
  * A set of hydrations describes a set of string keys and the class constructor to be dehydrated and rehydrated.
5
5
  * - We can't use `class.name` because we don't know that the name of the class will survive minification.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/util/hydrate/Hydrations
6
8
  */
7
9
  export type Hydrations = ImmutableDictionary<Class<unknown>>;
8
- /** A dehydrated object with a `$type` key. */
10
+ /**
11
+ * A dehydrated object with a `$type` key.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/util/hydrate/DehydratedObject
14
+ */
9
15
  export type DehydratedObject = {
10
16
  readonly $type: string;
11
17
  readonly $value: unknown;
@@ -16,6 +22,13 @@ export type DehydratedObject = {
16
22
  * - By its nature hydration is an unsafe operation.
17
23
  * - Deeply iterates into arrays and plain objects to hydrate their items and props too.
18
24
  * - Note: the recursion in this function does not currently protect against infinite loops.
25
+ *
26
+ * @param value The dehydrated value to hydrate.
27
+ * @param hydrations The set of `$type` keys mapped to the class constructors used to rebuild instances.
28
+ * @returns The hydrated value, with matched objects rebuilt as their class instances.
29
+ * @throws ValueError If a dehydrated object's `$type` is not matched by any constructor in `hydrations`.
30
+ * @example hydrate({ $type: "Date", $value: 0 }, {}) // Date instance
31
+ * @see https://dhoulb.github.io/shelving/util/hydrate/hydrate
19
32
  */
20
33
  export declare function hydrate(value: unknown, hydrations: Hydrations): unknown;
21
34
  /**
@@ -25,7 +38,11 @@ export declare function hydrate(value: unknown, hydrations: Hydrations): unknown
25
38
  * - Deeply iterates into arrays and plain objects to dehydrate their items and props too.
26
39
  * - Note: the recursion in this function does not currently protect against infinite loops.
27
40
  *
41
+ * @param value The value to dehydrate.
42
+ * @param hydrations The set of `$type` keys mapped to the class constructors used to recognise instances.
28
43
  * @returns The dehydrated version of the specified value.
29
- * @throws `Error` if the value is a class instance that cannot be dehydrated (i.e. is not matched by any constructor in `hydrations`).
44
+ * @throws ValueError If the value is a class instance that cannot be dehydrated (i.e. is not matched by any constructor in `hydrations`).
45
+ * @example dehydrate(new Date(0), {}) // { $type: "Date", $value: 0 }
46
+ * @see https://dhoulb.github.io/shelving/util/hydrate/dehydrate
30
47
  */
31
48
  export declare function dehydrate(value: unknown, hydrations: Hydrations): unknown;
package/util/hydrate.js CHANGED
@@ -16,6 +16,13 @@ function _isDehydrated(value) {
16
16
  * - By its nature hydration is an unsafe operation.
17
17
  * - Deeply iterates into arrays and plain objects to hydrate their items and props too.
18
18
  * - Note: the recursion in this function does not currently protect against infinite loops.
19
+ *
20
+ * @param value The dehydrated value to hydrate.
21
+ * @param hydrations The set of `$type` keys mapped to the class constructors used to rebuild instances.
22
+ * @returns The hydrated value, with matched objects rebuilt as their class instances.
23
+ * @throws ValueError If a dehydrated object's `$type` is not matched by any constructor in `hydrations`.
24
+ * @example hydrate({ $type: "Date", $value: 0 }, {}) // Date instance
25
+ * @see https://dhoulb.github.io/shelving/util/hydrate/hydrate
19
26
  */
20
27
  export function hydrate(value, hydrations) {
21
28
  if (isArray(value))
@@ -48,8 +55,12 @@ function _hydrateProp([, v], hydrations) {
48
55
  * - Deeply iterates into arrays and plain objects to dehydrate their items and props too.
49
56
  * - Note: the recursion in this function does not currently protect against infinite loops.
50
57
  *
58
+ * @param value The value to dehydrate.
59
+ * @param hydrations The set of `$type` keys mapped to the class constructors used to recognise instances.
51
60
  * @returns The dehydrated version of the specified value.
52
- * @throws `Error` if the value is a class instance that cannot be dehydrated (i.e. is not matched by any constructor in `hydrations`).
61
+ * @throws ValueError If the value is a class instance that cannot be dehydrated (i.e. is not matched by any constructor in `hydrations`).
62
+ * @example dehydrate(new Date(0), {}) // { $type: "Date", $value: 0 }
63
+ * @see https://dhoulb.github.io/shelving/util/hydrate/dehydrate
53
64
  */
54
65
  export function dehydrate(value, hydrations) {
55
66
  if (isObject(value)) {
package/util/item.d.ts CHANGED
@@ -1,26 +1,85 @@
1
1
  import type { ImmutableArray } from "./array.js";
2
2
  import type { Data } from "./data.js";
3
- /** Allowed types for the "id" property (identifier) for an item. */
3
+ /**
4
+ * Allowed types for the "id" property (identifier) for an item.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/util/item/Identifier
7
+ */
4
8
  export type Identifier = string | number;
5
- /** An item object is a data object that includes an "id" identifier property that is either a string or number. */
9
+ /**
10
+ * An item object is a data object that includes an "id" identifier property that is either a string or number.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/util/item/Item
13
+ */
6
14
  export type Item<I extends Identifier = Identifier, T extends Data = Data> = {
7
15
  id: I;
8
16
  } & T;
9
- /** Entity or `undefined` to indicate the item doesn't exist. */
17
+ /**
18
+ * Item object, or `undefined` to indicate the item doesn't exist.
19
+ *
20
+ * @see https://dhoulb.github.io/shelving/util/item/OptionalItem
21
+ */
10
22
  export type OptionalItem<I extends Identifier = Identifier, T extends Data = Data> = Item<I, T> | undefined;
11
- /** An async sequence of item objects. */
23
+ /**
24
+ * An async sequence of item objects.
25
+ *
26
+ * @see https://dhoulb.github.io/shelving/util/item/ItemSequence
27
+ */
12
28
  export type ItemSequence<I extends Identifier = Identifier, T extends Data = Data> = AsyncIterable<Item<I, T>, void, void>;
13
- /** An async sequence of optional item objects. */
29
+ /**
30
+ * An async sequence of optional item objects.
31
+ *
32
+ * @see https://dhoulb.github.io/shelving/util/item/OptionalItemSequence
33
+ */
14
34
  export type OptionalItemSequence<I extends Identifier = Identifier, T extends Data = Data> = AsyncIterable<OptionalItem<I, T>, void, void>;
15
- /** An array of item data. */
35
+ /**
36
+ * An array of item objects.
37
+ *
38
+ * @see https://dhoulb.github.io/shelving/util/item/Items
39
+ */
16
40
  export type Items<I extends Identifier = Identifier, T extends Data = Data> = ImmutableArray<Item<I, T>>;
17
- /** An async sequence of arrays of item objects. */
41
+ /**
42
+ * An async sequence of arrays of item objects.
43
+ *
44
+ * @see https://dhoulb.github.io/shelving/util/item/ItemsSequence
45
+ */
18
46
  export type ItemsSequence<I extends Identifier = Identifier, T extends Data = Data> = AsyncIterable<Items<I, T>, void, void>;
19
- /** Get the identifier from an item object. */
47
+ /**
48
+ * Get the identifier from an item object.
49
+ *
50
+ * @param item The item object to read the `id` from.
51
+ * @returns The item's `id` identifier.
52
+ * @example getIdentifier({ id: "abc", name: "Dave" }) // "abc"
53
+ * @see https://dhoulb.github.io/shelving/util/item/getIdentifier
54
+ */
20
55
  export declare function getIdentifier<I extends Identifier, T extends Data>({ id }: Item<I, T>): I;
21
- /** Get the identifiers from an iterable set item objects. */
56
+ /**
57
+ * Get the identifiers from an iterable set of item objects.
58
+ *
59
+ * @param entities The iterable of item objects to read identifiers from.
60
+ * @returns An iterable yielding the `id` of each item.
61
+ * @example Array.from(getIdentifiers([{ id: "a" }, { id: "b" }])) // ["a", "b"]
62
+ * @see https://dhoulb.github.io/shelving/util/item/getIdentifiers
63
+ */
22
64
  export declare function getIdentifiers<I extends Identifier, T extends Data>(entities: Iterable<Item<I, T>>): Iterable<I>;
23
- /** Does a data object or data item object. */
65
+ /**
66
+ * Does a data object have a given identifier (and is therefore an `Item`).
67
+ *
68
+ * @param item The data or item object to test.
69
+ * @param id The identifier to match against the object's `id` property.
70
+ * @returns `true` if `item.id` equals `id`, otherwise `false`.
71
+ * @example hasIdentifier({ id: "abc" }, "abc") // true
72
+ * @see https://dhoulb.github.io/shelving/util/item/hasIdentifier
73
+ */
24
74
  export declare function hasIdentifier<I extends Identifier, T extends Data>(item: T | Item<I, T>, id: I): item is Item<I, T>;
25
- /** Merge an ID into a set of data to make an `ItemData` */
75
+ /**
76
+ * Merge an ID into a set of data to make an `Item`.
77
+ * - Returns the data unchanged if it already has the given `id`.
78
+ *
79
+ * @param id The identifier to set on the data.
80
+ * @param data The data or item object to attach the identifier to.
81
+ * @returns An item object with the given `id`.
82
+ * @example getItem("abc", { name: "Dave" }) // { name: "Dave", id: "abc" }
83
+ * @see https://dhoulb.github.io/shelving/util/item/getItem
84
+ */
26
85
  export declare function getItem<I extends Identifier, T extends Data>(id: I, data: T | Item<I, T>): Item<I, T>;
package/util/item.js CHANGED
@@ -1,17 +1,48 @@
1
- /** Get the identifier from an item object. */
1
+ /**
2
+ * Get the identifier from an item object.
3
+ *
4
+ * @param item The item object to read the `id` from.
5
+ * @returns The item's `id` identifier.
6
+ * @example getIdentifier({ id: "abc", name: "Dave" }) // "abc"
7
+ * @see https://dhoulb.github.io/shelving/util/item/getIdentifier
8
+ */
2
9
  export function getIdentifier({ id }) {
3
10
  return id;
4
11
  }
5
- /** Get the identifiers from an iterable set item objects. */
12
+ /**
13
+ * Get the identifiers from an iterable set of item objects.
14
+ *
15
+ * @param entities The iterable of item objects to read identifiers from.
16
+ * @returns An iterable yielding the `id` of each item.
17
+ * @example Array.from(getIdentifiers([{ id: "a" }, { id: "b" }])) // ["a", "b"]
18
+ * @see https://dhoulb.github.io/shelving/util/item/getIdentifiers
19
+ */
6
20
  export function* getIdentifiers(entities) {
7
21
  for (const { id } of entities)
8
22
  yield id;
9
23
  }
10
- /** Does a data object or data item object. */
24
+ /**
25
+ * Does a data object have a given identifier (and is therefore an `Item`).
26
+ *
27
+ * @param item The data or item object to test.
28
+ * @param id The identifier to match against the object's `id` property.
29
+ * @returns `true` if `item.id` equals `id`, otherwise `false`.
30
+ * @example hasIdentifier({ id: "abc" }, "abc") // true
31
+ * @see https://dhoulb.github.io/shelving/util/item/hasIdentifier
32
+ */
11
33
  export function hasIdentifier(item, id) {
12
34
  return item.id === id;
13
35
  }
14
- /** Merge an ID into a set of data to make an `ItemData` */
36
+ /**
37
+ * Merge an ID into a set of data to make an `Item`.
38
+ * - Returns the data unchanged if it already has the given `id`.
39
+ *
40
+ * @param id The identifier to set on the data.
41
+ * @param data The data or item object to attach the identifier to.
42
+ * @returns An item object with the given `id`.
43
+ * @example getItem("abc", { name: "Dave" }) // { name: "Dave", id: "abc" }
44
+ * @see https://dhoulb.github.io/shelving/util/item/getItem
45
+ */
15
46
  export function getItem(id, data) {
16
47
  return hasIdentifier(data, id) ? data : { ...data, id };
17
48
  }
package/util/iterate.d.ts CHANGED
@@ -1,39 +1,135 @@
1
- /** Is an unknown value an iterable? */
2
- export declare const isIterable: (value: unknown) => value is Iterable<unknown>;
3
- /** An iterable containing items or nested iterables of items. */
1
+ /**
2
+ * Is an unknown value an iterable?
3
+ *
4
+ * @param value The value to test.
5
+ * @returns `true` if `value` is an object with a `Symbol.iterator` method, otherwise `false`.
6
+ * @see https://dhoulb.github.io/shelving/util/iterate/isIterable
7
+ */
8
+ export declare function isIterable(value: unknown): value is Iterable<unknown>;
9
+ /**
10
+ * An iterable containing items or nested iterables of items.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/util/iterate/DeepIterable
13
+ */
4
14
  export type DeepIterable<T> = T | Iterable<DeepIterable<T>>;
5
- /** Flatten one or more iterables. */
15
+ /**
16
+ * Flatten one or more (possibly nested) iterables into a flat sequence of items.
17
+ *
18
+ * @param items The item or deeply-nested iterable of items to flatten.
19
+ * @returns An iterable yielding every leaf item in order.
20
+ * @example Array.from(flattenItems([1, [2, [3, 4]]])) // [1, 2, 3, 4]
21
+ * @see https://dhoulb.github.io/shelving/util/iterate/flattenItems
22
+ */
6
23
  export declare function flattenItems<T>(items: DeepIterable<T>): Iterable<T>;
7
24
  /**
8
25
  * Does an iterable have one or more items.
9
- * - Checks `items.size` or `items.length` first, or consumes the iterable and counts its iterations.
26
+ * - Stops as soon as the first item is found, so it never fully consumes the iterable.
27
+ *
28
+ * @param items The iterable to test.
29
+ * @returns `true` if the iterable yields at least one item, otherwise `false`.
30
+ * @example hasItems([1, 2, 3]) // true
31
+ * @see https://dhoulb.github.io/shelving/util/iterate/hasItems
10
32
  */
11
33
  export declare function hasItems(items: Iterable<unknown>): boolean;
12
- /** Count the number of items in an iterable. */
34
+ /**
35
+ * Count the number of items in an iterable.
36
+ * - Fully consumes the iterable to count its iterations.
37
+ *
38
+ * @param items The iterable to count.
39
+ * @returns The number of items yielded by the iterable.
40
+ * @example countItems([1, 2, 3]) // 3
41
+ * @see https://dhoulb.github.io/shelving/util/iterate/countItems
42
+ */
13
43
  export declare function countItems(items: Iterable<unknown>): number;
14
44
  /**
15
45
  * Yield a range of numbers from `start` to `end`
16
46
  * - Yields in descending order if `end` is lower than `start`
47
+ * - Both `start` and `end` are inclusive.
48
+ *
49
+ * @param start The first number to yield.
50
+ * @param end The last number to yield (inclusive).
51
+ * @returns An iterable yielding the numbers between `start` and `end`.
52
+ * @example Array.from(getRange(1, 4)) // [1, 2, 3, 4]
53
+ * @see https://dhoulb.github.io/shelving/util/iterate/getRange
17
54
  */
18
55
  export declare function getRange(start: number, end: number): Iterable<number>;
19
56
  /**
20
57
  * Apply a limit to an iterable set of items.
21
- * - Checks `items.size` or `items.length` first to see if the limit is necessary.
58
+ * - Stops yielding once `limit` items have been produced.
59
+ *
60
+ * @param items The iterable to limit.
61
+ * @param limit The maximum number of items to yield.
62
+ * @returns An iterable yielding at most `limit` items.
63
+ * @example Array.from(limitItems([1, 2, 3, 4], 2)) // [1, 2]
64
+ * @see https://dhoulb.github.io/shelving/util/iterate/limitItems
22
65
  */
23
66
  export declare function limitItems<T>(items: Iterable<T>, limit: number): Iterable<T>;
24
- /** Pick items from an iterable set of items. */
67
+ /**
68
+ * Pick items from an iterable set of items.
69
+ * - Only yields items that appear in the `pick` list.
70
+ *
71
+ * @param items The iterable to filter.
72
+ * @param pick The items to keep.
73
+ * @returns An iterable yielding only the items found in `pick`.
74
+ * @example Array.from(pickItems([1, 2, 3], 1, 3)) // [1, 3]
75
+ * @see https://dhoulb.github.io/shelving/util/iterate/pickItems
76
+ */
25
77
  export declare function pickItems<T>(items: Iterable<T>, ...pick: T[]): Iterable<T>;
26
- /** Omit items from an iterable set of items. */
78
+ /**
79
+ * Omit items from an iterable set of items.
80
+ * - Yields every item except those that appear in the `omit` list.
81
+ *
82
+ * @param items The iterable to filter.
83
+ * @param omit The items to remove.
84
+ * @returns An iterable yielding every item not found in `omit`.
85
+ * @example Array.from(omitItems([1, 2, 3], 2)) // [1, 3]
86
+ * @see https://dhoulb.github.io/shelving/util/iterate/omitItems
87
+ */
27
88
  export declare function omitItems<T>(items: Iterable<T>, ...omit: T[]): Iterable<T>;
28
- /** Reduce an iterable set of items using a reducer function. */
89
+ /**
90
+ * Reduce an iterable set of items using a reducer function.
91
+ * - Calls `reducer` for each item, threading the accumulated value through.
92
+ *
93
+ * @param items The iterable to reduce.
94
+ * @param reducer Reducer called with the previous accumulated value and the current item, returning the next accumulated value.
95
+ * @param initial The initial accumulated value.
96
+ * @returns The final accumulated value, or `undefined` if the iterable is empty and no `initial` was given.
97
+ * @example reduceItems([1, 2, 3], (a, b) => a + b, 0) // 6
98
+ * @see https://dhoulb.github.io/shelving/util/iterate/reduceItems
99
+ */
29
100
  export declare function reduceItems<T>(items: Iterable<T>, reducer: (previous: T, item: T) => T, initial: T): T;
30
101
  export declare function reduceItems<T>(items: Iterable<T>, reducer: (previous: T | undefined, item: T) => T, initial?: T): T | undefined;
31
102
  export declare function reduceItems<I, O>(items: Iterable<I>, reducer: (previous: O, item: I) => O, initial: O): O;
32
103
  export declare function reduceItems<I, O>(items: Iterable<I>, reducer: (previous: O | undefined, item: I) => O, initial?: O): O | undefined;
33
- /** Yield chunks of a given size. */
104
+ /**
105
+ * Yield chunks of a given size.
106
+ * - The final chunk may contain fewer than `size` items.
107
+ *
108
+ * @param items The iterable to split into chunks.
109
+ * @param size The maximum number of items per chunk.
110
+ * @returns An iterable yielding arrays of up to `size` items.
111
+ * @example Array.from(getChunks([1, 2, 3, 4, 5], 2)) // [[1, 2], [3, 4], [5]]
112
+ * @see https://dhoulb.github.io/shelving/util/iterate/getChunks
113
+ */
34
114
  export declare function getChunks<T>(items: Iterable<T>, size: number): Iterable<readonly T[]>;
35
- /** Merge two or more iterables into a single iterable set. */
115
+ /**
116
+ * Merge two or more iterables into a single iterable set.
117
+ * - Yields all items from each input in order.
118
+ *
119
+ * @param inputs Two or more iterables to merge.
120
+ * @returns An iterable yielding every item from each input in sequence.
121
+ * @example Array.from(mergeItems([1, 2], [3, 4])) // [1, 2, 3, 4]
122
+ * @see https://dhoulb.github.io/shelving/util/iterate/mergeItems
123
+ */
36
124
  export declare function mergeItems<T>(...inputs: [Iterable<T>, Iterable<T>, ...Iterable<T>[]]): Iterable<T>;
37
- /** Interleave items with a separator, i.e. `[item1, separator, item2, separator, item3]` */
125
+ /**
126
+ * Interleave items with a separator, i.e. `[item1, separator, item2, separator, item3]`
127
+ *
128
+ * @param items The iterable to interleave.
129
+ * @param separator The value to insert between each pair of items.
130
+ * @returns An iterable yielding the items with `separator` between them.
131
+ * @example Array.from(interleaveItems([1, 2, 3], 0)) // [1, 0, 2, 0, 3]
132
+ * @see https://dhoulb.github.io/shelving/util/iterate/interleaveItems
133
+ */
38
134
  export declare function interleaveItems<T>(items: Iterable<T>, separator: T): Iterable<T>;
39
135
  export declare function interleaveItems<A, B>(items: Iterable<A>, separator: B): Iterable<A | B>;