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
|
@@ -5,24 +5,179 @@ import type { Sourceable } from "../../util/source.js";
|
|
|
5
5
|
import type { Updates } from "../../util/update.js";
|
|
6
6
|
import type { Collection } from "../collection/Collection.js";
|
|
7
7
|
import type { DBProvider } from "./DBProvider.js";
|
|
8
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Database provider that passes every operation straight through to a wrapped `source` provider.
|
|
10
|
+
*
|
|
11
|
+
* - Base for the layered `Through*Provider` family (validation, caching, logging, change tracking); subclasses override individual methods to add behaviour and call `super` to delegate.
|
|
12
|
+
* - Exposes `source` and implements `Sourceable`, so wrapped providers can be discovered with `getSource()` / `requireSource()`.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const provider = new ValidationDBProvider(new MemoryDBProvider());
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider
|
|
18
|
+
*/
|
|
9
19
|
export declare class ThroughDBProvider<I extends Identifier, T extends Data> implements DBProvider<I, T>, Sourceable<DBProvider<I, T>> {
|
|
20
|
+
/**
|
|
21
|
+
* The wrapped source provider that every operation is delegated to.
|
|
22
|
+
*
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/source
|
|
24
|
+
*/
|
|
10
25
|
readonly source: DBProvider<I, T>;
|
|
26
|
+
/**
|
|
27
|
+
* Create a new `ThroughDBProvider` wrapping a source provider.
|
|
28
|
+
*
|
|
29
|
+
* @param source The provider to delegate all operations to.
|
|
30
|
+
*/
|
|
11
31
|
constructor(source: DBProvider<I, T>);
|
|
32
|
+
/**
|
|
33
|
+
* Get an item from a collection by its id, or `undefined` if it doesn't exist.
|
|
34
|
+
*
|
|
35
|
+
* @param collection Collection the item belongs to.
|
|
36
|
+
* @param id Identifier of the item to get.
|
|
37
|
+
* @returns The item, or `undefined` if no item exists with that id.
|
|
38
|
+
* @example await provider.getItem(users, 123) // Item or undefined.
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getItem
|
|
40
|
+
*/
|
|
12
41
|
getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
|
|
42
|
+
/**
|
|
43
|
+
* Get an item from a collection by its id, or throw if it doesn't exist.
|
|
44
|
+
*
|
|
45
|
+
* @param collection Collection the item belongs to.
|
|
46
|
+
* @param id Identifier of the item to get.
|
|
47
|
+
* @returns The item.
|
|
48
|
+
* @throws `RequiredError` if no item exists with that id.
|
|
49
|
+
* @example await provider.requireItem(users, 123) // Item (or throws).
|
|
50
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/requireItem
|
|
51
|
+
*/
|
|
13
52
|
requireItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<Item<II, TT>>;
|
|
53
|
+
/**
|
|
54
|
+
* Subscribe to live changes for a single item by its id.
|
|
55
|
+
*
|
|
56
|
+
* @param collection Collection the item belongs to.
|
|
57
|
+
* @param id Identifier of the item to subscribe to.
|
|
58
|
+
* @returns Async sequence yielding the item (or `undefined`) on every change.
|
|
59
|
+
* @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
|
|
60
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getItemSequence
|
|
61
|
+
*/
|
|
14
62
|
getItemSequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): OptionalItemSequence<II, TT>;
|
|
63
|
+
/**
|
|
64
|
+
* Add a new item to a collection and return its generated id.
|
|
65
|
+
*
|
|
66
|
+
* @param collection Collection to add the item to.
|
|
67
|
+
* @param data Data for the new item.
|
|
68
|
+
* @returns The generated identifier for the new item.
|
|
69
|
+
* @example await provider.addItem(users, { name: "Dave" }) // 123
|
|
70
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/addItem
|
|
71
|
+
*/
|
|
15
72
|
addItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, data: TT): Promise<II>;
|
|
73
|
+
/**
|
|
74
|
+
* Set (insert or overwrite) the data for an item by its id.
|
|
75
|
+
*
|
|
76
|
+
* @param collection Collection the item belongs to.
|
|
77
|
+
* @param id Identifier of the item to set.
|
|
78
|
+
* @param data Full data to store for the item.
|
|
79
|
+
* @example await provider.setItem(users, 123, { name: "Dave" });
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/setItem
|
|
81
|
+
*/
|
|
16
82
|
setItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Apply partial updates to an existing item by its id.
|
|
85
|
+
*
|
|
86
|
+
* @param collection Collection the item belongs to.
|
|
87
|
+
* @param id Identifier of the item to update.
|
|
88
|
+
* @param updates Updates to apply to the item.
|
|
89
|
+
* @example await provider.updateItem(users, 123, { name: "Dave" });
|
|
90
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/updateItem
|
|
91
|
+
*/
|
|
17
92
|
updateItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>;
|
|
93
|
+
/**
|
|
94
|
+
* Delete an item from a collection by its id.
|
|
95
|
+
*
|
|
96
|
+
* @param collection Collection the item belongs to.
|
|
97
|
+
* @param id Identifier of the item to delete.
|
|
98
|
+
* @example await provider.deleteItem(users, 123);
|
|
99
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/deleteItem
|
|
100
|
+
*/
|
|
18
101
|
deleteItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<void>;
|
|
102
|
+
/**
|
|
103
|
+
* Count the items in a collection matching an optional query.
|
|
104
|
+
*
|
|
105
|
+
* @param collection Collection to count items in.
|
|
106
|
+
* @param query Query to filter the counted items (counts all items when omitted).
|
|
107
|
+
* @returns The number of matching items.
|
|
108
|
+
* @example await provider.countQuery(users, { age: 40 }) // 7
|
|
109
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/countQuery
|
|
110
|
+
*/
|
|
19
111
|
countQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<number>;
|
|
112
|
+
/**
|
|
113
|
+
* Get the items in a collection matching an optional query.
|
|
114
|
+
*
|
|
115
|
+
* @param collection Collection to query.
|
|
116
|
+
* @param query Query to filter, sort, and limit the items (returns all items when omitted).
|
|
117
|
+
* @returns An array of matching items.
|
|
118
|
+
* @example await provider.getQuery(users, { age: 40, $order: "name" }) // Items.
|
|
119
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getQuery
|
|
120
|
+
*/
|
|
20
121
|
getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
|
|
122
|
+
/**
|
|
123
|
+
* Subscribe to live changes for the result of a query.
|
|
124
|
+
*
|
|
125
|
+
* @param collection Collection to query.
|
|
126
|
+
* @param query Query to filter, sort, and limit the items.
|
|
127
|
+
* @returns Async sequence yielding the matching items on every change.
|
|
128
|
+
* @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
|
|
129
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getQuerySequence
|
|
130
|
+
*/
|
|
21
131
|
getQuerySequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
|
|
132
|
+
/**
|
|
133
|
+
* Set (overwrite) the data for every item matching a query.
|
|
134
|
+
*
|
|
135
|
+
* @param collection Collection to write to.
|
|
136
|
+
* @param query Query selecting the items to set.
|
|
137
|
+
* @param data Full data to store for each matching item.
|
|
138
|
+
* @example await provider.setQuery(users, { age: 40 }, { active: true });
|
|
139
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/setQuery
|
|
140
|
+
*/
|
|
22
141
|
setQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>;
|
|
142
|
+
/**
|
|
143
|
+
* Apply partial updates to every item matching a query.
|
|
144
|
+
*
|
|
145
|
+
* @param collection Collection to write to.
|
|
146
|
+
* @param query Query selecting the items to update.
|
|
147
|
+
* @param updates Updates to apply to each matching item.
|
|
148
|
+
* @example await provider.updateQuery(users, { age: 40 }, { active: true });
|
|
149
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/updateQuery
|
|
150
|
+
*/
|
|
23
151
|
updateQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
|
|
152
|
+
/**
|
|
153
|
+
* Delete every item matching a query.
|
|
154
|
+
*
|
|
155
|
+
* @param collection Collection to delete from.
|
|
156
|
+
* @param query Query selecting the items to delete.
|
|
157
|
+
* @example await provider.deleteQuery(users, { active: false });
|
|
158
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/deleteQuery
|
|
159
|
+
*/
|
|
24
160
|
deleteQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>;
|
|
161
|
+
/**
|
|
162
|
+
* Get the first item matching a query, or `undefined` if there are none.
|
|
163
|
+
*
|
|
164
|
+
* @param collection Collection to query.
|
|
165
|
+
* @param query Query to filter and sort the items.
|
|
166
|
+
* @returns The first matching item, or `undefined` if none match.
|
|
167
|
+
* @example await provider.getFirst(users, { $order: "name" }) // Item or undefined.
|
|
168
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getFirst
|
|
169
|
+
*/
|
|
25
170
|
getFirst<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<OptionalItem<II, TT>>;
|
|
171
|
+
/**
|
|
172
|
+
* Get the first item matching a query, or throw if there are none.
|
|
173
|
+
*
|
|
174
|
+
* @param collection Collection to query.
|
|
175
|
+
* @param query Query to filter and sort the items.
|
|
176
|
+
* @returns The first matching item.
|
|
177
|
+
* @throws `RequiredError` if no item matches the query.
|
|
178
|
+
* @example await provider.requireFirst(users, { $order: "name" }) // Item (or throws).
|
|
179
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/requireFirst
|
|
180
|
+
*/
|
|
26
181
|
requireFirst<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<Item<II, TT>>;
|
|
27
182
|
[Symbol.asyncDispose](): Promise<void>;
|
|
28
183
|
}
|
|
@@ -1,52 +1,207 @@
|
|
|
1
1
|
import { awaitDispose } from "../../util/dispose.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Database provider that passes every operation straight through to a wrapped `source` provider.
|
|
4
|
+
*
|
|
5
|
+
* - Base for the layered `Through*Provider` family (validation, caching, logging, change tracking); subclasses override individual methods to add behaviour and call `super` to delegate.
|
|
6
|
+
* - Exposes `source` and implements `Sourceable`, so wrapped providers can be discovered with `getSource()` / `requireSource()`.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const provider = new ValidationDBProvider(new MemoryDBProvider());
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider
|
|
12
|
+
*/
|
|
3
13
|
export class ThroughDBProvider {
|
|
14
|
+
/**
|
|
15
|
+
* The wrapped source provider that every operation is delegated to.
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/source
|
|
18
|
+
*/
|
|
4
19
|
source;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new `ThroughDBProvider` wrapping a source provider.
|
|
22
|
+
*
|
|
23
|
+
* @param source The provider to delegate all operations to.
|
|
24
|
+
*/
|
|
5
25
|
constructor(source) {
|
|
6
26
|
this.source = source;
|
|
7
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Get an item from a collection by its id, or `undefined` if it doesn't exist.
|
|
30
|
+
*
|
|
31
|
+
* @param collection Collection the item belongs to.
|
|
32
|
+
* @param id Identifier of the item to get.
|
|
33
|
+
* @returns The item, or `undefined` if no item exists with that id.
|
|
34
|
+
* @example await provider.getItem(users, 123) // Item or undefined.
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getItem
|
|
36
|
+
*/
|
|
8
37
|
getItem(collection, id) {
|
|
9
38
|
return this.source.getItem(collection, id);
|
|
10
39
|
}
|
|
40
|
+
/**
|
|
41
|
+
* Get an item from a collection by its id, or throw if it doesn't exist.
|
|
42
|
+
*
|
|
43
|
+
* @param collection Collection the item belongs to.
|
|
44
|
+
* @param id Identifier of the item to get.
|
|
45
|
+
* @returns The item.
|
|
46
|
+
* @throws `RequiredError` if no item exists with that id.
|
|
47
|
+
* @example await provider.requireItem(users, 123) // Item (or throws).
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/requireItem
|
|
49
|
+
*/
|
|
11
50
|
requireItem(collection, id) {
|
|
12
51
|
return this.source.requireItem(collection, id);
|
|
13
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Subscribe to live changes for a single item by its id.
|
|
55
|
+
*
|
|
56
|
+
* @param collection Collection the item belongs to.
|
|
57
|
+
* @param id Identifier of the item to subscribe to.
|
|
58
|
+
* @returns Async sequence yielding the item (or `undefined`) on every change.
|
|
59
|
+
* @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
|
|
60
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getItemSequence
|
|
61
|
+
*/
|
|
14
62
|
getItemSequence(collection, id) {
|
|
15
63
|
return this.source.getItemSequence(collection, id);
|
|
16
64
|
}
|
|
65
|
+
/**
|
|
66
|
+
* Add a new item to a collection and return its generated id.
|
|
67
|
+
*
|
|
68
|
+
* @param collection Collection to add the item to.
|
|
69
|
+
* @param data Data for the new item.
|
|
70
|
+
* @returns The generated identifier for the new item.
|
|
71
|
+
* @example await provider.addItem(users, { name: "Dave" }) // 123
|
|
72
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/addItem
|
|
73
|
+
*/
|
|
17
74
|
addItem(collection, data) {
|
|
18
75
|
return this.source.addItem(collection, data);
|
|
19
76
|
}
|
|
77
|
+
/**
|
|
78
|
+
* Set (insert or overwrite) the data for an item by its id.
|
|
79
|
+
*
|
|
80
|
+
* @param collection Collection the item belongs to.
|
|
81
|
+
* @param id Identifier of the item to set.
|
|
82
|
+
* @param data Full data to store for the item.
|
|
83
|
+
* @example await provider.setItem(users, 123, { name: "Dave" });
|
|
84
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/setItem
|
|
85
|
+
*/
|
|
20
86
|
setItem(collection, id, data) {
|
|
21
87
|
return this.source.setItem(collection, id, data);
|
|
22
88
|
}
|
|
89
|
+
/**
|
|
90
|
+
* Apply partial updates to an existing item by its id.
|
|
91
|
+
*
|
|
92
|
+
* @param collection Collection the item belongs to.
|
|
93
|
+
* @param id Identifier of the item to update.
|
|
94
|
+
* @param updates Updates to apply to the item.
|
|
95
|
+
* @example await provider.updateItem(users, 123, { name: "Dave" });
|
|
96
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/updateItem
|
|
97
|
+
*/
|
|
23
98
|
updateItem(collection, id, updates) {
|
|
24
99
|
return this.source.updateItem(collection, id, updates);
|
|
25
100
|
}
|
|
101
|
+
/**
|
|
102
|
+
* Delete an item from a collection by its id.
|
|
103
|
+
*
|
|
104
|
+
* @param collection Collection the item belongs to.
|
|
105
|
+
* @param id Identifier of the item to delete.
|
|
106
|
+
* @example await provider.deleteItem(users, 123);
|
|
107
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/deleteItem
|
|
108
|
+
*/
|
|
26
109
|
deleteItem(collection, id) {
|
|
27
110
|
return this.source.deleteItem(collection, id);
|
|
28
111
|
}
|
|
112
|
+
/**
|
|
113
|
+
* Count the items in a collection matching an optional query.
|
|
114
|
+
*
|
|
115
|
+
* @param collection Collection to count items in.
|
|
116
|
+
* @param query Query to filter the counted items (counts all items when omitted).
|
|
117
|
+
* @returns The number of matching items.
|
|
118
|
+
* @example await provider.countQuery(users, { age: 40 }) // 7
|
|
119
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/countQuery
|
|
120
|
+
*/
|
|
29
121
|
countQuery(collection, query) {
|
|
30
122
|
return this.source.countQuery(collection, query);
|
|
31
123
|
}
|
|
124
|
+
/**
|
|
125
|
+
* Get the items in a collection matching an optional query.
|
|
126
|
+
*
|
|
127
|
+
* @param collection Collection to query.
|
|
128
|
+
* @param query Query to filter, sort, and limit the items (returns all items when omitted).
|
|
129
|
+
* @returns An array of matching items.
|
|
130
|
+
* @example await provider.getQuery(users, { age: 40, $order: "name" }) // Items.
|
|
131
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getQuery
|
|
132
|
+
*/
|
|
32
133
|
getQuery(collection, query) {
|
|
33
134
|
return this.source.getQuery(collection, query);
|
|
34
135
|
}
|
|
136
|
+
/**
|
|
137
|
+
* Subscribe to live changes for the result of a query.
|
|
138
|
+
*
|
|
139
|
+
* @param collection Collection to query.
|
|
140
|
+
* @param query Query to filter, sort, and limit the items.
|
|
141
|
+
* @returns Async sequence yielding the matching items on every change.
|
|
142
|
+
* @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
|
|
143
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getQuerySequence
|
|
144
|
+
*/
|
|
35
145
|
getQuerySequence(collection, query) {
|
|
36
146
|
return this.source.getQuerySequence(collection, query);
|
|
37
147
|
}
|
|
148
|
+
/**
|
|
149
|
+
* Set (overwrite) the data for every item matching a query.
|
|
150
|
+
*
|
|
151
|
+
* @param collection Collection to write to.
|
|
152
|
+
* @param query Query selecting the items to set.
|
|
153
|
+
* @param data Full data to store for each matching item.
|
|
154
|
+
* @example await provider.setQuery(users, { age: 40 }, { active: true });
|
|
155
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/setQuery
|
|
156
|
+
*/
|
|
38
157
|
setQuery(collection, query, data) {
|
|
39
158
|
return this.source.setQuery(collection, query, data);
|
|
40
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Apply partial updates to every item matching a query.
|
|
162
|
+
*
|
|
163
|
+
* @param collection Collection to write to.
|
|
164
|
+
* @param query Query selecting the items to update.
|
|
165
|
+
* @param updates Updates to apply to each matching item.
|
|
166
|
+
* @example await provider.updateQuery(users, { age: 40 }, { active: true });
|
|
167
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/updateQuery
|
|
168
|
+
*/
|
|
41
169
|
updateQuery(collection, query, updates) {
|
|
42
170
|
return this.source.updateQuery(collection, query, updates);
|
|
43
171
|
}
|
|
172
|
+
/**
|
|
173
|
+
* Delete every item matching a query.
|
|
174
|
+
*
|
|
175
|
+
* @param collection Collection to delete from.
|
|
176
|
+
* @param query Query selecting the items to delete.
|
|
177
|
+
* @example await provider.deleteQuery(users, { active: false });
|
|
178
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/deleteQuery
|
|
179
|
+
*/
|
|
44
180
|
deleteQuery(collection, query) {
|
|
45
181
|
return this.source.deleteQuery(collection, query);
|
|
46
182
|
}
|
|
183
|
+
/**
|
|
184
|
+
* Get the first item matching a query, or `undefined` if there are none.
|
|
185
|
+
*
|
|
186
|
+
* @param collection Collection to query.
|
|
187
|
+
* @param query Query to filter and sort the items.
|
|
188
|
+
* @returns The first matching item, or `undefined` if none match.
|
|
189
|
+
* @example await provider.getFirst(users, { $order: "name" }) // Item or undefined.
|
|
190
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/getFirst
|
|
191
|
+
*/
|
|
47
192
|
getFirst(collection, query) {
|
|
48
193
|
return this.source.getFirst(collection, query);
|
|
49
194
|
}
|
|
195
|
+
/**
|
|
196
|
+
* Get the first item matching a query, or throw if there are none.
|
|
197
|
+
*
|
|
198
|
+
* @param collection Collection to query.
|
|
199
|
+
* @param query Query to filter and sort the items.
|
|
200
|
+
* @returns The first matching item.
|
|
201
|
+
* @throws `RequiredError` if no item matches the query.
|
|
202
|
+
* @example await provider.requireFirst(users, { $order: "name" }) // Item (or throws).
|
|
203
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ThroughDBProvider/ThroughDBProvider/requireFirst
|
|
204
|
+
*/
|
|
50
205
|
requireFirst(collection, query) {
|
|
51
206
|
return this.source.requireFirst(collection, query);
|
|
52
207
|
}
|
|
@@ -4,17 +4,136 @@ import type { Query } from "../../util/query.js";
|
|
|
4
4
|
import type { Updates } from "../../util/update.js";
|
|
5
5
|
import type { Collection } from "../collection/Collection.js";
|
|
6
6
|
import { ThroughDBProvider } from "./ThroughDBProvider.js";
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Database provider that validates data flowing to and from an asynchronous source provider.
|
|
9
|
+
*
|
|
10
|
+
* - Wraps a `source` provider (which may have any type, because validation guarantees the type) and runs every value through the relevant `Collection` schema before writing and after reading.
|
|
11
|
+
* - Written data is validated against the collection's data schema; read data is validated against the item schema, so trusted, correctly-typed values reach the rest of the app.
|
|
12
|
+
* - Validation failures here are program-state errors, so they throw a typed `ValueError` rather than a raw validation `string`.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const provider = new ValidationDBProvider(new FirestoreProvider());
|
|
16
|
+
* await provider.setItem(users, 123, { name: "Dave", age: 40 }); // Validates before writing.
|
|
17
|
+
*
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider
|
|
19
|
+
*/
|
|
8
20
|
export declare class ValidationDBProvider<I extends Identifier, T extends Data> extends ThroughDBProvider<I, T> {
|
|
21
|
+
/**
|
|
22
|
+
* Get an item by its id and validate it, or `undefined` if it doesn't exist.
|
|
23
|
+
*
|
|
24
|
+
* @param collection Collection the item belongs to.
|
|
25
|
+
* @param id Identifier of the item to get.
|
|
26
|
+
* @returns The validated item, or `undefined` if no item exists with that id.
|
|
27
|
+
* @throws `ValueError` if the stored item does not validate against the collection schema.
|
|
28
|
+
* @example await provider.getItem(users, 123) // Validated item or undefined.
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/getItem
|
|
30
|
+
*/
|
|
9
31
|
getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
|
|
32
|
+
/**
|
|
33
|
+
* Subscribe to live changes for a single item, validating each emission.
|
|
34
|
+
*
|
|
35
|
+
* @param collection Collection the item belongs to.
|
|
36
|
+
* @param id Identifier of the item to subscribe to.
|
|
37
|
+
* @returns Async sequence yielding the validated item (or `undefined`) on every change.
|
|
38
|
+
* @throws `ValueError` if an emitted item does not validate against the collection schema.
|
|
39
|
+
* @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/getItemSequence
|
|
41
|
+
*/
|
|
10
42
|
getItemSequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): OptionalItemSequence<II, TT>;
|
|
43
|
+
/**
|
|
44
|
+
* Validate and add a new item, returning its validated generated id.
|
|
45
|
+
*
|
|
46
|
+
* @param collection Collection to add the item to.
|
|
47
|
+
* @param data Data for the new item (validated before writing).
|
|
48
|
+
* @returns The validated generated identifier for the new item.
|
|
49
|
+
* @throws `ValueError` if the data or returned id does not validate against the collection schema.
|
|
50
|
+
* @example await provider.addItem(users, { name: "Dave", age: 40 }) // 123
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/addItem
|
|
52
|
+
*/
|
|
11
53
|
addItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, data: TT): Promise<II>;
|
|
54
|
+
/**
|
|
55
|
+
* Validate and set (insert or overwrite) the data for an item by its id.
|
|
56
|
+
*
|
|
57
|
+
* @param collection Collection the item belongs to.
|
|
58
|
+
* @param id Identifier of the item to set.
|
|
59
|
+
* @param data Full data to store for the item (validated before writing).
|
|
60
|
+
* @throws `ValueError` if the data does not validate against the collection schema.
|
|
61
|
+
* @example await provider.setItem(users, 123, { name: "Dave", age: 40 });
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/setItem
|
|
63
|
+
*/
|
|
12
64
|
setItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
|
|
65
|
+
/**
|
|
66
|
+
* Validate and apply partial updates to an existing item by its id.
|
|
67
|
+
*
|
|
68
|
+
* @param collection Collection the item belongs to.
|
|
69
|
+
* @param id Identifier of the item to update.
|
|
70
|
+
* @param updates Updates to apply (validated before writing).
|
|
71
|
+
* @throws `ValueError` if the updates do not validate against the collection schema.
|
|
72
|
+
* @example await provider.updateItem(users, 123, { age: 41 });
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/updateItem
|
|
74
|
+
*/
|
|
13
75
|
updateItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>;
|
|
76
|
+
/**
|
|
77
|
+
* Count the items in a collection matching an optional query (passed straight through).
|
|
78
|
+
*
|
|
79
|
+
* @param collection Collection to count items in.
|
|
80
|
+
* @param query Query to filter the counted items (counts all items when omitted).
|
|
81
|
+
* @returns The number of matching items.
|
|
82
|
+
* @example await provider.countQuery(users, { age: 40 }) // 7
|
|
83
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/countQuery
|
|
84
|
+
*/
|
|
14
85
|
countQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<number>;
|
|
86
|
+
/**
|
|
87
|
+
* Get the items matching an optional query and validate them.
|
|
88
|
+
*
|
|
89
|
+
* @param collection Collection to query.
|
|
90
|
+
* @param query Query to filter, sort, and limit the items (returns all items when omitted).
|
|
91
|
+
* @returns An array of validated matching items.
|
|
92
|
+
* @throws `ValueError` if one or more stored items do not validate against the collection schema.
|
|
93
|
+
* @example await provider.getQuery(users, { age: 40, $order: "name" }) // Validated items.
|
|
94
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/getQuery
|
|
95
|
+
*/
|
|
15
96
|
getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
|
|
97
|
+
/**
|
|
98
|
+
* Subscribe to live changes for a query, validating each emitted result.
|
|
99
|
+
*
|
|
100
|
+
* @param collection Collection to query.
|
|
101
|
+
* @param query Query to filter, sort, and limit the items.
|
|
102
|
+
* @returns Async sequence yielding the validated matching items on every change.
|
|
103
|
+
* @throws `ValueError` if one or more emitted items do not validate against the collection schema.
|
|
104
|
+
* @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
|
|
105
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/getQuerySequence
|
|
106
|
+
*/
|
|
16
107
|
getQuerySequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
|
|
108
|
+
/**
|
|
109
|
+
* Validate and set (overwrite) the data for every item matching a query.
|
|
110
|
+
*
|
|
111
|
+
* @param collection Collection to write to.
|
|
112
|
+
* @param query Query selecting the items to set.
|
|
113
|
+
* @param data Full data to store for each matching item (validated before writing).
|
|
114
|
+
* @throws `ValueError` if the data does not validate against the collection schema.
|
|
115
|
+
* @example await provider.setQuery(users, { age: 40 }, { name: "Dave", age: 41 });
|
|
116
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/setQuery
|
|
117
|
+
*/
|
|
17
118
|
setQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>;
|
|
119
|
+
/**
|
|
120
|
+
* Validate and apply partial updates to every item matching a query.
|
|
121
|
+
*
|
|
122
|
+
* @param collection Collection to write to.
|
|
123
|
+
* @param query Query selecting the items to update.
|
|
124
|
+
* @param updates Updates to apply to each matching item (validated before writing).
|
|
125
|
+
* @throws `ValueError` if the updates do not validate against the collection schema.
|
|
126
|
+
* @example await provider.updateQuery(users, { age: 40 }, { active: true });
|
|
127
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/updateQuery
|
|
128
|
+
*/
|
|
18
129
|
updateQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Delete every item matching a query (passed straight through).
|
|
132
|
+
*
|
|
133
|
+
* @param collection Collection to delete from.
|
|
134
|
+
* @param query Query selecting the items to delete.
|
|
135
|
+
* @example await provider.deleteQuery(users, { active: false });
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/db/provider/ValidationDBProvider/ValidationDBProvider/deleteQuery
|
|
137
|
+
*/
|
|
19
138
|
deleteQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>;
|
|
20
139
|
}
|