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