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/async.js CHANGED
@@ -1,40 +1,83 @@
1
1
  import { Errors } from "../error/Errors.js";
2
2
  import { RequiredError } from "../error/RequiredError.js";
3
3
  import { BLACKHOLE } from "./function.js";
4
- /** Is a value an asynchronous value implementing a `then()` function. */
4
+ /**
5
+ * Is a value an asynchronous value implementing a `then()` function.
6
+ *
7
+ * @param value The value to test.
8
+ * @returns `true` if `value` is a `PromiseLike`, narrowing its type.
9
+ * @see https://dhoulb.github.io/shelving/util/async/isAsync
10
+ */
5
11
  export function isAsync(value) {
6
12
  return typeof value === "object" && value !== null && typeof value.then === "function";
7
13
  }
8
- /** Is a value a synchronous value. */
14
+ /**
15
+ * Is a value a synchronous value.
16
+ *
17
+ * @param value The value to test.
18
+ * @returns `true` if `value` is not a `PromiseLike`, narrowing its type.
19
+ * @see https://dhoulb.github.io/shelving/util/async/notAsync
20
+ */
9
21
  export function notAsync(value) {
10
22
  return !isAsync(value);
11
23
  }
12
24
  /**
13
25
  * Throw the value if it's an async (promised) value.
26
+ *
27
+ * @param value The value to unwrap.
14
28
  * @returns Synchronous (not promised) value.
15
29
  * @throws Promise if value is an asynchronous (promised) value.
30
+ * @example throwAsync(123) // 123
31
+ * @see https://dhoulb.github.io/shelving/util/async/throwAsync
16
32
  */
17
33
  export function throwAsync(value) {
18
34
  if (isAsync(value))
19
35
  throw value;
20
36
  return value;
21
37
  }
22
- /** Assert an unknown value is synchronous (i.e. does not have a `.then()` method). */
38
+ /**
39
+ * Assert an unknown value is synchronous (i.e. does not have a `.then()` method).
40
+ *
41
+ * @param value The value to assert.
42
+ * @throws {RequiredError} If `value` is a `PromiseLike`.
43
+ * @example assertNotAsync(123); // passes
44
+ * @see https://dhoulb.github.io/shelving/util/async/assertNotAsync
45
+ */
23
46
  export function assertNotAsync(value) {
24
47
  if (isAsync(value))
25
48
  throw new RequiredError("Must be synchronous", { received: value, caller: assertNotAsync });
26
49
  }
27
- /** Assert an unknown value is asynchronous (i.e. has a `.then()` method). */
50
+ /**
51
+ * Assert an unknown value is asynchronous (i.e. has a `.then()` method).
52
+ *
53
+ * @param value The value to assert.
54
+ * @throws {RequiredError} If `value` is not a `PromiseLike`.
55
+ * @example assertAsync(Promise.resolve(1)); // passes
56
+ * @see https://dhoulb.github.io/shelving/util/async/assertAsync
57
+ */
28
58
  export function assertAsync(value) {
29
59
  if (!isAsync(value))
30
60
  throw new RequiredError("Must be asynchronous", { received: value, caller: assertAsync });
31
61
  }
32
- /** Assert that an unknown value is a `Promise` */
62
+ /**
63
+ * Assert that an unknown value is a `Promise`.
64
+ *
65
+ * @param value The value to assert.
66
+ * @throws {RequiredError} If `value` is not a `Promise` instance.
67
+ * @example assertPromise(Promise.resolve(1)); // passes
68
+ * @see https://dhoulb.github.io/shelving/util/async/assertPromise
69
+ */
33
70
  export function assertPromise(value) {
34
71
  if (!(value instanceof Promise))
35
72
  throw new RequiredError("Must be promise", { received: value, caller: assertPromise });
36
73
  }
37
- /** Run any queued microtasks now. */
74
+ /**
75
+ * Run any queued microtasks now.
76
+ *
77
+ * @returns A promise that resolves after all currently-queued microtasks have run.
78
+ * @example await runMicrotasks();
79
+ * @see https://dhoulb.github.io/shelving/util/async/runMicrotasks
80
+ */
38
81
  export function runMicrotasks() {
39
82
  // Timeouts are part of the main event queue, and events in the main queue are run _after_ all microtasks complete.
40
83
  return new Promise(resolve => setTimeout(resolve));
@@ -57,6 +100,8 @@ export async function awaitValues(...promises) {
57
100
  *
58
101
  * @param promises Values (usually async, but not necessarily) that we need to wait for.
59
102
  * @returns Array of rejection reasons of all promises (or empty array if no promises threw).
103
+ * @example const errors = await awaitErrors(getA(), getB());
104
+ * @see https://dhoulb.github.io/shelving/util/async/awaitErrors
60
105
  */
61
106
  export async function awaitErrors(...promises) {
62
107
  const errors = [];
@@ -65,7 +110,15 @@ export async function awaitErrors(...promises) {
65
110
  errors.push(result.reason);
66
111
  return errors;
67
112
  }
68
- /** `Promise` designed for extending with `._resolve()` and `._reject()` methods that can be accessed by subclasses. */
113
+ /**
114
+ * `Promise` designed for extending with `._resolve()` and `._reject()` methods that can be accessed by subclasses.
115
+ *
116
+ * @example
117
+ * class MyPromise extends BasePromise<number> {
118
+ * done() { this._resolve(123); }
119
+ * }
120
+ * @see https://dhoulb.github.io/shelving/util/async/BasePromise
121
+ */
69
122
  export class BasePromise extends Promise {
70
123
  // Make `this.then()` create a `Promise` not a `Deferred`
71
124
  // Done with a getter because some implementations implement this with a getter and we need to override it.
@@ -92,6 +145,10 @@ export class BasePromise extends Promise {
92
145
  /**
93
146
  * Create a deferred to access the `resolve()` and `reject()` functions of a promise.
94
147
  * - See https://github.com/tc39/proposal-promise-with-resolvers/
148
+ *
149
+ * @returns A `Deferred` exposing the promise and its `resolve()`/`reject()` functions.
150
+ * @example const { promise, resolve } = createDeferred<number>();
151
+ * @see https://dhoulb.github.io/shelving/util/async/createDeferred
95
152
  */
96
153
  export function createDeferred() {
97
154
  let resolve;
@@ -107,7 +164,14 @@ export function createDeferred() {
107
164
  reject: reject,
108
165
  };
109
166
  }
110
- /** Get a promise that automatically resolves after a delay. */
167
+ /**
168
+ * Get a promise that automatically resolves after a delay.
169
+ *
170
+ * @param ms The delay in milliseconds before the promise resolves.
171
+ * @returns A promise that resolves with `undefined` after `ms` milliseconds.
172
+ * @example await getDelay(300); // resolves after 300ms
173
+ * @see https://dhoulb.github.io/shelving/util/async/getDelay
174
+ */
111
175
  export function getDelay(ms) {
112
176
  return new Promise(resolve => setTimeout(resolve, ms));
113
177
  }
@@ -116,7 +180,11 @@ export function getDelay(ms) {
116
180
  * - Rejects immediately if the signal is already aborted.
117
181
  * - Use with `awaitRace()` to cancel a concurrent operation when a signal fires.
118
182
  *
183
+ * @param signal The `AbortSignal` to watch.
184
+ * @returns A promise that never resolves and rejects with the signal's reason when it fires.
185
+ * @throws The signal's `reason` when the signal aborts.
119
186
  * @example await awaitRace(getDelay(300), awaitAbort(signal));
187
+ * @see https://dhoulb.github.io/shelving/util/async/awaitAbort
120
188
  */
121
189
  export function awaitAbort(signal) {
122
190
  const promise = new Promise((_, reject) => {
@@ -134,7 +202,11 @@ export function awaitAbort(signal) {
134
202
  * - The losing inputs keep running (Promises cannot be cancelled), but their eventual rejection — if any — is silently absorbed instead of bubbling up as an unhandled rejection.
135
203
  * - Built for cancellation/timeout patterns, where the loser's eventual fate is genuinely uninteresting once another arm has settled. Do not use when both arms might surface meaningful errors that the caller should see.
136
204
  *
205
+ * @param promises The promises to race against each other.
206
+ * @returns A promise that settles with the first input to settle.
207
+ * @throws The rejection reason of the first input to settle, if it rejects.
137
208
  * @example await awaitRace(getDelay(300), awaitAbort(signal)); // delay or abort, no leaked ABORT rejection if delay wins
209
+ * @see https://dhoulb.github.io/shelving/util/async/awaitRace
138
210
  */
139
211
  export function awaitRace(...promises) {
140
212
  for (const promise of promises)
package/util/base64.d.ts CHANGED
@@ -1,13 +1,63 @@
1
1
  import { type Bytes, type PossibleBytes } from "./bytes.js";
2
- /** Encode a string or binary data to Base64 string. */
2
+ /**
3
+ * Encode a string or binary data to a Base64 string.
4
+ *
5
+ * @param input The string or byte data to encode.
6
+ * @param pad Whether to append `=` padding characters (defaults to `true`).
7
+ * @returns The Base64-encoded string.
8
+ * @throws {RequiredError} If `input` cannot be converted to a byte sequence.
9
+ * @example encodeBase64("abc") // "YWJj"
10
+ * @see https://dhoulb.github.io/shelving/util/base64/encodeBase64
11
+ */
3
12
  export declare function encodeBase64(input: PossibleBytes, pad?: boolean): string;
4
- /** Decode Base64 string to string (decodes Base64URL too). */
13
+ /**
14
+ * Decode a Base64 string to a string (decodes Base64URL too).
15
+ *
16
+ * @param base64 The Base64 (or Base64URL) string to decode.
17
+ * @returns The decoded UTF-8 string.
18
+ * @throws {ValueError} If `base64` contains an invalid character.
19
+ * @example decodeBase64String("YWJj") // "abc"
20
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64String
21
+ */
5
22
  export declare function decodeBase64String(base64: string): string;
6
- /** Decode URL-safe Base64 string to byte sequence (decodes Base64URL too). */
23
+ /**
24
+ * Decode a Base64 string to a byte sequence (decodes Base64URL too).
25
+ *
26
+ * @param base64 The Base64 (or Base64URL) string to decode.
27
+ * @returns The decoded byte sequence.
28
+ * @throws {ValueError} If `base64` contains an invalid character.
29
+ * @example decodeBase64Bytes("YWJj") // Uint8Array([97, 98, 99])
30
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64Bytes
31
+ */
7
32
  export declare function decodeBase64Bytes(base64: string): Bytes;
8
- /** Encode a string or binary data to URL-safe Base64 */
33
+ /**
34
+ * Encode a string or binary data to a URL-safe Base64 string.
35
+ *
36
+ * @param input The string or byte data to encode.
37
+ * @param pad Whether to append `=` padding characters (defaults to `false`).
38
+ * @returns The Base64URL-encoded string.
39
+ * @throws {RequiredError} If `input` cannot be converted to a byte sequence.
40
+ * @example encodeBase64URL("abc") // "YWJj"
41
+ * @see https://dhoulb.github.io/shelving/util/base64/encodeBase64URL
42
+ */
9
43
  export declare function encodeBase64URL(input: PossibleBytes, pad?: boolean): string;
10
- /** Decode a string from URL-safe Base64 (decodes Base64 too). */
44
+ /**
45
+ * Decode a string from a URL-safe Base64 string (decodes Base64 too).
46
+ *
47
+ * @param base64 The Base64URL (or Base64) string to decode.
48
+ * @returns The decoded UTF-8 string.
49
+ * @throws {ValueError} If `base64` contains an invalid character.
50
+ * @example decodeBase64URLString("YWJj") // "abc"
51
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLString
52
+ */
11
53
  export declare function decodeBase64URLString(base64: string): string;
12
- /** Decode URL-safe Base64 string to byte sequence (decodes Base64 too). */
54
+ /**
55
+ * Decode a URL-safe Base64 string to a byte sequence (decodes Base64 too).
56
+ *
57
+ * @param base64 The Base64URL (or Base64) string to decode.
58
+ * @returns The decoded byte sequence.
59
+ * @throws {ValueError} If `base64` contains an invalid character.
60
+ * @example decodeBase64URLBytes("YWJj") // Uint8Array([97, 98, 99])
61
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLBytes
62
+ */
13
63
  export declare function decodeBase64URLBytes(base64: string): Bytes;
package/util/base64.js CHANGED
@@ -60,27 +60,77 @@ function _lookup(base64, index, caller) {
60
60
  throw new ValueError(`Invalid character "${code}" in Base64 string`, { received: base64, index: index, caller });
61
61
  return value;
62
62
  }
63
- /** Encode a string or binary data to Base64 string. */
63
+ /**
64
+ * Encode a string or binary data to a Base64 string.
65
+ *
66
+ * @param input The string or byte data to encode.
67
+ * @param pad Whether to append `=` padding characters (defaults to `true`).
68
+ * @returns The Base64-encoded string.
69
+ * @throws {RequiredError} If `input` cannot be converted to a byte sequence.
70
+ * @example encodeBase64("abc") // "YWJj"
71
+ * @see https://dhoulb.github.io/shelving/util/base64/encodeBase64
72
+ */
64
73
  export function encodeBase64(input, pad = true) {
65
74
  return _encode(requireBytes(input), BASE64_CHARS, pad ? "=" : "");
66
75
  }
67
- /** Decode Base64 string to string (decodes Base64URL too). */
76
+ /**
77
+ * Decode a Base64 string to a string (decodes Base64URL too).
78
+ *
79
+ * @param base64 The Base64 (or Base64URL) string to decode.
80
+ * @returns The decoded UTF-8 string.
81
+ * @throws {ValueError} If `base64` contains an invalid character.
82
+ * @example decodeBase64String("YWJj") // "abc"
83
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64String
84
+ */
68
85
  export function decodeBase64String(base64) {
69
86
  return new TextDecoder("utf-8").decode(_decode(base64, decodeBase64String));
70
87
  }
71
- /** Decode URL-safe Base64 string to byte sequence (decodes Base64URL too). */
88
+ /**
89
+ * Decode a Base64 string to a byte sequence (decodes Base64URL too).
90
+ *
91
+ * @param base64 The Base64 (or Base64URL) string to decode.
92
+ * @returns The decoded byte sequence.
93
+ * @throws {ValueError} If `base64` contains an invalid character.
94
+ * @example decodeBase64Bytes("YWJj") // Uint8Array([97, 98, 99])
95
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64Bytes
96
+ */
72
97
  export function decodeBase64Bytes(base64) {
73
98
  return _decode(base64, decodeBase64Bytes);
74
99
  }
75
- /** Encode a string or binary data to URL-safe Base64 */
100
+ /**
101
+ * Encode a string or binary data to a URL-safe Base64 string.
102
+ *
103
+ * @param input The string or byte data to encode.
104
+ * @param pad Whether to append `=` padding characters (defaults to `false`).
105
+ * @returns The Base64URL-encoded string.
106
+ * @throws {RequiredError} If `input` cannot be converted to a byte sequence.
107
+ * @example encodeBase64URL("abc") // "YWJj"
108
+ * @see https://dhoulb.github.io/shelving/util/base64/encodeBase64URL
109
+ */
76
110
  export function encodeBase64URL(input, pad = false) {
77
111
  return _encode(requireBytes(input), BASE64URL_CHARS, pad ? "=" : "");
78
112
  }
79
- /** Decode a string from URL-safe Base64 (decodes Base64 too). */
113
+ /**
114
+ * Decode a string from a URL-safe Base64 string (decodes Base64 too).
115
+ *
116
+ * @param base64 The Base64URL (or Base64) string to decode.
117
+ * @returns The decoded UTF-8 string.
118
+ * @throws {ValueError} If `base64` contains an invalid character.
119
+ * @example decodeBase64URLString("YWJj") // "abc"
120
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLString
121
+ */
80
122
  export function decodeBase64URLString(base64) {
81
123
  return new TextDecoder("utf-8").decode(_decode(base64, decodeBase64URLString));
82
124
  }
83
- /** Decode URL-safe Base64 string to byte sequence (decodes Base64 too). */
125
+ /**
126
+ * Decode a URL-safe Base64 string to a byte sequence (decodes Base64 too).
127
+ *
128
+ * @param base64 The Base64URL (or Base64) string to decode.
129
+ * @returns The decoded byte sequence.
130
+ * @throws {ValueError} If `base64` contains an invalid character.
131
+ * @example decodeBase64URLBytes("YWJj") // Uint8Array([97, 98, 99])
132
+ * @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLBytes
133
+ */
84
134
  export function decodeBase64URLBytes(base64) {
85
135
  return _decode(base64, decodeBase64URLBytes);
86
136
  }
package/util/boolean.d.ts CHANGED
@@ -1,21 +1,86 @@
1
1
  import type { AnyCaller } from "./function.js";
2
- /** Is a value a boolean? */
2
+ /**
3
+ * Is an unknown value a boolean?
4
+ *
5
+ * @param value The value to test.
6
+ * @returns `true` if `value` is a `boolean`, narrowing its type.
7
+ * @see https://dhoulb.github.io/shelving/util/boolean/isBoolean
8
+ */
3
9
  export declare function isBoolean(value: unknown): value is boolean;
4
- /** Is a value true? */
10
+ /**
11
+ * Is an unknown value exactly `true`?
12
+ *
13
+ * @param value The value to test.
14
+ * @returns `true` if `value` is the literal `true`, narrowing its type.
15
+ * @see https://dhoulb.github.io/shelving/util/boolean/isTrue
16
+ */
5
17
  export declare function isTrue(value: unknown): value is true;
6
- /** Is a value false? */
18
+ /**
19
+ * Is an unknown value exactly `false`?
20
+ *
21
+ * @param value The value to test.
22
+ * @returns `true` if `value` is the literal `false`, narrowing its type.
23
+ * @see https://dhoulb.github.io/shelving/util/boolean/isFalse
24
+ */
7
25
  export declare function isFalse(value: unknown): value is false;
8
- /** Is a value truthy? */
26
+ /**
27
+ * Is an unknown value truthy?
28
+ *
29
+ * @param value The value to test.
30
+ * @returns `true` if `value` coerces to `true`.
31
+ * @see https://dhoulb.github.io/shelving/util/boolean/isTruthy
32
+ */
9
33
  export declare function isTruthy(value: unknown): boolean;
10
- /** Is a value falsey? */
34
+ /**
35
+ * Is an unknown value falsey?
36
+ *
37
+ * @param value The value to test.
38
+ * @returns `true` if `value` coerces to `false`.
39
+ * @see https://dhoulb.github.io/shelving/util/boolean/isFalsey
40
+ */
11
41
  export declare function isFalsey(value: unknown): boolean;
12
- /** Assert that a value is a boolean. */
42
+ /**
43
+ * Assert that an unknown value is a boolean.
44
+ *
45
+ * @param value The value to assert.
46
+ * @param caller Function to attribute a thrown error to (defaults to `assertBoolean` itself).
47
+ * @throws {RequiredError} If `value` is not a `boolean`.
48
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertBoolean
49
+ */
13
50
  export declare function assertBoolean(value: unknown, caller?: AnyCaller): asserts value is boolean;
14
- /** Assert that a value is true. */
51
+ /**
52
+ * Assert that an unknown value is exactly `true`.
53
+ *
54
+ * @param value The value to assert.
55
+ * @param caller Function to attribute a thrown error to (defaults to `assertTrue` itself).
56
+ * @throws {RequiredError} If `value` is not the literal `true`.
57
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertTrue
58
+ */
15
59
  export declare function assertTrue(value: unknown, caller?: AnyCaller): asserts value is true;
16
- /** Assert that a value is false. */
60
+ /**
61
+ * Assert that an unknown value is exactly `false`.
62
+ *
63
+ * @param value The value to assert.
64
+ * @param caller Function to attribute a thrown error to (defaults to `assertFalse` itself).
65
+ * @throws {RequiredError} If `value` is not the literal `false`.
66
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertFalse
67
+ */
17
68
  export declare function assertFalse(value: unknown, caller?: AnyCaller): asserts value is false;
18
- /** Assert that a value is truthy. */
69
+ /**
70
+ * Assert that an unknown value is truthy.
71
+ *
72
+ * @param value The value to assert.
73
+ * @param caller Function to attribute a thrown error to (defaults to `assertTruthy` itself).
74
+ * @throws {RequiredError} If `value` is falsey.
75
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertTruthy
76
+ */
19
77
  export declare function assertTruthy(value: unknown, caller?: AnyCaller): asserts value is true;
20
- /** Assert that a value is falsy. */
78
+ /**
79
+ * Assert that an unknown value is falsy.
80
+ *
81
+ * @param value The value to assert.
82
+ * @param caller Function to attribute a thrown error to (defaults to `assertFalsy` itself).
83
+ * @throws {RequiredError} If `value` is truthy.
84
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertFalsy
85
+ */
21
86
  export declare function assertFalsy(value: unknown, caller?: AnyCaller): asserts value is false;
package/util/boolean.js CHANGED
@@ -1,45 +1,110 @@
1
1
  import { RequiredError } from "../error/RequiredError.js";
2
- /** Is a value a boolean? */
2
+ /**
3
+ * Is an unknown value a boolean?
4
+ *
5
+ * @param value The value to test.
6
+ * @returns `true` if `value` is a `boolean`, narrowing its type.
7
+ * @see https://dhoulb.github.io/shelving/util/boolean/isBoolean
8
+ */
3
9
  export function isBoolean(value) {
4
10
  return typeof value === "boolean";
5
11
  }
6
- /** Is a value true? */
12
+ /**
13
+ * Is an unknown value exactly `true`?
14
+ *
15
+ * @param value The value to test.
16
+ * @returns `true` if `value` is the literal `true`, narrowing its type.
17
+ * @see https://dhoulb.github.io/shelving/util/boolean/isTrue
18
+ */
7
19
  export function isTrue(value) {
8
20
  return value === true;
9
21
  }
10
- /** Is a value false? */
22
+ /**
23
+ * Is an unknown value exactly `false`?
24
+ *
25
+ * @param value The value to test.
26
+ * @returns `true` if `value` is the literal `false`, narrowing its type.
27
+ * @see https://dhoulb.github.io/shelving/util/boolean/isFalse
28
+ */
11
29
  export function isFalse(value) {
12
30
  return value === false;
13
31
  }
14
- /** Is a value truthy? */
32
+ /**
33
+ * Is an unknown value truthy?
34
+ *
35
+ * @param value The value to test.
36
+ * @returns `true` if `value` coerces to `true`.
37
+ * @see https://dhoulb.github.io/shelving/util/boolean/isTruthy
38
+ */
15
39
  export function isTruthy(value) {
16
40
  return !!value;
17
41
  }
18
- /** Is a value falsey? */
42
+ /**
43
+ * Is an unknown value falsey?
44
+ *
45
+ * @param value The value to test.
46
+ * @returns `true` if `value` coerces to `false`.
47
+ * @see https://dhoulb.github.io/shelving/util/boolean/isFalsey
48
+ */
19
49
  export function isFalsey(value) {
20
50
  return !value;
21
51
  }
22
- /** Assert that a value is a boolean. */
52
+ /**
53
+ * Assert that an unknown value is a boolean.
54
+ *
55
+ * @param value The value to assert.
56
+ * @param caller Function to attribute a thrown error to (defaults to `assertBoolean` itself).
57
+ * @throws {RequiredError} If `value` is not a `boolean`.
58
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertBoolean
59
+ */
23
60
  export function assertBoolean(value, caller = assertBoolean) {
24
61
  if (typeof value !== "boolean")
25
62
  throw new RequiredError("Must be boolean", { received: value, caller });
26
63
  }
27
- /** Assert that a value is true. */
64
+ /**
65
+ * Assert that an unknown value is exactly `true`.
66
+ *
67
+ * @param value The value to assert.
68
+ * @param caller Function to attribute a thrown error to (defaults to `assertTrue` itself).
69
+ * @throws {RequiredError} If `value` is not the literal `true`.
70
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertTrue
71
+ */
28
72
  export function assertTrue(value, caller = assertTrue) {
29
73
  if (value !== true)
30
74
  throw new RequiredError("Must be true", { received: value, caller });
31
75
  }
32
- /** Assert that a value is false. */
76
+ /**
77
+ * Assert that an unknown value is exactly `false`.
78
+ *
79
+ * @param value The value to assert.
80
+ * @param caller Function to attribute a thrown error to (defaults to `assertFalse` itself).
81
+ * @throws {RequiredError} If `value` is not the literal `false`.
82
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertFalse
83
+ */
33
84
  export function assertFalse(value, caller = assertFalse) {
34
85
  if (value !== false)
35
86
  throw new RequiredError("Must be false", { received: value, caller });
36
87
  }
37
- /** Assert that a value is truthy. */
88
+ /**
89
+ * Assert that an unknown value is truthy.
90
+ *
91
+ * @param value The value to assert.
92
+ * @param caller Function to attribute a thrown error to (defaults to `assertTruthy` itself).
93
+ * @throws {RequiredError} If `value` is falsey.
94
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertTruthy
95
+ */
38
96
  export function assertTruthy(value, caller = assertTruthy) {
39
97
  if (!value)
40
98
  throw new RequiredError("Must be truthy", { received: value, caller });
41
99
  }
42
- /** Assert that a value is falsy. */
100
+ /**
101
+ * Assert that an unknown value is falsy.
102
+ *
103
+ * @param value The value to assert.
104
+ * @param caller Function to attribute a thrown error to (defaults to `assertFalsy` itself).
105
+ * @throws {RequiredError} If `value` is truthy.
106
+ * @see https://dhoulb.github.io/shelving/util/boolean/assertFalsy
107
+ */
43
108
  export function assertFalsy(value, caller = assertFalsy) {
44
109
  if (value)
45
110
  throw new RequiredError("Must be falsy", { received: value, caller });
package/util/buffer.d.ts CHANGED
@@ -1,7 +1,30 @@
1
+ /**
2
+ * Union of the numeric `TypedArray` views over an `ArrayBufferLike` (excludes `DataView`).
3
+ *
4
+ * @see https://dhoulb.github.io/shelving/util/buffer/TypedArray
5
+ */
1
6
  export type TypedArray<T extends ArrayBufferLike = ArrayBufferLike> = Uint8Array<T> | Uint16Array<T> | Uint32Array<T> | Int8Array<T> | Int16Array<T> | Int32Array<T> | Float32Array<T> | Float64Array<T>;
2
- /** Detect if an unknown value is an `ArrayBuffer` (not a view like `Uint8Array` or `Float32Array` or `DataView`). */
7
+ /**
8
+ * Detect if an unknown value is an `ArrayBuffer` (not a view like `Uint8Array` or `Float32Array` or `DataView`).
9
+ *
10
+ * @param value The value to test.
11
+ * @returns `true` if `value` is an `ArrayBuffer`, narrowing its type.
12
+ * @see https://dhoulb.github.io/shelving/util/buffer/isBuffer
13
+ */
3
14
  export declare function isBuffer(value: unknown): value is ArrayBuffer;
4
- /** Detect if an unknown value is an `ArrayBufferView`, like `Uint8Array` or `Float32Array` or `DataView` */
15
+ /**
16
+ * Detect if an unknown value is an `ArrayBufferView`, like `Uint8Array` or `Float32Array` or `DataView`.
17
+ *
18
+ * @param value The value to test.
19
+ * @returns `true` if `value` is an `ArrayBufferView`, narrowing its type.
20
+ * @see https://dhoulb.github.io/shelving/util/buffer/isBufferView
21
+ */
5
22
  export declare function isBufferView(value: unknown): value is ArrayBufferView;
6
- /** Detect if an unknown value is a `TypedArray`, like `Uint8Array` or `Float32Array` (not including `DataView`). */
23
+ /**
24
+ * Detect if an unknown value is a `TypedArray`, like `Uint8Array` or `Float32Array` (not including `DataView`).
25
+ *
26
+ * @param value The value to test.
27
+ * @returns `true` if `value` is a numeric `TypedArray`, narrowing its type.
28
+ * @see https://dhoulb.github.io/shelving/util/buffer/isTypedArray
29
+ */
7
30
  export declare function isTypedArray(value: unknown): value is TypedArray;
package/util/buffer.js CHANGED
@@ -1,12 +1,30 @@
1
- /** Detect if an unknown value is an `ArrayBuffer` (not a view like `Uint8Array` or `Float32Array` or `DataView`). */
1
+ /**
2
+ * Detect if an unknown value is an `ArrayBuffer` (not a view like `Uint8Array` or `Float32Array` or `DataView`).
3
+ *
4
+ * @param value The value to test.
5
+ * @returns `true` if `value` is an `ArrayBuffer`, narrowing its type.
6
+ * @see https://dhoulb.github.io/shelving/util/buffer/isBuffer
7
+ */
2
8
  export function isBuffer(value) {
3
9
  return value instanceof ArrayBuffer;
4
10
  }
5
- /** Detect if an unknown value is an `ArrayBufferView`, like `Uint8Array` or `Float32Array` or `DataView` */
11
+ /**
12
+ * Detect if an unknown value is an `ArrayBufferView`, like `Uint8Array` or `Float32Array` or `DataView`.
13
+ *
14
+ * @param value The value to test.
15
+ * @returns `true` if `value` is an `ArrayBufferView`, narrowing its type.
16
+ * @see https://dhoulb.github.io/shelving/util/buffer/isBufferView
17
+ */
6
18
  export function isBufferView(value) {
7
19
  return ArrayBuffer.isView(value);
8
20
  }
9
- /** Detect if an unknown value is a `TypedArray`, like `Uint8Array` or `Float32Array` (not including `DataView`). */
21
+ /**
22
+ * Detect if an unknown value is a `TypedArray`, like `Uint8Array` or `Float32Array` (not including `DataView`).
23
+ *
24
+ * @param value The value to test.
25
+ * @returns `true` if `value` is a numeric `TypedArray`, narrowing its type.
26
+ * @see https://dhoulb.github.io/shelving/util/buffer/isTypedArray
27
+ */
10
28
  export function isTypedArray(value) {
11
29
  return value instanceof Object.getPrototypeOf(Uint8Array);
12
30
  }
package/util/bytes.d.ts CHANGED
@@ -1,11 +1,35 @@
1
1
  import type { AnyCaller } from "./function.js";
2
- /** We store a sets of bytes as a `Uint8Array` byte sequence. */
2
+ /**
3
+ * A set of bytes stored as a `Uint8Array` byte sequence backed by an `ArrayBuffer`.
4
+ *
5
+ * @see https://dhoulb.github.io/shelving/util/bytes/Bytes
6
+ */
3
7
  export type Bytes = Uint8Array<ArrayBuffer>;
4
- /** Types that can be converted to a `Uint8Array` byte sequence. */
8
+ /**
9
+ * Types that can be converted to a `Uint8Array` byte sequence.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/util/bytes/PossibleBytes
12
+ */
5
13
  export type PossibleBytes = Bytes | ArrayBuffer | string;
6
- /** Is an unknown value a set of bytes? */
14
+ /**
15
+ * Is an unknown value a set of bytes?
16
+ *
17
+ * @param value The value to test.
18
+ * @returns `true` if `value` is a `Uint8Array` backed by an `ArrayBuffer`, narrowing its type.
19
+ * @see https://dhoulb.github.io/shelving/util/bytes/isBytes
20
+ */
7
21
  export declare function isBytes(value: unknown): value is Bytes;
8
- /** Assert that an unknown value is a `Uint8Array` byte sequence. */
22
+ /**
23
+ * Assert that an unknown value is a `Uint8Array` byte sequence (optionally with a min/max length).
24
+ *
25
+ * @param value The value to assert.
26
+ * @param min Minimum allowed length (defaults to `0`).
27
+ * @param max Maximum allowed length (defaults to `Infinity`).
28
+ * @param caller Function to attribute a thrown error to (defaults to `assertBytes` itself).
29
+ * @throws {RequiredError} If `value` is not a byte sequence within the allowed length range.
30
+ * @example assertBytes(new Uint8Array([1, 2, 3]), 1, 8);
31
+ * @see https://dhoulb.github.io/shelving/util/bytes/assertBytes
32
+ */
9
33
  export declare function assertBytes(value: unknown, min?: number, max?: number, caller?: AnyCaller): asserts value is Bytes;
10
34
  /**
11
35
  * Convert an unknown value to a `Uint8Array<ArrayBuffer>` byte sequence, or `undefined` if the value cannot be converted.
@@ -14,9 +38,23 @@ export declare function assertBytes(value: unknown, min?: number, max?: number,
14
38
  * - `ArrayBuffer` instances are converted to `Uint8Array`
15
39
  * - Strings are encoded as UTF-8 characters in a `Uint8Array`
16
40
  * - Everything else returns `undefined`
41
+ *
42
+ * @param value The value to convert.
43
+ * @returns The byte sequence, or `undefined` if `value` cannot be converted.
44
+ * @example getBytes("abc") // Uint8Array([97, 98, 99])
45
+ * @see https://dhoulb.github.io/shelving/util/bytes/getBytes
17
46
  */
18
47
  export declare function getBytes(value: unknown): Uint8Array<ArrayBuffer> | undefined;
19
48
  /**
20
49
  * Convert a possible set of bytes to a `Uint8Array` byte sequence, or throw `RequiredError` if the value cannot be converted.
50
+ *
51
+ * @param value The possible bytes to convert.
52
+ * @param min Minimum allowed length (defaults to `0`).
53
+ * @param max Maximum allowed length (defaults to `Infinity`).
54
+ * @param caller Function to attribute a thrown error to (defaults to `requireBytes` itself).
55
+ * @returns The converted byte sequence.
56
+ * @throws {RequiredError} If `value` cannot be converted or is outside the allowed length range.
57
+ * @example requireBytes("abc") // Uint8Array([97, 98, 99])
58
+ * @see https://dhoulb.github.io/shelving/util/bytes/requireBytes
21
59
  */
22
60
  export declare function requireBytes(value: PossibleBytes, min?: number, max?: number, caller?: AnyCaller): Uint8Array<ArrayBuffer>;