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.
- package/api/cache/APICache.d.ts +69 -6
- package/api/cache/APICache.js +61 -5
- package/api/cache/EndpointCache.d.ts +75 -7
- package/api/cache/EndpointCache.js +75 -7
- package/api/endpoint/Endpoint.d.ts +141 -25
- package/api/endpoint/Endpoint.js +55 -9
- package/api/endpoint/util.d.ts +28 -6
- package/api/provider/APIProvider.d.ts +58 -14
- package/api/provider/APIProvider.js +24 -2
- package/api/provider/CachedAPIProvider.d.ts +58 -5
- package/api/provider/CachedAPIProvider.js +58 -6
- package/api/provider/ClientAPIProvider.d.ts +80 -4
- package/api/provider/ClientAPIProvider.js +75 -4
- package/api/provider/DebugAPIProvider.d.ts +40 -1
- package/api/provider/DebugAPIProvider.js +40 -1
- package/api/provider/JSONAPIProvider.d.ts +18 -2
- package/api/provider/JSONAPIProvider.js +18 -2
- package/api/provider/LoggingAPIProvider.d.ts +25 -2
- package/api/provider/LoggingAPIProvider.js +25 -2
- package/api/provider/MockAPIProvider.d.ts +72 -1
- package/api/provider/MockAPIProvider.js +60 -4
- package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
- package/api/provider/MockEndpointAPIProvider.js +9 -0
- package/api/provider/ThroughAPIProvider.d.ts +67 -1
- package/api/provider/ThroughAPIProvider.js +67 -1
- package/api/provider/ValidationAPIProvider.d.ts +32 -1
- package/api/provider/ValidationAPIProvider.js +32 -1
- package/api/provider/XMLAPIProvider.d.ts +18 -2
- package/api/provider/XMLAPIProvider.js +18 -2
- package/api/store/EndpointStore.d.ts +24 -1
- package/api/store/EndpointStore.js +24 -1
- package/bun/BunPostgreSQLProvider.d.ts +38 -0
- package/bun/BunPostgreSQLProvider.js +38 -2
- package/cloudflare/CloudflareD1Provider.d.ts +29 -2
- package/cloudflare/CloudflareD1Provider.js +29 -2
- package/cloudflare/CloudflareKVProvider.d.ts +115 -0
- package/cloudflare/CloudflareKVProvider.js +115 -0
- package/cloudflare/types.d.ts +41 -7
- package/db/cache/CollectionCache.d.ts +83 -7
- package/db/cache/CollectionCache.js +83 -7
- package/db/cache/DBCache.d.ts +93 -8
- package/db/cache/DBCache.js +85 -7
- package/db/collection/Collection.d.ts +103 -15
- package/db/collection/Collection.js +58 -6
- package/db/migrate/DBMigrator.d.ts +29 -1
- package/db/migrate/DBMigrator.js +20 -1
- package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
- package/db/migrate/PostgreSQLMigrator.js +8 -1
- package/db/migrate/SQLMigrator.d.ts +63 -4
- package/db/migrate/SQLMigrator.js +51 -1
- package/db/migrate/SQLiteMigrator.d.ts +8 -1
- package/db/migrate/SQLiteMigrator.js +8 -1
- package/db/provider/CacheDBProvider.d.ts +135 -1
- package/db/provider/CacheDBProvider.js +135 -1
- package/db/provider/ChangesDBProvider.d.ts +84 -3
- package/db/provider/ChangesDBProvider.js +77 -2
- package/db/provider/DBProvider.d.ts +148 -1
- package/db/provider/DBProvider.js +51 -1
- package/db/provider/DebugDBProvider.d.ts +118 -1
- package/db/provider/DebugDBProvider.js +118 -1
- package/db/provider/MemoryDBProvider.d.ts +262 -7
- package/db/provider/MemoryDBProvider.js +262 -7
- package/db/provider/MockDBProvider.d.ts +113 -2
- package/db/provider/MockDBProvider.js +106 -1
- package/db/provider/PostgreSQLProvider.d.ts +34 -2
- package/db/provider/PostgreSQLProvider.js +34 -4
- package/db/provider/SQLProvider.d.ts +250 -14
- package/db/provider/SQLProvider.js +237 -13
- package/db/provider/SQLiteProvider.d.ts +41 -1
- package/db/provider/SQLiteProvider.js +41 -4
- package/db/provider/ThroughDBProvider.d.ts +156 -1
- package/db/provider/ThroughDBProvider.js +156 -1
- package/db/provider/ValidationDBProvider.d.ts +120 -1
- package/db/provider/ValidationDBProvider.js +120 -1
- package/db/store/ItemStore.d.ts +38 -2
- package/db/store/ItemStore.js +38 -2
- package/db/store/QueryStore.d.ts +64 -6
- package/db/store/QueryStore.js +64 -6
- package/error/BaseError.d.ts +27 -2
- package/error/BaseError.js +14 -0
- package/error/Errors.d.ts +12 -1
- package/error/Errors.js +12 -1
- package/error/NetworkError.d.ts +13 -1
- package/error/NetworkError.js +13 -1
- package/error/RequestError.d.ts +90 -7
- package/error/RequestError.js +90 -7
- package/error/RequiredError.d.ts +11 -1
- package/error/RequiredError.js +11 -1
- package/error/ResponseError.d.ts +19 -2
- package/error/ResponseError.js +19 -2
- package/error/UnexpectedError.d.ts +14 -1
- package/error/UnexpectedError.js +14 -1
- package/error/UnimplementedError.d.ts +13 -1
- package/error/UnimplementedError.js +13 -1
- package/error/ValueError.d.ts +14 -1
- package/error/ValueError.js +14 -1
- package/extract/DirectoryExtractor.d.ts +35 -1
- package/extract/DirectoryExtractor.js +30 -0
- package/extract/Extractor.d.ts +21 -2
- package/extract/Extractor.js +7 -1
- package/extract/FileExtractor.d.ts +18 -0
- package/extract/FileExtractor.js +18 -0
- package/extract/IndexExtractor.d.ts +36 -1
- package/extract/IndexExtractor.js +31 -0
- package/extract/MarkupExtractor.d.ts +15 -0
- package/extract/MarkupExtractor.js +15 -0
- package/extract/MergingExtractor.d.ts +36 -1
- package/extract/MergingExtractor.js +31 -0
- package/extract/ModuleExtractor.d.ts +25 -1
- package/extract/ModuleExtractor.js +20 -0
- package/extract/PackageExtractor.d.ts +36 -1
- package/extract/PackageExtractor.js +31 -0
- package/extract/ThroughExtractor.d.ts +22 -1
- package/extract/ThroughExtractor.js +22 -1
- package/extract/TypescriptExtractor.d.ts +21 -0
- package/extract/TypescriptExtractor.js +28 -3
- package/firestore/client/FirestoreClientProvider.d.ts +129 -4
- package/firestore/client/FirestoreClientProvider.js +129 -4
- package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
- package/firestore/lite/FirestoreLiteProvider.js +128 -3
- package/firestore/server/FirestoreServerProvider.d.ts +129 -2
- package/firestore/server/FirestoreServerProvider.js +129 -2
- package/markup/MarkupParser.d.ts +57 -10
- package/markup/MarkupParser.js +50 -9
- package/markup/MarkupRule.d.ts +34 -1
- package/markup/Parser.d.ts +18 -0
- package/markup/Parser.js +11 -0
- package/markup/rule/blockquote.d.ts +3 -0
- package/markup/rule/blockquote.js +3 -0
- package/markup/rule/code.d.ts +3 -0
- package/markup/rule/code.js +3 -0
- package/markup/rule/fenced.d.ts +3 -0
- package/markup/rule/fenced.js +3 -0
- package/markup/rule/heading.d.ts +3 -0
- package/markup/rule/heading.js +3 -0
- package/markup/rule/index.d.ts +16 -3
- package/markup/rule/index.js +16 -3
- package/markup/rule/inline.d.ts +4 -1
- package/markup/rule/inline.js +5 -2
- package/markup/rule/linebreak.d.ts +3 -0
- package/markup/rule/linebreak.js +3 -0
- package/markup/rule/link.d.ts +6 -0
- package/markup/rule/link.js +6 -0
- package/markup/rule/ordered.d.ts +3 -0
- package/markup/rule/ordered.js +3 -0
- package/markup/rule/paragraph.d.ts +3 -0
- package/markup/rule/paragraph.js +3 -0
- package/markup/rule/separator.d.ts +3 -0
- package/markup/rule/separator.js +3 -0
- package/markup/rule/table.d.ts +3 -0
- package/markup/rule/table.js +3 -0
- package/markup/rule/unordered.d.ts +3 -0
- package/markup/rule/unordered.js +3 -0
- package/markup/util/regexp.d.ts +80 -3
- package/markup/util/regexp.js +44 -0
- package/package.json +1 -1
- package/react/createAPIContext.d.ts +15 -0
- package/react/createAPIContext.js +10 -0
- package/react/createDBContext.d.ts +15 -0
- package/react/createDBContext.js +10 -0
- package/react/useInstance.d.ts +11 -0
- package/react/useInstance.js +11 -0
- package/react/useLazy.d.ts +11 -0
- package/react/useMap.d.ts +14 -1
- package/react/useMap.js +14 -1
- package/react/useReduce.d.ts +12 -0
- package/react/useSequence.d.ts +10 -0
- package/react/useSequence.js +10 -0
- package/react/useStore.d.ts +16 -1
- package/schema/AddressSchema.d.ts +41 -4
- package/schema/AddressSchema.js +36 -3
- package/schema/ArraySchema.d.ts +48 -6
- package/schema/ArraySchema.js +40 -5
- package/schema/BooleanSchema.d.ts +59 -3
- package/schema/BooleanSchema.js +51 -2
- package/schema/ChoiceSchema.d.ts +61 -7
- package/schema/ChoiceSchema.js +44 -2
- package/schema/ColorSchema.d.ts +41 -8
- package/schema/ColorSchema.js +36 -7
- package/schema/CountrySchema.d.ts +44 -4
- package/schema/CountrySchema.js +39 -3
- package/schema/CurrencyAmountSchema.d.ts +104 -8
- package/schema/CurrencyAmountSchema.js +91 -4
- package/schema/CurrencyCodeSchema.d.ts +56 -4
- package/schema/CurrencyCodeSchema.js +49 -3
- package/schema/DataSchema.d.ts +101 -10
- package/schema/DataSchema.js +87 -8
- package/schema/DateSchema.d.ts +73 -4
- package/schema/DateSchema.js +57 -2
- package/schema/DateTimeSchema.d.ts +40 -3
- package/schema/DateTimeSchema.js +40 -3
- package/schema/DictionarySchema.d.ts +54 -4
- package/schema/DictionarySchema.js +47 -3
- package/schema/EmailSchema.d.ts +34 -3
- package/schema/EmailSchema.js +34 -3
- package/schema/EntitySchema.d.ts +45 -4
- package/schema/EntitySchema.js +38 -3
- package/schema/FileSchema.d.ts +45 -4
- package/schema/FileSchema.js +39 -3
- package/schema/KeySchema.d.ts +32 -3
- package/schema/KeySchema.js +32 -3
- package/schema/NullableSchema.d.ts +64 -4
- package/schema/NullableSchema.js +59 -3
- package/schema/NumberSchema.d.ts +137 -12
- package/schema/NumberSchema.js +127 -11
- package/schema/OptionalSchema.d.ts +61 -4
- package/schema/OptionalSchema.js +56 -4
- package/schema/PasswordSchema.d.ts +37 -1
- package/schema/PasswordSchema.js +32 -1
- package/schema/PhoneSchema.d.ts +40 -4
- package/schema/PhoneSchema.js +35 -3
- package/schema/RequiredSchema.d.ts +39 -3
- package/schema/RequiredSchema.js +41 -3
- package/schema/Schema.d.ts +67 -7
- package/schema/Schema.js +42 -6
- package/schema/SlugSchema.d.ts +37 -5
- package/schema/SlugSchema.js +37 -5
- package/schema/StringSchema.d.ts +124 -19
- package/schema/StringSchema.js +107 -17
- package/schema/ThroughSchema.d.ts +35 -2
- package/schema/ThroughSchema.js +30 -1
- package/schema/TimeSchema.d.ts +43 -3
- package/schema/TimeSchema.js +43 -3
- package/schema/URISchema.d.ts +67 -6
- package/schema/URISchema.js +60 -6
- package/schema/URLSchema.d.ts +69 -6
- package/schema/URLSchema.js +61 -6
- package/schema/UUIDSchema.d.ts +37 -4
- package/schema/UUIDSchema.js +37 -4
- package/sequence/DeferredSequence.d.ts +49 -3
- package/sequence/DeferredSequence.js +39 -3
- package/sequence/InspectSequence.d.ts +59 -5
- package/sequence/InspectSequence.js +59 -5
- package/sequence/LazySequence.d.ts +30 -2
- package/sequence/LazySequence.js +30 -2
- package/sequence/Sequence.d.ts +11 -0
- package/sequence/Sequence.js +10 -0
- package/sequence/ThroughSequence.d.ts +15 -0
- package/sequence/ThroughSequence.js +15 -0
- package/store/ArrayStore.d.ts +74 -11
- package/store/ArrayStore.js +74 -11
- package/store/BooleanStore.d.ts +19 -2
- package/store/BooleanStore.js +19 -2
- package/store/BusyStore.d.ts +13 -1
- package/store/BusyStore.js +13 -1
- package/store/DataStore.d.ts +118 -15
- package/store/DataStore.js +118 -15
- package/store/DictionaryStore.d.ts +66 -8
- package/store/DictionaryStore.js +66 -8
- package/store/FetchStore.d.ts +43 -6
- package/store/FetchStore.js +36 -5
- package/store/PathStore.d.ts +44 -5
- package/store/PathStore.js +44 -5
- package/store/PayloadFetchStore.d.ts +16 -1
- package/store/PayloadFetchStore.js +9 -1
- package/store/Store.d.ts +85 -16
- package/store/Store.js +52 -10
- package/store/URLStore.d.ts +173 -15
- package/store/URLStore.js +173 -15
- package/test/basics.d.ts +70 -0
- package/test/basics.js +60 -0
- package/test/people.d.ts +45 -0
- package/test/people.js +35 -0
- package/test/util.d.ts +30 -3
- package/test/util.js +30 -3
- package/ui/app/App.d.ts +14 -2
- package/ui/app/App.js +9 -2
- package/ui/app/App.tsx +14 -2
- package/ui/block/Address.d.ts +45 -3
- package/ui/block/Address.js +30 -3
- package/ui/block/Address.tsx +46 -3
- package/ui/block/Block.d.ts +23 -1
- package/ui/block/Block.js +13 -1
- package/ui/block/Block.tsx +23 -1
- package/ui/block/Blockquote.d.ts +21 -0
- package/ui/block/Blockquote.js +16 -0
- package/ui/block/Blockquote.tsx +22 -0
- package/ui/block/Caption.d.ts +21 -1
- package/ui/block/Caption.js +16 -1
- package/ui/block/Caption.tsx +22 -1
- package/ui/block/Card.d.ts +6 -0
- package/ui/block/Card.js +1 -0
- package/ui/block/Card.tsx +6 -0
- package/ui/block/Definitions.d.ts +18 -0
- package/ui/block/Definitions.js +13 -0
- package/ui/block/Definitions.tsx +19 -0
- package/ui/block/Divider.d.ts +21 -0
- package/ui/block/Divider.js +16 -0
- package/ui/block/Divider.tsx +22 -0
- package/ui/block/Heading.d.ts +20 -1
- package/ui/block/Heading.js +15 -0
- package/ui/block/Heading.tsx +21 -1
- package/ui/block/Image.d.ts +23 -0
- package/ui/block/Image.js +18 -0
- package/ui/block/Image.tsx +24 -0
- package/ui/block/Label.d.ts +18 -3
- package/ui/block/Label.js +13 -3
- package/ui/block/Label.tsx +18 -3
- package/ui/block/List.d.ts +30 -0
- package/ui/block/List.js +25 -0
- package/ui/block/List.tsx +32 -0
- package/ui/block/Panel.d.ts +13 -1
- package/ui/block/Panel.js +3 -0
- package/ui/block/Panel.tsx +13 -1
- package/ui/block/Paragraph.d.ts +23 -0
- package/ui/block/Paragraph.js +18 -0
- package/ui/block/Paragraph.tsx +24 -0
- package/ui/block/Preformatted.d.ts +20 -0
- package/ui/block/Preformatted.js +15 -0
- package/ui/block/Preformatted.tsx +21 -0
- package/ui/block/Prose.d.ts +14 -1
- package/ui/block/Prose.js +9 -1
- package/ui/block/Prose.tsx +14 -1
- package/ui/block/Section.d.ts +69 -6
- package/ui/block/Section.js +59 -6
- package/ui/block/Section.tsx +70 -6
- package/ui/block/Subheading.d.ts +20 -1
- package/ui/block/Subheading.js +15 -0
- package/ui/block/Subheading.tsx +21 -1
- package/ui/block/Table.d.ts +20 -0
- package/ui/block/Table.js +15 -0
- package/ui/block/Table.tsx +21 -0
- package/ui/block/Title.d.ts +20 -1
- package/ui/block/Title.js +15 -0
- package/ui/block/Title.tsx +21 -1
- package/ui/block/Video.d.ts +50 -3
- package/ui/block/Video.js +30 -3
- package/ui/block/Video.tsx +50 -3
- package/ui/dialog/Dialog.d.ts +28 -1
- package/ui/dialog/Dialog.js +18 -1
- package/ui/dialog/Dialog.tsx +28 -1
- package/ui/dialog/Dialogs.d.ts +53 -6
- package/ui/dialog/Dialogs.js +43 -6
- package/ui/dialog/Dialogs.tsx +53 -6
- package/ui/dialog/Modal.d.ts +13 -0
- package/ui/dialog/Modal.js +8 -0
- package/ui/dialog/Modal.tsx +13 -0
- package/ui/docs/DocumentationButtons.d.ts +5 -1
- package/ui/docs/DocumentationButtons.tsx +5 -1
- package/ui/docs/DocumentationCard.d.ts +6 -1
- package/ui/docs/DocumentationCard.js +6 -1
- package/ui/docs/DocumentationCard.tsx +6 -1
- package/ui/docs/DocumentationKind.d.ts +13 -1
- package/ui/docs/DocumentationKind.js +8 -0
- package/ui/docs/DocumentationKind.tsx +13 -1
- package/ui/docs/DocumentationPage.d.ts +6 -1
- package/ui/docs/DocumentationPage.js +6 -1
- package/ui/docs/DocumentationPage.tsx +6 -1
- package/ui/docs/DocumentationSignatures.d.ts +10 -1
- package/ui/docs/DocumentationSignatures.js +5 -0
- package/ui/docs/DocumentationSignatures.tsx +10 -1
- package/ui/form/ArrayInput.d.ts +15 -0
- package/ui/form/ArrayInput.tsx +15 -0
- package/ui/form/ArrayRadioInputs.d.ts +10 -0
- package/ui/form/ArrayRadioInputs.js +5 -0
- package/ui/form/ArrayRadioInputs.tsx +10 -0
- package/ui/form/Button.d.ts +19 -3
- package/ui/form/Button.js +14 -2
- package/ui/form/Button.tsx +19 -3
- package/ui/form/ButtonInput.d.ts +14 -1
- package/ui/form/ButtonInput.js +9 -1
- package/ui/form/ButtonInput.tsx +14 -1
- package/ui/form/ButtonInputPopover.d.ts +10 -0
- package/ui/form/ButtonInputPopover.js +5 -0
- package/ui/form/ButtonInputPopover.tsx +10 -0
- package/ui/form/ButtonPopover.d.ts +11 -1
- package/ui/form/ButtonPopover.js +6 -1
- package/ui/form/ButtonPopover.tsx +11 -1
- package/ui/form/CheckboxInput.d.ts +14 -1
- package/ui/form/CheckboxInput.js +9 -1
- package/ui/form/CheckboxInput.tsx +14 -1
- package/ui/form/ChoiceRadioInputs.d.ts +10 -0
- package/ui/form/ChoiceRadioInputs.tsx +10 -0
- package/ui/form/Clickable.d.ts +45 -5
- package/ui/form/Clickable.js +30 -3
- package/ui/form/Clickable.tsx +45 -5
- package/ui/form/DataInput.d.ts +14 -0
- package/ui/form/DataInput.tsx +14 -0
- package/ui/form/DateInput.d.ts +14 -0
- package/ui/form/DateInput.js +9 -0
- package/ui/form/DateInput.tsx +14 -0
- package/ui/form/DictionaryInput.d.ts +15 -0
- package/ui/form/DictionaryInput.tsx +15 -0
- package/ui/form/Field.d.ts +5 -0
- package/ui/form/Field.tsx +5 -0
- package/ui/form/FileInput.d.ts +14 -0
- package/ui/form/FileInput.js +9 -0
- package/ui/form/FileInput.tsx +14 -0
- package/ui/form/Form.d.ts +55 -6
- package/ui/form/Form.js +35 -3
- package/ui/form/Form.tsx +55 -6
- package/ui/form/FormContext.d.ts +24 -3
- package/ui/form/FormContext.js +5 -1
- package/ui/form/FormContext.tsx +24 -3
- package/ui/form/FormFields.d.ts +15 -2
- package/ui/form/FormFields.js +15 -2
- package/ui/form/FormFields.tsx +15 -2
- package/ui/form/FormFooter.d.ts +13 -3
- package/ui/form/FormFooter.js +8 -3
- package/ui/form/FormFooter.tsx +13 -3
- package/ui/form/FormInput.d.ts +21 -2
- package/ui/form/FormInput.js +16 -2
- package/ui/form/FormInput.tsx +21 -2
- package/ui/form/FormMessage.d.ts +8 -1
- package/ui/form/FormMessage.js +8 -1
- package/ui/form/FormMessage.tsx +8 -2
- package/ui/form/FormNotice.d.ts +8 -1
- package/ui/form/FormNotice.js +8 -1
- package/ui/form/FormNotice.tsx +8 -2
- package/ui/form/FormNotify.d.ts +8 -1
- package/ui/form/FormNotify.js +8 -1
- package/ui/form/FormNotify.tsx +8 -2
- package/ui/form/FormStore.d.ts +50 -6
- package/ui/form/FormStore.js +50 -6
- package/ui/form/FormStore.tsx +50 -6
- package/ui/form/Input.d.ts +65 -1
- package/ui/form/Input.js +60 -0
- package/ui/form/Input.tsx +77 -1
- package/ui/form/NumberInput.d.ts +14 -0
- package/ui/form/NumberInput.js +9 -0
- package/ui/form/NumberInput.tsx +14 -0
- package/ui/form/OutputInput.d.ts +13 -1
- package/ui/form/OutputInput.js +8 -1
- package/ui/form/OutputInput.tsx +13 -1
- package/ui/form/Popover.d.ts +18 -2
- package/ui/form/Popover.js +8 -2
- package/ui/form/Popover.tsx +18 -2
- package/ui/form/Progress.d.ts +26 -2
- package/ui/form/Progress.js +16 -2
- package/ui/form/Progress.tsx +26 -2
- package/ui/form/QueryInput.d.ts +14 -5
- package/ui/form/QueryInput.js +9 -5
- package/ui/form/QueryInput.tsx +14 -5
- package/ui/form/RadioInput.d.ts +14 -1
- package/ui/form/RadioInput.js +9 -1
- package/ui/form/RadioInput.tsx +14 -1
- package/ui/form/SchemaInput.d.ts +138 -7
- package/ui/form/SchemaInput.js +79 -4
- package/ui/form/SchemaInput.tsx +138 -7
- package/ui/form/SelectInput.d.ts +14 -0
- package/ui/form/SelectInput.tsx +14 -0
- package/ui/form/SubmitButton.d.ts +14 -1
- package/ui/form/SubmitButton.js +9 -1
- package/ui/form/SubmitButton.tsx +14 -1
- package/ui/form/TextInput.d.ts +15 -0
- package/ui/form/TextInput.js +10 -0
- package/ui/form/TextInput.tsx +15 -0
- package/ui/inline/Code.d.ts +29 -0
- package/ui/inline/Code.js +24 -0
- package/ui/inline/Code.tsx +31 -0
- package/ui/inline/Deleted.d.ts +23 -0
- package/ui/inline/Deleted.js +18 -0
- package/ui/inline/Deleted.tsx +24 -0
- package/ui/inline/Emphasis.d.ts +23 -0
- package/ui/inline/Emphasis.js +18 -0
- package/ui/inline/Emphasis.tsx +24 -0
- package/ui/inline/Inserted.d.ts +23 -0
- package/ui/inline/Inserted.js +18 -0
- package/ui/inline/Inserted.tsx +24 -0
- package/ui/inline/Link.d.ts +23 -0
- package/ui/inline/Link.js +18 -0
- package/ui/inline/Link.tsx +24 -0
- package/ui/inline/Mark.d.ts +23 -0
- package/ui/inline/Mark.js +18 -0
- package/ui/inline/Mark.tsx +24 -0
- package/ui/inline/Small.d.ts +23 -0
- package/ui/inline/Small.js +18 -0
- package/ui/inline/Small.tsx +24 -0
- package/ui/inline/Strong.d.ts +23 -0
- package/ui/inline/Strong.js +18 -0
- package/ui/inline/Strong.tsx +24 -0
- package/ui/inline/Subscript.d.ts +23 -0
- package/ui/inline/Subscript.js +18 -0
- package/ui/inline/Subscript.tsx +24 -0
- package/ui/inline/Superscript.d.ts +23 -0
- package/ui/inline/Superscript.js +18 -0
- package/ui/inline/Superscript.tsx +24 -0
- package/ui/inline/When.d.ts +42 -3
- package/ui/inline/When.js +27 -3
- package/ui/inline/When.tsx +42 -3
- package/ui/layout/CenteredLayout.d.ts +12 -1
- package/ui/layout/CenteredLayout.js +7 -1
- package/ui/layout/CenteredLayout.tsx +12 -1
- package/ui/layout/Layout.d.ts +12 -3
- package/ui/layout/Layout.js +12 -3
- package/ui/layout/Layout.ts +12 -3
- package/ui/layout/SidebarLayout.d.ts +12 -0
- package/ui/layout/SidebarLayout.js +7 -0
- package/ui/layout/SidebarLayout.tsx +12 -0
- package/ui/menu/Menu.d.ts +22 -0
- package/ui/menu/Menu.js +12 -0
- package/ui/menu/Menu.tsx +22 -0
- package/ui/misc/Catcher.d.ts +77 -5
- package/ui/misc/Catcher.js +47 -5
- package/ui/misc/Catcher.tsx +77 -5
- package/ui/misc/Loading.d.ts +20 -0
- package/ui/misc/Loading.js +15 -0
- package/ui/misc/Loading.tsx +20 -0
- package/ui/misc/Mapper.d.ts +13 -1
- package/ui/misc/Mapper.js +4 -0
- package/ui/misc/Mapper.tsx +13 -1
- package/ui/misc/Markup.d.ts +9 -1
- package/ui/misc/Markup.js +4 -0
- package/ui/misc/Markup.tsx +9 -1
- package/ui/misc/MetaContext.d.ts +24 -7
- package/ui/misc/MetaContext.js +19 -6
- package/ui/misc/MetaContext.tsx +24 -7
- package/ui/misc/StatusIcon.d.ts +16 -1
- package/ui/misc/StatusIcon.js +11 -1
- package/ui/misc/StatusIcon.tsx +16 -1
- package/ui/misc/Tag.d.ts +21 -0
- package/ui/misc/Tag.js +11 -0
- package/ui/misc/Tag.tsx +21 -0
- package/ui/notice/Message.d.ts +27 -1
- package/ui/notice/Message.js +22 -1
- package/ui/notice/Message.tsx +27 -1
- package/ui/notice/Notice.d.ts +24 -0
- package/ui/notice/Notice.js +19 -0
- package/ui/notice/Notice.tsx +24 -0
- package/ui/notice/NoticeStore.d.ts +30 -2
- package/ui/notice/NoticeStore.js +30 -2
- package/ui/notice/NoticeStore.ts +30 -2
- package/ui/notice/Notices.d.ts +11 -1
- package/ui/notice/Notices.js +6 -1
- package/ui/notice/Notices.tsx +11 -1
- package/ui/notice/NoticesStore.d.ts +23 -3
- package/ui/notice/NoticesStore.js +23 -3
- package/ui/notice/NoticesStore.ts +23 -3
- package/ui/page/HTML.d.ts +13 -2
- package/ui/page/HTML.js +8 -2
- package/ui/page/HTML.tsx +13 -2
- package/ui/page/Head.d.ts +5 -1
- package/ui/page/Head.js +5 -1
- package/ui/page/Head.tsx +5 -1
- package/ui/page/Page.d.ts +12 -1
- package/ui/page/Page.js +7 -1
- package/ui/page/Page.tsx +12 -1
- package/ui/router/Navigation.d.ts +11 -0
- package/ui/router/Navigation.js +6 -0
- package/ui/router/Navigation.tsx +11 -0
- package/ui/router/NavigationContext.d.ts +14 -2
- package/ui/router/NavigationContext.js +14 -2
- package/ui/router/NavigationContext.tsx +14 -2
- package/ui/router/NavigationStore.d.ts +29 -1
- package/ui/router/NavigationStore.js +29 -1
- package/ui/router/NavigationStore.tsx +29 -1
- package/ui/router/Router.d.ts +12 -1
- package/ui/router/Router.js +7 -1
- package/ui/router/Router.tsx +12 -1
- package/ui/router/Routes.d.ts +14 -4
- package/ui/router/Routes.tsx +14 -4
- package/ui/style/Color.d.ts +15 -2
- package/ui/style/Color.js +5 -0
- package/ui/style/Color.tsx +15 -2
- package/ui/style/Flex.d.ts +41 -4
- package/ui/style/Flex.js +26 -3
- package/ui/style/Flex.tsx +41 -4
- package/ui/style/Gap.d.ts +18 -3
- package/ui/style/Gap.js +8 -1
- package/ui/style/Gap.tsx +18 -3
- package/ui/style/Padding.d.ts +18 -3
- package/ui/style/Padding.js +8 -1
- package/ui/style/Padding.tsx +18 -3
- package/ui/style/Scroll.d.ts +36 -1
- package/ui/style/Scroll.js +26 -1
- package/ui/style/Scroll.tsx +37 -1
- package/ui/style/Space.d.ts +18 -3
- package/ui/style/Space.js +8 -1
- package/ui/style/Space.tsx +18 -3
- package/ui/style/Status.d.ts +23 -7
- package/ui/style/Status.js +13 -5
- package/ui/style/Status.tsx +23 -7
- package/ui/style/Tint.d.ts +7 -1
- package/ui/style/Tint.js +7 -1
- package/ui/style/Tint.tsx +7 -1
- package/ui/style/Typography.d.ts +38 -6
- package/ui/style/Typography.js +8 -0
- package/ui/style/Typography.tsx +38 -6
- package/ui/style/Width.d.ts +18 -1
- package/ui/style/Width.js +8 -0
- package/ui/style/Width.tsx +18 -1
- package/ui/transition/CollapseTransition.d.ts +13 -0
- package/ui/transition/CollapseTransition.js +8 -0
- package/ui/transition/CollapseTransition.tsx +13 -0
- package/ui/transition/FadeTransition.d.ts +13 -0
- package/ui/transition/FadeTransition.js +8 -0
- package/ui/transition/FadeTransition.tsx +13 -0
- package/ui/transition/HorizontalTransition.d.ts +13 -0
- package/ui/transition/HorizontalTransition.js +8 -0
- package/ui/transition/HorizontalTransition.tsx +13 -0
- package/ui/transition/Transition.d.ts +12 -4
- package/ui/transition/Transition.js +7 -3
- package/ui/transition/Transition.tsx +12 -4
- package/ui/transition/VerticalTransition.d.ts +13 -0
- package/ui/transition/VerticalTransition.js +8 -0
- package/ui/transition/VerticalTransition.tsx +13 -0
- package/ui/transition/util.d.ts +16 -6
- package/ui/transition/util.js +7 -1
- package/ui/transition/util.tsx +16 -6
- package/ui/tree/TreeApp.d.ts +11 -0
- package/ui/tree/TreeApp.js +6 -0
- package/ui/tree/TreeApp.tsx +11 -0
- package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
- package/ui/tree/TreeBreadcrumbs.js +6 -0
- package/ui/tree/TreeBreadcrumbs.tsx +11 -0
- package/ui/tree/TreeButton.d.ts +9 -1
- package/ui/tree/TreeButton.js +4 -0
- package/ui/tree/TreeButton.tsx +9 -1
- package/ui/tree/TreeCard.d.ts +8 -1
- package/ui/tree/TreeCard.js +8 -1
- package/ui/tree/TreeCard.tsx +8 -1
- package/ui/tree/TreeCards.d.ts +16 -1
- package/ui/tree/TreeCards.js +11 -1
- package/ui/tree/TreeCards.tsx +16 -1
- package/ui/tree/TreeContext.d.ts +18 -1
- package/ui/tree/TreeContext.js +18 -1
- package/ui/tree/TreeContext.tsx +18 -1
- package/ui/tree/TreeMenu.d.ts +28 -1
- package/ui/tree/TreeMenu.js +23 -1
- package/ui/tree/TreeMenu.tsx +28 -1
- package/ui/tree/TreePage.d.ts +6 -0
- package/ui/tree/TreePage.js +6 -0
- package/ui/tree/TreePage.tsx +6 -0
- package/ui/tree/TreeRouter.d.ts +17 -2
- package/ui/tree/TreeRouter.js +12 -2
- package/ui/tree/TreeRouter.tsx +17 -2
- package/ui/tree/TreeSidebar.d.ts +11 -0
- package/ui/tree/TreeSidebar.js +6 -0
- package/ui/tree/TreeSidebar.tsx +11 -0
- package/ui/util/context.d.ts +13 -1
- package/ui/util/context.ts +13 -1
- package/ui/util/css.d.ts +17 -4
- package/ui/util/css.js +5 -1
- package/ui/util/css.ts +17 -4
- package/ui/util/event.d.ts +9 -1
- package/ui/util/event.js +9 -1
- package/ui/util/event.ts +9 -1
- package/ui/util/focus.d.ts +24 -5
- package/ui/util/focus.js +24 -5
- package/ui/util/focus.ts +24 -5
- package/ui/util/meta.d.ts +113 -21
- package/ui/util/meta.js +73 -13
- package/ui/util/meta.ts +113 -21
- package/ui/util/notice.d.ts +98 -10
- package/ui/util/notice.js +93 -9
- package/ui/util/notice.ts +98 -10
- package/ui/util/props.d.ts +10 -2
- package/ui/util/props.ts +10 -2
- package/ui/util/refresh.d.ts +10 -1
- package/ui/util/refresh.js +10 -1
- package/ui/util/refresh.ts +10 -1
- package/ui/util/scroll.d.ts +20 -4
- package/ui/util/scroll.js +20 -4
- package/ui/util/scroll.ts +20 -4
- package/ui/util/state.d.ts +19 -5
- package/ui/util/state.js +19 -5
- package/ui/util/state.ts +19 -5
- package/util/ansi.d.ts +118 -0
- package/util/ansi.js +116 -0
- package/util/array.d.ts +349 -33
- package/util/array.js +284 -27
- package/util/async.d.ts +87 -9
- package/util/async.js +80 -8
- package/util/base64.d.ts +56 -6
- package/util/base64.js +56 -6
- package/util/boolean.d.ts +75 -10
- package/util/boolean.js +75 -10
- package/util/buffer.d.ts +26 -3
- package/util/buffer.js +21 -3
- package/util/bytes.d.ts +42 -4
- package/util/bytes.js +32 -2
- package/util/class.d.ts +59 -8
- package/util/class.js +44 -5
- package/util/color.d.ts +131 -13
- package/util/color.js +126 -12
- package/util/constants.d.ts +132 -19
- package/util/constants.js +132 -19
- package/util/crypto.d.ts +17 -1
- package/util/crypto.js +17 -1
- package/util/currency.d.ts +38 -4
- package/util/currency.js +33 -3
- package/util/data.d.ts +139 -24
- package/util/data.js +39 -5
- package/util/date.d.ts +152 -18
- package/util/date.js +147 -17
- package/util/debug.d.ts +112 -11
- package/util/debug.js +114 -11
- package/util/dictionary.d.ts +205 -24
- package/util/dictionary.js +162 -17
- package/util/diff.d.ts +22 -3
- package/util/diff.js +11 -1
- package/util/dispose.d.ts +74 -2
- package/util/dispose.js +74 -2
- package/util/duration.d.ts +278 -16
- package/util/duration.js +267 -15
- package/util/element.d.ts +59 -6
- package/util/element.js +32 -3
- package/util/entity.d.ts +39 -6
- package/util/entity.js +5 -1
- package/util/entry.d.ts +56 -9
- package/util/entry.js +32 -4
- package/util/env.d.ts +26 -4
- package/util/env.js +26 -4
- package/util/equal.d.ts +181 -17
- package/util/equal.js +181 -17
- package/util/error.d.ts +57 -5
- package/util/error.js +52 -4
- package/util/file.d.ts +30 -7
- package/util/file.js +25 -6
- package/util/filter.d.ts +36 -4
- package/util/filter.js +31 -3
- package/util/focus.d.ts +9 -1
- package/util/focus.js +9 -1
- package/util/format.d.ts +186 -22
- package/util/format.js +135 -14
- package/util/function.d.ts +66 -11
- package/util/function.js +31 -4
- package/util/geo.d.ts +60 -8
- package/util/geo.js +45 -5
- package/util/hash.d.ts +21 -2
- package/util/hash.js +21 -2
- package/util/http.d.ts +134 -19
- package/util/http.js +94 -11
- package/util/hydrate.d.ts +19 -2
- package/util/hydrate.js +12 -1
- package/util/item.d.ts +70 -11
- package/util/item.js +35 -4
- package/util/iterate.d.ts +109 -13
- package/util/iterate.js +86 -10
- package/util/jwt.d.ts +47 -13
- package/util/jwt.js +36 -12
- package/util/lazy.d.ts +9 -6
- package/util/link.d.ts +10 -3
- package/util/link.js +5 -2
- package/util/log.d.ts +26 -3
- package/util/log.js +26 -3
- package/util/map.d.ts +144 -19
- package/util/map.js +101 -11
- package/util/merge.d.ts +23 -1
- package/util/merge.js +6 -0
- package/util/null.d.ts +102 -13
- package/util/null.js +92 -11
- package/util/number.d.ts +125 -8
- package/util/number.js +120 -7
- package/util/object.d.ts +263 -31
- package/util/object.js +154 -17
- package/util/path.d.ts +91 -15
- package/util/path.js +60 -9
- package/util/query.d.ts +78 -9
- package/util/query.js +58 -6
- package/util/random.d.ts +67 -4
- package/util/random.js +67 -4
- package/util/regexp.d.ts +201 -24
- package/util/regexp.js +106 -11
- package/util/sequence.d.ts +66 -8
- package/util/sequence.js +52 -7
- package/util/serialise.d.ts +7 -1
- package/util/serialise.js +7 -1
- package/util/set.d.ts +103 -13
- package/util/set.js +83 -9
- package/util/sort.d.ts +32 -7
- package/util/sort.js +26 -6
- package/util/source.d.ts +28 -3
- package/util/source.js +22 -2
- package/util/start.d.ts +62 -5
- package/util/start.js +47 -2
- package/util/string.d.ts +209 -25
- package/util/string.js +188 -21
- package/util/template.d.ts +58 -9
- package/util/template.js +45 -6
- package/util/timeout.d.ts +35 -11
- package/util/timeout.js +35 -11
- package/util/transform.d.ts +87 -8
- package/util/transform.js +75 -7
- package/util/tree.d.ts +39 -6
- package/util/tree.js +3 -0
- package/util/types.d.ts +8 -2
- package/util/undefined.d.ts +47 -6
- package/util/undefined.js +47 -6
- package/util/units.d.ts +107 -12
- package/util/units.js +97 -12
- package/util/update.d.ts +36 -4
- package/util/update.js +24 -2
- package/util/uri.d.ts +138 -6
- package/util/uri.js +44 -3
- package/util/url.d.ts +152 -7
- package/util/url.js +136 -5
- package/util/uuid.d.ts +28 -3
- package/util/uuid.js +28 -3
- package/util/validate.d.ts +85 -20
- package/util/validate.js +61 -12
- package/util/xml.d.ts +9 -10
- 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
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* - `
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
-
/**
|
|
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
|
}
|