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
|
@@ -10,27 +10,103 @@ import { QueryStore } from "../store/QueryStore.js";
|
|
|
10
10
|
* Cache of `ItemStore` and `QueryStore` objects for a single collection.
|
|
11
11
|
* - Use `getItem(id)` to retrieve or create the `ItemStore` for a given id.
|
|
12
12
|
* - Use `getQuery(query)` to retrieve or create the `QueryStore` for a given query.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* const cache = new CollectionCache(collection, provider);
|
|
16
|
+
* const store = cache.getItem("abc");
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache
|
|
13
18
|
*/
|
|
14
19
|
export declare class CollectionCache<I extends Identifier, T extends Data> implements AsyncDisposable {
|
|
15
20
|
private readonly _items;
|
|
16
21
|
private readonly _queries;
|
|
22
|
+
/**
|
|
23
|
+
* The collection these cached stores belong to.
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/collection
|
|
25
|
+
*/
|
|
17
26
|
readonly collection: Collection<string, I, T>;
|
|
27
|
+
/**
|
|
28
|
+
* The database provider the cached stores fetch from.
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/provider
|
|
30
|
+
*/
|
|
18
31
|
readonly provider: DBProvider<I>;
|
|
32
|
+
/**
|
|
33
|
+
* Optional memory provider used to seed stores and drive realtime updates.
|
|
34
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/memory
|
|
35
|
+
*/
|
|
19
36
|
readonly memory: MemoryDBProvider<I> | undefined;
|
|
37
|
+
/**
|
|
38
|
+
* Create a cache of stores for a single collection.
|
|
39
|
+
*
|
|
40
|
+
* @param collection The collection to cache stores for.
|
|
41
|
+
* @param provider The database provider the stores fetch from.
|
|
42
|
+
* @param memory Optional memory provider used to seed stores and drive realtime updates.
|
|
43
|
+
* @example new CollectionCache(collection, provider)
|
|
44
|
+
*/
|
|
20
45
|
constructor(collection: Collection<string, I, T>, provider: DBProvider<I>, memory?: MemoryDBProvider<I>);
|
|
21
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Get (or create) the `ItemStore` for the given id.
|
|
48
|
+
*
|
|
49
|
+
* @param id The ID of the item to get a store for.
|
|
50
|
+
* @returns The cached (or newly created) `ItemStore` for the id.
|
|
51
|
+
* @example cache.getItem("abc")
|
|
52
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/getItem
|
|
53
|
+
*/
|
|
22
54
|
getItem(id: I): ItemStore<I, T>;
|
|
23
|
-
/**
|
|
55
|
+
/**
|
|
56
|
+
* Get (or create) the `QueryStore` for the given query.
|
|
57
|
+
*
|
|
58
|
+
* @param query The query to get a store for.
|
|
59
|
+
* @returns The cached (or newly created) `QueryStore` for the query.
|
|
60
|
+
* @example cache.getQuery(query)
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/getQuery
|
|
62
|
+
*/
|
|
24
63
|
getQuery(query: Query<Item<I, T>>): QueryStore<I, T>;
|
|
25
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Refresh a specific item store.
|
|
66
|
+
*
|
|
67
|
+
* @param id The ID of the item store to refresh.
|
|
68
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
69
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
70
|
+
* @example await cache.refreshItem("abc")
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshItem
|
|
72
|
+
*/
|
|
26
73
|
refreshItem(id: I, maxAge?: number): Promise<void>;
|
|
27
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Refresh every cached item store.
|
|
76
|
+
*
|
|
77
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
78
|
+
* @returns Promise that resolves once every item store has refreshed.
|
|
79
|
+
* @example await cache.refreshItems()
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshItems
|
|
81
|
+
*/
|
|
28
82
|
refreshItems(maxAge?: number): Promise<void>;
|
|
29
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Refresh a specific query store.
|
|
85
|
+
*
|
|
86
|
+
* @param query The query whose store should be refreshed.
|
|
87
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
88
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
89
|
+
* @example await cache.refreshQuery(query)
|
|
90
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshQuery
|
|
91
|
+
*/
|
|
30
92
|
refreshQuery(query: Query<Item<I, T>>, maxAge?: number): Promise<void>;
|
|
31
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Refresh every cached query store.
|
|
95
|
+
*
|
|
96
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
97
|
+
* @returns Promise that resolves once every query store has refreshed.
|
|
98
|
+
* @example await cache.refreshQueries()
|
|
99
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshQueries
|
|
100
|
+
*/
|
|
32
101
|
refreshQueries(maxAge?: number): Promise<void>;
|
|
33
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* Refresh every cached store (items and queries).
|
|
104
|
+
*
|
|
105
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
106
|
+
* @returns Promise that resolves once every store has refreshed.
|
|
107
|
+
* @example await cache.refreshAll()
|
|
108
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshAll
|
|
109
|
+
*/
|
|
34
110
|
refreshAll(maxAge?: number): Promise<void>;
|
|
35
111
|
private _queryKey;
|
|
36
112
|
[Symbol.asyncDispose](): Promise<void>;
|
|
@@ -7,44 +7,120 @@ import { QueryStore } from "../store/QueryStore.js";
|
|
|
7
7
|
* Cache of `ItemStore` and `QueryStore` objects for a single collection.
|
|
8
8
|
* - Use `getItem(id)` to retrieve or create the `ItemStore` for a given id.
|
|
9
9
|
* - Use `getQuery(query)` to retrieve or create the `QueryStore` for a given query.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const cache = new CollectionCache(collection, provider);
|
|
13
|
+
* const store = cache.getItem("abc");
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache
|
|
10
15
|
*/
|
|
11
16
|
export class CollectionCache {
|
|
12
17
|
_items = new Map();
|
|
13
18
|
_queries = new Map();
|
|
19
|
+
/**
|
|
20
|
+
* The collection these cached stores belong to.
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/collection
|
|
22
|
+
*/
|
|
14
23
|
collection;
|
|
24
|
+
/**
|
|
25
|
+
* The database provider the cached stores fetch from.
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/provider
|
|
27
|
+
*/
|
|
15
28
|
provider;
|
|
29
|
+
/**
|
|
30
|
+
* Optional memory provider used to seed stores and drive realtime updates.
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/memory
|
|
32
|
+
*/
|
|
16
33
|
memory;
|
|
34
|
+
/**
|
|
35
|
+
* Create a cache of stores for a single collection.
|
|
36
|
+
*
|
|
37
|
+
* @param collection The collection to cache stores for.
|
|
38
|
+
* @param provider The database provider the stores fetch from.
|
|
39
|
+
* @param memory Optional memory provider used to seed stores and drive realtime updates.
|
|
40
|
+
* @example new CollectionCache(collection, provider)
|
|
41
|
+
*/
|
|
17
42
|
constructor(collection, provider, memory) {
|
|
18
43
|
this.collection = collection;
|
|
19
44
|
this.provider = provider;
|
|
20
45
|
this.memory = memory;
|
|
21
46
|
}
|
|
22
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Get (or create) the `ItemStore` for the given id.
|
|
49
|
+
*
|
|
50
|
+
* @param id The ID of the item to get a store for.
|
|
51
|
+
* @returns The cached (or newly created) `ItemStore` for the id.
|
|
52
|
+
* @example cache.getItem("abc")
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/getItem
|
|
54
|
+
*/
|
|
23
55
|
getItem(id) {
|
|
24
56
|
return this._items.get(id) || setMapItem(this._items, id, new ItemStore(this.collection, id, this.provider, this.memory));
|
|
25
57
|
}
|
|
26
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Get (or create) the `QueryStore` for the given query.
|
|
60
|
+
*
|
|
61
|
+
* @param query The query to get a store for.
|
|
62
|
+
* @returns The cached (or newly created) `QueryStore` for the query.
|
|
63
|
+
* @example cache.getQuery(query)
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/getQuery
|
|
65
|
+
*/
|
|
27
66
|
getQuery(query) {
|
|
28
67
|
const key = this._queryKey(query);
|
|
29
68
|
return this._queries.get(key) || setMapItem(this._queries, key, new QueryStore(this.collection, query, this.provider, this.memory));
|
|
30
69
|
}
|
|
31
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Refresh a specific item store.
|
|
72
|
+
*
|
|
73
|
+
* @param id The ID of the item store to refresh.
|
|
74
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
75
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
76
|
+
* @example await cache.refreshItem("abc")
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshItem
|
|
78
|
+
*/
|
|
32
79
|
async refreshItem(id, maxAge) {
|
|
33
80
|
await this._items.get(id)?.refresh(maxAge);
|
|
34
81
|
}
|
|
35
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Refresh every cached item store.
|
|
84
|
+
*
|
|
85
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
86
|
+
* @returns Promise that resolves once every item store has refreshed.
|
|
87
|
+
* @example await cache.refreshItems()
|
|
88
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshItems
|
|
89
|
+
*/
|
|
36
90
|
async refreshItems(maxAge) {
|
|
37
91
|
await awaitValues(...this._items.values().map(store => store.refresh(maxAge)));
|
|
38
92
|
}
|
|
39
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Refresh a specific query store.
|
|
95
|
+
*
|
|
96
|
+
* @param query The query whose store should be refreshed.
|
|
97
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
98
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
99
|
+
* @example await cache.refreshQuery(query)
|
|
100
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshQuery
|
|
101
|
+
*/
|
|
40
102
|
async refreshQuery(query, maxAge) {
|
|
41
103
|
await this._queries.get(this._queryKey(query))?.refresh(maxAge);
|
|
42
104
|
}
|
|
43
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* Refresh every cached query store.
|
|
107
|
+
*
|
|
108
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
109
|
+
* @returns Promise that resolves once every query store has refreshed.
|
|
110
|
+
* @example await cache.refreshQueries()
|
|
111
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshQueries
|
|
112
|
+
*/
|
|
44
113
|
async refreshQueries(maxAge) {
|
|
45
114
|
await awaitValues(...this._queries.values().map(store => store.refresh(maxAge)));
|
|
46
115
|
}
|
|
47
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* Refresh every cached store (items and queries).
|
|
118
|
+
*
|
|
119
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
120
|
+
* @returns Promise that resolves once every store has refreshed.
|
|
121
|
+
* @example await cache.refreshAll()
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/db/cache/CollectionCache/CollectionCache/refreshAll
|
|
123
|
+
*/
|
|
48
124
|
async refreshAll(maxAge) {
|
|
49
125
|
await awaitValues(this.refreshItems(maxAge), this.refreshQueries(maxAge));
|
|
50
126
|
}
|
package/db/cache/DBCache.d.ts
CHANGED
|
@@ -11,28 +11,113 @@ import { CollectionCache } from "./CollectionCache.js";
|
|
|
11
11
|
* Cache of `CollectionCache` objects for multiple collections.
|
|
12
12
|
* - Use `get(collection)` to retrieve or create the `CollectionCache` for a given collection,
|
|
13
13
|
* then `getItem(id)` / `getQuery(query)` on that to get a specific store.
|
|
14
|
+
* - If the provider chain contains a `CacheDBProvider`, its memory is reused so stores can seed synchronously.
|
|
15
|
+
*
|
|
16
|
+
* @example
|
|
17
|
+
* const cache = new DBCache(provider);
|
|
18
|
+
* const store = cache.getItem(collection, "abc");
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache
|
|
14
20
|
*/
|
|
15
21
|
export declare class DBCache<I extends Identifier = Identifier, T extends Data = Data> implements AsyncDisposable {
|
|
16
22
|
private readonly _collections;
|
|
23
|
+
/**
|
|
24
|
+
* The database provider the cached stores fetch from.
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/provider
|
|
26
|
+
*/
|
|
17
27
|
readonly provider: DBProvider<I, T>;
|
|
28
|
+
/**
|
|
29
|
+
* Memory provider reused from the provider chain to seed stores synchronously, if available.
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/memory
|
|
31
|
+
*/
|
|
18
32
|
readonly memory: MemoryDBProvider<I, T> | undefined;
|
|
33
|
+
/**
|
|
34
|
+
* Create a cache of collection caches for a database provider.
|
|
35
|
+
*
|
|
36
|
+
* @param provider The database provider the cached stores fetch from.
|
|
37
|
+
* @example new DBCache(provider)
|
|
38
|
+
*/
|
|
19
39
|
constructor(provider: DBProvider<I, T>);
|
|
20
40
|
private _get;
|
|
21
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Get (or create) the `CollectionCache` for the given collection.
|
|
43
|
+
*
|
|
44
|
+
* @param collection The collection to get a cache for.
|
|
45
|
+
* @returns The cached (or newly created) `CollectionCache` for the collection.
|
|
46
|
+
* @example cache.get(collection)
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/get
|
|
48
|
+
*/
|
|
22
49
|
get<II extends I, TT extends T>(collection: Collection<string, II, TT>): CollectionCache<II, TT>;
|
|
23
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Get (or create) an `ItemStore` for a collection/id in one hop.
|
|
52
|
+
*
|
|
53
|
+
* @param collection The collection the item lives in.
|
|
54
|
+
* @param id The ID of the item to get a store for.
|
|
55
|
+
* @returns The cached (or newly created) `ItemStore`.
|
|
56
|
+
* @example cache.getItem(collection, "abc")
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/getItem
|
|
58
|
+
*/
|
|
24
59
|
getItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II): ItemStore<II, TT>;
|
|
25
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Get (or create) a `QueryStore` for a collection/query in one hop.
|
|
62
|
+
*
|
|
63
|
+
* @param collection The collection the query runs against.
|
|
64
|
+
* @param query The query to get a store for.
|
|
65
|
+
* @returns The cached (or newly created) `QueryStore`.
|
|
66
|
+
* @example cache.getQuery(collection, query)
|
|
67
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/getQuery
|
|
68
|
+
*/
|
|
26
69
|
getQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>): QueryStore<II, TT>;
|
|
27
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Refresh a specific item store for a collection.
|
|
72
|
+
*
|
|
73
|
+
* @param collection The collection the item lives in.
|
|
74
|
+
* @param id The ID of the item store to refresh.
|
|
75
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
76
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
77
|
+
* @example await cache.refreshItem(collection, "abc")
|
|
78
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshItem
|
|
79
|
+
*/
|
|
28
80
|
refreshItem<II extends I, TT extends T>(collection: Collection<string, II, TT>, id: II, maxAge?: number): Promise<void>;
|
|
29
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* Refresh every cached item store for a collection.
|
|
83
|
+
*
|
|
84
|
+
* @param collection The collection whose item stores should be refreshed.
|
|
85
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
86
|
+
* @returns Promise that resolves once every item store has refreshed.
|
|
87
|
+
* @example await cache.refreshItems(collection)
|
|
88
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshItems
|
|
89
|
+
*/
|
|
30
90
|
refreshItems<II extends I, TT extends T>(collection: Collection<string, II, TT>, maxAge?: number): Promise<void>;
|
|
31
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* Refresh a specific query store for a collection.
|
|
93
|
+
*
|
|
94
|
+
* @param collection The collection the query runs against.
|
|
95
|
+
* @param query The query whose store should be refreshed.
|
|
96
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
97
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
98
|
+
* @example await cache.refreshQuery(collection, query)
|
|
99
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshQuery
|
|
100
|
+
*/
|
|
32
101
|
refreshQuery<II extends I, TT extends T>(collection: Collection<string, II, TT>, query: Query<Item<II, TT>>, maxAge?: number): Promise<void>;
|
|
33
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* Refresh every cached query store for a collection.
|
|
104
|
+
*
|
|
105
|
+
* @param collection The collection whose query stores should be refreshed.
|
|
106
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
107
|
+
* @returns Promise that resolves once every query store has refreshed.
|
|
108
|
+
* @example await cache.refreshQueries(collection)
|
|
109
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshQueries
|
|
110
|
+
*/
|
|
34
111
|
refreshQueries<II extends I, TT extends T>(collection: Collection<string, II, TT>, maxAge?: number): Promise<void>;
|
|
35
|
-
/**
|
|
112
|
+
/**
|
|
113
|
+
* Refresh every cached store (items and queries) for a collection.
|
|
114
|
+
*
|
|
115
|
+
* @param collection The collection whose stores should be refreshed.
|
|
116
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
117
|
+
* @returns Promise that resolves once every store has refreshed.
|
|
118
|
+
* @example await cache.refreshAll(collection)
|
|
119
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshAll
|
|
120
|
+
*/
|
|
36
121
|
refreshAll<II extends I, TT extends T>(collection: Collection<string, II, TT>, maxAge?: number): Promise<void>;
|
|
37
122
|
[Symbol.asyncDispose](): Promise<void>;
|
|
38
123
|
}
|
package/db/cache/DBCache.js
CHANGED
|
@@ -7,11 +7,31 @@ import { CollectionCache } from "./CollectionCache.js";
|
|
|
7
7
|
* Cache of `CollectionCache` objects for multiple collections.
|
|
8
8
|
* - Use `get(collection)` to retrieve or create the `CollectionCache` for a given collection,
|
|
9
9
|
* then `getItem(id)` / `getQuery(query)` on that to get a specific store.
|
|
10
|
+
* - If the provider chain contains a `CacheDBProvider`, its memory is reused so stores can seed synchronously.
|
|
11
|
+
*
|
|
12
|
+
* @example
|
|
13
|
+
* const cache = new DBCache(provider);
|
|
14
|
+
* const store = cache.getItem(collection, "abc");
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache
|
|
10
16
|
*/
|
|
11
17
|
export class DBCache {
|
|
12
18
|
_collections = new Map();
|
|
19
|
+
/**
|
|
20
|
+
* The database provider the cached stores fetch from.
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/provider
|
|
22
|
+
*/
|
|
13
23
|
provider;
|
|
24
|
+
/**
|
|
25
|
+
* Memory provider reused from the provider chain to seed stores synchronously, if available.
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/memory
|
|
27
|
+
*/
|
|
14
28
|
memory;
|
|
29
|
+
/**
|
|
30
|
+
* Create a cache of collection caches for a database provider.
|
|
31
|
+
*
|
|
32
|
+
* @param provider The database provider the cached stores fetch from.
|
|
33
|
+
* @example new DBCache(provider)
|
|
34
|
+
*/
|
|
15
35
|
constructor(provider) {
|
|
16
36
|
this.provider = provider;
|
|
17
37
|
// If the provider chain contains a `CacheDBProvider`, reuse its memory so we can seed stores synchronously.
|
|
@@ -23,31 +43,89 @@ export class DBCache {
|
|
|
23
43
|
get(collection) {
|
|
24
44
|
return this._get(collection) || setMapItem(this._collections, collection, new CollectionCache(collection, this.provider, this.memory));
|
|
25
45
|
}
|
|
26
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Get (or create) an `ItemStore` for a collection/id in one hop.
|
|
48
|
+
*
|
|
49
|
+
* @param collection The collection the item lives in.
|
|
50
|
+
* @param id The ID of the item to get a store for.
|
|
51
|
+
* @returns The cached (or newly created) `ItemStore`.
|
|
52
|
+
* @example cache.getItem(collection, "abc")
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/getItem
|
|
54
|
+
*/
|
|
27
55
|
getItem(collection, id) {
|
|
28
56
|
return this.get(collection).getItem(id);
|
|
29
57
|
}
|
|
30
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Get (or create) a `QueryStore` for a collection/query in one hop.
|
|
60
|
+
*
|
|
61
|
+
* @param collection The collection the query runs against.
|
|
62
|
+
* @param query The query to get a store for.
|
|
63
|
+
* @returns The cached (or newly created) `QueryStore`.
|
|
64
|
+
* @example cache.getQuery(collection, query)
|
|
65
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/getQuery
|
|
66
|
+
*/
|
|
31
67
|
getQuery(collection, query) {
|
|
32
68
|
return this.get(collection).getQuery(query);
|
|
33
69
|
}
|
|
34
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Refresh a specific item store for a collection.
|
|
72
|
+
*
|
|
73
|
+
* @param collection The collection the item lives in.
|
|
74
|
+
* @param id The ID of the item store to refresh.
|
|
75
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
76
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
77
|
+
* @example await cache.refreshItem(collection, "abc")
|
|
78
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshItem
|
|
79
|
+
*/
|
|
35
80
|
async refreshItem(collection, id, maxAge) {
|
|
36
81
|
await this._get(collection)?.refreshItem(id, maxAge);
|
|
37
82
|
}
|
|
38
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Refresh every cached item store for a collection.
|
|
85
|
+
*
|
|
86
|
+
* @param collection The collection whose item stores should be refreshed.
|
|
87
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
88
|
+
* @returns Promise that resolves once every item store has refreshed.
|
|
89
|
+
* @example await cache.refreshItems(collection)
|
|
90
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshItems
|
|
91
|
+
*/
|
|
39
92
|
async refreshItems(collection, maxAge) {
|
|
40
93
|
await this._get(collection)?.refreshItems(maxAge);
|
|
41
94
|
}
|
|
42
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Refresh a specific query store for a collection.
|
|
97
|
+
*
|
|
98
|
+
* @param collection The collection the query runs against.
|
|
99
|
+
* @param query The query whose store should be refreshed.
|
|
100
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
101
|
+
* @returns Promise that resolves once the refresh has completed.
|
|
102
|
+
* @example await cache.refreshQuery(collection, query)
|
|
103
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshQuery
|
|
104
|
+
*/
|
|
43
105
|
async refreshQuery(collection, query, maxAge) {
|
|
44
106
|
await this._get(collection)?.refreshQuery(query, maxAge);
|
|
45
107
|
}
|
|
46
|
-
/**
|
|
108
|
+
/**
|
|
109
|
+
* Refresh every cached query store for a collection.
|
|
110
|
+
*
|
|
111
|
+
* @param collection The collection whose query stores should be refreshed.
|
|
112
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
113
|
+
* @returns Promise that resolves once every query store has refreshed.
|
|
114
|
+
* @example await cache.refreshQueries(collection)
|
|
115
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshQueries
|
|
116
|
+
*/
|
|
47
117
|
async refreshQueries(collection, maxAge) {
|
|
48
118
|
await this._get(collection)?.refreshQueries(maxAge);
|
|
49
119
|
}
|
|
50
|
-
/**
|
|
120
|
+
/**
|
|
121
|
+
* Refresh every cached store (items and queries) for a collection.
|
|
122
|
+
*
|
|
123
|
+
* @param collection The collection whose stores should be refreshed.
|
|
124
|
+
* @param maxAge Maximum age in milliseconds of cached data that may be reused instead of refetching.
|
|
125
|
+
* @returns Promise that resolves once every store has refreshed.
|
|
126
|
+
* @example await cache.refreshAll(collection)
|
|
127
|
+
* @see https://dhoulb.github.io/shelving/db/cache/DBCache/DBCache/refreshAll
|
|
128
|
+
*/
|
|
51
129
|
async refreshAll(collection, maxAge) {
|
|
52
130
|
await this._get(collection)?.refreshAll(maxAge);
|
|
53
131
|
}
|
|
@@ -4,38 +4,126 @@ import type { Schema, Schemas } from "../../schema/Schema.js";
|
|
|
4
4
|
import type { ImmutableArray } from "../../util/array.js";
|
|
5
5
|
import type { Data } from "../../util/data.js";
|
|
6
6
|
import type { Identifier, Item, Items, OptionalItem } from "../../util/item.js";
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Default identifier schema (integer) used when a collection doesn't supply its own.
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/ID
|
|
11
|
+
*/
|
|
8
12
|
export declare const ID: NumberSchema;
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Declarative definition of a database collection/table.
|
|
15
|
+
*
|
|
16
|
+
* - Pairs a collection name with an identifier schema and a data schema, so providers can validate and address items.
|
|
17
|
+
* - Extends `DataSchema<T>`, so the collection itself validates an item's data, while `.item` validates the complete `id + data` item.
|
|
18
|
+
*
|
|
19
|
+
* @example
|
|
20
|
+
* const users = new Collection("users", ID, { name: STRING, age: NUMBER });
|
|
21
|
+
* users.validate({ name: "Dave", age: 40 }); // Validates item data.
|
|
22
|
+
*
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection
|
|
24
|
+
*/
|
|
10
25
|
export declare class Collection<N extends string = string, I extends Identifier = Identifier, T extends Data = Data> extends DataSchema<T> {
|
|
11
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Collection name (used as the table/collection key).
|
|
28
|
+
*
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/name
|
|
30
|
+
*/
|
|
12
31
|
readonly name: N;
|
|
13
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Schema for the identifier type.
|
|
34
|
+
*
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/id
|
|
36
|
+
*/
|
|
14
37
|
readonly id: Schema<I>;
|
|
15
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Schema for a complete item (id + data).
|
|
40
|
+
*
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/item
|
|
42
|
+
*/
|
|
16
43
|
readonly item: DataSchema<Item<I, T>>;
|
|
44
|
+
/**
|
|
45
|
+
* Create a new `Collection`.
|
|
46
|
+
*
|
|
47
|
+
* @param name Collection name used as the table/collection key.
|
|
48
|
+
* @param id Schema for the identifier type.
|
|
49
|
+
* @param data Data schema, or the `Schemas` props used to construct one.
|
|
50
|
+
*/
|
|
17
51
|
constructor(name: N, id: Schema<I>, data: Schemas<T> | DataSchema<T>);
|
|
52
|
+
/**
|
|
53
|
+
* Convert this collection to its string name.
|
|
54
|
+
*
|
|
55
|
+
* @returns The collection name.
|
|
56
|
+
* @example `${users}` // "users"
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collection/toString
|
|
58
|
+
*/
|
|
18
59
|
toString(): string;
|
|
19
60
|
}
|
|
20
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Create a `Collection` from a name, an identifier schema, and a data schema.
|
|
63
|
+
*
|
|
64
|
+
* *Factory for `Collection`.*
|
|
65
|
+
*
|
|
66
|
+
* @param name Collection name used as the table/collection key.
|
|
67
|
+
* @param id Schema for the identifier type.
|
|
68
|
+
* @param data Data schema, or the `Schemas` props used to construct one.
|
|
69
|
+
* @returns A new `Collection` instance.
|
|
70
|
+
* @example COLLECTION("users", ID, { name: STRING, age: NUMBER }) // Collection<"users", number, { name: string; age: number }>
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/COLLECTION
|
|
72
|
+
*/
|
|
21
73
|
export declare function COLLECTION<K extends string, I extends Identifier, T extends Data>(name: K, id: Schema<I>, data: Schemas<T> | DataSchema<T>): Collection<K, I, T>;
|
|
22
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Extract the string name from a `Collection` instance.
|
|
76
|
+
*
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/CollectionName
|
|
78
|
+
*/
|
|
23
79
|
export type CollectionName<C extends Collection> = C extends Collection<infer N, infer _I, infer _T> ? N : never;
|
|
24
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* Extract the `Identifier` type from a `Collection` instance.
|
|
82
|
+
*
|
|
83
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/CollectionIdentifier
|
|
84
|
+
*/
|
|
25
85
|
export type CollectionIdentifier<C extends Collection> = C extends Collection<infer _N, infer I, infer _T> ? I : never;
|
|
26
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* Extract the `Data` type from a `Collection` instance.
|
|
88
|
+
*
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/CollectionData
|
|
90
|
+
*/
|
|
27
91
|
export type CollectionData<C extends Collection> = C extends Collection<infer _N, infer _I, infer T> ? T : never;
|
|
28
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Extract the `Item` type from a `Collection` instance.
|
|
94
|
+
*
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/CollectionItem
|
|
96
|
+
*/
|
|
29
97
|
export type CollectionItem<C extends Collection> = Item<CollectionIdentifier<C>, CollectionData<C>>;
|
|
30
|
-
/**
|
|
98
|
+
/**
|
|
99
|
+
* Extract the optional (possibly undefined) `Item` type from a `Collection` instance.
|
|
100
|
+
*
|
|
101
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/OptionalCollectionItem
|
|
102
|
+
*/
|
|
31
103
|
export type OptionalCollectionItem<C extends Collection> = OptionalItem<CollectionIdentifier<C>, CollectionData<C>>;
|
|
32
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Extract the array of `Item` types from a `Collection` instance.
|
|
106
|
+
*
|
|
107
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/CollectionItems
|
|
108
|
+
*/
|
|
33
109
|
export type CollectionItems<C extends Collection> = Items<CollectionIdentifier<C>, CollectionData<C>>;
|
|
34
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* A readonly array of `Collection` instances, optionally narrowed to a standardised `Identifier` and `Data` type.
|
|
112
|
+
*
|
|
113
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/Collections
|
|
114
|
+
*/
|
|
35
115
|
export type Collections<I extends Identifier = Identifier, D extends Data = Data> = ImmutableArray<Collection<string, I, D>>;
|
|
36
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* Extract the union of string collection names from a `Collections` type.
|
|
118
|
+
*
|
|
119
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/CollectionNames
|
|
120
|
+
*/
|
|
37
121
|
export type CollectionNames<C extends Collections> = C[number]["name"];
|
|
38
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Convert a `Collections` array type to a database-style object mapping in `{ name: data }` format.
|
|
124
|
+
*
|
|
125
|
+
* @see https://dhoulb.github.io/shelving/db/collection/Collection/CollectionsDatabase
|
|
126
|
+
*/
|
|
39
127
|
export type CollectionsDatabase<C extends Collections> = {
|
|
40
128
|
[E in C[number] as E extends Collection<infer N, Identifier, Data> ? N : never]: E extends Collection<string, Identifier, infer T> ? T : never;
|
|
41
129
|
};
|