shelving 1.236.0 → 1.236.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (793) hide show
  1. package/api/cache/APICache.d.ts +69 -6
  2. package/api/cache/APICache.js +61 -5
  3. package/api/cache/EndpointCache.d.ts +75 -7
  4. package/api/cache/EndpointCache.js +75 -7
  5. package/api/endpoint/Endpoint.d.ts +141 -25
  6. package/api/endpoint/Endpoint.js +55 -9
  7. package/api/endpoint/util.d.ts +28 -6
  8. package/api/provider/APIProvider.d.ts +58 -14
  9. package/api/provider/APIProvider.js +24 -2
  10. package/api/provider/CachedAPIProvider.d.ts +58 -5
  11. package/api/provider/CachedAPIProvider.js +58 -6
  12. package/api/provider/ClientAPIProvider.d.ts +80 -4
  13. package/api/provider/ClientAPIProvider.js +75 -4
  14. package/api/provider/DebugAPIProvider.d.ts +40 -1
  15. package/api/provider/DebugAPIProvider.js +40 -1
  16. package/api/provider/JSONAPIProvider.d.ts +18 -2
  17. package/api/provider/JSONAPIProvider.js +18 -2
  18. package/api/provider/LoggingAPIProvider.d.ts +25 -2
  19. package/api/provider/LoggingAPIProvider.js +25 -2
  20. package/api/provider/MockAPIProvider.d.ts +72 -1
  21. package/api/provider/MockAPIProvider.js +60 -4
  22. package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
  23. package/api/provider/MockEndpointAPIProvider.js +9 -0
  24. package/api/provider/ThroughAPIProvider.d.ts +67 -1
  25. package/api/provider/ThroughAPIProvider.js +67 -1
  26. package/api/provider/ValidationAPIProvider.d.ts +32 -1
  27. package/api/provider/ValidationAPIProvider.js +32 -1
  28. package/api/provider/XMLAPIProvider.d.ts +18 -2
  29. package/api/provider/XMLAPIProvider.js +18 -2
  30. package/api/store/EndpointStore.d.ts +24 -1
  31. package/api/store/EndpointStore.js +24 -1
  32. package/bun/BunPostgreSQLProvider.d.ts +38 -0
  33. package/bun/BunPostgreSQLProvider.js +38 -2
  34. package/cloudflare/CloudflareD1Provider.d.ts +29 -2
  35. package/cloudflare/CloudflareD1Provider.js +29 -2
  36. package/cloudflare/CloudflareKVProvider.d.ts +115 -0
  37. package/cloudflare/CloudflareKVProvider.js +115 -0
  38. package/cloudflare/types.d.ts +41 -7
  39. package/db/cache/CollectionCache.d.ts +83 -7
  40. package/db/cache/CollectionCache.js +83 -7
  41. package/db/cache/DBCache.d.ts +93 -8
  42. package/db/cache/DBCache.js +85 -7
  43. package/db/collection/Collection.d.ts +103 -15
  44. package/db/collection/Collection.js +58 -6
  45. package/db/migrate/DBMigrator.d.ts +29 -1
  46. package/db/migrate/DBMigrator.js +20 -1
  47. package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
  48. package/db/migrate/PostgreSQLMigrator.js +8 -1
  49. package/db/migrate/SQLMigrator.d.ts +63 -4
  50. package/db/migrate/SQLMigrator.js +51 -1
  51. package/db/migrate/SQLiteMigrator.d.ts +8 -1
  52. package/db/migrate/SQLiteMigrator.js +8 -1
  53. package/db/provider/CacheDBProvider.d.ts +135 -1
  54. package/db/provider/CacheDBProvider.js +135 -1
  55. package/db/provider/ChangesDBProvider.d.ts +84 -3
  56. package/db/provider/ChangesDBProvider.js +77 -2
  57. package/db/provider/DBProvider.d.ts +148 -1
  58. package/db/provider/DBProvider.js +51 -1
  59. package/db/provider/DebugDBProvider.d.ts +118 -1
  60. package/db/provider/DebugDBProvider.js +118 -1
  61. package/db/provider/MemoryDBProvider.d.ts +262 -7
  62. package/db/provider/MemoryDBProvider.js +262 -7
  63. package/db/provider/MockDBProvider.d.ts +113 -2
  64. package/db/provider/MockDBProvider.js +106 -1
  65. package/db/provider/PostgreSQLProvider.d.ts +34 -2
  66. package/db/provider/PostgreSQLProvider.js +34 -4
  67. package/db/provider/SQLProvider.d.ts +250 -14
  68. package/db/provider/SQLProvider.js +237 -13
  69. package/db/provider/SQLiteProvider.d.ts +41 -1
  70. package/db/provider/SQLiteProvider.js +41 -4
  71. package/db/provider/ThroughDBProvider.d.ts +156 -1
  72. package/db/provider/ThroughDBProvider.js +156 -1
  73. package/db/provider/ValidationDBProvider.d.ts +120 -1
  74. package/db/provider/ValidationDBProvider.js +120 -1
  75. package/db/store/ItemStore.d.ts +38 -2
  76. package/db/store/ItemStore.js +38 -2
  77. package/db/store/QueryStore.d.ts +64 -6
  78. package/db/store/QueryStore.js +64 -6
  79. package/error/BaseError.d.ts +27 -2
  80. package/error/BaseError.js +14 -0
  81. package/error/Errors.d.ts +12 -1
  82. package/error/Errors.js +12 -1
  83. package/error/NetworkError.d.ts +13 -1
  84. package/error/NetworkError.js +13 -1
  85. package/error/RequestError.d.ts +90 -7
  86. package/error/RequestError.js +90 -7
  87. package/error/RequiredError.d.ts +11 -1
  88. package/error/RequiredError.js +11 -1
  89. package/error/ResponseError.d.ts +19 -2
  90. package/error/ResponseError.js +19 -2
  91. package/error/UnexpectedError.d.ts +14 -1
  92. package/error/UnexpectedError.js +14 -1
  93. package/error/UnimplementedError.d.ts +13 -1
  94. package/error/UnimplementedError.js +13 -1
  95. package/error/ValueError.d.ts +14 -1
  96. package/error/ValueError.js +14 -1
  97. package/extract/DirectoryExtractor.d.ts +35 -1
  98. package/extract/DirectoryExtractor.js +30 -0
  99. package/extract/Extractor.d.ts +21 -2
  100. package/extract/Extractor.js +7 -1
  101. package/extract/FileExtractor.d.ts +18 -0
  102. package/extract/FileExtractor.js +18 -0
  103. package/extract/IndexExtractor.d.ts +36 -1
  104. package/extract/IndexExtractor.js +31 -0
  105. package/extract/MarkupExtractor.d.ts +15 -0
  106. package/extract/MarkupExtractor.js +15 -0
  107. package/extract/MergingExtractor.d.ts +36 -1
  108. package/extract/MergingExtractor.js +31 -0
  109. package/extract/ModuleExtractor.d.ts +25 -1
  110. package/extract/ModuleExtractor.js +20 -0
  111. package/extract/PackageExtractor.d.ts +36 -1
  112. package/extract/PackageExtractor.js +31 -0
  113. package/extract/ThroughExtractor.d.ts +22 -1
  114. package/extract/ThroughExtractor.js +22 -1
  115. package/extract/TypescriptExtractor.d.ts +21 -0
  116. package/extract/TypescriptExtractor.js +28 -3
  117. package/firestore/client/FirestoreClientProvider.d.ts +129 -4
  118. package/firestore/client/FirestoreClientProvider.js +129 -4
  119. package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
  120. package/firestore/lite/FirestoreLiteProvider.js +128 -3
  121. package/firestore/server/FirestoreServerProvider.d.ts +129 -2
  122. package/firestore/server/FirestoreServerProvider.js +129 -2
  123. package/markup/MarkupParser.d.ts +57 -10
  124. package/markup/MarkupParser.js +50 -9
  125. package/markup/MarkupRule.d.ts +34 -1
  126. package/markup/Parser.d.ts +18 -0
  127. package/markup/Parser.js +11 -0
  128. package/markup/rule/blockquote.d.ts +3 -0
  129. package/markup/rule/blockquote.js +3 -0
  130. package/markup/rule/code.d.ts +3 -0
  131. package/markup/rule/code.js +3 -0
  132. package/markup/rule/fenced.d.ts +3 -0
  133. package/markup/rule/fenced.js +3 -0
  134. package/markup/rule/heading.d.ts +3 -0
  135. package/markup/rule/heading.js +3 -0
  136. package/markup/rule/index.d.ts +16 -3
  137. package/markup/rule/index.js +16 -3
  138. package/markup/rule/inline.d.ts +4 -1
  139. package/markup/rule/inline.js +5 -2
  140. package/markup/rule/linebreak.d.ts +3 -0
  141. package/markup/rule/linebreak.js +3 -0
  142. package/markup/rule/link.d.ts +6 -0
  143. package/markup/rule/link.js +6 -0
  144. package/markup/rule/ordered.d.ts +3 -0
  145. package/markup/rule/ordered.js +3 -0
  146. package/markup/rule/paragraph.d.ts +3 -0
  147. package/markup/rule/paragraph.js +3 -0
  148. package/markup/rule/separator.d.ts +3 -0
  149. package/markup/rule/separator.js +3 -0
  150. package/markup/rule/table.d.ts +3 -0
  151. package/markup/rule/table.js +3 -0
  152. package/markup/rule/unordered.d.ts +3 -0
  153. package/markup/rule/unordered.js +3 -0
  154. package/markup/util/regexp.d.ts +80 -3
  155. package/markup/util/regexp.js +44 -0
  156. package/package.json +1 -1
  157. package/react/createAPIContext.d.ts +15 -0
  158. package/react/createAPIContext.js +10 -0
  159. package/react/createDBContext.d.ts +15 -0
  160. package/react/createDBContext.js +10 -0
  161. package/react/useInstance.d.ts +11 -0
  162. package/react/useInstance.js +11 -0
  163. package/react/useLazy.d.ts +11 -0
  164. package/react/useMap.d.ts +14 -1
  165. package/react/useMap.js +14 -1
  166. package/react/useReduce.d.ts +12 -0
  167. package/react/useSequence.d.ts +10 -0
  168. package/react/useSequence.js +10 -0
  169. package/react/useStore.d.ts +16 -1
  170. package/schema/AddressSchema.d.ts +41 -4
  171. package/schema/AddressSchema.js +36 -3
  172. package/schema/ArraySchema.d.ts +48 -6
  173. package/schema/ArraySchema.js +40 -5
  174. package/schema/BooleanSchema.d.ts +59 -3
  175. package/schema/BooleanSchema.js +51 -2
  176. package/schema/ChoiceSchema.d.ts +61 -7
  177. package/schema/ChoiceSchema.js +44 -2
  178. package/schema/ColorSchema.d.ts +41 -8
  179. package/schema/ColorSchema.js +36 -7
  180. package/schema/CountrySchema.d.ts +44 -4
  181. package/schema/CountrySchema.js +39 -3
  182. package/schema/CurrencyAmountSchema.d.ts +104 -8
  183. package/schema/CurrencyAmountSchema.js +91 -4
  184. package/schema/CurrencyCodeSchema.d.ts +56 -4
  185. package/schema/CurrencyCodeSchema.js +49 -3
  186. package/schema/DataSchema.d.ts +101 -10
  187. package/schema/DataSchema.js +87 -8
  188. package/schema/DateSchema.d.ts +73 -4
  189. package/schema/DateSchema.js +57 -2
  190. package/schema/DateTimeSchema.d.ts +40 -3
  191. package/schema/DateTimeSchema.js +40 -3
  192. package/schema/DictionarySchema.d.ts +54 -4
  193. package/schema/DictionarySchema.js +47 -3
  194. package/schema/EmailSchema.d.ts +34 -3
  195. package/schema/EmailSchema.js +34 -3
  196. package/schema/EntitySchema.d.ts +45 -4
  197. package/schema/EntitySchema.js +38 -3
  198. package/schema/FileSchema.d.ts +45 -4
  199. package/schema/FileSchema.js +39 -3
  200. package/schema/KeySchema.d.ts +32 -3
  201. package/schema/KeySchema.js +32 -3
  202. package/schema/NullableSchema.d.ts +64 -4
  203. package/schema/NullableSchema.js +59 -3
  204. package/schema/NumberSchema.d.ts +137 -12
  205. package/schema/NumberSchema.js +127 -11
  206. package/schema/OptionalSchema.d.ts +61 -4
  207. package/schema/OptionalSchema.js +56 -4
  208. package/schema/PasswordSchema.d.ts +37 -1
  209. package/schema/PasswordSchema.js +32 -1
  210. package/schema/PhoneSchema.d.ts +40 -4
  211. package/schema/PhoneSchema.js +35 -3
  212. package/schema/RequiredSchema.d.ts +39 -3
  213. package/schema/RequiredSchema.js +41 -3
  214. package/schema/Schema.d.ts +67 -7
  215. package/schema/Schema.js +42 -6
  216. package/schema/SlugSchema.d.ts +37 -5
  217. package/schema/SlugSchema.js +37 -5
  218. package/schema/StringSchema.d.ts +124 -19
  219. package/schema/StringSchema.js +107 -17
  220. package/schema/ThroughSchema.d.ts +35 -2
  221. package/schema/ThroughSchema.js +30 -1
  222. package/schema/TimeSchema.d.ts +43 -3
  223. package/schema/TimeSchema.js +43 -3
  224. package/schema/URISchema.d.ts +67 -6
  225. package/schema/URISchema.js +60 -6
  226. package/schema/URLSchema.d.ts +69 -6
  227. package/schema/URLSchema.js +61 -6
  228. package/schema/UUIDSchema.d.ts +37 -4
  229. package/schema/UUIDSchema.js +37 -4
  230. package/sequence/DeferredSequence.d.ts +49 -3
  231. package/sequence/DeferredSequence.js +39 -3
  232. package/sequence/InspectSequence.d.ts +59 -5
  233. package/sequence/InspectSequence.js +59 -5
  234. package/sequence/LazySequence.d.ts +30 -2
  235. package/sequence/LazySequence.js +30 -2
  236. package/sequence/Sequence.d.ts +11 -0
  237. package/sequence/Sequence.js +10 -0
  238. package/sequence/ThroughSequence.d.ts +15 -0
  239. package/sequence/ThroughSequence.js +15 -0
  240. package/store/ArrayStore.d.ts +74 -11
  241. package/store/ArrayStore.js +74 -11
  242. package/store/BooleanStore.d.ts +19 -2
  243. package/store/BooleanStore.js +19 -2
  244. package/store/BusyStore.d.ts +13 -1
  245. package/store/BusyStore.js +13 -1
  246. package/store/DataStore.d.ts +118 -15
  247. package/store/DataStore.js +118 -15
  248. package/store/DictionaryStore.d.ts +66 -8
  249. package/store/DictionaryStore.js +66 -8
  250. package/store/FetchStore.d.ts +43 -6
  251. package/store/FetchStore.js +36 -5
  252. package/store/PathStore.d.ts +44 -5
  253. package/store/PathStore.js +44 -5
  254. package/store/PayloadFetchStore.d.ts +16 -1
  255. package/store/PayloadFetchStore.js +9 -1
  256. package/store/Store.d.ts +85 -16
  257. package/store/Store.js +52 -10
  258. package/store/URLStore.d.ts +173 -15
  259. package/store/URLStore.js +173 -15
  260. package/test/basics.d.ts +70 -0
  261. package/test/basics.js +60 -0
  262. package/test/people.d.ts +45 -0
  263. package/test/people.js +35 -0
  264. package/test/util.d.ts +30 -3
  265. package/test/util.js +30 -3
  266. package/ui/app/App.d.ts +14 -2
  267. package/ui/app/App.js +9 -2
  268. package/ui/app/App.tsx +14 -2
  269. package/ui/block/Address.d.ts +45 -3
  270. package/ui/block/Address.js +30 -3
  271. package/ui/block/Address.tsx +46 -3
  272. package/ui/block/Block.d.ts +23 -1
  273. package/ui/block/Block.js +13 -1
  274. package/ui/block/Block.tsx +23 -1
  275. package/ui/block/Blockquote.d.ts +21 -0
  276. package/ui/block/Blockquote.js +16 -0
  277. package/ui/block/Blockquote.tsx +22 -0
  278. package/ui/block/Caption.d.ts +21 -1
  279. package/ui/block/Caption.js +16 -1
  280. package/ui/block/Caption.tsx +22 -1
  281. package/ui/block/Card.d.ts +6 -0
  282. package/ui/block/Card.js +1 -0
  283. package/ui/block/Card.tsx +6 -0
  284. package/ui/block/Definitions.d.ts +18 -0
  285. package/ui/block/Definitions.js +13 -0
  286. package/ui/block/Definitions.tsx +19 -0
  287. package/ui/block/Divider.d.ts +21 -0
  288. package/ui/block/Divider.js +16 -0
  289. package/ui/block/Divider.tsx +22 -0
  290. package/ui/block/Heading.d.ts +20 -1
  291. package/ui/block/Heading.js +15 -0
  292. package/ui/block/Heading.tsx +21 -1
  293. package/ui/block/Image.d.ts +23 -0
  294. package/ui/block/Image.js +18 -0
  295. package/ui/block/Image.tsx +24 -0
  296. package/ui/block/Label.d.ts +18 -3
  297. package/ui/block/Label.js +13 -3
  298. package/ui/block/Label.tsx +18 -3
  299. package/ui/block/List.d.ts +30 -0
  300. package/ui/block/List.js +25 -0
  301. package/ui/block/List.tsx +32 -0
  302. package/ui/block/Panel.d.ts +13 -1
  303. package/ui/block/Panel.js +3 -0
  304. package/ui/block/Panel.tsx +13 -1
  305. package/ui/block/Paragraph.d.ts +23 -0
  306. package/ui/block/Paragraph.js +18 -0
  307. package/ui/block/Paragraph.tsx +24 -0
  308. package/ui/block/Preformatted.d.ts +20 -0
  309. package/ui/block/Preformatted.js +15 -0
  310. package/ui/block/Preformatted.tsx +21 -0
  311. package/ui/block/Prose.d.ts +14 -1
  312. package/ui/block/Prose.js +9 -1
  313. package/ui/block/Prose.tsx +14 -1
  314. package/ui/block/Section.d.ts +69 -6
  315. package/ui/block/Section.js +59 -6
  316. package/ui/block/Section.tsx +70 -6
  317. package/ui/block/Subheading.d.ts +20 -1
  318. package/ui/block/Subheading.js +15 -0
  319. package/ui/block/Subheading.tsx +21 -1
  320. package/ui/block/Table.d.ts +20 -0
  321. package/ui/block/Table.js +15 -0
  322. package/ui/block/Table.tsx +21 -0
  323. package/ui/block/Title.d.ts +20 -1
  324. package/ui/block/Title.js +15 -0
  325. package/ui/block/Title.tsx +21 -1
  326. package/ui/block/Video.d.ts +50 -3
  327. package/ui/block/Video.js +30 -3
  328. package/ui/block/Video.tsx +50 -3
  329. package/ui/dialog/Dialog.d.ts +28 -1
  330. package/ui/dialog/Dialog.js +18 -1
  331. package/ui/dialog/Dialog.tsx +28 -1
  332. package/ui/dialog/Dialogs.d.ts +53 -6
  333. package/ui/dialog/Dialogs.js +43 -6
  334. package/ui/dialog/Dialogs.tsx +53 -6
  335. package/ui/dialog/Modal.d.ts +13 -0
  336. package/ui/dialog/Modal.js +8 -0
  337. package/ui/dialog/Modal.tsx +13 -0
  338. package/ui/docs/DocumentationButtons.d.ts +5 -1
  339. package/ui/docs/DocumentationButtons.tsx +5 -1
  340. package/ui/docs/DocumentationCard.d.ts +6 -1
  341. package/ui/docs/DocumentationCard.js +6 -1
  342. package/ui/docs/DocumentationCard.tsx +6 -1
  343. package/ui/docs/DocumentationKind.d.ts +13 -1
  344. package/ui/docs/DocumentationKind.js +8 -0
  345. package/ui/docs/DocumentationKind.tsx +13 -1
  346. package/ui/docs/DocumentationPage.d.ts +6 -1
  347. package/ui/docs/DocumentationPage.js +6 -1
  348. package/ui/docs/DocumentationPage.tsx +6 -1
  349. package/ui/docs/DocumentationSignatures.d.ts +10 -1
  350. package/ui/docs/DocumentationSignatures.js +5 -0
  351. package/ui/docs/DocumentationSignatures.tsx +10 -1
  352. package/ui/form/ArrayInput.d.ts +15 -0
  353. package/ui/form/ArrayInput.tsx +15 -0
  354. package/ui/form/ArrayRadioInputs.d.ts +10 -0
  355. package/ui/form/ArrayRadioInputs.js +5 -0
  356. package/ui/form/ArrayRadioInputs.tsx +10 -0
  357. package/ui/form/Button.d.ts +19 -3
  358. package/ui/form/Button.js +14 -2
  359. package/ui/form/Button.tsx +19 -3
  360. package/ui/form/ButtonInput.d.ts +14 -1
  361. package/ui/form/ButtonInput.js +9 -1
  362. package/ui/form/ButtonInput.tsx +14 -1
  363. package/ui/form/ButtonInputPopover.d.ts +10 -0
  364. package/ui/form/ButtonInputPopover.js +5 -0
  365. package/ui/form/ButtonInputPopover.tsx +10 -0
  366. package/ui/form/ButtonPopover.d.ts +11 -1
  367. package/ui/form/ButtonPopover.js +6 -1
  368. package/ui/form/ButtonPopover.tsx +11 -1
  369. package/ui/form/CheckboxInput.d.ts +14 -1
  370. package/ui/form/CheckboxInput.js +9 -1
  371. package/ui/form/CheckboxInput.tsx +14 -1
  372. package/ui/form/ChoiceRadioInputs.d.ts +10 -0
  373. package/ui/form/ChoiceRadioInputs.tsx +10 -0
  374. package/ui/form/Clickable.d.ts +45 -5
  375. package/ui/form/Clickable.js +30 -3
  376. package/ui/form/Clickable.tsx +45 -5
  377. package/ui/form/DataInput.d.ts +14 -0
  378. package/ui/form/DataInput.tsx +14 -0
  379. package/ui/form/DateInput.d.ts +14 -0
  380. package/ui/form/DateInput.js +9 -0
  381. package/ui/form/DateInput.tsx +14 -0
  382. package/ui/form/DictionaryInput.d.ts +15 -0
  383. package/ui/form/DictionaryInput.tsx +15 -0
  384. package/ui/form/Field.d.ts +5 -0
  385. package/ui/form/Field.tsx +5 -0
  386. package/ui/form/FileInput.d.ts +14 -0
  387. package/ui/form/FileInput.js +9 -0
  388. package/ui/form/FileInput.tsx +14 -0
  389. package/ui/form/Form.d.ts +55 -6
  390. package/ui/form/Form.js +35 -3
  391. package/ui/form/Form.tsx +55 -6
  392. package/ui/form/FormContext.d.ts +24 -3
  393. package/ui/form/FormContext.js +5 -1
  394. package/ui/form/FormContext.tsx +24 -3
  395. package/ui/form/FormFields.d.ts +15 -2
  396. package/ui/form/FormFields.js +15 -2
  397. package/ui/form/FormFields.tsx +15 -2
  398. package/ui/form/FormFooter.d.ts +13 -3
  399. package/ui/form/FormFooter.js +8 -3
  400. package/ui/form/FormFooter.tsx +13 -3
  401. package/ui/form/FormInput.d.ts +21 -2
  402. package/ui/form/FormInput.js +16 -2
  403. package/ui/form/FormInput.tsx +21 -2
  404. package/ui/form/FormMessage.d.ts +8 -1
  405. package/ui/form/FormMessage.js +8 -1
  406. package/ui/form/FormMessage.tsx +8 -2
  407. package/ui/form/FormNotice.d.ts +8 -1
  408. package/ui/form/FormNotice.js +8 -1
  409. package/ui/form/FormNotice.tsx +8 -2
  410. package/ui/form/FormNotify.d.ts +8 -1
  411. package/ui/form/FormNotify.js +8 -1
  412. package/ui/form/FormNotify.tsx +8 -2
  413. package/ui/form/FormStore.d.ts +50 -6
  414. package/ui/form/FormStore.js +50 -6
  415. package/ui/form/FormStore.tsx +50 -6
  416. package/ui/form/Input.d.ts +65 -1
  417. package/ui/form/Input.js +60 -0
  418. package/ui/form/Input.tsx +77 -1
  419. package/ui/form/NumberInput.d.ts +14 -0
  420. package/ui/form/NumberInput.js +9 -0
  421. package/ui/form/NumberInput.tsx +14 -0
  422. package/ui/form/OutputInput.d.ts +13 -1
  423. package/ui/form/OutputInput.js +8 -1
  424. package/ui/form/OutputInput.tsx +13 -1
  425. package/ui/form/Popover.d.ts +18 -2
  426. package/ui/form/Popover.js +8 -2
  427. package/ui/form/Popover.tsx +18 -2
  428. package/ui/form/Progress.d.ts +26 -2
  429. package/ui/form/Progress.js +16 -2
  430. package/ui/form/Progress.tsx +26 -2
  431. package/ui/form/QueryInput.d.ts +14 -5
  432. package/ui/form/QueryInput.js +9 -5
  433. package/ui/form/QueryInput.tsx +14 -5
  434. package/ui/form/RadioInput.d.ts +14 -1
  435. package/ui/form/RadioInput.js +9 -1
  436. package/ui/form/RadioInput.tsx +14 -1
  437. package/ui/form/SchemaInput.d.ts +138 -7
  438. package/ui/form/SchemaInput.js +79 -4
  439. package/ui/form/SchemaInput.tsx +138 -7
  440. package/ui/form/SelectInput.d.ts +14 -0
  441. package/ui/form/SelectInput.tsx +14 -0
  442. package/ui/form/SubmitButton.d.ts +14 -1
  443. package/ui/form/SubmitButton.js +9 -1
  444. package/ui/form/SubmitButton.tsx +14 -1
  445. package/ui/form/TextInput.d.ts +15 -0
  446. package/ui/form/TextInput.js +10 -0
  447. package/ui/form/TextInput.tsx +15 -0
  448. package/ui/inline/Code.d.ts +29 -0
  449. package/ui/inline/Code.js +24 -0
  450. package/ui/inline/Code.tsx +31 -0
  451. package/ui/inline/Deleted.d.ts +23 -0
  452. package/ui/inline/Deleted.js +18 -0
  453. package/ui/inline/Deleted.tsx +24 -0
  454. package/ui/inline/Emphasis.d.ts +23 -0
  455. package/ui/inline/Emphasis.js +18 -0
  456. package/ui/inline/Emphasis.tsx +24 -0
  457. package/ui/inline/Inserted.d.ts +23 -0
  458. package/ui/inline/Inserted.js +18 -0
  459. package/ui/inline/Inserted.tsx +24 -0
  460. package/ui/inline/Link.d.ts +23 -0
  461. package/ui/inline/Link.js +18 -0
  462. package/ui/inline/Link.tsx +24 -0
  463. package/ui/inline/Mark.d.ts +23 -0
  464. package/ui/inline/Mark.js +18 -0
  465. package/ui/inline/Mark.tsx +24 -0
  466. package/ui/inline/Small.d.ts +23 -0
  467. package/ui/inline/Small.js +18 -0
  468. package/ui/inline/Small.tsx +24 -0
  469. package/ui/inline/Strong.d.ts +23 -0
  470. package/ui/inline/Strong.js +18 -0
  471. package/ui/inline/Strong.tsx +24 -0
  472. package/ui/inline/Subscript.d.ts +23 -0
  473. package/ui/inline/Subscript.js +18 -0
  474. package/ui/inline/Subscript.tsx +24 -0
  475. package/ui/inline/Superscript.d.ts +23 -0
  476. package/ui/inline/Superscript.js +18 -0
  477. package/ui/inline/Superscript.tsx +24 -0
  478. package/ui/inline/When.d.ts +42 -3
  479. package/ui/inline/When.js +27 -3
  480. package/ui/inline/When.tsx +42 -3
  481. package/ui/layout/CenteredLayout.d.ts +12 -1
  482. package/ui/layout/CenteredLayout.js +7 -1
  483. package/ui/layout/CenteredLayout.tsx +12 -1
  484. package/ui/layout/Layout.d.ts +12 -3
  485. package/ui/layout/Layout.js +12 -3
  486. package/ui/layout/Layout.ts +12 -3
  487. package/ui/layout/SidebarLayout.d.ts +12 -0
  488. package/ui/layout/SidebarLayout.js +7 -0
  489. package/ui/layout/SidebarLayout.tsx +12 -0
  490. package/ui/menu/Menu.d.ts +22 -0
  491. package/ui/menu/Menu.js +12 -0
  492. package/ui/menu/Menu.tsx +22 -0
  493. package/ui/misc/Catcher.d.ts +77 -5
  494. package/ui/misc/Catcher.js +47 -5
  495. package/ui/misc/Catcher.tsx +77 -5
  496. package/ui/misc/Loading.d.ts +20 -0
  497. package/ui/misc/Loading.js +15 -0
  498. package/ui/misc/Loading.tsx +20 -0
  499. package/ui/misc/Mapper.d.ts +13 -1
  500. package/ui/misc/Mapper.js +4 -0
  501. package/ui/misc/Mapper.tsx +13 -1
  502. package/ui/misc/Markup.d.ts +9 -1
  503. package/ui/misc/Markup.js +4 -0
  504. package/ui/misc/Markup.tsx +9 -1
  505. package/ui/misc/MetaContext.d.ts +24 -7
  506. package/ui/misc/MetaContext.js +19 -6
  507. package/ui/misc/MetaContext.tsx +24 -7
  508. package/ui/misc/StatusIcon.d.ts +16 -1
  509. package/ui/misc/StatusIcon.js +11 -1
  510. package/ui/misc/StatusIcon.tsx +16 -1
  511. package/ui/misc/Tag.d.ts +21 -0
  512. package/ui/misc/Tag.js +11 -0
  513. package/ui/misc/Tag.tsx +21 -0
  514. package/ui/notice/Message.d.ts +27 -1
  515. package/ui/notice/Message.js +22 -1
  516. package/ui/notice/Message.tsx +27 -1
  517. package/ui/notice/Notice.d.ts +24 -0
  518. package/ui/notice/Notice.js +19 -0
  519. package/ui/notice/Notice.tsx +24 -0
  520. package/ui/notice/NoticeStore.d.ts +30 -2
  521. package/ui/notice/NoticeStore.js +30 -2
  522. package/ui/notice/NoticeStore.ts +30 -2
  523. package/ui/notice/Notices.d.ts +11 -1
  524. package/ui/notice/Notices.js +6 -1
  525. package/ui/notice/Notices.tsx +11 -1
  526. package/ui/notice/NoticesStore.d.ts +23 -3
  527. package/ui/notice/NoticesStore.js +23 -3
  528. package/ui/notice/NoticesStore.ts +23 -3
  529. package/ui/page/HTML.d.ts +13 -2
  530. package/ui/page/HTML.js +8 -2
  531. package/ui/page/HTML.tsx +13 -2
  532. package/ui/page/Head.d.ts +5 -1
  533. package/ui/page/Head.js +5 -1
  534. package/ui/page/Head.tsx +5 -1
  535. package/ui/page/Page.d.ts +12 -1
  536. package/ui/page/Page.js +7 -1
  537. package/ui/page/Page.tsx +12 -1
  538. package/ui/router/Navigation.d.ts +11 -0
  539. package/ui/router/Navigation.js +6 -0
  540. package/ui/router/Navigation.tsx +11 -0
  541. package/ui/router/NavigationContext.d.ts +14 -2
  542. package/ui/router/NavigationContext.js +14 -2
  543. package/ui/router/NavigationContext.tsx +14 -2
  544. package/ui/router/NavigationStore.d.ts +29 -1
  545. package/ui/router/NavigationStore.js +29 -1
  546. package/ui/router/NavigationStore.tsx +29 -1
  547. package/ui/router/Router.d.ts +12 -1
  548. package/ui/router/Router.js +7 -1
  549. package/ui/router/Router.tsx +12 -1
  550. package/ui/router/Routes.d.ts +14 -4
  551. package/ui/router/Routes.tsx +14 -4
  552. package/ui/style/Color.d.ts +15 -2
  553. package/ui/style/Color.js +5 -0
  554. package/ui/style/Color.tsx +15 -2
  555. package/ui/style/Flex.d.ts +41 -4
  556. package/ui/style/Flex.js +26 -3
  557. package/ui/style/Flex.tsx +41 -4
  558. package/ui/style/Gap.d.ts +18 -3
  559. package/ui/style/Gap.js +8 -1
  560. package/ui/style/Gap.tsx +18 -3
  561. package/ui/style/Padding.d.ts +18 -3
  562. package/ui/style/Padding.js +8 -1
  563. package/ui/style/Padding.tsx +18 -3
  564. package/ui/style/Scroll.d.ts +36 -1
  565. package/ui/style/Scroll.js +26 -1
  566. package/ui/style/Scroll.tsx +37 -1
  567. package/ui/style/Space.d.ts +18 -3
  568. package/ui/style/Space.js +8 -1
  569. package/ui/style/Space.tsx +18 -3
  570. package/ui/style/Status.d.ts +23 -7
  571. package/ui/style/Status.js +13 -5
  572. package/ui/style/Status.tsx +23 -7
  573. package/ui/style/Tint.d.ts +7 -1
  574. package/ui/style/Tint.js +7 -1
  575. package/ui/style/Tint.tsx +7 -1
  576. package/ui/style/Typography.d.ts +38 -6
  577. package/ui/style/Typography.js +8 -0
  578. package/ui/style/Typography.tsx +38 -6
  579. package/ui/style/Width.d.ts +18 -1
  580. package/ui/style/Width.js +8 -0
  581. package/ui/style/Width.tsx +18 -1
  582. package/ui/transition/CollapseTransition.d.ts +13 -0
  583. package/ui/transition/CollapseTransition.js +8 -0
  584. package/ui/transition/CollapseTransition.tsx +13 -0
  585. package/ui/transition/FadeTransition.d.ts +13 -0
  586. package/ui/transition/FadeTransition.js +8 -0
  587. package/ui/transition/FadeTransition.tsx +13 -0
  588. package/ui/transition/HorizontalTransition.d.ts +13 -0
  589. package/ui/transition/HorizontalTransition.js +8 -0
  590. package/ui/transition/HorizontalTransition.tsx +13 -0
  591. package/ui/transition/Transition.d.ts +12 -4
  592. package/ui/transition/Transition.js +7 -3
  593. package/ui/transition/Transition.tsx +12 -4
  594. package/ui/transition/VerticalTransition.d.ts +13 -0
  595. package/ui/transition/VerticalTransition.js +8 -0
  596. package/ui/transition/VerticalTransition.tsx +13 -0
  597. package/ui/transition/util.d.ts +16 -6
  598. package/ui/transition/util.js +7 -1
  599. package/ui/transition/util.tsx +16 -6
  600. package/ui/tree/TreeApp.d.ts +11 -0
  601. package/ui/tree/TreeApp.js +6 -0
  602. package/ui/tree/TreeApp.tsx +11 -0
  603. package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
  604. package/ui/tree/TreeBreadcrumbs.js +6 -0
  605. package/ui/tree/TreeBreadcrumbs.tsx +11 -0
  606. package/ui/tree/TreeButton.d.ts +9 -1
  607. package/ui/tree/TreeButton.js +4 -0
  608. package/ui/tree/TreeButton.tsx +9 -1
  609. package/ui/tree/TreeCard.d.ts +8 -1
  610. package/ui/tree/TreeCard.js +8 -1
  611. package/ui/tree/TreeCard.tsx +8 -1
  612. package/ui/tree/TreeCards.d.ts +16 -1
  613. package/ui/tree/TreeCards.js +11 -1
  614. package/ui/tree/TreeCards.tsx +16 -1
  615. package/ui/tree/TreeContext.d.ts +18 -1
  616. package/ui/tree/TreeContext.js +18 -1
  617. package/ui/tree/TreeContext.tsx +18 -1
  618. package/ui/tree/TreeMenu.d.ts +28 -1
  619. package/ui/tree/TreeMenu.js +23 -1
  620. package/ui/tree/TreeMenu.tsx +28 -1
  621. package/ui/tree/TreePage.d.ts +6 -0
  622. package/ui/tree/TreePage.js +6 -0
  623. package/ui/tree/TreePage.tsx +6 -0
  624. package/ui/tree/TreeRouter.d.ts +17 -2
  625. package/ui/tree/TreeRouter.js +12 -2
  626. package/ui/tree/TreeRouter.tsx +17 -2
  627. package/ui/tree/TreeSidebar.d.ts +11 -0
  628. package/ui/tree/TreeSidebar.js +6 -0
  629. package/ui/tree/TreeSidebar.tsx +11 -0
  630. package/ui/util/context.d.ts +13 -1
  631. package/ui/util/context.ts +13 -1
  632. package/ui/util/css.d.ts +17 -4
  633. package/ui/util/css.js +5 -1
  634. package/ui/util/css.ts +17 -4
  635. package/ui/util/event.d.ts +9 -1
  636. package/ui/util/event.js +9 -1
  637. package/ui/util/event.ts +9 -1
  638. package/ui/util/focus.d.ts +24 -5
  639. package/ui/util/focus.js +24 -5
  640. package/ui/util/focus.ts +24 -5
  641. package/ui/util/meta.d.ts +113 -21
  642. package/ui/util/meta.js +73 -13
  643. package/ui/util/meta.ts +113 -21
  644. package/ui/util/notice.d.ts +98 -10
  645. package/ui/util/notice.js +93 -9
  646. package/ui/util/notice.ts +98 -10
  647. package/ui/util/props.d.ts +10 -2
  648. package/ui/util/props.ts +10 -2
  649. package/ui/util/refresh.d.ts +10 -1
  650. package/ui/util/refresh.js +10 -1
  651. package/ui/util/refresh.ts +10 -1
  652. package/ui/util/scroll.d.ts +20 -4
  653. package/ui/util/scroll.js +20 -4
  654. package/ui/util/scroll.ts +20 -4
  655. package/ui/util/state.d.ts +19 -5
  656. package/ui/util/state.js +19 -5
  657. package/ui/util/state.ts +19 -5
  658. package/util/ansi.d.ts +118 -0
  659. package/util/ansi.js +116 -0
  660. package/util/array.d.ts +349 -33
  661. package/util/array.js +284 -27
  662. package/util/async.d.ts +87 -9
  663. package/util/async.js +80 -8
  664. package/util/base64.d.ts +56 -6
  665. package/util/base64.js +56 -6
  666. package/util/boolean.d.ts +75 -10
  667. package/util/boolean.js +75 -10
  668. package/util/buffer.d.ts +26 -3
  669. package/util/buffer.js +21 -3
  670. package/util/bytes.d.ts +42 -4
  671. package/util/bytes.js +32 -2
  672. package/util/class.d.ts +59 -8
  673. package/util/class.js +44 -5
  674. package/util/color.d.ts +131 -13
  675. package/util/color.js +126 -12
  676. package/util/constants.d.ts +132 -19
  677. package/util/constants.js +132 -19
  678. package/util/crypto.d.ts +17 -1
  679. package/util/crypto.js +17 -1
  680. package/util/currency.d.ts +38 -4
  681. package/util/currency.js +33 -3
  682. package/util/data.d.ts +139 -24
  683. package/util/data.js +39 -5
  684. package/util/date.d.ts +152 -18
  685. package/util/date.js +147 -17
  686. package/util/debug.d.ts +112 -11
  687. package/util/debug.js +114 -11
  688. package/util/dictionary.d.ts +205 -24
  689. package/util/dictionary.js +162 -17
  690. package/util/diff.d.ts +22 -3
  691. package/util/diff.js +11 -1
  692. package/util/dispose.d.ts +74 -2
  693. package/util/dispose.js +74 -2
  694. package/util/duration.d.ts +278 -16
  695. package/util/duration.js +267 -15
  696. package/util/element.d.ts +59 -6
  697. package/util/element.js +32 -3
  698. package/util/entity.d.ts +39 -6
  699. package/util/entity.js +5 -1
  700. package/util/entry.d.ts +56 -9
  701. package/util/entry.js +32 -4
  702. package/util/env.d.ts +26 -4
  703. package/util/env.js +26 -4
  704. package/util/equal.d.ts +181 -17
  705. package/util/equal.js +181 -17
  706. package/util/error.d.ts +57 -5
  707. package/util/error.js +52 -4
  708. package/util/file.d.ts +30 -7
  709. package/util/file.js +25 -6
  710. package/util/filter.d.ts +36 -4
  711. package/util/filter.js +31 -3
  712. package/util/focus.d.ts +9 -1
  713. package/util/focus.js +9 -1
  714. package/util/format.d.ts +186 -22
  715. package/util/format.js +135 -14
  716. package/util/function.d.ts +66 -11
  717. package/util/function.js +31 -4
  718. package/util/geo.d.ts +60 -8
  719. package/util/geo.js +45 -5
  720. package/util/hash.d.ts +21 -2
  721. package/util/hash.js +21 -2
  722. package/util/http.d.ts +134 -19
  723. package/util/http.js +94 -11
  724. package/util/hydrate.d.ts +19 -2
  725. package/util/hydrate.js +12 -1
  726. package/util/item.d.ts +70 -11
  727. package/util/item.js +35 -4
  728. package/util/iterate.d.ts +109 -13
  729. package/util/iterate.js +86 -10
  730. package/util/jwt.d.ts +47 -13
  731. package/util/jwt.js +36 -12
  732. package/util/lazy.d.ts +9 -6
  733. package/util/link.d.ts +10 -3
  734. package/util/link.js +5 -2
  735. package/util/log.d.ts +26 -3
  736. package/util/log.js +26 -3
  737. package/util/map.d.ts +144 -19
  738. package/util/map.js +101 -11
  739. package/util/merge.d.ts +23 -1
  740. package/util/merge.js +6 -0
  741. package/util/null.d.ts +102 -13
  742. package/util/null.js +92 -11
  743. package/util/number.d.ts +125 -8
  744. package/util/number.js +120 -7
  745. package/util/object.d.ts +263 -31
  746. package/util/object.js +154 -17
  747. package/util/path.d.ts +91 -15
  748. package/util/path.js +60 -9
  749. package/util/query.d.ts +78 -9
  750. package/util/query.js +58 -6
  751. package/util/random.d.ts +67 -4
  752. package/util/random.js +67 -4
  753. package/util/regexp.d.ts +201 -24
  754. package/util/regexp.js +106 -11
  755. package/util/sequence.d.ts +66 -8
  756. package/util/sequence.js +52 -7
  757. package/util/serialise.d.ts +7 -1
  758. package/util/serialise.js +7 -1
  759. package/util/set.d.ts +103 -13
  760. package/util/set.js +83 -9
  761. package/util/sort.d.ts +32 -7
  762. package/util/sort.js +26 -6
  763. package/util/source.d.ts +28 -3
  764. package/util/source.js +22 -2
  765. package/util/start.d.ts +62 -5
  766. package/util/start.js +47 -2
  767. package/util/string.d.ts +209 -25
  768. package/util/string.js +188 -21
  769. package/util/template.d.ts +58 -9
  770. package/util/template.js +45 -6
  771. package/util/timeout.d.ts +35 -11
  772. package/util/timeout.js +35 -11
  773. package/util/transform.d.ts +87 -8
  774. package/util/transform.js +75 -7
  775. package/util/tree.d.ts +39 -6
  776. package/util/tree.js +3 -0
  777. package/util/types.d.ts +8 -2
  778. package/util/undefined.d.ts +47 -6
  779. package/util/undefined.js +47 -6
  780. package/util/units.d.ts +107 -12
  781. package/util/units.js +97 -12
  782. package/util/update.d.ts +36 -4
  783. package/util/update.js +24 -2
  784. package/util/uri.d.ts +138 -6
  785. package/util/uri.js +44 -3
  786. package/util/url.d.ts +152 -7
  787. package/util/url.js +136 -5
  788. package/util/uuid.d.ts +28 -3
  789. package/util/uuid.js +28 -3
  790. package/util/validate.d.ts +85 -20
  791. package/util/validate.js +61 -12
  792. package/util/xml.d.ts +9 -10
  793. package/util/xml.js +9 -10
package/util/dispose.d.ts CHANGED
@@ -9,6 +9,8 @@ import { type Nullish } from "./null.js";
9
9
  * - `Nullish` values are skipped (for convenience).
10
10
  *
11
11
  * @throws {Errors} Error that aggregates all the disposal errors.
12
+ * @example dispose(resource, () => clearTimeout(id)) // disposes both, even if one throws
13
+ * @see https://dhoulb.github.io/shelving/util/dispose/dispose
12
14
  */
13
15
  export declare function dispose(...values: Nullish<Disposable | Callback>[]): void;
14
16
  /**
@@ -21,12 +23,27 @@ export declare function dispose(...values: Nullish<Disposable | Callback>[]): vo
21
23
  *
22
24
  * @throws {Errors} Error that aggregates all the disposal errors.
23
25
  *
26
+ * @example await awaitDispose(asyncResource, promise, () => cleanup()) // disposes all in parallel
27
+ * @see https://dhoulb.github.io/shelving/util/dispose/awaitDispose
28
+ *
24
29
  * @todo Potentially rewrite this to use `AsyncDisposableStack` internally.
25
30
  */
26
31
  export declare function awaitDispose(...values: Nullish<AsyncDisposable | Disposable | Callback | Promise<unknown>>[]): Promise<void>;
27
- /** Is an unknown value a disposable object? */
32
+ /**
33
+ * Is an unknown value a disposable object?
34
+ *
35
+ * @param v The value to test.
36
+ * @returns `true` if `v` has a `[Symbol.dispose]` method, narrowing its type to `Disposable`.
37
+ * @see https://dhoulb.github.io/shelving/util/dispose/isDisposable
38
+ */
28
39
  export declare function isDisposable(v: unknown): v is Disposable;
29
- /** Is an unknown value an async disposable object? */
40
+ /**
41
+ * Is an unknown value an async disposable object?
42
+ *
43
+ * @param v The value to test.
44
+ * @returns `true` if `v` has a `[Symbol.asyncDispose]` method, narrowing its type to `AsyncDisposable`.
45
+ * @see https://dhoulb.github.io/shelving/util/dispose/isAsyncDisposable
46
+ */
30
47
  export declare function isAsyncDisposable(v: unknown): v is AsyncDisposable;
31
48
  /**
32
49
  * Version of `Map` that has disposable values.
@@ -34,11 +51,43 @@ export declare function isAsyncDisposable(v: unknown): v is AsyncDisposable;
34
51
  * - Values are disposed when they're deleted from the map.
35
52
  * - Values are disposed when all items are cleared.
36
53
  * - All items are cleared and their values are disposed when this map itself is disposed.
54
+ *
55
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap
37
56
  */
38
57
  export declare class DisposableMap<K, T extends Disposable> extends Map<K, T> implements Disposable {
58
+ /**
59
+ * Set a key to a value, disposing any previous value stored under that key.
60
+ *
61
+ * @param key The key to set.
62
+ * @param value The disposable value to store.
63
+ * @returns This map, for chaining.
64
+ * @example map.set("a", resource) // disposes the old "a" value if it differs
65
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/set
66
+ */
39
67
  set(key: K, value: T): this;
68
+ /**
69
+ * Delete a key, disposing its value.
70
+ *
71
+ * @param key The key to delete.
72
+ * @returns `true` if a value existed and was deleted, otherwise `false`.
73
+ * @example map.delete("a") // disposes the "a" value
74
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/delete
75
+ */
40
76
  delete(key: K): boolean;
77
+ /**
78
+ * Clear all items, disposing every value.
79
+ *
80
+ * @returns Nothing.
81
+ * @example map.clear() // disposes every value
82
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/clear
83
+ */
41
84
  clear(): void;
85
+ /**
86
+ * Dispose this map by clearing all items and disposing their values.
87
+ *
88
+ * @returns Nothing.
89
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/dispose
90
+ */
42
91
  [Symbol.dispose](): void;
43
92
  }
44
93
  /**
@@ -46,9 +95,32 @@ export declare class DisposableMap<K, T extends Disposable> extends Map<K, T> im
46
95
  * - Values are disposed when they're deleted from the map.
47
96
  * - Values are disposed when all items are cleared.
48
97
  * - All items are cleared (and disposed) when this map itself is disposed.
98
+ *
99
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet
49
100
  */
50
101
  export declare class DisposableSet<T extends Disposable> extends Set<T> implements Disposable {
102
+ /**
103
+ * Delete an item, disposing it.
104
+ *
105
+ * @param item The item to delete.
106
+ * @returns `true` if the item existed and was deleted, otherwise `false`.
107
+ * @example set.delete(resource) // disposes the item
108
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet/delete
109
+ */
51
110
  delete(item: T): boolean;
111
+ /**
112
+ * Clear all items, disposing each one.
113
+ *
114
+ * @returns Nothing.
115
+ * @example set.clear() // disposes every item
116
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet/clear
117
+ */
52
118
  clear(): void;
119
+ /**
120
+ * Dispose this set by clearing all items and disposing each one.
121
+ *
122
+ * @returns Nothing.
123
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet/dispose
124
+ */
53
125
  [Symbol.dispose](): void;
54
126
  }
package/util/dispose.js CHANGED
@@ -18,6 +18,8 @@ Symbol.asyncDispose ??= Symbol("Symbol.asyncDispose");
18
18
  * - `Nullish` values are skipped (for convenience).
19
19
  *
20
20
  * @throws {Errors} Error that aggregates all the disposal errors.
21
+ * @example dispose(resource, () => clearTimeout(id)) // disposes both, even if one throws
22
+ * @see https://dhoulb.github.io/shelving/util/dispose/dispose
21
23
  */
22
24
  export function dispose(...values) {
23
25
  const errors = [];
@@ -47,6 +49,9 @@ export function dispose(...values) {
47
49
  *
48
50
  * @throws {Errors} Error that aggregates all the disposal errors.
49
51
  *
52
+ * @example await awaitDispose(asyncResource, promise, () => cleanup()) // disposes all in parallel
53
+ * @see https://dhoulb.github.io/shelving/util/dispose/awaitDispose
54
+ *
50
55
  * @todo Potentially rewrite this to use `AsyncDisposableStack` internally.
51
56
  */
52
57
  export async function awaitDispose(...values) {
@@ -64,11 +69,23 @@ async function _disposeAsync(value) {
64
69
  else if (isFunction(value))
65
70
  value();
66
71
  }
67
- /** Is an unknown value a disposable object? */
72
+ /**
73
+ * Is an unknown value a disposable object?
74
+ *
75
+ * @param v The value to test.
76
+ * @returns `true` if `v` has a `[Symbol.dispose]` method, narrowing its type to `Disposable`.
77
+ * @see https://dhoulb.github.io/shelving/util/dispose/isDisposable
78
+ */
68
79
  export function isDisposable(v) {
69
80
  return isObject(v) && typeof v[Symbol.dispose] === "function";
70
81
  }
71
- /** Is an unknown value an async disposable object? */
82
+ /**
83
+ * Is an unknown value an async disposable object?
84
+ *
85
+ * @param v The value to test.
86
+ * @returns `true` if `v` has a `[Symbol.asyncDispose]` method, narrowing its type to `AsyncDisposable`.
87
+ * @see https://dhoulb.github.io/shelving/util/dispose/isAsyncDisposable
88
+ */
72
89
  export function isAsyncDisposable(v) {
73
90
  return isObject(v) && typeof v[Symbol.asyncDispose] === "function";
74
91
  }
@@ -78,24 +95,56 @@ export function isAsyncDisposable(v) {
78
95
  * - Values are disposed when they're deleted from the map.
79
96
  * - Values are disposed when all items are cleared.
80
97
  * - All items are cleared and their values are disposed when this map itself is disposed.
98
+ *
99
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap
81
100
  */
82
101
  export class DisposableMap extends Map {
102
+ /**
103
+ * Set a key to a value, disposing any previous value stored under that key.
104
+ *
105
+ * @param key The key to set.
106
+ * @param value The disposable value to store.
107
+ * @returns This map, for chaining.
108
+ * @example map.set("a", resource) // disposes the old "a" value if it differs
109
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/set
110
+ */
83
111
  set(key, value) {
84
112
  const previous = this.get(key);
85
113
  if (previous && previous !== value)
86
114
  dispose(previous);
87
115
  return super.set(key, value);
88
116
  }
117
+ /**
118
+ * Delete a key, disposing its value.
119
+ *
120
+ * @param key The key to delete.
121
+ * @returns `true` if a value existed and was deleted, otherwise `false`.
122
+ * @example map.delete("a") // disposes the "a" value
123
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/delete
124
+ */
89
125
  delete(key) {
90
126
  const value = this.get(key);
91
127
  if (value)
92
128
  dispose(value);
93
129
  return super.delete(key);
94
130
  }
131
+ /**
132
+ * Clear all items, disposing every value.
133
+ *
134
+ * @returns Nothing.
135
+ * @example map.clear() // disposes every value
136
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/clear
137
+ */
95
138
  clear() {
96
139
  dispose(...this.values());
97
140
  super.clear();
98
141
  }
142
+ /**
143
+ * Dispose this map by clearing all items and disposing their values.
144
+ *
145
+ * @returns Nothing.
146
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableMap/dispose
147
+ */
99
148
  [Symbol.dispose]() {
100
149
  this.clear();
101
150
  }
@@ -105,17 +154,40 @@ export class DisposableMap extends Map {
105
154
  * - Values are disposed when they're deleted from the map.
106
155
  * - Values are disposed when all items are cleared.
107
156
  * - All items are cleared (and disposed) when this map itself is disposed.
157
+ *
158
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet
108
159
  */
109
160
  export class DisposableSet extends Set {
161
+ /**
162
+ * Delete an item, disposing it.
163
+ *
164
+ * @param item The item to delete.
165
+ * @returns `true` if the item existed and was deleted, otherwise `false`.
166
+ * @example set.delete(resource) // disposes the item
167
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet/delete
168
+ */
110
169
  delete(item) {
111
170
  if (this.has(item))
112
171
  dispose(item);
113
172
  return super.delete(item);
114
173
  }
174
+ /**
175
+ * Clear all items, disposing each one.
176
+ *
177
+ * @returns Nothing.
178
+ * @example set.clear() // disposes every item
179
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet/clear
180
+ */
115
181
  clear() {
116
182
  dispose(...this);
117
183
  super.clear();
118
184
  }
185
+ /**
186
+ * Dispose this set by clearing all items and disposing each one.
187
+ *
188
+ * @returns Nothing.
189
+ * @see https://dhoulb.github.io/shelving/util/dispose/DisposableSet/dispose
190
+ */
119
191
  [Symbol.dispose]() {
120
192
  this.clear();
121
193
  }
@@ -3,101 +3,316 @@ import type { FormatOptions, UnitFormatOptions } from "./format.js";
3
3
  import type { AnyCaller } from "./function.js";
4
4
  import type { MapKey } from "./map.js";
5
5
  import { type Unit, UnitList } from "./units.js";
6
- /** Duration data object. */
6
+ /**
7
+ * Duration data object keyed by `Intl.DurationFormatUnit`.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/util/duration/DurationData
10
+ */
7
11
  export type DurationData = {
8
12
  [K in Intl.DurationFormatUnit]?: number;
9
13
  };
10
- /** Get the millisecond difference between two dates. */
14
+ /**
15
+ * Get the millisecond difference between two dates.
16
+ *
17
+ * @param from Date the duration is measured from (defaults to now).
18
+ * @param to Date the duration is measured to (defaults to now).
19
+ * @param caller Function to attribute a thrown error to (defaults to `getMilliseconds` itself).
20
+ * @returns Number of milliseconds from `from` to `to` (negative if `to` is before `from`).
21
+ * @throws {RequiredError} If `from` or `to` cannot be converted to a valid date.
22
+ * @example getMilliseconds("2025-01-01", "2025-01-02") // 86400000
23
+ * @see https://dhoulb.github.io/shelving/util/duration/getMilliseconds
24
+ */
11
25
  export declare function getMilliseconds(from?: PossibleDate, to?: PossibleDate, caller?: AnyCaller): number;
12
- /** Count the various time units between two dates and return a `Duration` format. */
26
+ /**
27
+ * Count the various time units between two dates and return a `Duration` format.
28
+ *
29
+ * @param from Date the duration is measured from (defaults to now).
30
+ * @param to Date the duration is measured to (defaults to now).
31
+ * @param caller Function to attribute a thrown error to (defaults to `getDuration` itself).
32
+ * @returns `DurationData` object breaking the span down into years, months, weeks, days, hours, minutes, seconds, and milliseconds.
33
+ * @throws {RequiredError} If `from` or `to` cannot be converted to a valid date.
34
+ * @example getDuration("2025-01-01", "2025-01-02") // { years: 0, months: 0, weeks: 0, days: 1, ... }
35
+ * @see https://dhoulb.github.io/shelving/util/duration/getDuration
36
+ */
13
37
  export declare function getDuration(from?: PossibleDate, to?: PossibleDate, caller?: AnyCaller): DurationData;
14
- /** Get the various time units until a certain date. */
38
+ /**
39
+ * Get the various time units until a certain date.
40
+ *
41
+ * @param target Date the duration counts up to.
42
+ * @param current Date the duration counts from (defaults to now).
43
+ * @param caller Function to attribute a thrown error to (defaults to `getUntil` itself).
44
+ * @returns `DurationData` object for the span from `current` to `target`.
45
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
46
+ * @example getUntil("2099-01-01") // { years: 73, ... }
47
+ * @see https://dhoulb.github.io/shelving/util/duration/getUntil
48
+ */
15
49
  export declare function getUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): DurationData;
16
- /** Get the various time units since a certain date. */
50
+ /**
51
+ * Get the various time units since a certain date.
52
+ *
53
+ * @param target Date the duration counts back from.
54
+ * @param current Date the duration counts to (defaults to now).
55
+ * @param caller Function to attribute a thrown error to (defaults to `getAgo` itself).
56
+ * @returns `DurationData` object for the span from `target` to `current`.
57
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
58
+ * @example getAgo("2000-01-01") // { years: 26, ... }
59
+ * @see https://dhoulb.github.io/shelving/util/duration/getAgo
60
+ */
17
61
  export declare function getAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): DurationData;
18
- /** Count the milliseconds until a date. */
62
+ /**
63
+ * Count the milliseconds until a date.
64
+ *
65
+ * @param target Date to count up to.
66
+ * @param current Date to count from (defaults to now).
67
+ * @param caller Function to attribute a thrown error to (defaults to `getMillisecondsUntil` itself).
68
+ * @returns Number of milliseconds from `current` to `target` (negative if `target` is in the past).
69
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
70
+ * @example getMillisecondsUntil("2099-01-01") // 2303683200000
71
+ * @see https://dhoulb.github.io/shelving/util/duration/getMillisecondsUntil
72
+ */
19
73
  export declare function getMillisecondsUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
20
- /** Count the milliseconds since a date. */
74
+ /**
75
+ * Count the milliseconds since a date.
76
+ *
77
+ * @param target Date to count back from.
78
+ * @param current Date to count to (defaults to now).
79
+ * @param caller Function to attribute a thrown error to (defaults to `getMillisecondsAgo` itself).
80
+ * @returns Number of milliseconds from `target` to `current` (negative if `target` is in the future).
81
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
82
+ * @example getMillisecondsAgo("2000-01-01") // 833587200000
83
+ * @see https://dhoulb.github.io/shelving/util/duration/getMillisecondsAgo
84
+ */
21
85
  export declare function getMillisecondsAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
22
86
  /**
23
87
  * Count the whole seconds until a date.
24
88
  * - Rounds to the nearest whole second, i.e. `1 second 499 ms` returns `1`
89
+ *
90
+ * @param target Date to count up to.
91
+ * @param current Date to count from (defaults to now).
92
+ * @param caller Function to attribute a thrown error to (defaults to `getSecondsUntil` itself).
93
+ * @returns Number of whole seconds from `current` to `target` (negative if `target` is in the past).
94
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
95
+ * @example getSecondsUntil(target) // 90
96
+ * @see https://dhoulb.github.io/shelving/util/duration/getSecondsUntil
25
97
  */
26
98
  export declare function getSecondsUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
27
99
  /**
28
100
  * Count the whole seconds since a date.
29
101
  * - Rounds to the nearest whole second, i.e. `1 second 499 ms` returns `1`
102
+ *
103
+ * @param target Date to count back from.
104
+ * @param current Date to count to (defaults to now).
105
+ * @param caller Function to attribute a thrown error to (defaults to `getSecondsAgo` itself).
106
+ * @returns Number of whole seconds from `target` to `current` (negative if `target` is in the future).
107
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
108
+ * @example getSecondsAgo(target) // 90
109
+ * @see https://dhoulb.github.io/shelving/util/duration/getSecondsAgo
30
110
  */
31
111
  export declare function getSecondsAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
32
112
  /**
33
113
  * Count the whole minutes until a date.
34
114
  * - Rounds to the nearest whole minute, i.e. `1 min 29 seconds` returns `1`
115
+ *
116
+ * @param target Date to count up to.
117
+ * @param current Date to count from (defaults to now).
118
+ * @param caller Function to attribute a thrown error to (defaults to `getMinutesUntil` itself).
119
+ * @returns Number of whole minutes from `current` to `target` (negative if `target` is in the past).
120
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
121
+ * @example getMinutesUntil(target) // 5
122
+ * @see https://dhoulb.github.io/shelving/util/duration/getMinutesUntil
35
123
  */
36
124
  export declare function getMinutesUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
37
125
  /**
38
126
  * Count the whole minutes since a date.
39
127
  * - Rounds to the nearest whole minute, i.e. `1 min 29 seconds` returns `1`
128
+ *
129
+ * @param target Date to count back from.
130
+ * @param current Date to count to (defaults to now).
131
+ * @param caller Function to attribute a thrown error to (defaults to `getMinutesAgo` itself).
132
+ * @returns Number of whole minutes from `target` to `current` (negative if `target` is in the future).
133
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
134
+ * @example getMinutesAgo(target) // 5
135
+ * @see https://dhoulb.github.io/shelving/util/duration/getMinutesAgo
40
136
  */
41
137
  export declare function getMinutesAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
42
138
  /**
43
139
  * Count the whole hours until a date.
44
140
  * - Rounds to the nearest whole hour, i.e. `1 hour 29 minutes` returns `1`
141
+ *
142
+ * @param target Date to count up to.
143
+ * @param current Date to count from (defaults to now).
144
+ * @param caller Function to attribute a thrown error to (defaults to `getHoursUntil` itself).
145
+ * @returns Number of whole hours from `current` to `target` (negative if `target` is in the past).
146
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
147
+ * @example getHoursUntil(target) // 3
148
+ * @see https://dhoulb.github.io/shelving/util/duration/getHoursUntil
45
149
  */
46
150
  export declare function getHoursUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
47
151
  /**
48
152
  * Count the whole hours since a date.
49
153
  * - Rounds to the nearest whole hour, i.e. `1 hour 29 minutes` returns `1`
154
+ *
155
+ * @param target Date to count back from.
156
+ * @param current Date to count to (defaults to now).
157
+ * @param caller Function to attribute a thrown error to (defaults to `getHoursAgo` itself).
158
+ * @returns Number of whole hours from `target` to `current` (negative if `target` is in the future).
159
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
160
+ * @example getHoursAgo(target) // 3
161
+ * @see https://dhoulb.github.io/shelving/util/duration/getHoursAgo
50
162
  */
51
163
  export declare function getHoursAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
52
164
  /**
53
165
  * Count the calendar days until a date.
54
166
  * - e.g. from 23:59 to 00:01 is 1 day, even though it's only 1 minutes.
167
+ *
168
+ * @param target Date to count up to.
169
+ * @param current Date to count from (defaults to now).
170
+ * @param caller Function to attribute a thrown error to (defaults to `getDaysUntil` itself).
171
+ * @returns Number of calendar days from `current` to `target` (negative if `target` is in the past).
172
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
173
+ * @example getDaysUntil(target) // 13
174
+ * @see https://dhoulb.github.io/shelving/util/duration/getDaysUntil
55
175
  */
56
176
  export declare function getDaysUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
57
177
  /**
58
178
  * Count the calendar days since a date.
59
179
  * - Rounds to the nearest whole days.
180
+ *
181
+ * @param target Date to count back from.
182
+ * @param current Date to count to (defaults to now).
183
+ * @param caller Function to attribute a thrown error to (defaults to `getDaysAgo` itself).
184
+ * @returns Number of calendar days from `target` to `current` (negative if `target` is in the future).
185
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
186
+ * @example getDaysAgo(target) // 13
187
+ * @see https://dhoulb.github.io/shelving/util/duration/getDaysAgo
60
188
  */
61
189
  export declare function getDaysAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
62
190
  /**
63
191
  * Count the whole weeks until a date.
64
192
  * - Rounds down to the nearest whole week, i.e.
193
+ *
194
+ * @param target Date to count up to.
195
+ * @param current Date to count from (defaults to now).
196
+ * @param caller Function to attribute a thrown error to (defaults to `getWeeksUntil` itself).
197
+ * @returns Number of whole weeks from `current` to `target` (negative if `target` is in the past).
198
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
199
+ * @example getWeeksUntil(target) // 9
200
+ * @see https://dhoulb.github.io/shelving/util/duration/getWeeksUntil
65
201
  */
66
202
  export declare function getWeeksUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
67
203
  /**
68
204
  * Count the whole weeks since a date.
69
205
  * - Rounds to the nearest whole week.
206
+ *
207
+ * @param target Date to count back from.
208
+ * @param current Date to count to (defaults to now).
209
+ * @param caller Function to attribute a thrown error to (defaults to `getWeeksAgo` itself).
210
+ * @returns Number of whole weeks from `target` to `current` (negative if `target` is in the future).
211
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
212
+ * @example getWeeksAgo(target) // 9
213
+ * @see https://dhoulb.github.io/shelving/util/duration/getWeeksAgo
70
214
  */
71
215
  export declare function getWeeksAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
72
216
  /**
73
217
  * Count the calendar months until a date.
74
218
  * - e.g. from March 31st to April 1st is 1 month, even though it's only 1 day.
219
+ *
220
+ * @param target Date to count up to.
221
+ * @param current Date to count from (defaults to now).
222
+ * @param caller Function to attribute a thrown error to (defaults to `getMonthsUntil` itself).
223
+ * @returns Number of calendar months from `current` to `target` (negative if `target` is in the past).
224
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
225
+ * @example getMonthsUntil(target) // 14
226
+ * @see https://dhoulb.github.io/shelving/util/duration/getMonthsUntil
75
227
  */
76
228
  export declare function getMonthsUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
77
229
  /**
78
230
  * Count the calendar months since a date.
79
231
  * - e.g. from March 31st to April 1st is 1 month, even though it's only 1 day.
232
+ *
233
+ * @param target Date to count back from.
234
+ * @param current Date to count to (defaults to now).
235
+ * @param caller Function to attribute a thrown error to (defaults to `getMonthsAgo` itself).
236
+ * @returns Number of calendar months from `target` to `current` (negative if `target` is in the future).
237
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
238
+ * @example getMonthsAgo(target) // 14
239
+ * @see https://dhoulb.github.io/shelving/util/duration/getMonthsAgo
80
240
  */
81
241
  export declare function getMonthsAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
82
242
  /**
83
243
  * Count the calendar years until a date.
84
244
  * - e.g. from December 31st to January 1st is 1 year, even though it's only 1 day.
245
+ *
246
+ * @param target Date to count up to.
247
+ * @param current Date to count from (defaults to now).
248
+ * @param caller Function to attribute a thrown error to (defaults to `getYearsUntil` itself).
249
+ * @returns Number of calendar years from `current` to `target` (negative if `target` is in the past).
250
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
251
+ * @example getYearsUntil(target) // 2
252
+ * @see https://dhoulb.github.io/shelving/util/duration/getYearsUntil
85
253
  */
86
254
  export declare function getYearsUntil(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
87
255
  /**
88
256
  * Count the calendar years since a date.
89
257
  * - Note this counts calendar years, not 365-day periods.
90
258
  * - e.g. from December 31st to January 1st is -1 years, even though it's only 1 day.
259
+ *
260
+ * @param target Date to count back from.
261
+ * @param current Date to count to (defaults to now).
262
+ * @param caller Function to attribute a thrown error to (defaults to `getYearsAgo` itself).
263
+ * @returns Number of calendar years from `target` to `current` (negative if `target` is in the future).
264
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
265
+ * @example getYearsAgo(target) // 2
266
+ * @see https://dhoulb.github.io/shelving/util/duration/getYearsAgo
91
267
  */
92
268
  export declare function getYearsAgo(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): number;
93
- /** Is a date in the past? */
269
+ /**
270
+ * Is a date in the past?
271
+ *
272
+ * @param target Date to test.
273
+ * @param current Date to test against (defaults to now).
274
+ * @param caller Function to attribute a thrown error to (defaults to `isPast` itself).
275
+ * @returns `true` if `target` is before `current`.
276
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
277
+ * @example isPast("2000-01-01") // true
278
+ * @see https://dhoulb.github.io/shelving/util/duration/isPast
279
+ */
94
280
  export declare function isPast(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): boolean;
95
- /** Is a date in the future? */
281
+ /**
282
+ * Is a date in the future?
283
+ *
284
+ * @param target Date to test.
285
+ * @param current Date to test against (defaults to now).
286
+ * @param caller Function to attribute a thrown error to (defaults to `isFuture` itself).
287
+ * @returns `true` if `target` is after `current`.
288
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
289
+ * @example isFuture("2099-01-01") // true
290
+ * @see https://dhoulb.github.io/shelving/util/duration/isFuture
291
+ */
96
292
  export declare function isFuture(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): boolean;
97
- /** Is a date today (taking into account midnight). */
293
+ /**
294
+ * Is a date today (taking into account midnight).
295
+ *
296
+ * @param target Date to test.
297
+ * @param current Date to test against (defaults to now).
298
+ * @param caller Function to attribute a thrown error to (defaults to `isToday` itself).
299
+ * @returns `true` if `target` falls on the same calendar day as `current`.
300
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
301
+ * @example isToday(new Date()) // true
302
+ * @see https://dhoulb.github.io/shelving/util/duration/isToday
303
+ */
98
304
  export declare function isToday(target: PossibleDate, current?: PossibleDate, caller?: AnyCaller): boolean;
99
- /** Duration units. */
305
+ /**
306
+ * List of duration units (`millisecond` through `year`) keyed by unit reference.
307
+ *
308
+ * @see https://dhoulb.github.io/shelving/util/duration/DURATION_UNITS
309
+ */
100
310
  export declare const DURATION_UNITS: UnitList<"day" | "hour" | "millisecond" | "minute" | "month" | "second" | "week" | "year">;
311
+ /**
312
+ * Key for one of the duration units in `DURATION_UNITS`.
313
+ *
314
+ * @see https://dhoulb.github.io/shelving/util/duration/DurationUnitKey
315
+ */
101
316
  export type DurationUnitKey = MapKey<typeof DURATION_UNITS>;
102
317
  /**
103
318
  * Get a best-fit duration unit based on an amount in milliseconds.
@@ -109,20 +324,67 @@ export type DurationUnitKey = MapKey<typeof DURATION_UNITS>;
109
324
  * - Hours will be used for anything 1 hour or more, e.g. `in 23 hours`
110
325
  * - Minutes will be used for anything 1 minute or more, e.g. `1 minute ago` or `in 59 minutes`
111
326
  * - Seconds will be used for anything 1000 milliseconds or more, e.g. `in 59 seconds`
327
+ *
328
+ * @param ms Amount of time in milliseconds (the sign is ignored, only the magnitude matters).
329
+ * @returns The best-fit `Unit` from `DURATION_UNITS` for the given magnitude.
330
+ * @example getBestDurationUnit(90000).key // "minute"
331
+ * @see https://dhoulb.github.io/shelving/util/duration/getBestDurationUnit
112
332
  */
113
333
  export declare function getBestDurationUnit(ms: number): Unit<DurationUnitKey>;
114
334
  /**
115
- * Compact best-fit when a date happens/happened, e.g. `in 10d` or `2h ago` or `in 1w` or `just now`
116
- * - See `getBestTimeUnit()` for details on how the best-fit unit is chosen.
335
+ * Format a compact best-fit description of when a date happens or happened, e.g. `in 10d` or `2h ago` or `in 1w` or `just now`
336
+ * - See `getBestDurationUnit()` for details on how the best-fit unit is chosen.
117
337
  * - But: anything under 30 seconds will show `just now`, which makes more sense in most UIs.
338
+ *
339
+ * @param target Date the duration is measured to.
340
+ * @param current Date the duration is measured from (defaults to now).
341
+ * @param options Formatting options for the chosen duration unit.
342
+ * @param caller Function to attribute a thrown error to (defaults to `formatWhen` itself).
343
+ * @returns Compact string like `in 10d`, `2h ago`, or `just now`.
344
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
345
+ * @example formatWhen("2099-01-01") // "in 73 years"
346
+ * @see https://dhoulb.github.io/shelving/util/duration/formatWhen
118
347
  */
119
348
  export declare function formatWhen(target: PossibleDate, current?: PossibleDate, options?: UnitFormatOptions, caller?: AnyCaller): string;
120
- /** Compact when a date happens, e.g. `10d` or `2h` or `-1w` */
349
+ /**
350
+ * Format a compact best-fit description of how long until a date, e.g. `10d` or `2h` or `-1w`
351
+ * - See `getBestDurationUnit()` for details on how the best-fit unit is chosen.
352
+ *
353
+ * @param target Date to count up to.
354
+ * @param current Date to count from (defaults to now).
355
+ * @param options Formatting options for the chosen duration unit.
356
+ * @param caller Function to attribute a thrown error to (defaults to `formatUntil` itself).
357
+ * @returns Compact string like `10d` or `2h` (negative if `target` is in the past).
358
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
359
+ * @example formatUntil("2099-01-01") // "73y"
360
+ * @see https://dhoulb.github.io/shelving/util/duration/formatUntil
361
+ */
121
362
  export declare function formatUntil(target: PossibleDate, current?: PossibleDate, options?: UnitFormatOptions, caller?: AnyCaller): string;
122
- /** Compact when a date will happen, e.g. `10d` or `2h` or `-1w` */
363
+ /**
364
+ * Format a compact best-fit description of how long since a date, e.g. `10d` or `2h` or `-1w`
365
+ * - See `getBestDurationUnit()` for details on how the best-fit unit is chosen.
366
+ *
367
+ * @param target Date to count back from.
368
+ * @param current Date to count to (defaults to now).
369
+ * @param options Formatting options for the chosen duration unit.
370
+ * @param caller Function to attribute a thrown error to (defaults to `formatAgo` itself).
371
+ * @returns Compact string like `10d` or `2h` (negative if `target` is in the future).
372
+ * @throws {RequiredError} If `target` or `current` cannot be converted to a valid date.
373
+ * @example formatAgo("2000-01-01") // "26y"
374
+ * @see https://dhoulb.github.io/shelving/util/duration/formatAgo
375
+ */
123
376
  export declare function formatAgo(target: PossibleDate, current?: PossibleDate, options?: UnitFormatOptions, caller?: AnyCaller): string;
377
+ /** Options for formatting a `DurationData` object with `formatDuration()`. */
124
378
  interface DurationFormatOptions extends FormatOptions, Intl.DurationFormatOptions {
125
379
  }
126
- /** Format a duration as a string, e.g. `1 year, 2 months, 3 days` or `1y 2m 3d` */
380
+ /**
381
+ * Format a duration as a string, e.g. `1 year, 2 months, 3 days` or `1y 2m 3d`
382
+ *
383
+ * @param duration `DurationData` object to format.
384
+ * @param options Formatting options passed through to `Intl.DurationFormat`.
385
+ * @returns Human-readable string describing the duration.
386
+ * @example formatDuration({ years: 1, months: 2, days: 3 }) // "1 yr, 2 mths, 3 days"
387
+ * @see https://dhoulb.github.io/shelving/util/duration/formatDuration
388
+ */
127
389
  export declare function formatDuration(duration: DurationData, options?: DurationFormatOptions): string;
128
390
  export {};