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/date.js CHANGED
@@ -1,12 +1,24 @@
1
1
  import { RequiredError } from "../error/RequiredError.js";
2
2
  /**
3
- * Is a value a valid date?
3
+ * Is a value a valid `Date` instance?
4
4
  * - Note: `Date` instances can be invalid (e.g. `new Date("blah blah").getTime()` returns `NaN`). These are detected and will always return `false`
5
+ *
6
+ * @param value The value to check.
7
+ * @returns `true` if the value is a `Date` instance representing a valid date, narrowing it to `Date`.
8
+ * @see https://dhoulb.github.io/shelving/util/date/isDate
5
9
  */
6
10
  export function isDate(value) {
7
11
  return value instanceof Date && Number.isFinite(value.getTime());
8
12
  }
9
- /** Assert that a value is a `Date` instance. */
13
+ /**
14
+ * Assert that a value is a valid `Date` instance.
15
+ *
16
+ * @param value The value to check.
17
+ * @param caller The function to attribute a thrown error to (defaults to `assertDate`).
18
+ * @throws {RequiredError} If the value is not a valid `Date` instance.
19
+ * @example assertDate(value); // throws unless `value` is a valid `Date`
20
+ * @see https://dhoulb.github.io/shelving/util/date/assertDate
21
+ */
10
22
  export function assertDate(value, caller = assertDate) {
11
23
  if (!isDate(value))
12
24
  throw new RequiredError("Must be valid date", { received: value, caller });
@@ -27,7 +39,10 @@ export function assertDate(value, caller = assertDate) {
27
39
  * - Numbers are return the corresponding date (using `new Date(number)`, i.e. milliseconds since 01/01/1970).
28
40
  * - Anything else returns `undefined`
29
41
  *
30
- * @returns `Date` instance if the value could be converted to a valid date, and `null` if not.
42
+ * @returns `Date` instance if the value could be converted to a valid date, or `undefined` if not.
43
+ * @example getDate("2003-09-12") // Date instance for 2003-09-12
44
+ * @example getDate("nope") // undefined
45
+ * @see https://dhoulb.github.io/shelving/util/date/getDate
31
46
  */
32
47
  export function getDate(value) {
33
48
  if (value === "now")
@@ -49,37 +64,79 @@ export function getDate(value) {
49
64
  return time;
50
65
  }
51
66
  }
52
- /** Get a date representing this exact moment. */
67
+ /**
68
+ * Get a date representing this exact moment.
69
+ *
70
+ * @returns A new `Date` instance for the current moment.
71
+ * @example getNow() // Date instance for right now
72
+ * @see https://dhoulb.github.io/shelving/util/date/getNow
73
+ */
53
74
  export function getNow() {
54
75
  return new Date();
55
76
  }
56
- /** Get a date representing midnight of the previous day. */
77
+ /**
78
+ * Get a date representing midnight of the previous day.
79
+ *
80
+ * @returns A new `Date` instance at midnight yesterday.
81
+ * @example getYesterday() // Date instance for yesterday at 00:00
82
+ * @see https://dhoulb.github.io/shelving/util/date/getYesterday
83
+ */
57
84
  export function getYesterday() {
58
85
  const date = new Date();
59
86
  date.setHours(0, 0, 0, 0);
60
87
  date.setDate(date.getDate() - 1);
61
88
  return date;
62
89
  }
63
- /** Get a date representing midnight of the current day. */
90
+ /**
91
+ * Get a date representing midnight of the current day.
92
+ *
93
+ * @returns A new `Date` instance at midnight today.
94
+ * @example getToday() // Date instance for today at 00:00
95
+ * @see https://dhoulb.github.io/shelving/util/date/getToday
96
+ */
64
97
  export function getToday() {
65
98
  const date = new Date();
66
99
  date.setHours(0, 0, 0, 0);
67
100
  return date;
68
101
  }
69
- /** Get a date representing midnight of the next day. */
102
+ /**
103
+ * Get a date representing midnight of the next day.
104
+ *
105
+ * @returns A new `Date` instance at midnight tomorrow.
106
+ * @example getTomorrow() // Date instance for tomorrow at 00:00
107
+ * @see https://dhoulb.github.io/shelving/util/date/getTomorrow
108
+ */
70
109
  export function getTomorrow() {
71
110
  const date = new Date();
72
111
  date.setHours(0, 0, 0, 0);
73
112
  date.setDate(date.getDate() + 1);
74
113
  return date;
75
114
  }
76
- /** Get a Date representing exactly midnight of the specified date. */
115
+ /**
116
+ * Get a `Date` representing exactly midnight of the specified date.
117
+ *
118
+ * @param target The date to find midnight for (defaults to `"now"`).
119
+ * @param caller The function to attribute a thrown error to (defaults to `getMidnight`).
120
+ * @returns A new `Date` instance at midnight of the target date.
121
+ * @throws {RequiredError} If `target` couldn't be converted to a valid date.
122
+ * @example getMidnight("2003-09-12") // Date instance for 2003-09-12 at 00:00
123
+ * @see https://dhoulb.github.io/shelving/util/date/getMidnight
124
+ */
77
125
  export function getMidnight(target, caller = getMidnight) {
78
126
  const date = new Date(requireDate(target, caller));
79
127
  date.setHours(0, 0, 0, 0);
80
128
  return date;
81
129
  }
82
- /** Get a Date representing midnight on Monday of the specified week. */
130
+ /**
131
+ * Get a `Date` representing midnight on Monday of the specified week.
132
+ *
133
+ * @param target The date whose week to find Monday for (defaults to `"now"`).
134
+ * @param caller The function to attribute a thrown error to (defaults to `getMonday`).
135
+ * @returns A new `Date` instance at midnight on Monday of the target week.
136
+ * @throws {RequiredError} If `target` couldn't be converted to a valid date.
137
+ * @example getMonday("2003-09-12") // Date instance for the Monday of that week at 00:00
138
+ * @see https://dhoulb.github.io/shelving/util/date/getMonday
139
+ */
83
140
  export function getMonday(target, caller = getMonday) {
84
141
  const date = getMidnight(target, caller);
85
142
  const day = date.getDay();
@@ -89,7 +146,16 @@ export function getMonday(target, caller = getMonday) {
89
146
  date.setDate(date.getDate() - (day - 1));
90
147
  return date;
91
148
  }
92
- /** Get a Date representing the first day of the specified month. */
149
+ /**
150
+ * Get a `Date` representing midnight on the first day of the specified month.
151
+ *
152
+ * @param target The date whose month to find the start of (defaults to `"now"`).
153
+ * @param caller The function to attribute a thrown error to (defaults to `getMonthStart`).
154
+ * @returns A new `Date` instance at midnight on the 1st of the target month.
155
+ * @throws {RequiredError} If `target` couldn't be converted to a valid date.
156
+ * @example getMonthStart("2003-09-12") // Date instance for 2003-09-01 at 00:00
157
+ * @see https://dhoulb.github.io/shelving/util/date/getMonthStart
158
+ */
93
159
  export function getMonthStart(target, caller = getMonthStart) {
94
160
  const date = getMidnight(target, caller);
95
161
  date.setDate(1);
@@ -97,18 +163,39 @@ export function getMonthStart(target, caller = getMonthStart) {
97
163
  }
98
164
  /**
99
165
  * Convert a possible date to a `Date` instance, or throw `RequiredError` if it couldn't be converted.
166
+ *
100
167
  * @param value Any value that we want to parse as a valid date (defaults to `"now"`).
168
+ * @param caller The function to attribute a thrown error to (defaults to `requireDate`).
169
+ * @returns A valid `Date` instance.
170
+ * @throws {RequiredError} If `value` couldn't be converted to a valid date.
171
+ * @example requireDate("2003-09-12") // Date instance for 2003-09-12
172
+ * @see https://dhoulb.github.io/shelving/util/date/requireDate
101
173
  */
102
174
  export function requireDate(value = "now", caller = requireDate) {
103
175
  const date = getDate(value);
104
176
  assertDate(date, caller);
105
177
  return date;
106
178
  }
107
- /** Convert an unknown value to a timestamp (milliseconds past Unix epoch), or `undefined` if it couldn't be converted. */
179
+ /**
180
+ * Convert an unknown value to a timestamp (milliseconds past Unix epoch), or `undefined` if it couldn't be converted.
181
+ *
182
+ * @param value Any value that we want to parse as a valid date.
183
+ * @returns The timestamp in milliseconds, or `undefined` if the value couldn't be converted.
184
+ * @example getTimestamp("1970-01-01T00:00:00Z") // 0
185
+ * @see https://dhoulb.github.io/shelving/util/date/getTimestamp
186
+ */
108
187
  export function getTimestamp(value) {
109
188
  return getDate(value)?.getTime();
110
189
  }
111
- /** Convert a possible date to a timestamp (milliseconds past Unix epoch), or throw `RequiredError` if it couldn't be converted. */
190
+ /**
191
+ * Convert a possible date to a timestamp (milliseconds past Unix epoch), or throw `RequiredError` if it couldn't be converted.
192
+ *
193
+ * @param value Any value that we want to parse as a valid date (defaults to `"now"`).
194
+ * @returns The timestamp in milliseconds.
195
+ * @throws {RequiredError} If `value` couldn't be converted to a valid date.
196
+ * @example requireTimestamp("1970-01-01T00:00:00Z") // 0
197
+ * @see https://dhoulb.github.io/shelving/util/date/requireTimestamp
198
+ */
112
199
  export function requireTimestamp(value) {
113
200
  return requireDate(value, requireTimestamp).getTime();
114
201
  }
@@ -125,17 +212,40 @@ function _time(date) {
125
212
  function _datetime(date) {
126
213
  return `${_date(date)}T${_time(date)}`;
127
214
  }
128
- /** Convert an unknown value to a local date string like "2015-09-12T18:30:00", or `undefined` if it couldn't be converted. */
215
+ /**
216
+ * Convert an unknown value to a local date string like "2015-09-12T18:30:00", or `undefined` if it couldn't be converted.
217
+ *
218
+ * @param value Any value that we want to parse as a valid date.
219
+ * @returns The local datetime string, or `undefined` if `value` couldn't be converted.
220
+ * @example getDateTimeString("2015-09-12T18:30:00") // "2015-09-12T18:30:00"
221
+ * @see https://dhoulb.github.io/shelving/util/date/getDateTimeString
222
+ */
129
223
  export function getDateTimeString(value) {
130
224
  const date = getDate(value);
131
225
  if (date)
132
226
  return _datetime(date);
133
227
  }
134
- /** Convert a possible `Date` instance to a local YMD string like "2015-09-12T18:30:00", or throw `RequiredError` if it couldn't be converted. */
228
+ /**
229
+ * Convert a possible `Date` instance to a local YMD string like "2015-09-12T18:30:00", or throw `RequiredError` if it couldn't be converted.
230
+ *
231
+ * @param value Any value that we want to parse as a valid date (defaults to `"now"`).
232
+ * @param caller Function to attribute a thrown error to (defaults to `requireDateTimeString` itself).
233
+ * @returns The local datetime string.
234
+ * @throws {RequiredError} If `value` couldn't be converted to a valid date.
235
+ * @example requireDateTimeString("2015-09-12T18:30:00") // "2015-09-12T18:30:00"
236
+ * @see https://dhoulb.github.io/shelving/util/date/requireDateTimeString
237
+ */
135
238
  export function requireDateTimeString(value, caller = requireDateTimeString) {
136
239
  return _datetime(requireDate(value, caller));
137
240
  }
138
- /** Convert an unknown value to a local date string like "2015-09-12", or `undefined` if it couldn't be converted. */
241
+ /**
242
+ * Convert an unknown value to a local date string like "2015-09-12", or `undefined` if it couldn't be converted.
243
+ *
244
+ * @param value Any value that we want to parse as a valid date.
245
+ * @returns The local date string, or `undefined` if `value` couldn't be converted.
246
+ * @example getDateString("2015-09-12T18:30:00") // "2015-09-12"
247
+ * @see https://dhoulb.github.io/shelving/util/date/getDateString
248
+ */
139
249
  export function getDateString(value) {
140
250
  const date = getDate(value);
141
251
  if (date)
@@ -210,13 +320,33 @@ export function addMinutes(change, target, caller = addMinutes) {
210
320
  date.setMinutes(date.getMinutes() + change);
211
321
  return date;
212
322
  }
213
- /** Return a new date that increase or decreases the minute based on an input date. */
323
+ /**
324
+ * Return a new date that increases or decreases the seconds based on an input date.
325
+ *
326
+ * @param change The number of seconds to add (negative numbers subtract).
327
+ * @param target Any value that can be converted to a date (defaults to `"now"`).
328
+ * @param caller Function to attribute a thrown error to (defaults to `addSeconds` itself).
329
+ * @returns A new `Date` instance offset by `change` seconds.
330
+ * @throws {RequiredError} If `target` couldn't be converted to a valid date.
331
+ * @example addSeconds(30, "2003-09-12T00:00:00") // Date instance for 2003-09-12T00:00:30
332
+ * @see https://dhoulb.github.io/shelving/util/date/addSeconds
333
+ */
214
334
  export function addSeconds(change, target, caller = addSeconds) {
215
335
  const date = new Date(requireDate(target, caller));
216
336
  date.setSeconds(date.getSeconds() + change);
217
337
  return date;
218
338
  }
219
- /** Return a new date that increase or decreases the minute based on an input date. */
339
+ /**
340
+ * Return a new date that increases or decreases the milliseconds based on an input date.
341
+ *
342
+ * @param change The number of milliseconds to add (negative numbers subtract).
343
+ * @param target Any value that can be converted to a date (defaults to `"now"`).
344
+ * @param caller Function to attribute a thrown error to (defaults to `addMilliseconds` itself).
345
+ * @returns A new `Date` instance offset by `change` milliseconds.
346
+ * @throws {RequiredError} If `target` couldn't be converted to a valid date.
347
+ * @example addMilliseconds(500, "2003-09-12T00:00:00") // Date instance for 2003-09-12T00:00:00.500
348
+ * @see https://dhoulb.github.io/shelving/util/date/addMilliseconds
349
+ */
220
350
  export function addMilliseconds(change, target, caller = addMilliseconds) {
221
351
  const date = new Date(requireDate(target, caller));
222
352
  date.setMilliseconds(date.getMilliseconds() + change);
package/util/debug.d.ts CHANGED
@@ -2,16 +2,47 @@
2
2
  import type { ImmutableArray } from "./array.js";
3
3
  import type { ImmutableMap } from "./map.js";
4
4
  import type { ImmutableSet } from "./set.js";
5
- /** Debug a random value as a string. */
5
+ /**
6
+ * Convert any unknown value into a readable debug string.
7
+ * - Dispatches on the value's type to a specialised debugger (string, array, map, set, object, `Request`, `Response`, `Headers`, `Date`, `Error`, etc.).
8
+ * - Nested values are expanded down to `depth` levels; deeper values collapse to their container shape.
9
+ *
10
+ * @param value The value to debug.
11
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
12
+ * @returns A human-readable string representation of `value`.
13
+ * @example debug({ a: 1, b: "two" }) // `{\n\t"a": 1,\n\t"b": "two"\n}`
14
+ * @see https://dhoulb.github.io/shelving/util/debug/debug
15
+ */
6
16
  export declare function debug(value: unknown, depth?: number): string;
7
- /** Debug a string. */
8
- export declare const debugString: (value: string) => string;
9
- /** Debug a set of `Headers` as a string. */
17
+ /**
18
+ * Convert a string into a quoted, escaped debug string.
19
+ * - Wraps the value in double quotes and escapes control characters, quotes, and backslashes.
20
+ *
21
+ * @param value The string to debug.
22
+ * @returns The quoted and escaped string.
23
+ * @example debugString("a\tb") // `"a\\tb"`
24
+ * @see https://dhoulb.github.io/shelving/util/debug/debugString
25
+ */
26
+ export declare function debugString(value: string): string;
27
+ /**
28
+ * Convert a set of `Headers` into a debug string.
29
+ * - One `key: value` pair per line.
30
+ *
31
+ * @param headers The `Headers` object to debug.
32
+ * @returns A newline-separated string of `key: value` pairs.
33
+ * @example debugHeaders(new Headers({ "Content-Type": "text/plain" })) // "content-type: text/plain"
34
+ * @see https://dhoulb.github.io/shelving/util/debug/debugHeaders
35
+ */
10
36
  export declare function debugHeaders(headers: Headers): string;
11
37
  /**
12
38
  * Debug a full `Request` as a string including its body.
13
39
  * - Clones the request before reading the body so the original request can still be sent or parsed later.
14
40
  * - Omits the body section when the request body is empty.
41
+ *
42
+ * @param request The `Request` to debug.
43
+ * @returns A promise resolving to the request line, headers, and body as a string.
44
+ * @example await debugFullRequest(new Request("https://x.com")) // "GET https://x.com/"
45
+ * @see https://dhoulb.github.io/shelving/util/debug/debugFullRequest
15
46
  */
16
47
  export declare function debugFullRequest(request: Request): Promise<string>;
17
48
  /**
@@ -19,19 +50,89 @@ export declare function debugFullRequest(request: Request): Promise<string>;
19
50
  * - Clones the response before reading the body so the original response can still be parsed later.
20
51
  * - Omits the headers section when there are no headers.
21
52
  * - Omits the body section when the response body is empty.
53
+ *
54
+ * @param response The `Response` to debug.
55
+ * @returns A promise resolving to the status line, headers, and body as a string.
56
+ * @example await debugFullResponse(new Response("hi", { status: 200 })) // "200 \n\nhi"
57
+ * @see https://dhoulb.github.io/shelving/util/debug/debugFullResponse
22
58
  */
23
59
  export declare function debugFullResponse(response: Response): Promise<string>;
24
- /** Debug a `Request` as a string. */
60
+ /**
61
+ * Convert a `Request` into a one-line debug string.
62
+ * - Shows the method and URL only (no headers or body).
63
+ *
64
+ * @param request The `Request` to debug.
65
+ * @returns A string in `METHOD url` format.
66
+ * @example debugRequest(new Request("https://x.com")) // "GET https://x.com/"
67
+ * @see https://dhoulb.github.io/shelving/util/debug/debugRequest
68
+ */
25
69
  export declare function debugRequest(request: Request): string;
26
- /** Debug a `Response` as a string. */
70
+ /**
71
+ * Convert a `Response` into a one-line debug string.
72
+ * - Shows the status code and status text only (no headers or body).
73
+ *
74
+ * @param response The `Response` to debug.
75
+ * @returns A string in `status statusText` format.
76
+ * @example debugResponse(new Response("hi", { status: 404 })) // "404 Not Found"
77
+ * @see https://dhoulb.github.io/shelving/util/debug/debugResponse
78
+ */
27
79
  export declare function debugResponse(response: Response): string;
28
- /** Debug an array. */
80
+ /**
81
+ * Convert an array into a readable debug string.
82
+ * - Prefixes the constructor name for non-plain arrays.
83
+ * - Expands items down to `depth` levels.
84
+ *
85
+ * @param value The array to debug.
86
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
87
+ * @returns A human-readable string representation of the array.
88
+ * @example debugArray([1, 2]) // `[\n\t1,\n\t2\n]`
89
+ * @see https://dhoulb.github.io/shelving/util/debug/debugArray
90
+ */
29
91
  export declare function debugArray(value: ImmutableArray, depth?: number): string;
30
- /** Debug a set. */
92
+ /**
93
+ * Convert a `Set` into a readable debug string.
94
+ * - Prefixes the constructor name and item count.
95
+ * - Expands items down to `depth` levels.
96
+ *
97
+ * @param value The set to debug.
98
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
99
+ * @returns A human-readable string representation of the set.
100
+ * @example debugSet(new Set([1, 2])) // `(value.size) {\n\t1,\n\t2\n}`
101
+ * @see https://dhoulb.github.io/shelving/util/debug/debugSet
102
+ */
31
103
  export declare function debugSet(value: ImmutableSet, depth?: number): string;
32
- /** Debug a map. */
104
+ /**
105
+ * Convert a `Map` into a readable debug string.
106
+ * - Prefixes the constructor name and entry count.
107
+ * - Expands keys and values down to `depth` levels.
108
+ *
109
+ * @param value The map to debug.
110
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
111
+ * @returns A human-readable string representation of the map.
112
+ * @example debugMap(new Map([["a", 1]])) // `(value.size) {\n\t"a": 1\n}`
113
+ * @see https://dhoulb.github.io/shelving/util/debug/debugMap
114
+ */
33
115
  export declare function debugMap(value: ImmutableMap, depth?: number): string;
34
- /** Debug an object. */
116
+ /**
117
+ * Convert an object into a readable debug string.
118
+ * - Prefixes the constructor name for non-plain objects.
119
+ * - Expands entries down to `depth` levels.
120
+ *
121
+ * @param value The object to debug.
122
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
123
+ * @returns A human-readable string representation of the object.
124
+ * @example debugObject({ a: 1 }) // `{\n\t"a": 1\n}`
125
+ * @see https://dhoulb.github.io/shelving/util/debug/debugObject
126
+ */
35
127
  export declare function debugObject(value: object, depth?: number): string;
36
- /** If a string is multiline, push it onto the next line and prepend a tab to each line.. */
128
+ /**
129
+ * Indent a string for nested debug output.
130
+ * - Multiline strings are pushed onto a new line with a tab prepended to each line.
131
+ * - Single-line strings are simply prefixed with a space.
132
+ *
133
+ * @param str The string to indent.
134
+ * @returns The indented string.
135
+ * @example indent("a\nb") // `\na\n\tb`
136
+ * @see https://dhoulb.github.io/shelving/util/debug/indent
137
+ */
37
138
  export declare function indent(str: string): string;
package/util/debug.js CHANGED
@@ -1,4 +1,14 @@
1
- /** Debug a random value as a string. */
1
+ /**
2
+ * Convert any unknown value into a readable debug string.
3
+ * - Dispatches on the value's type to a specialised debugger (string, array, map, set, object, `Request`, `Response`, `Headers`, `Date`, `Error`, etc.).
4
+ * - Nested values are expanded down to `depth` levels; deeper values collapse to their container shape.
5
+ *
6
+ * @param value The value to debug.
7
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
8
+ * @returns A human-readable string representation of `value`.
9
+ * @example debug({ a: 1, b: "two" }) // `{\n\t"a": 1,\n\t"b": "two"\n}`
10
+ * @see https://dhoulb.github.io/shelving/util/debug/debug
11
+ */
2
12
  export function debug(value, depth = 1) {
3
13
  if (value === null)
4
14
  return "null";
@@ -36,8 +46,18 @@ export function debug(value, depth = 1) {
36
46
  }
37
47
  return typeof value;
38
48
  }
39
- /** Debug a string. */
40
- export const debugString = (value) => `"${value.replace(ESCAPE_REGEXP, _escapeChar)}"`;
49
+ /**
50
+ * Convert a string into a quoted, escaped debug string.
51
+ * - Wraps the value in double quotes and escapes control characters, quotes, and backslashes.
52
+ *
53
+ * @param value The string to debug.
54
+ * @returns The quoted and escaped string.
55
+ * @example debugString("a\tb") // `"a\\tb"`
56
+ * @see https://dhoulb.github.io/shelving/util/debug/debugString
57
+ */
58
+ export function debugString(value) {
59
+ return `"${value.replace(ESCAPE_REGEXP, _escapeChar)}"`;
60
+ }
41
61
  // biome-ignore lint/suspicious/noControlCharactersInRegex: Intentional.
42
62
  const ESCAPE_REGEXP = /[\x00-\x08\x0B-\x1F\x7F-\x9F"\\]/g; // Match control characters, `"` double quote, `\` backslash.
43
63
  const ESCAPE_LIST = {
@@ -51,7 +71,15 @@ const ESCAPE_LIST = {
51
71
  "\v": "\\v",
52
72
  };
53
73
  const _escapeChar = (char) => ESCAPE_LIST[char] || `\\x${char.charCodeAt(0).toString(16).padStart(2, "00")}`;
54
- /** Debug a set of `Headers` as a string. */
74
+ /**
75
+ * Convert a set of `Headers` into a debug string.
76
+ * - One `key: value` pair per line.
77
+ *
78
+ * @param headers The `Headers` object to debug.
79
+ * @returns A newline-separated string of `key: value` pairs.
80
+ * @example debugHeaders(new Headers({ "Content-Type": "text/plain" })) // "content-type: text/plain"
81
+ * @see https://dhoulb.github.io/shelving/util/debug/debugHeaders
82
+ */
55
83
  export function debugHeaders(headers) {
56
84
  return Array.from(headers, ([key, value]) => `${key}: ${value}`).join("\n");
57
85
  }
@@ -59,6 +87,11 @@ export function debugHeaders(headers) {
59
87
  * Debug a full `Request` as a string including its body.
60
88
  * - Clones the request before reading the body so the original request can still be sent or parsed later.
61
89
  * - Omits the body section when the request body is empty.
90
+ *
91
+ * @param request The `Request` to debug.
92
+ * @returns A promise resolving to the request line, headers, and body as a string.
93
+ * @example await debugFullRequest(new Request("https://x.com")) // "GET https://x.com/"
94
+ * @see https://dhoulb.github.io/shelving/util/debug/debugFullRequest
62
95
  */
63
96
  export async function debugFullRequest(request) {
64
97
  return _debugFullMessage(debugRequest(request), request);
@@ -68,6 +101,11 @@ export async function debugFullRequest(request) {
68
101
  * - Clones the response before reading the body so the original response can still be parsed later.
69
102
  * - Omits the headers section when there are no headers.
70
103
  * - Omits the body section when the response body is empty.
104
+ *
105
+ * @param response The `Response` to debug.
106
+ * @returns A promise resolving to the status line, headers, and body as a string.
107
+ * @example await debugFullResponse(new Response("hi", { status: 200 })) // "200 \n\nhi"
108
+ * @see https://dhoulb.github.io/shelving/util/debug/debugFullResponse
71
109
  */
72
110
  export async function debugFullResponse(response) {
73
111
  return _debugFullMessage(debugResponse(response), response);
@@ -108,22 +146,58 @@ async function _debugMessageBody(message) {
108
146
  return `${text}\n[read failed: ${reason?.message ?? reason}]`;
109
147
  }
110
148
  }
111
- /** Debug a `Request` as a string. */
149
+ /**
150
+ * Convert a `Request` into a one-line debug string.
151
+ * - Shows the method and URL only (no headers or body).
152
+ *
153
+ * @param request The `Request` to debug.
154
+ * @returns A string in `METHOD url` format.
155
+ * @example debugRequest(new Request("https://x.com")) // "GET https://x.com/"
156
+ * @see https://dhoulb.github.io/shelving/util/debug/debugRequest
157
+ */
112
158
  export function debugRequest(request) {
113
159
  return `${request.method} ${request.url}`;
114
160
  }
115
- /** Debug a `Response` as a string. */
161
+ /**
162
+ * Convert a `Response` into a one-line debug string.
163
+ * - Shows the status code and status text only (no headers or body).
164
+ *
165
+ * @param response The `Response` to debug.
166
+ * @returns A string in `status statusText` format.
167
+ * @example debugResponse(new Response("hi", { status: 404 })) // "404 Not Found"
168
+ * @see https://dhoulb.github.io/shelving/util/debug/debugResponse
169
+ */
116
170
  export function debugResponse(response) {
117
171
  return `${response.status} ${response.statusText}`;
118
172
  }
119
- /** Debug an array. */
173
+ /**
174
+ * Convert an array into a readable debug string.
175
+ * - Prefixes the constructor name for non-plain arrays.
176
+ * - Expands items down to `depth` levels.
177
+ *
178
+ * @param value The array to debug.
179
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
180
+ * @returns A human-readable string representation of the array.
181
+ * @example debugArray([1, 2]) // `[\n\t1,\n\t2\n]`
182
+ * @see https://dhoulb.github.io/shelving/util/debug/debugArray
183
+ */
120
184
  export function debugArray(value, depth = 1) {
121
185
  const prototype = Object.getPrototypeOf(value);
122
186
  const name = prototype === Array.prototype ? "" : prototype.constructor.name || "";
123
187
  const items = depth > 0 && value.length ? value.map(v => debug(v, depth - 1)).join(",\n\t") : "";
124
188
  return `${name ? `${name} ` : ""}${value.length ? `[\n\t${items}\n]` : "[]"}`;
125
189
  }
126
- /** Debug a set. */
190
+ /**
191
+ * Convert a `Set` into a readable debug string.
192
+ * - Prefixes the constructor name and item count.
193
+ * - Expands items down to `depth` levels.
194
+ *
195
+ * @param value The set to debug.
196
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
197
+ * @returns A human-readable string representation of the set.
198
+ * @example debugSet(new Set([1, 2])) // `(value.size) {\n\t1,\n\t2\n}`
199
+ * @see https://dhoulb.github.io/shelving/util/debug/debugSet
200
+ */
127
201
  export function debugSet(value, depth = 1) {
128
202
  const prototype = Object.getPrototypeOf(value);
129
203
  const name = prototype === Set.prototype ? "" : prototype.constructor.name || "Set";
@@ -134,7 +208,17 @@ export function debugSet(value, depth = 1) {
134
208
  : "";
135
209
  return `${name}(value.size) ${items ? `{\n\t${items}\n}` : "{}"}`;
136
210
  }
137
- /** Debug a map. */
211
+ /**
212
+ * Convert a `Map` into a readable debug string.
213
+ * - Prefixes the constructor name and entry count.
214
+ * - Expands keys and values down to `depth` levels.
215
+ *
216
+ * @param value The map to debug.
217
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
218
+ * @returns A human-readable string representation of the map.
219
+ * @example debugMap(new Map([["a", 1]])) // `(value.size) {\n\t"a": 1\n}`
220
+ * @see https://dhoulb.github.io/shelving/util/debug/debugMap
221
+ */
138
222
  export function debugMap(value, depth = 1) {
139
223
  const prototype = Object.getPrototypeOf(value);
140
224
  const name = prototype === Map.prototype ? "" : prototype.constructor.name || "Map";
@@ -145,7 +229,17 @@ export function debugMap(value, depth = 1) {
145
229
  : "";
146
230
  return `${name}(value.size) ${entries ? `{\n\t${entries}\n}` : "{}"}`;
147
231
  }
148
- /** Debug an object. */
232
+ /**
233
+ * Convert an object into a readable debug string.
234
+ * - Prefixes the constructor name for non-plain objects.
235
+ * - Expands entries down to `depth` levels.
236
+ *
237
+ * @param value The object to debug.
238
+ * @param depth How many levels of nested containers to expand (defaults to `1`).
239
+ * @returns A human-readable string representation of the object.
240
+ * @example debugObject({ a: 1 }) // `{\n\t"a": 1\n}`
241
+ * @see https://dhoulb.github.io/shelving/util/debug/debugObject
242
+ */
149
243
  export function debugObject(value, depth = 1) {
150
244
  const prototype = Object.getPrototypeOf(value);
151
245
  const name = prototype === Object.prototype ? "" : prototype.constructor.name || "";
@@ -156,7 +250,16 @@ export function debugObject(value, depth = 1) {
156
250
  : "";
157
251
  return `${name ? `${name} ` : ""}${entries ? `{\n\t${entries}\n}` : "{}"}`;
158
252
  }
159
- /** If a string is multiline, push it onto the next line and prepend a tab to each line.. */
253
+ /**
254
+ * Indent a string for nested debug output.
255
+ * - Multiline strings are pushed onto a new line with a tab prepended to each line.
256
+ * - Single-line strings are simply prefixed with a space.
257
+ *
258
+ * @param str The string to indent.
259
+ * @returns The indented string.
260
+ * @example indent("a\nb") // `\na\n\tb`
261
+ * @see https://dhoulb.github.io/shelving/util/debug/indent
262
+ */
160
263
  export function indent(str) {
161
264
  const lines = str.split("\n");
162
265
  return lines.length > 1 ? `\n${lines.join("\n\t")}` : ` ${str}`;