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
@@ -5,13 +5,26 @@ import { getURL } from "../util/url.js";
5
5
  import { NULLABLE } from "./NullableSchema.js";
6
6
  import { StringSchema } from "./StringSchema.js";
7
7
  /**
8
- * Type of `StringSchema` that defines a valid URL string.
9
- * - Checks URL scheme against a whitelist (always), and checks URL domain against a whitelist (optional).
10
- * - URLs are limited to 512 characters, but generally these won't be data: URIs so this is a reasonable limit.
8
+ * Schema that defines a valid absolute or relative URL string.
9
+ *
10
+ * - Checks the URL scheme against a whitelist (always), and resolves relative URLs against `base` when set.
11
+ * - URLs are limited to 512 characters, but generally these won't be `data:` URIs so this is a reasonable limit.
12
+ *
13
+ * @example
14
+ * const schema = new URLSchema({ base: "https://example.com" });
15
+ * schema.validate("/page") // "https://example.com/page"
16
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema
11
17
  */
12
18
  export class URLSchema extends StringSchema {
19
+ /** Base URL that relative URLs are resolved against, or `undefined` when not set. */
13
20
  base;
21
+ /** Whitelist of allowed URL schemes, e.g. `["https:", "http:"]`. */
14
22
  schemes;
23
+ /**
24
+ * Create a new `URLSchema`.
25
+ *
26
+ * @param options Options for the schema (`base`, `schemes`, plus inherited string options like `one`, `title`, `value`).
27
+ */
15
28
  constructor({ one = "URL", title = "URL", base, schemes = HTTP_SCHEMES, ...options }) {
16
29
  super({
17
30
  one,
@@ -25,7 +38,17 @@ export class URLSchema extends StringSchema {
25
38
  this.base = getURL(base)?.href;
26
39
  this.schemes = schemes;
27
40
  }
28
- // Override to validate the URL and check the schemes and hosts against the whitelists.
41
+ /**
42
+ * Validate an unknown input value and return a normalised absolute URL string.
43
+ *
44
+ * - Override to validate the URL and check the scheme and host against the whitelists.
45
+ *
46
+ * @param unsafeValue The unknown input value to validate.
47
+ * @returns The valid, fully-resolved URL string.
48
+ * @throws `string` error message if the value is empty, malformed, or uses a disallowed scheme.
49
+ * @example schema.validate("https://www.google.com") // "https://www.google.com/"
50
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema/validate
51
+ */
29
52
  validate(unsafeValue) {
30
53
  const str = super.validate(unsafeValue);
31
54
  const url = getURL(str, this.base);
@@ -35,15 +58,47 @@ export class URLSchema extends StringSchema {
35
58
  throw `Invalid ${this.one} scheme`;
36
59
  return url.href;
37
60
  }
61
+ /**
62
+ * Sanitize a string before validation by stripping all whitespace.
63
+ *
64
+ * - URLs never contain whitespace (a real space must be `%20`-encoded), so strip it entirely.
65
+ *
66
+ * @param str The raw string to sanitize.
67
+ * @returns The sanitized string with all whitespace removed.
68
+ * @example schema.sanitize(" https://a.com ") // "https://a.com"
69
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema/sanitize
70
+ */
38
71
  sanitize(str) {
39
72
  // URLs never contain whitespace (a real space must be `%20`-encoded), so strip it entirely.
40
73
  return sanitizeWord(str);
41
74
  }
75
+ /**
76
+ * Format a validated URL string for display.
77
+ *
78
+ * @param value The valid URL string to format.
79
+ * @returns The URL formatted as a human-readable string.
80
+ * @example schema.format("https://www.google.com/") // "www.google.com"
81
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URLSchema/format
82
+ */
42
83
  format(value) {
43
84
  return formatURL(value, this.base, this.format);
44
85
  }
45
86
  }
46
- /** Valid URL string, e.g. `https://www.google.com` */
87
+ /**
88
+ * Valid URL string, e.g. `https://www.google.com`.
89
+ *
90
+ * *Factory for `URLSchema`.*
91
+ *
92
+ * @example URL_SCHEMA.validate("https://www.google.com") // "https://www.google.com/"
93
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/URL_SCHEMA
94
+ */
47
95
  export const URL_SCHEMA = new URLSchema({});
48
- /** Valid URL string, e.g. `https://www.google.com`, or `null` */
96
+ /**
97
+ * Valid URL string, e.g. `https://www.google.com`, or `null`.
98
+ *
99
+ * *Factory for `NullableSchema`.*
100
+ *
101
+ * @example NULLABLE_URL_SCHEMA.validate(null) // null
102
+ * @see https://dhoulb.github.io/shelving/schema/URLSchema/NULLABLE_URL_SCHEMA
103
+ */
49
104
  export const NULLABLE_URL_SCHEMA = NULLABLE(URL_SCHEMA);
@@ -1,14 +1,47 @@
1
1
  import { StringSchema, type StringSchemaOptions } from "./StringSchema.js";
2
2
  /**
3
- * Type of `StringSchema` that defines a valid UUID (versions 1-5). Defaults to any-version validation.
3
+ * Schema that defines a valid UUID string (versions 1-5). Defaults to any-version validation.
4
+ *
4
5
  * - Input is trimmed and lowercased.
5
- * - Falsy values are converted to empty string.
6
+ * - Falsy values are converted to an empty string.
7
+ *
8
+ * @example
9
+ * const schema = new UUIDSchema({});
10
+ * schema.validate("F47AC10B-58CC-4372-A567-0E02B2C3D479") // "f47ac10b-58cc-4372-a567-0e02b2c3d479"
11
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/UUIDSchema
6
12
  */
7
13
  export declare class UUIDSchema extends StringSchema {
14
+ /**
15
+ * Create a new `UUIDSchema`.
16
+ *
17
+ * @param options Options for the schema (inherited string options like `one`, `title`, `value`).
18
+ */
8
19
  constructor({ one, title, ...rest }?: Omit<StringSchemaOptions, "input" | "min" | "max" | "match" | "rows">);
20
+ /**
21
+ * Sanitize a string before validation by normalising it into a canonical UUID.
22
+ *
23
+ * @param str The raw string to sanitize.
24
+ * @returns The sanitized UUID, or an empty string when the input is not a valid UUID.
25
+ * @example schema.sanitize("F47AC10B58CC4372A5670E02B2C3D479") // "f47ac10b-58cc-4372-a567-0e02b2c3d479"
26
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/UUIDSchema/sanitize
27
+ */
9
28
  sanitize(str: string): string;
10
29
  }
11
- /** Any valid UUID (versions 1-5) */
30
+ /**
31
+ * Any valid UUID (versions 1-5).
32
+ *
33
+ * *Factory for `UUIDSchema`.*
34
+ *
35
+ * @example UUID.validate("F47AC10B-58CC-4372-A567-0E02B2C3D479") // "f47ac10b-58cc-4372-a567-0e02b2c3d479"
36
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/UUID
37
+ */
12
38
  export declare const UUID: UUIDSchema;
13
- /** Any valid UUID (versions 1-5) or null */
39
+ /**
40
+ * Any valid UUID (versions 1-5), or `null`.
41
+ *
42
+ * *Factory for `NullableSchema`.*
43
+ *
44
+ * @example NULLABLE_UUID.validate(null) // null
45
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/NULLABLE_UUID
46
+ */
14
47
  export declare const NULLABLE_UUID: import("./NullableSchema.js").NullableSchema<string>;
@@ -2,11 +2,22 @@ import { getUUID } from "../util/uuid.js";
2
2
  import { NULLABLE } from "./NullableSchema.js";
3
3
  import { StringSchema } from "./StringSchema.js";
4
4
  /**
5
- * Type of `StringSchema` that defines a valid UUID (versions 1-5). Defaults to any-version validation.
5
+ * Schema that defines a valid UUID string (versions 1-5). Defaults to any-version validation.
6
+ *
6
7
  * - Input is trimmed and lowercased.
7
- * - Falsy values are converted to empty string.
8
+ * - Falsy values are converted to an empty string.
9
+ *
10
+ * @example
11
+ * const schema = new UUIDSchema({});
12
+ * schema.validate("F47AC10B-58CC-4372-A567-0E02B2C3D479") // "f47ac10b-58cc-4372-a567-0e02b2c3d479"
13
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/UUIDSchema
8
14
  */
9
15
  export class UUIDSchema extends StringSchema {
16
+ /**
17
+ * Create a new `UUIDSchema`.
18
+ *
19
+ * @param options Options for the schema (inherited string options like `one`, `title`, `value`).
20
+ */
10
21
  constructor({ one = "UUID", title = "UUID", ...rest } = {}) {
11
22
  super({
12
23
  one,
@@ -17,11 +28,33 @@ export class UUIDSchema extends StringSchema {
17
28
  rows: 1,
18
29
  });
19
30
  }
31
+ /**
32
+ * Sanitize a string before validation by normalising it into a canonical UUID.
33
+ *
34
+ * @param str The raw string to sanitize.
35
+ * @returns The sanitized UUID, or an empty string when the input is not a valid UUID.
36
+ * @example schema.sanitize("F47AC10B58CC4372A5670E02B2C3D479") // "f47ac10b-58cc-4372-a567-0e02b2c3d479"
37
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/UUIDSchema/sanitize
38
+ */
20
39
  sanitize(str) {
21
40
  return getUUID(str) || "";
22
41
  }
23
42
  }
24
- /** Any valid UUID (versions 1-5) */
43
+ /**
44
+ * Any valid UUID (versions 1-5).
45
+ *
46
+ * *Factory for `UUIDSchema`.*
47
+ *
48
+ * @example UUID.validate("F47AC10B-58CC-4372-A567-0E02B2C3D479") // "f47ac10b-58cc-4372-a567-0e02b2c3d479"
49
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/UUID
50
+ */
25
51
  export const UUID = new UUIDSchema({ title: "ID" });
26
- /** Any valid UUID (versions 1-5) or null */
52
+ /**
53
+ * Any valid UUID (versions 1-5), or `null`.
54
+ *
55
+ * *Factory for `NullableSchema`.*
56
+ *
57
+ * @example NULLABLE_UUID.validate(null) // null
58
+ * @see https://dhoulb.github.io/shelving/schema/UUIDSchema/NULLABLE_UUID
59
+ */
27
60
  export const NULLABLE_UUID = NULLABLE(UUID);
@@ -1,9 +1,19 @@
1
1
  import type { Deferred } from "../util/async.js";
2
2
  import type { Nullable } from "../util/null.js";
3
3
  import { Sequence } from "./Sequence.js";
4
+ /**
5
+ * Result representing a rejection in a `DeferredSequence`, carrying the thrown `reason`.
6
+ *
7
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredErrorResult
8
+ */
4
9
  export type DeferredErrorResult = {
5
10
  readonly reason: unknown;
6
11
  };
12
+ /**
13
+ * Pending result of a `DeferredSequence` — either a standard `IteratorResult` or a `DeferredErrorResult` rejection.
14
+ *
15
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredResult
16
+ */
7
17
  export type DeferredResult<T, R> = IteratorResult<T, R | undefined> | DeferredErrorResult;
8
18
  /**
9
19
  * Deferred sequence of values that can be async iterated and new values can be published.
@@ -11,6 +21,14 @@ export type DeferredResult<T, R> = IteratorResult<T, R | undefined> | DeferredEr
11
21
  * - Implements `Promise` so the next result can be awaited.
12
22
  * - Implements `AsyncIterable` so values can be iterated over using `for await...of`
13
23
  * - Call `resolve(value)` to publish the next value, `reject(reason?)` to publish an error, or `done(value?)` to signal completion.
24
+ *
25
+ * @example
26
+ * const seq = new DeferredSequence<number>();
27
+ * (async () => { for await (const n of seq) console.log(n); })();
28
+ * seq.resolve(1);
29
+ * seq.resolve(2);
30
+ * seq.done();
31
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence
14
32
  */
15
33
  export declare class DeferredSequence<T = void, R = void, N = void> extends Sequence<T, R, N> implements Deferred<T>, Promise<T> {
16
34
  /** Lazy deferred that stores iterator values. */
@@ -19,30 +37,58 @@ export declare class DeferredSequence<T = void, R = void, N = void> extends Sequ
19
37
  private _promiseDeferred;
20
38
  /** Next iterator result to reject the deferred to (on next microtask). */
21
39
  private _next;
22
- /** Get the next promise to be resolved/rejected. */
40
+ /**
41
+ * Next promise to be resolved/rejected with the upcoming value.
42
+ *
43
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/promise
44
+ */
23
45
  get promise(): Promise<T>;
24
46
  /**
25
47
  * Resolve the current deferred in the sequence with a value.
26
48
  * - Sends a `{ value: X }` to any iterators.
49
+ *
50
+ * @param value Value to publish to iterators and awaiting promises.
51
+ * @example seq.resolve(123);
52
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/resolve
27
53
  */
28
54
  resolve(value: T): void;
29
55
  /**
30
- * Reject the current deferred in the sequence.
56
+ * Reject the current deferred in the sequence with an error.
57
+ * - Sends a `{ reason: X }` to any iterators, causing `for await` loops to throw.
58
+ *
59
+ * @param reason Error or other thrown value to publish to iterators and awaiting promises.
60
+ * @example seq.reject(new Error("Stop"));
61
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/reject
31
62
  */
32
63
  reject(reason: unknown): void;
33
64
  /**
34
65
  * Signal that the sequence is done, causing any active `for await` loops to exit cleanly.
35
66
  * - Sends a `{ done: true, value: R }` to any iterators.
67
+ *
68
+ * @param value Optional final return value for the sequence.
69
+ * @example seq.done();
70
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/done
36
71
  */
37
72
  done(value?: R | undefined): void;
38
73
  /**
39
74
  * Cancel the current resolution or rejection.
40
75
  * - Iterators will contain to wait for a next value.
76
+ *
77
+ * @example seq.cancel();
78
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/cancel
41
79
  */
42
80
  cancel(): void;
43
81
  /** Fulfill the current deferred by resolving or rejecting both the iterator deferred and the promise deferred. */
44
82
  private _fulfill;
45
- /** Resolve the current deferred from a sequence of values. */
83
+ /**
84
+ * Resolve the current deferred from a sequence of values.
85
+ * - Iterates `sequence`, republishing each value through this deferred sequence and yielding it on.
86
+ *
87
+ * @param sequence Source async iterable to forward values from.
88
+ * @returns An async iterator yielding each forwarded value.
89
+ * @example for await (const v of seq.through(source)) console.log(v);
90
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/through
91
+ */
46
92
  through(sequence: AsyncIterable<T>): AsyncIterator<T>;
47
93
  next(_next?: N | undefined): Promise<IteratorResult<T, R | undefined>>;
48
94
  then<X = T, Y = never>(onNext?: Nullable<(v: T) => X | PromiseLike<X>>, onError?: Nullable<(r: unknown) => Y | PromiseLike<Y>>): Promise<X | Y>;
@@ -7,6 +7,14 @@ import { Sequence } from "./Sequence.js";
7
7
  * - Implements `Promise` so the next result can be awaited.
8
8
  * - Implements `AsyncIterable` so values can be iterated over using `for await...of`
9
9
  * - Call `resolve(value)` to publish the next value, `reject(reason?)` to publish an error, or `done(value?)` to signal completion.
10
+ *
11
+ * @example
12
+ * const seq = new DeferredSequence<number>();
13
+ * (async () => { for await (const n of seq) console.log(n); })();
14
+ * seq.resolve(1);
15
+ * seq.resolve(2);
16
+ * seq.done();
17
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence
10
18
  */
11
19
  export class DeferredSequence extends Sequence {
12
20
  /** Lazy deferred that stores iterator values. */
@@ -15,7 +23,11 @@ export class DeferredSequence extends Sequence {
15
23
  _promiseDeferred;
16
24
  /** Next iterator result to reject the deferred to (on next microtask). */
17
25
  _next;
18
- /** Get the next promise to be resolved/rejected. */
26
+ /**
27
+ * Next promise to be resolved/rejected with the upcoming value.
28
+ *
29
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/promise
30
+ */
19
31
  get promise() {
20
32
  this._promiseDeferred ||= createDeferred();
21
33
  return this._promiseDeferred.promise;
@@ -23,13 +35,22 @@ export class DeferredSequence extends Sequence {
23
35
  /**
24
36
  * Resolve the current deferred in the sequence with a value.
25
37
  * - Sends a `{ value: X }` to any iterators.
38
+ *
39
+ * @param value Value to publish to iterators and awaiting promises.
40
+ * @example seq.resolve(123);
41
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/resolve
26
42
  */
27
43
  resolve(value) {
28
44
  this._next = { value };
29
45
  queueMicrotask(() => this._fulfill());
30
46
  }
31
47
  /**
32
- * Reject the current deferred in the sequence.
48
+ * Reject the current deferred in the sequence with an error.
49
+ * - Sends a `{ reason: X }` to any iterators, causing `for await` loops to throw.
50
+ *
51
+ * @param reason Error or other thrown value to publish to iterators and awaiting promises.
52
+ * @example seq.reject(new Error("Stop"));
53
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/reject
33
54
  */
34
55
  reject(reason) {
35
56
  this._next = { reason };
@@ -38,6 +59,10 @@ export class DeferredSequence extends Sequence {
38
59
  /**
39
60
  * Signal that the sequence is done, causing any active `for await` loops to exit cleanly.
40
61
  * - Sends a `{ done: true, value: R }` to any iterators.
62
+ *
63
+ * @param value Optional final return value for the sequence.
64
+ * @example seq.done();
65
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/done
41
66
  */
42
67
  done(value) {
43
68
  this._next = { done: true, value };
@@ -46,6 +71,9 @@ export class DeferredSequence extends Sequence {
46
71
  /**
47
72
  * Cancel the current resolution or rejection.
48
73
  * - Iterators will contain to wait for a next value.
74
+ *
75
+ * @example seq.cancel();
76
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/cancel
49
77
  */
50
78
  cancel() {
51
79
  this._next = undefined;
@@ -70,7 +98,15 @@ export class DeferredSequence extends Sequence {
70
98
  }
71
99
  }
72
100
  }
73
- /** Resolve the current deferred from a sequence of values. */
101
+ /**
102
+ * Resolve the current deferred from a sequence of values.
103
+ * - Iterates `sequence`, republishing each value through this deferred sequence and yielding it on.
104
+ *
105
+ * @param sequence Source async iterable to forward values from.
106
+ * @returns An async iterator yielding each forwarded value.
107
+ * @example for await (const v of seq.through(source)) console.log(v);
108
+ * @see https://dhoulb.github.io/shelving/sequence/DeferredSequence/DeferredSequence/through
109
+ */
74
110
  async *through(sequence) {
75
111
  for await (const item of sequence) {
76
112
  this.resolve(item);
@@ -8,25 +8,79 @@ import { ThroughSequence } from "./ThroughSequence.js";
8
8
  * for await (const next of capture) console.log("YIELDED", next);
9
9
  * console.log("FIRST", watch.first);
10
10
  * console.log("RETURNED", watch.returned);
11
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence
11
12
  */
12
13
  export declare class InspectSequence<T, R, N> extends ThroughSequence<T, R, N> {
13
- /** Get the number of results received by this iterator so far. */
14
+ /**
15
+ * The number of values yielded by the source sequence so far.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/count
18
+ */
14
19
  get count(): number;
15
20
  private _count;
16
- /** Is the iteration done? */
21
+ /**
22
+ * Whether the source sequence has finished iterating (i.e. it has returned).
23
+ *
24
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/done
25
+ */
17
26
  get done(): boolean;
18
27
  private _done;
19
- /** The first yielded value (throws if the iteration yielded no values, i.e. `this.count === 0`). */
28
+ /**
29
+ * The first value yielded by the source sequence.
30
+ *
31
+ * - Throws if the iteration yielded no values yet, i.e. `this.count === 0`.
32
+ *
33
+ * @throws {UnexpectedError} If iteration has not yielded any value yet.
34
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/first
35
+ */
20
36
  get first(): T;
21
37
  private _first;
22
- /** The last yielded value (throws if the iteration yielded no values, i.e. `this.count === 0`). */
38
+ /**
39
+ * The last value yielded by the source sequence.
40
+ *
41
+ * - Throws if the iteration yielded no values yet, i.e. `this.count === 0`.
42
+ *
43
+ * @throws {UnexpectedError} If iteration has not yielded any value yet.
44
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/last
45
+ */
23
46
  get last(): T;
24
47
  private _last;
25
- /** The returned value (throws if the iteration is not done, i.e. `this.done === false`). */
48
+ /**
49
+ * The value returned by the source sequence when it finished.
50
+ *
51
+ * - Throws if the iteration is not done yet, i.e. `this.done === false`.
52
+ *
53
+ * @throws {UnexpectedError} If iteration is not done yet.
54
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/returned
55
+ */
26
56
  get returned(): R | undefined;
27
57
  private _returned;
58
+ /**
59
+ * Advance the source sequence by one step, recording the yielded or returned value.
60
+ *
61
+ * @param value Optional value passed into the source sequence's `next()`.
62
+ * @returns Promise resolving to the next `IteratorResult` from the source sequence.
63
+ * @example const { value, done } = await watch.next()
64
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/next
65
+ */
28
66
  next(value?: N | undefined): Promise<IteratorResult<T, R | undefined>>;
67
+ /**
68
+ * Finish the source sequence early, recording the returned value.
69
+ *
70
+ * @param value Optional value to return from the source sequence.
71
+ * @returns Promise resolving to the final `IteratorResult` from the source sequence.
72
+ * @example await watch.return()
73
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/return
74
+ */
29
75
  return(value?: R | undefined | PromiseLike<R | undefined>): Promise<IteratorResult<T, R | undefined>>;
76
+ /**
77
+ * Throw an error into the source sequence, recording the resulting value.
78
+ *
79
+ * @param reason The reason to throw into the source sequence.
80
+ * @returns Promise resolving to the `IteratorResult` produced after throwing.
81
+ * @example await watch.throw(new Error("stop"))
82
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/throw
83
+ */
30
84
  throw(reason?: unknown): Promise<IteratorResult<T, R | undefined>>;
31
85
  /** Capture a result. */
32
86
  private _inspect;
@@ -12,19 +12,35 @@ const _NOVALUE = Symbol("shelving/InspectSequence.NOVALUE");
12
12
  * for await (const next of capture) console.log("YIELDED", next);
13
13
  * console.log("FIRST", watch.first);
14
14
  * console.log("RETURNED", watch.returned);
15
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence
15
16
  */
16
17
  export class InspectSequence extends ThroughSequence {
17
- /** Get the number of results received by this iterator so far. */
18
+ /**
19
+ * The number of values yielded by the source sequence so far.
20
+ *
21
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/count
22
+ */
18
23
  get count() {
19
24
  return this._count;
20
25
  }
21
26
  _count = 0;
22
- /** Is the iteration done? */
27
+ /**
28
+ * Whether the source sequence has finished iterating (i.e. it has returned).
29
+ *
30
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/done
31
+ */
23
32
  get done() {
24
33
  return this._done;
25
34
  }
26
35
  _done = false;
27
- /** The first yielded value (throws if the iteration yielded no values, i.e. `this.count === 0`). */
36
+ /**
37
+ * The first value yielded by the source sequence.
38
+ *
39
+ * - Throws if the iteration yielded no values yet, i.e. `this.count === 0`.
40
+ *
41
+ * @throws {UnexpectedError} If iteration has not yielded any value yet.
42
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/first
43
+ */
28
44
  get first() {
29
45
  if (this._first === _NOVALUE)
30
46
  throw new UnexpectedError("Iteration not started", {
@@ -34,7 +50,14 @@ export class InspectSequence extends ThroughSequence {
34
50
  return this._first;
35
51
  }
36
52
  _first = _NOVALUE;
37
- /** The last yielded value (throws if the iteration yielded no values, i.e. `this.count === 0`). */
53
+ /**
54
+ * The last value yielded by the source sequence.
55
+ *
56
+ * - Throws if the iteration yielded no values yet, i.e. `this.count === 0`.
57
+ *
58
+ * @throws {UnexpectedError} If iteration has not yielded any value yet.
59
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/last
60
+ */
38
61
  get last() {
39
62
  if (this._last === _NOVALUE)
40
63
  throw new UnexpectedError("Iteration not started", {
@@ -44,7 +67,14 @@ export class InspectSequence extends ThroughSequence {
44
67
  return this._last;
45
68
  }
46
69
  _last = _NOVALUE;
47
- /** The returned value (throws if the iteration is not done, i.e. `this.done === false`). */
70
+ /**
71
+ * The value returned by the source sequence when it finished.
72
+ *
73
+ * - Throws if the iteration is not done yet, i.e. `this.done === false`.
74
+ *
75
+ * @throws {UnexpectedError} If iteration is not done yet.
76
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/returned
77
+ */
48
78
  get returned() {
49
79
  if (this._returned === _NOVALUE)
50
80
  throw new UnexpectedError("Iteration not done", {
@@ -55,12 +85,36 @@ export class InspectSequence extends ThroughSequence {
55
85
  }
56
86
  _returned = _NOVALUE;
57
87
  // Override to watch returned values.
88
+ /**
89
+ * Advance the source sequence by one step, recording the yielded or returned value.
90
+ *
91
+ * @param value Optional value passed into the source sequence's `next()`.
92
+ * @returns Promise resolving to the next `IteratorResult` from the source sequence.
93
+ * @example const { value, done } = await watch.next()
94
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/next
95
+ */
58
96
  async next(value) {
59
97
  return this._inspect(await super.next(value));
60
98
  }
99
+ /**
100
+ * Finish the source sequence early, recording the returned value.
101
+ *
102
+ * @param value Optional value to return from the source sequence.
103
+ * @returns Promise resolving to the final `IteratorResult` from the source sequence.
104
+ * @example await watch.return()
105
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/return
106
+ */
61
107
  async return(value) {
62
108
  return this._inspect(await super.return(value));
63
109
  }
110
+ /**
111
+ * Throw an error into the source sequence, recording the resulting value.
112
+ *
113
+ * @param reason The reason to throw into the source sequence.
114
+ * @returns Promise resolving to the `IteratorResult` produced after throwing.
115
+ * @example await watch.throw(new Error("stop"))
116
+ * @see https://dhoulb.github.io/shelving/sequence/InspectSequence/InspectSequence/throw
117
+ */
64
118
  async throw(reason) {
65
119
  return this._inspect(await super.throw(reason));
66
120
  }
@@ -1,11 +1,31 @@
1
1
  import { type StartCallback } from "../util/start.js";
2
2
  import { ThroughSequence } from "./ThroughSequence.js";
3
- /** Sequence of values that calls a `StartCallback` when it has iterators that are iterating, and calls the corresponding `StopCallback` when all iterators have finished. */
3
+ /**
4
+ * Sequence of values that calls a `StartCallback` when it has iterators that are iterating, and calls the corresponding `StopCallback` when all iterators have finished.
5
+ * - The `start` callback runs lazily on the first active iterator and the returned stop callback runs when the last iterator finishes.
6
+ *
7
+ * @example
8
+ * const seq = new LazySequence(source, () => {
9
+ * const timer = setInterval(tick, 1000);
10
+ * return () => clearInterval(timer); // Stop callback.
11
+ * });
12
+ * @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence
13
+ */
4
14
  export declare class LazySequence<T = void, R = void, N = void> extends ThroughSequence<T, R, N> implements AsyncDisposable {
5
15
  private _iterators;
6
16
  private _starter;
7
- /** Get the number of iterators currently registered. */
17
+ /**
18
+ * Number of iterators currently registered as iterating.
19
+ *
20
+ * @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence/iterators
21
+ */
8
22
  get iterators(): number;
23
+ /**
24
+ * Create a new `LazySequence`.
25
+ *
26
+ * @param source Async iterator to pull values from.
27
+ * @param start Callback run when the first iterator starts; its returned stop callback runs when the last iterator finishes.
28
+ */
9
29
  constructor(source: AsyncIterator<T, R, N>, start: StartCallback);
10
30
  [Symbol.asyncIterator](): LazyIterator<T, R, N>;
11
31
  [Symbol.asyncDispose](): Promise<void>;
@@ -13,12 +33,20 @@ export declare class LazySequence<T = void, R = void, N = void> extends ThroughS
13
33
  * An iterator started iterating.
14
34
  * - Add this iterator to the register.
15
35
  * - Start the starter if this is the first iterator.
36
+ *
37
+ * @param iterator The iterator that has started iterating.
38
+ * @example sequence.start(iterator);
39
+ * @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence/start
16
40
  */
17
41
  start(iterator: LazyIterator<T, R, N>): void;
18
42
  /**
19
43
  * An iterator stopped iterating.
20
44
  * - Add this iterator to the register
21
45
  * - Stop the starter if this is the last iterator.
46
+ *
47
+ * @param iterator The iterator that has stopped iterating.
48
+ * @example sequence.stop(iterator);
49
+ * @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence/stop
22
50
  */
23
51
  stop(iterator: LazyIterator<T, R, N>): void;
24
52
  }