shelving 1.236.0 → 1.236.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/api/cache/APICache.d.ts +69 -6
  2. package/api/cache/APICache.js +61 -5
  3. package/api/cache/EndpointCache.d.ts +75 -7
  4. package/api/cache/EndpointCache.js +75 -7
  5. package/api/endpoint/Endpoint.d.ts +141 -25
  6. package/api/endpoint/Endpoint.js +55 -9
  7. package/api/endpoint/util.d.ts +28 -6
  8. package/api/provider/APIProvider.d.ts +58 -14
  9. package/api/provider/APIProvider.js +24 -2
  10. package/api/provider/CachedAPIProvider.d.ts +58 -5
  11. package/api/provider/CachedAPIProvider.js +58 -6
  12. package/api/provider/ClientAPIProvider.d.ts +80 -4
  13. package/api/provider/ClientAPIProvider.js +75 -4
  14. package/api/provider/DebugAPIProvider.d.ts +40 -1
  15. package/api/provider/DebugAPIProvider.js +40 -1
  16. package/api/provider/JSONAPIProvider.d.ts +18 -2
  17. package/api/provider/JSONAPIProvider.js +18 -2
  18. package/api/provider/LoggingAPIProvider.d.ts +25 -2
  19. package/api/provider/LoggingAPIProvider.js +25 -2
  20. package/api/provider/MockAPIProvider.d.ts +72 -1
  21. package/api/provider/MockAPIProvider.js +60 -4
  22. package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
  23. package/api/provider/MockEndpointAPIProvider.js +9 -0
  24. package/api/provider/ThroughAPIProvider.d.ts +67 -1
  25. package/api/provider/ThroughAPIProvider.js +67 -1
  26. package/api/provider/ValidationAPIProvider.d.ts +32 -1
  27. package/api/provider/ValidationAPIProvider.js +32 -1
  28. package/api/provider/XMLAPIProvider.d.ts +18 -2
  29. package/api/provider/XMLAPIProvider.js +18 -2
  30. package/api/store/EndpointStore.d.ts +24 -1
  31. package/api/store/EndpointStore.js +24 -1
  32. package/bun/BunPostgreSQLProvider.d.ts +38 -0
  33. package/bun/BunPostgreSQLProvider.js +38 -2
  34. package/cloudflare/CloudflareD1Provider.d.ts +29 -2
  35. package/cloudflare/CloudflareD1Provider.js +29 -2
  36. package/cloudflare/CloudflareKVProvider.d.ts +115 -0
  37. package/cloudflare/CloudflareKVProvider.js +115 -0
  38. package/cloudflare/types.d.ts +41 -7
  39. package/db/cache/CollectionCache.d.ts +83 -7
  40. package/db/cache/CollectionCache.js +83 -7
  41. package/db/cache/DBCache.d.ts +93 -8
  42. package/db/cache/DBCache.js +85 -7
  43. package/db/collection/Collection.d.ts +103 -15
  44. package/db/collection/Collection.js +58 -6
  45. package/db/migrate/DBMigrator.d.ts +29 -1
  46. package/db/migrate/DBMigrator.js +20 -1
  47. package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
  48. package/db/migrate/PostgreSQLMigrator.js +8 -1
  49. package/db/migrate/SQLMigrator.d.ts +63 -4
  50. package/db/migrate/SQLMigrator.js +51 -1
  51. package/db/migrate/SQLiteMigrator.d.ts +8 -1
  52. package/db/migrate/SQLiteMigrator.js +8 -1
  53. package/db/provider/CacheDBProvider.d.ts +135 -1
  54. package/db/provider/CacheDBProvider.js +135 -1
  55. package/db/provider/ChangesDBProvider.d.ts +84 -3
  56. package/db/provider/ChangesDBProvider.js +77 -2
  57. package/db/provider/DBProvider.d.ts +148 -1
  58. package/db/provider/DBProvider.js +51 -1
  59. package/db/provider/DebugDBProvider.d.ts +118 -1
  60. package/db/provider/DebugDBProvider.js +118 -1
  61. package/db/provider/MemoryDBProvider.d.ts +262 -7
  62. package/db/provider/MemoryDBProvider.js +262 -7
  63. package/db/provider/MockDBProvider.d.ts +113 -2
  64. package/db/provider/MockDBProvider.js +106 -1
  65. package/db/provider/PostgreSQLProvider.d.ts +34 -2
  66. package/db/provider/PostgreSQLProvider.js +34 -4
  67. package/db/provider/SQLProvider.d.ts +250 -14
  68. package/db/provider/SQLProvider.js +237 -13
  69. package/db/provider/SQLiteProvider.d.ts +41 -1
  70. package/db/provider/SQLiteProvider.js +41 -4
  71. package/db/provider/ThroughDBProvider.d.ts +156 -1
  72. package/db/provider/ThroughDBProvider.js +156 -1
  73. package/db/provider/ValidationDBProvider.d.ts +120 -1
  74. package/db/provider/ValidationDBProvider.js +120 -1
  75. package/db/store/ItemStore.d.ts +38 -2
  76. package/db/store/ItemStore.js +38 -2
  77. package/db/store/QueryStore.d.ts +64 -6
  78. package/db/store/QueryStore.js +64 -6
  79. package/error/BaseError.d.ts +27 -2
  80. package/error/BaseError.js +14 -0
  81. package/error/Errors.d.ts +12 -1
  82. package/error/Errors.js +12 -1
  83. package/error/NetworkError.d.ts +13 -1
  84. package/error/NetworkError.js +13 -1
  85. package/error/RequestError.d.ts +90 -7
  86. package/error/RequestError.js +90 -7
  87. package/error/RequiredError.d.ts +11 -1
  88. package/error/RequiredError.js +11 -1
  89. package/error/ResponseError.d.ts +19 -2
  90. package/error/ResponseError.js +19 -2
  91. package/error/UnexpectedError.d.ts +14 -1
  92. package/error/UnexpectedError.js +14 -1
  93. package/error/UnimplementedError.d.ts +13 -1
  94. package/error/UnimplementedError.js +13 -1
  95. package/error/ValueError.d.ts +14 -1
  96. package/error/ValueError.js +14 -1
  97. package/extract/DirectoryExtractor.d.ts +35 -1
  98. package/extract/DirectoryExtractor.js +30 -0
  99. package/extract/Extractor.d.ts +21 -2
  100. package/extract/Extractor.js +7 -1
  101. package/extract/FileExtractor.d.ts +18 -0
  102. package/extract/FileExtractor.js +18 -0
  103. package/extract/IndexExtractor.d.ts +36 -1
  104. package/extract/IndexExtractor.js +31 -0
  105. package/extract/MarkupExtractor.d.ts +15 -0
  106. package/extract/MarkupExtractor.js +15 -0
  107. package/extract/MergingExtractor.d.ts +36 -1
  108. package/extract/MergingExtractor.js +31 -0
  109. package/extract/ModuleExtractor.d.ts +25 -1
  110. package/extract/ModuleExtractor.js +20 -0
  111. package/extract/PackageExtractor.d.ts +36 -1
  112. package/extract/PackageExtractor.js +31 -0
  113. package/extract/ThroughExtractor.d.ts +22 -1
  114. package/extract/ThroughExtractor.js +22 -1
  115. package/extract/TypescriptExtractor.d.ts +21 -0
  116. package/extract/TypescriptExtractor.js +28 -3
  117. package/firestore/client/FirestoreClientProvider.d.ts +129 -4
  118. package/firestore/client/FirestoreClientProvider.js +129 -4
  119. package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
  120. package/firestore/lite/FirestoreLiteProvider.js +128 -3
  121. package/firestore/server/FirestoreServerProvider.d.ts +129 -2
  122. package/firestore/server/FirestoreServerProvider.js +129 -2
  123. package/markup/MarkupParser.d.ts +57 -10
  124. package/markup/MarkupParser.js +50 -9
  125. package/markup/MarkupRule.d.ts +34 -1
  126. package/markup/Parser.d.ts +18 -0
  127. package/markup/Parser.js +11 -0
  128. package/markup/rule/blockquote.d.ts +3 -0
  129. package/markup/rule/blockquote.js +3 -0
  130. package/markup/rule/code.d.ts +3 -0
  131. package/markup/rule/code.js +3 -0
  132. package/markup/rule/fenced.d.ts +3 -0
  133. package/markup/rule/fenced.js +3 -0
  134. package/markup/rule/heading.d.ts +3 -0
  135. package/markup/rule/heading.js +3 -0
  136. package/markup/rule/index.d.ts +16 -3
  137. package/markup/rule/index.js +16 -3
  138. package/markup/rule/inline.d.ts +4 -1
  139. package/markup/rule/inline.js +5 -2
  140. package/markup/rule/linebreak.d.ts +3 -0
  141. package/markup/rule/linebreak.js +3 -0
  142. package/markup/rule/link.d.ts +6 -0
  143. package/markup/rule/link.js +6 -0
  144. package/markup/rule/ordered.d.ts +3 -0
  145. package/markup/rule/ordered.js +3 -0
  146. package/markup/rule/paragraph.d.ts +3 -0
  147. package/markup/rule/paragraph.js +3 -0
  148. package/markup/rule/separator.d.ts +3 -0
  149. package/markup/rule/separator.js +3 -0
  150. package/markup/rule/table.d.ts +3 -0
  151. package/markup/rule/table.js +3 -0
  152. package/markup/rule/unordered.d.ts +3 -0
  153. package/markup/rule/unordered.js +3 -0
  154. package/markup/util/regexp.d.ts +80 -3
  155. package/markup/util/regexp.js +44 -0
  156. package/package.json +1 -1
  157. package/react/createAPIContext.d.ts +15 -0
  158. package/react/createAPIContext.js +10 -0
  159. package/react/createDBContext.d.ts +15 -0
  160. package/react/createDBContext.js +10 -0
  161. package/react/useInstance.d.ts +11 -0
  162. package/react/useInstance.js +11 -0
  163. package/react/useLazy.d.ts +11 -0
  164. package/react/useMap.d.ts +14 -1
  165. package/react/useMap.js +14 -1
  166. package/react/useReduce.d.ts +12 -0
  167. package/react/useSequence.d.ts +10 -0
  168. package/react/useSequence.js +10 -0
  169. package/react/useStore.d.ts +16 -1
  170. package/schema/AddressSchema.d.ts +41 -4
  171. package/schema/AddressSchema.js +36 -3
  172. package/schema/ArraySchema.d.ts +48 -6
  173. package/schema/ArraySchema.js +40 -5
  174. package/schema/BooleanSchema.d.ts +59 -3
  175. package/schema/BooleanSchema.js +51 -2
  176. package/schema/ChoiceSchema.d.ts +61 -7
  177. package/schema/ChoiceSchema.js +44 -2
  178. package/schema/ColorSchema.d.ts +41 -8
  179. package/schema/ColorSchema.js +36 -7
  180. package/schema/CountrySchema.d.ts +44 -4
  181. package/schema/CountrySchema.js +39 -3
  182. package/schema/CurrencyAmountSchema.d.ts +104 -8
  183. package/schema/CurrencyAmountSchema.js +91 -4
  184. package/schema/CurrencyCodeSchema.d.ts +56 -4
  185. package/schema/CurrencyCodeSchema.js +49 -3
  186. package/schema/DataSchema.d.ts +101 -10
  187. package/schema/DataSchema.js +87 -8
  188. package/schema/DateSchema.d.ts +73 -4
  189. package/schema/DateSchema.js +57 -2
  190. package/schema/DateTimeSchema.d.ts +40 -3
  191. package/schema/DateTimeSchema.js +40 -3
  192. package/schema/DictionarySchema.d.ts +54 -4
  193. package/schema/DictionarySchema.js +47 -3
  194. package/schema/EmailSchema.d.ts +34 -3
  195. package/schema/EmailSchema.js +34 -3
  196. package/schema/EntitySchema.d.ts +45 -4
  197. package/schema/EntitySchema.js +38 -3
  198. package/schema/FileSchema.d.ts +45 -4
  199. package/schema/FileSchema.js +39 -3
  200. package/schema/KeySchema.d.ts +32 -3
  201. package/schema/KeySchema.js +32 -3
  202. package/schema/NullableSchema.d.ts +64 -4
  203. package/schema/NullableSchema.js +59 -3
  204. package/schema/NumberSchema.d.ts +137 -12
  205. package/schema/NumberSchema.js +127 -11
  206. package/schema/OptionalSchema.d.ts +61 -4
  207. package/schema/OptionalSchema.js +56 -4
  208. package/schema/PasswordSchema.d.ts +37 -1
  209. package/schema/PasswordSchema.js +32 -1
  210. package/schema/PhoneSchema.d.ts +40 -4
  211. package/schema/PhoneSchema.js +35 -3
  212. package/schema/RequiredSchema.d.ts +39 -3
  213. package/schema/RequiredSchema.js +41 -3
  214. package/schema/Schema.d.ts +67 -7
  215. package/schema/Schema.js +42 -6
  216. package/schema/SlugSchema.d.ts +37 -5
  217. package/schema/SlugSchema.js +37 -5
  218. package/schema/StringSchema.d.ts +124 -19
  219. package/schema/StringSchema.js +107 -17
  220. package/schema/ThroughSchema.d.ts +35 -2
  221. package/schema/ThroughSchema.js +30 -1
  222. package/schema/TimeSchema.d.ts +43 -3
  223. package/schema/TimeSchema.js +43 -3
  224. package/schema/URISchema.d.ts +67 -6
  225. package/schema/URISchema.js +60 -6
  226. package/schema/URLSchema.d.ts +69 -6
  227. package/schema/URLSchema.js +61 -6
  228. package/schema/UUIDSchema.d.ts +37 -4
  229. package/schema/UUIDSchema.js +37 -4
  230. package/sequence/DeferredSequence.d.ts +49 -3
  231. package/sequence/DeferredSequence.js +39 -3
  232. package/sequence/InspectSequence.d.ts +59 -5
  233. package/sequence/InspectSequence.js +59 -5
  234. package/sequence/LazySequence.d.ts +30 -2
  235. package/sequence/LazySequence.js +30 -2
  236. package/sequence/Sequence.d.ts +11 -0
  237. package/sequence/Sequence.js +10 -0
  238. package/sequence/ThroughSequence.d.ts +15 -0
  239. package/sequence/ThroughSequence.js +15 -0
  240. package/store/ArrayStore.d.ts +74 -11
  241. package/store/ArrayStore.js +74 -11
  242. package/store/BooleanStore.d.ts +19 -2
  243. package/store/BooleanStore.js +19 -2
  244. package/store/BusyStore.d.ts +13 -1
  245. package/store/BusyStore.js +13 -1
  246. package/store/DataStore.d.ts +118 -15
  247. package/store/DataStore.js +118 -15
  248. package/store/DictionaryStore.d.ts +66 -8
  249. package/store/DictionaryStore.js +66 -8
  250. package/store/FetchStore.d.ts +43 -6
  251. package/store/FetchStore.js +36 -5
  252. package/store/PathStore.d.ts +44 -5
  253. package/store/PathStore.js +44 -5
  254. package/store/PayloadFetchStore.d.ts +16 -1
  255. package/store/PayloadFetchStore.js +9 -1
  256. package/store/Store.d.ts +85 -16
  257. package/store/Store.js +52 -10
  258. package/store/URLStore.d.ts +173 -15
  259. package/store/URLStore.js +173 -15
  260. package/test/basics.d.ts +70 -0
  261. package/test/basics.js +60 -0
  262. package/test/people.d.ts +45 -0
  263. package/test/people.js +35 -0
  264. package/test/util.d.ts +30 -3
  265. package/test/util.js +30 -3
  266. package/ui/app/App.d.ts +14 -2
  267. package/ui/app/App.js +9 -2
  268. package/ui/app/App.tsx +14 -2
  269. package/ui/block/Address.d.ts +45 -3
  270. package/ui/block/Address.js +30 -3
  271. package/ui/block/Address.tsx +46 -3
  272. package/ui/block/Block.d.ts +23 -1
  273. package/ui/block/Block.js +13 -1
  274. package/ui/block/Block.tsx +23 -1
  275. package/ui/block/Blockquote.d.ts +21 -0
  276. package/ui/block/Blockquote.js +16 -0
  277. package/ui/block/Blockquote.tsx +22 -0
  278. package/ui/block/Caption.d.ts +21 -1
  279. package/ui/block/Caption.js +16 -1
  280. package/ui/block/Caption.tsx +22 -1
  281. package/ui/block/Card.d.ts +6 -0
  282. package/ui/block/Card.js +1 -0
  283. package/ui/block/Card.tsx +6 -0
  284. package/ui/block/Definitions.d.ts +18 -0
  285. package/ui/block/Definitions.js +13 -0
  286. package/ui/block/Definitions.tsx +19 -0
  287. package/ui/block/Divider.d.ts +21 -0
  288. package/ui/block/Divider.js +16 -0
  289. package/ui/block/Divider.tsx +22 -0
  290. package/ui/block/Heading.d.ts +20 -1
  291. package/ui/block/Heading.js +15 -0
  292. package/ui/block/Heading.tsx +21 -1
  293. package/ui/block/Image.d.ts +23 -0
  294. package/ui/block/Image.js +18 -0
  295. package/ui/block/Image.tsx +24 -0
  296. package/ui/block/Label.d.ts +18 -3
  297. package/ui/block/Label.js +13 -3
  298. package/ui/block/Label.tsx +18 -3
  299. package/ui/block/List.d.ts +30 -0
  300. package/ui/block/List.js +25 -0
  301. package/ui/block/List.tsx +32 -0
  302. package/ui/block/Panel.d.ts +13 -1
  303. package/ui/block/Panel.js +3 -0
  304. package/ui/block/Panel.tsx +13 -1
  305. package/ui/block/Paragraph.d.ts +23 -0
  306. package/ui/block/Paragraph.js +18 -0
  307. package/ui/block/Paragraph.tsx +24 -0
  308. package/ui/block/Preformatted.d.ts +20 -0
  309. package/ui/block/Preformatted.js +15 -0
  310. package/ui/block/Preformatted.tsx +21 -0
  311. package/ui/block/Prose.d.ts +14 -1
  312. package/ui/block/Prose.js +9 -1
  313. package/ui/block/Prose.tsx +14 -1
  314. package/ui/block/Section.d.ts +69 -6
  315. package/ui/block/Section.js +59 -6
  316. package/ui/block/Section.tsx +70 -6
  317. package/ui/block/Subheading.d.ts +20 -1
  318. package/ui/block/Subheading.js +15 -0
  319. package/ui/block/Subheading.tsx +21 -1
  320. package/ui/block/Table.d.ts +20 -0
  321. package/ui/block/Table.js +15 -0
  322. package/ui/block/Table.tsx +21 -0
  323. package/ui/block/Title.d.ts +20 -1
  324. package/ui/block/Title.js +15 -0
  325. package/ui/block/Title.tsx +21 -1
  326. package/ui/block/Video.d.ts +50 -3
  327. package/ui/block/Video.js +30 -3
  328. package/ui/block/Video.tsx +50 -3
  329. package/ui/dialog/Dialog.d.ts +28 -1
  330. package/ui/dialog/Dialog.js +18 -1
  331. package/ui/dialog/Dialog.tsx +28 -1
  332. package/ui/dialog/Dialogs.d.ts +53 -6
  333. package/ui/dialog/Dialogs.js +43 -6
  334. package/ui/dialog/Dialogs.tsx +53 -6
  335. package/ui/dialog/Modal.d.ts +13 -0
  336. package/ui/dialog/Modal.js +8 -0
  337. package/ui/dialog/Modal.tsx +13 -0
  338. package/ui/docs/DocumentationButtons.d.ts +5 -1
  339. package/ui/docs/DocumentationButtons.tsx +5 -1
  340. package/ui/docs/DocumentationCard.d.ts +6 -1
  341. package/ui/docs/DocumentationCard.js +6 -1
  342. package/ui/docs/DocumentationCard.tsx +6 -1
  343. package/ui/docs/DocumentationKind.d.ts +13 -1
  344. package/ui/docs/DocumentationKind.js +8 -0
  345. package/ui/docs/DocumentationKind.tsx +13 -1
  346. package/ui/docs/DocumentationPage.d.ts +6 -1
  347. package/ui/docs/DocumentationPage.js +6 -1
  348. package/ui/docs/DocumentationPage.tsx +6 -1
  349. package/ui/docs/DocumentationSignatures.d.ts +10 -1
  350. package/ui/docs/DocumentationSignatures.js +5 -0
  351. package/ui/docs/DocumentationSignatures.tsx +10 -1
  352. package/ui/form/ArrayInput.d.ts +15 -0
  353. package/ui/form/ArrayInput.tsx +15 -0
  354. package/ui/form/ArrayRadioInputs.d.ts +10 -0
  355. package/ui/form/ArrayRadioInputs.js +5 -0
  356. package/ui/form/ArrayRadioInputs.tsx +10 -0
  357. package/ui/form/Button.d.ts +19 -3
  358. package/ui/form/Button.js +14 -2
  359. package/ui/form/Button.tsx +19 -3
  360. package/ui/form/ButtonInput.d.ts +14 -1
  361. package/ui/form/ButtonInput.js +9 -1
  362. package/ui/form/ButtonInput.tsx +14 -1
  363. package/ui/form/ButtonInputPopover.d.ts +10 -0
  364. package/ui/form/ButtonInputPopover.js +5 -0
  365. package/ui/form/ButtonInputPopover.tsx +10 -0
  366. package/ui/form/ButtonPopover.d.ts +11 -1
  367. package/ui/form/ButtonPopover.js +6 -1
  368. package/ui/form/ButtonPopover.tsx +11 -1
  369. package/ui/form/CheckboxInput.d.ts +14 -1
  370. package/ui/form/CheckboxInput.js +9 -1
  371. package/ui/form/CheckboxInput.tsx +14 -1
  372. package/ui/form/ChoiceRadioInputs.d.ts +10 -0
  373. package/ui/form/ChoiceRadioInputs.tsx +10 -0
  374. package/ui/form/Clickable.d.ts +45 -5
  375. package/ui/form/Clickable.js +30 -3
  376. package/ui/form/Clickable.tsx +45 -5
  377. package/ui/form/DataInput.d.ts +14 -0
  378. package/ui/form/DataInput.tsx +14 -0
  379. package/ui/form/DateInput.d.ts +14 -0
  380. package/ui/form/DateInput.js +9 -0
  381. package/ui/form/DateInput.tsx +14 -0
  382. package/ui/form/DictionaryInput.d.ts +15 -0
  383. package/ui/form/DictionaryInput.tsx +15 -0
  384. package/ui/form/Field.d.ts +5 -0
  385. package/ui/form/Field.tsx +5 -0
  386. package/ui/form/FileInput.d.ts +14 -0
  387. package/ui/form/FileInput.js +9 -0
  388. package/ui/form/FileInput.tsx +14 -0
  389. package/ui/form/Form.d.ts +55 -6
  390. package/ui/form/Form.js +35 -3
  391. package/ui/form/Form.tsx +55 -6
  392. package/ui/form/FormContext.d.ts +24 -3
  393. package/ui/form/FormContext.js +5 -1
  394. package/ui/form/FormContext.tsx +24 -3
  395. package/ui/form/FormFields.d.ts +15 -2
  396. package/ui/form/FormFields.js +15 -2
  397. package/ui/form/FormFields.tsx +15 -2
  398. package/ui/form/FormFooter.d.ts +13 -3
  399. package/ui/form/FormFooter.js +8 -3
  400. package/ui/form/FormFooter.tsx +13 -3
  401. package/ui/form/FormInput.d.ts +21 -2
  402. package/ui/form/FormInput.js +16 -2
  403. package/ui/form/FormInput.tsx +21 -2
  404. package/ui/form/FormMessage.d.ts +8 -1
  405. package/ui/form/FormMessage.js +8 -1
  406. package/ui/form/FormMessage.tsx +8 -2
  407. package/ui/form/FormNotice.d.ts +8 -1
  408. package/ui/form/FormNotice.js +8 -1
  409. package/ui/form/FormNotice.tsx +8 -2
  410. package/ui/form/FormNotify.d.ts +8 -1
  411. package/ui/form/FormNotify.js +8 -1
  412. package/ui/form/FormNotify.tsx +8 -2
  413. package/ui/form/FormStore.d.ts +50 -6
  414. package/ui/form/FormStore.js +50 -6
  415. package/ui/form/FormStore.tsx +50 -6
  416. package/ui/form/Input.d.ts +65 -1
  417. package/ui/form/Input.js +60 -0
  418. package/ui/form/Input.tsx +77 -1
  419. package/ui/form/NumberInput.d.ts +14 -0
  420. package/ui/form/NumberInput.js +9 -0
  421. package/ui/form/NumberInput.tsx +14 -0
  422. package/ui/form/OutputInput.d.ts +13 -1
  423. package/ui/form/OutputInput.js +8 -1
  424. package/ui/form/OutputInput.tsx +13 -1
  425. package/ui/form/Popover.d.ts +18 -2
  426. package/ui/form/Popover.js +8 -2
  427. package/ui/form/Popover.tsx +18 -2
  428. package/ui/form/Progress.d.ts +26 -2
  429. package/ui/form/Progress.js +16 -2
  430. package/ui/form/Progress.tsx +26 -2
  431. package/ui/form/QueryInput.d.ts +14 -5
  432. package/ui/form/QueryInput.js +9 -5
  433. package/ui/form/QueryInput.tsx +14 -5
  434. package/ui/form/RadioInput.d.ts +14 -1
  435. package/ui/form/RadioInput.js +9 -1
  436. package/ui/form/RadioInput.tsx +14 -1
  437. package/ui/form/SchemaInput.d.ts +138 -7
  438. package/ui/form/SchemaInput.js +79 -4
  439. package/ui/form/SchemaInput.tsx +138 -7
  440. package/ui/form/SelectInput.d.ts +14 -0
  441. package/ui/form/SelectInput.tsx +14 -0
  442. package/ui/form/SubmitButton.d.ts +14 -1
  443. package/ui/form/SubmitButton.js +9 -1
  444. package/ui/form/SubmitButton.tsx +14 -1
  445. package/ui/form/TextInput.d.ts +15 -0
  446. package/ui/form/TextInput.js +10 -0
  447. package/ui/form/TextInput.tsx +15 -0
  448. package/ui/inline/Code.d.ts +29 -0
  449. package/ui/inline/Code.js +24 -0
  450. package/ui/inline/Code.tsx +31 -0
  451. package/ui/inline/Deleted.d.ts +23 -0
  452. package/ui/inline/Deleted.js +18 -0
  453. package/ui/inline/Deleted.tsx +24 -0
  454. package/ui/inline/Emphasis.d.ts +23 -0
  455. package/ui/inline/Emphasis.js +18 -0
  456. package/ui/inline/Emphasis.tsx +24 -0
  457. package/ui/inline/Inserted.d.ts +23 -0
  458. package/ui/inline/Inserted.js +18 -0
  459. package/ui/inline/Inserted.tsx +24 -0
  460. package/ui/inline/Link.d.ts +23 -0
  461. package/ui/inline/Link.js +18 -0
  462. package/ui/inline/Link.tsx +24 -0
  463. package/ui/inline/Mark.d.ts +23 -0
  464. package/ui/inline/Mark.js +18 -0
  465. package/ui/inline/Mark.tsx +24 -0
  466. package/ui/inline/Small.d.ts +23 -0
  467. package/ui/inline/Small.js +18 -0
  468. package/ui/inline/Small.tsx +24 -0
  469. package/ui/inline/Strong.d.ts +23 -0
  470. package/ui/inline/Strong.js +18 -0
  471. package/ui/inline/Strong.tsx +24 -0
  472. package/ui/inline/Subscript.d.ts +23 -0
  473. package/ui/inline/Subscript.js +18 -0
  474. package/ui/inline/Subscript.tsx +24 -0
  475. package/ui/inline/Superscript.d.ts +23 -0
  476. package/ui/inline/Superscript.js +18 -0
  477. package/ui/inline/Superscript.tsx +24 -0
  478. package/ui/inline/When.d.ts +42 -3
  479. package/ui/inline/When.js +27 -3
  480. package/ui/inline/When.tsx +42 -3
  481. package/ui/layout/CenteredLayout.d.ts +12 -1
  482. package/ui/layout/CenteredLayout.js +7 -1
  483. package/ui/layout/CenteredLayout.tsx +12 -1
  484. package/ui/layout/Layout.d.ts +12 -3
  485. package/ui/layout/Layout.js +12 -3
  486. package/ui/layout/Layout.ts +12 -3
  487. package/ui/layout/SidebarLayout.d.ts +12 -0
  488. package/ui/layout/SidebarLayout.js +7 -0
  489. package/ui/layout/SidebarLayout.tsx +12 -0
  490. package/ui/menu/Menu.d.ts +22 -0
  491. package/ui/menu/Menu.js +12 -0
  492. package/ui/menu/Menu.tsx +22 -0
  493. package/ui/misc/Catcher.d.ts +77 -5
  494. package/ui/misc/Catcher.js +47 -5
  495. package/ui/misc/Catcher.tsx +77 -5
  496. package/ui/misc/Loading.d.ts +20 -0
  497. package/ui/misc/Loading.js +15 -0
  498. package/ui/misc/Loading.tsx +20 -0
  499. package/ui/misc/Mapper.d.ts +13 -1
  500. package/ui/misc/Mapper.js +4 -0
  501. package/ui/misc/Mapper.tsx +13 -1
  502. package/ui/misc/Markup.d.ts +9 -1
  503. package/ui/misc/Markup.js +4 -0
  504. package/ui/misc/Markup.tsx +9 -1
  505. package/ui/misc/MetaContext.d.ts +24 -7
  506. package/ui/misc/MetaContext.js +19 -6
  507. package/ui/misc/MetaContext.tsx +24 -7
  508. package/ui/misc/StatusIcon.d.ts +16 -1
  509. package/ui/misc/StatusIcon.js +11 -1
  510. package/ui/misc/StatusIcon.tsx +16 -1
  511. package/ui/misc/Tag.d.ts +21 -0
  512. package/ui/misc/Tag.js +11 -0
  513. package/ui/misc/Tag.tsx +21 -0
  514. package/ui/notice/Message.d.ts +27 -1
  515. package/ui/notice/Message.js +22 -1
  516. package/ui/notice/Message.tsx +27 -1
  517. package/ui/notice/Notice.d.ts +24 -0
  518. package/ui/notice/Notice.js +19 -0
  519. package/ui/notice/Notice.tsx +24 -0
  520. package/ui/notice/NoticeStore.d.ts +30 -2
  521. package/ui/notice/NoticeStore.js +30 -2
  522. package/ui/notice/NoticeStore.ts +30 -2
  523. package/ui/notice/Notices.d.ts +11 -1
  524. package/ui/notice/Notices.js +6 -1
  525. package/ui/notice/Notices.tsx +11 -1
  526. package/ui/notice/NoticesStore.d.ts +23 -3
  527. package/ui/notice/NoticesStore.js +23 -3
  528. package/ui/notice/NoticesStore.ts +23 -3
  529. package/ui/page/HTML.d.ts +13 -2
  530. package/ui/page/HTML.js +8 -2
  531. package/ui/page/HTML.tsx +13 -2
  532. package/ui/page/Head.d.ts +5 -1
  533. package/ui/page/Head.js +5 -1
  534. package/ui/page/Head.tsx +5 -1
  535. package/ui/page/Page.d.ts +12 -1
  536. package/ui/page/Page.js +7 -1
  537. package/ui/page/Page.tsx +12 -1
  538. package/ui/router/Navigation.d.ts +11 -0
  539. package/ui/router/Navigation.js +6 -0
  540. package/ui/router/Navigation.tsx +11 -0
  541. package/ui/router/NavigationContext.d.ts +14 -2
  542. package/ui/router/NavigationContext.js +14 -2
  543. package/ui/router/NavigationContext.tsx +14 -2
  544. package/ui/router/NavigationStore.d.ts +29 -1
  545. package/ui/router/NavigationStore.js +29 -1
  546. package/ui/router/NavigationStore.tsx +29 -1
  547. package/ui/router/Router.d.ts +12 -1
  548. package/ui/router/Router.js +7 -1
  549. package/ui/router/Router.tsx +12 -1
  550. package/ui/router/Routes.d.ts +14 -4
  551. package/ui/router/Routes.tsx +14 -4
  552. package/ui/style/Color.d.ts +15 -2
  553. package/ui/style/Color.js +5 -0
  554. package/ui/style/Color.tsx +15 -2
  555. package/ui/style/Flex.d.ts +41 -4
  556. package/ui/style/Flex.js +26 -3
  557. package/ui/style/Flex.tsx +41 -4
  558. package/ui/style/Gap.d.ts +18 -3
  559. package/ui/style/Gap.js +8 -1
  560. package/ui/style/Gap.tsx +18 -3
  561. package/ui/style/Padding.d.ts +18 -3
  562. package/ui/style/Padding.js +8 -1
  563. package/ui/style/Padding.tsx +18 -3
  564. package/ui/style/Scroll.d.ts +36 -1
  565. package/ui/style/Scroll.js +26 -1
  566. package/ui/style/Scroll.tsx +37 -1
  567. package/ui/style/Space.d.ts +18 -3
  568. package/ui/style/Space.js +8 -1
  569. package/ui/style/Space.tsx +18 -3
  570. package/ui/style/Status.d.ts +23 -7
  571. package/ui/style/Status.js +13 -5
  572. package/ui/style/Status.tsx +23 -7
  573. package/ui/style/Tint.d.ts +7 -1
  574. package/ui/style/Tint.js +7 -1
  575. package/ui/style/Tint.tsx +7 -1
  576. package/ui/style/Typography.d.ts +38 -6
  577. package/ui/style/Typography.js +8 -0
  578. package/ui/style/Typography.tsx +38 -6
  579. package/ui/style/Width.d.ts +18 -1
  580. package/ui/style/Width.js +8 -0
  581. package/ui/style/Width.tsx +18 -1
  582. package/ui/transition/CollapseTransition.d.ts +13 -0
  583. package/ui/transition/CollapseTransition.js +8 -0
  584. package/ui/transition/CollapseTransition.tsx +13 -0
  585. package/ui/transition/FadeTransition.d.ts +13 -0
  586. package/ui/transition/FadeTransition.js +8 -0
  587. package/ui/transition/FadeTransition.tsx +13 -0
  588. package/ui/transition/HorizontalTransition.d.ts +13 -0
  589. package/ui/transition/HorizontalTransition.js +8 -0
  590. package/ui/transition/HorizontalTransition.tsx +13 -0
  591. package/ui/transition/Transition.d.ts +12 -4
  592. package/ui/transition/Transition.js +7 -3
  593. package/ui/transition/Transition.tsx +12 -4
  594. package/ui/transition/VerticalTransition.d.ts +13 -0
  595. package/ui/transition/VerticalTransition.js +8 -0
  596. package/ui/transition/VerticalTransition.tsx +13 -0
  597. package/ui/transition/util.d.ts +16 -6
  598. package/ui/transition/util.js +7 -1
  599. package/ui/transition/util.tsx +16 -6
  600. package/ui/tree/TreeApp.d.ts +11 -0
  601. package/ui/tree/TreeApp.js +6 -0
  602. package/ui/tree/TreeApp.tsx +11 -0
  603. package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
  604. package/ui/tree/TreeBreadcrumbs.js +6 -0
  605. package/ui/tree/TreeBreadcrumbs.tsx +11 -0
  606. package/ui/tree/TreeButton.d.ts +9 -1
  607. package/ui/tree/TreeButton.js +4 -0
  608. package/ui/tree/TreeButton.tsx +9 -1
  609. package/ui/tree/TreeCard.d.ts +8 -1
  610. package/ui/tree/TreeCard.js +8 -1
  611. package/ui/tree/TreeCard.tsx +8 -1
  612. package/ui/tree/TreeCards.d.ts +16 -1
  613. package/ui/tree/TreeCards.js +11 -1
  614. package/ui/tree/TreeCards.tsx +16 -1
  615. package/ui/tree/TreeContext.d.ts +18 -1
  616. package/ui/tree/TreeContext.js +18 -1
  617. package/ui/tree/TreeContext.tsx +18 -1
  618. package/ui/tree/TreeMenu.d.ts +28 -1
  619. package/ui/tree/TreeMenu.js +23 -1
  620. package/ui/tree/TreeMenu.tsx +28 -1
  621. package/ui/tree/TreePage.d.ts +6 -0
  622. package/ui/tree/TreePage.js +6 -0
  623. package/ui/tree/TreePage.tsx +6 -0
  624. package/ui/tree/TreeRouter.d.ts +17 -2
  625. package/ui/tree/TreeRouter.js +12 -2
  626. package/ui/tree/TreeRouter.tsx +17 -2
  627. package/ui/tree/TreeSidebar.d.ts +11 -0
  628. package/ui/tree/TreeSidebar.js +6 -0
  629. package/ui/tree/TreeSidebar.tsx +11 -0
  630. package/ui/util/context.d.ts +13 -1
  631. package/ui/util/context.ts +13 -1
  632. package/ui/util/css.d.ts +17 -4
  633. package/ui/util/css.js +5 -1
  634. package/ui/util/css.ts +17 -4
  635. package/ui/util/event.d.ts +9 -1
  636. package/ui/util/event.js +9 -1
  637. package/ui/util/event.ts +9 -1
  638. package/ui/util/focus.d.ts +24 -5
  639. package/ui/util/focus.js +24 -5
  640. package/ui/util/focus.ts +24 -5
  641. package/ui/util/meta.d.ts +113 -21
  642. package/ui/util/meta.js +73 -13
  643. package/ui/util/meta.ts +113 -21
  644. package/ui/util/notice.d.ts +98 -10
  645. package/ui/util/notice.js +93 -9
  646. package/ui/util/notice.ts +98 -10
  647. package/ui/util/props.d.ts +10 -2
  648. package/ui/util/props.ts +10 -2
  649. package/ui/util/refresh.d.ts +10 -1
  650. package/ui/util/refresh.js +10 -1
  651. package/ui/util/refresh.ts +10 -1
  652. package/ui/util/scroll.d.ts +20 -4
  653. package/ui/util/scroll.js +20 -4
  654. package/ui/util/scroll.ts +20 -4
  655. package/ui/util/state.d.ts +19 -5
  656. package/ui/util/state.js +19 -5
  657. package/ui/util/state.ts +19 -5
  658. package/util/ansi.d.ts +118 -0
  659. package/util/ansi.js +116 -0
  660. package/util/array.d.ts +349 -33
  661. package/util/array.js +284 -27
  662. package/util/async.d.ts +87 -9
  663. package/util/async.js +80 -8
  664. package/util/base64.d.ts +56 -6
  665. package/util/base64.js +56 -6
  666. package/util/boolean.d.ts +75 -10
  667. package/util/boolean.js +75 -10
  668. package/util/buffer.d.ts +26 -3
  669. package/util/buffer.js +21 -3
  670. package/util/bytes.d.ts +42 -4
  671. package/util/bytes.js +32 -2
  672. package/util/class.d.ts +59 -8
  673. package/util/class.js +44 -5
  674. package/util/color.d.ts +131 -13
  675. package/util/color.js +126 -12
  676. package/util/constants.d.ts +132 -19
  677. package/util/constants.js +132 -19
  678. package/util/crypto.d.ts +17 -1
  679. package/util/crypto.js +17 -1
  680. package/util/currency.d.ts +38 -4
  681. package/util/currency.js +33 -3
  682. package/util/data.d.ts +139 -24
  683. package/util/data.js +39 -5
  684. package/util/date.d.ts +152 -18
  685. package/util/date.js +147 -17
  686. package/util/debug.d.ts +112 -11
  687. package/util/debug.js +114 -11
  688. package/util/dictionary.d.ts +205 -24
  689. package/util/dictionary.js +162 -17
  690. package/util/diff.d.ts +22 -3
  691. package/util/diff.js +11 -1
  692. package/util/dispose.d.ts +74 -2
  693. package/util/dispose.js +74 -2
  694. package/util/duration.d.ts +278 -16
  695. package/util/duration.js +267 -15
  696. package/util/element.d.ts +59 -6
  697. package/util/element.js +32 -3
  698. package/util/entity.d.ts +39 -6
  699. package/util/entity.js +5 -1
  700. package/util/entry.d.ts +56 -9
  701. package/util/entry.js +32 -4
  702. package/util/env.d.ts +26 -4
  703. package/util/env.js +26 -4
  704. package/util/equal.d.ts +181 -17
  705. package/util/equal.js +181 -17
  706. package/util/error.d.ts +57 -5
  707. package/util/error.js +52 -4
  708. package/util/file.d.ts +30 -7
  709. package/util/file.js +25 -6
  710. package/util/filter.d.ts +36 -4
  711. package/util/filter.js +31 -3
  712. package/util/focus.d.ts +9 -1
  713. package/util/focus.js +9 -1
  714. package/util/format.d.ts +186 -22
  715. package/util/format.js +135 -14
  716. package/util/function.d.ts +66 -11
  717. package/util/function.js +31 -4
  718. package/util/geo.d.ts +60 -8
  719. package/util/geo.js +45 -5
  720. package/util/hash.d.ts +21 -2
  721. package/util/hash.js +21 -2
  722. package/util/http.d.ts +134 -19
  723. package/util/http.js +94 -11
  724. package/util/hydrate.d.ts +19 -2
  725. package/util/hydrate.js +12 -1
  726. package/util/item.d.ts +70 -11
  727. package/util/item.js +35 -4
  728. package/util/iterate.d.ts +109 -13
  729. package/util/iterate.js +86 -10
  730. package/util/jwt.d.ts +47 -13
  731. package/util/jwt.js +36 -12
  732. package/util/lazy.d.ts +9 -6
  733. package/util/link.d.ts +10 -3
  734. package/util/link.js +5 -2
  735. package/util/log.d.ts +26 -3
  736. package/util/log.js +26 -3
  737. package/util/map.d.ts +144 -19
  738. package/util/map.js +101 -11
  739. package/util/merge.d.ts +23 -1
  740. package/util/merge.js +6 -0
  741. package/util/null.d.ts +102 -13
  742. package/util/null.js +92 -11
  743. package/util/number.d.ts +125 -8
  744. package/util/number.js +120 -7
  745. package/util/object.d.ts +263 -31
  746. package/util/object.js +154 -17
  747. package/util/path.d.ts +91 -15
  748. package/util/path.js +60 -9
  749. package/util/query.d.ts +78 -9
  750. package/util/query.js +58 -6
  751. package/util/random.d.ts +67 -4
  752. package/util/random.js +67 -4
  753. package/util/regexp.d.ts +201 -24
  754. package/util/regexp.js +106 -11
  755. package/util/sequence.d.ts +66 -8
  756. package/util/sequence.js +52 -7
  757. package/util/serialise.d.ts +7 -1
  758. package/util/serialise.js +7 -1
  759. package/util/set.d.ts +103 -13
  760. package/util/set.js +83 -9
  761. package/util/sort.d.ts +32 -7
  762. package/util/sort.js +26 -6
  763. package/util/source.d.ts +28 -3
  764. package/util/source.js +22 -2
  765. package/util/start.d.ts +62 -5
  766. package/util/start.js +47 -2
  767. package/util/string.d.ts +209 -25
  768. package/util/string.js +188 -21
  769. package/util/template.d.ts +58 -9
  770. package/util/template.js +45 -6
  771. package/util/timeout.d.ts +35 -11
  772. package/util/timeout.js +35 -11
  773. package/util/transform.d.ts +87 -8
  774. package/util/transform.js +75 -7
  775. package/util/tree.d.ts +39 -6
  776. package/util/tree.js +3 -0
  777. package/util/types.d.ts +8 -2
  778. package/util/undefined.d.ts +47 -6
  779. package/util/undefined.js +47 -6
  780. package/util/units.d.ts +107 -12
  781. package/util/units.js +97 -12
  782. package/util/update.d.ts +36 -4
  783. package/util/update.js +24 -2
  784. package/util/uri.d.ts +138 -6
  785. package/util/uri.js +44 -3
  786. package/util/url.d.ts +152 -7
  787. package/util/url.js +136 -5
  788. package/util/uuid.d.ts +28 -3
  789. package/util/uuid.js +28 -3
  790. package/util/validate.d.ts +85 -20
  791. package/util/validate.js +61 -12
  792. package/util/xml.d.ts +9 -10
  793. package/util/xml.js +9 -10
@@ -3,36 +3,88 @@ import { awaitDispose } from "../../util/dispose.js";
3
3
  import { APICache } from "../cache/APICache.js";
4
4
  import { ThroughAPIProvider } from "./ThroughAPIProvider.js";
5
5
  /**
6
- * API provider wrapper that serves requests through an `APICache`.
7
- * - Constructor accepts a `source` provider and an optional default `maxAge`.
6
+ * API provider wrapper that serves requests through an `APICache` so repeated calls reuse cached results.
8
7
  * - On `call(...)`, triggers `cache.refresh(maxAge)` for the endpoint+payload before awaiting `cache.call(...)`.
9
8
  * - `invalidate`, `invalidateAll`, `refresh`, and `refreshAll` pass through to the underlying cache and use `this.maxAge` as the default refresh timing.
10
9
  *
11
- * @param `maxAge` The maximum age used when calling `call()` (defaults to `AVOID_REFRESH`, i.e. only refresh if the value is invalidated or still loading).
12
- * - Note: This is not used for `refresh()` calls — when you call `refresh()` you likely mean "do it now".
13
- * - When we are using `call()` on a cache, the entire point of the cache is to "cache", so the default isn't `0` like it is for `refresh()`
10
+ * @example
11
+ * const api = new CachedAPIProvider(source);
12
+ * const result = await api.call(endpoint, payload);
13
+ * @see https://dhoulb.github.io/shelving/api/provider/CachedAPIProvider/CachedAPIProvider
14
14
  */
15
15
  export class CachedAPIProvider extends ThroughAPIProvider {
16
+ /**
17
+ * The maximum age used when calling `call()`, defaulting to `AVOID_REFRESH` (only refresh if invalidated or still loading).
18
+ * - Not used for `refresh()` calls, which always refetch immediately.
19
+ * @see https://dhoulb.github.io/shelving/api/provider/CachedAPIProvider/CachedAPIProvider/maxAge
20
+ */
16
21
  maxAge;
17
22
  _cache;
23
+ /**
24
+ * Create a cached provider wrapping a source provider.
25
+ *
26
+ * @param source The source provider whose results are cached.
27
+ * @param maxAge Default maximum age in milliseconds for `call()` (defaults to `AVOID_REFRESH`).
28
+ * @example new CachedAPIProvider(source)
29
+ */
18
30
  constructor(source, maxAge = AVOID_REFRESH) {
19
31
  super(source);
20
32
  this.maxAge = maxAge;
21
33
  this._cache = new APICache(source);
22
34
  }
23
- // Override call to use the cache racther than calling fresh each time.
35
+ /**
36
+ * Call an endpoint through the cache, reusing a cached result where possible instead of fetching fresh.
37
+ *
38
+ * @param endpoint The endpoint to call.
39
+ * @param payload The payload to call the endpoint with.
40
+ * @param _options Request options (unused; the cache key is derived from endpoint and payload).
41
+ * @param caller The calling function used for error stack traces.
42
+ * @returns Promise resolving to the (possibly cached) result.
43
+ * @example await api.call(endpoint, payload)
44
+ * @see https://dhoulb.github.io/shelving/api/provider/CachedAPIProvider/CachedAPIProvider/call
45
+ */
24
46
  call(endpoint, payload, _options, caller = this.call) {
25
47
  return this._cache.call(endpoint, payload, this.maxAge, caller);
26
48
  }
49
+ /**
50
+ * Invalidate the cached result for a specific endpoint and payload.
51
+ *
52
+ * @param endpoint The endpoint whose cached result should be invalidated.
53
+ * @param payload The payload identifying the cached result.
54
+ * @example api.invalidate(endpoint, payload)
55
+ * @see https://dhoulb.github.io/shelving/api/provider/CachedAPIProvider/CachedAPIProvider/invalidate
56
+ */
27
57
  invalidate(endpoint, payload) {
28
58
  this._cache.invalidate(endpoint, payload);
29
59
  }
60
+ /**
61
+ * Invalidate every cached result for an endpoint, across all payloads.
62
+ *
63
+ * @param endpoint The endpoint whose cached results should be invalidated.
64
+ * @example api.invalidateAll(endpoint)
65
+ * @see https://dhoulb.github.io/shelving/api/provider/CachedAPIProvider/CachedAPIProvider/invalidateAll
66
+ */
30
67
  invalidateAll(endpoint) {
31
68
  this._cache.invalidateAll(endpoint);
32
69
  }
70
+ /**
71
+ * Refresh the cached result for a specific endpoint and payload.
72
+ *
73
+ * @param endpoint The endpoint whose cached result should be refreshed.
74
+ * @param payload The payload identifying the cached result.
75
+ * @example api.refresh(endpoint, payload)
76
+ * @see https://dhoulb.github.io/shelving/api/provider/CachedAPIProvider/CachedAPIProvider/refresh
77
+ */
33
78
  refresh(endpoint, payload) {
34
79
  this._cache.refresh(endpoint, payload, this.maxAge);
35
80
  }
81
+ /**
82
+ * Refresh every cached result for an endpoint, across all payloads.
83
+ *
84
+ * @param endpoint The endpoint whose cached results should be refreshed.
85
+ * @example api.refreshAll(endpoint)
86
+ * @see https://dhoulb.github.io/shelving/api/provider/CachedAPIProvider/CachedAPIProvider/refreshAll
87
+ */
36
88
  refreshAll(endpoint) {
37
89
  this._cache.refreshAll(endpoint, this.maxAge);
38
90
  }
@@ -5,7 +5,11 @@ import { type PossibleURIParams } from "../../util/uri.js";
5
5
  import { type PossibleURL } from "../../util/url.js";
6
6
  import type { Endpoint } from "../endpoint/Endpoint.js";
7
7
  import { APIProvider } from "./APIProvider.js";
8
- /** Options for a `ClientAPIProvider`. */
8
+ /**
9
+ * Options for constructing a `ClientAPIProvider`.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProviderOptions
12
+ */
9
13
  export interface ClientAPIProviderOptions {
10
14
  /**
11
15
  * The common base URL for all rendered endpoint requests.
@@ -35,16 +39,69 @@ export interface ClientAPIProviderOptions {
35
39
  * - Parses JSON responses and throws `ResponseError` for non-2xx responses.
36
40
  * - Extendable with custom request-building and response-parsing logic by overriding `createRequest()` and `parseResponse()`.
37
41
  * - Wrap in `ValidationAPIProvider` to add automatic validation of request payloads and response results against endpoint schemas.
42
+ *
43
+ * @example
44
+ * const provider = new ClientAPIProvider({ url: "https://api.example.com" });
45
+ * const user = await provider.call(getUser, { id: "abc" });
46
+ *
47
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider
38
48
  */
39
49
  export declare class ClientAPIProvider<P = unknown, R = unknown> extends APIProvider<P, R> {
40
- /** The common base URL for all rendered endpoint requests. */
50
+ /**
51
+ * The common base URL for all rendered endpoint requests.
52
+ *
53
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/url
54
+ */
41
55
  readonly url: URL;
42
- /** Default options used for HTTP requests created with `this.createRequest()` and `this.fetch()` */
56
+ /**
57
+ * Default options used for HTTP requests created with `this.createRequest()` and `this.fetch()`
58
+ *
59
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/options
60
+ */
43
61
  readonly options: RequestOptions;
44
- /** Timeout in milliseconds before the request is aborted, or `0` for no timeout. */
62
+ /**
63
+ * Timeout in milliseconds before the request is aborted, or `0` for no timeout.
64
+ *
65
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/timeout
66
+ */
45
67
  readonly timeout: number;
68
+ /**
69
+ * Create a `ClientAPIProvider` from a base URL and request options.
70
+ *
71
+ * @param options The `ClientAPIProviderOptions` configuring the base `url`, default request `options`, and `timeout`.
72
+ * @throws {RequiredError} if `url` cannot be resolved to a valid base URL.
73
+ * @example new ClientAPIProvider({ url: "https://api.example.com" })
74
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider
75
+ */
46
76
  constructor({ url, options, timeout }: ClientAPIProviderOptions);
77
+ /**
78
+ * Render the full request URL, appending `?query` params for `HEAD` and `GET` requests.
79
+ *
80
+ * @param endpoint The endpoint whose path is rendered into the base URL.
81
+ * @param payload The payload supplying `{placeholder}` and query-param values.
82
+ * @param caller The function to attribute thrown errors to (defaults to this method).
83
+ * @returns The fully resolved request `URL`.
84
+ * @throws {RequiredError} if this endpoint's path has `{placeholders}` but `payload` is not a data object.
85
+ * @throws {RequiredError} if this is a `HEAD` or `GET` request but `payload` is not a data object.
86
+ * @example provider.renderURL(getUser, { id: "abc" })
87
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/renderURL
88
+ */
47
89
  renderURL<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, caller?: AnyCaller): URL;
90
+ /**
91
+ * Create a `Request` for an endpoint, rendering payload into the URL or body depending on the method.
92
+ * - `HEAD` and `GET` requests carry their payload as `?query` params; other methods carry it as the body.
93
+ * - Merges `options` over the provider's default options and attaches a timeout `AbortSignal` when `timeout` is set.
94
+ *
95
+ * @param endpoint The endpoint the request targets.
96
+ * @param payload The payload to embed into the `Request`.
97
+ * @param options Per-call `RequestOptions` merged over the provider's defaults.
98
+ * @param caller The function to attribute thrown errors to (defaults to this method).
99
+ * @returns The created `Request`.
100
+ * @throws {RequiredError} if this endpoint's path has `{placeholders}` but `payload` is not a data object.
101
+ * @throws {RequiredError} if this is a `HEAD` or `GET` request but `payload` is not a data object.
102
+ * @example provider.createRequest(getUser, { id: "abc" })
103
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/createRequest
104
+ */
48
105
  createRequest<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, options?: RequestOptions, caller?: AnyCaller): Request;
49
106
  /** Internal implementation function for `createRequest()` used for requests that have no body. */
50
107
  protected _createHeadRequest(method: RequestHeadMethod, //
@@ -52,6 +109,25 @@ export declare class ClientAPIProvider<P = unknown, R = unknown> extends APIProv
52
109
  /** Internal implementation function for `createRequest()` used for requests that have a body. */
53
110
  protected _createBodyRequest(method: RequestBodyMethod, //
54
111
  url: PossibleURL, payload: P, options: RequestOptions, caller: AnyCaller): Request;
112
+ /**
113
+ * Send the request over the network using the global `fetch()` API.
114
+ *
115
+ * @param request The `Request` to send.
116
+ * @returns A promise resolving to the `Response`.
117
+ * @example await provider.fetch(request)
118
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/fetch
119
+ */
55
120
  fetch(request: Request): Promise<Response>;
121
+ /**
122
+ * Parse a response body into a result, throwing `ResponseError` for non-2xx responses.
123
+ *
124
+ * @param _endpoint The endpoint the response was produced for.
125
+ * @param response The `Response` to parse.
126
+ * @param caller The function to attribute thrown errors to (defaults to this method).
127
+ * @returns A promise resolving to the parsed result.
128
+ * @throws {ResponseError} if the response status is non-2xx.
129
+ * @example await provider.parseResponse(getUser, response)
130
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/parseResponse
131
+ */
56
132
  parseResponse<PP extends P, RR extends R>(_endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>;
57
133
  }
@@ -13,20 +13,58 @@ import { APIProvider } from "./APIProvider.js";
13
13
  * - Parses JSON responses and throws `ResponseError` for non-2xx responses.
14
14
  * - Extendable with custom request-building and response-parsing logic by overriding `createRequest()` and `parseResponse()`.
15
15
  * - Wrap in `ValidationAPIProvider` to add automatic validation of request payloads and response results against endpoint schemas.
16
+ *
17
+ * @example
18
+ * const provider = new ClientAPIProvider({ url: "https://api.example.com" });
19
+ * const user = await provider.call(getUser, { id: "abc" });
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider
16
22
  */
17
23
  export class ClientAPIProvider extends APIProvider {
18
- /** The common base URL for all rendered endpoint requests. */
24
+ /**
25
+ * The common base URL for all rendered endpoint requests.
26
+ *
27
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/url
28
+ */
19
29
  url;
20
- /** Default options used for HTTP requests created with `this.createRequest()` and `this.fetch()` */
30
+ /**
31
+ * Default options used for HTTP requests created with `this.createRequest()` and `this.fetch()`
32
+ *
33
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/options
34
+ */
21
35
  options;
22
- /** Timeout in milliseconds before the request is aborted, or `0` for no timeout. */
36
+ /**
37
+ * Timeout in milliseconds before the request is aborted, or `0` for no timeout.
38
+ *
39
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/timeout
40
+ */
23
41
  timeout;
42
+ /**
43
+ * Create a `ClientAPIProvider` from a base URL and request options.
44
+ *
45
+ * @param options The `ClientAPIProviderOptions` configuring the base `url`, default request `options`, and `timeout`.
46
+ * @throws {RequiredError} if `url` cannot be resolved to a valid base URL.
47
+ * @example new ClientAPIProvider({ url: "https://api.example.com" })
48
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider
49
+ */
24
50
  constructor({ url, options = {}, timeout = 20_000 }) {
25
51
  super();
26
52
  this.url = requireBaseURL(url, ClientAPIProvider);
27
53
  this.options = options;
28
54
  this.timeout = timeout;
29
55
  }
56
+ /**
57
+ * Render the full request URL, appending `?query` params for `HEAD` and `GET` requests.
58
+ *
59
+ * @param endpoint The endpoint whose path is rendered into the base URL.
60
+ * @param payload The payload supplying `{placeholder}` and query-param values.
61
+ * @param caller The function to attribute thrown errors to (defaults to this method).
62
+ * @returns The fully resolved request `URL`.
63
+ * @throws {RequiredError} if this endpoint's path has `{placeholders}` but `payload` is not a data object.
64
+ * @throws {RequiredError} if this is a `HEAD` or `GET` request but `payload` is not a data object.
65
+ * @example provider.renderURL(getUser, { id: "abc" })
66
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/renderURL
67
+ */
30
68
  renderURL(endpoint, payload, caller = this.renderURL) {
31
69
  // Construct the full URL from `this.url` and the rendered path.
32
70
  // Adding the `.` turns the absolute path from `renderPath()` into a relative URL.
@@ -43,6 +81,21 @@ export class ClientAPIProvider extends APIProvider {
43
81
  }
44
82
  return url;
45
83
  }
84
+ /**
85
+ * Create a `Request` for an endpoint, rendering payload into the URL or body depending on the method.
86
+ * - `HEAD` and `GET` requests carry their payload as `?query` params; other methods carry it as the body.
87
+ * - Merges `options` over the provider's default options and attaches a timeout `AbortSignal` when `timeout` is set.
88
+ *
89
+ * @param endpoint The endpoint the request targets.
90
+ * @param payload The payload to embed into the `Request`.
91
+ * @param options Per-call `RequestOptions` merged over the provider's defaults.
92
+ * @param caller The function to attribute thrown errors to (defaults to this method).
93
+ * @returns The created `Request`.
94
+ * @throws {RequiredError} if this endpoint's path has `{placeholders}` but `payload` is not a data object.
95
+ * @throws {RequiredError} if this is a `HEAD` or `GET` request but `payload` is not a data object.
96
+ * @example provider.createRequest(getUser, { id: "abc" })
97
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/createRequest
98
+ */
46
99
  createRequest(endpoint, payload, options, caller = this.createRequest) {
47
100
  // Render the path into the base URL.
48
101
  const url = this.renderURL(endpoint, payload, caller);
@@ -67,10 +120,28 @@ export class ClientAPIProvider extends APIProvider {
67
120
  url, payload, options, caller) {
68
121
  return createRequest(method, url, payload, options, caller);
69
122
  }
70
- // Override to set default functionality of a client provider to send requests over the network with `fetch()` and parse responses with `parseResponse()`.
123
+ /**
124
+ * Send the request over the network using the global `fetch()` API.
125
+ *
126
+ * @param request The `Request` to send.
127
+ * @returns A promise resolving to the `Response`.
128
+ * @example await provider.fetch(request)
129
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/fetch
130
+ */
71
131
  async fetch(request) {
72
132
  return fetch(request);
73
133
  }
134
+ /**
135
+ * Parse a response body into a result, throwing `ResponseError` for non-2xx responses.
136
+ *
137
+ * @param _endpoint The endpoint the response was produced for.
138
+ * @param response The `Response` to parse.
139
+ * @param caller The function to attribute thrown errors to (defaults to this method).
140
+ * @returns A promise resolving to the parsed result.
141
+ * @throws {ResponseError} if the response status is non-2xx.
142
+ * @example await provider.parseResponse(getUser, response)
143
+ * @see https://dhoulb.github.io/shelving/api/provider/ClientAPIProvider/ClientAPIProvider/parseResponse
144
+ */
74
145
  async parseResponse(_endpoint, response, caller = this.parseResponse) {
75
146
  const { ok, status } = response;
76
147
  const content = await parseResponseBody(response, caller);
@@ -2,9 +2,48 @@ import type { AnyCaller } from "../../util/function.js";
2
2
  import type { RequestOptions } from "../../util/http.js";
3
3
  import type { Endpoint } from "../endpoint/Endpoint.js";
4
4
  import { ThroughAPIProvider } from "./ThroughAPIProvider.js";
5
- /** Provider that logs everything to the console in some detail to help diagnose issues in development. */
5
+ /**
6
+ * Provider that logs every request, response, and error to the console in detail to help diagnose issues in development.
7
+ *
8
+ * @example
9
+ * const api = new DebugAPIProvider(source);
10
+ * await api.call(endpoint, payload); // logs request, response, and result
11
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider
12
+ */
6
13
  export declare class DebugAPIProvider<P, R> extends ThroughAPIProvider<P, R> {
14
+ /**
15
+ * Build a request via the source provider, logging the endpoint and payload (or any error).
16
+ *
17
+ * @param endpoint The endpoint to build a request for.
18
+ * @param payload The payload to send.
19
+ * @param options Optional request options.
20
+ * @param caller The calling function used for error stack traces.
21
+ * @returns The built request.
22
+ * @throws Rethrows any error thrown while building the request (after logging it).
23
+ * @example api.createRequest(endpoint, payload)
24
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider/createRequest
25
+ */
7
26
  createRequest<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, options?: RequestOptions, caller?: AnyCaller): Request;
27
+ /**
28
+ * Fetch a request via the source provider, logging the full request and response (or any error).
29
+ *
30
+ * @param request The request to fetch.
31
+ * @returns Promise resolving to the response.
32
+ * @throws Rethrows any error thrown by the source provider (after logging it).
33
+ * @example await api.fetch(request)
34
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider/fetch
35
+ */
8
36
  fetch(request: Request): Promise<Response>;
37
+ /**
38
+ * Parse a response via the source provider, logging the parsed result (or any error).
39
+ *
40
+ * @param endpoint The endpoint the response came from.
41
+ * @param response The response to parse.
42
+ * @param caller The calling function used for error stack traces.
43
+ * @returns Promise resolving to the parsed result.
44
+ * @throws Rethrows any error thrown while parsing (after logging it).
45
+ * @example await api.parseResponse(endpoint, response)
46
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider/parseResponse
47
+ */
9
48
  parseResponse<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>;
10
49
  }
@@ -1,8 +1,27 @@
1
1
  import { ANSI_FAILURE, ANSI_LEFT, ANSI_RIGHT, ANSI_SUCCESS, ANSI_WAITING } from "../../util/ansi.js";
2
2
  import { debugFullRequest, debugFullResponse, debugRequest } from "../../util/debug.js";
3
3
  import { ThroughAPIProvider } from "./ThroughAPIProvider.js";
4
- /** Provider that logs everything to the console in some detail to help diagnose issues in development. */
4
+ /**
5
+ * Provider that logs every request, response, and error to the console in detail to help diagnose issues in development.
6
+ *
7
+ * @example
8
+ * const api = new DebugAPIProvider(source);
9
+ * await api.call(endpoint, payload); // logs request, response, and result
10
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider
11
+ */
5
12
  export class DebugAPIProvider extends ThroughAPIProvider {
13
+ /**
14
+ * Build a request via the source provider, logging the endpoint and payload (or any error).
15
+ *
16
+ * @param endpoint The endpoint to build a request for.
17
+ * @param payload The payload to send.
18
+ * @param options Optional request options.
19
+ * @param caller The calling function used for error stack traces.
20
+ * @returns The built request.
21
+ * @throws Rethrows any error thrown while building the request (after logging it).
22
+ * @example api.createRequest(endpoint, payload)
23
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider/createRequest
24
+ */
6
25
  createRequest(endpoint, payload, options, caller = this.createRequest) {
7
26
  try {
8
27
  const request = super.createRequest(endpoint, payload, options, caller);
@@ -14,6 +33,15 @@ export class DebugAPIProvider extends ThroughAPIProvider {
14
33
  throw reason;
15
34
  }
16
35
  }
36
+ /**
37
+ * Fetch a request via the source provider, logging the full request and response (or any error).
38
+ *
39
+ * @param request The request to fetch.
40
+ * @returns Promise resolving to the response.
41
+ * @throws Rethrows any error thrown by the source provider (after logging it).
42
+ * @example await api.fetch(request)
43
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider/fetch
44
+ */
17
45
  async fetch(request) {
18
46
  try {
19
47
  console.debug(`${ANSI_RIGHT} ${await debugFullRequest(request)}`);
@@ -26,6 +54,17 @@ export class DebugAPIProvider extends ThroughAPIProvider {
26
54
  throw reason;
27
55
  }
28
56
  }
57
+ /**
58
+ * Parse a response via the source provider, logging the parsed result (or any error).
59
+ *
60
+ * @param endpoint The endpoint the response came from.
61
+ * @param response The response to parse.
62
+ * @param caller The calling function used for error stack traces.
63
+ * @returns Promise resolving to the parsed result.
64
+ * @throws Rethrows any error thrown while parsing (after logging it).
65
+ * @example await api.parseResponse(endpoint, response)
66
+ * @see https://dhoulb.github.io/shelving/api/provider/DebugAPIProvider/DebugAPIProvider/parseResponse
67
+ */
29
68
  async parseResponse(endpoint, response, caller = this.parseResponse) {
30
69
  try {
31
70
  const result = await super.parseResponse(endpoint, response, caller);
@@ -3,14 +3,30 @@ import { type RequestBodyMethod, type RequestOptions } from "../../util/http.js"
3
3
  import type { PossibleURL } from "../../util/url.js";
4
4
  import type { Endpoint } from "../endpoint/Endpoint.js";
5
5
  import { ClientAPIProvider } from "./ClientAPIProvider.js";
6
- /** API provider that always sends request bodies as JSON and parses responses as JSON. */
6
+ /**
7
+ * Client API provider that always sends request bodies as JSON and parses responses as JSON.
8
+ * - Forces JSON encoding regardless of the `Content-Type` the server returns.
9
+ *
10
+ * @example
11
+ * const provider = new JSONAPIProvider({ url: "https://api.example.com" });
12
+ * const user = await provider.call(getUser, { id: "abc" });
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/api/provider/JSONAPIProvider/JSONAPIProvider
15
+ */
7
16
  export declare class JSONAPIProvider<P = unknown, R = unknown> extends ClientAPIProvider<P, R> {
8
17
  protected _createBodyRequest(method: RequestBodyMethod, url: PossibleURL, payload: P, options: RequestOptions, caller: AnyCaller): Request;
9
18
  /**
10
19
  * Parse a JSON `Response` for an endpoint.
11
- *
12
20
  * - Non-2xx responses become `ResponseError`.
13
21
  * - JSON is parsed even if the server omitted or mis-set the response content type.
22
+ *
23
+ * @param _endpoint The endpoint the response was produced for.
24
+ * @param response The `Response` to parse as JSON.
25
+ * @param caller The function to attribute thrown errors to (defaults to this method).
26
+ * @returns A promise resolving to the parsed JSON result.
27
+ * @throws {ResponseError} if the response status is non-2xx.
28
+ * @example await provider.parseResponse(getUser, response)
29
+ * @see https://dhoulb.github.io/shelving/api/provider/JSONAPIProvider/JSONAPIProvider/parseResponse
14
30
  */
15
31
  parseResponse<PP extends P, RR extends R>(_endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>;
16
32
  }
@@ -2,16 +2,32 @@ import { ResponseError } from "../../error/ResponseError.js";
2
2
  import { getMessage } from "../../util/error.js";
3
3
  import { createJSONRequest, parseResponseJSON } from "../../util/http.js";
4
4
  import { ClientAPIProvider } from "./ClientAPIProvider.js";
5
- /** API provider that always sends request bodies as JSON and parses responses as JSON. */
5
+ /**
6
+ * Client API provider that always sends request bodies as JSON and parses responses as JSON.
7
+ * - Forces JSON encoding regardless of the `Content-Type` the server returns.
8
+ *
9
+ * @example
10
+ * const provider = new JSONAPIProvider({ url: "https://api.example.com" });
11
+ * const user = await provider.call(getUser, { id: "abc" });
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/api/provider/JSONAPIProvider/JSONAPIProvider
14
+ */
6
15
  export class JSONAPIProvider extends ClientAPIProvider {
7
16
  _createBodyRequest(method, url, payload, options, caller) {
8
17
  return createJSONRequest(method, url, payload, options, caller);
9
18
  }
10
19
  /**
11
20
  * Parse a JSON `Response` for an endpoint.
12
- *
13
21
  * - Non-2xx responses become `ResponseError`.
14
22
  * - JSON is parsed even if the server omitted or mis-set the response content type.
23
+ *
24
+ * @param _endpoint The endpoint the response was produced for.
25
+ * @param response The `Response` to parse as JSON.
26
+ * @param caller The function to attribute thrown errors to (defaults to this method).
27
+ * @returns A promise resolving to the parsed JSON result.
28
+ * @throws {ResponseError} if the response status is non-2xx.
29
+ * @example await provider.parseResponse(getUser, response)
30
+ * @see https://dhoulb.github.io/shelving/api/provider/JSONAPIProvider/JSONAPIProvider/parseResponse
15
31
  */
16
32
  async parseResponse(_endpoint, response, caller = this.parseResponse) {
17
33
  const { ok, status } = response;
@@ -2,13 +2,27 @@ import type { Callback } from "../../util/function.js";
2
2
  import type { APIProvider } from "./APIProvider.js";
3
3
  import { ThroughAPIProvider } from "./ThroughAPIProvider.js";
4
4
  /**
5
- * Provider that logs fetches to the console to keep useful logs in production.
6
- * - Defaults to calling `console.log()` for requests/responses and
5
+ * Provider that logs fetches to the console to keep useful request/response logs in production.
6
+ * - Defaults to logging requests, responses, and errors via the `log` utilities; each can be overridden.
7
+ *
8
+ * @example
9
+ * const api = new LoggingAPIProvider(source);
10
+ * await api.fetch(request); // logs request and response
11
+ * @see https://dhoulb.github.io/shelving/api/provider/LoggingAPIProvider/LoggingAPIProvider
7
12
  */
8
13
  export declare class LoggingAPIProvider<P, R> extends ThroughAPIProvider<P, R> {
9
14
  protected _logRequest: Callback<[Request]>;
10
15
  protected _logResponse: Callback<[Response, Request]>;
11
16
  protected _logError: Callback<[reason: unknown, Request]>;
17
+ /**
18
+ * Create a logging provider wrapping a source provider.
19
+ *
20
+ * @param source The source provider whose fetches are logged.
21
+ * @param onRequest Called to log each outgoing request.
22
+ * @param onResponse Called to log each response.
23
+ * @param onError Called to log each error.
24
+ * @example new LoggingAPIProvider(source)
25
+ */
12
26
  constructor(source: APIProvider<P, R>,
13
27
  /** Log requests. */
14
28
  onRequest?: Callback<[Request]>,
@@ -16,5 +30,14 @@ export declare class LoggingAPIProvider<P, R> extends ThroughAPIProvider<P, R> {
16
30
  onResponse?: Callback<[Response, Request]>,
17
31
  /** Log errors for requests. */
18
32
  onError?: Callback<[reason: unknown, Request]>);
33
+ /**
34
+ * Fetch a request through the source provider, logging the request, response, and any error.
35
+ *
36
+ * @param request The request to fetch.
37
+ * @returns Promise resolving to the response.
38
+ * @throws Rethrows any error thrown by the source provider (after logging it).
39
+ * @example await api.fetch(request)
40
+ * @see https://dhoulb.github.io/shelving/api/provider/LoggingAPIProvider/LoggingAPIProvider/fetch
41
+ */
19
42
  fetch(request: Request): Promise<Response>;
20
43
  }
@@ -1,13 +1,27 @@
1
1
  import { logRequest, logRequestError, logRequestResponse } from "../../util/log.js";
2
2
  import { ThroughAPIProvider } from "./ThroughAPIProvider.js";
3
3
  /**
4
- * Provider that logs fetches to the console to keep useful logs in production.
5
- * - Defaults to calling `console.log()` for requests/responses and
4
+ * Provider that logs fetches to the console to keep useful request/response logs in production.
5
+ * - Defaults to logging requests, responses, and errors via the `log` utilities; each can be overridden.
6
+ *
7
+ * @example
8
+ * const api = new LoggingAPIProvider(source);
9
+ * await api.fetch(request); // logs request and response
10
+ * @see https://dhoulb.github.io/shelving/api/provider/LoggingAPIProvider/LoggingAPIProvider
6
11
  */
7
12
  export class LoggingAPIProvider extends ThroughAPIProvider {
8
13
  _logRequest;
9
14
  _logResponse;
10
15
  _logError;
16
+ /**
17
+ * Create a logging provider wrapping a source provider.
18
+ *
19
+ * @param source The source provider whose fetches are logged.
20
+ * @param onRequest Called to log each outgoing request.
21
+ * @param onResponse Called to log each response.
22
+ * @param onError Called to log each error.
23
+ * @example new LoggingAPIProvider(source)
24
+ */
11
25
  constructor(source,
12
26
  /** Log requests. */
13
27
  onRequest = logRequest,
@@ -20,6 +34,15 @@ export class LoggingAPIProvider extends ThroughAPIProvider {
20
34
  this._logResponse = onResponse;
21
35
  this._logError = onError;
22
36
  }
37
+ /**
38
+ * Fetch a request through the source provider, logging the request, response, and any error.
39
+ *
40
+ * @param request The request to fetch.
41
+ * @returns Promise resolving to the response.
42
+ * @throws Rethrows any error thrown by the source provider (after logging it).
43
+ * @example await api.fetch(request)
44
+ * @see https://dhoulb.github.io/shelving/api/provider/LoggingAPIProvider/LoggingAPIProvider/fetch
45
+ */
23
46
  async fetch(request) {
24
47
  try {
25
48
  this._logRequest(request);