shelving 1.236.0 → 1.236.1

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 +3 -0
  139. package/markup/rule/inline.js +3 -0
  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,30 +3,93 @@ import type { Endpoint } from "../endpoint/Endpoint.js";
3
3
  import type { APIProvider } from "../provider/APIProvider.js";
4
4
  import { EndpointCache } from "./EndpointCache.js";
5
5
  /**
6
- * Cache of `EndpointCache` objects for multiple endpoints.
6
+ * Cache of `EndpointCache` objects keyed by `Endpoint`, providing memoised API results across many endpoints.
7
7
  * - Use `get(endpoint)` to retrieve or create the `EndpointCache` for a given endpoint, then `get(payload)` on that to get a specific `EndpointStore`.
8
+ * - Disposing the cache disposes every nested `EndpointCache` and clears the map.
9
+ *
10
+ * @example
11
+ * const cache = new APICache(provider);
12
+ * const user = await cache.call(getUser, { id: "abc" });
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
8
15
  */
9
16
  export declare class APICache<P, R> implements AsyncDisposable {
10
17
  private readonly _endpoints;
18
+ /**
19
+ * The underlying `APIProvider` that backs every cached endpoint.
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/provider
22
+ */
11
23
  readonly provider: APIProvider<P, R>;
24
+ /**
25
+ * Create a new `APICache` backed by an `APIProvider`.
26
+ *
27
+ * @param provider The `APIProvider` used to fetch results for every cached endpoint.
28
+ * @example new APICache(provider)
29
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
30
+ */
12
31
  constructor(provider: APIProvider<P, R>);
13
32
  private _get;
14
- /** Get (or create) the `EndpointCache` for the given endpoint. */
33
+ /**
34
+ * Get (or create) the `EndpointCache` for the given endpoint.
35
+ *
36
+ * @param endpoint The endpoint whose `EndpointCache` should be returned.
37
+ * @returns The existing `EndpointCache` for `endpoint`, or a newly created one.
38
+ * @example cache.get(getUser).get({ id: "abc" })
39
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/get
40
+ */
15
41
  get<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>): EndpointCache<PP, RR>;
16
42
  /**
17
43
  * Fetch (or return a cached result) for the given endpoint and payload.
18
44
  * - Returns the cached value immediately if one exists.
19
45
  * - Waits for the in-flight fetch if the store is loading.
20
46
  * - Throws if the fetch fails, matching `APIProvider.call` behaviour.
47
+ *
48
+ * @param endpoint The endpoint to fetch a result for.
49
+ * @param payload The payload to send to the endpoint.
50
+ * @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
51
+ * @param caller The function to attribute thrown errors to (defaults to this method).
52
+ * @returns The cached or freshly fetched result.
53
+ * @throws Whatever `APIProvider.call` throws if the fetch fails.
54
+ * @example await cache.call(getUser, { id: "abc" })
55
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/call
21
56
  */
22
57
  call<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, maxAge?: number, caller?: AnyCaller): Promise<RR>;
23
- /** Invalidate a specific store for an endpoint. */
58
+ /**
59
+ * Invalidate a specific store for an endpoint so the next read refetches.
60
+ *
61
+ * @param endpoint The endpoint whose cached payload should be invalidated.
62
+ * @param payload The payload identifying the specific store to invalidate.
63
+ * @example cache.invalidate(getUser, { id: "abc" })
64
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidate
65
+ */
24
66
  invalidate<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP): void;
25
- /** Invalidate all stores for an endpoint. */
67
+ /**
68
+ * Invalidate all stores for an endpoint so the next read of any payload refetches.
69
+ *
70
+ * @param endpoint The endpoint whose stores should all be invalidated.
71
+ * @example cache.invalidateAll(getUser)
72
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidateAll
73
+ */
26
74
  invalidateAll<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>): void;
27
- /** Trigger a refetch on a specific store for an endpoint. */
75
+ /**
76
+ * Trigger a refetch on a specific store for an endpoint.
77
+ *
78
+ * @param endpoint The endpoint whose store should be refreshed.
79
+ * @param payload The payload identifying the specific store to refresh.
80
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
81
+ * @example cache.refresh(getUser, { id: "abc" })
82
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refresh
83
+ */
28
84
  refresh<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, maxAge?: number): void;
29
- /** Trigger a refetch on all stores for an endpoint. */
85
+ /**
86
+ * Trigger a refetch on all stores for an endpoint.
87
+ *
88
+ * @param endpoint The endpoint whose stores should all be refreshed.
89
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
90
+ * @example cache.refreshAll(getUser)
91
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refreshAll
92
+ */
30
93
  refreshAll<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, maxAge?: number): void;
31
94
  [Symbol.asyncDispose](): Promise<void>;
32
95
  }
@@ -3,12 +3,31 @@ import { awaitDispose } from "../../util/dispose.js";
3
3
  import { setMapItem } from "../../util/map.js";
4
4
  import { EndpointCache } from "./EndpointCache.js";
5
5
  /**
6
- * Cache of `EndpointCache` objects for multiple endpoints.
6
+ * Cache of `EndpointCache` objects keyed by `Endpoint`, providing memoised API results across many endpoints.
7
7
  * - Use `get(endpoint)` to retrieve or create the `EndpointCache` for a given endpoint, then `get(payload)` on that to get a specific `EndpointStore`.
8
+ * - Disposing the cache disposes every nested `EndpointCache` and clears the map.
9
+ *
10
+ * @example
11
+ * const cache = new APICache(provider);
12
+ * const user = await cache.call(getUser, { id: "abc" });
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
8
15
  */
9
16
  export class APICache {
10
17
  _endpoints = new Map();
18
+ /**
19
+ * The underlying `APIProvider` that backs every cached endpoint.
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/provider
22
+ */
11
23
  provider;
24
+ /**
25
+ * Create a new `APICache` backed by an `APIProvider`.
26
+ *
27
+ * @param provider The `APIProvider` used to fetch results for every cached endpoint.
28
+ * @example new APICache(provider)
29
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
30
+ */
12
31
  constructor(provider) {
13
32
  this.provider = provider;
14
33
  }
@@ -23,23 +42,60 @@ export class APICache {
23
42
  * - Returns the cached value immediately if one exists.
24
43
  * - Waits for the in-flight fetch if the store is loading.
25
44
  * - Throws if the fetch fails, matching `APIProvider.call` behaviour.
45
+ *
46
+ * @param endpoint The endpoint to fetch a result for.
47
+ * @param payload The payload to send to the endpoint.
48
+ * @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
49
+ * @param caller The function to attribute thrown errors to (defaults to this method).
50
+ * @returns The cached or freshly fetched result.
51
+ * @throws Whatever `APIProvider.call` throws if the fetch fails.
52
+ * @example await cache.call(getUser, { id: "abc" })
53
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/call
26
54
  */
27
55
  async call(endpoint, payload, maxAge = AVOID_REFRESH, caller = this.call) {
28
56
  return this.get(endpoint).call(payload, maxAge, caller);
29
57
  }
30
- /** Invalidate a specific store for an endpoint. */
58
+ /**
59
+ * Invalidate a specific store for an endpoint so the next read refetches.
60
+ *
61
+ * @param endpoint The endpoint whose cached payload should be invalidated.
62
+ * @param payload The payload identifying the specific store to invalidate.
63
+ * @example cache.invalidate(getUser, { id: "abc" })
64
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidate
65
+ */
31
66
  invalidate(endpoint, payload) {
32
67
  this._get(endpoint)?.invalidate(payload);
33
68
  }
34
- /** Invalidate all stores for an endpoint. */
69
+ /**
70
+ * Invalidate all stores for an endpoint so the next read of any payload refetches.
71
+ *
72
+ * @param endpoint The endpoint whose stores should all be invalidated.
73
+ * @example cache.invalidateAll(getUser)
74
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidateAll
75
+ */
35
76
  invalidateAll(endpoint) {
36
77
  this._get(endpoint)?.invalidateAll();
37
78
  }
38
- /** Trigger a refetch on a specific store for an endpoint. */
79
+ /**
80
+ * Trigger a refetch on a specific store for an endpoint.
81
+ *
82
+ * @param endpoint The endpoint whose store should be refreshed.
83
+ * @param payload The payload identifying the specific store to refresh.
84
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
85
+ * @example cache.refresh(getUser, { id: "abc" })
86
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refresh
87
+ */
39
88
  refresh(endpoint, payload, maxAge) {
40
89
  this._get(endpoint)?.refresh(payload, maxAge);
41
90
  }
42
- /** Trigger a refetch on all stores for an endpoint. */
91
+ /**
92
+ * Trigger a refetch on all stores for an endpoint.
93
+ *
94
+ * @param endpoint The endpoint whose stores should all be refreshed.
95
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
96
+ * @example cache.refreshAll(getUser)
97
+ * @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refreshAll
98
+ */
43
99
  refreshAll(endpoint, maxAge) {
44
100
  this._get(endpoint)?.refreshAll(maxAge);
45
101
  }
@@ -3,15 +3,49 @@ import type { Endpoint } from "../endpoint/Endpoint.js";
3
3
  import type { APIProvider } from "../provider/APIProvider.js";
4
4
  import { EndpointStore } from "../store/EndpointStore.js";
5
5
  /**
6
- * Cache of `EndpointStore` objects for a single endpoint, keyed by serialized payload.
6
+ * Cache of `EndpointStore` objects for a single endpoint, keyed by the rendered request URL of each payload.
7
7
  * - Use `get(payload)` to retrieve or create the `EndpointStore` for a given payload.
8
+ * - Disposing the cache disposes every nested `EndpointStore` and clears the map.
9
+ *
10
+ * @example
11
+ * const cache = new EndpointCache(getUser, provider);
12
+ * const user = await cache.call({ id: "abc" });
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
8
15
  */
9
16
  export declare class EndpointCache<P = unknown, R = unknown> implements AsyncDisposable {
10
17
  private readonly _endpoints;
18
+ /**
19
+ * The endpoint that every store in this cache fetches from.
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/endpoint
22
+ */
11
23
  readonly endpoint: Endpoint<P, R>;
24
+ /**
25
+ * The `APIProvider` used to render URLs and fetch results for this endpoint.
26
+ *
27
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/provider
28
+ */
12
29
  readonly provider: APIProvider<P, R>;
30
+ /**
31
+ * Create a new `EndpointCache` for a single endpoint and provider.
32
+ *
33
+ * @param endpoint The endpoint that every cached store fetches from.
34
+ * @param provider The `APIProvider` used to render URLs and fetch results.
35
+ * @example new EndpointCache(getUser, provider)
36
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
37
+ */
13
38
  constructor(endpoint: Endpoint<P, R>, provider: APIProvider<P, R>);
14
- /** Get (or create) the `EndpointStore` for the given payload. */
39
+ /**
40
+ * Get (or create) the `EndpointStore` for the given payload.
41
+ * - Stores are keyed by the rendered request URL, so equivalent payloads share a store.
42
+ *
43
+ * @param payload The payload identifying the store to return.
44
+ * @param caller The function to attribute thrown errors to (defaults to this method).
45
+ * @returns The existing `EndpointStore` for `payload`, or a newly created one.
46
+ * @example cache.get({ id: "abc" })
47
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/get
48
+ */
15
49
  get(payload: P, caller?: AnyCaller): EndpointStore<P, R>;
16
50
  /**
17
51
  * Fetch (or return a cached result) for the given payload.
@@ -19,16 +53,50 @@ export declare class EndpointCache<P = unknown, R = unknown> implements AsyncDis
19
53
  * - Waits for the in-flight fetch if the store is loading.
20
54
  * - Throws if the fetch fails, matching `APIProvider.call` behaviour.
21
55
  *
22
- * @param maxAge The maximum age (defaults to only refreshing if the value is still in a loading state).
56
+ * @param payload The payload to send to the endpoint.
57
+ * @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
58
+ * @param caller The function to attribute thrown errors to (defaults to this method).
59
+ * @returns The cached or freshly fetched result.
60
+ * @throws Whatever `APIProvider.call` throws if the fetch fails.
61
+ * @example await cache.call({ id: "abc" })
62
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/call
23
63
  */
24
64
  call(payload: P, maxAge?: number, caller?: AnyCaller): Promise<R>;
25
- /** Invalidate a specific store. */
65
+ /**
66
+ * Invalidate a specific store so the next read refetches.
67
+ *
68
+ * @param payload The payload identifying the store to invalidate.
69
+ * @param caller The function to attribute thrown errors to (defaults to this method).
70
+ * @example cache.invalidate({ id: "abc" })
71
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidate
72
+ */
26
73
  invalidate(payload: P, caller?: AnyCaller): void;
27
- /** Invalidate all stores. */
74
+ /**
75
+ * Invalidate all stores so the next read of any payload refetches.
76
+ *
77
+ * @example cache.invalidateAll()
78
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidateAll
79
+ */
28
80
  invalidateAll(): void;
29
- /** Trigger a refetch on a specific store. */
81
+ /**
82
+ * Trigger a refetch on a specific store.
83
+ *
84
+ * @param payload The payload identifying the store to refresh.
85
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
86
+ * @param caller The function to attribute thrown errors to (defaults to this method).
87
+ * @returns A promise that resolves when the refetch settles.
88
+ * @example await cache.refresh({ id: "abc" })
89
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refresh
90
+ */
30
91
  refresh(payload: P, maxAge?: number, caller?: AnyCaller): Promise<void>;
31
- /** Trigger a refetch on all stores. */
92
+ /**
93
+ * Trigger a refetch on all stores.
94
+ *
95
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
96
+ * @returns A promise that resolves when every refetch settles.
97
+ * @example await cache.refreshAll()
98
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refreshAll
99
+ */
32
100
  refreshAll(maxAge?: number): Promise<void>;
33
101
  [Symbol.asyncDispose](): Promise<void>;
34
102
  }
@@ -4,18 +4,52 @@ import { awaitDispose } from "../../util/dispose.js";
4
4
  import { setMapItem } from "../../util/map.js";
5
5
  import { EndpointStore } from "../store/EndpointStore.js";
6
6
  /**
7
- * Cache of `EndpointStore` objects for a single endpoint, keyed by serialized payload.
7
+ * Cache of `EndpointStore` objects for a single endpoint, keyed by the rendered request URL of each payload.
8
8
  * - Use `get(payload)` to retrieve or create the `EndpointStore` for a given payload.
9
+ * - Disposing the cache disposes every nested `EndpointStore` and clears the map.
10
+ *
11
+ * @example
12
+ * const cache = new EndpointCache(getUser, provider);
13
+ * const user = await cache.call({ id: "abc" });
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
9
16
  */
10
17
  export class EndpointCache {
11
18
  _endpoints = new Map();
19
+ /**
20
+ * The endpoint that every store in this cache fetches from.
21
+ *
22
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/endpoint
23
+ */
12
24
  endpoint;
25
+ /**
26
+ * The `APIProvider` used to render URLs and fetch results for this endpoint.
27
+ *
28
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/provider
29
+ */
13
30
  provider;
31
+ /**
32
+ * Create a new `EndpointCache` for a single endpoint and provider.
33
+ *
34
+ * @param endpoint The endpoint that every cached store fetches from.
35
+ * @param provider The `APIProvider` used to render URLs and fetch results.
36
+ * @example new EndpointCache(getUser, provider)
37
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
38
+ */
14
39
  constructor(endpoint, provider) {
15
40
  this.endpoint = endpoint;
16
41
  this.provider = provider;
17
42
  }
18
- /** Get (or create) the `EndpointStore` for the given payload. */
43
+ /**
44
+ * Get (or create) the `EndpointStore` for the given payload.
45
+ * - Stores are keyed by the rendered request URL, so equivalent payloads share a store.
46
+ *
47
+ * @param payload The payload identifying the store to return.
48
+ * @param caller The function to attribute thrown errors to (defaults to this method).
49
+ * @returns The existing `EndpointStore` for `payload`, or a newly created one.
50
+ * @example cache.get({ id: "abc" })
51
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/get
52
+ */
19
53
  get(payload, caller = this.get) {
20
54
  const url = this.provider.renderURL(this.endpoint, payload, caller).href;
21
55
  return this._endpoints.get(url) || setMapItem(this._endpoints, url, new EndpointStore(this.endpoint, payload, this.provider));
@@ -26,27 +60,61 @@ export class EndpointCache {
26
60
  * - Waits for the in-flight fetch if the store is loading.
27
61
  * - Throws if the fetch fails, matching `APIProvider.call` behaviour.
28
62
  *
29
- * @param maxAge The maximum age (defaults to only refreshing if the value is still in a loading state).
63
+ * @param payload The payload to send to the endpoint.
64
+ * @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
65
+ * @param caller The function to attribute thrown errors to (defaults to this method).
66
+ * @returns The cached or freshly fetched result.
67
+ * @throws Whatever `APIProvider.call` throws if the fetch fails.
68
+ * @example await cache.call({ id: "abc" })
69
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/call
30
70
  */
31
71
  async call(payload, maxAge = AVOID_REFRESH, caller = this.call) {
32
72
  const store = this.get(payload, caller);
33
73
  await store.refresh(maxAge);
34
74
  return store.value;
35
75
  }
36
- /** Invalidate a specific store. */
76
+ /**
77
+ * Invalidate a specific store so the next read refetches.
78
+ *
79
+ * @param payload The payload identifying the store to invalidate.
80
+ * @param caller The function to attribute thrown errors to (defaults to this method).
81
+ * @example cache.invalidate({ id: "abc" })
82
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidate
83
+ */
37
84
  invalidate(payload, caller = this.invalidate) {
38
85
  this.get(payload, caller)?.invalidate();
39
86
  }
40
- /** Invalidate all stores. */
87
+ /**
88
+ * Invalidate all stores so the next read of any payload refetches.
89
+ *
90
+ * @example cache.invalidateAll()
91
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidateAll
92
+ */
41
93
  invalidateAll() {
42
94
  for (const store of this._endpoints.values())
43
95
  store.invalidate();
44
96
  }
45
- /** Trigger a refetch on a specific store. */
97
+ /**
98
+ * Trigger a refetch on a specific store.
99
+ *
100
+ * @param payload The payload identifying the store to refresh.
101
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
102
+ * @param caller The function to attribute thrown errors to (defaults to this method).
103
+ * @returns A promise that resolves when the refetch settles.
104
+ * @example await cache.refresh({ id: "abc" })
105
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refresh
106
+ */
46
107
  async refresh(payload, maxAge, caller = this.invalidate) {
47
108
  await this.get(payload, caller)?.refresh(maxAge);
48
109
  }
49
- /** Trigger a refetch on all stores. */
110
+ /**
111
+ * Trigger a refetch on all stores.
112
+ *
113
+ * @param maxAge The maximum age in milliseconds before a refetch is triggered.
114
+ * @returns A promise that resolves when every refetch settles.
115
+ * @example await cache.refreshAll()
116
+ * @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refreshAll
117
+ */
50
118
  async refreshAll(maxAge) {
51
119
  await awaitValues(...this._endpoints.values().map(store => store.refresh(maxAge)));
52
120
  }