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/equal.js CHANGED
@@ -3,37 +3,103 @@ import { isArray } from "./array.js";
3
3
  import { isMap } from "./map.js";
4
4
  import { isObject, isProp } from "./object.js";
5
5
  import { compareAscending } from "./sort.js";
6
- /** Assert two values are equal. */
6
+ /**
7
+ * Assert that two values are exactly (referentially) equal, narrowing `left` to the type of `right`.
8
+ *
9
+ * @param left The value to check and narrow.
10
+ * @param right The value `left` must equal.
11
+ * @param caller Function to attribute a thrown error to (defaults to `assertEqual`).
12
+ * @throws {RequiredError} If the values are not equal.
13
+ * @example assertEqual(1, 1); // passes
14
+ * @see https://dhoulb.github.io/shelving/util/equal/assertEqual
15
+ */
7
16
  export function assertEqual(left, right, caller = assertEqual) {
8
17
  if (left !== right)
9
18
  new RequiredError("Must be equal", { left, right, caller });
10
19
  }
11
- /** Assert two values are equal. */
20
+ /**
21
+ * Assert that two values are not equal, narrowing `left` to exclude the type of `right`.
22
+ *
23
+ * @param left The value to check and narrow.
24
+ * @param right The value `left` must not equal.
25
+ * @param caller Function to attribute a thrown error to (defaults to `assertNot`).
26
+ * @throws {RequiredError} If the values are equal.
27
+ * @example assertNot(1, 2); // passes
28
+ * @see https://dhoulb.github.io/shelving/util/equal/assertNot
29
+ */
12
30
  export function assertNot(left, right, caller = assertNot) {
13
31
  if (left === right)
14
32
  new RequiredError("Must not be equal", { left, right, caller });
15
33
  }
16
- /** Is unknown value `left` exactly equal to `right`? */
34
+ /**
35
+ * Is unknown value `left` exactly (referentially) equal to `right`?
36
+ *
37
+ * @param left The value to check and narrow.
38
+ * @param right The value to compare against.
39
+ * @returns `true` if the values are strictly equal.
40
+ * @example isEqual(1, 1) // true
41
+ * @see https://dhoulb.github.io/shelving/util/equal/isEqual
42
+ */
17
43
  export function isEqual(left, right) {
18
44
  return left === right;
19
45
  }
20
- /** Is unknown value `left` not exactly equal to `right`? */
46
+ /**
47
+ * Is unknown value `left` not exactly (referentially) equal to `right`?
48
+ *
49
+ * @param left The value to check and narrow.
50
+ * @param right The value to compare against.
51
+ * @returns `true` if the values are not strictly equal.
52
+ * @example notEqual(1, 2) // true
53
+ * @see https://dhoulb.github.io/shelving/util/equal/notEqual
54
+ */
21
55
  export function notEqual(left, right) {
22
56
  return left !== right;
23
57
  }
24
- /** Is unknown value `left` less than `right`? */
58
+ /**
59
+ * Is unknown value `left` less than `right` (using `compareAscending`)?
60
+ *
61
+ * @param left The value to compare.
62
+ * @param right The value to compare against.
63
+ * @returns `true` if `left` sorts before `right`.
64
+ * @example isLess(1, 2) // true
65
+ * @see https://dhoulb.github.io/shelving/util/equal/isLess
66
+ */
25
67
  export function isLess(left, right) {
26
68
  return compareAscending(left, right) < 0;
27
69
  }
28
- /** Is unknown value `left` less than or equal to `right`? */
70
+ /**
71
+ * Is unknown value `left` less than or equal to `right` (using `compareAscending`)?
72
+ *
73
+ * @param left The value to compare.
74
+ * @param right The value to compare against.
75
+ * @returns `true` if `left` sorts before or equal to `right`.
76
+ * @example isEqualLess(2, 2) // true
77
+ * @see https://dhoulb.github.io/shelving/util/equal/isEqualLess
78
+ */
29
79
  export function isEqualLess(left, right) {
30
80
  return compareAscending(left, right) <= 0;
31
81
  }
32
- /** Is unknown value `left` greater than `right`? */
82
+ /**
83
+ * Is unknown value `left` greater than `right` (using `compareAscending`)?
84
+ *
85
+ * @param left The value to compare.
86
+ * @param right The value to compare against.
87
+ * @returns `true` if `left` sorts after `right`.
88
+ * @example isGreater(2, 1) // true
89
+ * @see https://dhoulb.github.io/shelving/util/equal/isGreater
90
+ */
33
91
  export function isGreater(left, right) {
34
92
  return compareAscending(left, right) > 0;
35
93
  }
36
- /** Is unknown value `left` greater than or equal to `right`? */
94
+ /**
95
+ * Is unknown value `left` greater than or equal to `right` (using `compareAscending`)?
96
+ *
97
+ * @param left The value to compare.
98
+ * @param right The value to compare against.
99
+ * @returns `true` if `left` sorts after or equal to `right`.
100
+ * @example isEqualGreater(2, 2) // true
101
+ * @see https://dhoulb.github.io/shelving/util/equal/isEqualGreater
102
+ */
37
103
  export function isEqualGreater(left, right) {
38
104
  return compareAscending(left, right) >= 0;
39
105
  }
@@ -53,27 +119,62 @@ function _isEqualRecursively(left, right, recursor) {
53
119
  /**
54
120
  * Are two unknown values shallowly equal?
55
121
  * - If the values are both arrays/objects, see if the items/properties are **shallowly** equal with each other.
122
+ *
123
+ * @param left The value to check and narrow.
124
+ * @param right The value to compare against.
125
+ * @returns `true` if the values are shallowly equal.
126
+ * @example isShallowEqual({ a: 1 }, { a: 1 }) // true
127
+ * @see https://dhoulb.github.io/shelving/util/equal/isShallowEqual
56
128
  */
57
129
  export function isShallowEqual(left, right) {
58
130
  return _isEqualRecursively(left, right, isEqual);
59
131
  }
60
- /** Are two unknown values not shallowly equal? */
132
+ /**
133
+ * Are two unknown values not shallowly equal?
134
+ *
135
+ * @param left The value to check and narrow.
136
+ * @param right The value to compare against.
137
+ * @returns `true` if the values are not shallowly equal.
138
+ * @example notShallowEqual({ a: 1 }, { a: 2 }) // true
139
+ * @see https://dhoulb.github.io/shelving/util/equal/notShallowEqual
140
+ */
61
141
  export function notShallowEqual(left, right) {
62
142
  return !isShallowEqual(left, right);
63
143
  }
64
144
  /**
65
145
  * Are two unknown values deeply equal?
66
146
  * - If the values are both arrays/objects, see if the items/properties are **deeply** equal with each other.
147
+ *
148
+ * @param left The value to check and narrow.
149
+ * @param right The value to compare against.
150
+ * @returns `true` if the values are deeply equal.
151
+ * @example isDeepEqual({ a: { b: 1 } }, { a: { b: 1 } }) // true
152
+ * @see https://dhoulb.github.io/shelving/util/equal/isDeepEqual
67
153
  */
68
154
  export function isDeepEqual(left, right) {
69
155
  return _isEqualRecursively(left, right, isDeepEqual);
70
156
  }
71
- /** Are two unknown values not deeply equal? */
157
+ /**
158
+ * Are two unknown values not deeply equal?
159
+ *
160
+ * @param left The value to check and narrow.
161
+ * @param right The value to compare against.
162
+ * @returns `true` if the values are not deeply equal.
163
+ * @example notDeepEqual({ a: { b: 1 } }, { a: { b: 2 } }) // true
164
+ * @see https://dhoulb.github.io/shelving/util/equal/notDeepEqual
165
+ */
72
166
  export function notDeepEqual(left, right) {
73
167
  return !isShallowEqual(left, right);
74
168
  }
75
169
  /**
76
- * Are two maps equal (based on their items).
170
+ * Are two maps equal based on their items?
171
+ *
172
+ * @param left The map to check and narrow.
173
+ * @param right The map to compare against.
174
+ * @param recursor Function that checks each value of the map (defaults to `isEqual` for strict equality; pass `isDeepEqual` for deep equality).
175
+ * @returns `true` if both maps have the same keys and matching values.
176
+ * @example isMapEqual(new Map([["a", 1]]), new Map([["a", 1]])) // true
177
+ * @see https://dhoulb.github.io/shelving/util/equal/isMapEqual
77
178
  */
78
179
  export function isMapEqual(left, right, recursor = isEqual) {
79
180
  if (left === right)
@@ -93,9 +194,14 @@ export function isMapEqual(left, right, recursor = isEqual) {
93
194
  /**
94
195
  * Are two arrays equal based on their items?
95
196
  *
197
+ * @param left The array to check and narrow.
198
+ * @param right The array to compare against.
96
199
  * @param recursor Function that checks each item of the array.
97
200
  * - Defaults to `isEqual()` to check strict equality of the items.
98
201
  * - Use `isDeepEqual()` as the recursor to check to check deep equality of the items.
202
+ * @returns `true` if both arrays have the same length and matching items.
203
+ * @example isArrayEqual([1, 2], [1, 2]) // true
204
+ * @see https://dhoulb.github.io/shelving/util/equal/isArrayEqual
99
205
  */
100
206
  export function isArrayEqual(left, right, recursor = isEqual) {
101
207
  if (left === right)
@@ -107,19 +213,51 @@ export function isArrayEqual(left, right, recursor = isEqual) {
107
213
  return false;
108
214
  return true;
109
215
  }
110
- /** Is unknown value `left` in array `right`? */
216
+ /**
217
+ * Is unknown value `left` in array `right`?
218
+ *
219
+ * @param left The value to look for and narrow.
220
+ * @param right The array to search within.
221
+ * @returns `true` if `left` is an item of `right`.
222
+ * @example isInArray(2, [1, 2, 3]) // true
223
+ * @see https://dhoulb.github.io/shelving/util/equal/isInArray
224
+ */
111
225
  export function isInArray(left, right) {
112
226
  return right.includes(left);
113
227
  }
114
- /** Is unknown value `left` not in array `right`? */
228
+ /**
229
+ * Is unknown value `left` not in array `right`?
230
+ *
231
+ * @param left The value to look for.
232
+ * @param right The array to search within.
233
+ * @returns `true` if `left` is not an item of `right`.
234
+ * @example notInArray(9, [1, 2, 3]) // true
235
+ * @see https://dhoulb.github.io/shelving/util/equal/notInArray
236
+ */
115
237
  export function notInArray(left, right) {
116
238
  return !isInArray(left, right);
117
239
  }
118
- /** Is unknown value `left` an array including `right`? */
240
+ /**
241
+ * Is unknown value `left` an array that includes `right`?
242
+ *
243
+ * @param left The value to check and narrow.
244
+ * @param right The item the array must include.
245
+ * @returns `true` if `left` is an array containing `right`.
246
+ * @example isArrayWith([1, 2, 3], 2) // true
247
+ * @see https://dhoulb.github.io/shelving/util/equal/isArrayWith
248
+ */
119
249
  export function isArrayWith(left, right) {
120
250
  return isArray(left) && left.includes(right);
121
251
  }
122
- /** Is unknown value `left` not an array or does not include `right`? */
252
+ /**
253
+ * Is unknown value `left` not an array, or an array that does not include `right`?
254
+ *
255
+ * @param left The value to check.
256
+ * @param right The item the array must include.
257
+ * @returns `true` if `left` is not an array or does not include `right`.
258
+ * @example notArrayWith([1, 2, 3], 9) // true
259
+ * @see https://dhoulb.github.io/shelving/util/equal/notArrayWith
260
+ */
123
261
  export function notArrayWith(left, right) {
124
262
  return !isArrayWith(left, right);
125
263
  }
@@ -128,9 +266,14 @@ export function notArrayWith(left, right) {
128
266
  * - `left` must have every property present in `right`
129
267
  * - `left` must not have excess properties not present in `right`
130
268
  *
269
+ * @param left The object to check and narrow.
270
+ * @param right The object to compare against.
131
271
  * @param recursor Function that checks each prop of the object.
132
272
  * - Defaults to `isEqual()` to check strict equality of the properties.
133
273
  * - Use `isDeepEqual()` as the recursor to check to check deep equality of the properties.
274
+ * @returns `true` if both objects have exactly the same own props and matching values.
275
+ * @example isObjectEqual({ a: 1 }, { a: 1 }) // true
276
+ * @see https://dhoulb.github.io/shelving/util/equal/isObjectEqual
134
277
  */
135
278
  export function isObjectEqual(left, right, recursor = isEqual) {
136
279
  if (left === right)
@@ -149,9 +292,14 @@ export function isObjectEqual(left, right, recursor = isEqual) {
149
292
  * - `left` must have every property present in `right`
150
293
  * - `left` may have have excess properties not present in `right`
151
294
  *
295
+ * @param left The object to check and narrow.
296
+ * @param right The object whose props `left` must contain.
152
297
  * @param recursor Function that checks each prop of the object.
153
298
  * - Defaults to `isEqual()` to check strict equality of the properties.
154
299
  * - Use `isDeepEqual()` as the recursor to check to check deep equality of the properties.
300
+ * @returns `true` if `left` contains every prop of `right` with matching values.
301
+ * @example isObjectMatch({ a: 1, b: 2 }, { a: 1 }) // true
302
+ * @see https://dhoulb.github.io/shelving/util/equal/isObjectMatch
155
303
  */
156
304
  export function isObjectMatch(left, right, recursor = isEqual) {
157
305
  if (left === right)
@@ -162,11 +310,27 @@ export function isObjectMatch(left, right, recursor = isEqual) {
162
310
  return false;
163
311
  return true;
164
312
  }
165
- /** Is unknown value `left` an object with every prop from `right`? */
313
+ /**
314
+ * Is unknown value `left` an object with every prop from `right`?
315
+ *
316
+ * @param left The value to check.
317
+ * @param right The object whose props `left` must contain.
318
+ * @returns `true` if `left` is an object containing every prop of `right`.
319
+ * @example isObjectWith({ a: 1, b: 2 }, { a: 1 }) // true
320
+ * @see https://dhoulb.github.io/shelving/util/equal/isObjectWith
321
+ */
166
322
  export function isObjectWith(left, right) {
167
323
  return isObject(left) && isObjectMatch(left, right);
168
324
  }
169
- /** Is unknown value `left` not an object or missing one or more props from `right`? */
325
+ /**
326
+ * Is unknown value `left` not an object or missing one or more props from `right`?
327
+ *
328
+ * @param left The value to check.
329
+ * @param right The object whose props `left` must contain.
330
+ * @returns `true` if `left` is not an object or is missing one or more props of `right`.
331
+ * @example notObjectWith({ a: 1 }, { b: 2 }) // true
332
+ * @see https://dhoulb.github.io/shelving/util/equal/notObjectWith
333
+ */
170
334
  export function notObjectWith(left, right) {
171
335
  return !isObjectWith(left, right);
172
336
  }
package/util/error.d.ts CHANGED
@@ -1,24 +1,65 @@
1
1
  import type { ImmutableDictionary } from "./dictionary.js";
2
2
  import type { AnyCaller } from "./function.js";
3
- /** Log an error to the console. */
3
+ /**
4
+ * Log an error to the console.
5
+ *
6
+ * @param reason The error (or any thrown value) to log.
7
+ * @returns Nothing.
8
+ * @example logError(new Error("Boom")) // logs to console.error
9
+ * @see https://dhoulb.github.io/shelving/util/error/logError
10
+ */
4
11
  export declare function logError(reason: unknown): void;
5
- /** Is an unknown value an `Error` instance? */
12
+ /**
13
+ * Is an unknown value an `Error` instance?
14
+ * - Uses the native `Error.isError()` if available, otherwise falls back to `instanceof Error`.
15
+ *
16
+ * @param v The value to check and narrow.
17
+ * @returns `true` if `v` is an `Error` (narrowing it, with an optional `code` string).
18
+ * @see https://dhoulb.github.io/shelving/util/error/isError
19
+ */
6
20
  export declare function isError(v: unknown): v is Error & {
7
21
  readonly code?: string | undefined;
8
22
  };
9
- /** Things that can be a message. */
23
+ /**
24
+ * Things that can be a message: a string, or an object with a `message` string property.
25
+ *
26
+ * @see https://dhoulb.github.io/shelving/util/error/PossibleMessage
27
+ */
10
28
  export type PossibleMessage = {
11
29
  message: string;
12
30
  } | string;
13
- /** Return the string message from an unknown value, or return `undefined` if it could not be found. */
31
+ /**
32
+ * Return the string message from an unknown value, or return `undefined` if it could not be found.
33
+ *
34
+ * @param input The value to read a message from (a string, or an object with a `message` string).
35
+ * @returns The message string, or `undefined` if none could be found.
36
+ * @example getMessage(new Error("Boom")) // "Boom"
37
+ * @example getMessage(123) // undefined
38
+ * @see https://dhoulb.github.io/shelving/util/error/getMessage
39
+ */
14
40
  export declare function getMessage(input: unknown): string | undefined;
15
- /** Require a message from an unknown value, or throw `RequiredError` if it could not be found. */
41
+ /**
42
+ * Require a message from an unknown value, or throw `RequiredError` if it could not be found.
43
+ *
44
+ * @param input The value to read a message from (a string, or an object with a `message` string).
45
+ * @param caller Function to attribute a thrown error to (defaults to `requireMessage`).
46
+ * @returns The message string.
47
+ * @throws `RequiredError` if no message could be found.
48
+ * @example requireMessage(new Error("Boom")) // "Boom"
49
+ * @see https://dhoulb.github.io/shelving/util/error/requireMessage
50
+ */
16
51
  export declare function requireMessage(input: PossibleMessage, caller?: AnyCaller): string;
17
52
  /**
18
53
  * Split a string message into lines, look for prefixes like `name:`, and return a dictionary of those named messages.
19
54
  * - Full messages strings can have multiple lines separated by `\n` newline.
20
55
  * - Named messages are extracted into their own entries in the dictionary.
21
56
  * - Unnamed messages are combined into a single entry with the key `""` (empty string).
57
+ *
58
+ * @param input The value to read a message from (a string, or an object with a `message` string).
59
+ * @returns Dictionary mapping each name (or `""` for unnamed lines) to its combined message.
60
+ * @throws `RequiredError` if no message could be found.
61
+ * @example splitMessage("name: Bad\nUh oh") // { name: "Bad", "": "Uh oh" }
62
+ * @see https://dhoulb.github.io/shelving/util/error/splitMessage
22
63
  */
23
64
  export declare function splitMessage(input: PossibleMessage): ImmutableDictionary<string>;
24
65
  /**
@@ -26,10 +67,21 @@ export declare function splitMessage(input: PossibleMessage): ImmutableDictionar
26
67
  * - The `""` (empty string) key is emitted as unnamed lines.
27
68
  * - Named messages are emitted as `name: message`, one line per message line.
28
69
  * - Empty lines are skipped and each emitted line is trimmed to match `splitMessage()` semantics.
70
+ *
71
+ * @param input Dictionary mapping each name (or `""` for unnamed lines) to its message.
72
+ * @returns The combined message string, with one line per message line.
73
+ * @example joinMessage({ name: "Bad", "": "Uh oh" }) // "name: Bad\nUh oh"
74
+ * @see https://dhoulb.github.io/shelving/util/error/joinMessage
29
75
  */
30
76
  export declare function joinMessage(input: ImmutableDictionary<string>): string;
31
77
  /**
32
78
  * Name a message by applying a `name: ` prefix to it.
33
79
  * - Assumes each line in the message is a separate error, so each line has the same prefix applied.
80
+ *
81
+ * @param name The name to prefix each line of the message with.
82
+ * @param message The message to prefix (may contain multiple `\n`-separated lines).
83
+ * @returns The message with `name: ` prefixed to every line.
84
+ * @example getNamedMessage("email", "Required\nInvalid") // "email: Required\nemail: Invalid"
85
+ * @see https://dhoulb.github.io/shelving/util/error/getNamedMessage
34
86
  */
35
87
  export declare function getNamedMessage(name: string | number, message: string): string;
package/util/error.js CHANGED
@@ -1,18 +1,49 @@
1
1
  import { RequiredError } from "../error/RequiredError.js";
2
2
  import { isObject } from "./object.js";
3
- /** Log an error to the console. */
3
+ /**
4
+ * Log an error to the console.
5
+ *
6
+ * @param reason The error (or any thrown value) to log.
7
+ * @returns Nothing.
8
+ * @example logError(new Error("Boom")) // logs to console.error
9
+ * @see https://dhoulb.github.io/shelving/util/error/logError
10
+ */
4
11
  export function logError(reason) {
5
12
  console.error(reason);
6
13
  }
7
- /** Is an unknown value an `Error` instance? */
14
+ /**
15
+ * Is an unknown value an `Error` instance?
16
+ * - Uses the native `Error.isError()` if available, otherwise falls back to `instanceof Error`.
17
+ *
18
+ * @param v The value to check and narrow.
19
+ * @returns `true` if `v` is an `Error` (narrowing it, with an optional `code` string).
20
+ * @see https://dhoulb.github.io/shelving/util/error/isError
21
+ */
8
22
  export function isError(v) {
9
23
  return typeof Error.isError === "function" ? Error.isError(v) : v instanceof Error;
10
24
  }
11
- /** Return the string message from an unknown value, or return `undefined` if it could not be found. */
25
+ /**
26
+ * Return the string message from an unknown value, or return `undefined` if it could not be found.
27
+ *
28
+ * @param input The value to read a message from (a string, or an object with a `message` string).
29
+ * @returns The message string, or `undefined` if none could be found.
30
+ * @example getMessage(new Error("Boom")) // "Boom"
31
+ * @example getMessage(123) // undefined
32
+ * @see https://dhoulb.github.io/shelving/util/error/getMessage
33
+ */
12
34
  export function getMessage(input) {
13
35
  return typeof input === "string" ? input : isObject(input) && typeof input.message === "string" ? input.message : undefined;
14
36
  }
15
- /** Require a message from an unknown value, or throw `RequiredError` if it could not be found. */
37
+ /**
38
+ * Require a message from an unknown value, or throw `RequiredError` if it could not be found.
39
+ *
40
+ * @param input The value to read a message from (a string, or an object with a `message` string).
41
+ * @param caller Function to attribute a thrown error to (defaults to `requireMessage`).
42
+ * @returns The message string.
43
+ * @throws `RequiredError` if no message could be found.
44
+ * @example requireMessage(new Error("Boom")) // "Boom"
45
+ * @see https://dhoulb.github.io/shelving/util/error/requireMessage
46
+ */
16
47
  export function requireMessage(input, caller = requireMessage) {
17
48
  const message = getMessage(input);
18
49
  if (message === undefined)
@@ -24,6 +55,12 @@ export function requireMessage(input, caller = requireMessage) {
24
55
  * - Full messages strings can have multiple lines separated by `\n` newline.
25
56
  * - Named messages are extracted into their own entries in the dictionary.
26
57
  * - Unnamed messages are combined into a single entry with the key `""` (empty string).
58
+ *
59
+ * @param input The value to read a message from (a string, or an object with a `message` string).
60
+ * @returns Dictionary mapping each name (or `""` for unnamed lines) to its combined message.
61
+ * @throws `RequiredError` if no message could be found.
62
+ * @example splitMessage("name: Bad\nUh oh") // { name: "Bad", "": "Uh oh" }
63
+ * @see https://dhoulb.github.io/shelving/util/error/splitMessage
27
64
  */
28
65
  export function splitMessage(input) {
29
66
  const messages = requireMessage(input, splitMessage).split("\n");
@@ -57,6 +94,11 @@ export function splitMessage(input) {
57
94
  * - The `""` (empty string) key is emitted as unnamed lines.
58
95
  * - Named messages are emitted as `name: message`, one line per message line.
59
96
  * - Empty lines are skipped and each emitted line is trimmed to match `splitMessage()` semantics.
97
+ *
98
+ * @param input Dictionary mapping each name (or `""` for unnamed lines) to its message.
99
+ * @returns The combined message string, with one line per message line.
100
+ * @example joinMessage({ name: "Bad", "": "Uh oh" }) // "name: Bad\nUh oh"
101
+ * @see https://dhoulb.github.io/shelving/util/error/joinMessage
60
102
  */
61
103
  export function joinMessage(input) {
62
104
  const output = [];
@@ -73,6 +115,12 @@ export function joinMessage(input) {
73
115
  /**
74
116
  * Name a message by applying a `name: ` prefix to it.
75
117
  * - Assumes each line in the message is a separate error, so each line has the same prefix applied.
118
+ *
119
+ * @param name The name to prefix each line of the message with.
120
+ * @param message The message to prefix (may contain multiple `\n`-separated lines).
121
+ * @returns The message with `name: ` prefixed to every line.
122
+ * @example getNamedMessage("email", "Required\nInvalid") // "email: Required\nemail: Invalid"
123
+ * @see https://dhoulb.github.io/shelving/util/error/getNamedMessage
76
124
  */
77
125
  export function getNamedMessage(name, message) {
78
126
  return `${name}: ${message.split("\n").join(`\n${name}: `)}`;
package/util/file.d.ts CHANGED
@@ -1,6 +1,10 @@
1
1
  import type { AnyCaller } from "./function.js";
2
2
  import type { Nullish } from "./null.js";
3
- /** List of file types in `extension: mime` format. */
3
+ /**
4
+ * List of file types in `extension: mime` format.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/util/file/FileTypes
7
+ */
4
8
  export type FileTypes = {
5
9
  [extension: string]: string;
6
10
  };
@@ -9,13 +13,32 @@ export type FileTypes = {
9
13
  * - Extension with no leading dot, e.g. `"ts"`.
10
14
  * - Returns `undefined` for either part if the filename has no dot or starts with a dot only.
11
15
  *
12
- * @example `splitFileExtension("array.ts")` returns `["array", ".ts"]`
13
- * @example `splitFileExtension("no-ext")` returns `["no-ext", undefined]`
14
- * @example `splitFileExtension(".gitignore")` returns `[undefined, "gitignore"]`
15
- * @example `splitFileExtension(undefined)` returns `[undefined, undefined]`
16
+ * @param file The filename to split, or a nullish value (defaults to `""`).
17
+ * @returns A `[base, extension]` tuple, with `undefined` for either part that is absent.
18
+ * @example splitFileExtension("array.ts") // ["array", "ts"]
19
+ * @example splitFileExtension("no-ext") // ["no-ext", undefined]
20
+ * @example splitFileExtension(".gitignore") // [undefined, "gitignore"]
21
+ * @example splitFileExtension(undefined) // [undefined, undefined]
22
+ * @see https://dhoulb.github.io/shelving/util/file/splitFileExtension
16
23
  */
17
24
  export declare function splitFileExtension(file?: Nullish<string>): [base: string | undefined, extension: string | undefined];
18
- /** Get the file extension from a file path, e.g. `"md"`, or return `undefined` if the input has no extension. */
25
+ /**
26
+ * Get the file extension from a file path, e.g. `"md"`, or return `undefined` if the input has no extension.
27
+ *
28
+ * @param file The filename to read the extension from, or a nullish value.
29
+ * @returns The extension (no leading dot), or `undefined` if the input has no extension.
30
+ * @example getFileExtension("readme.md") // "md"
31
+ * @see https://dhoulb.github.io/shelving/util/file/getFileExtension
32
+ */
19
33
  export declare function getFileExtension(file: Nullish<string>): string | undefined;
20
- /** Get the file extension from a file path e.g. `"tsx"`, or throw `RequiredError` if the input has no extension. */
34
+ /**
35
+ * Get the file extension from a file path e.g. `"tsx"`, or throw `RequiredError` if the input has no extension.
36
+ *
37
+ * @param file The filename to read the extension from.
38
+ * @param caller Function to attribute a thrown error to (defaults to `requireFileExtension`).
39
+ * @returns The extension (no leading dot).
40
+ * @throws `RequiredError` if the input has no extension.
41
+ * @example requireFileExtension("component.tsx") // "tsx"
42
+ * @see https://dhoulb.github.io/shelving/util/file/requireFileExtension
43
+ */
21
44
  export declare function requireFileExtension(file: string, caller?: AnyCaller): string;
package/util/file.js CHANGED
@@ -4,10 +4,13 @@ import { RequiredError } from "../error/RequiredError.js";
4
4
  * - Extension with no leading dot, e.g. `"ts"`.
5
5
  * - Returns `undefined` for either part if the filename has no dot or starts with a dot only.
6
6
  *
7
- * @example `splitFileExtension("array.ts")` returns `["array", ".ts"]`
8
- * @example `splitFileExtension("no-ext")` returns `["no-ext", undefined]`
9
- * @example `splitFileExtension(".gitignore")` returns `[undefined, "gitignore"]`
10
- * @example `splitFileExtension(undefined)` returns `[undefined, undefined]`
7
+ * @param file The filename to split, or a nullish value (defaults to `""`).
8
+ * @returns A `[base, extension]` tuple, with `undefined` for either part that is absent.
9
+ * @example splitFileExtension("array.ts") // ["array", "ts"]
10
+ * @example splitFileExtension("no-ext") // ["no-ext", undefined]
11
+ * @example splitFileExtension(".gitignore") // [undefined, "gitignore"]
12
+ * @example splitFileExtension(undefined) // [undefined, undefined]
13
+ * @see https://dhoulb.github.io/shelving/util/file/splitFileExtension
11
14
  */
12
15
  export function splitFileExtension(file = "") {
13
16
  if (!file)
@@ -17,11 +20,27 @@ export function splitFileExtension(file = "") {
17
20
  return [file, undefined];
18
21
  return [file.slice(0, i) || undefined, file.slice(i + 1) || undefined];
19
22
  }
20
- /** Get the file extension from a file path, e.g. `"md"`, or return `undefined` if the input has no extension. */
23
+ /**
24
+ * Get the file extension from a file path, e.g. `"md"`, or return `undefined` if the input has no extension.
25
+ *
26
+ * @param file The filename to read the extension from, or a nullish value.
27
+ * @returns The extension (no leading dot), or `undefined` if the input has no extension.
28
+ * @example getFileExtension("readme.md") // "md"
29
+ * @see https://dhoulb.github.io/shelving/util/file/getFileExtension
30
+ */
21
31
  export function getFileExtension(file) {
22
32
  return splitFileExtension(file)[1];
23
33
  }
24
- /** Get the file extension from a file path e.g. `"tsx"`, or throw `RequiredError` if the input has no extension. */
34
+ /**
35
+ * Get the file extension from a file path e.g. `"tsx"`, or throw `RequiredError` if the input has no extension.
36
+ *
37
+ * @param file The filename to read the extension from.
38
+ * @param caller Function to attribute a thrown error to (defaults to `requireFileExtension`).
39
+ * @returns The extension (no leading dot).
40
+ * @throws `RequiredError` if the input has no extension.
41
+ * @example requireFileExtension("component.tsx") // "tsx"
42
+ * @see https://dhoulb.github.io/shelving/util/file/requireFileExtension
43
+ */
25
44
  export function requireFileExtension(file, caller = requireFileExtension) {
26
45
  const extension = getFileExtension(file);
27
46
  if (!extension)
package/util/filter.d.ts CHANGED
@@ -1,10 +1,42 @@
1
1
  import type { ImmutableArray } from "./array.js";
2
2
  import type { Arguments } from "./function.js";
3
- /** Function that can match an item against a target. */
3
+ /**
4
+ * Function that can match an item against a target.
5
+ *
6
+ * @see https://dhoulb.github.io/shelving/util/filter/Match
7
+ */
4
8
  export type Match<A extends Arguments = unknown[]> = (...args: A) => boolean;
5
- /** Filter an iterable set of items using a matcher. */
9
+ /**
10
+ * Filter an iterable set of items using a matcher.
11
+ *
12
+ * @param items Iterable of items to filter.
13
+ * @param match Matcher called with each item (plus any extra `args`); items it returns `true` for are kept.
14
+ * @param args Extra arguments passed to `match` after each item.
15
+ * @returns Iterable yielding only the items the matcher returned `true` for.
16
+ * @example Array.from(filterItems([1, 2, 3], n => n > 1)) // [2, 3]
17
+ * @see https://dhoulb.github.io/shelving/util/filter/filterItems
18
+ */
6
19
  export declare function filterItems<T, A extends Arguments = []>(items: Iterable<T>, match: Match<[T, ...A]>, ...args: A): Iterable<T>;
7
- /** Filter an array (immutably) using a matcher. */
20
+ /**
21
+ * Filter an array (immutably) using a matcher.
22
+ * - Returns the exact same array instance if no items were removed (for referential stability).
23
+ *
24
+ * @param input Array of items to filter.
25
+ * @param match Matcher called with each item (plus any extra `args`); items it returns `true` for are kept.
26
+ * @param args Extra arguments passed to `match` after each item.
27
+ * @returns A filtered array, or the same `input` instance if nothing was removed.
28
+ * @example filterArray([1, 2, 3], n => n > 1) // [2, 3]
29
+ * @see https://dhoulb.github.io/shelving/util/filter/filterArray
30
+ */
8
31
  export declare function filterArray<T, A extends Arguments = []>(input: ImmutableArray<T>, match: Match<[T, ...A]>, ...args: A): ImmutableArray<T>;
9
- /** Filter a sequence of values using a matcher. */
32
+ /**
33
+ * Filter a sequence of values using a matcher.
34
+ *
35
+ * @param sequence Async iterable of items to filter.
36
+ * @param match Matcher called with each item (plus any extra `args`); items it returns `true` for are kept.
37
+ * @param args Extra arguments passed to `match` after each item.
38
+ * @returns Async iterable yielding only the items the matcher returned `true` for.
39
+ * @example for await (const n of filterSequence(stream, n => n > 1)) { ... }
40
+ * @see https://dhoulb.github.io/shelving/util/filter/filterSequence
41
+ */
10
42
  export declare function filterSequence<T, A extends Arguments = []>(sequence: AsyncIterable<T>, match: Match, ...args: A): AsyncIterable<T>;