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
@@ -4,18 +4,135 @@ import type { Query } from "../../util/query.js";
4
4
  import type { Updates } from "../../util/update.js";
5
5
  import type { Collection } from "../collection/Collection.js";
6
6
  import { ThroughDBProvider } from "./ThroughDBProvider.js";
7
- /** Provider that logs operations to the console. */
7
+ /**
8
+ * Database provider that logs every operation it performs to the console for debugging.
9
+ *
10
+ * - Wraps a `source` provider and writes `console.debug` lines (with ANSI direction markers) before and after each call, and `console.error` on failure.
11
+ * - Drop it into a provider chain while developing to trace database reads and writes; it changes no data.
12
+ *
13
+ * @example
14
+ * const provider = new DebugDBProvider(new MemoryDBProvider());
15
+ * await provider.getItem(users, 123); // Logs the call and its result.
16
+ *
17
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider
18
+ */
8
19
  export declare class DebugDBProvider<I extends Identifier, T extends Data> extends ThroughDBProvider<I, T> {
20
+ /**
21
+ * Get an item by its id, logging the call and result.
22
+ *
23
+ * @param collection Collection the item belongs to.
24
+ * @param id Identifier of the item to get.
25
+ * @returns The item, or `undefined` if no item exists with that id.
26
+ * @example await provider.getItem(users, 123) // Item or undefined.
27
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getItem
28
+ */
9
29
  getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
30
+ /**
31
+ * Subscribe to live changes for a single item, logging each emission.
32
+ *
33
+ * @param collection Collection the item belongs to.
34
+ * @param id Identifier of the item to subscribe to.
35
+ * @returns Async sequence yielding the item (or `undefined`) on every change.
36
+ * @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
37
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getItemSequence
38
+ */
10
39
  getItemSequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): OptionalItemSequence<II, TT>;
40
+ /**
41
+ * Add a new item, logging the call and generated id.
42
+ *
43
+ * @param collection Collection to add the item to.
44
+ * @param data Data for the new item.
45
+ * @returns The generated identifier for the new item.
46
+ * @example await provider.addItem(users, { name: "Dave" }) // 123
47
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/addItem
48
+ */
11
49
  addItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, data: TT): Promise<II>;
50
+ /**
51
+ * Set (insert or overwrite) an item by its id, logging the call.
52
+ *
53
+ * @param collection Collection the item belongs to.
54
+ * @param id Identifier of the item to set.
55
+ * @param data Full data to store for the item.
56
+ * @example await provider.setItem(users, 123, { name: "Dave" });
57
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/setItem
58
+ */
12
59
  setItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
60
+ /**
61
+ * Apply partial updates to an item by its id, logging the call.
62
+ *
63
+ * @param collection Collection the item belongs to.
64
+ * @param id Identifier of the item to update.
65
+ * @param updates Updates to apply to the item.
66
+ * @example await provider.updateItem(users, 123, { name: "Dave" });
67
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/updateItem
68
+ */
13
69
  updateItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>;
70
+ /**
71
+ * Delete an item by its id, logging the call.
72
+ *
73
+ * @param collection Collection the item belongs to.
74
+ * @param id Identifier of the item to delete.
75
+ * @example await provider.deleteItem(users, 123);
76
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/deleteItem
77
+ */
14
78
  deleteItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<void>;
79
+ /**
80
+ * Count the items matching an optional query, logging the call and result.
81
+ *
82
+ * @param collection Collection to count items in.
83
+ * @param query Query to filter the counted items (counts all items when omitted).
84
+ * @returns The number of matching items.
85
+ * @example await provider.countQuery(users, { age: 40 }) // 7
86
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/countQuery
87
+ */
15
88
  countQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<number>;
89
+ /**
90
+ * Get the items matching an optional query, logging the call and result.
91
+ *
92
+ * @param collection Collection to query.
93
+ * @param query Query to filter, sort, and limit the items (returns all items when omitted).
94
+ * @returns An array of matching items.
95
+ * @example await provider.getQuery(users, { age: 40, $order: "name" }) // Items.
96
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getQuery
97
+ */
16
98
  getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
99
+ /**
100
+ * Subscribe to live changes for a query, logging each emission.
101
+ *
102
+ * @param collection Collection to query.
103
+ * @param query Query to filter, sort, and limit the items.
104
+ * @returns Async sequence yielding the matching items on every change.
105
+ * @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
106
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getQuerySequence
107
+ */
17
108
  getQuerySequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
109
+ /**
110
+ * Set (overwrite) every item matching a query, logging the call.
111
+ *
112
+ * @param collection Collection to write to.
113
+ * @param query Query selecting the items to set.
114
+ * @param data Full data to store for each matching item.
115
+ * @example await provider.setQuery(users, { age: 40 }, { active: true });
116
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/setQuery
117
+ */
18
118
  setQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>;
119
+ /**
120
+ * Apply partial updates to every item matching a query, logging the call.
121
+ *
122
+ * @param collection Collection to write to.
123
+ * @param query Query selecting the items to update.
124
+ * @param updates Updates to apply to each matching item.
125
+ * @example await provider.updateQuery(users, { age: 40 }, { active: true });
126
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/updateQuery
127
+ */
19
128
  updateQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
129
+ /**
130
+ * Delete every item matching a query, logging the call.
131
+ *
132
+ * @param collection Collection to delete from.
133
+ * @param query Query selecting the items to delete.
134
+ * @example await provider.deleteQuery(users, { active: false });
135
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/deleteQuery
136
+ */
20
137
  deleteQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>;
21
138
  }
@@ -1,7 +1,27 @@
1
1
  import { ANSI_FAILURE, ANSI_LEFT, ANSI_RIGHT, ANSI_SUCCESS } from "../../util/ansi.js";
2
2
  import { ThroughDBProvider } from "./ThroughDBProvider.js";
3
- /** Provider that logs operations to the console. */
3
+ /**
4
+ * Database provider that logs every operation it performs to the console for debugging.
5
+ *
6
+ * - Wraps a `source` provider and writes `console.debug` lines (with ANSI direction markers) before and after each call, and `console.error` on failure.
7
+ * - Drop it into a provider chain while developing to trace database reads and writes; it changes no data.
8
+ *
9
+ * @example
10
+ * const provider = new DebugDBProvider(new MemoryDBProvider());
11
+ * await provider.getItem(users, 123); // Logs the call and its result.
12
+ *
13
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider
14
+ */
4
15
  export class DebugDBProvider extends ThroughDBProvider {
16
+ /**
17
+ * Get an item by its id, logging the call and result.
18
+ *
19
+ * @param collection Collection the item belongs to.
20
+ * @param id Identifier of the item to get.
21
+ * @returns The item, or `undefined` if no item exists with that id.
22
+ * @example await provider.getItem(users, 123) // Item or undefined.
23
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getItem
24
+ */
5
25
  async getItem(collection, id) {
6
26
  try {
7
27
  console.debug(`${ANSI_RIGHT} GET ITEM`, collection.name, id);
@@ -14,6 +34,15 @@ export class DebugDBProvider extends ThroughDBProvider {
14
34
  throw reason;
15
35
  }
16
36
  }
37
+ /**
38
+ * Subscribe to live changes for a single item, logging each emission.
39
+ *
40
+ * @param collection Collection the item belongs to.
41
+ * @param id Identifier of the item to subscribe to.
42
+ * @returns Async sequence yielding the item (or `undefined`) on every change.
43
+ * @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
44
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getItemSequence
45
+ */
17
46
  async *getItemSequence(collection, id) {
18
47
  try {
19
48
  console.debug(`${ANSI_RIGHT} SEQUENCE ITEM`, collection.name, id);
@@ -27,6 +56,15 @@ export class DebugDBProvider extends ThroughDBProvider {
27
56
  console.error(`${ANSI_FAILURE} SEQUENCE ITEM`, collection.name, id, thrown);
28
57
  }
29
58
  }
59
+ /**
60
+ * Add a new item, logging the call and generated id.
61
+ *
62
+ * @param collection Collection to add the item to.
63
+ * @param data Data for the new item.
64
+ * @returns The generated identifier for the new item.
65
+ * @example await provider.addItem(users, { name: "Dave" }) // 123
66
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/addItem
67
+ */
30
68
  async addItem(collection, data) {
31
69
  try {
32
70
  console.debug(`${ANSI_RIGHT} ADD ITEM`, collection.name, data);
@@ -39,6 +77,15 @@ export class DebugDBProvider extends ThroughDBProvider {
39
77
  throw reason;
40
78
  }
41
79
  }
80
+ /**
81
+ * Set (insert or overwrite) an item by its id, logging the call.
82
+ *
83
+ * @param collection Collection the item belongs to.
84
+ * @param id Identifier of the item to set.
85
+ * @param data Full data to store for the item.
86
+ * @example await provider.setItem(users, 123, { name: "Dave" });
87
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/setItem
88
+ */
42
89
  async setItem(collection, id, data) {
43
90
  try {
44
91
  console.debug(`${ANSI_RIGHT} SET ITEM`, collection.name, id, data);
@@ -50,6 +97,15 @@ export class DebugDBProvider extends ThroughDBProvider {
50
97
  throw reason;
51
98
  }
52
99
  }
100
+ /**
101
+ * Apply partial updates to an item by its id, logging the call.
102
+ *
103
+ * @param collection Collection the item belongs to.
104
+ * @param id Identifier of the item to update.
105
+ * @param updates Updates to apply to the item.
106
+ * @example await provider.updateItem(users, 123, { name: "Dave" });
107
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/updateItem
108
+ */
53
109
  async updateItem(collection, id, updates) {
54
110
  try {
55
111
  console.debug(`${ANSI_RIGHT} UPDATE ITEM`, collection.name, id, updates);
@@ -61,6 +117,14 @@ export class DebugDBProvider extends ThroughDBProvider {
61
117
  throw reason;
62
118
  }
63
119
  }
120
+ /**
121
+ * Delete an item by its id, logging the call.
122
+ *
123
+ * @param collection Collection the item belongs to.
124
+ * @param id Identifier of the item to delete.
125
+ * @example await provider.deleteItem(users, 123);
126
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/deleteItem
127
+ */
64
128
  async deleteItem(collection, id) {
65
129
  try {
66
130
  console.debug(`${ANSI_RIGHT} DELETE`, collection.name, id);
@@ -72,6 +136,15 @@ export class DebugDBProvider extends ThroughDBProvider {
72
136
  throw reason;
73
137
  }
74
138
  }
139
+ /**
140
+ * Count the items matching an optional query, logging the call and result.
141
+ *
142
+ * @param collection Collection to count items in.
143
+ * @param query Query to filter the counted items (counts all items when omitted).
144
+ * @returns The number of matching items.
145
+ * @example await provider.countQuery(users, { age: 40 }) // 7
146
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/countQuery
147
+ */
75
148
  async countQuery(collection, query) {
76
149
  try {
77
150
  console.debug(`${ANSI_RIGHT} COUNT QUERY`, collection.name, query);
@@ -84,6 +157,15 @@ export class DebugDBProvider extends ThroughDBProvider {
84
157
  throw reason;
85
158
  }
86
159
  }
160
+ /**
161
+ * Get the items matching an optional query, logging the call and result.
162
+ *
163
+ * @param collection Collection to query.
164
+ * @param query Query to filter, sort, and limit the items (returns all items when omitted).
165
+ * @returns An array of matching items.
166
+ * @example await provider.getQuery(users, { age: 40, $order: "name" }) // Items.
167
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getQuery
168
+ */
87
169
  async getQuery(collection, query) {
88
170
  try {
89
171
  console.debug(`${ANSI_RIGHT} GET`, collection.name, query);
@@ -96,6 +178,15 @@ export class DebugDBProvider extends ThroughDBProvider {
96
178
  throw reason;
97
179
  }
98
180
  }
181
+ /**
182
+ * Subscribe to live changes for a query, logging each emission.
183
+ *
184
+ * @param collection Collection to query.
185
+ * @param query Query to filter, sort, and limit the items.
186
+ * @returns Async sequence yielding the matching items on every change.
187
+ * @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
188
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/getQuerySequence
189
+ */
99
190
  async *getQuerySequence(collection, query) {
100
191
  try {
101
192
  console.debug(`${ANSI_RIGHT} SEQUENCE QUERY`, collection.name, query);
@@ -109,6 +200,15 @@ export class DebugDBProvider extends ThroughDBProvider {
109
200
  console.error(`${ANSI_FAILURE} SEQUENCE QUERY`, collection.name, query, thrown);
110
201
  }
111
202
  }
203
+ /**
204
+ * Set (overwrite) every item matching a query, logging the call.
205
+ *
206
+ * @param collection Collection to write to.
207
+ * @param query Query selecting the items to set.
208
+ * @param data Full data to store for each matching item.
209
+ * @example await provider.setQuery(users, { age: 40 }, { active: true });
210
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/setQuery
211
+ */
112
212
  async setQuery(collection, query, data) {
113
213
  try {
114
214
  console.debug(`${ANSI_RIGHT} SET QUERY`, collection.name, query, data);
@@ -120,6 +220,15 @@ export class DebugDBProvider extends ThroughDBProvider {
120
220
  throw reason;
121
221
  }
122
222
  }
223
+ /**
224
+ * Apply partial updates to every item matching a query, logging the call.
225
+ *
226
+ * @param collection Collection to write to.
227
+ * @param query Query selecting the items to update.
228
+ * @param updates Updates to apply to each matching item.
229
+ * @example await provider.updateQuery(users, { age: 40 }, { active: true });
230
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/updateQuery
231
+ */
123
232
  async updateQuery(collection, query, updates) {
124
233
  try {
125
234
  console.debug(`${ANSI_RIGHT} UPDATE QUERY`, collection.name, query, updates);
@@ -131,6 +240,14 @@ export class DebugDBProvider extends ThroughDBProvider {
131
240
  throw reason;
132
241
  }
133
242
  }
243
+ /**
244
+ * Delete every item matching a query, logging the call.
245
+ *
246
+ * @param collection Collection to delete from.
247
+ * @param query Query selecting the items to delete.
248
+ * @example await provider.deleteQuery(users, { active: false });
249
+ * @see https://dhoulb.github.io/shelving/db/provider/DebugDBProvider/DebugDBProvider/deleteQuery
250
+ */
134
251
  async deleteQuery(collection, query) {
135
252
  try {
136
253
  console.debug(`${ANSI_RIGHT} DELETE QUERY`, collection.name, query);
@@ -6,60 +6,315 @@ import type { Updates } from "../../util/update.js";
6
6
  import type { Collection } from "../collection/Collection.js";
7
7
  import { DBProvider } from "./DBProvider.js";
8
8
  /**
9
- * Fast in-memory store for data.
10
- * - Extremely fast (ideal for caching!), but does not persist data after the browser window is closed.
11
- * - `getItem()` etc return the exact same instance of an object that's passed into `setItem()`
9
+ * Synchronous in-memory database provider, storing each collection in a `MemoryTable`.
10
+ *
11
+ * - Extremely fast (ideal as the cache behind `CacheDBProvider`!), but does not persist data after the process or browser window closes.
12
+ * - Identity-preserving: `getItem()` etc. return the exact same object instance that was passed into `setItem()`.
13
+ * - Supports live subscriptions, so it can back `ItemStore` / `QueryStore` reads.
14
+ *
15
+ * @example
16
+ * const provider = new MemoryDBProvider();
17
+ * const id = await provider.addItem(users, { name: "Dave" });
18
+ *
19
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider
12
20
  */
13
21
  export declare class MemoryDBProvider<I extends Identifier = Identifier, T extends Data = Data> extends DBProvider<I, T> {
14
22
  /** List of tables in `{ name: MemoryTable }` format. */
15
23
  private _tables;
16
- /** Get a table for a collection. */
24
+ /**
25
+ * Get (or lazily create) the `MemoryTable` backing a collection.
26
+ *
27
+ * @param collection Collection to get the table for.
28
+ * @returns The `MemoryTable` holding that collection's items.
29
+ * @example provider.getTable(users) // MemoryTable
30
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getTable
31
+ */
17
32
  getTable<II extends I, TT extends T>(collection: Collection<string, II, TT>): MemoryTable<II, TT>;
33
+ /**
34
+ * Get an item from its collection's table by id, or `undefined` if it doesn't exist.
35
+ *
36
+ * @param collection Collection the item belongs to.
37
+ * @param id Identifier of the item to get.
38
+ * @returns The item, or `undefined` if no item exists with that id.
39
+ * @example await provider.getItem(users, 123) // Item or undefined.
40
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getItem
41
+ */
18
42
  getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
43
+ /**
44
+ * Subscribe to live changes for a single item by its id.
45
+ *
46
+ * @param collection Collection the item belongs to.
47
+ * @param id Identifier of the item to subscribe to.
48
+ * @returns Async sequence yielding the item (or `undefined`) on every change.
49
+ * @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
50
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getItemSequence
51
+ */
19
52
  getItemSequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): OptionalItemSequence<II, TT>;
53
+ /**
54
+ * Add a new item to a collection and return its generated id.
55
+ *
56
+ * @param collection Collection to add the item to.
57
+ * @param data Data for the new item.
58
+ * @returns The generated identifier for the new item.
59
+ * @example await provider.addItem(users, { name: "Dave" }) // 123
60
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/addItem
61
+ */
20
62
  addItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, data: TT): Promise<II>;
63
+ /**
64
+ * Set (insert or overwrite) the data for an item by its id.
65
+ *
66
+ * @param collection Collection the item belongs to.
67
+ * @param id Identifier of the item to set.
68
+ * @param data Full data to store for the item.
69
+ * @example await provider.setItem(users, 123, { name: "Dave" });
70
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/setItem
71
+ */
21
72
  setItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
73
+ /**
74
+ * Apply partial updates to an existing item by its id.
75
+ *
76
+ * @param collection Collection the item belongs to.
77
+ * @param id Identifier of the item to update.
78
+ * @param updates Updates to apply to the item.
79
+ * @example await provider.updateItem(users, 123, { name: "Dave" });
80
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/updateItem
81
+ */
22
82
  updateItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>;
83
+ /**
84
+ * Delete an item from a collection by its id.
85
+ *
86
+ * @param collection Collection the item belongs to.
87
+ * @param id Identifier of the item to delete.
88
+ * @example await provider.deleteItem(users, 123);
89
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/deleteItem
90
+ */
23
91
  deleteItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<void>;
92
+ /**
93
+ * Count the items in a collection matching an optional query.
94
+ *
95
+ * @param collection Collection to count items in.
96
+ * @param query Query to filter the counted items (counts all items when omitted).
97
+ * @returns The number of matching items.
98
+ * @example await provider.countQuery(users, { age: 40 }) // 7
99
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/countQuery
100
+ */
24
101
  countQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<number>;
102
+ /**
103
+ * Get the items in a collection matching an optional query.
104
+ *
105
+ * @param collection Collection to query.
106
+ * @param query Query to filter, sort, and limit the items (returns all items when omitted).
107
+ * @returns An array of matching items.
108
+ * @example await provider.getQuery(users, { age: 40, $order: "name" }) // Items.
109
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getQuery
110
+ */
25
111
  getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
112
+ /**
113
+ * Subscribe to live changes for the result of a query.
114
+ *
115
+ * @param collection Collection to query.
116
+ * @param query Query to filter, sort, and limit the items.
117
+ * @returns Async sequence yielding the matching items on every change.
118
+ * @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
119
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getQuerySequence
120
+ */
26
121
  getQuerySequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
122
+ /**
123
+ * Set (overwrite) the data for every item matching a query.
124
+ *
125
+ * @param collection Collection to write to.
126
+ * @param query Query selecting the items to set.
127
+ * @param data Full data to store for each matching item.
128
+ * @example await provider.setQuery(users, { age: 40 }, { active: true });
129
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/setQuery
130
+ */
27
131
  setQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>;
132
+ /**
133
+ * Apply partial updates to every item matching a query.
134
+ *
135
+ * @param collection Collection to write to.
136
+ * @param query Query selecting the items to update.
137
+ * @param updates Updates to apply to each matching item.
138
+ * @example await provider.updateQuery(users, { age: 40 }, { active: true });
139
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/updateQuery
140
+ */
28
141
  updateQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
142
+ /**
143
+ * Delete every item matching a query.
144
+ *
145
+ * @param collection Collection to delete from.
146
+ * @param query Query selecting the items to delete.
147
+ * @example await provider.deleteQuery(users, { active: false });
148
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/deleteQuery
149
+ */
29
150
  deleteQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>;
151
+ /**
152
+ * Set (insert or overwrite) several whole items in a collection at once.
153
+ *
154
+ * @param collection Collection to write to.
155
+ * @param items Items (each with its own id) to store.
156
+ * @example provider.setItems(users, [{ id: 123, name: "Dave" }]);
157
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/setItems
158
+ */
30
159
  setItems<II extends I, TT extends T>(collection: Collection<string, II, TT>, items: Items<II, TT>): void;
31
160
  }
32
- /** An individual table of data. */
161
+ /**
162
+ * In-memory table holding the items of a single collection for a `MemoryDBProvider`.
163
+ *
164
+ * - Keys items by id in a `Map`, preserving the exact object instance passed in.
165
+ * - Exposes a `next` `DeferredSequence` that resolves on every change, powering the live `*Sequence` subscriptions.
166
+ *
167
+ * @example
168
+ * const table = provider.getTable(users);
169
+ * table.setItem(123, { name: "Dave" });
170
+ *
171
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable
172
+ */
33
173
  export declare class MemoryTable<I extends Identifier, T extends Data> {
34
174
  /** Actual data in this table. */
35
175
  protected readonly _data: Map<I, Item<I, T>>;
36
- /** Deferred sequence of next values. */
176
+ /**
177
+ * Deferred sequence that resolves on every change to this table.
178
+ *
179
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/next
180
+ */
37
181
  readonly next: DeferredSequence<void, void, void>;
182
+ /**
183
+ * Collection this table stores the items of.
184
+ *
185
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/collection
186
+ */
38
187
  readonly collection: Collection<string, I, T>;
188
+ /**
189
+ * Create a new `MemoryTable` for a collection.
190
+ *
191
+ * @param collection Collection this table holds the items of.
192
+ */
39
193
  constructor(collection: Collection<string, I, T>);
194
+ /**
195
+ * Get an item by its id, or `undefined` if it doesn't exist.
196
+ *
197
+ * @param id Identifier of the item to get.
198
+ * @returns The item, or `undefined` if no item exists with that id.
199
+ * @example table.getItem(123) // Item or undefined.
200
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getItem
201
+ */
40
202
  getItem(id: I): OptionalItem<I, T>;
41
203
  /**
42
204
  * Subscribe to all changes for this item key.
43
205
  * - Emits the current item immediately, including `undefined` when absent.
44
206
  * - Wakes on every table change, but only yields when this item's value actually changed.
207
+ *
208
+ * @param id Identifier of the item to subscribe to.
209
+ * @returns Async sequence yielding the item (or `undefined`) on every change.
210
+ * @example for await (const item of table.getItemSequence(123)) console.log(item);
211
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getItemSequence
45
212
  */
46
213
  getItemSequence(id: I): AsyncIterable<OptionalItem<I, T>>;
47
- /** Generate a unique ID for a new item in this table. */
214
+ /**
215
+ * Generate a unique id for a new item in this table.
216
+ * - Uses a random string for `StringSchema` ids, otherwise a random number, regenerating until it doesn't collide.
217
+ *
218
+ * @returns An id that no existing item in this table uses.
219
+ * @example table.generateUniqueID() // 4827193 (or a random string)
220
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/generateUniqueID
221
+ */
48
222
  generateUniqueID(): I;
223
+ /**
224
+ * Add a new item with a freshly generated unique id.
225
+ *
226
+ * @param data Data for the new item.
227
+ * @returns The generated identifier for the new item.
228
+ * @example table.addItem({ name: "Dave" }) // 123
229
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/addItem
230
+ */
49
231
  addItem(data: T): I;
232
+ /**
233
+ * Set (insert or overwrite) an item by its id.
234
+ * - Only resolves `next` when the stored instance actually changes.
235
+ *
236
+ * @param id Identifier of the item to set.
237
+ * @param data Full item, or data to combine with `id` into an item.
238
+ * @example table.setItem(123, { name: "Dave" });
239
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/setItem
240
+ */
50
241
  setItem(id: I, data: Item<I, T> | T): void;
242
+ /**
243
+ * Mirror an async sequence of item values into this table, passing each value through.
244
+ * - Sets the item when a value arrives, or deletes it when the value is `undefined`.
245
+ *
246
+ * @param id Identifier of the item the sequence applies to.
247
+ * @param sequence Source sequence of item values (or `undefined`) to mirror.
248
+ * @returns Async sequence yielding each value after it has been mirrored.
249
+ * @example for await (const item of table.setItemSequence(123, source)) console.log(item);
250
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/setItemSequence
251
+ */
51
252
  setItemSequence(id: I, sequence: AsyncIterable<OptionalItem<I, T>>): AsyncIterable<OptionalItem<I, T>>;
253
+ /**
254
+ * Apply partial updates to an existing item by its id.
255
+ * - Does nothing if no item exists with that id.
256
+ *
257
+ * @param id Identifier of the item to update.
258
+ * @param updates Updates to apply to the item.
259
+ * @example table.updateItem(123, { name: "Dave" });
260
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/updateItem
261
+ */
52
262
  updateItem(id: I, updates: Updates<Item<I, T>>): void;
263
+ /**
264
+ * Delete an item by its id.
265
+ * - Only resolves `next` when an item was actually removed.
266
+ *
267
+ * @param id Identifier of the item to delete.
268
+ * @example table.deleteItem(123);
269
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/deleteItem
270
+ */
53
271
  deleteItem(id: I): void;
272
+ /**
273
+ * Count the items in this table matching an optional query.
274
+ *
275
+ * @param query Query to filter the counted items (counts all items when omitted).
276
+ * @returns The number of matching items.
277
+ * @example table.countQuery({ age: 40 }) // 7
278
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/countQuery
279
+ */
54
280
  countQuery(query?: Query<Item<I, T>>): number;
281
+ /**
282
+ * Get the items in this table matching an optional query.
283
+ *
284
+ * @param query Query to filter, sort, and limit the items (returns all items when omitted).
285
+ * @returns An array of matching items.
286
+ * @example table.getQuery({ age: 40, $order: "name" }) // Items.
287
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getQuery
288
+ */
55
289
  getQuery(query?: Query<Item<I, T>>): Items<I, T>;
56
290
  /**
57
291
  * Subscribe to the live result of a query.
58
292
  * - Emits the current query result immediately, even if empty.
59
293
  * - Wakes on every table change, but only yields when the computed query result changed.
294
+ *
295
+ * @param query Query to filter, sort, and limit the items.
296
+ * @returns Async sequence yielding the matching items on every change.
297
+ * @example for await (const items of table.getQuerySequence({ age: 40 })) console.log(items);
298
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getQuerySequence
60
299
  */
61
300
  getQuerySequence(query?: Query<Item<I, T>>): AsyncIterable<Items<I, T>>;
301
+ /**
302
+ * Set (overwrite) the data for every item matching a query.
303
+ *
304
+ * @param query Query selecting the items to set.
305
+ * @param data Full data to store for each matching item.
306
+ * @example table.setQuery({ age: 40 }, { active: true });
307
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/setQuery
308
+ */
62
309
  setQuery(query: Query<Item<I, T>>, data: T): void;
310
+ /**
311
+ * Apply partial updates to every item matching a query.
312
+ *
313
+ * @param query Query selecting the items to update.
314
+ * @param updates Updates to apply to each matching item.
315
+ * @example table.updateQuery({ age: 40 }, { active: true });
316
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/updateQuery
317
+ */
63
318
  updateQuery(query: Query<Item<I, T>>, updates: Updates<T>): void;
64
319
  deleteQuery(query: Query<Item<I, T>>): void;
65
320
  setItems(items: Items<I, T>): void;