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
@@ -9,67 +9,229 @@ import { getRandom, getRandomKey } from "../../util/random.js";
9
9
  import { updateData } from "../../util/update.js";
10
10
  import { DBProvider } from "./DBProvider.js";
11
11
  /**
12
- * Fast in-memory store for data.
13
- * - Extremely fast (ideal for caching!), but does not persist data after the browser window is closed.
14
- * - `getItem()` etc return the exact same instance of an object that's passed into `setItem()`
12
+ * Synchronous in-memory database provider, storing each collection in a `MemoryTable`.
13
+ *
14
+ * - Extremely fast (ideal as the cache behind `CacheDBProvider`!), but does not persist data after the process or browser window closes.
15
+ * - Identity-preserving: `getItem()` etc. return the exact same object instance that was passed into `setItem()`.
16
+ * - Supports live subscriptions, so it can back `ItemStore` / `QueryStore` reads.
17
+ *
18
+ * @example
19
+ * const provider = new MemoryDBProvider();
20
+ * const id = await provider.addItem(users, { name: "Dave" });
21
+ *
22
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider
15
23
  */
16
24
  export class MemoryDBProvider extends DBProvider {
17
25
  /** List of tables in `{ name: MemoryTable }` format. */
18
26
  _tables = {};
19
- /** Get a table for a collection. */
27
+ /**
28
+ * Get (or lazily create) the `MemoryTable` backing a collection.
29
+ *
30
+ * @param collection Collection to get the table for.
31
+ * @returns The `MemoryTable` holding that collection's items.
32
+ * @example provider.getTable(users) // MemoryTable
33
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getTable
34
+ */
20
35
  getTable(collection) {
21
36
  return (this._tables[collection.name] ||= new MemoryTable(collection));
22
37
  }
38
+ /**
39
+ * Get an item from its collection's table by id, or `undefined` if it doesn't exist.
40
+ *
41
+ * @param collection Collection the item belongs to.
42
+ * @param id Identifier of the item to get.
43
+ * @returns The item, or `undefined` if no item exists with that id.
44
+ * @example await provider.getItem(users, 123) // Item or undefined.
45
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getItem
46
+ */
23
47
  async getItem(collection, id) {
24
48
  return this.getTable(collection).getItem(id);
25
49
  }
50
+ /**
51
+ * Subscribe to live changes for a single item by its id.
52
+ *
53
+ * @param collection Collection the item belongs to.
54
+ * @param id Identifier of the item to subscribe to.
55
+ * @returns Async sequence yielding the item (or `undefined`) on every change.
56
+ * @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
57
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getItemSequence
58
+ */
26
59
  async *getItemSequence(collection, id) {
27
60
  yield* this.getTable(collection).getItemSequence(id);
28
61
  }
62
+ /**
63
+ * Add a new item to a collection and return its generated id.
64
+ *
65
+ * @param collection Collection to add the item to.
66
+ * @param data Data for the new item.
67
+ * @returns The generated identifier for the new item.
68
+ * @example await provider.addItem(users, { name: "Dave" }) // 123
69
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/addItem
70
+ */
29
71
  async addItem(collection, data) {
30
72
  return this.getTable(collection).addItem(data);
31
73
  }
74
+ /**
75
+ * Set (insert or overwrite) the data for an item by its id.
76
+ *
77
+ * @param collection Collection the item belongs to.
78
+ * @param id Identifier of the item to set.
79
+ * @param data Full data to store for the item.
80
+ * @example await provider.setItem(users, 123, { name: "Dave" });
81
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/setItem
82
+ */
32
83
  async setItem(collection, id, data) {
33
84
  this.getTable(collection).setItem(id, data);
34
85
  }
86
+ /**
87
+ * Apply partial updates to an existing item by its id.
88
+ *
89
+ * @param collection Collection the item belongs to.
90
+ * @param id Identifier of the item to update.
91
+ * @param updates Updates to apply to the item.
92
+ * @example await provider.updateItem(users, 123, { name: "Dave" });
93
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/updateItem
94
+ */
35
95
  async updateItem(collection, id, updates) {
36
96
  this.getTable(collection).updateItem(id, updates);
37
97
  }
98
+ /**
99
+ * Delete an item from a collection by its id.
100
+ *
101
+ * @param collection Collection the item belongs to.
102
+ * @param id Identifier of the item to delete.
103
+ * @example await provider.deleteItem(users, 123);
104
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/deleteItem
105
+ */
38
106
  async deleteItem(collection, id) {
39
107
  this.getTable(collection).deleteItem(id);
40
108
  }
109
+ /**
110
+ * Count the items in a collection matching an optional query.
111
+ *
112
+ * @param collection Collection to count items in.
113
+ * @param query Query to filter the counted items (counts all items when omitted).
114
+ * @returns The number of matching items.
115
+ * @example await provider.countQuery(users, { age: 40 }) // 7
116
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/countQuery
117
+ */
41
118
  async countQuery(collection, query) {
42
119
  return this.getTable(collection).countQuery(query);
43
120
  }
121
+ /**
122
+ * Get the items in a collection matching an optional query.
123
+ *
124
+ * @param collection Collection to query.
125
+ * @param query Query to filter, sort, and limit the items (returns all items when omitted).
126
+ * @returns An array of matching items.
127
+ * @example await provider.getQuery(users, { age: 40, $order: "name" }) // Items.
128
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getQuery
129
+ */
44
130
  async getQuery(collection, query) {
45
131
  return this.getTable(collection).getQuery(query);
46
132
  }
133
+ /**
134
+ * Subscribe to live changes for the result of a query.
135
+ *
136
+ * @param collection Collection to query.
137
+ * @param query Query to filter, sort, and limit the items.
138
+ * @returns Async sequence yielding the matching items on every change.
139
+ * @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
140
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/getQuerySequence
141
+ */
47
142
  async *getQuerySequence(collection, query) {
48
143
  return yield* this.getTable(collection).getQuerySequence(query);
49
144
  }
145
+ /**
146
+ * Set (overwrite) the data for every item matching a query.
147
+ *
148
+ * @param collection Collection to write to.
149
+ * @param query Query selecting the items to set.
150
+ * @param data Full data to store for each matching item.
151
+ * @example await provider.setQuery(users, { age: 40 }, { active: true });
152
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/setQuery
153
+ */
50
154
  async setQuery(collection, query, data) {
51
155
  this.getTable(collection).setQuery(query, data);
52
156
  }
157
+ /**
158
+ * Apply partial updates to every item matching a query.
159
+ *
160
+ * @param collection Collection to write to.
161
+ * @param query Query selecting the items to update.
162
+ * @param updates Updates to apply to each matching item.
163
+ * @example await provider.updateQuery(users, { age: 40 }, { active: true });
164
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/updateQuery
165
+ */
53
166
  async updateQuery(collection, query, updates) {
54
167
  this.getTable(collection).updateQuery(query, updates);
55
168
  }
169
+ /**
170
+ * Delete every item matching a query.
171
+ *
172
+ * @param collection Collection to delete from.
173
+ * @param query Query selecting the items to delete.
174
+ * @example await provider.deleteQuery(users, { active: false });
175
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/deleteQuery
176
+ */
56
177
  async deleteQuery(collection, query) {
57
178
  this.getTable(collection).deleteQuery(query);
58
179
  }
180
+ /**
181
+ * Set (insert or overwrite) several whole items in a collection at once.
182
+ *
183
+ * @param collection Collection to write to.
184
+ * @param items Items (each with its own id) to store.
185
+ * @example provider.setItems(users, [{ id: 123, name: "Dave" }]);
186
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryDBProvider/setItems
187
+ */
59
188
  setItems(collection, items) {
60
189
  this.getTable(collection).setItems(items);
61
190
  }
62
191
  }
63
- /** An individual table of data. */
192
+ /**
193
+ * In-memory table holding the items of a single collection for a `MemoryDBProvider`.
194
+ *
195
+ * - Keys items by id in a `Map`, preserving the exact object instance passed in.
196
+ * - Exposes a `next` `DeferredSequence` that resolves on every change, powering the live `*Sequence` subscriptions.
197
+ *
198
+ * @example
199
+ * const table = provider.getTable(users);
200
+ * table.setItem(123, { name: "Dave" });
201
+ *
202
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable
203
+ */
64
204
  export class MemoryTable {
65
205
  /** Actual data in this table. */
66
206
  _data = new Map();
67
- /** Deferred sequence of next values. */
207
+ /**
208
+ * Deferred sequence that resolves on every change to this table.
209
+ *
210
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/next
211
+ */
68
212
  next = new DeferredSequence();
213
+ /**
214
+ * Collection this table stores the items of.
215
+ *
216
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/collection
217
+ */
69
218
  collection;
219
+ /**
220
+ * Create a new `MemoryTable` for a collection.
221
+ *
222
+ * @param collection Collection this table holds the items of.
223
+ */
70
224
  constructor(collection) {
71
225
  this.collection = collection;
72
226
  }
227
+ /**
228
+ * Get an item by its id, or `undefined` if it doesn't exist.
229
+ *
230
+ * @param id Identifier of the item to get.
231
+ * @returns The item, or `undefined` if no item exists with that id.
232
+ * @example table.getItem(123) // Item or undefined.
233
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getItem
234
+ */
73
235
  getItem(id) {
74
236
  return this._data.get(id);
75
237
  }
@@ -77,6 +239,11 @@ export class MemoryTable {
77
239
  * Subscribe to all changes for this item key.
78
240
  * - Emits the current item immediately, including `undefined` when absent.
79
241
  * - Wakes on every table change, but only yields when this item's value actually changed.
242
+ *
243
+ * @param id Identifier of the item to subscribe to.
244
+ * @returns Async sequence yielding the item (or `undefined`) on every change.
245
+ * @example for await (const item of table.getItemSequence(123)) console.log(item);
246
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getItemSequence
80
247
  */
81
248
  async *getItemSequence(id) {
82
249
  let lastValue = this.getItem(id);
@@ -90,7 +257,14 @@ export class MemoryTable {
90
257
  }
91
258
  }
92
259
  }
93
- /** Generate a unique ID for a new item in this table. */
260
+ /**
261
+ * Generate a unique id for a new item in this table.
262
+ * - Uses a random string for `StringSchema` ids, otherwise a random number, regenerating until it doesn't collide.
263
+ *
264
+ * @returns An id that no existing item in this table uses.
265
+ * @example table.generateUniqueID() // 4827193 (or a random string)
266
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/generateUniqueID
267
+ */
94
268
  generateUniqueID() {
95
269
  const gen = (this.collection.id instanceof StringSchema ? getRandomKey : getRandom);
96
270
  let id = gen();
@@ -98,11 +272,28 @@ export class MemoryTable {
98
272
  id = gen(); // Regenerate ID until unique.
99
273
  return id;
100
274
  }
275
+ /**
276
+ * Add a new item with a freshly generated unique id.
277
+ *
278
+ * @param data Data for the new item.
279
+ * @returns The generated identifier for the new item.
280
+ * @example table.addItem({ name: "Dave" }) // 123
281
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/addItem
282
+ */
101
283
  addItem(data) {
102
284
  const id = this.generateUniqueID();
103
285
  this.setItem(id, data);
104
286
  return id;
105
287
  }
288
+ /**
289
+ * Set (insert or overwrite) an item by its id.
290
+ * - Only resolves `next` when the stored instance actually changes.
291
+ *
292
+ * @param id Identifier of the item to set.
293
+ * @param data Full item, or data to combine with `id` into an item.
294
+ * @example table.setItem(123, { name: "Dave" });
295
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/setItem
296
+ */
106
297
  setItem(id, data) {
107
298
  const item = getItem(id, data);
108
299
  if (this._data.get(id) !== item) {
@@ -110,12 +301,31 @@ export class MemoryTable {
110
301
  this.next.resolve();
111
302
  }
112
303
  }
304
+ /**
305
+ * Mirror an async sequence of item values into this table, passing each value through.
306
+ * - Sets the item when a value arrives, or deletes it when the value is `undefined`.
307
+ *
308
+ * @param id Identifier of the item the sequence applies to.
309
+ * @param sequence Source sequence of item values (or `undefined`) to mirror.
310
+ * @returns Async sequence yielding each value after it has been mirrored.
311
+ * @example for await (const item of table.setItemSequence(123, source)) console.log(item);
312
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/setItemSequence
313
+ */
113
314
  async *setItemSequence(id, sequence) {
114
315
  for await (const item of sequence) {
115
316
  item ? this.setItem(id, item) : this.deleteItem(id);
116
317
  yield item;
117
318
  }
118
319
  }
320
+ /**
321
+ * Apply partial updates to an existing item by its id.
322
+ * - Does nothing if no item exists with that id.
323
+ *
324
+ * @param id Identifier of the item to update.
325
+ * @param updates Updates to apply to the item.
326
+ * @example table.updateItem(123, { name: "Dave" });
327
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/updateItem
328
+ */
119
329
  updateItem(id, updates) {
120
330
  const oldItem = this._data.get(id);
121
331
  if (!oldItem)
@@ -126,15 +336,39 @@ export class MemoryTable {
126
336
  this.next.resolve();
127
337
  }
128
338
  }
339
+ /**
340
+ * Delete an item by its id.
341
+ * - Only resolves `next` when an item was actually removed.
342
+ *
343
+ * @param id Identifier of the item to delete.
344
+ * @example table.deleteItem(123);
345
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/deleteItem
346
+ */
129
347
  deleteItem(id) {
130
348
  if (this._data.has(id)) {
131
349
  this._data.delete(id);
132
350
  this.next.resolve();
133
351
  }
134
352
  }
353
+ /**
354
+ * Count the items in this table matching an optional query.
355
+ *
356
+ * @param query Query to filter the counted items (counts all items when omitted).
357
+ * @returns The number of matching items.
358
+ * @example table.countQuery({ age: 40 }) // 7
359
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/countQuery
360
+ */
135
361
  countQuery(query) {
136
362
  return query ? countItems(queryItems(this._data.values(), query)) : this._data.size;
137
363
  }
364
+ /**
365
+ * Get the items in this table matching an optional query.
366
+ *
367
+ * @param query Query to filter, sort, and limit the items (returns all items when omitted).
368
+ * @returns An array of matching items.
369
+ * @example table.getQuery({ age: 40, $order: "name" }) // Items.
370
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getQuery
371
+ */
138
372
  getQuery(query) {
139
373
  return requireArray(query ? queryItems(this._data.values(), query) : this._data.values());
140
374
  }
@@ -142,6 +376,11 @@ export class MemoryTable {
142
376
  * Subscribe to the live result of a query.
143
377
  * - Emits the current query result immediately, even if empty.
144
378
  * - Wakes on every table change, but only yields when the computed query result changed.
379
+ *
380
+ * @param query Query to filter, sort, and limit the items.
381
+ * @returns Async sequence yielding the matching items on every change.
382
+ * @example for await (const items of table.getQuerySequence({ age: 40 })) console.log(items);
383
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/getQuerySequence
145
384
  */
146
385
  async *getQuerySequence(query) {
147
386
  let lastItems = this.getQuery(query);
@@ -155,6 +394,14 @@ export class MemoryTable {
155
394
  }
156
395
  }
157
396
  }
397
+ /**
398
+ * Set (overwrite) the data for every item matching a query.
399
+ *
400
+ * @param query Query selecting the items to set.
401
+ * @param data Full data to store for each matching item.
402
+ * @example table.setQuery({ age: 40 }, { active: true });
403
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/setQuery
404
+ */
158
405
  setQuery(query, data) {
159
406
  let changed = false;
160
407
  for (const { id } of queryWritableItems(this._data.values(), query)) {
@@ -167,6 +414,14 @@ export class MemoryTable {
167
414
  if (changed)
168
415
  this.next.resolve();
169
416
  }
417
+ /**
418
+ * Apply partial updates to every item matching a query.
419
+ *
420
+ * @param query Query selecting the items to update.
421
+ * @param updates Updates to apply to each matching item.
422
+ * @example table.updateQuery({ age: 40 }, { active: true });
423
+ * @see https://dhoulb.github.io/shelving/db/provider/MemoryDBProvider/MemoryTable/updateQuery
424
+ */
170
425
  updateQuery(query, updates) {
171
426
  let changed = false;
172
427
  for (const { id } of queryWritableItems(this._data.values(), query)) {
@@ -4,7 +4,13 @@ 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 { MemoryDBProvider } from "./MemoryDBProvider.js";
7
- /** A structured log entry emitted by `MockDBProvider` for one of its provider operations. */
7
+ /**
8
+ * Structured log entry recording one operation performed through a `MockDBProvider`.
9
+ *
10
+ * - `type` is the operation name; `collection` is the collection name; `id`, `query`, `data`, `updates`, and `result` carry whichever fields apply to that operation.
11
+ *
12
+ * @see https://dhoulb.github.io/shelving/db/provider/MockDBProvider/MockDBCall
13
+ */
8
14
  export type MockDBCall = {
9
15
  readonly type: "getItem" | "addItem" | "setItem" | "updateItem" | "deleteItem" | "countQuery" | "getQuery" | "setQuery" | "updateQuery" | "deleteQuery";
10
16
  readonly collection: string;
@@ -14,17 +20,122 @@ export type MockDBCall = {
14
20
  readonly updates?: unknown;
15
21
  readonly result?: unknown;
16
22
  };
17
- /** Provider that logs database operations for testing purposes. */
23
+ /**
24
+ * In-memory database provider that records every operation to its `calls` log, for testing.
25
+ *
26
+ * - Extends `MemoryDBProvider`, so it stores data normally, then appends a `MockDBCall` entry (including the result) for each call.
27
+ * - Assert against `calls` in tests to check which operations ran and with what arguments.
28
+ *
29
+ * @example
30
+ * const provider = new MockDBProvider();
31
+ * await provider.addItem(users, { name: "Dave" });
32
+ * provider.calls; // [{ type: "addItem", collection: "users", data: { name: "Dave" }, result: 123 }]
33
+ *
34
+ * @see https://dhoulb.github.io/shelving/db/provider/MockDBProvider/MockDBProvider
35
+ */
18
36
  export declare class MockDBProvider<I extends Identifier = Identifier, T extends Data = Data> extends MemoryDBProvider<I, T> {
37
+ /**
38
+ * The log of operations performed through this provider, in the order they happened.
39
+ *
40
+ * @see https://dhoulb.github.io/shelving/db/provider/MockDBProvider/MockDBProvider/calls
41
+ */
19
42
  readonly calls: MockDBCall[];
43
+ /**
44
+ * Get an item by its id, then record a `"getItem"` call.
45
+ *
46
+ * @param collection Collection the item belongs to.
47
+ * @param id Identifier of the item to get.
48
+ * @returns The item, or `undefined` if no item exists with that id.
49
+ * @example await provider.getItem(users, 123) // Item or undefined.
50
+ * @see https://dhoulb.github.io/shelving/db/provider/MockDBProvider/MockDBProvider/getItem
51
+ */
20
52
  getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
53
+ /**
54
+ * Add a new item, then record an `"addItem"` call.
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/MockDBProvider/MockDBProvider/addItem
61
+ */
21
62
  addItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, data: TT): Promise<II>;
63
+ /**
64
+ * Set (insert or overwrite) an item by its id, then record a `"setItem"` call.
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/MockDBProvider/MockDBProvider/setItem
71
+ */
22
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 item by its id, then record an `"updateItem"` call.
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/MockDBProvider/MockDBProvider/updateItem
81
+ */
23
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 by its id, then record a `"deleteItem"` call.
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/MockDBProvider/MockDBProvider/deleteItem
90
+ */
24
91
  deleteItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<void>;
92
+ /**
93
+ * Count the items matching an optional query, then record a `"countQuery"` call.
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/MockDBProvider/MockDBProvider/countQuery
100
+ */
25
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 matching an optional query, then record a `"getQuery"` call.
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/MockDBProvider/MockDBProvider/getQuery
110
+ */
26
111
  getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
112
+ /**
113
+ * Set (overwrite) every item matching a query, then record a `"setQuery"` call.
114
+ *
115
+ * @param collection Collection to write to.
116
+ * @param query Query selecting the items to set.
117
+ * @param data Full data to store for each matching item.
118
+ * @example await provider.setQuery(users, { age: 40 }, { active: true });
119
+ * @see https://dhoulb.github.io/shelving/db/provider/MockDBProvider/MockDBProvider/setQuery
120
+ */
27
121
  setQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>;
122
+ /**
123
+ * Apply partial updates to every item matching a query, then record an `"updateQuery"` call.
124
+ *
125
+ * @param collection Collection to write to.
126
+ * @param query Query selecting the items to update.
127
+ * @param updates Updates to apply to each matching item.
128
+ * @example await provider.updateQuery(users, { age: 40 }, { active: true });
129
+ * @see https://dhoulb.github.io/shelving/db/provider/MockDBProvider/MockDBProvider/updateQuery
130
+ */
28
131
  updateQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
132
+ /**
133
+ * Delete every item matching a query, then record a `"deleteQuery"` call.
134
+ *
135
+ * @param collection Collection to delete from.
136
+ * @param query Query selecting the items to delete.
137
+ * @example await provider.deleteQuery(users, { active: false });
138
+ * @see https://dhoulb.github.io/shelving/db/provider/MockDBProvider/MockDBProvider/deleteQuery
139
+ */
29
140
  deleteQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>;
30
141
  }