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,33 +3,104 @@ import type { RequestHandler, RequestOptions } from "../../util/http.js";
3
3
  import type { AnyEndpoint, Endpoint } from "../endpoint/Endpoint.js";
4
4
  import type { APIProvider } from "./APIProvider.js";
5
5
  import { ThroughAPIProvider } from "./ThroughAPIProvider.js";
6
+ /**
7
+ * Record of a single mocked fetch, pairing the request with the response the handler returned.
8
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIFetchCall
9
+ */
6
10
  export type MockAPIFetchCall = {
7
11
  readonly request: Request;
8
12
  readonly response: Response;
9
13
  };
14
+ /**
15
+ * Record of a single request build, capturing the endpoint, payload, options, and built request.
16
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIRequestCall
17
+ */
10
18
  export type MockAPIRequestCall = {
11
19
  readonly endpoint: AnyEndpoint;
12
20
  readonly payload: unknown;
13
21
  readonly options: RequestOptions | undefined;
14
22
  readonly request: Request;
15
23
  };
24
+ /**
25
+ * Record of a single response parse, capturing the endpoint, response, and parsed result.
26
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIResponseCall
27
+ */
16
28
  export type MockAPIResponseCall = {
17
29
  readonly endpoint: AnyEndpoint;
18
30
  readonly response: Response;
19
31
  readonly result: unknown;
20
32
  };
21
33
  /**
22
- * Provider that logs API calls without sending network requests.
34
+ * Provider that records API calls and serves them from a handler without sending network requests.
23
35
  * - Extends `ThroughAPIProvider` to delegate request building and response parsing to a source `APIProvider`.
24
36
  * - The source provider's `fetch()` is never called — this provider intercepts all fetches and routes them through a `RequestHandler`.
37
+ * - Records `requestCalls`, `fetchCalls`, and `responseCalls` so tests can assert on what happened.
38
+ *
39
+ * @example
40
+ * const api = new MockAPIProvider();
41
+ * const result = await api.call(endpoint, payload);
42
+ * expect(api.fetchCalls).toHaveLength(1);
43
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider
25
44
  */
26
45
  export declare class MockAPIProvider<P = unknown, R = unknown> extends ThroughAPIProvider<P, R> {
46
+ /**
47
+ * Records of every request built by this provider.
48
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/requestCalls
49
+ */
27
50
  readonly requestCalls: MockAPIRequestCall[];
51
+ /**
52
+ * Records of every fetch handled by this provider.
53
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/fetchCalls
54
+ */
28
55
  readonly fetchCalls: MockAPIFetchCall[];
56
+ /**
57
+ * Records of every response parsed by this provider.
58
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/responseCalls
59
+ */
29
60
  readonly responseCalls: MockAPIResponseCall[];
61
+ /**
62
+ * The request handler that serves fetches in place of the network.
63
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/handler
64
+ */
30
65
  readonly handler: RequestHandler;
66
+ /**
67
+ * Create a mock provider that serves fetches from a handler.
68
+ *
69
+ * @param handler The handler that produces a response for each request (defaults to echoing the request).
70
+ * @param source The source provider used to build requests and parse responses.
71
+ * @example new MockAPIProvider()
72
+ */
31
73
  constructor(handler?: RequestHandler, source?: APIProvider<P, R>);
74
+ /**
75
+ * Build a request via the source provider, recording the endpoint and payload in `requestCalls`.
76
+ *
77
+ * @param endpoint The endpoint to build a request for.
78
+ * @param payload The payload to send.
79
+ * @param options Optional request options.
80
+ * @param caller The calling function used for error stack traces.
81
+ * @returns The built request.
82
+ * @example api.createRequest(endpoint, payload)
83
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/createRequest
84
+ */
32
85
  createRequest<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, options?: RequestOptions, caller?: AnyCaller): Request;
86
+ /**
87
+ * Parse a response via the source provider, recording the response and result in `responseCalls`.
88
+ *
89
+ * @param endpoint The endpoint the response came from.
90
+ * @param response The response to parse.
91
+ * @param caller The calling function used for error stack traces.
92
+ * @returns Promise resolving to the parsed result.
93
+ * @example await api.parseResponse(endpoint, response)
94
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/parseResponse
95
+ */
33
96
  parseResponse<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>;
97
+ /**
98
+ * Serve a request through the handler instead of the network, recording it in `fetchCalls`.
99
+ *
100
+ * @param request The request to handle.
101
+ * @returns Promise resolving to the handler's response.
102
+ * @example await api.fetch(request)
103
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/fetch
104
+ */
34
105
  fetch(request: Request): Promise<Response>;
35
106
  }
@@ -6,32 +6,88 @@ async function _mockHandler(request) {
6
6
  return new Response(`Mocked response to ${debugRequest(request)}`, { status: 200, statusText: "OK" });
7
7
  }
8
8
  /**
9
- * Provider that logs API calls without sending network requests.
9
+ * Provider that records API calls and serves them from a handler without sending network requests.
10
10
  * - Extends `ThroughAPIProvider` to delegate request building and response parsing to a source `APIProvider`.
11
11
  * - The source provider's `fetch()` is never called — this provider intercepts all fetches and routes them through a `RequestHandler`.
12
+ * - Records `requestCalls`, `fetchCalls`, and `responseCalls` so tests can assert on what happened.
13
+ *
14
+ * @example
15
+ * const api = new MockAPIProvider();
16
+ * const result = await api.call(endpoint, payload);
17
+ * expect(api.fetchCalls).toHaveLength(1);
18
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider
12
19
  */
13
20
  export class MockAPIProvider extends ThroughAPIProvider {
21
+ /**
22
+ * Records of every request built by this provider.
23
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/requestCalls
24
+ */
14
25
  requestCalls = [];
26
+ /**
27
+ * Records of every fetch handled by this provider.
28
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/fetchCalls
29
+ */
15
30
  fetchCalls = [];
31
+ /**
32
+ * Records of every response parsed by this provider.
33
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/responseCalls
34
+ */
16
35
  responseCalls = [];
36
+ /**
37
+ * The request handler that serves fetches in place of the network.
38
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/handler
39
+ */
17
40
  handler;
41
+ /**
42
+ * Create a mock provider that serves fetches from a handler.
43
+ *
44
+ * @param handler The handler that produces a response for each request (defaults to echoing the request).
45
+ * @param source The source provider used to build requests and parse responses.
46
+ * @example new MockAPIProvider()
47
+ */
18
48
  constructor(handler = _mockHandler, source = new ClientAPIProvider({ url: "https://api.mock.com" })) {
19
49
  super(source);
20
50
  this.handler = handler;
21
51
  }
22
- // Override `createRequest()` to log the endpoint and payload before delegating to the source provider for request building.
52
+ /**
53
+ * Build a request via the source provider, recording the endpoint and payload in `requestCalls`.
54
+ *
55
+ * @param endpoint The endpoint to build a request for.
56
+ * @param payload The payload to send.
57
+ * @param options Optional request options.
58
+ * @param caller The calling function used for error stack traces.
59
+ * @returns The built request.
60
+ * @example api.createRequest(endpoint, payload)
61
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/createRequest
62
+ */
23
63
  createRequest(endpoint, payload, options, caller = this.createRequest) {
24
64
  const request = super.createRequest(endpoint, payload, options, caller);
25
65
  this.requestCalls.push({ endpoint, payload, options, request });
26
66
  return request;
27
67
  }
28
- // Override `parseResponse()` to log the response and result.
68
+ /**
69
+ * Parse a response via the source provider, recording the response and result in `responseCalls`.
70
+ *
71
+ * @param endpoint The endpoint the response came from.
72
+ * @param response The response to parse.
73
+ * @param caller The calling function used for error stack traces.
74
+ * @returns Promise resolving to the parsed result.
75
+ * @example await api.parseResponse(endpoint, response)
76
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/parseResponse
77
+ */
29
78
  async parseResponse(endpoint, response, caller = this.parseResponse) {
30
79
  const result = await super.parseResponse(endpoint, response, caller);
31
80
  this.responseCalls.push({ endpoint, response, result });
32
81
  return result;
33
82
  }
34
- // Override `fetch()` to route through the handler instead of the network.
83
+ /**
84
+ * Serve a request through the handler instead of the network, recording it in `fetchCalls`.
85
+ *
86
+ * @param request The request to handle.
87
+ * @returns Promise resolving to the handler's response.
88
+ * @example await api.fetch(request)
89
+ * @see https://dhoulb.github.io/shelving/api/provider/MockAPIProvider/MockAPIProvider/fetch
90
+ */
35
91
  async fetch(request) {
36
92
  const response = await this.handler(request);
37
93
  this.fetchCalls.push({ request, response });
@@ -11,7 +11,16 @@ import { MockAPIProvider } from "./MockAPIProvider.js";
11
11
  * const api = new MockEnpdointAPIProvider(handlers); // Create a new mock provider.
12
12
  * const result = await api.fetch(endpoint, 4); // Mock a call to the endpoint through the provider.
13
13
  * expect(result).toBe(16);
14
+ * @see https://dhoulb.github.io/shelving/api/provider/MockEndpointAPIProvider/MockEndpointAPIProvider
14
15
  */
15
16
  export declare class MockEndpointAPIProvider<P, R, C> extends MockAPIProvider<P, R> {
17
+ /**
18
+ * Create a mock provider that routes calls through an array of endpoint handlers instead of the network.
19
+ *
20
+ * @param handlers The endpoint handlers (from `Endpoint.handler()`) that serve matching requests.
21
+ * @param context The context value passed to each handler.
22
+ * @param source Optional source provider used to build requests and parse responses.
23
+ * @example new MockEndpointAPIProvider(handlers, context)
24
+ */
16
25
  constructor(handlers: EndpointHandlers<C>, context: C, source?: ClientAPIProvider<P, R>);
17
26
  }
@@ -10,8 +10,17 @@ import { MockAPIProvider } from "./MockAPIProvider.js";
10
10
  * const api = new MockEnpdointAPIProvider(handlers); // Create a new mock provider.
11
11
  * const result = await api.fetch(endpoint, 4); // Mock a call to the endpoint through the provider.
12
12
  * expect(result).toBe(16);
13
+ * @see https://dhoulb.github.io/shelving/api/provider/MockEndpointAPIProvider/MockEndpointAPIProvider
13
14
  */
14
15
  export class MockEndpointAPIProvider extends MockAPIProvider {
16
+ /**
17
+ * Create a mock provider that routes calls through an array of endpoint handlers instead of the network.
18
+ *
19
+ * @param handlers The endpoint handlers (from `Endpoint.handler()`) that serve matching requests.
20
+ * @param context The context value passed to each handler.
21
+ * @param source Optional source provider used to build requests and parse responses.
22
+ * @example new MockEndpointAPIProvider(handlers, context)
23
+ */
15
24
  constructor(handlers, context, source) {
16
25
  super(request => handleEndpoints(this.url, handlers, request, context, this.call), source);
17
26
  }
@@ -4,16 +4,82 @@ import type { Sourceable } from "../../util/source.js";
4
4
  import type { Endpoint } from "../endpoint/Endpoint.js";
5
5
  import { APIProvider } from "./APIProvider.js";
6
6
  /**
7
- * Provider wrapper that delegates API operations to a source provider.
7
+ * Provider wrapper that delegates every API operation to a wrapped `source` provider.
8
8
  * - Extend this when you want to intercept only selected API operations, such as injecting auth headers or logging.
9
+ * - Implements `Sourceable` so wrapped providers are discoverable via `getSource()` / `requireSource()`.
10
+ *
11
+ * @example
12
+ * class AuthAPIProvider extends ThroughAPIProvider {
13
+ * override createRequest(endpoint, payload, options, caller) {
14
+ * return super.createRequest(endpoint, payload, { ...options, headers: { authorization: TOKEN } }, caller);
15
+ * }
16
+ * }
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider
9
19
  */
10
20
  export declare class ThroughAPIProvider<P, R> extends APIProvider<P, R> implements Sourceable<APIProvider<P, R>> {
21
+ /**
22
+ * The base URL, delegated to the wrapped `source` provider.
23
+ *
24
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/url
25
+ */
11
26
  get url(): URL;
27
+ /**
28
+ * The wrapped source provider that operations delegate to.
29
+ *
30
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/source
31
+ */
12
32
  readonly source: APIProvider<P, R>;
33
+ /**
34
+ * Wrap a source `APIProvider`.
35
+ *
36
+ * @param source The provider that every operation delegates to.
37
+ * @example new ThroughAPIProvider(clientProvider)
38
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider
39
+ */
13
40
  constructor(source: APIProvider<P, R>);
41
+ /**
42
+ * Render the request URL by delegating to the source provider.
43
+ *
44
+ * @param endpoint The endpoint whose path is rendered into the base URL.
45
+ * @param payload The payload supplying `{placeholder}` and query-param values.
46
+ * @param caller The function to attribute thrown errors to (defaults to this method).
47
+ * @returns The fully resolved request `URL`.
48
+ * @example provider.renderURL(getUser, { id: "abc" })
49
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/renderURL
50
+ */
14
51
  renderURL<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, caller?: AnyCaller): URL;
52
+ /**
53
+ * Create the request by delegating to the source provider.
54
+ *
55
+ * @param endpoint The endpoint the request targets.
56
+ * @param payload The payload to embed into the `Request`.
57
+ * @param options The `RequestOptions` to use, merged over the provider's own options.
58
+ * @param caller The function to attribute thrown errors to (defaults to this method).
59
+ * @returns The created `Request`.
60
+ * @example provider.createRequest(getUser, { id: "abc" })
61
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/createRequest
62
+ */
15
63
  createRequest<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, options?: RequestOptions, caller?: AnyCaller): Request;
64
+ /**
65
+ * Parse the response by delegating to the source provider.
66
+ *
67
+ * @param endpoint The endpoint the response was produced for.
68
+ * @param response The `Response` to parse.
69
+ * @param caller The function to attribute thrown errors to (defaults to this method).
70
+ * @returns A promise resolving to the parsed result.
71
+ * @example await provider.parseResponse(getUser, response)
72
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/parseResponse
73
+ */
16
74
  parseResponse<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>;
75
+ /**
76
+ * Send the request by delegating to the source provider.
77
+ *
78
+ * @param request The `Request` to send.
79
+ * @returns A promise resolving to the `Response`.
80
+ * @example await provider.fetch(request)
81
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/fetch
82
+ */
17
83
  fetch(request: Request): Promise<Response>;
18
84
  [Symbol.asyncDispose](): Promise<void>;
19
85
  }
@@ -1,27 +1,93 @@
1
1
  import { awaitDispose } from "../../util/dispose.js";
2
2
  import { APIProvider } from "./APIProvider.js";
3
3
  /**
4
- * Provider wrapper that delegates API operations to a source provider.
4
+ * Provider wrapper that delegates every API operation to a wrapped `source` provider.
5
5
  * - Extend this when you want to intercept only selected API operations, such as injecting auth headers or logging.
6
+ * - Implements `Sourceable` so wrapped providers are discoverable via `getSource()` / `requireSource()`.
7
+ *
8
+ * @example
9
+ * class AuthAPIProvider extends ThroughAPIProvider {
10
+ * override createRequest(endpoint, payload, options, caller) {
11
+ * return super.createRequest(endpoint, payload, { ...options, headers: { authorization: TOKEN } }, caller);
12
+ * }
13
+ * }
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider
6
16
  */
7
17
  export class ThroughAPIProvider extends APIProvider {
18
+ /**
19
+ * The base URL, delegated to the wrapped `source` provider.
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/url
22
+ */
8
23
  get url() {
9
24
  return this.source.url;
10
25
  }
26
+ /**
27
+ * The wrapped source provider that operations delegate to.
28
+ *
29
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/source
30
+ */
11
31
  source;
32
+ /**
33
+ * Wrap a source `APIProvider`.
34
+ *
35
+ * @param source The provider that every operation delegates to.
36
+ * @example new ThroughAPIProvider(clientProvider)
37
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider
38
+ */
12
39
  constructor(source) {
13
40
  super();
14
41
  this.source = source;
15
42
  }
43
+ /**
44
+ * Render the request URL by delegating to the source provider.
45
+ *
46
+ * @param endpoint The endpoint whose path is rendered into the base URL.
47
+ * @param payload The payload supplying `{placeholder}` and query-param values.
48
+ * @param caller The function to attribute thrown errors to (defaults to this method).
49
+ * @returns The fully resolved request `URL`.
50
+ * @example provider.renderURL(getUser, { id: "abc" })
51
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/renderURL
52
+ */
16
53
  renderURL(endpoint, payload, caller = this.renderURL) {
17
54
  return this.source.renderURL(endpoint, payload, caller);
18
55
  }
56
+ /**
57
+ * Create the request by delegating to the source provider.
58
+ *
59
+ * @param endpoint The endpoint the request targets.
60
+ * @param payload The payload to embed into the `Request`.
61
+ * @param options The `RequestOptions` to use, merged over the provider's own options.
62
+ * @param caller The function to attribute thrown errors to (defaults to this method).
63
+ * @returns The created `Request`.
64
+ * @example provider.createRequest(getUser, { id: "abc" })
65
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/createRequest
66
+ */
19
67
  createRequest(endpoint, payload, options, caller = this.createRequest) {
20
68
  return this.source.createRequest(endpoint, payload, options, caller);
21
69
  }
70
+ /**
71
+ * Parse the response by delegating to the source provider.
72
+ *
73
+ * @param endpoint The endpoint the response was produced for.
74
+ * @param response The `Response` to parse.
75
+ * @param caller The function to attribute thrown errors to (defaults to this method).
76
+ * @returns A promise resolving to the parsed result.
77
+ * @example await provider.parseResponse(getUser, response)
78
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/parseResponse
79
+ */
22
80
  parseResponse(endpoint, response, caller = this.parseResponse) {
23
81
  return this.source.parseResponse(endpoint, response, caller);
24
82
  }
83
+ /**
84
+ * Send the request by delegating to the source provider.
85
+ *
86
+ * @param request The `Request` to send.
87
+ * @returns A promise resolving to the `Response`.
88
+ * @example await provider.fetch(request)
89
+ * @see https://dhoulb.github.io/shelving/api/provider/ThroughAPIProvider/ThroughAPIProvider/fetch
90
+ */
25
91
  fetch(request) {
26
92
  return this.source.fetch(request);
27
93
  }
@@ -2,8 +2,39 @@ 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
- /** Validate an asynchronous source provider (source can have any type because validation guarantees the type). */
5
+ /**
6
+ * Provider that validates payloads and results against the endpoint's schemas, so a source of any type is made type-safe.
7
+ * - Payload validation errors bubble up as user-readable strings; result validation errors are wrapped in `ResponseError`.
8
+ *
9
+ * @example
10
+ * const api = new ValidationAPIProvider(source);
11
+ * const result = await api.call(endpoint, payload); // validated payload and result
12
+ * @see https://dhoulb.github.io/shelving/api/provider/ValidationAPIProvider/ValidationAPIProvider
13
+ */
6
14
  export declare class ValidationAPIProvider<P, R> extends ThroughAPIProvider<P, R> {
15
+ /**
16
+ * Build a request via the source provider after validating the payload against the endpoint's payload schema.
17
+ *
18
+ * @param endpoint The endpoint to build a request for.
19
+ * @param payload The payload to validate and send.
20
+ * @param options Optional request options.
21
+ * @param caller The calling function used for error stack traces.
22
+ * @returns The built request.
23
+ * @throws {string} A user-readable validation message if the payload is invalid.
24
+ * @example api.createRequest(endpoint, payload)
25
+ * @see https://dhoulb.github.io/shelving/api/provider/ValidationAPIProvider/ValidationAPIProvider/createRequest
26
+ */
7
27
  createRequest<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, options?: RequestOptions, caller?: AnyCaller): Request;
28
+ /**
29
+ * Parse a response via the source provider, then validate the result against the endpoint's result schema.
30
+ *
31
+ * @param endpoint The endpoint the response came from.
32
+ * @param response The response to parse and validate.
33
+ * @param caller The calling function used for error stack traces.
34
+ * @returns Promise resolving to the validated result.
35
+ * @throws {ResponseError} If the result fails validation (treated as a server/transport problem).
36
+ * @example await api.parseResponse(endpoint, response)
37
+ * @see https://dhoulb.github.io/shelving/api/provider/ValidationAPIProvider/ValidationAPIProvider/parseResponse
38
+ */
8
39
  parseResponse<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>;
9
40
  }
@@ -1,11 +1,42 @@
1
1
  import { ResponseError } from "../../error/ResponseError.js";
2
2
  import { ThroughAPIProvider } from "./ThroughAPIProvider.js";
3
- /** Validate an asynchronous source provider (source can have any type because validation guarantees the type). */
3
+ /**
4
+ * Provider that validates payloads and results against the endpoint's schemas, so a source of any type is made type-safe.
5
+ * - Payload validation errors bubble up as user-readable strings; result validation errors are wrapped in `ResponseError`.
6
+ *
7
+ * @example
8
+ * const api = new ValidationAPIProvider(source);
9
+ * const result = await api.call(endpoint, payload); // validated payload and result
10
+ * @see https://dhoulb.github.io/shelving/api/provider/ValidationAPIProvider/ValidationAPIProvider
11
+ */
4
12
  export class ValidationAPIProvider extends ThroughAPIProvider {
13
+ /**
14
+ * Build a request via the source provider after validating the payload against the endpoint's payload schema.
15
+ *
16
+ * @param endpoint The endpoint to build a request for.
17
+ * @param payload The payload to validate and 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 {string} A user-readable validation message if the payload is invalid.
22
+ * @example api.createRequest(endpoint, payload)
23
+ * @see https://dhoulb.github.io/shelving/api/provider/ValidationAPIProvider/ValidationAPIProvider/createRequest
24
+ */
5
25
  createRequest(endpoint, payload, options, caller = this.createRequest) {
6
26
  // Validate payload — let thrown strings bubble up as user-readable messages for e.g. form handlers.
7
27
  return super.createRequest(endpoint, endpoint.payload.validate(payload), options, caller);
8
28
  }
29
+ /**
30
+ * Parse a response via the source provider, then validate the result against the endpoint's result schema.
31
+ *
32
+ * @param endpoint The endpoint the response came from.
33
+ * @param response The response to parse and validate.
34
+ * @param caller The calling function used for error stack traces.
35
+ * @returns Promise resolving to the validated result.
36
+ * @throws {ResponseError} If the result fails validation (treated as a server/transport problem).
37
+ * @example await api.parseResponse(endpoint, response)
38
+ * @see https://dhoulb.github.io/shelving/api/provider/ValidationAPIProvider/ValidationAPIProvider/parseResponse
39
+ */
9
40
  async parseResponse(endpoint, response, caller = this.parseResponse) {
10
41
  try {
11
42
  // Validate result — wrap in ResponseError as this is a server/transport problem, not user error.
@@ -4,14 +4,30 @@ import { type RequestBodyMethod, type RequestOptions } from "../../util/http.js"
4
4
  import type { PossibleURL } from "../../util/url.js";
5
5
  import type { Endpoint } from "../endpoint/Endpoint.js";
6
6
  import { ClientAPIProvider } from "./ClientAPIProvider.js";
7
- /** API provider that always sends request bodies as XML and parses responses as plain text. */
7
+ /**
8
+ * Client API provider that always sends request bodies as XML and parses responses as plain text.
9
+ * - Request payloads must be data objects (serialised to XML); results are returned as raw text strings.
10
+ *
11
+ * @example
12
+ * const provider = new XMLAPIProvider({ url: "https://api.example.com" });
13
+ * const xml = await provider.call(getFeed, { id: "abc" });
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/api/provider/XMLAPIProvider/XMLAPIProvider
16
+ */
8
17
  export declare class XMLAPIProvider<P extends Data = Data, R extends string = string> extends ClientAPIProvider<P, R> {
9
18
  protected _createBodyRequest(method: RequestBodyMethod, url: PossibleURL, payload: P, options: RequestOptions, caller: AnyCaller): Request;
10
19
  /**
11
20
  * Parse a text `Response` for an endpoint.
12
- *
13
21
  * - Non-2xx responses become `ResponseError`.
14
22
  * - The response body is always returned as raw text.
23
+ *
24
+ * @param _endpoint The endpoint the response was produced for.
25
+ * @param response The `Response` whose body is read as text.
26
+ * @param caller The function to attribute thrown errors to (defaults to this method).
27
+ * @returns A promise resolving to the raw text result.
28
+ * @throws {ResponseError} if the response status is non-2xx.
29
+ * @example await provider.parseResponse(getFeed, response)
30
+ * @see https://dhoulb.github.io/shelving/api/provider/XMLAPIProvider/XMLAPIProvider/parseResponse
15
31
  */
16
32
  parseResponse<PP extends P, RR extends R>(_endpoint: Endpoint<PP, RR>, response: Response, caller?: AnyCaller): Promise<RR>;
17
33
  }
@@ -1,16 +1,32 @@
1
1
  import { ResponseError } from "../../error/ResponseError.js";
2
2
  import { createXMLRequest } from "../../util/http.js";
3
3
  import { ClientAPIProvider } from "./ClientAPIProvider.js";
4
- /** API provider that always sends request bodies as XML and parses responses as plain text. */
4
+ /**
5
+ * Client API provider that always sends request bodies as XML and parses responses as plain text.
6
+ * - Request payloads must be data objects (serialised to XML); results are returned as raw text strings.
7
+ *
8
+ * @example
9
+ * const provider = new XMLAPIProvider({ url: "https://api.example.com" });
10
+ * const xml = await provider.call(getFeed, { id: "abc" });
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/api/provider/XMLAPIProvider/XMLAPIProvider
13
+ */
5
14
  export class XMLAPIProvider extends ClientAPIProvider {
6
15
  _createBodyRequest(method, url, payload, options, caller) {
7
16
  return createXMLRequest(method, url, payload, options, caller);
8
17
  }
9
18
  /**
10
19
  * Parse a text `Response` for an endpoint.
11
- *
12
20
  * - Non-2xx responses become `ResponseError`.
13
21
  * - The response body is always returned as raw text.
22
+ *
23
+ * @param _endpoint The endpoint the response was produced for.
24
+ * @param response The `Response` whose body is read as text.
25
+ * @param caller The function to attribute thrown errors to (defaults to this method).
26
+ * @returns A promise resolving to the raw text result.
27
+ * @throws {ResponseError} if the response status is non-2xx.
28
+ * @example await provider.parseResponse(getFeed, response)
29
+ * @see https://dhoulb.github.io/shelving/api/provider/XMLAPIProvider/XMLAPIProvider/parseResponse
14
30
  */
15
31
  async parseResponse(_endpoint, response, caller = this.parseResponse) {
16
32
  const { ok, status } = response;
@@ -1,10 +1,33 @@
1
1
  import { PayloadFetchStore } from "../../store/PayloadFetchStore.js";
2
2
  import type { Endpoint } from "../endpoint/Endpoint.js";
3
3
  import type { APIProvider } from "../provider/APIProvider.js";
4
- /** Store object that loads a result from an API endpoint and provider. */
4
+ /**
5
+ * Store that loads and tracks the result of calling a single API endpoint with a fixed payload, through an `APIProvider`.
6
+ *
7
+ * @example
8
+ * const store = new EndpointStore(endpoint, payload, provider);
9
+ * const result = await store; // R
10
+ * @see https://dhoulb.github.io/shelving/api/store/EndpointStore/EndpointStore
11
+ */
5
12
  export declare class EndpointStore<P, R> extends PayloadFetchStore<P, R> {
13
+ /**
14
+ * The API provider this store calls the endpoint through.
15
+ * @see https://dhoulb.github.io/shelving/api/store/EndpointStore/EndpointStore/provider
16
+ */
6
17
  readonly provider: APIProvider<P, R>;
18
+ /**
19
+ * The endpoint this store calls to fetch its result.
20
+ * @see https://dhoulb.github.io/shelving/api/store/EndpointStore/EndpointStore/endpoint
21
+ */
7
22
  readonly endpoint: Endpoint<P, R>;
23
+ /**
24
+ * Create a store that tracks the result of an endpoint call.
25
+ *
26
+ * @param endpoint The endpoint to call.
27
+ * @param payload The payload to call the endpoint with.
28
+ * @param provider The API provider to call the endpoint through.
29
+ * @example new EndpointStore(endpoint, payload, provider)
30
+ */
8
31
  constructor(endpoint: Endpoint<P, R>, payload: P, provider: APIProvider<P, R>);
9
32
  protected _fetch(signal: AbortSignal): Promise<R>;
10
33
  }
@@ -1,9 +1,32 @@
1
1
  import { PayloadFetchStore } from "../../store/PayloadFetchStore.js";
2
2
  import { NONE } from "../../util/constants.js";
3
- /** Store object that loads a result from an API endpoint and provider. */
3
+ /**
4
+ * Store that loads and tracks the result of calling a single API endpoint with a fixed payload, through an `APIProvider`.
5
+ *
6
+ * @example
7
+ * const store = new EndpointStore(endpoint, payload, provider);
8
+ * const result = await store; // R
9
+ * @see https://dhoulb.github.io/shelving/api/store/EndpointStore/EndpointStore
10
+ */
4
11
  export class EndpointStore extends PayloadFetchStore {
12
+ /**
13
+ * The API provider this store calls the endpoint through.
14
+ * @see https://dhoulb.github.io/shelving/api/store/EndpointStore/EndpointStore/provider
15
+ */
5
16
  provider;
17
+ /**
18
+ * The endpoint this store calls to fetch its result.
19
+ * @see https://dhoulb.github.io/shelving/api/store/EndpointStore/EndpointStore/endpoint
20
+ */
6
21
  endpoint;
22
+ /**
23
+ * Create a store that tracks the result of an endpoint call.
24
+ *
25
+ * @param endpoint The endpoint to call.
26
+ * @param payload The payload to call the endpoint with.
27
+ * @param provider The API provider to call the endpoint through.
28
+ * @example new EndpointStore(endpoint, payload, provider)
29
+ */
7
30
  constructor(endpoint, payload, provider) {
8
31
  super(payload, NONE);
9
32
  this.endpoint = endpoint;