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/source.js CHANGED
@@ -1,6 +1,15 @@
1
1
  import { RequiredError } from "../error/RequiredError.js";
2
2
  import { isObject } from "./object.js";
3
- /** Recurse through `Sourceable` objects and return the first one that is an instance of `type`, or `undefined` if no source object matches. */
3
+ /**
4
+ * Recurse through `Sourceable` objects and return the first one that is an instance of `type`, or `undefined` if no source object matches.
5
+ * - Follows the `source` property chain (e.g. layered providers) until a matching instance is found.
6
+ *
7
+ * @param type The class to search for an instance of.
8
+ * @param value The object to start searching from.
9
+ * @returns The first matching source instance, or `undefined` if none matches.
10
+ * @example getSource(CacheProvider, provider) // CacheProvider instance or undefined
11
+ * @see https://dhoulb.github.io/shelving/util/source/getSource
12
+ */
4
13
  export function getSource(type, value) {
5
14
  if (isObject(value)) {
6
15
  if (value instanceof type)
@@ -9,7 +18,18 @@ export function getSource(type, value) {
9
18
  return getSource(type, value.source);
10
19
  }
11
20
  }
12
- /** Recurse through `Sourceable` objects and return the first one that is an instance of `type`, or throw `RequiredError` if no source object matches. */
21
+ /**
22
+ * Recurse through `Sourceable` objects and return the first one that is an instance of `type`, or throw `RequiredError` if no source object matches.
23
+ * - Like `getSource`, but throws instead of returning `undefined` when no match is found.
24
+ *
25
+ * @param type The class to search for an instance of.
26
+ * @param data The object to start searching from.
27
+ * @param caller Function to attribute a thrown error to (defaults to `requireSource`).
28
+ * @returns The first matching source instance.
29
+ * @throws {RequiredError} If no source object is an instance of `type`.
30
+ * @example requireSource(CacheProvider, provider) // CacheProvider instance
31
+ * @see https://dhoulb.github.io/shelving/util/source/requireSource
32
+ */
13
33
  export function requireSource(type, data, caller = requireSource) {
14
34
  const source = getSource(type, data);
15
35
  if (!source)
package/util/start.d.ts CHANGED
@@ -1,24 +1,81 @@
1
1
  import { type Arguments } from "./function.js";
2
- /** Callback function that starts something with multiple values and returns an optional stop callback. */
2
+ /**
3
+ * Callback function that starts something with multiple values and returns an optional stop callback.
4
+ *
5
+ * @see https://dhoulb.github.io/shelving/util/start/StartCallback
6
+ */
3
7
  export type StartCallback<T extends Arguments = []> = (...values: T) => StopCallback | void;
4
- /** Callback function that stops something. */
8
+ /**
9
+ * Callback function that stops something.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/util/start/StopCallback
12
+ */
5
13
  export type StopCallback = () => void;
6
- /** Callback function that does nothing and returns a blackhole stop callback. */
14
+ /**
15
+ * Callback function that does nothing and returns a blackhole stop callback.
16
+ * - Useful as a no-op default where a `StartCallback` is expected.
17
+ *
18
+ * @example STOPHOLE() // BLACKHOLE
19
+ * @see https://dhoulb.github.io/shelving/util/start/STOPHOLE
20
+ */
7
21
  export declare const STOPHOLE: (...args: Arguments) => StopCallback;
8
22
  /**
9
23
  * Wrapper class to handle state on start/stop callback process.
10
24
  * - If process has already started, `starter.start()` won't be called twice (including if `start()` didn't return a `stop()` callback).
25
+ * - Implements `Disposable` so it can be used with `using`, calling `stop()` on disposal.
26
+ *
27
+ * @example
28
+ * const starter = new Starter(() => { console.log("start"); return () => console.log("stop"); });
29
+ * starter.start();
30
+ * starter.stop();
31
+ * @see https://dhoulb.github.io/shelving/util/start/Starter
11
32
  */
12
33
  export declare class Starter<T extends Arguments = []> implements Disposable {
13
34
  private readonly _start;
14
35
  private _started;
15
36
  private _stop;
37
+ /**
38
+ * Create a new `Starter` wrapping a start callback.
39
+ *
40
+ * @param start The callback to run on `start()`, which may return a stop callback.
41
+ */
16
42
  constructor(start: StartCallback<T>);
43
+ /**
44
+ * Run the start callback (once).
45
+ * - Does nothing if the process has already been started.
46
+ *
47
+ * @param values Values forwarded to the start callback.
48
+ * @returns Nothing.
49
+ * @throws {UnexpectedError} If the start callback throws.
50
+ * @example starter.start();
51
+ * @see https://dhoulb.github.io/shelving/util/start/Starter/start
52
+ */
17
53
  start(...values: T): void;
54
+ /**
55
+ * Run the stop callback (if one was returned by the start callback).
56
+ * - Does nothing if the process was never started.
57
+ *
58
+ * @returns Nothing.
59
+ * @throws {UnexpectedError} If the stop callback throws.
60
+ * @example starter.stop();
61
+ * @see https://dhoulb.github.io/shelving/util/start/Starter/stop
62
+ */
18
63
  stop(): void;
19
64
  [Symbol.dispose](): void;
20
65
  }
21
- /** Something that can be made into a `Starter` */
66
+ /**
67
+ * Something that can be made into a `Starter`.
68
+ *
69
+ * @see https://dhoulb.github.io/shelving/util/start/PossibleStarter
70
+ */
22
71
  export type PossibleStarter<T extends Arguments> = StartCallback<T> | Starter<T>;
23
- /** Get a `Starter` from a `PossibleStarter` */
72
+ /**
73
+ * Get a `Starter` from a `PossibleStarter`.
74
+ * - Returns the input unchanged when it is already a `Starter`; otherwise wraps the callback in a new `Starter`.
75
+ *
76
+ * @param start A `StartCallback` or an existing `Starter`.
77
+ * @returns A `Starter` instance.
78
+ * @example getStarter(() => () => {}) // Starter instance
79
+ * @see https://dhoulb.github.io/shelving/util/start/getStarter
80
+ */
24
81
  export declare function getStarter<T extends Arguments>(start: StartCallback<T> | Starter<T>): Starter<T>;
package/util/start.js CHANGED
@@ -1,18 +1,46 @@
1
1
  import { UnexpectedError } from "../error/UnexpectedError.js";
2
2
  import { BLACKHOLE } from "./function.js";
3
- /** Callback function that does nothing and returns a blackhole stop callback. */
3
+ /**
4
+ * Callback function that does nothing and returns a blackhole stop callback.
5
+ * - Useful as a no-op default where a `StartCallback` is expected.
6
+ *
7
+ * @example STOPHOLE() // BLACKHOLE
8
+ * @see https://dhoulb.github.io/shelving/util/start/STOPHOLE
9
+ */
4
10
  export const STOPHOLE = () => BLACKHOLE;
5
11
  /**
6
12
  * Wrapper class to handle state on start/stop callback process.
7
13
  * - If process has already started, `starter.start()` won't be called twice (including if `start()` didn't return a `stop()` callback).
14
+ * - Implements `Disposable` so it can be used with `using`, calling `stop()` on disposal.
15
+ *
16
+ * @example
17
+ * const starter = new Starter(() => { console.log("start"); return () => console.log("stop"); });
18
+ * starter.start();
19
+ * starter.stop();
20
+ * @see https://dhoulb.github.io/shelving/util/start/Starter
8
21
  */
9
22
  export class Starter {
10
23
  _start;
11
24
  _started = false;
12
25
  _stop = undefined;
26
+ /**
27
+ * Create a new `Starter` wrapping a start callback.
28
+ *
29
+ * @param start The callback to run on `start()`, which may return a stop callback.
30
+ */
13
31
  constructor(start) {
14
32
  this._start = start;
15
33
  }
34
+ /**
35
+ * Run the start callback (once).
36
+ * - Does nothing if the process has already been started.
37
+ *
38
+ * @param values Values forwarded to the start callback.
39
+ * @returns Nothing.
40
+ * @throws {UnexpectedError} If the start callback throws.
41
+ * @example starter.start();
42
+ * @see https://dhoulb.github.io/shelving/util/start/Starter/start
43
+ */
16
44
  start(...values) {
17
45
  if (this._started)
18
46
  return;
@@ -24,6 +52,15 @@ export class Starter {
24
52
  throw new UnexpectedError("Unexpected error in start callback", { cause: thrown, caller: this.start });
25
53
  }
26
54
  }
55
+ /**
56
+ * Run the stop callback (if one was returned by the start callback).
57
+ * - Does nothing if the process was never started.
58
+ *
59
+ * @returns Nothing.
60
+ * @throws {UnexpectedError} If the stop callback throws.
61
+ * @example starter.stop();
62
+ * @see https://dhoulb.github.io/shelving/util/start/Starter/stop
63
+ */
27
64
  stop() {
28
65
  if (!this._started)
29
66
  return;
@@ -43,7 +80,15 @@ export class Starter {
43
80
  this.stop();
44
81
  }
45
82
  }
46
- /** Get a `Starter` from a `PossibleStarter` */
83
+ /**
84
+ * Get a `Starter` from a `PossibleStarter`.
85
+ * - Returns the input unchanged when it is already a `Starter`; otherwise wraps the callback in a new `Starter`.
86
+ *
87
+ * @param start A `StartCallback` or an existing `Starter`.
88
+ * @returns A `Starter` instance.
89
+ * @example getStarter(() => () => {}) // Starter instance
90
+ * @see https://dhoulb.github.io/shelving/util/start/getStarter
91
+ */
47
92
  export function getStarter(start) {
48
93
  return typeof start === "function" ? new Starter(start) : start;
49
94
  }
package/util/string.d.ts CHANGED
@@ -5,41 +5,131 @@ import type { AnyCaller } from "./function.js";
5
5
  * - `string` itself is iterable (iterating over its individual characters) and implements `Iterable<string>`
6
6
  * - Using `Iterable<string> & NotString` allows an iterable containing strings but not `string` itself.
7
7
  * - This helps catch this category of subtle errors.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/util/string/NotString
8
10
  */
9
11
  export type NotString = {
10
12
  toUpperCase?: never;
11
13
  toLowerCase?: never;
12
14
  };
13
- /** Things that can be reliably converted to a string with no confusion. */
15
+ /**
16
+ * Things that can be reliably converted to a string with no confusion.
17
+ *
18
+ * @see https://dhoulb.github.io/shelving/util/string/PossibleString
19
+ */
14
20
  export type PossibleString = boolean | string | number | Date;
15
- /** Series of string segments with at least one one (this is what you _actually_ get back when you split a string). */
21
+ /**
22
+ * Series of string segments with at least one segment (this is what you _actually_ get back when you split a string).
23
+ *
24
+ * @see https://dhoulb.github.io/shelving/util/string/Segments
25
+ */
16
26
  export type Segments = readonly [string, ...string[]];
17
- /** Is a value a string? */
27
+ /**
28
+ * Is an unknown value a string?
29
+ *
30
+ * @param value The value to check.
31
+ * @returns `true` if `value` is a `string`, otherwise `false`.
32
+ * @see https://dhoulb.github.io/shelving/util/string/isString
33
+ */
18
34
  export declare function isString(value: unknown): value is string;
19
- /** Assert that a value is a string. */
35
+ /**
36
+ * Assert that a value is a string.
37
+ *
38
+ * @param value The value to assert on.
39
+ * @param caller Function to attribute a thrown error to (defaults to `assertString`).
40
+ * @throws {RequiredError} If `value` is not a string.
41
+ * @example assertString("a"); // Passes.
42
+ * @see https://dhoulb.github.io/shelving/util/string/assertString
43
+ */
20
44
  export declare function assertString(value: unknown, caller?: AnyCaller): asserts value is string;
21
- /** Convert an unknown value to a string, or return `undefined` if conversion fails. */
45
+ /**
46
+ * Convert an unknown value to a string, or return `undefined` if conversion fails.
47
+ * - Coerces numbers, booleans, and `Date` values, and joins arrays with `,` commas; returns `undefined` for anything else.
48
+ *
49
+ * @param value The value to convert.
50
+ * @returns The string representation of `value`, or `undefined` if it cannot be converted.
51
+ * @example getString(123) // "123"
52
+ * @see https://dhoulb.github.io/shelving/util/string/getString
53
+ */
22
54
  export declare function getString(value: unknown): string | undefined;
23
- /** Convert a possible string to a string (optionally with specified min/max length), or throw `RequiredError` if conversion fails. */
55
+ /**
56
+ * Convert a possible string to a string, or throw `RequiredError` if conversion fails.
57
+ *
58
+ * @param value The value to convert.
59
+ * @param caller Function to attribute a thrown error to (defaults to `requireString`).
60
+ * @returns The string representation of `value`.
61
+ * @throws {RequiredError} If `value` cannot be converted to a string.
62
+ * @example requireString(123) // "123"
63
+ * @see https://dhoulb.github.io/shelving/util/string/requireString
64
+ */
24
65
  export declare function requireString(value: PossibleString, caller?: AnyCaller): string;
25
- /** Is a value a string with min/max length? */
66
+ /**
67
+ * Is a value a string with a length between `min` and `max`?
68
+ *
69
+ * @param value The value to check.
70
+ * @param min The minimum allowed length (defaults to `0`).
71
+ * @param max The maximum allowed length (defaults to `Infinity`).
72
+ * @returns `true` if `value` is a string within the length bounds, otherwise `false`.
73
+ * @see https://dhoulb.github.io/shelving/util/string/isStringLength
74
+ */
26
75
  export declare function isStringLength(value: unknown, min?: number, max?: number): value is string;
27
- /** Assert that a value is a string with min/max length. */
76
+ /**
77
+ * Assert that a value is a string with a length between `min` and `max`.
78
+ *
79
+ * @param value The value to assert on.
80
+ * @param min The minimum allowed length.
81
+ * @param max The maximum allowed length.
82
+ * @param caller Function to attribute a thrown error to (defaults to `assertString`).
83
+ * @throws {RequiredError} If `value` is not a string within the length bounds.
84
+ * @example assertStringLength("abc", 1, 5); // Passes.
85
+ * @see https://dhoulb.github.io/shelving/util/string/assertStringLength
86
+ */
28
87
  export declare function assertStringLength(value: unknown, min?: number, max?: number, caller?: AnyCaller): asserts value is string;
29
- /** Convert a possible string to a string (optionally with specified min/max length), or throw `RequiredError` if conversion fails. */
88
+ /**
89
+ * Convert a possible string to a string with min/max length, or throw `RequiredError` if conversion fails.
90
+ *
91
+ * @param value The value to convert.
92
+ * @param min The minimum allowed length.
93
+ * @param max The maximum allowed length.
94
+ * @param caller Function to attribute a thrown error to (defaults to `requireString`).
95
+ * @returns The string representation of `value`.
96
+ * @throws {RequiredError} If `value` cannot be converted to a string within the length bounds.
97
+ * @example requireStringLength("abc", 1, 5) // "abc"
98
+ * @see https://dhoulb.github.io/shelving/util/string/requireStringLength
99
+ */
30
100
  export declare function requireStringLength(value: PossibleString, min?: number, max?: number, caller?: AnyCaller): string;
31
- /** Does a string have a length between `min` and `max` */
101
+ /**
102
+ * Does a string have a length between `min` and `max`?
103
+ *
104
+ * @param str The string to measure.
105
+ * @param min The minimum allowed length (defaults to `0`).
106
+ * @param max The maximum allowed length (defaults to `Infinity`).
107
+ * @returns `true` if `str` is within the length bounds, otherwise `false`.
108
+ * @see https://dhoulb.github.io/shelving/util/string/isStringBetween
109
+ */
32
110
  export declare function isStringBetween(str: string, min?: number, max?: number): boolean;
33
- /** Concatenate an iterable set of strings together. */
111
+ /**
112
+ * Concatenate an iterable set of strings together.
113
+ *
114
+ * @param strs The iterable of strings to join (must not be a bare `string`).
115
+ * @param joiner The separator to insert between strings (defaults to `""`).
116
+ * @returns The joined string.
117
+ * @throws {RequiredError} If `strs` is not a valid array of strings.
118
+ * @example joinStrings(["a", "b"], "-") // "a-b"
119
+ * @see https://dhoulb.github.io/shelving/util/string/joinStrings
120
+ */
34
121
  export declare function joinStrings(strs: Iterable<string> & NotString, joiner?: string): string;
35
122
  /**
36
123
  * Sanitize a single line of text.
37
124
  * - Used when you're sanitising a single-line input, e.g. a title for something.
38
- * - Remove allow control characters
39
- * - Normalise runs of whitespace to one ` ` space,
125
+ * - Remove all control characters.
126
+ * - Normalise runs of whitespace to one ` ` space.
40
127
  * - Trim whitespace from the start and end of the string.
41
128
  *
42
- * @example santizeString("\x00Nice! "); // Returns `"Nice!"`
129
+ * @param str The string to sanitize.
130
+ * @returns The sanitized single-line string.
131
+ * @example sanitizeText("\x00Nice! ") // "Nice!"
132
+ * @see https://dhoulb.github.io/shelving/util/string/sanitizeText
43
133
  */
44
134
  export declare function sanitizeText(str: string): string;
45
135
  /**
@@ -48,7 +138,10 @@ export declare function sanitizeText(str: string): string;
48
138
  * - Remove all control characters (like `sanitizeText()`).
49
139
  * - Strip all whitespace entirely (rather than collapsing runs to a single space like `sanitizeText()`).
50
140
  *
141
+ * @param str The string to sanitize.
142
+ * @returns The sanitized single-word string.
51
143
  * @example sanitizeWord("\x00 a b c "); // Returns `"abc"`
144
+ * @see https://dhoulb.github.io/shelving/util/string/sanitizeWord
52
145
  */
53
146
  export declare function sanitizeWord(str: string): string;
54
147
  /**
@@ -60,6 +153,11 @@ export declare function sanitizeWord(str: string): string;
60
153
  * - Normalise indentation to tabs (four or more spaces are a tab, three or fewer spaces are removed).
61
154
  * - Allow spaces at the start of each line (for indentation) but trim the end of each line.
62
155
  * - Trim excess newlines at the start and end of the string and runs of more than two newlines in a row.
156
+ *
157
+ * @param str The string to sanitize.
158
+ * @returns The sanitized multi-line string.
159
+ * @example sanitizeMultilineText("\x00Line one\n\n\n\nLine two ") // "Line one\n\nLine two"
160
+ * @see https://dhoulb.github.io/shelving/util/string/sanitizeMultilineText
63
161
  */
64
162
  export declare function sanitizeMultilineText(str: string): string;
65
163
  /**
@@ -67,18 +165,53 @@ export declare function sanitizeMultilineText(str: string): string;
67
165
  * - Normalizes the string by
68
166
  * - Useful when you're running a query against a string entered by a user.
69
167
  *
168
+ * @param str The string to simplify.
169
+ * @returns The simplified, lowercased string containing only numbers, letters, and single spaces.
70
170
  * @example simplifyString("Däve-is\nREALLY éxcitable—apparęntly!!! 😂"); // Returns "dave is really excitable apparently"
171
+ * @see https://dhoulb.github.io/shelving/util/string/simplifyString
71
172
  *
72
173
  * @todo Convert confusables (e.g. `ℵ` alef symbol or `℮` estimate symbol) to their letterlike equivalent (e.g. `N` and `e`).
73
174
  */
74
175
  export declare function simplifyString(str: string): string;
75
- /** Convert a string to a `kebab-case` URL slug, or return `undefined` if conversion resulted in an empty ref. */
176
+ /**
177
+ * Convert a string to a `kebab-case` URL slug, or return `undefined` if conversion resulted in an empty ref.
178
+ *
179
+ * @param str The string to convert.
180
+ * @returns The `kebab-case` slug, or `undefined` if conversion resulted in an empty string.
181
+ * @example getSlug("Hello World!") // "hello-world"
182
+ * @see https://dhoulb.github.io/shelving/util/string/getSlug
183
+ */
76
184
  export declare function getSlug(str: string): string | undefined;
77
- /** Convert a string to a `kebab-case` URL slug, or throw `RequiredError` if conversion resulted in an empty ref. */
185
+ /**
186
+ * Convert a string to a `kebab-case` URL slug, or throw `RequiredError` if conversion resulted in an empty ref.
187
+ *
188
+ * @param str The string to convert.
189
+ * @param caller Function to attribute a thrown error to (defaults to `requireSlug` itself).
190
+ * @returns The `kebab-case` slug.
191
+ * @throws {RequiredError} If conversion resulted in an empty string.
192
+ * @example requireSlug("Hello World!") // "hello-world"
193
+ * @see https://dhoulb.github.io/shelving/util/string/requireSlug
194
+ */
78
195
  export declare function requireSlug(str: string, caller?: AnyCaller): string;
79
- /** Convert a string to a unique ref e.g. `abc123`, or return `undefined` if conversion resulted in an empty string. */
196
+ /**
197
+ * Convert a string to a unique ref e.g. `abc123`, or return `undefined` if conversion resulted in an empty string.
198
+ *
199
+ * @param str The string to convert.
200
+ * @returns The ref, or `undefined` if conversion resulted in an empty string.
201
+ * @example getRef("Hello World!") // "helloworld"
202
+ * @see https://dhoulb.github.io/shelving/util/string/getRef
203
+ */
80
204
  export declare function getRef(str: string): string | undefined;
81
- /** Convert a string to a unique ref e.g. `abc123`, or throw `RequiredError` if conversion resulted in an empty string. */
205
+ /**
206
+ * Convert a string to a unique ref e.g. `abc123`, or throw `RequiredError` if conversion resulted in an empty string.
207
+ *
208
+ * @param str The string to convert.
209
+ * @param caller Function to attribute a thrown error to (defaults to `requireRef` itself).
210
+ * @returns The ref.
211
+ * @throws {RequiredError} If conversion resulted in an empty string.
212
+ * @example requireRef("Hello World!") // "helloworld"
213
+ * @see https://dhoulb.github.io/shelving/util/string/requireRef
214
+ */
82
215
  export declare function requireRef(str: string, caller?: AnyCaller): string;
83
216
  /**
84
217
  * Return an array of the separate words and "quoted phrases" found in a string.
@@ -86,18 +219,49 @@ export declare function requireRef(str: string, caller?: AnyCaller): string;
86
219
  * - Performs no processing on the words, so control chars, punctuation, symbols, and case are all preserved.
87
220
  *
88
221
  * Note: this splits words based on spaces, so won't work well with logographic writing systems e.g. kanji.
222
+ *
223
+ * @param str The string to extract words from.
224
+ * @returns Array of the separate words and quoted phrases found in `str`.
225
+ * @example getWords(`a "b c" d`) // ["a", "b c", "d"]
226
+ * @see https://dhoulb.github.io/shelving/util/string/getWords
89
227
  */
90
228
  export declare function getWords(str: string): ImmutableArray<string>;
91
- /** Get the (trimmed) first full line of a string. */
229
+ /**
230
+ * Get the (trimmed) first full line of a string.
231
+ *
232
+ * @param str The string to read the first line from.
233
+ * @returns The trimmed first line of `str` (everything before the first `\n` newline).
234
+ * @example getFirstLine("first\nsecond") // "first"
235
+ * @see https://dhoulb.github.io/shelving/util/string/getFirstLine
236
+ */
92
237
  export declare function getFirstLine(str: string): string;
93
- /** Is the first character of a string an uppercase letter? */
238
+ /**
239
+ * Is the first character of a string an uppercase letter?
240
+ *
241
+ * @param str The string whose first character is tested.
242
+ * @returns `true` if the first character of `str` is an uppercase A–Z letter, otherwise `false`.
243
+ * @see https://dhoulb.github.io/shelving/util/string/isUppercaseLetter
244
+ */
94
245
  export declare function isUppercaseLetter(str: string): boolean;
95
- /** Is the first character of a string a lowercase letter? */
246
+ /**
247
+ * Is the first character of a string a lowercase letter?
248
+ *
249
+ * @param str The string whose first character is tested.
250
+ * @returns `true` if the first character of `str` is a lowercase a–z letter, otherwise `false`.
251
+ * @see https://dhoulb.github.io/shelving/util/string/isLowercaseLetter
252
+ */
96
253
  export declare function isLowercaseLetter(str: string): boolean;
97
254
  /**
98
255
  * Limit a string to a given length.
99
256
  * - Stops at the last space inside `maxLength`
100
257
  * - Appends an `…` ellipses after the string (but only if a limit is applied).
258
+ *
259
+ * @param str The string to limit.
260
+ * @param maxLength The maximum length of the returned string (before `append` is added).
261
+ * @param append The string to append when a limit is applied (defaults to `"…"`).
262
+ * @returns `str` unchanged if it's shorter than `maxLength`, otherwise truncated with `append` added.
263
+ * @example limitString("the quick brown fox", 9) // "the quick…"
264
+ * @see https://dhoulb.github.io/shelving/util/string/limitString
101
265
  */
102
266
  export declare function limitString(str: string, maxLength: number, append?: string): string;
103
267
  /**
@@ -106,8 +270,15 @@ export declare function limitString(str: string, maxLength: number, append?: str
106
270
  * - Excess segments in `String.prototype.split()` is counterintuitive because further parts are thrown away.
107
271
  * - Excess segments in `splitString()` are concatenated onto the last segment (set `max` to `null` if you want infinite segments).
108
272
  *
109
- * @throws RequiredError if `min` isn't met.
110
- * @throws RequiredError if any of the segments are empty.
273
+ * @param str The string to divide.
274
+ * @param separator The separator to divide `str` on.
275
+ * @param min The minimum number of segments required (defaults to `1`).
276
+ * @param max The maximum number of segments (excess segments are concatenated onto the last; defaults to `Infinity`).
277
+ * @param caller Function to attribute a thrown error to (defaults to `splitString` itself).
278
+ * @returns Array of the divided segments.
279
+ * @throws {ValueError} If `min` isn't met, or if any of the segments are empty.
280
+ * @example splitString("a-b-c", "-", 2, 2) // ["a", "b-c"]
281
+ * @see https://dhoulb.github.io/shelving/util/string/splitString
111
282
  */
112
283
  export declare function splitString(str: string, separator: string, min: 1, max: 1, caller?: AnyCaller): readonly [string];
113
284
  export declare function splitString(str: string, separator: string, min: 2, max: 2, caller?: AnyCaller): readonly [string, string];
@@ -118,7 +289,20 @@ export declare function splitString(str: string, separator: string, min: 2, max?
118
289
  export declare function splitString(str: string, separator: string, min: 3, max?: number, caller?: AnyCaller): readonly [string, string, string, ...string[]];
119
290
  export declare function splitString(str: string, separator: string, min: 4, max?: number, caller?: AnyCaller): readonly [string, string, string, string, ...string[]];
120
291
  export declare function splitString(str: string, separator: string, min?: number, max?: number, caller?: AnyCaller): ImmutableArray<string>;
121
- /** Trim a string (as a function, so it can be used in mapping. */
292
+ /**
293
+ * Trim a string (as a function, so it can be used in mapping).
294
+ *
295
+ * @param str The string to trim.
296
+ * @returns `str` with whitespace trimmed from both ends.
297
+ * @example [" a ", " b "].map(trimString) // ["a", "b"]
298
+ * @see https://dhoulb.github.io/shelving/util/string/trimString
299
+ */
122
300
  export declare function trimString(str: string): string;
123
- /** Does a string have length? */
301
+ /**
302
+ * Does a string have length?
303
+ *
304
+ * @param str The string to test.
305
+ * @returns `true` if `str` has a length greater than zero, otherwise `false`.
306
+ * @see https://dhoulb.github.io/shelving/util/string/isNonEmptyString
307
+ */
124
308
  export declare function isNonEmptyString(str: string): boolean;