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/bytes.js CHANGED
@@ -1,9 +1,25 @@
1
1
  import { RequiredError } from "../error/RequiredError.js";
2
- /** Is an unknown value a set of bytes? */
2
+ /**
3
+ * Is an unknown value a set of bytes?
4
+ *
5
+ * @param value The value to test.
6
+ * @returns `true` if `value` is a `Uint8Array` backed by an `ArrayBuffer`, narrowing its type.
7
+ * @see https://dhoulb.github.io/shelving/util/bytes/isBytes
8
+ */
3
9
  export function isBytes(value) {
4
10
  return value instanceof Uint8Array && value.buffer instanceof ArrayBuffer;
5
11
  }
6
- /** Assert that an unknown value is a `Uint8Array` byte sequence. */
12
+ /**
13
+ * Assert that an unknown value is a `Uint8Array` byte sequence (optionally with a min/max length).
14
+ *
15
+ * @param value The value to assert.
16
+ * @param min Minimum allowed length (defaults to `0`).
17
+ * @param max Maximum allowed length (defaults to `Infinity`).
18
+ * @param caller Function to attribute a thrown error to (defaults to `assertBytes` itself).
19
+ * @throws {RequiredError} If `value` is not a byte sequence within the allowed length range.
20
+ * @example assertBytes(new Uint8Array([1, 2, 3]), 1, 8);
21
+ * @see https://dhoulb.github.io/shelving/util/bytes/assertBytes
22
+ */
7
23
  export function assertBytes(value, min = 0, max = Number.POSITIVE_INFINITY, caller = assertBytes) {
8
24
  if (!isBytes(value) || value.length < min || value.length > max)
9
25
  throw new RequiredError(`Value must be byte sequence${min > 0 || max < Number.POSITIVE_INFINITY ? ` with length between ${min} and ${max}` : ""}`, { received: value, caller });
@@ -15,6 +31,11 @@ export function assertBytes(value, min = 0, max = Number.POSITIVE_INFINITY, call
15
31
  * - `ArrayBuffer` instances are converted to `Uint8Array`
16
32
  * - Strings are encoded as UTF-8 characters in a `Uint8Array`
17
33
  * - Everything else returns `undefined`
34
+ *
35
+ * @param value The value to convert.
36
+ * @returns The byte sequence, or `undefined` if `value` cannot be converted.
37
+ * @example getBytes("abc") // Uint8Array([97, 98, 99])
38
+ * @see https://dhoulb.github.io/shelving/util/bytes/getBytes
18
39
  */
19
40
  export function getBytes(value) {
20
41
  if (isBytes(value))
@@ -27,6 +48,15 @@ export function getBytes(value) {
27
48
  }
28
49
  /**
29
50
  * Convert a possible set of bytes to a `Uint8Array` byte sequence, or throw `RequiredError` if the value cannot be converted.
51
+ *
52
+ * @param value The possible bytes to convert.
53
+ * @param min Minimum allowed length (defaults to `0`).
54
+ * @param max Maximum allowed length (defaults to `Infinity`).
55
+ * @param caller Function to attribute a thrown error to (defaults to `requireBytes` itself).
56
+ * @returns The converted byte sequence.
57
+ * @throws {RequiredError} If `value` cannot be converted or is outside the allowed length range.
58
+ * @example requireBytes("abc") // Uint8Array([97, 98, 99])
59
+ * @see https://dhoulb.github.io/shelving/util/bytes/requireBytes
30
60
  */
31
61
  export function requireBytes(value, min = 0, max = Number.POSITIVE_INFINITY, caller = requireBytes) {
32
62
  const bytes = getBytes(value);
package/util/class.d.ts CHANGED
@@ -1,17 +1,68 @@
1
1
  import type { Arguments } from "./function.js";
2
- /** Class that has a public `constructor()` function. */
2
+ /**
3
+ * Class that has a public `constructor()` function.
4
+ *
5
+ * @see https://dhoulb.github.io/shelving/util/class/Constructor
6
+ */
3
7
  export type Constructor<T, A extends Arguments> = new (...args: A) => T;
4
- /** Any function arguments (designed for use with `extends Arguments` guards). */
8
+ /**
9
+ * Any class constructor (designed for use with `extends AnyConstructor` guards).
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/util/class/AnyConstructor
12
+ */
5
13
  export type AnyConstructor = new (...args: any) => any;
6
- /** Class prototype that can be used with `instanceof`. */
14
+ /**
15
+ * Class prototype that can be used with `instanceof`.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/util/class/Class
18
+ */
7
19
  export type Class<T> = new (...args: any) => T;
8
- /** Is a given value a class constructor? */
20
+ /**
21
+ * Is a given value a class constructor?
22
+ *
23
+ * @param value The value to test.
24
+ * @returns `true` if `value` is a class constructor, narrowing its type.
25
+ * @example isConstructor(class {}) // true
26
+ * @see https://dhoulb.github.io/shelving/util/class/isConstructor
27
+ */
9
28
  export declare function isConstructor(value: unknown): value is AnyConstructor;
10
- /** Is a value an instance of a class? */
29
+ /**
30
+ * Is a value an instance of a class?
31
+ *
32
+ * @param value The value to test.
33
+ * @param type The class to test `value` against.
34
+ * @returns `true` if `value` is an instance of `type`, narrowing its type.
35
+ * @example isInstance(new Date(), Date) // true
36
+ * @see https://dhoulb.github.io/shelving/util/class/isInstance
37
+ */
11
38
  export declare function isInstance<T>(value: unknown, type: Class<T>): value is T;
12
- /** Assert that a value is an instance of something. */
39
+ /**
40
+ * Assert that a value is an instance of something.
41
+ *
42
+ * @param value The value to assert.
43
+ * @param type The class `value` must be an instance of.
44
+ * @throws {RequiredError} If `value` is not an instance of `type`.
45
+ * @example assertInstance(new Date(), Date); // passes
46
+ * @see https://dhoulb.github.io/shelving/util/class/assertInstance
47
+ */
13
48
  export declare function assertInstance<T>(value: unknown, type: Class<T>): asserts value is T;
14
- /** Get the 'getter' function for a given property, or `undefined` if it doesn't exist. */
49
+ /**
50
+ * Get the 'getter' function for a given property, or `undefined` if it doesn't exist.
51
+ *
52
+ * @param obj The object to read the property descriptor from.
53
+ * @param prop The property name to look up.
54
+ * @returns The getter function bound to `T`, or `undefined` if the property has no getter.
55
+ * @example getGetter(obj, "size") // () => number | undefined
56
+ * @see https://dhoulb.github.io/shelving/util/class/getGetter
57
+ */
15
58
  export declare function getGetter<T extends Object, K extends keyof T>(obj: T, prop: K): ((this: T) => T[K]) | undefined;
16
- /** Get the 'setter' function for a given property, or `undefined` if it doesn't exist. */
59
+ /**
60
+ * Get the 'setter' function for a given property, or `undefined` if it doesn't exist.
61
+ *
62
+ * @param obj The object whose prototype is searched for the property descriptor.
63
+ * @param prop The property name to look up.
64
+ * @returns The setter function bound to `T`, or `undefined` if the property has no setter.
65
+ * @example getSetter(obj, "size") // (value: number) => void | undefined
66
+ * @see https://dhoulb.github.io/shelving/util/class/getSetter
67
+ */
17
68
  export declare function getSetter<T extends Object, K extends keyof T>(obj: T, prop: K): ((this: T, value: T[K]) => void) | undefined;
package/util/class.js CHANGED
@@ -1,24 +1,63 @@
1
1
  import { RequiredError } from "../error/RequiredError.js";
2
- /** Is a given value a class constructor? */
2
+ /**
3
+ * Is a given value a class constructor?
4
+ *
5
+ * @param value The value to test.
6
+ * @returns `true` if `value` is a class constructor, narrowing its type.
7
+ * @example isConstructor(class {}) // true
8
+ * @see https://dhoulb.github.io/shelving/util/class/isConstructor
9
+ */
3
10
  export function isConstructor(value) {
4
11
  return typeof value === "function" && value.toString().startsWith("class");
5
12
  }
6
- /** Is a value an instance of a class? */
13
+ /**
14
+ * Is a value an instance of a class?
15
+ *
16
+ * @param value The value to test.
17
+ * @param type The class to test `value` against.
18
+ * @returns `true` if `value` is an instance of `type`, narrowing its type.
19
+ * @example isInstance(new Date(), Date) // true
20
+ * @see https://dhoulb.github.io/shelving/util/class/isInstance
21
+ */
7
22
  export function isInstance(value, type) {
8
23
  return value instanceof type;
9
24
  }
10
- /** Assert that a value is an instance of something. */
25
+ /**
26
+ * Assert that a value is an instance of something.
27
+ *
28
+ * @param value The value to assert.
29
+ * @param type The class `value` must be an instance of.
30
+ * @throws {RequiredError} If `value` is not an instance of `type`.
31
+ * @example assertInstance(new Date(), Date); // passes
32
+ * @see https://dhoulb.github.io/shelving/util/class/assertInstance
33
+ */
11
34
  export function assertInstance(value, type) {
12
35
  if (!(value instanceof type))
13
36
  throw new RequiredError(`Must be instance of class "${type.name}"`, { received: value, expected: type, caller: assertInstance });
14
37
  }
15
- /** Get the 'getter' function for a given property, or `undefined` if it doesn't exist. */
38
+ /**
39
+ * Get the 'getter' function for a given property, or `undefined` if it doesn't exist.
40
+ *
41
+ * @param obj The object to read the property descriptor from.
42
+ * @param prop The property name to look up.
43
+ * @returns The getter function bound to `T`, or `undefined` if the property has no getter.
44
+ * @example getGetter(obj, "size") // () => number | undefined
45
+ * @see https://dhoulb.github.io/shelving/util/class/getGetter
46
+ */
16
47
  // biome-ignore lint/complexity/noBannedTypes: This is correct here.
17
48
  export function getGetter(obj, prop) {
18
49
  const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
19
50
  return descriptor && typeof descriptor.get === "function" ? descriptor.get : undefined;
20
51
  }
21
- /** Get the 'setter' function for a given property, or `undefined` if it doesn't exist. */
52
+ /**
53
+ * Get the 'setter' function for a given property, or `undefined` if it doesn't exist.
54
+ *
55
+ * @param obj The object whose prototype is searched for the property descriptor.
56
+ * @param prop The property name to look up.
57
+ * @returns The setter function bound to `T`, or `undefined` if the property has no setter.
58
+ * @example getSetter(obj, "size") // (value: number) => void | undefined
59
+ * @see https://dhoulb.github.io/shelving/util/class/getSetter
60
+ */
22
61
  // biome-ignore lint/complexity/noBannedTypes: This is correct here.
23
62
  export function getSetter(obj, prop) {
24
63
  const descriptor = Object.getOwnPropertyDescriptor(obj.constructor.prototype, prop);
package/util/color.d.ts CHANGED
@@ -1,36 +1,154 @@
1
1
  import type { AnyCaller } from "./function.js";
2
+ /**
3
+ * Regular expression matching a three-digit hex color (e.g. `#F00`), capturing each channel.
4
+ *
5
+ * @see https://dhoulb.github.io/shelving/util/color/HEX3_REGEXP
6
+ */
2
7
  export declare const HEX3_REGEXP: RegExp;
8
+ /**
9
+ * Regular expression matching a six or eight digit hex color (e.g. `#FF0000` or `#FF0000FF`), capturing each channel.
10
+ *
11
+ * @see https://dhoulb.github.io/shelving/util/color/HEX6_REGEXP
12
+ */
3
13
  export declare const HEX6_REGEXP: RegExp;
4
- /** Things that can be converted to a `Color` instance. */
14
+ /**
15
+ * Things that can be converted to a `Color` instance.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/util/color/PossibleColor
18
+ */
5
19
  export type PossibleColor = Color | string;
6
- /** Represent a color. */
20
+ /**
21
+ * Represents an RGBA color with red, green, blue, and alpha channels (each `0`–`255`).
22
+ *
23
+ * @example new Color(255, 0, 0).hex // "#FF0000"
24
+ * @see https://dhoulb.github.io/shelving/util/color/Color
25
+ */
7
26
  export declare class Color {
8
- /** Make a `Color` from an unknown value. */
27
+ /**
28
+ * Make a `Color` from an unknown value, or `undefined` if it can't be parsed.
29
+ *
30
+ * @param possible The value to parse, typically a `Color` instance or a three/six/eight digit hex string.
31
+ * @returns The parsed `Color`, or `undefined` if `possible` cannot be converted.
32
+ * @example Color.from("#F00") // Color(255, 0, 0)
33
+ * @see https://dhoulb.github.io/shelving/util/color/Color/from
34
+ */
9
35
  static from(possible: unknown): Color | undefined;
36
+ /**
37
+ * Red channel, bounded to `0`–`255`.
38
+ *
39
+ * @see https://dhoulb.github.io/shelving/util/color/Color/r
40
+ */
10
41
  readonly r: number;
42
+ /**
43
+ * Green channel, bounded to `0`–`255`.
44
+ *
45
+ * @see https://dhoulb.github.io/shelving/util/color/Color/g
46
+ */
11
47
  readonly g: number;
48
+ /**
49
+ * Blue channel, bounded to `0`–`255`.
50
+ *
51
+ * @see https://dhoulb.github.io/shelving/util/color/Color/b
52
+ */
12
53
  readonly b: number;
54
+ /**
55
+ * Alpha channel, bounded to `0`–`255`.
56
+ *
57
+ * @see https://dhoulb.github.io/shelving/util/color/Color/a
58
+ */
13
59
  readonly a: number;
60
+ /**
61
+ * Create a new `Color` from red, green, blue, and alpha channel values.
62
+ *
63
+ * @param r Red channel, bounded to `0`–`255` (defaults to `255`).
64
+ * @param g Green channel, bounded to `0`–`255` (defaults to `255`).
65
+ * @param b Blue channel, bounded to `0`–`255` (defaults to `255`).
66
+ * @param a Alpha channel, bounded to `0`–`255` (defaults to `255`).
67
+ * @example new Color(255, 0, 0) // opaque red
68
+ * @see https://dhoulb.github.io/shelving/util/color/Color/constructor
69
+ */
14
70
  constructor(r?: number, g?: number, b?: number, a?: number);
15
- /** Convert this color to a six or eight digit hex color. */
71
+ /**
72
+ * This color as a six or eight digit hex string (eight digits when the alpha channel is less than `255`).
73
+ *
74
+ * @see https://dhoulb.github.io/shelving/util/color/Color/hex
75
+ */
16
76
  get hex(): string;
17
- /** Convert this color to an `rgb()` string. */
77
+ /**
78
+ * This color as a CSS `rgb()` string.
79
+ *
80
+ * @see https://dhoulb.github.io/shelving/util/color/Color/rgb
81
+ */
18
82
  get rgb(): string;
19
- /** Convert this color to an `rgba()` string. */
83
+ /**
84
+ * This color as a CSS `rgba()` string.
85
+ *
86
+ * @see https://dhoulb.github.io/shelving/util/color/Color/rgba
87
+ */
20
88
  get rgba(): string;
21
- /** Get the sRGB luminance of this color. */
89
+ /**
90
+ * The sRGB luminance of this color (`0`–`255`).
91
+ *
92
+ * @see https://dhoulb.github.io/shelving/util/color/Color/luminance
93
+ */
22
94
  get luminance(): number;
23
- /** Is this color light. */
95
+ /**
96
+ * Whether this color is light (its luminance is above the dark/light threshold).
97
+ *
98
+ * @see https://dhoulb.github.io/shelving/util/color/Color/isLight
99
+ */
24
100
  get isLight(): boolean;
25
- /** Is this color dark. */
101
+ /**
102
+ * Whether this color is dark (its luminance is at or below the dark/light threshold).
103
+ *
104
+ * @see https://dhoulb.github.io/shelving/util/color/Color/isDark
105
+ */
26
106
  get isDark(): boolean;
107
+ /**
108
+ * Return this color as an `rgba()` string.
109
+ *
110
+ * @returns This color formatted as a CSS `rgba()` string.
111
+ * @example String(new Color(255, 0, 0)) // "rgba(255, 0, 0, 1)"
112
+ * @see https://dhoulb.github.io/shelving/util/color/Color/toString
113
+ */
27
114
  toString(): string;
28
115
  }
29
- /** Is an unknown value a `Color` instance. */
116
+ /**
117
+ * Is an unknown value a `Color` instance?
118
+ *
119
+ * @param value The value to test.
120
+ * @returns `true` if `value` is a `Color`, narrowing its type.
121
+ * @example isColor(new Color()) // true
122
+ * @see https://dhoulb.github.io/shelving/util/color/isColor
123
+ */
30
124
  export declare function isColor(value: unknown): value is Color;
31
- /** Assert that an unknown value is a `Color` instance. */
125
+ /**
126
+ * Assert that an unknown value is a `Color` instance.
127
+ *
128
+ * @param value The value to assert.
129
+ * @param caller Function to attribute a thrown error to (defaults to `assertColor` itself).
130
+ * @throws {RequiredError} If `value` is not a `Color` instance.
131
+ * @example assertColor(new Color());
132
+ * @see https://dhoulb.github.io/shelving/util/color/assertColor
133
+ */
32
134
  export declare function assertColor(value: unknown, caller?: AnyCaller): asserts value is Color;
33
- /** Convert an unknown value to a `Color` instance, or return `undefined` if conversion fails. */
135
+ /**
136
+ * Convert an unknown value to a `Color` instance, or return `undefined` if conversion fails.
137
+ *
138
+ * @param value The value to convert.
139
+ * @returns The converted `Color`, or `undefined` if `value` cannot be converted.
140
+ * @example getColor("#F00") // Color(255, 0, 0)
141
+ * @see https://dhoulb.github.io/shelving/util/color/getColor
142
+ */
34
143
  export declare function getColor(value: unknown): Color | undefined;
35
- /** Convert a possible color to a `Color` instance, or throw `RequiredError` if it can't be converted. */
144
+ /**
145
+ * Convert a possible color to a `Color` instance, or throw `RequiredError` if it can't be converted.
146
+ *
147
+ * @param value The possible color to convert.
148
+ * @param caller Function to attribute a thrown error to (defaults to `requireColor` itself).
149
+ * @returns The converted `Color`.
150
+ * @throws {RequiredError} If `value` cannot be converted to a `Color`.
151
+ * @example requireColor("#F00") // Color(255, 0, 0)
152
+ * @see https://dhoulb.github.io/shelving/util/color/requireColor
153
+ */
36
154
  export declare function requireColor(value: PossibleColor, caller?: AnyCaller): Color;
package/util/color.js CHANGED
@@ -3,11 +3,33 @@ import { boundNumber, roundNumber } from "./number.js";
3
3
  // Constants.
4
4
  const DARK = 140; // Anything with a luminance > 140 is considered light.
5
5
  // Regular expressions.
6
+ /**
7
+ * Regular expression matching a three-digit hex color (e.g. `#F00`), capturing each channel.
8
+ *
9
+ * @see https://dhoulb.github.io/shelving/util/color/HEX3_REGEXP
10
+ */
6
11
  export const HEX3_REGEXP = /^#?([0-F])([0-F])([0-F])$/i;
12
+ /**
13
+ * Regular expression matching a six or eight digit hex color (e.g. `#FF0000` or `#FF0000FF`), capturing each channel.
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/util/color/HEX6_REGEXP
16
+ */
7
17
  export const HEX6_REGEXP = /^#?([0-F]{2})([0-F]{2})([0-F]{2})([0-F]{2})?$/i;
8
- /** Represent a color. */
18
+ /**
19
+ * Represents an RGBA color with red, green, blue, and alpha channels (each `0`–`255`).
20
+ *
21
+ * @example new Color(255, 0, 0).hex // "#FF0000"
22
+ * @see https://dhoulb.github.io/shelving/util/color/Color
23
+ */
9
24
  export class Color {
10
- /** Make a `Color` from an unknown value. */
25
+ /**
26
+ * Make a `Color` from an unknown value, or `undefined` if it can't be parsed.
27
+ *
28
+ * @param possible The value to parse, typically a `Color` instance or a three/six/eight digit hex string.
29
+ * @returns The parsed `Color`, or `undefined` if `possible` cannot be converted.
30
+ * @example Color.from("#F00") // Color(255, 0, 0)
31
+ * @see https://dhoulb.github.io/shelving/util/color/Color/from
32
+ */
11
33
  static from(possible) {
12
34
  if (isColor(possible))
13
35
  return possible;
@@ -19,41 +41,102 @@ export class Color {
19
41
  }
20
42
  }
21
43
  }
44
+ /**
45
+ * Red channel, bounded to `0`–`255`.
46
+ *
47
+ * @see https://dhoulb.github.io/shelving/util/color/Color/r
48
+ */
22
49
  r;
50
+ /**
51
+ * Green channel, bounded to `0`–`255`.
52
+ *
53
+ * @see https://dhoulb.github.io/shelving/util/color/Color/g
54
+ */
23
55
  g;
56
+ /**
57
+ * Blue channel, bounded to `0`–`255`.
58
+ *
59
+ * @see https://dhoulb.github.io/shelving/util/color/Color/b
60
+ */
24
61
  b;
62
+ /**
63
+ * Alpha channel, bounded to `0`–`255`.
64
+ *
65
+ * @see https://dhoulb.github.io/shelving/util/color/Color/a
66
+ */
25
67
  a;
68
+ /**
69
+ * Create a new `Color` from red, green, blue, and alpha channel values.
70
+ *
71
+ * @param r Red channel, bounded to `0`–`255` (defaults to `255`).
72
+ * @param g Green channel, bounded to `0`–`255` (defaults to `255`).
73
+ * @param b Blue channel, bounded to `0`–`255` (defaults to `255`).
74
+ * @param a Alpha channel, bounded to `0`–`255` (defaults to `255`).
75
+ * @example new Color(255, 0, 0) // opaque red
76
+ * @see https://dhoulb.github.io/shelving/util/color/Color/constructor
77
+ */
26
78
  constructor(r = 255, g = 255, b = 255, a = 255) {
27
79
  this.r = boundNumber(r, 0, 255);
28
80
  this.g = boundNumber(g, 0, 255);
29
81
  this.b = boundNumber(b, 0, 255);
30
82
  this.a = boundNumber(a, 0, 255);
31
83
  }
32
- /** Convert this color to a six or eight digit hex color. */
84
+ /**
85
+ * This color as a six or eight digit hex string (eight digits when the alpha channel is less than `255`).
86
+ *
87
+ * @see https://dhoulb.github.io/shelving/util/color/Color/hex
88
+ */
33
89
  get hex() {
34
90
  return `#${_hex(this.r)}${_hex(this.g)}${_hex(this.b)}${this.a < 255 ? _hex(this.a) : ""}`;
35
91
  }
36
- /** Convert this color to an `rgb()` string. */
92
+ /**
93
+ * This color as a CSS `rgb()` string.
94
+ *
95
+ * @see https://dhoulb.github.io/shelving/util/color/Color/rgb
96
+ */
37
97
  get rgb() {
38
98
  return `rgb(${this.r}, ${this.g}, ${this.b})`;
39
99
  }
40
- /** Convert this color to an `rgba()` string. */
100
+ /**
101
+ * This color as a CSS `rgba()` string.
102
+ *
103
+ * @see https://dhoulb.github.io/shelving/util/color/Color/rgba
104
+ */
41
105
  get rgba() {
42
106
  return `rgba(${this.r}, ${this.g}, ${this.b}, ${roundNumber(this.a / 256, 4)})`;
43
107
  }
44
- /** Get the sRGB luminance of this color. */
108
+ /**
109
+ * The sRGB luminance of this color (`0`–`255`).
110
+ *
111
+ * @see https://dhoulb.github.io/shelving/util/color/Color/luminance
112
+ */
45
113
  get luminance() {
46
114
  // Green is the largest component of the luminence, etc.
47
115
  return Math.round(0.2126 * this.r + 0.7152 * this.g + 0.0722 * this.b);
48
116
  }
49
- /** Is this color light. */
117
+ /**
118
+ * Whether this color is light (its luminance is above the dark/light threshold).
119
+ *
120
+ * @see https://dhoulb.github.io/shelving/util/color/Color/isLight
121
+ */
50
122
  get isLight() {
51
123
  return this.luminance > DARK;
52
124
  }
53
- /** Is this color dark. */
125
+ /**
126
+ * Whether this color is dark (its luminance is at or below the dark/light threshold).
127
+ *
128
+ * @see https://dhoulb.github.io/shelving/util/color/Color/isDark
129
+ */
54
130
  get isDark() {
55
131
  return this.luminance <= DARK;
56
132
  }
133
+ /**
134
+ * Return this color as an `rgba()` string.
135
+ *
136
+ * @returns This color formatted as a CSS `rgba()` string.
137
+ * @example String(new Color(255, 0, 0)) // "rgba(255, 0, 0, 1)"
138
+ * @see https://dhoulb.github.io/shelving/util/color/Color/toString
139
+ */
57
140
  toString() {
58
141
  return this.rgba;
59
142
  }
@@ -64,20 +147,51 @@ function _parse(hex) {
64
147
  function _hex(channel) {
65
148
  return channel.toString(16).padStart(2, "00");
66
149
  }
67
- /** Is an unknown value a `Color` instance. */
150
+ /**
151
+ * Is an unknown value a `Color` instance?
152
+ *
153
+ * @param value The value to test.
154
+ * @returns `true` if `value` is a `Color`, narrowing its type.
155
+ * @example isColor(new Color()) // true
156
+ * @see https://dhoulb.github.io/shelving/util/color/isColor
157
+ */
68
158
  export function isColor(value) {
69
159
  return value instanceof Color;
70
160
  }
71
- /** Assert that an unknown value is a `Color` instance. */
161
+ /**
162
+ * Assert that an unknown value is a `Color` instance.
163
+ *
164
+ * @param value The value to assert.
165
+ * @param caller Function to attribute a thrown error to (defaults to `assertColor` itself).
166
+ * @throws {RequiredError} If `value` is not a `Color` instance.
167
+ * @example assertColor(new Color());
168
+ * @see https://dhoulb.github.io/shelving/util/color/assertColor
169
+ */
72
170
  export function assertColor(value, caller = assertColor) {
73
171
  if (!isColor(value))
74
172
  throw new RequiredError("Must be color", { received: value, caller });
75
173
  }
76
- /** Convert an unknown value to a `Color` instance, or return `undefined` if conversion fails. */
174
+ /**
175
+ * Convert an unknown value to a `Color` instance, or return `undefined` if conversion fails.
176
+ *
177
+ * @param value The value to convert.
178
+ * @returns The converted `Color`, or `undefined` if `value` cannot be converted.
179
+ * @example getColor("#F00") // Color(255, 0, 0)
180
+ * @see https://dhoulb.github.io/shelving/util/color/getColor
181
+ */
77
182
  export function getColor(value) {
78
183
  return Color.from(value);
79
184
  }
80
- /** Convert a possible color to a `Color` instance, or throw `RequiredError` if it can't be converted. */
185
+ /**
186
+ * Convert a possible color to a `Color` instance, or throw `RequiredError` if it can't be converted.
187
+ *
188
+ * @param value The possible color to convert.
189
+ * @param caller Function to attribute a thrown error to (defaults to `requireColor` itself).
190
+ * @returns The converted `Color`.
191
+ * @throws {RequiredError} If `value` cannot be converted to a `Color`.
192
+ * @example requireColor("#F00") // Color(255, 0, 0)
193
+ * @see https://dhoulb.github.io/shelving/util/color/requireColor
194
+ */
81
195
  export function requireColor(value, caller = requireColor) {
82
196
  const color = getColor(value);
83
197
  assertColor(color, caller);