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
|
@@ -14,8 +14,29 @@ import { extractMarkdownProps } from "./MarkupExtractor.js";
|
|
|
14
14
|
* - Members declared with the `override` or `declare` modifier are skipped — the base class already documents overrides, and `declare` members are ambient type-only re-declarations rather than new API.
|
|
15
15
|
* - Keys are the raw declared `name` (case-preserving) so case-distinct exports like `Collection` and `COLLECTION` stay separate.
|
|
16
16
|
* - The file element itself has no `title` — a TS source file has no confident title source; renderers fall back to `name`.
|
|
17
|
+
*
|
|
18
|
+
* @example
|
|
19
|
+
* ```ts
|
|
20
|
+
* const element = new TypescriptExtractor().extractProps("string.ts", sourceText);
|
|
21
|
+
* ```
|
|
22
|
+
*
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/extract/TypescriptExtractor
|
|
17
24
|
*/
|
|
18
25
|
export class TypescriptExtractor extends FileExtractor {
|
|
26
|
+
/**
|
|
27
|
+
* Parse a TypeScript source file into the props of a `tree-element`.
|
|
28
|
+
*
|
|
29
|
+
* @param name Filename of the source (used as the source file name and the element `name`).
|
|
30
|
+
* @param text Full TypeScript source text to parse.
|
|
31
|
+
* @returns Partial `tree-element` props with `name`, `description`, `content`, and `children`.
|
|
32
|
+
*
|
|
33
|
+
* @example
|
|
34
|
+
* ```ts
|
|
35
|
+
* const props = new TypescriptExtractor().extractProps("string.ts", sourceText);
|
|
36
|
+
* ```
|
|
37
|
+
*
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/extract/TypescriptExtractor/extractProps
|
|
39
|
+
*/
|
|
19
40
|
extractProps(name, text) {
|
|
20
41
|
const source = ts.createSourceFile(name, text, ts.ScriptTarget.Latest, true);
|
|
21
42
|
const content = _getFileDocComment(source);
|
|
@@ -158,7 +179,7 @@ function _getHeritage(statement, source) {
|
|
|
158
179
|
}
|
|
159
180
|
/**
|
|
160
181
|
* Combine the JSDoc leading-description text and any unhandled `@rule` blocks into a single markup content string.
|
|
161
|
-
* - Unhandled rules (anything not `@param`/`@returns`/`@throws`/`@example`) are appended after the description, separated by blank lines, with their `@name` preserved.
|
|
182
|
+
* - Unhandled rules (anything not `@param`/`@returns`/`@throws`/`@example`/`@see`) are appended after the description, separated by blank lines, with their `@name` preserved.
|
|
162
183
|
* - Returns `undefined` if both are empty.
|
|
163
184
|
*/
|
|
164
185
|
function _buildJSDocContent(description, unhandled) {
|
|
@@ -419,8 +440,12 @@ function _getClassMembers(statement, source, className) {
|
|
|
419
440
|
}
|
|
420
441
|
return members.length ? members : undefined;
|
|
421
442
|
}
|
|
422
|
-
/**
|
|
423
|
-
|
|
443
|
+
/**
|
|
444
|
+
* `@rule` names handled (parsed or deliberately discarded) — everything else is appended to `unhandled` as raw markup.
|
|
445
|
+
* - `@see` is recognised here purely to strip it: it's a VS Code hover affordance (a link back to the docs site) and must
|
|
446
|
+
* never leak into the rendered page content. It has no dedicated parser; it's simply discarded from the `unhandled` bucket.
|
|
447
|
+
*/
|
|
448
|
+
const _HANDLED_RULES = new Set(["param", "params", "return", "returns", "throw", "throws", "example", "examples", "see"]);
|
|
424
449
|
/** Extract JSDoc from a node. */
|
|
425
450
|
function _getJSDoc(node, source) {
|
|
426
451
|
const ranges = ts.getLeadingCommentRanges(source.text, node.pos);
|
|
@@ -6,13 +6,26 @@ import type { Item, Items, ItemsSequence, OptionalItem, OptionalItemSequence } f
|
|
|
6
6
|
import { type Query } from "../../util/query.js";
|
|
7
7
|
import type { Updates } from "../../util/update.js";
|
|
8
8
|
/**
|
|
9
|
-
* Firestore
|
|
10
|
-
*
|
|
11
|
-
* -
|
|
12
|
-
* - Supports
|
|
9
|
+
* Cloud Firestore database provider backed by the full Firebase JS SDK, implementing the `DBProvider` abstraction.
|
|
10
|
+
*
|
|
11
|
+
* - Works with the Firebase JS SDK via `firebase/firestore`.
|
|
12
|
+
* - Supports offline mode (local cache and write queueing).
|
|
13
|
+
* - Supports realtime subscriptions through Firestore `onSnapshot` listeners.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { getFirestore } from "firebase/firestore";
|
|
17
|
+
* const provider = new FirestoreClientProvider(getFirestore());
|
|
18
|
+
*
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider
|
|
13
20
|
*/
|
|
14
21
|
export declare class FirestoreClientProvider<I extends string = string, T extends Data = Data> extends DBProvider<I, T> {
|
|
15
22
|
private readonly _firestore;
|
|
23
|
+
/**
|
|
24
|
+
* Create a provider wrapping a Firebase `Firestore` instance.
|
|
25
|
+
*
|
|
26
|
+
* @param firestore The `Firestore` instance to read and write through.
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider
|
|
28
|
+
*/
|
|
16
29
|
constructor(firestore: Firestore);
|
|
17
30
|
/** Get a Firestore CollectionReference for a given collection. */
|
|
18
31
|
private _collection;
|
|
@@ -20,16 +33,128 @@ export declare class FirestoreClientProvider<I extends string = string, T extend
|
|
|
20
33
|
private _doc;
|
|
21
34
|
/** Get a Firestore QueryReference for a given query. */
|
|
22
35
|
private _query;
|
|
36
|
+
/**
|
|
37
|
+
* Read a single item by ID from its Firestore document.
|
|
38
|
+
*
|
|
39
|
+
* @param c The collection the item belongs to.
|
|
40
|
+
* @param id The ID of the item to read.
|
|
41
|
+
* @returns Promise resolving to the item, or `undefined` if the document does not exist.
|
|
42
|
+
* @example await provider.getItem(users, "abc123")
|
|
43
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getItem
|
|
44
|
+
*/
|
|
23
45
|
getItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
|
|
46
|
+
/**
|
|
47
|
+
* Subscribe to realtime changes to a single item via a Firestore `onSnapshot` listener.
|
|
48
|
+
*
|
|
49
|
+
* @param c The collection the item belongs to.
|
|
50
|
+
* @param id The ID of the item to subscribe to.
|
|
51
|
+
* @returns An async sequence yielding the item (or `undefined` when absent) on every change.
|
|
52
|
+
* @example for await (const item of provider.getItemSequence(users, "abc123")) console.log(item)
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getItemSequence
|
|
54
|
+
*/
|
|
24
55
|
getItemSequence<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II): OptionalItemSequence<II, TT>;
|
|
56
|
+
/**
|
|
57
|
+
* Add an item to a collection, letting Firestore generate its document ID.
|
|
58
|
+
*
|
|
59
|
+
* @param c The collection to add the item to.
|
|
60
|
+
* @param data The data for the new item.
|
|
61
|
+
* @returns Promise resolving to the generated ID of the new item.
|
|
62
|
+
* @example const id = await provider.addItem(users, { name: "Dave" })
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/addItem
|
|
64
|
+
*/
|
|
25
65
|
addItem<II extends I, TT extends T>(c: Collection<string, II, TT>, data: TT): Promise<II>;
|
|
66
|
+
/**
|
|
67
|
+
* Write an item by ID, overwriting any existing document.
|
|
68
|
+
*
|
|
69
|
+
* @param c The collection the item belongs to.
|
|
70
|
+
* @param id The ID of the item to write.
|
|
71
|
+
* @param data The data to store for the item.
|
|
72
|
+
* @returns Promise resolving once the write completes.
|
|
73
|
+
* @example await provider.setItem(users, "abc123", { name: "Dave" })
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/setItem
|
|
75
|
+
*/
|
|
26
76
|
setItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Apply partial updates to a single item, translating them into Firestore `FieldValue` operations.
|
|
79
|
+
*
|
|
80
|
+
* @param c The collection the item belongs to.
|
|
81
|
+
* @param id The ID of the item to update.
|
|
82
|
+
* @param updates The updates to apply to the item.
|
|
83
|
+
* @returns Promise resolving once the update completes.
|
|
84
|
+
* @example await provider.updateItem(users, "abc123", { name: "Dave" })
|
|
85
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/updateItem
|
|
86
|
+
*/
|
|
27
87
|
updateItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Delete a single item by ID from its collection.
|
|
90
|
+
*
|
|
91
|
+
* @param c The collection the item belongs to.
|
|
92
|
+
* @param id The ID of the item to delete.
|
|
93
|
+
* @returns Promise resolving once the deletion completes.
|
|
94
|
+
* @example await provider.deleteItem(users, "abc123")
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/deleteItem
|
|
96
|
+
*/
|
|
28
97
|
deleteItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Count the items matching a query using Firestore's server-side aggregation.
|
|
100
|
+
*
|
|
101
|
+
* @param c The collection to query.
|
|
102
|
+
* @param q The query selecting which items to count; counts the whole collection when omitted.
|
|
103
|
+
* @returns Promise resolving to the number of matching items.
|
|
104
|
+
* @example const total = await provider.countQuery(users)
|
|
105
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/countQuery
|
|
106
|
+
*/
|
|
29
107
|
countQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q?: Query<Item<II, TT>>): Promise<number>;
|
|
108
|
+
/**
|
|
109
|
+
* Read all items matching a query.
|
|
110
|
+
*
|
|
111
|
+
* @param c The collection to query.
|
|
112
|
+
* @param q The query selecting which items to read; reads the whole collection when omitted.
|
|
113
|
+
* @returns Promise resolving to the array of matching items.
|
|
114
|
+
* @example const items = await provider.getQuery(users, { "name": "Dave" })
|
|
115
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getQuery
|
|
116
|
+
*/
|
|
30
117
|
getQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
|
|
118
|
+
/**
|
|
119
|
+
* Subscribe to realtime changes to a query via a Firestore `onSnapshot` listener.
|
|
120
|
+
*
|
|
121
|
+
* @param c The collection to query.
|
|
122
|
+
* @param q The query selecting which items to subscribe to; subscribes to the whole collection when omitted.
|
|
123
|
+
* @returns An async sequence yielding the matching items on every change.
|
|
124
|
+
* @example for await (const items of provider.getQuerySequence(users)) console.log(items)
|
|
125
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getQuerySequence
|
|
126
|
+
*/
|
|
31
127
|
getQuerySequence<II extends I, TT extends T>(c: Collection<string, II, TT>, q?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
|
|
128
|
+
/**
|
|
129
|
+
* Write the same data to every item matching a query, one `setDoc` per matching document.
|
|
130
|
+
*
|
|
131
|
+
* @param c The collection to query.
|
|
132
|
+
* @param q The query selecting which items to write.
|
|
133
|
+
* @param data The data to write to each matching item.
|
|
134
|
+
* @returns Promise resolving once all writes complete.
|
|
135
|
+
* @example await provider.setQuery(users, { "name": "Dave" }, { active: false })
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/setQuery
|
|
137
|
+
*/
|
|
32
138
|
setQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q: Query<Item<II, TT>>, data: TT): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Apply the same partial updates to every item matching a query, one `updateDoc` per matching document.
|
|
141
|
+
*
|
|
142
|
+
* @param c The collection to query.
|
|
143
|
+
* @param q The query selecting which items to update.
|
|
144
|
+
* @param updates The updates to apply to each matching item.
|
|
145
|
+
* @returns Promise resolving once all updates complete.
|
|
146
|
+
* @example await provider.updateQuery(users, { "active": true }, { name: "Dave" })
|
|
147
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/updateQuery
|
|
148
|
+
*/
|
|
33
149
|
updateQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Delete every item matching a query, one `deleteDoc` per matching document.
|
|
152
|
+
*
|
|
153
|
+
* @param c The collection to query.
|
|
154
|
+
* @param q The query selecting which items to delete.
|
|
155
|
+
* @returns Promise resolving once all deletions complete.
|
|
156
|
+
* @example await provider.deleteQuery(users, { "active": false })
|
|
157
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/deleteQuery
|
|
158
|
+
*/
|
|
34
159
|
deleteQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q: Query<Item<II, TT>>): Promise<void>;
|
|
35
160
|
}
|
|
@@ -63,13 +63,26 @@ function _getFieldValue({ key, action, value }) {
|
|
|
63
63
|
return action; // Never happens.
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
|
-
* Firestore
|
|
67
|
-
*
|
|
68
|
-
* -
|
|
69
|
-
* - Supports
|
|
66
|
+
* Cloud Firestore database provider backed by the full Firebase JS SDK, implementing the `DBProvider` abstraction.
|
|
67
|
+
*
|
|
68
|
+
* - Works with the Firebase JS SDK via `firebase/firestore`.
|
|
69
|
+
* - Supports offline mode (local cache and write queueing).
|
|
70
|
+
* - Supports realtime subscriptions through Firestore `onSnapshot` listeners.
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* import { getFirestore } from "firebase/firestore";
|
|
74
|
+
* const provider = new FirestoreClientProvider(getFirestore());
|
|
75
|
+
*
|
|
76
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider
|
|
70
77
|
*/
|
|
71
78
|
export class FirestoreClientProvider extends DBProvider {
|
|
72
79
|
_firestore;
|
|
80
|
+
/**
|
|
81
|
+
* Create a provider wrapping a Firebase `Firestore` instance.
|
|
82
|
+
*
|
|
83
|
+
* @param firestore The `Firestore` instance to read and write through.
|
|
84
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider
|
|
85
|
+
*/
|
|
73
86
|
constructor(firestore) {
|
|
74
87
|
super();
|
|
75
88
|
this._firestore = firestore;
|
|
@@ -86,47 +99,159 @@ export class FirestoreClientProvider extends DBProvider {
|
|
|
86
99
|
_query(c, q) {
|
|
87
100
|
return q ? query(this._collection(c), ..._getConstraints(q)) : this._collection(c);
|
|
88
101
|
}
|
|
102
|
+
/**
|
|
103
|
+
* Read a single item by ID from its Firestore document.
|
|
104
|
+
*
|
|
105
|
+
* @param c The collection the item belongs to.
|
|
106
|
+
* @param id The ID of the item to read.
|
|
107
|
+
* @returns Promise resolving to the item, or `undefined` if the document does not exist.
|
|
108
|
+
* @example await provider.getItem(users, "abc123")
|
|
109
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getItem
|
|
110
|
+
*/
|
|
89
111
|
async getItem(c, id) {
|
|
90
112
|
const snapshot = await getDoc(this._doc(c, id));
|
|
91
113
|
return _getOptionalItem(snapshot);
|
|
92
114
|
}
|
|
115
|
+
/**
|
|
116
|
+
* Subscribe to realtime changes to a single item via a Firestore `onSnapshot` listener.
|
|
117
|
+
*
|
|
118
|
+
* @param c The collection the item belongs to.
|
|
119
|
+
* @param id The ID of the item to subscribe to.
|
|
120
|
+
* @returns An async sequence yielding the item (or `undefined` when absent) on every change.
|
|
121
|
+
* @example for await (const item of provider.getItemSequence(users, "abc123")) console.log(item)
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getItemSequence
|
|
123
|
+
*/
|
|
93
124
|
getItemSequence(c, id) {
|
|
94
125
|
const sequence = new DeferredSequence();
|
|
95
126
|
return new LazySequence(sequence, () => onSnapshot(this._doc(c, id), snapshot => sequence.resolve(_getOptionalItem(snapshot)), reason => sequence.reject(reason)));
|
|
96
127
|
}
|
|
128
|
+
/**
|
|
129
|
+
* Add an item to a collection, letting Firestore generate its document ID.
|
|
130
|
+
*
|
|
131
|
+
* @param c The collection to add the item to.
|
|
132
|
+
* @param data The data for the new item.
|
|
133
|
+
* @returns Promise resolving to the generated ID of the new item.
|
|
134
|
+
* @example const id = await provider.addItem(users, { name: "Dave" })
|
|
135
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/addItem
|
|
136
|
+
*/
|
|
97
137
|
async addItem(c, data) {
|
|
98
138
|
const reference = await addDoc(this._collection(c), data);
|
|
99
139
|
return reference.id; // `as II` needed: Firestore returns string, not II.
|
|
100
140
|
}
|
|
141
|
+
/**
|
|
142
|
+
* Write an item by ID, overwriting any existing document.
|
|
143
|
+
*
|
|
144
|
+
* @param c The collection the item belongs to.
|
|
145
|
+
* @param id The ID of the item to write.
|
|
146
|
+
* @param data The data to store for the item.
|
|
147
|
+
* @returns Promise resolving once the write completes.
|
|
148
|
+
* @example await provider.setItem(users, "abc123", { name: "Dave" })
|
|
149
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/setItem
|
|
150
|
+
*/
|
|
101
151
|
async setItem(c, id, data) {
|
|
102
152
|
await setDoc(this._doc(c, id), data);
|
|
103
153
|
}
|
|
154
|
+
/**
|
|
155
|
+
* Apply partial updates to a single item, translating them into Firestore `FieldValue` operations.
|
|
156
|
+
*
|
|
157
|
+
* @param c The collection the item belongs to.
|
|
158
|
+
* @param id The ID of the item to update.
|
|
159
|
+
* @param updates The updates to apply to the item.
|
|
160
|
+
* @returns Promise resolving once the update completes.
|
|
161
|
+
* @example await provider.updateItem(users, "abc123", { name: "Dave" })
|
|
162
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/updateItem
|
|
163
|
+
*/
|
|
104
164
|
async updateItem(c, id, updates) {
|
|
105
165
|
await updateDoc(this._doc(c, id), _getFieldValues(updates));
|
|
106
166
|
}
|
|
167
|
+
/**
|
|
168
|
+
* Delete a single item by ID from its collection.
|
|
169
|
+
*
|
|
170
|
+
* @param c The collection the item belongs to.
|
|
171
|
+
* @param id The ID of the item to delete.
|
|
172
|
+
* @returns Promise resolving once the deletion completes.
|
|
173
|
+
* @example await provider.deleteItem(users, "abc123")
|
|
174
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/deleteItem
|
|
175
|
+
*/
|
|
107
176
|
async deleteItem(c, id) {
|
|
108
177
|
await deleteDoc(this._doc(c, id));
|
|
109
178
|
}
|
|
179
|
+
/**
|
|
180
|
+
* Count the items matching a query using Firestore's server-side aggregation.
|
|
181
|
+
*
|
|
182
|
+
* @param c The collection to query.
|
|
183
|
+
* @param q The query selecting which items to count; counts the whole collection when omitted.
|
|
184
|
+
* @returns Promise resolving to the number of matching items.
|
|
185
|
+
* @example const total = await provider.countQuery(users)
|
|
186
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/countQuery
|
|
187
|
+
*/
|
|
110
188
|
async countQuery(c, q) {
|
|
111
189
|
const snapshot = await getCountFromServer(this._query(c, q));
|
|
112
190
|
return snapshot.data().count;
|
|
113
191
|
}
|
|
192
|
+
/**
|
|
193
|
+
* Read all items matching a query.
|
|
194
|
+
*
|
|
195
|
+
* @param c The collection to query.
|
|
196
|
+
* @param q The query selecting which items to read; reads the whole collection when omitted.
|
|
197
|
+
* @returns Promise resolving to the array of matching items.
|
|
198
|
+
* @example const items = await provider.getQuery(users, { "name": "Dave" })
|
|
199
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getQuery
|
|
200
|
+
*/
|
|
114
201
|
async getQuery(c, q) {
|
|
115
202
|
return _getItems(await getDocs(this._query(c, q)));
|
|
116
203
|
}
|
|
204
|
+
/**
|
|
205
|
+
* Subscribe to realtime changes to a query via a Firestore `onSnapshot` listener.
|
|
206
|
+
*
|
|
207
|
+
* @param c The collection to query.
|
|
208
|
+
* @param q The query selecting which items to subscribe to; subscribes to the whole collection when omitted.
|
|
209
|
+
* @returns An async sequence yielding the matching items on every change.
|
|
210
|
+
* @example for await (const items of provider.getQuerySequence(users)) console.log(items)
|
|
211
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/getQuerySequence
|
|
212
|
+
*/
|
|
117
213
|
getQuerySequence(c, q) {
|
|
118
214
|
const sequence = new DeferredSequence();
|
|
119
215
|
return new LazySequence(sequence, () => onSnapshot(this._query(c, q), snapshot => sequence.resolve(_getItems(snapshot)), reason => sequence.reject(reason)));
|
|
120
216
|
}
|
|
217
|
+
/**
|
|
218
|
+
* Write the same data to every item matching a query, one `setDoc` per matching document.
|
|
219
|
+
*
|
|
220
|
+
* @param c The collection to query.
|
|
221
|
+
* @param q The query selecting which items to write.
|
|
222
|
+
* @param data The data to write to each matching item.
|
|
223
|
+
* @returns Promise resolving once all writes complete.
|
|
224
|
+
* @example await provider.setQuery(users, { "name": "Dave" }, { active: false })
|
|
225
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/setQuery
|
|
226
|
+
*/
|
|
121
227
|
async setQuery(c, q, data) {
|
|
122
228
|
const snapshot = await getDocs(this._query(c, q));
|
|
123
229
|
await Promise.all(snapshot.docs.map(s => setDoc(s.ref, data)));
|
|
124
230
|
}
|
|
231
|
+
/**
|
|
232
|
+
* Apply the same partial updates to every item matching a query, one `updateDoc` per matching document.
|
|
233
|
+
*
|
|
234
|
+
* @param c The collection to query.
|
|
235
|
+
* @param q The query selecting which items to update.
|
|
236
|
+
* @param updates The updates to apply to each matching item.
|
|
237
|
+
* @returns Promise resolving once all updates complete.
|
|
238
|
+
* @example await provider.updateQuery(users, { "active": true }, { name: "Dave" })
|
|
239
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/updateQuery
|
|
240
|
+
*/
|
|
125
241
|
async updateQuery(c, q, updates) {
|
|
126
242
|
const snapshot = await getDocs(this._query(c, q));
|
|
127
243
|
const fieldValues = _getFieldValues(updates);
|
|
128
244
|
await Promise.all(snapshot.docs.map(s => updateDoc(s.ref, fieldValues)));
|
|
129
245
|
}
|
|
246
|
+
/**
|
|
247
|
+
* Delete every item matching a query, one `deleteDoc` per matching document.
|
|
248
|
+
*
|
|
249
|
+
* @param c The collection to query.
|
|
250
|
+
* @param q The query selecting which items to delete.
|
|
251
|
+
* @returns Promise resolving once all deletions complete.
|
|
252
|
+
* @example await provider.deleteQuery(users, { "active": false })
|
|
253
|
+
* @see https://dhoulb.github.io/shelving/firestore/client/FirestoreClientProvider/FirestoreClientProvider/deleteQuery
|
|
254
|
+
*/
|
|
130
255
|
async deleteQuery(c, q) {
|
|
131
256
|
const snapshot = await getDocs(this._query(c, q));
|
|
132
257
|
await Promise.all(snapshot.docs.map(s => deleteDoc(s.ref)));
|
|
@@ -6,13 +6,26 @@ import type { Item, Items, ItemsSequence, OptionalItem, OptionalItemSequence } f
|
|
|
6
6
|
import { type Query } from "../../util/query.js";
|
|
7
7
|
import type { Updates } from "../../util/update.js";
|
|
8
8
|
/**
|
|
9
|
-
* Firestore Lite
|
|
10
|
-
*
|
|
9
|
+
* Cloud Firestore database provider backed by the Firebase Lite SDK, implementing the `DBProvider` abstraction.
|
|
10
|
+
*
|
|
11
|
+
* - Works with the Firebase JS SDK via `firebase/firestore/lite`, which keeps bundle size small.
|
|
11
12
|
* - Does not support offline mode.
|
|
12
|
-
* - Does not support realtime subscriptions
|
|
13
|
+
* - Does not support realtime subscriptions: `getItemSequence()` and `getQuerySequence()` throw `UnimplementedError`.
|
|
14
|
+
*
|
|
15
|
+
* @example
|
|
16
|
+
* import { getFirestore } from "firebase/firestore/lite";
|
|
17
|
+
* const provider = new FirestoreLiteProvider(getFirestore());
|
|
18
|
+
*
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider
|
|
13
20
|
*/
|
|
14
21
|
export declare class FirestoreLiteProvider<I extends string = string, T extends Data = Data> extends DBProvider<I, T> {
|
|
15
22
|
private readonly _firestore;
|
|
23
|
+
/**
|
|
24
|
+
* Create a provider wrapping a Firebase Lite `Firestore` instance.
|
|
25
|
+
*
|
|
26
|
+
* @param firestore The `Firestore` instance to read and write through.
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider
|
|
28
|
+
*/
|
|
16
29
|
constructor(firestore: Firestore);
|
|
17
30
|
/** Get a Firestore CollectionReference for a given collection. */
|
|
18
31
|
private _collection;
|
|
@@ -20,16 +33,128 @@ export declare class FirestoreLiteProvider<I extends string = string, T extends
|
|
|
20
33
|
private _doc;
|
|
21
34
|
/** Get a Firestore QueryReference for a given query. */
|
|
22
35
|
private _query;
|
|
36
|
+
/**
|
|
37
|
+
* Read a single item by ID from its Firestore document.
|
|
38
|
+
*
|
|
39
|
+
* @param c The collection the item belongs to.
|
|
40
|
+
* @param id The ID of the item to read.
|
|
41
|
+
* @returns Promise resolving to the item, or `undefined` if the document does not exist.
|
|
42
|
+
* @example await provider.getItem(users, "abc123")
|
|
43
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/getItem
|
|
44
|
+
*/
|
|
23
45
|
getItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
|
|
46
|
+
/**
|
|
47
|
+
* Not supported — the Firebase Lite SDK has no realtime listeners.
|
|
48
|
+
*
|
|
49
|
+
* @param _c The collection the item belongs to.
|
|
50
|
+
* @param _id The ID of the item to subscribe to.
|
|
51
|
+
* @returns Never returns normally.
|
|
52
|
+
* @throws {UnimplementedError} Always, because Firestore Lite does not support realtime subscriptions.
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/getItemSequence
|
|
54
|
+
*/
|
|
24
55
|
getItemSequence<II extends I, TT extends T>(_c: Collection<string, II, TT>, _id: II): OptionalItemSequence<II, TT>;
|
|
56
|
+
/**
|
|
57
|
+
* Add an item to a collection, letting Firestore generate its document ID.
|
|
58
|
+
*
|
|
59
|
+
* @param c The collection to add the item to.
|
|
60
|
+
* @param data The data for the new item.
|
|
61
|
+
* @returns Promise resolving to the generated ID of the new item.
|
|
62
|
+
* @example const id = await provider.addItem(users, { name: "Dave" })
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/addItem
|
|
64
|
+
*/
|
|
25
65
|
addItem<II extends I, TT extends T>(c: Collection<string, II, TT>, data: TT): Promise<II>;
|
|
66
|
+
/**
|
|
67
|
+
* Write an item by ID, overwriting any existing document.
|
|
68
|
+
*
|
|
69
|
+
* @param c The collection the item belongs to.
|
|
70
|
+
* @param id The ID of the item to write.
|
|
71
|
+
* @param data The data to store for the item.
|
|
72
|
+
* @returns Promise resolving once the write completes.
|
|
73
|
+
* @example await provider.setItem(users, "abc123", { name: "Dave" })
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/setItem
|
|
75
|
+
*/
|
|
26
76
|
setItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
|
|
77
|
+
/**
|
|
78
|
+
* Apply partial updates to a single item, translating them into Firestore `FieldValue` operations.
|
|
79
|
+
*
|
|
80
|
+
* @param c The collection the item belongs to.
|
|
81
|
+
* @param id The ID of the item to update.
|
|
82
|
+
* @param updates The updates to apply to the item.
|
|
83
|
+
* @returns Promise resolving once the update completes.
|
|
84
|
+
* @example await provider.updateItem(users, "abc123", { name: "Dave" })
|
|
85
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/updateItem
|
|
86
|
+
*/
|
|
27
87
|
updateItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II, updates: Updates<Item<II, TT>>): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Delete a single item by ID from its collection.
|
|
90
|
+
*
|
|
91
|
+
* @param c The collection the item belongs to.
|
|
92
|
+
* @param id The ID of the item to delete.
|
|
93
|
+
* @returns Promise resolving once the deletion completes.
|
|
94
|
+
* @example await provider.deleteItem(users, "abc123")
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/deleteItem
|
|
96
|
+
*/
|
|
28
97
|
deleteItem<II extends I, TT extends T>(c: Collection<string, II, TT>, id: II): Promise<void>;
|
|
98
|
+
/**
|
|
99
|
+
* Count the items matching a query using Firestore's server-side aggregation.
|
|
100
|
+
*
|
|
101
|
+
* @param c The collection to query.
|
|
102
|
+
* @param q The query selecting which items to count; counts the whole collection when omitted.
|
|
103
|
+
* @returns Promise resolving to the number of matching items.
|
|
104
|
+
* @example const total = await provider.countQuery(users)
|
|
105
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/countQuery
|
|
106
|
+
*/
|
|
29
107
|
countQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q?: Query<Item<II, TT>>): Promise<number>;
|
|
108
|
+
/**
|
|
109
|
+
* Read all items matching a query.
|
|
110
|
+
*
|
|
111
|
+
* @param c The collection to query.
|
|
112
|
+
* @param q The query selecting which items to read; reads the whole collection when omitted.
|
|
113
|
+
* @returns Promise resolving to the array of matching items.
|
|
114
|
+
* @example const items = await provider.getQuery(users, { "name": "Dave" })
|
|
115
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/getQuery
|
|
116
|
+
*/
|
|
30
117
|
getQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
|
|
118
|
+
/**
|
|
119
|
+
* Not supported — the Firebase Lite SDK has no realtime listeners.
|
|
120
|
+
*
|
|
121
|
+
* @param _c The collection to query.
|
|
122
|
+
* @param _q The query to subscribe to.
|
|
123
|
+
* @returns Never returns normally.
|
|
124
|
+
* @throws {UnimplementedError} Always, because Firestore Lite does not support realtime subscriptions.
|
|
125
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/getQuerySequence
|
|
126
|
+
*/
|
|
31
127
|
getQuerySequence<II extends I, TT extends T>(_c: Collection<string, II, TT>, _q?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
|
|
128
|
+
/**
|
|
129
|
+
* Write the same data to every item matching a query, one `setDoc` per matching document.
|
|
130
|
+
*
|
|
131
|
+
* @param c The collection to query.
|
|
132
|
+
* @param q The query selecting which items to write.
|
|
133
|
+
* @param data The data to write to each matching item.
|
|
134
|
+
* @returns Promise resolving once all writes complete.
|
|
135
|
+
* @example await provider.setQuery(users, { "name": "Dave" }, { active: false })
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/setQuery
|
|
137
|
+
*/
|
|
32
138
|
setQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q: Query<Item<II, TT>>, data: TT): Promise<void>;
|
|
139
|
+
/**
|
|
140
|
+
* Apply the same partial updates to every item matching a query, one `updateDoc` per matching document.
|
|
141
|
+
*
|
|
142
|
+
* @param c The collection to query.
|
|
143
|
+
* @param q The query selecting which items to update.
|
|
144
|
+
* @param updates The updates to apply to each matching item.
|
|
145
|
+
* @returns Promise resolving once all updates complete.
|
|
146
|
+
* @example await provider.updateQuery(users, { "active": true }, { name: "Dave" })
|
|
147
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/updateQuery
|
|
148
|
+
*/
|
|
33
149
|
updateQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q: Query<Item<II, TT>>, updates: Updates<TT>): Promise<void>;
|
|
150
|
+
/**
|
|
151
|
+
* Delete every item matching a query, one `deleteDoc` per matching document.
|
|
152
|
+
*
|
|
153
|
+
* @param c The collection to query.
|
|
154
|
+
* @param q The query selecting which items to delete.
|
|
155
|
+
* @returns Promise resolving once all deletions complete.
|
|
156
|
+
* @example await provider.deleteQuery(users, { "active": false })
|
|
157
|
+
* @see https://dhoulb.github.io/shelving/firestore/lite/FirestoreLiteProvider/FirestoreLiteProvider/deleteQuery
|
|
158
|
+
*/
|
|
34
159
|
deleteQuery<II extends I, TT extends T>(c: Collection<string, II, TT>, q: Query<Item<II, TT>>): Promise<void>;
|
|
35
160
|
}
|