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/path.d.ts CHANGED
@@ -3,17 +3,47 @@
3
3
  */
4
4
  import type { AnyCaller } from "./function.js";
5
5
  import type { Nullish } from "./null.js";
6
- /** Absolute path string starts with `/` slash. */
6
+ /**
7
+ * Absolute path string starting with a `/` slash.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/util/path/AbsolutePath
10
+ */
7
11
  export type AbsolutePath = `/` | `/${string}`;
8
- /** Relative path string is `.` dot, or starts with `./` dot slash. */
12
+ /**
13
+ * Relative path string that is `.` dot, or starts with `./` dot slash.
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/util/path/RelativePath
16
+ */
9
17
  export type RelativePath = `.` | `./` | `./${string}`;
10
- /** Either an absolute or relative path. */
18
+ /**
19
+ * Either an absolute or relative path.
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/util/path/Path
22
+ */
11
23
  export type Path = AbsolutePath | RelativePath;
12
- /** Things that can be converted to a path. */
24
+ /**
25
+ * Things that can be converted to a path.
26
+ *
27
+ * @see https://dhoulb.github.io/shelving/util/path/PossiblePath
28
+ */
13
29
  export type PossiblePath = string | readonly string[];
14
- /** Is a string path an absolute path? */
30
+ /**
31
+ * Is a string path an absolute path?
32
+ *
33
+ * @param path The path to test.
34
+ * @returns `true` if `path` is an `AbsolutePath` starting with `/`, narrowing its type.
35
+ * @example isAbsolutePath("/a/b") // true
36
+ * @see https://dhoulb.github.io/shelving/util/path/isAbsolutePath
37
+ */
15
38
  export declare function isAbsolutePath(path: PossiblePath): path is AbsolutePath;
16
- /** Is a string path an relative path? */
39
+ /**
40
+ * Is a string path a relative path?
41
+ *
42
+ * @param path The path to test.
43
+ * @returns `true` if `path` is a `RelativePath` (`.` or starting with `./`), narrowing its type.
44
+ * @example isRelativePath("./a") // true
45
+ * @see https://dhoulb.github.io/shelving/util/path/isRelativePath
46
+ */
17
47
  export declare function isRelativePath(path: PossiblePath): path is RelativePath;
18
48
  /**
19
49
  * Resolve a relative or absolute path and return the absolute path, or `undefined` if not a valid path.
@@ -21,17 +51,24 @@ export declare function isRelativePath(path: PossiblePath): path is RelativePath
21
51
  * - Normalises `\` windows paths.
22
52
  * - Strips trailing slashes.
23
53
  *
24
- * @param path Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
25
- * @param base Absolute path used for resolving relative paths in `possible`
26
- * @return Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`
54
+ * @param inputPath Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
55
+ * @param inputBase Absolute path used for resolving relative paths in `inputPath`.
56
+ * @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`, or `undefined` if `inputPath` is not a valid path.
57
+ * @example getPath("./a", "/b") // "/b/a"
58
+ * @see https://dhoulb.github.io/shelving/util/path/getPath
27
59
  */
28
60
  export declare function getPath(inputPath: Nullish<PossiblePath>, inputBase?: AbsolutePath): AbsolutePath | undefined;
29
61
  /**
30
- * Normalise a path:
62
+ * Normalise a path.
31
63
  * - Runs of `/` and `\` collapsed to a single `/`.
32
64
  * - `.` "current-directory" segments dropped (so `./a/b` → `a/b`, `a/./b` → `a/b`, `.` → `""`).
33
65
  * - Trailing slashes stripped.
34
66
  * - The root `"/"` is preserved as-is.
67
+ *
68
+ * @param path The path to normalise.
69
+ * @returns The normalised path, preserving the absolute/relative type of `path`.
70
+ * @example cleanPath("/a//b/") // "/a/b"
71
+ * @see https://dhoulb.github.io/shelving/util/path/cleanPath
35
72
  */
36
73
  export declare function cleanPath(path: AbsolutePath): AbsolutePath;
37
74
  export declare function cleanPath(path: string): string;
@@ -41,26 +78,65 @@ export declare function cleanPath(path: string): string;
41
78
  * - Returned paths are cleaned with `cleanPath()` so runs of slashes and trailing slashes are removed.
42
79
  *
43
80
  * @param path Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
44
- * @param base Absolute path used for resolving relative paths in `possible`
45
- * @return Absolute path with a leading trailing slash, e.g. `/a/c/b`
81
+ * @param base Absolute path used for resolving relative paths in `path`.
82
+ * @param caller Function to attribute a thrown error to (defaults to `requirePath` itself).
83
+ * @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`.
84
+ * @throws {RequiredError} If `path` is not a valid path.
85
+ * @example requirePath("./a", "/b") // "/b/a"
86
+ * @see https://dhoulb.github.io/shelving/util/path/requirePath
46
87
  */
47
88
  export declare function requirePath(path: PossiblePath, base?: AbsolutePath, caller?: AnyCaller): AbsolutePath;
48
89
  /**
49
90
  * Match and strip a base path prefix from a path using segment-aware pathname rules.
50
91
  * - Both inputs must be absolute paths that begin with `/`.
51
92
  * - Returns `/` when the paths are an exact match.
93
+ *
94
+ * @param target Path to match against `base` — relative paths resolve against `base`.
95
+ * @param base Base path whose prefix is stripped from `target`.
96
+ * @param caller Function to attribute a thrown error to (defaults to `matchPathPrefix` itself).
97
+ * @returns The remaining absolute path after stripping `base`, `/` for an exact match, or `undefined` if `target` is not under `base`.
98
+ * @throws {RequiredError} If `target` or `base` is not a valid path.
99
+ * @example matchPathPrefix("/a/b", "/a") // "/b"
100
+ * @see https://dhoulb.github.io/shelving/util/path/matchPathPrefix
52
101
  */
53
102
  export declare function matchPathPrefix(target: PossiblePath, base: PossiblePath, caller?: AnyCaller): AbsolutePath | undefined;
54
- /** Is a target path active? */
103
+ /**
104
+ * Is a target path active relative to the current path?
105
+ * - Active means `target` and `current` are exactly the same path.
106
+ *
107
+ * @param target Path whose status to test.
108
+ * @param current Current path to test against.
109
+ * @returns `true` if `target` is exactly `current`.
110
+ * @example isPathActive("/a", "/a") // true
111
+ * @see https://dhoulb.github.io/shelving/util/path/isPathActive
112
+ */
55
113
  export declare function isPathActive(target: AbsolutePath, current: AbsolutePath): boolean;
56
- /** Is a target path proud (i.e. is the current path, or is a child of the current path)? */
114
+ /**
115
+ * Is a target path proud relative to the current path?
116
+ * - Proud means `target` is the current path, or is an ancestor of the current path.
117
+ *
118
+ * @param target Path whose status to test.
119
+ * @param current Current path to test against.
120
+ * @returns `true` if `current` is `target` or a descendant of `target`.
121
+ * @example isPathProud("/a", "/a/b") // true
122
+ * @see https://dhoulb.github.io/shelving/util/path/isPathProud
123
+ */
57
124
  export declare function isPathProud(target: AbsolutePath, current: AbsolutePath): boolean;
58
125
  /**
59
126
  * Get the "segments" in an absolute path.
60
127
  * - `splitPath("/")` returns `[]` — the root has no segments.
128
+ *
129
+ * @param path Path to split (an array of segments is returned as-is).
130
+ * @returns Array of path segments.
131
+ * @example splitPath("/a/b") // ["a", "b"]
132
+ * @see https://dhoulb.github.io/shelving/util/path/splitPath
61
133
  */
62
134
  export declare function splitPath(path: PossiblePath): readonly string[];
63
- /** A single argument accepted by `joinPath()` — either a string (full path or single segment) or an array of segments. */
135
+ /**
136
+ * A single argument accepted by `joinPath()` — either a string (full path or single segment) or an array of segments.
137
+ *
138
+ * @see https://dhoulb.github.io/shelving/util/path/PathPart
139
+ */
64
140
  export type PathPart = string | readonly string[];
65
141
  /**
66
142
  * Join one or more path parts into a single path string.
package/util/path.js CHANGED
@@ -3,11 +3,25 @@
3
3
  */
4
4
  import { RequiredError } from "../error/RequiredError.js";
5
5
  import { isNullish, splitString } from "./index.js";
6
- /** Is a string path an absolute path? */
6
+ /**
7
+ * Is a string path an absolute path?
8
+ *
9
+ * @param path The path to test.
10
+ * @returns `true` if `path` is an `AbsolutePath` starting with `/`, narrowing its type.
11
+ * @example isAbsolutePath("/a/b") // true
12
+ * @see https://dhoulb.github.io/shelving/util/path/isAbsolutePath
13
+ */
7
14
  export function isAbsolutePath(path) {
8
15
  return typeof path === "string" && path.startsWith("/");
9
16
  }
10
- /** Is a string path an relative path? */
17
+ /**
18
+ * Is a string path a relative path?
19
+ *
20
+ * @param path The path to test.
21
+ * @returns `true` if `path` is a `RelativePath` (`.` or starting with `./`), narrowing its type.
22
+ * @example isRelativePath("./a") // true
23
+ * @see https://dhoulb.github.io/shelving/util/path/isRelativePath
24
+ */
11
25
  export function isRelativePath(path) {
12
26
  return typeof path === "string" && (path === "." || path.startsWith("./"));
13
27
  }
@@ -17,9 +31,11 @@ export function isRelativePath(path) {
17
31
  * - Normalises `\` windows paths.
18
32
  * - Strips trailing slashes.
19
33
  *
20
- * @param path Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
21
- * @param base Absolute path used for resolving relative paths in `possible`
22
- * @return Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`
34
+ * @param inputPath Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
35
+ * @param inputBase Absolute path used for resolving relative paths in `inputPath`.
36
+ * @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`, or `undefined` if `inputPath` is not a valid path.
37
+ * @example getPath("./a", "/b") // "/b/a"
38
+ * @see https://dhoulb.github.io/shelving/util/path/getPath
23
39
  */
24
40
  export function getPath(inputPath, inputBase = "/") {
25
41
  if (isNullish(inputPath))
@@ -38,8 +54,12 @@ export function cleanPath(path) {
38
54
  * - Returned paths are cleaned with `cleanPath()` so runs of slashes and trailing slashes are removed.
39
55
  *
40
56
  * @param path Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
41
- * @param base Absolute path used for resolving relative paths in `possible`
42
- * @return Absolute path with a leading trailing slash, e.g. `/a/c/b`
57
+ * @param base Absolute path used for resolving relative paths in `path`.
58
+ * @param caller Function to attribute a thrown error to (defaults to `requirePath` itself).
59
+ * @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`.
60
+ * @throws {RequiredError} If `path` is not a valid path.
61
+ * @example requirePath("./a", "/b") // "/b/a"
62
+ * @see https://dhoulb.github.io/shelving/util/path/requirePath
43
63
  */
44
64
  export function requirePath(path, base, caller = requirePath) {
45
65
  const output = getPath(path, base);
@@ -51,6 +71,14 @@ export function requirePath(path, base, caller = requirePath) {
51
71
  * Match and strip a base path prefix from a path using segment-aware pathname rules.
52
72
  * - Both inputs must be absolute paths that begin with `/`.
53
73
  * - Returns `/` when the paths are an exact match.
74
+ *
75
+ * @param target Path to match against `base` — relative paths resolve against `base`.
76
+ * @param base Base path whose prefix is stripped from `target`.
77
+ * @param caller Function to attribute a thrown error to (defaults to `matchPathPrefix` itself).
78
+ * @returns The remaining absolute path after stripping `base`, `/` for an exact match, or `undefined` if `target` is not under `base`.
79
+ * @throws {RequiredError} If `target` or `base` is not a valid path.
80
+ * @example matchPathPrefix("/a/b", "/a") // "/b"
81
+ * @see https://dhoulb.github.io/shelving/util/path/matchPathPrefix
54
82
  */
55
83
  export function matchPathPrefix(target, base, caller = matchPathPrefix) {
56
84
  const basePath = requirePath(base, undefined, caller);
@@ -62,17 +90,40 @@ export function matchPathPrefix(target, base, caller = matchPathPrefix) {
62
90
  if (targetPath.startsWith(`${basePath}/`))
63
91
  return targetPath.slice(basePath.length);
64
92
  }
65
- /** Is a target path active? */
93
+ /**
94
+ * Is a target path active relative to the current path?
95
+ * - Active means `target` and `current` are exactly the same path.
96
+ *
97
+ * @param target Path whose status to test.
98
+ * @param current Current path to test against.
99
+ * @returns `true` if `target` is exactly `current`.
100
+ * @example isPathActive("/a", "/a") // true
101
+ * @see https://dhoulb.github.io/shelving/util/path/isPathActive
102
+ */
66
103
  export function isPathActive(target, current) {
67
104
  return target === current;
68
105
  }
69
- /** Is a target path proud (i.e. is the current path, or is a child of the current path)? */
106
+ /**
107
+ * Is a target path proud relative to the current path?
108
+ * - Proud means `target` is the current path, or is an ancestor of the current path.
109
+ *
110
+ * @param target Path whose status to test.
111
+ * @param current Current path to test against.
112
+ * @returns `true` if `current` is `target` or a descendant of `target`.
113
+ * @example isPathProud("/a", "/a/b") // true
114
+ * @see https://dhoulb.github.io/shelving/util/path/isPathProud
115
+ */
70
116
  export function isPathProud(target, current) {
71
117
  return target === current || (target !== "/" && target.startsWith(`${current}/`));
72
118
  }
73
119
  /**
74
120
  * Get the "segments" in an absolute path.
75
121
  * - `splitPath("/")` returns `[]` — the root has no segments.
122
+ *
123
+ * @param path Path to split (an array of segments is returned as-is).
124
+ * @returns Array of path segments.
125
+ * @example splitPath("/a/b") // ["a", "b"]
126
+ * @see https://dhoulb.github.io/shelving/util/path/splitPath
76
127
  */
77
128
  export function splitPath(path) {
78
129
  if (typeof path !== "string")
package/util/query.d.ts CHANGED
@@ -1,7 +1,14 @@
1
1
  import type { ImmutableArray } from "./array.js";
2
2
  import type { Data, LeafData, LeafDataPath } from "./data.js";
3
3
  import type { Segments } from "./string.js";
4
- /** Query that can be applied to a list of data objects. */
4
+ /**
5
+ * Query that can be applied to a list of data objects.
6
+ *
7
+ * - Keys encode filters: `key` (is), `!key` (not), arrays for in/out, `key<`/`key<=`/`key>`/`key>=` for ranges, and `key[]` for array contains.
8
+ * - `$order` sets the sort order (prefix `!` for descending) and `$limit` caps the number of results.
9
+ *
10
+ * @see https://dhoulb.github.io/shelving/util/query/Query
11
+ */
5
12
  export type Query<T extends Data = Data> = {
6
13
  readonly [K in LeafDataPath<T> as `${K}` | `!${K}`]?: LeafData<T>[K] | ImmutableArray<LeafData<T>[K]> | undefined;
7
14
  } & {
@@ -12,7 +19,13 @@ export type Query<T extends Data = Data> = {
12
19
  readonly $order?: `${LeafDataPath<T>}` | `!${LeafDataPath<T>}` | undefined | ImmutableArray<`${LeafDataPath<T>}` | `!${LeafDataPath<T>}` | undefined>;
13
20
  readonly $limit?: number | undefined;
14
21
  };
15
- /** A single filter that can be applied to a list of data objects. */
22
+ /**
23
+ * A single filter that can be applied to a list of data objects.
24
+ *
25
+ * - Discriminated by `operator`: `"is"`, `"not"`, `"in"`, `"out"`, `"contains"`, `"lt"`, `"lte"`, `"gt"`, or `"gte"`.
26
+ *
27
+ * @see https://dhoulb.github.io/shelving/util/query/QueryFilter
28
+ */
16
29
  export type QueryFilter = {
17
30
  key: Segments;
18
31
  operator: "is";
@@ -50,27 +63,83 @@ export type QueryFilter = {
50
63
  operator: "gte";
51
64
  value: unknown;
52
65
  };
53
- /** A single sort order that can be applied to a list of data objects. */
66
+ /**
67
+ * A single sort order that can be applied to a list of data objects.
68
+ *
69
+ * @see https://dhoulb.github.io/shelving/util/query/QueryOrder
70
+ */
54
71
  export type QueryOrder = {
55
72
  key: Segments;
56
73
  direction: "asc" | "desc";
57
74
  };
58
- /** Get the `Filter` objects for a query. */
75
+ /**
76
+ * Get the `QueryFilter` objects decoded from a query.
77
+ *
78
+ * @param query The query to extract filters from.
79
+ * @returns Array of decoded `QueryFilter` objects (excludes `$order` and `$limit` and any `undefined` values).
80
+ * @example getQueryFilters({ name: "Alice" }) // [{ key: ["name"], operator: "is", value: "Alice" }]
81
+ * @see https://dhoulb.github.io/shelving/util/query/getQueryFilters
82
+ */
59
83
  export declare function getQueryFilters<T extends Data>(query: Query<T>): ImmutableArray<QueryFilter>;
60
- /** Get the `Order` objects for a query. */
84
+ /**
85
+ * Get the `QueryOrder` objects decoded from a query.
86
+ *
87
+ * @param query The query to extract sort orders from (reads its `$order` prop).
88
+ * @returns Array of decoded `QueryOrder` objects (`!`-prefixed keys are descending, others ascending).
89
+ * @example getQueryOrders({ $order: "!date" }) // [{ key: ["date"], direction: "desc" }]
90
+ * @see https://dhoulb.github.io/shelving/util/query/getQueryOrders
91
+ */
61
92
  export declare function getQueryOrders<T extends Data>({ $order }: Query<T>): ImmutableArray<QueryOrder>;
62
- /** Get the limit for a query. */
93
+ /**
94
+ * Get the limit for a query.
95
+ *
96
+ * @param query The query to read the limit from (reads its `$limit` prop).
97
+ * @returns The maximum number of results, or `undefined` if the query is unlimited.
98
+ * @example getQueryLimit({ $limit: 10 }) // 10
99
+ * @see https://dhoulb.github.io/shelving/util/query/getQueryLimit
100
+ */
63
101
  export declare function getQueryLimit<T extends Data>({ $limit }: Query<T>): number | undefined;
64
- /** Query a set of data items using a query. */
102
+ /**
103
+ * Query a set of data items using a query.
104
+ * - Filters, then sorts, then limits the items according to the query.
105
+ *
106
+ * @param items The iterable of data items to query.
107
+ * @param query The query to apply (filters, sort order, and limit).
108
+ * @returns Iterable of items matching the query, in sorted and limited order.
109
+ * @example Array.from(queryItems(items, { name: "Alice", $limit: 1 })) // matching items
110
+ * @see https://dhoulb.github.io/shelving/util/query/queryItems
111
+ */
65
112
  export declare function queryItems<T extends Data>(items: Iterable<T>, query: Query<T>): Iterable<T>;
66
113
  /**
67
114
  * Query a set of data items for writing using a query.
68
115
  * - If no limit is set on the data sorting can be avoided too for performance reasons.
116
+ *
117
+ * @param items The iterable of data items to query.
118
+ * @param query The query to apply (filters, sort order, and limit).
119
+ * @returns Iterable of matching items (skips sorting when the query has no limit).
120
+ * @example Array.from(queryWritableItems(items, { name: "Alice" })) // matching items (unsorted)
121
+ * @see https://dhoulb.github.io/shelving/util/query/queryWritableItems
69
122
  */
70
123
  export declare function queryWritableItems<T extends Data>(items: Iterable<T>, query: Query<T>): Iterable<T>;
71
- /** Match a single data item againt a set of filters. */
124
+ /**
125
+ * Match a single data item against a set of filters.
126
+ *
127
+ * @param item The data item to test.
128
+ * @param filters The set of filters that the item must satisfy.
129
+ * @returns `true` if the item matches every filter, `false` otherwise.
130
+ * @example matchQueryItem({ name: "Alice" }, [{ key: ["name"], operator: "is", value: "Alice" }]) // true
131
+ * @see https://dhoulb.github.io/shelving/util/query/matchQueryItem
132
+ */
72
133
  export declare function matchQueryItem<T extends Data>(item: T, filters: ImmutableArray<QueryFilter>): boolean;
73
- /** Filter a set of data items using a set of filters. */
134
+ /**
135
+ * Filter a set of data items using a set of filters.
136
+ *
137
+ * @param items The iterable of data items to filter.
138
+ * @param filters The set of filters that each yielded item must satisfy.
139
+ * @yields Items that match every filter (yields all items when `filters` is empty).
140
+ * @example Array.from(filterQueryItems(items, filters)) // matching items
141
+ * @see https://dhoulb.github.io/shelving/util/query/filterQueryItems
142
+ */
74
143
  export declare function filterQueryItems<T extends Data>(items: Iterable<T>, filters: ImmutableArray<QueryFilter>): Iterable<T>;
75
144
  /** Compare two data items using a set of orders. */
76
145
  export declare function compareQueryItems<T extends Data>(left: T, right: T, orders: ImmutableArray<QueryOrder>): number;
package/util/query.js CHANGED
@@ -16,7 +16,14 @@ const MATCHERS = {
16
16
  gt: isGreater,
17
17
  gte: isEqualGreater,
18
18
  };
19
- /** Get the `Filter` objects for a query. */
19
+ /**
20
+ * Get the `QueryFilter` objects decoded from a query.
21
+ *
22
+ * @param query The query to extract filters from.
23
+ * @returns Array of decoded `QueryFilter` objects (excludes `$order` and `$limit` and any `undefined` values).
24
+ * @example getQueryFilters({ name: "Alice" }) // [{ key: ["name"], operator: "is", value: "Alice" }]
25
+ * @see https://dhoulb.github.io/shelving/util/query/getQueryFilters
26
+ */
20
27
  export function getQueryFilters(query) {
21
28
  return Array.from(yieldQueryFilters(query));
22
29
  }
@@ -42,7 +49,14 @@ function* yieldQueryFilters(query) {
42
49
  yield isArray(value) ? { key: splitDataPath(key), operator: "in", value } : { key: splitDataPath(key), operator: "is", value };
43
50
  }
44
51
  }
45
- /** Get the `Order` objects for a query. */
52
+ /**
53
+ * Get the `QueryOrder` objects decoded from a query.
54
+ *
55
+ * @param query The query to extract sort orders from (reads its `$order` prop).
56
+ * @returns Array of decoded `QueryOrder` objects (`!`-prefixed keys are descending, others ascending).
57
+ * @example getQueryOrders({ $order: "!date" }) // [{ key: ["date"], direction: "desc" }]
58
+ * @see https://dhoulb.github.io/shelving/util/query/getQueryOrders
59
+ */
46
60
  export function getQueryOrders({ $order }) {
47
61
  return Array.from(yieldQueryOrders($order));
48
62
  }
@@ -56,22 +70,52 @@ function* yieldQueryOrders(order) {
56
70
  yield { key: splitDataPath(key), direction: "asc" };
57
71
  }
58
72
  }
59
- /** Get the limit for a query. */
73
+ /**
74
+ * Get the limit for a query.
75
+ *
76
+ * @param query The query to read the limit from (reads its `$limit` prop).
77
+ * @returns The maximum number of results, or `undefined` if the query is unlimited.
78
+ * @example getQueryLimit({ $limit: 10 }) // 10
79
+ * @see https://dhoulb.github.io/shelving/util/query/getQueryLimit
80
+ */
60
81
  export function getQueryLimit({ $limit }) {
61
82
  return $limit;
62
83
  }
63
- /** Query a set of data items using a query. */
84
+ /**
85
+ * Query a set of data items using a query.
86
+ * - Filters, then sorts, then limits the items according to the query.
87
+ *
88
+ * @param items The iterable of data items to query.
89
+ * @param query The query to apply (filters, sort order, and limit).
90
+ * @returns Iterable of items matching the query, in sorted and limited order.
91
+ * @example Array.from(queryItems(items, { name: "Alice", $limit: 1 })) // matching items
92
+ * @see https://dhoulb.github.io/shelving/util/query/queryItems
93
+ */
64
94
  export function queryItems(items, query) {
65
95
  return limitQueryItems(sortQueryItems(filterQueryItems(items, getQueryFilters(query)), getQueryOrders(query)), getQueryLimit(query));
66
96
  }
67
97
  /**
68
98
  * Query a set of data items for writing using a query.
69
99
  * - If no limit is set on the data sorting can be avoided too for performance reasons.
100
+ *
101
+ * @param items The iterable of data items to query.
102
+ * @param query The query to apply (filters, sort order, and limit).
103
+ * @returns Iterable of matching items (skips sorting when the query has no limit).
104
+ * @example Array.from(queryWritableItems(items, { name: "Alice" })) // matching items (unsorted)
105
+ * @see https://dhoulb.github.io/shelving/util/query/queryWritableItems
70
106
  */
71
107
  export function queryWritableItems(items, query) {
72
108
  return getQueryLimit(query) === undefined ? filterQueryItems(items, getQueryFilters(query)) : queryItems(items, query);
73
109
  }
74
- /** Match a single data item againt a set of filters. */
110
+ /**
111
+ * Match a single data item against a set of filters.
112
+ *
113
+ * @param item The data item to test.
114
+ * @param filters The set of filters that the item must satisfy.
115
+ * @returns `true` if the item matches every filter, `false` otherwise.
116
+ * @example matchQueryItem({ name: "Alice" }, [{ key: ["name"], operator: "is", value: "Alice" }]) // true
117
+ * @see https://dhoulb.github.io/shelving/util/query/matchQueryItem
118
+ */
75
119
  export function matchQueryItem(item, filters) {
76
120
  for (const { key, operator, value } of filters) {
77
121
  const matcher = MATCHERS[operator];
@@ -80,7 +124,15 @@ export function matchQueryItem(item, filters) {
80
124
  }
81
125
  return true;
82
126
  }
83
- /** Filter a set of data items using a set of filters. */
127
+ /**
128
+ * Filter a set of data items using a set of filters.
129
+ *
130
+ * @param items The iterable of data items to filter.
131
+ * @param filters The set of filters that each yielded item must satisfy.
132
+ * @yields Items that match every filter (yields all items when `filters` is empty).
133
+ * @example Array.from(filterQueryItems(items, filters)) // matching items
134
+ * @see https://dhoulb.github.io/shelving/util/query/filterQueryItems
135
+ */
84
136
  export function* filterQueryItems(items, filters) {
85
137
  if (filters.length) {
86
138
  for (const item of items)
package/util/random.d.ts CHANGED
@@ -1,16 +1,79 @@
1
1
  import type { ImmutableArray } from "./array.js";
2
- /** Generate a random integer between two numbers. */
2
+ /**
3
+ * Generate a random integer between two numbers (inclusive).
4
+ *
5
+ * @param min Lowest possible integer to return — defaults to `Number.MIN_SAFE_INTEGER`.
6
+ * @param max Highest possible integer to return — defaults to `Number.MAX_SAFE_INTEGER`.
7
+ * @returns Random integer in the range `min` to `max` (inclusive).
8
+ *
9
+ * @example
10
+ * ```ts
11
+ * const dice = getRandom(1, 6); // e.g. `4`
12
+ * ```
13
+ *
14
+ * @see https://dhoulb.github.io/shelving/util/random/getRandom
15
+ */
3
16
  export declare function getRandom(min?: number, max?: number): number;
4
- /** Get a random number that is anything except an existing number. */
17
+ /**
18
+ * Get a random integer that is anything except an existing number.
19
+ * - Repeatedly draws a random integer until it differs from `existing`.
20
+ *
21
+ * @param existing Number that must not be returned.
22
+ * @param min Lowest possible integer to return — defaults to `Number.MIN_SAFE_INTEGER`.
23
+ * @param max Highest possible integer to return — defaults to `Number.MAX_SAFE_INTEGER`.
24
+ * @returns Random integer in the range `min` to `max` that is not equal to `existing`.
25
+ *
26
+ * @example
27
+ * ```ts
28
+ * const next = getRandomExcept(current, 1, 6); // any of `1`–`6` except `current`
29
+ * ```
30
+ *
31
+ * @see https://dhoulb.github.io/shelving/util/random/getRandomExcept
32
+ */
5
33
  export declare function getRandomExcept(existing: number, min?: number, max?: number): number;
6
34
  /**
7
35
  * Make a random key, e.g. `xs23r34hhsdx` or `e4m29klrugef`
8
36
  * - Not designed to be cryptographically random!
9
37
  * - Will probably clash — if you're making a random ID, check for existence of the record before saving.
10
38
  * - Designed to be semi-readable, doesn't use capital letters or `i` or `o` or `l` or `u`
39
+ *
40
+ * @param length Number of characters in the returned key — defaults to `12`.
41
+ * @returns Random string of `length` lowercase alphanumeric characters.
42
+ *
43
+ * @example
44
+ * ```ts
45
+ * const id = getRandomKey(); // e.g. `xs23r34hhsdx`
46
+ * ```
47
+ *
48
+ * @see https://dhoulb.github.io/shelving/util/random/getRandomKey
11
49
  */
12
50
  export declare function getRandomKey(length?: number): string;
13
- /** Get a random character from a string. */
51
+ /**
52
+ * Get a random character from a string.
53
+ *
54
+ * @param str String to pick a character from.
55
+ * @returns Single character chosen at random from `str`.
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * const letter = getRandomCharacter("abcde"); // e.g. `"c"`
60
+ * ```
61
+ *
62
+ * @see https://dhoulb.github.io/shelving/util/random/getRandomCharacter
63
+ */
14
64
  export declare function getRandomCharacter(str: string): string;
15
- /** Get a random item from an array or random character from a string string. */
65
+ /**
66
+ * Get a random item from an array.
67
+ *
68
+ * @param arr Array to pick an item from.
69
+ * @returns Single item chosen at random from `arr`.
70
+ * @throws RequiredError If the chosen item is undefined (e.g. the array is empty).
71
+ *
72
+ * @example
73
+ * ```ts
74
+ * const item = getRandomItem(["a", "b", "c"]); // e.g. `"b"`
75
+ * ```
76
+ *
77
+ * @see https://dhoulb.github.io/shelving/util/random/getRandomItem
78
+ */
16
79
  export declare function getRandomItem<T>(arr: ImmutableArray<T>): T;