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
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import { DataSchema, ITEM } from "../../schema/DataSchema.js";
|
|
2
2
|
import { NumberSchema } from "../../schema/NumberSchema.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Default identifier schema (integer) used when a collection doesn't supply its own.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/ID
|
|
7
|
+
*/
|
|
4
8
|
export const ID = new NumberSchema({
|
|
5
9
|
step: 1,
|
|
6
10
|
min: Number.MIN_SAFE_INTEGER,
|
|
@@ -9,14 +13,44 @@ export const ID = new NumberSchema({
|
|
|
9
13
|
one: "ID",
|
|
10
14
|
title: "ID",
|
|
11
15
|
});
|
|
12
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Declarative definition of a database collection/table.
|
|
18
|
+
*
|
|
19
|
+
* - Pairs a collection name with an identifier schema and a data schema, so providers can validate and address items.
|
|
20
|
+
* - Extends `DataSchema<T>`, so the collection itself validates an item's data, while `.item` validates the complete `id + data` item.
|
|
21
|
+
*
|
|
22
|
+
* @example
|
|
23
|
+
* const users = new Collection("users", ID, { name: STRING, age: NUMBER });
|
|
24
|
+
* users.validate({ name: "Dave", age: 40 }); // Validates item data.
|
|
25
|
+
*
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection
|
|
27
|
+
*/
|
|
13
28
|
export class Collection extends DataSchema {
|
|
14
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Collection name (used as the table/collection key).
|
|
31
|
+
*
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/name
|
|
33
|
+
*/
|
|
15
34
|
name;
|
|
16
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Schema for the identifier type.
|
|
37
|
+
*
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/id
|
|
39
|
+
*/
|
|
17
40
|
id;
|
|
18
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Schema for a complete item (id + data).
|
|
43
|
+
*
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/item
|
|
45
|
+
*/
|
|
19
46
|
item;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new `Collection`.
|
|
49
|
+
*
|
|
50
|
+
* @param name Collection name used as the table/collection key.
|
|
51
|
+
* @param id Schema for the identifier type.
|
|
52
|
+
* @param data Data schema, or the `Schemas` props used to construct one.
|
|
53
|
+
*/
|
|
20
54
|
constructor(name, id, data) {
|
|
21
55
|
const dataSchema = data instanceof DataSchema ? data : new DataSchema({ props: data });
|
|
22
56
|
super({ ...dataSchema, props: dataSchema.props });
|
|
@@ -24,11 +58,29 @@ export class Collection extends DataSchema {
|
|
|
24
58
|
this.id = id;
|
|
25
59
|
this.item = ITEM(id, dataSchema);
|
|
26
60
|
}
|
|
61
|
+
/**
|
|
62
|
+
* Convert this collection to its string name.
|
|
63
|
+
*
|
|
64
|
+
* @returns The collection name.
|
|
65
|
+
* @example `${users}` // "users"
|
|
66
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/toString
|
|
67
|
+
*/
|
|
27
68
|
toString() {
|
|
28
69
|
return this.name;
|
|
29
70
|
}
|
|
30
71
|
}
|
|
31
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Create a `Collection` from a name, an identifier schema, and a data schema.
|
|
74
|
+
*
|
|
75
|
+
* *Factory for `Collection`.*
|
|
76
|
+
*
|
|
77
|
+
* @param name Collection name used as the table/collection key.
|
|
78
|
+
* @param id Schema for the identifier type.
|
|
79
|
+
* @param data Data schema, or the `Schemas` props used to construct one.
|
|
80
|
+
* @returns A new `Collection` instance.
|
|
81
|
+
* @example COLLECTION("users", ID, { name: STRING, age: NUMBER }) // Collection<"users", number, { name: string; age: number }>
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/COLLECTION
|
|
83
|
+
*/
|
|
32
84
|
export function COLLECTION(name, id, data) {
|
|
33
85
|
return new Collection(name, id, data);
|
|
34
86
|
}
|
|
@@ -1,8 +1,36 @@
|
|
|
1
1
|
import type { Collections } from "../collection/Collection.js";
|
|
2
2
|
import type { DBProvider } from "../provider/DBProvider.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Base class for database schema migrators that bring a provider's storage into line with a set of collection schemas.
|
|
5
|
+
*
|
|
6
|
+
* - Subclasses implement `migrate()` for a specific backend (e.g. SQL via `SQLMigrator`).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* class MyMigrator extends DBMigrator { async migrate(...collections) { ... } }
|
|
10
|
+
* await new MyMigrator(provider).migrate(users, posts);
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/DBMigrator/DBMigrator
|
|
12
|
+
*/
|
|
4
13
|
export declare abstract class DBMigrator<T extends DBProvider = DBProvider> {
|
|
14
|
+
/**
|
|
15
|
+
* The database provider whose storage this migrator updates.
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/DBMigrator/DBMigrator/provider
|
|
17
|
+
*/
|
|
5
18
|
readonly provider: T;
|
|
19
|
+
/**
|
|
20
|
+
* Create a migrator bound to a database provider.
|
|
21
|
+
*
|
|
22
|
+
* @param provider The database provider whose storage this migrator updates.
|
|
23
|
+
* @example new DBMigrator(provider)
|
|
24
|
+
*/
|
|
6
25
|
constructor(provider: T);
|
|
26
|
+
/**
|
|
27
|
+
* Bring the provider's storage into line with the given collection schemas.
|
|
28
|
+
*
|
|
29
|
+
* @param collections The collections whose schemas the storage should match.
|
|
30
|
+
* @returns Promise that resolves once migration has completed.
|
|
31
|
+
* @throws {UnimplementedError} If a schema feature can't be represented by the backend.
|
|
32
|
+
* @example await migrator.migrate(users, posts)
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/DBMigrator/DBMigrator/migrate
|
|
34
|
+
*/
|
|
7
35
|
abstract migrate(...collections: Collections): Promise<void>;
|
|
8
36
|
}
|
package/db/migrate/DBMigrator.js
CHANGED
|
@@ -1,6 +1,25 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Base class for database schema migrators that bring a provider's storage into line with a set of collection schemas.
|
|
3
|
+
*
|
|
4
|
+
* - Subclasses implement `migrate()` for a specific backend (e.g. SQL via `SQLMigrator`).
|
|
5
|
+
*
|
|
6
|
+
* @example
|
|
7
|
+
* class MyMigrator extends DBMigrator { async migrate(...collections) { ... } }
|
|
8
|
+
* await new MyMigrator(provider).migrate(users, posts);
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/DBMigrator/DBMigrator
|
|
10
|
+
*/
|
|
2
11
|
export class DBMigrator {
|
|
12
|
+
/**
|
|
13
|
+
* The database provider whose storage this migrator updates.
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/DBMigrator/DBMigrator/provider
|
|
15
|
+
*/
|
|
3
16
|
provider;
|
|
17
|
+
/**
|
|
18
|
+
* Create a migrator bound to a database provider.
|
|
19
|
+
*
|
|
20
|
+
* @param provider The database provider whose storage this migrator updates.
|
|
21
|
+
* @example new DBMigrator(provider)
|
|
22
|
+
*/
|
|
4
23
|
constructor(provider) {
|
|
5
24
|
this.provider = provider;
|
|
6
25
|
}
|
|
@@ -13,7 +13,14 @@ type PostgreSQLColumnRow = {
|
|
|
13
13
|
readonly type: string;
|
|
14
14
|
readonly value: string | null;
|
|
15
15
|
};
|
|
16
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* PostgreSQL migrator that inspects the live schema via `pg_catalog` tables to diff and migrate columns.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const migrator = new PostgreSQLMigrator(provider);
|
|
21
|
+
* await migrator.migrate(users, posts);
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/PostgreSQLMigrator/PostgreSQLMigrator
|
|
23
|
+
*/
|
|
17
24
|
export declare class PostgreSQLMigrator<T extends SQLProvider = SQLProvider> extends SQLMigrator<T> {
|
|
18
25
|
protected getTables(): Promise<readonly string[]>;
|
|
19
26
|
protected getTable(name: string): Promise<SQLTable | undefined>;
|
|
@@ -15,7 +15,14 @@ const INT4_MAX = 2147483647;
|
|
|
15
15
|
const INT4_MIN = -2147483648;
|
|
16
16
|
const COMPATIBLE_NUMBER_TYPES = ["integer", "bigint", "numeric", "int", "int4", "int8"];
|
|
17
17
|
const COMPATIBLE_STRING_TYPES = ["character varying", "varchar", "text", "char", "character"];
|
|
18
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* PostgreSQL migrator that inspects the live schema via `pg_catalog` tables to diff and migrate columns.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const migrator = new PostgreSQLMigrator(provider);
|
|
23
|
+
* await migrator.migrate(users, posts);
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/PostgreSQLMigrator/PostgreSQLMigrator
|
|
25
|
+
*/
|
|
19
26
|
export class PostgreSQLMigrator extends SQLMigrator {
|
|
20
27
|
async getTables() {
|
|
21
28
|
const rows = await this.provider.exec `
|
|
@@ -3,29 +3,88 @@ import type { Data } from "../../util/data.js";
|
|
|
3
3
|
import type { Collection, Collections } from "../collection/Collection.js";
|
|
4
4
|
import type { SQLProvider } from "../provider/SQLProvider.js";
|
|
5
5
|
import { DBMigrator } from "./DBMigrator.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Column definition in a live SQL table, pairing a column name with its raw definition statement.
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLTableColumn
|
|
9
|
+
*/
|
|
7
10
|
export type SQLTableColumn = {
|
|
8
11
|
readonly name: string;
|
|
9
12
|
readonly statement: string;
|
|
10
13
|
};
|
|
11
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Existing SQL table schema keyed by column name, as read back from the database.
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLTable
|
|
17
|
+
*/
|
|
12
18
|
export type SQLTable = {
|
|
13
19
|
readonly columns: Readonly<Record<string, SQLTableColumn>>;
|
|
14
20
|
readonly name: string;
|
|
15
21
|
readonly sql?: string | undefined;
|
|
16
22
|
};
|
|
17
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Generated SQL column mapped from a collection schema path, holding its column name, key, and JSON path.
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLColumn
|
|
26
|
+
*/
|
|
18
27
|
export type SQLColumn = {
|
|
19
28
|
readonly column: string;
|
|
20
29
|
readonly key: string;
|
|
21
30
|
readonly path: string;
|
|
22
31
|
};
|
|
23
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Shared SQL migration logic that diffs collection schemas against live tables to produce migration statements.
|
|
34
|
+
*
|
|
35
|
+
* - Subclasses implement backend-specific schema inspection and column definitions (e.g. SQLite, PostgreSQL).
|
|
36
|
+
*
|
|
37
|
+
* @example
|
|
38
|
+
* const migrator = new SQLiteMigrator(provider);
|
|
39
|
+
* await migrator.migrate(users, posts);
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator
|
|
41
|
+
*/
|
|
24
42
|
export declare abstract class SQLMigrator<T extends SQLProvider = SQLProvider> extends DBMigrator<T> {
|
|
43
|
+
/**
|
|
44
|
+
* Bring the provider's tables into line with the given collection schemas by running the generated migrations.
|
|
45
|
+
*
|
|
46
|
+
* @param collections The collections whose schemas the tables should match.
|
|
47
|
+
* @returns Promise that resolves once every migration has been executed.
|
|
48
|
+
* @throws {UnimplementedError} If a schema feature can't be represented as a SQL column.
|
|
49
|
+
* @example await migrator.migrate(users, posts)
|
|
50
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/migrate
|
|
51
|
+
*/
|
|
25
52
|
migrate(...collections: Collections<number>): Promise<void>;
|
|
53
|
+
/**
|
|
54
|
+
* Compute the SQL statements needed to bring the tables into line with the given collection schemas, without executing them.
|
|
55
|
+
*
|
|
56
|
+
* @param collections The collections whose schemas the tables should match.
|
|
57
|
+
* @returns Promise resolving to the ordered list of SQL migration statements.
|
|
58
|
+
* @example const sql = await migrator.getMigrations(users)
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getMigrations
|
|
60
|
+
*/
|
|
26
61
|
getMigrations(...collections: Collections<number>): Promise<readonly string[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Build the `CREATE TABLE` statement for a collection, including its ID, data, and generated columns.
|
|
64
|
+
*
|
|
65
|
+
* @param collection The collection to create a table for.
|
|
66
|
+
* @returns The `CREATE TABLE` SQL statement.
|
|
67
|
+
* @example migrator.getCreateTableQuery(users) // CREATE TABLE "users" (...)
|
|
68
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getCreateTableQuery
|
|
69
|
+
*/
|
|
27
70
|
getCreateTableQuery<T extends Data>(collection: Collection<string, number, T>): string;
|
|
71
|
+
/**
|
|
72
|
+
* Get the full set of columns for a collection's table: the ID column, data column, and generated columns.
|
|
73
|
+
*
|
|
74
|
+
* @param collection The collection to get columns for.
|
|
75
|
+
* @returns The ordered list of table columns.
|
|
76
|
+
* @example migrator.getCreateTableColumns(users)
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getCreateTableColumns
|
|
78
|
+
*/
|
|
28
79
|
getCreateTableColumns<T extends Data>(collection: Collection<string, number, T>): readonly SQLTableColumn[];
|
|
80
|
+
/**
|
|
81
|
+
* Get the generated (computed) columns for a collection's table, derived from its schema's scalar properties.
|
|
82
|
+
*
|
|
83
|
+
* @param collection The collection to get generated columns for.
|
|
84
|
+
* @returns The list of generated table columns.
|
|
85
|
+
* @example migrator.getGeneratedTableColumns(users)
|
|
86
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getGeneratedTableColumns
|
|
87
|
+
*/
|
|
29
88
|
getGeneratedTableColumns<T extends Data>(collection: Collection<string, number, T>): readonly SQLTableColumn[];
|
|
30
89
|
protected getColumnMigrations(tableName: string, from: SQLTableColumn | undefined, to: SQLTableColumn | undefined): readonly string[];
|
|
31
90
|
protected getAlterColumnQueries(tableName: string, from: SQLTableColumn, to: SQLTableColumn): readonly string[];
|
|
@@ -9,12 +9,38 @@ import { NumberSchema } from "../../schema/NumberSchema.js";
|
|
|
9
9
|
import { StringSchema } from "../../schema/StringSchema.js";
|
|
10
10
|
import { ThroughSchema } from "../../schema/ThroughSchema.js";
|
|
11
11
|
import { DBMigrator } from "./DBMigrator.js";
|
|
12
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Shared SQL migration logic that diffs collection schemas against live tables to produce migration statements.
|
|
14
|
+
*
|
|
15
|
+
* - Subclasses implement backend-specific schema inspection and column definitions (e.g. SQLite, PostgreSQL).
|
|
16
|
+
*
|
|
17
|
+
* @example
|
|
18
|
+
* const migrator = new SQLiteMigrator(provider);
|
|
19
|
+
* await migrator.migrate(users, posts);
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator
|
|
21
|
+
*/
|
|
13
22
|
export class SQLMigrator extends DBMigrator {
|
|
23
|
+
/**
|
|
24
|
+
* Bring the provider's tables into line with the given collection schemas by running the generated migrations.
|
|
25
|
+
*
|
|
26
|
+
* @param collections The collections whose schemas the tables should match.
|
|
27
|
+
* @returns Promise that resolves once every migration has been executed.
|
|
28
|
+
* @throws {UnimplementedError} If a schema feature can't be represented as a SQL column.
|
|
29
|
+
* @example await migrator.migrate(users, posts)
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/migrate
|
|
31
|
+
*/
|
|
14
32
|
async migrate(...collections) {
|
|
15
33
|
for (const migration of await this.getMigrations(...collections))
|
|
16
34
|
await this.provider.exec(_getTemplateStrings(migration));
|
|
17
35
|
}
|
|
36
|
+
/**
|
|
37
|
+
* Compute the SQL statements needed to bring the tables into line with the given collection schemas, without executing them.
|
|
38
|
+
*
|
|
39
|
+
* @param collections The collections whose schemas the tables should match.
|
|
40
|
+
* @returns Promise resolving to the ordered list of SQL migration statements.
|
|
41
|
+
* @example const sql = await migrator.getMigrations(users)
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getMigrations
|
|
43
|
+
*/
|
|
18
44
|
async getMigrations(...collections) {
|
|
19
45
|
const tables = await this.getTables();
|
|
20
46
|
const existing = new Set(tables);
|
|
@@ -26,15 +52,39 @@ export class SQLMigrator extends DBMigrator {
|
|
|
26
52
|
}
|
|
27
53
|
return migrations;
|
|
28
54
|
}
|
|
55
|
+
/**
|
|
56
|
+
* Build the `CREATE TABLE` statement for a collection, including its ID, data, and generated columns.
|
|
57
|
+
*
|
|
58
|
+
* @param collection The collection to create a table for.
|
|
59
|
+
* @returns The `CREATE TABLE` SQL statement.
|
|
60
|
+
* @example migrator.getCreateTableQuery(users) // CREATE TABLE "users" (...)
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getCreateTableQuery
|
|
62
|
+
*/
|
|
29
63
|
getCreateTableQuery(collection) {
|
|
30
64
|
const suffix = this.getCreateTableSuffix(collection);
|
|
31
65
|
return `CREATE TABLE ${this.quoteIdentifier(collection.name)} (\n${this.getCreateTableColumns(collection)
|
|
32
66
|
.map(column => ` ${this.getTableColumnDefinition(column)}`)
|
|
33
67
|
.join(",\n")}\n)${suffix};`;
|
|
34
68
|
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the full set of columns for a collection's table: the ID column, data column, and generated columns.
|
|
71
|
+
*
|
|
72
|
+
* @param collection The collection to get columns for.
|
|
73
|
+
* @returns The ordered list of table columns.
|
|
74
|
+
* @example migrator.getCreateTableColumns(users)
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getCreateTableColumns
|
|
76
|
+
*/
|
|
35
77
|
getCreateTableColumns(collection) {
|
|
36
78
|
return [this.getIDColumn(collection), this.getDataColumn(), ...this.getGeneratedTableColumns(collection)];
|
|
37
79
|
}
|
|
80
|
+
/**
|
|
81
|
+
* Get the generated (computed) columns for a collection's table, derived from its schema's scalar properties.
|
|
82
|
+
*
|
|
83
|
+
* @param collection The collection to get generated columns for.
|
|
84
|
+
* @returns The list of generated table columns.
|
|
85
|
+
* @example migrator.getGeneratedTableColumns(users)
|
|
86
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLMigrator/SQLMigrator/getGeneratedTableColumns
|
|
87
|
+
*/
|
|
38
88
|
getGeneratedTableColumns(collection) {
|
|
39
89
|
return this.getGeneratedColumns(collection).map(column => this.getGeneratedColumn(column, collection));
|
|
40
90
|
}
|
|
@@ -3,7 +3,14 @@ import type { Identifier } from "../../util/item.js";
|
|
|
3
3
|
import type { Collection } from "../collection/Collection.js";
|
|
4
4
|
import type { SQLProvider } from "../provider/SQLProvider.js";
|
|
5
5
|
import { SQLMigrator, type SQLTable, type SQLTableColumn } from "./SQLMigrator.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* SQLite (and Cloudflare D1) migrator that uses `sqlite_master` as the schema source of truth.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const migrator = new SQLiteMigrator(provider);
|
|
11
|
+
* await migrator.migrate(users, posts);
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLiteMigrator/SQLiteMigrator
|
|
13
|
+
*/
|
|
7
14
|
export declare class SQLiteMigrator<T extends SQLProvider = SQLProvider> extends SQLMigrator<T> {
|
|
8
15
|
protected getTables(): Promise<readonly string[]>;
|
|
9
16
|
protected getTable(name: string): Promise<SQLTable | undefined>;
|
|
@@ -3,7 +3,14 @@ import { ChoiceSchema } from "../../schema/ChoiceSchema.js";
|
|
|
3
3
|
import { DateSchema } from "../../schema/DateSchema.js";
|
|
4
4
|
import { NumberSchema } from "../../schema/NumberSchema.js";
|
|
5
5
|
import { SQLMigrator } from "./SQLMigrator.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* SQLite (and Cloudflare D1) migrator that uses `sqlite_master` as the schema source of truth.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const migrator = new SQLiteMigrator(provider);
|
|
11
|
+
* await migrator.migrate(users, posts);
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/db/migrate/SQLiteMigrator/SQLiteMigrator
|
|
13
|
+
*/
|
|
7
14
|
export class SQLiteMigrator extends SQLMigrator {
|
|
8
15
|
async getTables() {
|
|
9
16
|
const rows = await this.provider.exec `
|
|
@@ -6,22 +6,156 @@ 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
|
import { MemoryDBProvider } from "./MemoryDBProvider.js";
|
|
9
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Database provider that keeps a copy of asynchronous remote data in a local synchronous cache.
|
|
11
|
+
*
|
|
12
|
+
* - Wraps a `source` provider and mirrors every read and write into an in-memory `MemoryDBProvider`, so subsequent reads can be served synchronously and live subscriptions stay seeded.
|
|
13
|
+
* - Reads fetch from `source`, then refresh the cache; writes hit `source`, then mirror the change into the cache.
|
|
14
|
+
* - Discover the cache from a wrapping layer with `getSource(CacheDBProvider, provider)` to seed stores from `.memory`.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const provider = new CacheDBProvider(new FirestoreProvider());
|
|
18
|
+
* await provider.getItem(users, 123); // Fetches from source, then caches in memory.
|
|
19
|
+
*
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider
|
|
21
|
+
*/
|
|
10
22
|
export declare class CacheDBProvider<I extends Identifier, T extends Data> extends DBProvider<I, T> implements Sourceable<DBProvider<I, T>> {
|
|
23
|
+
/**
|
|
24
|
+
* The wrapped source provider that data is fetched from and written to.
|
|
25
|
+
*
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/source
|
|
27
|
+
*/
|
|
11
28
|
readonly source: DBProvider<I, T>;
|
|
29
|
+
/**
|
|
30
|
+
* The in-memory provider holding the local synchronous cache of `source` data.
|
|
31
|
+
*
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/memory
|
|
33
|
+
*/
|
|
12
34
|
readonly memory: MemoryDBProvider<I, T>;
|
|
35
|
+
/**
|
|
36
|
+
* Create a new `CacheDBProvider` wrapping a source provider.
|
|
37
|
+
*
|
|
38
|
+
* @param source The provider to fetch from and write to.
|
|
39
|
+
* @param cache In-memory provider to use as the cache (a fresh `MemoryDBProvider` by default).
|
|
40
|
+
*/
|
|
13
41
|
constructor(source: DBProvider<I, T>, cache?: MemoryDBProvider<I, T>);
|
|
42
|
+
/**
|
|
43
|
+
* Get an item from `source` by its id, refreshing the cache, or `undefined` 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, or `undefined` if no item exists with that id.
|
|
48
|
+
* @example await provider.getItem(users, 123) // Item or undefined.
|
|
49
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/getItem
|
|
50
|
+
*/
|
|
14
51
|
getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
|
|
52
|
+
/**
|
|
53
|
+
* Subscribe to live changes for a single item, mirroring each emission into the cache.
|
|
54
|
+
*
|
|
55
|
+
* @param collection Collection the item belongs to.
|
|
56
|
+
* @param id Identifier of the item to subscribe to.
|
|
57
|
+
* @returns Async sequence yielding the item (or `undefined`) on every change.
|
|
58
|
+
* @example for await (const item of provider.getItemSequence(users, 123)) console.log(item);
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/getItemSequence
|
|
60
|
+
*/
|
|
15
61
|
getItemSequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): OptionalItemSequence<II, TT>;
|
|
62
|
+
/**
|
|
63
|
+
* Add a new item to `source` and mirror it into the cache.
|
|
64
|
+
*
|
|
65
|
+
* @param collection Collection to add the item to.
|
|
66
|
+
* @param data Data for the new item.
|
|
67
|
+
* @returns The generated identifier for the new item.
|
|
68
|
+
* @example await provider.addItem(users, { name: "Dave" }) // 123
|
|
69
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/addItem
|
|
70
|
+
*/
|
|
16
71
|
addItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, data: TT): Promise<II>;
|
|
72
|
+
/**
|
|
73
|
+
* Set (insert or overwrite) an item in `source` and mirror it into the cache.
|
|
74
|
+
*
|
|
75
|
+
* @param collection Collection the item belongs to.
|
|
76
|
+
* @param id Identifier of the item to set.
|
|
77
|
+
* @param data Full data to store for the item.
|
|
78
|
+
* @example await provider.setItem(users, 123, { name: "Dave" });
|
|
79
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/setItem
|
|
80
|
+
*/
|
|
17
81
|
setItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Apply partial updates to an item in `source` and mirror them into the cache.
|
|
84
|
+
*
|
|
85
|
+
* @param collection Collection the item belongs to.
|
|
86
|
+
* @param id Identifier of the item to update.
|
|
87
|
+
* @param updates Updates to apply to the item.
|
|
88
|
+
* @example await provider.updateItem(users, 123, { name: "Dave" });
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/updateItem
|
|
90
|
+
*/
|
|
18
91
|
updateItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>;
|
|
92
|
+
/**
|
|
93
|
+
* Delete an item from `source` and remove it from the cache.
|
|
94
|
+
*
|
|
95
|
+
* @param collection Collection the item belongs to.
|
|
96
|
+
* @param id Identifier of the item to delete.
|
|
97
|
+
* @example await provider.deleteItem(users, 123);
|
|
98
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/deleteItem
|
|
99
|
+
*/
|
|
19
100
|
deleteItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): Promise<void>;
|
|
101
|
+
/**
|
|
102
|
+
* Count the items in `source` matching an optional query (not cached).
|
|
103
|
+
*
|
|
104
|
+
* @param collection Collection to count items in.
|
|
105
|
+
* @param query Query to filter the counted items (counts all items when omitted).
|
|
106
|
+
* @returns The number of matching items.
|
|
107
|
+
* @example await provider.countQuery(users, { age: 40 }) // 7
|
|
108
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/countQuery
|
|
109
|
+
*/
|
|
20
110
|
countQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<number>;
|
|
111
|
+
/**
|
|
112
|
+
* Get the items in `source` matching an optional query, refreshing the cache.
|
|
113
|
+
*
|
|
114
|
+
* @param collection Collection to query.
|
|
115
|
+
* @param query Query to filter, sort, and limit the items (returns all items when omitted).
|
|
116
|
+
* @returns An array of matching items.
|
|
117
|
+
* @example await provider.getQuery(users, { age: 40, $order: "name" }) // Items.
|
|
118
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/getQuery
|
|
119
|
+
*/
|
|
21
120
|
getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
|
|
121
|
+
/**
|
|
122
|
+
* Subscribe to live changes for a query, mirroring each emission into the cache.
|
|
123
|
+
*
|
|
124
|
+
* @param collection Collection to query.
|
|
125
|
+
* @param query Query to filter, sort, and limit the items.
|
|
126
|
+
* @returns Async sequence yielding the matching items on every change.
|
|
127
|
+
* @example for await (const items of provider.getQuerySequence(users, { age: 40 })) console.log(items);
|
|
128
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/getQuerySequence
|
|
129
|
+
*/
|
|
22
130
|
getQuerySequence<II extends I, TT extends T>(collection: Collection<string, II, TT>, query?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
|
|
131
|
+
/**
|
|
132
|
+
* Set (overwrite) every item in `source` matching a query and mirror the change into the cache.
|
|
133
|
+
*
|
|
134
|
+
* @param collection Collection to write to.
|
|
135
|
+
* @param query Query selecting the items to set.
|
|
136
|
+
* @param data Full data to store for each matching item.
|
|
137
|
+
* @example await provider.setQuery(users, { age: 40 }, { active: true });
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/setQuery
|
|
139
|
+
*/
|
|
23
140
|
setQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, data: TT): Promise<void>;
|
|
141
|
+
/**
|
|
142
|
+
* Apply partial updates to every item in `source` matching a query and mirror them into the cache.
|
|
143
|
+
*
|
|
144
|
+
* @param collection Collection to write to.
|
|
145
|
+
* @param query Query selecting the items to update.
|
|
146
|
+
* @param updates Updates to apply to each matching item.
|
|
147
|
+
* @example await provider.updateQuery(users, { age: 40 }, { active: true });
|
|
148
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/updateQuery
|
|
149
|
+
*/
|
|
24
150
|
updateQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
|
|
151
|
+
/**
|
|
152
|
+
* Delete every item in `source` matching a query and remove them from the cache.
|
|
153
|
+
*
|
|
154
|
+
* @param collection Collection to delete from.
|
|
155
|
+
* @param query Query selecting the items to delete.
|
|
156
|
+
* @example await provider.deleteQuery(users, { active: false });
|
|
157
|
+
* @see https://dhoulb.github.io/shelving/db/provider/CacheDBProvider/CacheDBProvider/deleteQuery
|
|
158
|
+
*/
|
|
25
159
|
deleteQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): Promise<void>;
|
|
26
160
|
[Symbol.asyncDispose](): Promise<void>;
|
|
27
161
|
}
|