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
@@ -1,11 +1,25 @@
1
1
  /**
2
- * Set a state using a "debounce" delay — this ensures that the state is only updated after the specified delay has passed since the last update.
3
- * - Useful for input fields where you want to wait until the user has stopped typing before performing an action (e.g., API call).
2
+ * Hold a piece of state that only updates after a debounce delay since the last set.
3
+ *
4
+ * - The state changes only once `delay` milliseconds have elapsed with no further sets — useful for waiting until a user stops typing before reacting.
5
+ *
6
+ * @param initial The initial state value.
7
+ * @param delay The debounce delay in milliseconds (defaults to `500`).
8
+ * @returns A `[state, setState]` tuple, where `setState` defers the update by `delay`.
9
+ * @example const [query, setQuery] = useDebouncedState("");
10
+ * @see https://dhoulb.github.io/shelving/ui/util/state/useDebouncedState
4
11
  */
5
12
  export declare function useDebouncedState<T>(initial: T, delay?: number): [T, (v: T) => void];
6
13
  /**
7
- * Debounce a callback function the callback will only be invoked after the specified delay has passed since the last call.
8
- * - Useful for triggering form submissions after the user has stopped typing.
9
- * - Automatically cleans up pending timeouts on unmount.
14
+ * Wrap a callback so it only runs after a debounce delay since the last invocation.
15
+ *
16
+ * - Each call resets the timer, so the callback fires once `delay` milliseconds have passed without another call — useful for auto-submitting a form after the user stops typing.
17
+ * - Pending timeouts are cleared automatically on unmount.
18
+ *
19
+ * @param callback The callback to debounce (may be `undefined` to no-op).
20
+ * @param delay The debounce delay in milliseconds (defaults to `500`).
21
+ * @returns A debounced function that schedules `callback` after `delay`.
22
+ * @example const submit = useDebouncedCallback(() => form.submit());
23
+ * @see https://dhoulb.github.io/shelving/ui/util/state/useDebouncedCallback
10
24
  */
11
25
  export declare function useDebouncedCallback(callback: (() => void) | undefined, delay?: number): () => void;
package/ui/util/state.js CHANGED
@@ -1,7 +1,14 @@
1
1
  import { useEffect, useRef, useState } from "react";
2
2
  /**
3
- * Set a state using a "debounce" delay — this ensures that the state is only updated after the specified delay has passed since the last update.
4
- * - Useful for input fields where you want to wait until the user has stopped typing before performing an action (e.g., API call).
3
+ * Hold a piece of state that only updates after a debounce delay since the last set.
4
+ *
5
+ * - The state changes only once `delay` milliseconds have elapsed with no further sets — useful for waiting until a user stops typing before reacting.
6
+ *
7
+ * @param initial The initial state value.
8
+ * @param delay The debounce delay in milliseconds (defaults to `500`).
9
+ * @returns A `[state, setState]` tuple, where `setState` defers the update by `delay`.
10
+ * @example const [query, setQuery] = useDebouncedState("");
11
+ * @see https://dhoulb.github.io/shelving/ui/util/state/useDebouncedState
5
12
  */
6
13
  export function useDebouncedState(initial, delay = 500) {
7
14
  const [state, setState] = useState(initial);
@@ -16,9 +23,16 @@ export function useDebouncedState(initial, delay = 500) {
16
23
  return [state, _internal.setDebouncedState];
17
24
  }
18
25
  /**
19
- * Debounce a callback function the callback will only be invoked after the specified delay has passed since the last call.
20
- * - Useful for triggering form submissions after the user has stopped typing.
21
- * - Automatically cleans up pending timeouts on unmount.
26
+ * Wrap a callback so it only runs after a debounce delay since the last invocation.
27
+ *
28
+ * - Each call resets the timer, so the callback fires once `delay` milliseconds have passed without another call — useful for auto-submitting a form after the user stops typing.
29
+ * - Pending timeouts are cleared automatically on unmount.
30
+ *
31
+ * @param callback The callback to debounce (may be `undefined` to no-op).
32
+ * @param delay The debounce delay in milliseconds (defaults to `500`).
33
+ * @returns A debounced function that schedules `callback` after `delay`.
34
+ * @example const submit = useDebouncedCallback(() => form.submit());
35
+ * @see https://dhoulb.github.io/shelving/ui/util/state/useDebouncedCallback
22
36
  */
23
37
  export function useDebouncedCallback(callback, delay = 500) {
24
38
  const timeoutRef = useRef(null);
package/ui/util/state.ts CHANGED
@@ -1,8 +1,15 @@
1
1
  import { useEffect, useRef, useState } from "react";
2
2
 
3
3
  /**
4
- * Set a state using a "debounce" delay — this ensures that the state is only updated after the specified delay has passed since the last update.
5
- * - Useful for input fields where you want to wait until the user has stopped typing before performing an action (e.g., API call).
4
+ * Hold a piece of state that only updates after a debounce delay since the last set.
5
+ *
6
+ * - The state changes only once `delay` milliseconds have elapsed with no further sets — useful for waiting until a user stops typing before reacting.
7
+ *
8
+ * @param initial The initial state value.
9
+ * @param delay The debounce delay in milliseconds (defaults to `500`).
10
+ * @returns A `[state, setState]` tuple, where `setState` defers the update by `delay`.
11
+ * @example const [query, setQuery] = useDebouncedState("");
12
+ * @see https://dhoulb.github.io/shelving/ui/util/state/useDebouncedState
6
13
  */
7
14
  export function useDebouncedState<T>(initial: T, delay = 500): [T, (v: T) => void] {
8
15
  const [state, setState] = useState(initial);
@@ -17,9 +24,16 @@ export function useDebouncedState<T>(initial: T, delay = 500): [T, (v: T) => voi
17
24
  }
18
25
 
19
26
  /**
20
- * Debounce a callback function the callback will only be invoked after the specified delay has passed since the last call.
21
- * - Useful for triggering form submissions after the user has stopped typing.
22
- * - Automatically cleans up pending timeouts on unmount.
27
+ * Wrap a callback so it only runs after a debounce delay since the last invocation.
28
+ *
29
+ * - Each call resets the timer, so the callback fires once `delay` milliseconds have passed without another call — useful for auto-submitting a form after the user stops typing.
30
+ * - Pending timeouts are cleared automatically on unmount.
31
+ *
32
+ * @param callback The callback to debounce (may be `undefined` to no-op).
33
+ * @param delay The debounce delay in milliseconds (defaults to `500`).
34
+ * @returns A debounced function that schedules `callback` after `delay`.
35
+ * @example const submit = useDebouncedCallback(() => form.submit());
36
+ * @see https://dhoulb.github.io/shelving/ui/util/state/useDebouncedCallback
23
37
  */
24
38
  export function useDebouncedCallback(callback: (() => void) | undefined, delay = 500): () => void {
25
39
  const timeoutRef = useRef<NodeJS.Timeout | null>(null);
package/util/ansi.d.ts CHANGED
@@ -1,37 +1,155 @@
1
1
  import type { ImmutableArray } from "./array.js";
2
+ /**
3
+ * ANSI escape code that resets the foreground colour to the terminal default.
4
+ *
5
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_DEFAULT
6
+ */
2
7
  export declare const ANSI_DEFAULT: "\u001B[39m";
8
+ /**
9
+ * ANSI escape code that sets the foreground colour to black.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_BLACK
12
+ */
3
13
  export declare const ANSI_BLACK: "\u001B[30m";
14
+ /**
15
+ * ANSI escape code that sets the foreground colour to red.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_RED
18
+ */
4
19
  export declare const ANSI_RED: "\u001B[31m";
20
+ /**
21
+ * ANSI escape code that sets the foreground colour to green.
22
+ *
23
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_GREEN
24
+ */
5
25
  export declare const ANSI_GREEN: "\u001B[32m";
26
+ /**
27
+ * ANSI escape code that sets the foreground colour to yellow.
28
+ *
29
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_YELLOW
30
+ */
6
31
  export declare const ANSI_YELLOW: "\u001B[33m";
32
+ /**
33
+ * ANSI escape code that sets the foreground colour to blue.
34
+ *
35
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_BLUE
36
+ */
7
37
  export declare const ANSI_BLUE: "\u001B[34m";
38
+ /**
39
+ * ANSI escape code that sets the foreground colour to magenta.
40
+ *
41
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_MAGENTA
42
+ */
8
43
  export declare const ANSI_MAGENTA: "\u001B[35m";
44
+ /**
45
+ * ANSI escape code that sets the foreground colour to cyan.
46
+ *
47
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_CYAN
48
+ */
9
49
  export declare const ANSI_CYAN: "\u001B[36m";
50
+ /**
51
+ * ANSI escape code that sets the foreground colour to white.
52
+ *
53
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_WHITE
54
+ */
10
55
  export declare const ANSI_WHITE: "\u001B[37m";
56
+ /**
57
+ * ANSI escape code that enables bold text.
58
+ *
59
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_BOLD
60
+ */
11
61
  export declare const ANSI_BOLD: "\u001B[1m";
62
+ /**
63
+ * ANSI escape code that enables italic text.
64
+ *
65
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_ITALIC
66
+ */
12
67
  export declare const ANSI_ITALIC: "\u001B[3m";
68
+ /**
69
+ * ANSI escape code that enables underlined text.
70
+ *
71
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_UNDERLINE
72
+ */
13
73
  export declare const ANSI_UNDERLINE: "\u001B[4m";
74
+ /**
75
+ * ANSI escape code that enables strikethrough text.
76
+ *
77
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_STRIKE
78
+ */
14
79
  export declare const ANSI_STRIKE: "\u001B[9m";
80
+ /**
81
+ * ANSI escape code that enables inverse (swapped foreground/background) text.
82
+ *
83
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_INVERSE
84
+ */
15
85
  export declare const ANSI_INVERSE: "\u001B[7m";
86
+ /**
87
+ * ANSI escape code that resets all colour and style attributes.
88
+ *
89
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_RESET
90
+ */
16
91
  export declare const ANSI_RESET = "\u001B[0m";
17
92
  /**
18
93
  * Wrap a string in the ANSI color/style codes (at the start), and `ANSI_RESET` at the end.
19
94
  *
20
95
  * - The `NO_COLOR` environment variable is read live on every call, so runtimes that populate `process.env` late (e.g. Cloudflare Workers, where `[vars]` bindings are only reliably available within the request scope) are honoured rather than baking in whatever `NO_COLOR` was at module-load time.
96
+ *
97
+ * @param input The string to wrap in ANSI codes.
98
+ * @param wrappers Any number of ANSI escape codes (e.g. `ANSI_RED`, `ANSI_BOLD`) to prepend before `input`.
99
+ * @returns The wrapped string, or `input` unchanged when the `NO_COLOR` environment variable is set.
100
+ * @example ansiWrap("hello", ANSI_RED, ANSI_BOLD) // "\x1b[31m\x1b[1mhello\x1b[0m"
101
+ * @see https://dhoulb.github.io/shelving/util/ansi/ansiWrap
21
102
  */
22
103
  export declare function ansiWrap(input: string, ...wrappers: ImmutableArray<string>): string;
23
104
  /**
24
105
  * A lazily-coloured icon that re-evaluates its ANSI colouring against the live `NO_COLOR` environment variable every time it is converted to a string.
25
106
  *
26
107
  * - Used directly inside template literals (`${ANSI_SUCCESS}`), where JavaScript invokes `toString()` automatically, so the icon is coloured at use-time, not at module-load time.
108
+ *
109
+ * @see https://dhoulb.github.io/shelving/util/ansi/AnsiIcon
27
110
  */
28
111
  export type AnsiIcon = {
29
112
  toString(): string;
30
113
  };
114
+ /**
115
+ * Lazily blue-coloured waiting icon (`⋯`) for use in template literals.
116
+ *
117
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_WAITING
118
+ */
31
119
  export declare const ANSI_WAITING: AnsiIcon;
120
+ /**
121
+ * Lazily green-coloured success icon (`✓`) for use in template literals.
122
+ *
123
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_SUCCESS
124
+ */
32
125
  export declare const ANSI_SUCCESS: AnsiIcon;
126
+ /**
127
+ * Lazily red-coloured failure icon (`✗`) for use in template literals.
128
+ *
129
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_FAILURE
130
+ */
33
131
  export declare const ANSI_FAILURE: AnsiIcon;
132
+ /**
133
+ * Lazily blue-coloured up arrow icon (`↑`) for use in template literals.
134
+ *
135
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_UP
136
+ */
34
137
  export declare const ANSI_UP: AnsiIcon;
138
+ /**
139
+ * Lazily blue-coloured down arrow icon (`↓`) for use in template literals.
140
+ *
141
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_DOWN
142
+ */
35
143
  export declare const ANSI_DOWN: AnsiIcon;
144
+ /**
145
+ * Lazily blue-coloured right arrow icon (`→`) for use in template literals.
146
+ *
147
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_RIGHT
148
+ */
36
149
  export declare const ANSI_RIGHT: AnsiIcon;
150
+ /**
151
+ * Lazily blue-coloured left arrow icon (`←`) for use in template literals.
152
+ *
153
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_LEFT
154
+ */
37
155
  export declare const ANSI_LEFT: AnsiIcon;
package/util/ansi.js CHANGED
@@ -1,27 +1,108 @@
1
1
  import { DOWN, FAILURE, LEFT, RIGHT, SUCCESS, UP, WAITING } from "./constants.js";
2
2
  import { getEnvBoolean } from "./env.js";
3
3
  // Colors.
4
+ /**
5
+ * ANSI escape code that resets the foreground colour to the terminal default.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_DEFAULT
8
+ */
4
9
  export const ANSI_DEFAULT = "\x1b[39m";
10
+ /**
11
+ * ANSI escape code that sets the foreground colour to black.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_BLACK
14
+ */
5
15
  export const ANSI_BLACK = "\x1b[30m";
16
+ /**
17
+ * ANSI escape code that sets the foreground colour to red.
18
+ *
19
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_RED
20
+ */
6
21
  export const ANSI_RED = "\x1b[31m";
22
+ /**
23
+ * ANSI escape code that sets the foreground colour to green.
24
+ *
25
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_GREEN
26
+ */
7
27
  export const ANSI_GREEN = "\x1b[32m";
28
+ /**
29
+ * ANSI escape code that sets the foreground colour to yellow.
30
+ *
31
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_YELLOW
32
+ */
8
33
  export const ANSI_YELLOW = "\x1b[33m";
34
+ /**
35
+ * ANSI escape code that sets the foreground colour to blue.
36
+ *
37
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_BLUE
38
+ */
9
39
  export const ANSI_BLUE = "\x1b[34m";
40
+ /**
41
+ * ANSI escape code that sets the foreground colour to magenta.
42
+ *
43
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_MAGENTA
44
+ */
10
45
  export const ANSI_MAGENTA = "\x1b[35m";
46
+ /**
47
+ * ANSI escape code that sets the foreground colour to cyan.
48
+ *
49
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_CYAN
50
+ */
11
51
  export const ANSI_CYAN = "\x1b[36m";
52
+ /**
53
+ * ANSI escape code that sets the foreground colour to white.
54
+ *
55
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_WHITE
56
+ */
12
57
  export const ANSI_WHITE = "\x1b[37m";
13
58
  // Styles.
59
+ /**
60
+ * ANSI escape code that enables bold text.
61
+ *
62
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_BOLD
63
+ */
14
64
  export const ANSI_BOLD = "\x1b[1m";
65
+ /**
66
+ * ANSI escape code that enables italic text.
67
+ *
68
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_ITALIC
69
+ */
15
70
  export const ANSI_ITALIC = "\x1b[3m";
71
+ /**
72
+ * ANSI escape code that enables underlined text.
73
+ *
74
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_UNDERLINE
75
+ */
16
76
  export const ANSI_UNDERLINE = "\x1b[4m";
77
+ /**
78
+ * ANSI escape code that enables strikethrough text.
79
+ *
80
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_STRIKE
81
+ */
17
82
  export const ANSI_STRIKE = "\x1b[9m";
83
+ /**
84
+ * ANSI escape code that enables inverse (swapped foreground/background) text.
85
+ *
86
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_INVERSE
87
+ */
18
88
  export const ANSI_INVERSE = "\x1b[7m";
19
89
  // Reset.
90
+ /**
91
+ * ANSI escape code that resets all colour and style attributes.
92
+ *
93
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_RESET
94
+ */
20
95
  export const ANSI_RESET = "\x1b[0m";
21
96
  /**
22
97
  * Wrap a string in the ANSI color/style codes (at the start), and `ANSI_RESET` at the end.
23
98
  *
24
99
  * - The `NO_COLOR` environment variable is read live on every call, so runtimes that populate `process.env` late (e.g. Cloudflare Workers, where `[vars]` bindings are only reliably available within the request scope) are honoured rather than baking in whatever `NO_COLOR` was at module-load time.
100
+ *
101
+ * @param input The string to wrap in ANSI codes.
102
+ * @param wrappers Any number of ANSI escape codes (e.g. `ANSI_RED`, `ANSI_BOLD`) to prepend before `input`.
103
+ * @returns The wrapped string, or `input` unchanged when the `NO_COLOR` environment variable is set.
104
+ * @example ansiWrap("hello", ANSI_RED, ANSI_BOLD) // "\x1b[31m\x1b[1mhello\x1b[0m"
105
+ * @see https://dhoulb.github.io/shelving/util/ansi/ansiWrap
25
106
  */
26
107
  export function ansiWrap(input, ...wrappers) {
27
108
  if (getEnvBoolean("NO_COLOR"))
@@ -37,10 +118,45 @@ function _createAnsiIcon(icon, ...wrappers) {
37
118
  };
38
119
  }
39
120
  // Coloured icons.
121
+ /**
122
+ * Lazily blue-coloured waiting icon (`⋯`) for use in template literals.
123
+ *
124
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_WAITING
125
+ */
40
126
  export const ANSI_WAITING = _createAnsiIcon(WAITING, ANSI_BLUE);
127
+ /**
128
+ * Lazily green-coloured success icon (`✓`) for use in template literals.
129
+ *
130
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_SUCCESS
131
+ */
41
132
  export const ANSI_SUCCESS = _createAnsiIcon(SUCCESS, ANSI_GREEN);
133
+ /**
134
+ * Lazily red-coloured failure icon (`✗`) for use in template literals.
135
+ *
136
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_FAILURE
137
+ */
42
138
  export const ANSI_FAILURE = _createAnsiIcon(FAILURE, ANSI_RED);
139
+ /**
140
+ * Lazily blue-coloured up arrow icon (`↑`) for use in template literals.
141
+ *
142
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_UP
143
+ */
43
144
  export const ANSI_UP = _createAnsiIcon(UP, ANSI_BLUE);
145
+ /**
146
+ * Lazily blue-coloured down arrow icon (`↓`) for use in template literals.
147
+ *
148
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_DOWN
149
+ */
44
150
  export const ANSI_DOWN = _createAnsiIcon(DOWN, ANSI_BLUE);
151
+ /**
152
+ * Lazily blue-coloured right arrow icon (`→`) for use in template literals.
153
+ *
154
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_RIGHT
155
+ */
45
156
  export const ANSI_RIGHT = _createAnsiIcon(RIGHT, ANSI_BLUE);
157
+ /**
158
+ * Lazily blue-coloured left arrow icon (`←`) for use in template literals.
159
+ *
160
+ * @see https://dhoulb.github.io/shelving/util/ansi/ANSI_LEFT
161
+ */
46
162
  export const ANSI_LEFT = _createAnsiIcon(LEFT, ANSI_BLUE);