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/iterate.js CHANGED
@@ -1,6 +1,21 @@
1
- /** Is an unknown value an iterable? */
2
- export const isIterable = (value) => typeof value === "object" && !!value && Symbol.iterator in value;
3
- /** Flatten one or more iterables. */
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 function isIterable(value) {
9
+ return typeof value === "object" && !!value && Symbol.iterator in value;
10
+ }
11
+ /**
12
+ * Flatten one or more (possibly nested) iterables into a flat sequence of items.
13
+ *
14
+ * @param items The item or deeply-nested iterable of items to flatten.
15
+ * @returns An iterable yielding every leaf item in order.
16
+ * @example Array.from(flattenItems([1, [2, [3, 4]]])) // [1, 2, 3, 4]
17
+ * @see https://dhoulb.github.io/shelving/util/iterate/flattenItems
18
+ */
4
19
  export function* flattenItems(items) {
5
20
  if (isIterable(items))
6
21
  for (const item of items)
@@ -10,14 +25,27 @@ export function* flattenItems(items) {
10
25
  }
11
26
  /**
12
27
  * Does an iterable have one or more items.
13
- * - Checks `items.size` or `items.length` first, or consumes the iterable and counts its iterations.
28
+ * - Stops as soon as the first item is found, so it never fully consumes the iterable.
29
+ *
30
+ * @param items The iterable to test.
31
+ * @returns `true` if the iterable yields at least one item, otherwise `false`.
32
+ * @example hasItems([1, 2, 3]) // true
33
+ * @see https://dhoulb.github.io/shelving/util/iterate/hasItems
14
34
  */
15
35
  export function hasItems(items) {
16
36
  for (const _unused of items)
17
37
  return true;
18
38
  return false;
19
39
  }
20
- /** Count the number of items in an iterable. */
40
+ /**
41
+ * Count the number of items in an iterable.
42
+ * - Fully consumes the iterable to count its iterations.
43
+ *
44
+ * @param items The iterable to count.
45
+ * @returns The number of items yielded by the iterable.
46
+ * @example countItems([1, 2, 3]) // 3
47
+ * @see https://dhoulb.github.io/shelving/util/iterate/countItems
48
+ */
21
49
  export function countItems(items) {
22
50
  let count = 0;
23
51
  for (const _unused of items)
@@ -27,6 +55,13 @@ export function countItems(items) {
27
55
  /**
28
56
  * Yield a range of numbers from `start` to `end`
29
57
  * - Yields in descending order if `end` is lower than `start`
58
+ * - Both `start` and `end` are inclusive.
59
+ *
60
+ * @param start The first number to yield.
61
+ * @param end The last number to yield (inclusive).
62
+ * @returns An iterable yielding the numbers between `start` and `end`.
63
+ * @example Array.from(getRange(1, 4)) // [1, 2, 3, 4]
64
+ * @see https://dhoulb.github.io/shelving/util/iterate/getRange
30
65
  */
31
66
  export function* getRange(start, end) {
32
67
  if (start <= end)
@@ -38,7 +73,13 @@ export function* getRange(start, end) {
38
73
  }
39
74
  /**
40
75
  * Apply a limit to an iterable set of items.
41
- * - Checks `items.size` or `items.length` first to see if the limit is necessary.
76
+ * - Stops yielding once `limit` items have been produced.
77
+ *
78
+ * @param items The iterable to limit.
79
+ * @param limit The maximum number of items to yield.
80
+ * @returns An iterable yielding at most `limit` items.
81
+ * @example Array.from(limitItems([1, 2, 3, 4], 2)) // [1, 2]
82
+ * @see https://dhoulb.github.io/shelving/util/iterate/limitItems
42
83
  */
43
84
  export function* limitItems(items, limit) {
44
85
  let count = 0;
@@ -51,13 +92,31 @@ export function* limitItems(items, limit) {
51
92
  return;
52
93
  }
53
94
  }
54
- /** Pick items from an iterable set of items. */
95
+ /**
96
+ * Pick items from an iterable set of items.
97
+ * - Only yields items that appear in the `pick` list.
98
+ *
99
+ * @param items The iterable to filter.
100
+ * @param pick The items to keep.
101
+ * @returns An iterable yielding only the items found in `pick`.
102
+ * @example Array.from(pickItems([1, 2, 3], 1, 3)) // [1, 3]
103
+ * @see https://dhoulb.github.io/shelving/util/iterate/pickItems
104
+ */
55
105
  export function* pickItems(items, ...pick) {
56
106
  for (const item of items)
57
107
  if (pick.includes(item))
58
108
  yield item;
59
109
  }
60
- /** Omit items from an iterable set of items. */
110
+ /**
111
+ * Omit items from an iterable set of items.
112
+ * - Yields every item except those that appear in the `omit` list.
113
+ *
114
+ * @param items The iterable to filter.
115
+ * @param omit The items to remove.
116
+ * @returns An iterable yielding every item not found in `omit`.
117
+ * @example Array.from(omitItems([1, 2, 3], 2)) // [1, 3]
118
+ * @see https://dhoulb.github.io/shelving/util/iterate/omitItems
119
+ */
61
120
  export function* omitItems(items, ...omit) {
62
121
  for (const item of items)
63
122
  if (!omit.includes(item))
@@ -69,7 +128,16 @@ export function reduceItems(items, reducer, initial) {
69
128
  current = reducer(current, item);
70
129
  return current;
71
130
  }
72
- /** Yield chunks of a given size. */
131
+ /**
132
+ * Yield chunks of a given size.
133
+ * - The final chunk may contain fewer than `size` items.
134
+ *
135
+ * @param items The iterable to split into chunks.
136
+ * @param size The maximum number of items per chunk.
137
+ * @returns An iterable yielding arrays of up to `size` items.
138
+ * @example Array.from(getChunks([1, 2, 3, 4, 5], 2)) // [[1, 2], [3, 4], [5]]
139
+ * @see https://dhoulb.github.io/shelving/util/iterate/getChunks
140
+ */
73
141
  export function* getChunks(items, size) {
74
142
  let chunk = [];
75
143
  for (const item of items) {
@@ -82,7 +150,15 @@ export function* getChunks(items, size) {
82
150
  if (chunk.length)
83
151
  yield chunk;
84
152
  }
85
- /** Merge two or more iterables into a single iterable set. */
153
+ /**
154
+ * Merge two or more iterables into a single iterable set.
155
+ * - Yields all items from each input in order.
156
+ *
157
+ * @param inputs Two or more iterables to merge.
158
+ * @returns An iterable yielding every item from each input in sequence.
159
+ * @example Array.from(mergeItems([1, 2], [3, 4])) // [1, 2, 3, 4]
160
+ * @see https://dhoulb.github.io/shelving/util/iterate/mergeItems
161
+ */
86
162
  export function* mergeItems(...inputs) {
87
163
  for (const input of inputs)
88
164
  yield* input;
package/util/jwt.d.ts CHANGED
@@ -2,6 +2,12 @@ import { type Bytes, type PossibleBytes } from "./bytes.js";
2
2
  import type { Data } from "./data.js";
3
3
  import { type PossibleDate } from "./date.js";
4
4
  import type { AnyCaller } from "./function.js";
5
+ /**
6
+ * Claims payload accepted when encoding a JWT.
7
+ * - Extends `Data`, so any additional custom claims may be included alongside the standard `iat` / `nbf` / `exp` fields.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/util/jwt/TokenClaims
10
+ */
5
11
  export interface TokenClaims extends Data {
6
12
  /**
7
13
  * "Issued at" date (defaults to "now").
@@ -23,15 +29,21 @@ export interface TokenClaims extends Data {
23
29
  /**
24
30
  * Encode a JWT and return the string token.
25
31
  * - Currently only supports HMAC SHA-512 signing.
32
+ * - The `exp` claim defaults to 30 days from now, and `iat` / `nbf` default to "now".
26
33
  *
27
- * @param claims The payload claims to include in the JWT.
28
- * @param secret The secret key to sign the JWT with.
29
- * @param expiry The expiry time in milliseconds (defaults to 30 days).
30
- *
31
- * @throws ValueError If the input parameters, e.g. `secret` or `issuer`, are invalid.
34
+ * @param claims The payload claims to include in the JWT, including optional `iat`, `nbf`, and `exp` values.
35
+ * @param secret The secret key to sign the JWT with (minimum 64 bytes / 512 bits).
36
+ * @returns A promise resolving to the signed JWT string token.
37
+ * @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
38
+ * @example const token = await encodeToken({ sub: "user1" }, secret)
39
+ * @see https://dhoulb.github.io/shelving/util/jwt/encodeToken
32
40
  */
33
41
  export declare function encodeToken({ nbf, iat, exp, ...claims }: TokenClaims, secret: PossibleBytes): Promise<string>;
34
- /** Parts that make up a JSON Web Token. */
42
+ /**
43
+ * Parts that make up a JSON Web Token — the raw encoded segments plus their decoded contents.
44
+ *
45
+ * @see https://dhoulb.github.io/shelving/util/jwt/TokenData
46
+ */
35
47
  export type TokenData = {
36
48
  header: string;
37
49
  payload: string;
@@ -42,22 +54,39 @@ export type TokenData = {
42
54
  };
43
55
  /**
44
56
  * Split a JSON Web Token into its header, payload, and signature, and decode and parse the JSON.
57
+ * - Does not verify the signature — use `verifyToken` for that.
58
+ *
59
+ * @param token The JWT string to split and decode.
60
+ * @param caller Identity of the calling function for error attribution.
61
+ * @returns A `TokenData` object with the raw segments and their decoded header, payload, and signature.
62
+ * @throws UnauthorizedError If the token is malformed, or its segments are not valid Base64URL-encoded JSON.
63
+ * @example splitToken("aaa.bbb.ccc") // { header, payload, signature, headerData, payloadData, signatureBytes }
64
+ * @see https://dhoulb.github.io/shelving/util/jwt/splitToken
45
65
  */
46
66
  export declare function splitToken(token: string, caller?: AnyCaller): TokenData;
47
67
  /**
48
68
  * Decode a JWT, verify it, and return the full payload data.
49
69
  * - Currently only supports HMAC SHA-512 signing.
70
+ * - Allows a small amount of clock skew when checking `nbf` and `exp`.
50
71
  *
51
- * @throws ValueError If the input parameters, e.g. `secret` or `issuer`, are invalid.
52
- * @throws UnauthorizedError If the token is invalid or malformed.
53
- * @throws UnauthorizedError If the token signature is incorrect, token is expired or not issued yet.
72
+ * @param token The JWT string to verify.
73
+ * @param secret The secret key to verify the JWT signature with (minimum 64 bytes / 512 bits).
74
+ * @param caller Identity of the calling function for error attribution.
75
+ * @returns A promise resolving to the decoded payload claims.
76
+ * @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
77
+ * @throws UnauthorizedError If the token is malformed, the signature is incorrect, or the token is expired or not yet valid.
78
+ * @example const { sub } = await verifyToken(token, secret)
79
+ * @see https://dhoulb.github.io/shelving/util/jwt/verifyToken
54
80
  */
55
81
  export declare function verifyToken(token: string, secret: PossibleBytes, caller?: AnyCaller): Promise<Data>;
56
82
  /**
57
83
  * Set the `Authorization: Bearer {token}` on a `Request` object (by reference).
58
84
  *
59
85
  * @param request The `Request` object to set the token on.
86
+ * @param token The JWT string to set in the `Authorization` header.
60
87
  * @returns The same `Request` object that was passed in.
88
+ * @example setRequestToken(request, token)
89
+ * @see https://dhoulb.github.io/shelving/util/jwt/setRequestToken
61
90
  */
62
91
  export declare function setRequestToken(request: Request, token: string): Request;
63
92
  /**
@@ -65,14 +94,19 @@ export declare function setRequestToken(request: Request, token: string): Reques
65
94
  *
66
95
  * @param request The `Request` object possibly containing an `Authorization: Bearer {token}` header to extract the token from.
67
96
  * @returns The string token extracted from the `Authorization` header, or `undefined` if not set.
97
+ * @example getRequestToken(request) // "eyJ..." or undefined
98
+ * @see https://dhoulb.github.io/shelving/util/jwt/getRequestToken
68
99
  */
69
100
  export declare function getRequestToken(request: Request): string | undefined;
70
101
  /**
71
102
  * Extract the `Authorization: Bearer {token}` from a `Request` object, or throw `UnauthorizedError` if not set or malformed.
72
103
  *
73
104
  * @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
105
+ * @param caller Identity of the calling function for error attribution.
74
106
  * @returns The string token extracted from the `Authorization` header.
75
107
  * @throws UnauthorizedError If the `Authorization` header is not set, or the JWT it contains is not well-formed.
108
+ * @example requireRequestToken(request) // "eyJ..."
109
+ * @see https://dhoulb.github.io/shelving/util/jwt/requireRequestToken
76
110
  */
77
111
  export declare function requireRequestToken(request: Request, caller?: AnyCaller): string;
78
112
  /**
@@ -81,10 +115,10 @@ export declare function requireRequestToken(request: Request, caller?: AnyCaller
81
115
  *
82
116
  * @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
83
117
  * @param secret The secret key to verify the JWT signature with.
84
- *
85
- * @returns The decoded payload data from the JWT.
118
+ * @param caller Identity of the calling function for error attribution.
119
+ * @returns A promise resolving to the decoded payload data from the JWT.
86
120
  * @throws UnauthorizedError If the `Authorization` header is not set, the JWT it contains is not well-formed, or the JWT signature is invalid.
87
- *
88
- * @example `const { sub, iss, customClaim } = await verifyRequestToken(request, secret);`
121
+ * @example const { sub, iss, customClaim } = await verifyRequestToken(request, secret)
122
+ * @see https://dhoulb.github.io/shelving/util/jwt/verifyRequestToken
89
123
  */
90
124
  export declare function verifyRequestToken(request: Request, secret: PossibleBytes, caller?: AnyCaller): Promise<Data>;
package/util/jwt.js CHANGED
@@ -22,12 +22,14 @@ function _getKey(caller, secret, ...usages) {
22
22
  /**
23
23
  * Encode a JWT and return the string token.
24
24
  * - Currently only supports HMAC SHA-512 signing.
25
+ * - The `exp` claim defaults to 30 days from now, and `iat` / `nbf` default to "now".
25
26
  *
26
- * @param claims The payload claims to include in the JWT.
27
- * @param secret The secret key to sign the JWT with.
28
- * @param expiry The expiry time in milliseconds (defaults to 30 days).
29
- *
30
- * @throws ValueError If the input parameters, e.g. `secret` or `issuer`, are invalid.
27
+ * @param claims The payload claims to include in the JWT, including optional `iat`, `nbf`, and `exp` values.
28
+ * @param secret The secret key to sign the JWT with (minimum 64 bytes / 512 bits).
29
+ * @returns A promise resolving to the signed JWT string token.
30
+ * @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
31
+ * @example const token = await encodeToken({ sub: "user1" }, secret)
32
+ * @see https://dhoulb.github.io/shelving/util/jwt/encodeToken
31
33
  */
32
34
  export async function encodeToken({ nbf = "now", iat = "now", exp = DAY * 30, ...claims }, secret) {
33
35
  // Encode header.
@@ -47,6 +49,14 @@ export async function encodeToken({ nbf = "now", iat = "now", exp = DAY * 30, ..
47
49
  }
48
50
  /**
49
51
  * Split a JSON Web Token into its header, payload, and signature, and decode and parse the JSON.
52
+ * - Does not verify the signature — use `verifyToken` for that.
53
+ *
54
+ * @param token The JWT string to split and decode.
55
+ * @param caller Identity of the calling function for error attribution.
56
+ * @returns A `TokenData` object with the raw segments and their decoded header, payload, and signature.
57
+ * @throws UnauthorizedError If the token is malformed, or its segments are not valid Base64URL-encoded JSON.
58
+ * @example splitToken("aaa.bbb.ccc") // { header, payload, signature, headerData, payloadData, signatureBytes }
59
+ * @see https://dhoulb.github.io/shelving/util/jwt/splitToken
50
60
  */
51
61
  export function splitToken(token, caller = splitToken) {
52
62
  // Split token.
@@ -82,10 +92,16 @@ export function splitToken(token, caller = splitToken) {
82
92
  /**
83
93
  * Decode a JWT, verify it, and return the full payload data.
84
94
  * - Currently only supports HMAC SHA-512 signing.
95
+ * - Allows a small amount of clock skew when checking `nbf` and `exp`.
85
96
  *
86
- * @throws ValueError If the input parameters, e.g. `secret` or `issuer`, are invalid.
87
- * @throws UnauthorizedError If the token is invalid or malformed.
88
- * @throws UnauthorizedError If the token signature is incorrect, token is expired or not issued yet.
97
+ * @param token The JWT string to verify.
98
+ * @param secret The secret key to verify the JWT signature with (minimum 64 bytes / 512 bits).
99
+ * @param caller Identity of the calling function for error attribution.
100
+ * @returns A promise resolving to the decoded payload claims.
101
+ * @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
102
+ * @throws UnauthorizedError If the token is malformed, the signature is incorrect, or the token is expired or not yet valid.
103
+ * @example const { sub } = await verifyToken(token, secret)
104
+ * @see https://dhoulb.github.io/shelving/util/jwt/verifyToken
89
105
  */
90
106
  export async function verifyToken(token, secret, caller = verifyToken) {
91
107
  const { header, payload, signature, headerData, payloadData } = splitToken(token, caller);
@@ -112,7 +128,10 @@ export async function verifyToken(token, secret, caller = verifyToken) {
112
128
  * Set the `Authorization: Bearer {token}` on a `Request` object (by reference).
113
129
  *
114
130
  * @param request The `Request` object to set the token on.
131
+ * @param token The JWT string to set in the `Authorization` header.
115
132
  * @returns The same `Request` object that was passed in.
133
+ * @example setRequestToken(request, token)
134
+ * @see https://dhoulb.github.io/shelving/util/jwt/setRequestToken
116
135
  */
117
136
  export function setRequestToken(request, token) {
118
137
  request.headers.set("Authorization", `Bearer ${token}`);
@@ -123,6 +142,8 @@ export function setRequestToken(request, token) {
123
142
  *
124
143
  * @param request The `Request` object possibly containing an `Authorization: Bearer {token}` header to extract the token from.
125
144
  * @returns The string token extracted from the `Authorization` header, or `undefined` if not set.
145
+ * @example getRequestToken(request) // "eyJ..." or undefined
146
+ * @see https://dhoulb.github.io/shelving/util/jwt/getRequestToken
126
147
  */
127
148
  export function getRequestToken(request) {
128
149
  const auth = request.headers.get("Authorization");
@@ -133,8 +154,11 @@ export function getRequestToken(request) {
133
154
  * Extract the `Authorization: Bearer {token}` from a `Request` object, or throw `UnauthorizedError` if not set or malformed.
134
155
  *
135
156
  * @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
157
+ * @param caller Identity of the calling function for error attribution.
136
158
  * @returns The string token extracted from the `Authorization` header.
137
159
  * @throws UnauthorizedError If the `Authorization` header is not set, or the JWT it contains is not well-formed.
160
+ * @example requireRequestToken(request) // "eyJ..."
161
+ * @see https://dhoulb.github.io/shelving/util/jwt/requireRequestToken
138
162
  */
139
163
  export function requireRequestToken(request, caller = requireRequestToken) {
140
164
  const token = getRequestToken(request);
@@ -148,11 +172,11 @@ export function requireRequestToken(request, caller = requireRequestToken) {
148
172
  *
149
173
  * @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
150
174
  * @param secret The secret key to verify the JWT signature with.
151
- *
152
- * @returns The decoded payload data from the JWT.
175
+ * @param caller Identity of the calling function for error attribution.
176
+ * @returns A promise resolving to the decoded payload data from the JWT.
153
177
  * @throws UnauthorizedError If the `Authorization` header is not set, the JWT it contains is not well-formed, or the JWT signature is invalid.
154
- *
155
- * @example `const { sub, iss, customClaim } = await verifyRequestToken(request, secret);`
178
+ * @example const { sub, iss, customClaim } = await verifyRequestToken(request, secret)
179
+ * @see https://dhoulb.github.io/shelving/util/jwt/verifyRequestToken
156
180
  */
157
181
  export function verifyRequestToken(request, secret, caller = verifyRequestToken) {
158
182
  const token = requireRequestToken(request, caller);
package/util/lazy.d.ts CHANGED
@@ -1,18 +1,21 @@
1
1
  import type { Arguments } from "./function.js";
2
2
  /**
3
3
  * Lazy value: a plain value, or an initialiser function that returns that value.
4
- * @param ...args Any arguments the lazy value needs if it's a function.
4
+ *
5
+ * @see https://dhoulb.github.io/shelving/util/lazy/Lazy
5
6
  */
6
7
  export type Lazy<T, A extends Arguments = []> = ((...args: A) => T) | T;
7
8
  /**
8
9
  * Initialise a lazy value.
10
+ * - If `value` is a plain value, that value is returned.
11
+ * - If `value` is a function, it is called with `args` and its returned value is returned.
9
12
  *
10
13
  * @param value The lazy value to resolve.
11
- * - If this is a plain value, that value is returned.
12
- * - If this is a function, it is called and its returned value is returned.
13
- *
14
- * @param ...args Any additional arguments the initialiser needs.
15
- * - This array of values is passed into the function or class constructor as its parameters.
14
+ * @param args Any additional arguments passed into the initialiser function as its parameters.
15
+ * @returns The resolved value.
16
+ * @example getLazy(() => 123) // 123
17
+ * @example getLazy(123) // 123
18
+ * @see https://dhoulb.github.io/shelving/util/lazy/getLazy
16
19
  */
17
20
  export declare function getLazy<T, A extends Arguments>(value: (...args: A) => T, ...args: A): T;
18
21
  export declare function getLazy<T, A extends Arguments>(value: Lazy<T, A>, ...args: A): T;
package/util/link.d.ts CHANGED
@@ -2,7 +2,11 @@ import type { AnyCaller } from "./function.js";
2
2
  import type { Nullish } from "./null.js";
3
3
  import { type ImmutableURI, type PossibleURI } from "./uri.js";
4
4
  import { type ImmutableURL } from "./url.js";
5
- /** Anything that can be turned into an `<a href>` */
5
+ /**
6
+ * Anything that can be turned into an `<a href>`.
7
+ *
8
+ * @see https://dhoulb.github.io/shelving/util/link/PossibleLink
9
+ */
6
10
  export type PossibleLink = PossibleURI;
7
11
  /**
8
12
  * Resolve a possible link to an absolute URI string, or return `undefined` if resolution fails.
@@ -26,6 +30,7 @@ export type PossibleLink = PossibleURI;
26
30
  * @example getLink("/schema", pageURL, siteRoot) // → "https://x.com/app/schema" when siteRoot is "https://x.com/app/"
27
31
  * @example getLink("./db", new URL("https://x.com/app/schema/")) // → "https://x.com/app/schema/db"
28
32
  * @example getLink("mailto:a@b") // → "mailto:a@b"
33
+ * @see https://dhoulb.github.io/shelving/util/link/getLink
29
34
  */
30
35
  export declare function getLink(href: Nullish<PossibleLink>, url?: ImmutableURL, root?: ImmutableURL | undefined): ImmutableURI | undefined;
31
36
  /**
@@ -36,8 +41,10 @@ export declare function getLink(href: Nullish<PossibleLink>, url?: ImmutableURL,
36
41
  * @param href The link to resolve.
37
42
  * @param url The current page URL — base for relative refs and scheme-prefixed URIs.
38
43
  * @param root The site root URL — base for absolute paths. Defaults to `url`.
39
- * @param caller Identity of the calling function for error attribution.
44
+ * @param caller Function to attribute a thrown error to (defaults to `requireLink` itself).
40
45
  * @returns An absolute URI string.
41
- * @throws `RequiredError` if `link` cannot be resolved.
46
+ * @throws {RequiredError} If `href` cannot be resolved.
47
+ * @example requireLink("mailto:a@b") // → "mailto:a@b"
48
+ * @see https://dhoulb.github.io/shelving/util/link/requireLink
42
49
  */
43
50
  export declare function requireLink(href: PossibleLink, url?: ImmutableURL, root?: ImmutableURL, caller?: AnyCaller): ImmutableURI;
package/util/link.js CHANGED
@@ -24,6 +24,7 @@ import { getBasedURI, getURL } from "./url.js";
24
24
  * @example getLink("/schema", pageURL, siteRoot) // → "https://x.com/app/schema" when siteRoot is "https://x.com/app/"
25
25
  * @example getLink("./db", new URL("https://x.com/app/schema/")) // → "https://x.com/app/schema/db"
26
26
  * @example getLink("mailto:a@b") // → "mailto:a@b"
27
+ * @see https://dhoulb.github.io/shelving/util/link/getLink
27
28
  */
28
29
  export function getLink(href, url, root = url) {
29
30
  if (!href)
@@ -45,9 +46,11 @@ export function getLink(href, url, root = url) {
45
46
  * @param href The link to resolve.
46
47
  * @param url The current page URL — base for relative refs and scheme-prefixed URIs.
47
48
  * @param root The site root URL — base for absolute paths. Defaults to `url`.
48
- * @param caller Identity of the calling function for error attribution.
49
+ * @param caller Function to attribute a thrown error to (defaults to `requireLink` itself).
49
50
  * @returns An absolute URI string.
50
- * @throws `RequiredError` if `link` cannot be resolved.
51
+ * @throws {RequiredError} If `href` cannot be resolved.
52
+ * @example requireLink("mailto:a@b") // → "mailto:a@b"
53
+ * @see https://dhoulb.github.io/shelving/util/link/requireLink
51
54
  */
52
55
  export function requireLink(href, url, root, caller = requireLink) {
53
56
  const uri = getLink(href, url, root);
package/util/log.d.ts CHANGED
@@ -1,7 +1,30 @@
1
1
  /** biome-ignore-all lint/suspicious/noConsole: This file's purpose is to write logs. */
2
- /** Log a `Request` */
2
+ /**
3
+ * Log a `Request` to the console.
4
+ *
5
+ * @param request The `Request` to log.
6
+ * @returns A promise that resolves once the request has been logged.
7
+ * @example await logRequest(request)
8
+ * @see https://dhoulb.github.io/shelving/util/log/logRequest
9
+ */
3
10
  export declare function logRequest(request: Request): Promise<void>;
4
- /** Log a `Response` to a `Request` */
11
+ /**
12
+ * Log a `Response` to a `Request` to the console.
13
+ *
14
+ * @param response The `Response` to log.
15
+ * @param request The originating `Request`, included in the log for context.
16
+ * @returns A promise that resolves once the response has been logged.
17
+ * @example await logRequestResponse(response, request)
18
+ * @see https://dhoulb.github.io/shelving/util/log/logRequestResponse
19
+ */
5
20
  export declare function logRequestResponse(response: Response, request: Request): Promise<void>;
6
- /** Log an `Error` from a `Request` */
21
+ /**
22
+ * Log an `Error` from a `Request` to the console.
23
+ *
24
+ * @param reason The error value to log.
25
+ * @param request The originating `Request`, included in the log for context.
26
+ * @returns Nothing.
27
+ * @example logRequestError(error, request)
28
+ * @see https://dhoulb.github.io/shelving/util/log/logRequestError
29
+ */
7
30
  export declare function logRequestError(reason: unknown, request: Request): void;
package/util/log.js CHANGED
@@ -1,15 +1,38 @@
1
1
  /** biome-ignore-all lint/suspicious/noConsole: This file's purpose is to write logs. */
2
2
  import { ANSI_FAILURE, ANSI_LEFT, ANSI_RIGHT } from "./ansi.js";
3
3
  import { debug, debugFullRequest, debugFullResponse, debugRequest } from "./debug.js";
4
- /** Log a `Request` */
4
+ /**
5
+ * Log a `Request` to the console.
6
+ *
7
+ * @param request The `Request` to log.
8
+ * @returns A promise that resolves once the request has been logged.
9
+ * @example await logRequest(request)
10
+ * @see https://dhoulb.github.io/shelving/util/log/logRequest
11
+ */
5
12
  export async function logRequest(request) {
6
13
  console.log(`${ANSI_RIGHT} ${await debugFullRequest(request)}`);
7
14
  }
8
- /** Log a `Response` to a `Request` */
15
+ /**
16
+ * Log a `Response` to a `Request` to the console.
17
+ *
18
+ * @param response The `Response` to log.
19
+ * @param request The originating `Request`, included in the log for context.
20
+ * @returns A promise that resolves once the response has been logged.
21
+ * @example await logRequestResponse(response, request)
22
+ * @see https://dhoulb.github.io/shelving/util/log/logRequestResponse
23
+ */
9
24
  export async function logRequestResponse(response, request) {
10
25
  console.log(`${ANSI_LEFT} ${debugRequest(request)}\n\n${await debugFullResponse(response)}`);
11
26
  }
12
- /** Log an `Error` from a `Request` */
27
+ /**
28
+ * Log an `Error` from a `Request` to the console.
29
+ *
30
+ * @param reason The error value to log.
31
+ * @param request The originating `Request`, included in the log for context.
32
+ * @returns Nothing.
33
+ * @example logRequestError(error, request)
34
+ * @see https://dhoulb.github.io/shelving/util/log/logRequestError
35
+ */
13
36
  export function logRequestError(reason, request) {
14
37
  console.error(`${ANSI_FAILURE} ${debugRequest(request)}\n\n${debug(reason)}`);
15
38
  }