shelving 1.236.0 → 1.236.1
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 +3 -0
- package/markup/rule/inline.js +3 -0
- 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
package/api/cache/APICache.d.ts
CHANGED
|
@@ -3,30 +3,93 @@ import type { Endpoint } from "../endpoint/Endpoint.js";
|
|
|
3
3
|
import type { APIProvider } from "../provider/APIProvider.js";
|
|
4
4
|
import { EndpointCache } from "./EndpointCache.js";
|
|
5
5
|
/**
|
|
6
|
-
* Cache of `EndpointCache` objects
|
|
6
|
+
* Cache of `EndpointCache` objects keyed by `Endpoint`, providing memoised API results across many endpoints.
|
|
7
7
|
* - Use `get(endpoint)` to retrieve or create the `EndpointCache` for a given endpoint, then `get(payload)` on that to get a specific `EndpointStore`.
|
|
8
|
+
* - Disposing the cache disposes every nested `EndpointCache` and clears the map.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const cache = new APICache(provider);
|
|
12
|
+
* const user = await cache.call(getUser, { id: "abc" });
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
|
|
8
15
|
*/
|
|
9
16
|
export declare class APICache<P, R> implements AsyncDisposable {
|
|
10
17
|
private readonly _endpoints;
|
|
18
|
+
/**
|
|
19
|
+
* The underlying `APIProvider` that backs every cached endpoint.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/provider
|
|
22
|
+
*/
|
|
11
23
|
readonly provider: APIProvider<P, R>;
|
|
24
|
+
/**
|
|
25
|
+
* Create a new `APICache` backed by an `APIProvider`.
|
|
26
|
+
*
|
|
27
|
+
* @param provider The `APIProvider` used to fetch results for every cached endpoint.
|
|
28
|
+
* @example new APICache(provider)
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
|
|
30
|
+
*/
|
|
12
31
|
constructor(provider: APIProvider<P, R>);
|
|
13
32
|
private _get;
|
|
14
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Get (or create) the `EndpointCache` for the given endpoint.
|
|
35
|
+
*
|
|
36
|
+
* @param endpoint The endpoint whose `EndpointCache` should be returned.
|
|
37
|
+
* @returns The existing `EndpointCache` for `endpoint`, or a newly created one.
|
|
38
|
+
* @example cache.get(getUser).get({ id: "abc" })
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/get
|
|
40
|
+
*/
|
|
15
41
|
get<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>): EndpointCache<PP, RR>;
|
|
16
42
|
/**
|
|
17
43
|
* Fetch (or return a cached result) for the given endpoint and payload.
|
|
18
44
|
* - Returns the cached value immediately if one exists.
|
|
19
45
|
* - Waits for the in-flight fetch if the store is loading.
|
|
20
46
|
* - Throws if the fetch fails, matching `APIProvider.call` behaviour.
|
|
47
|
+
*
|
|
48
|
+
* @param endpoint The endpoint to fetch a result for.
|
|
49
|
+
* @param payload The payload to send to the endpoint.
|
|
50
|
+
* @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
|
|
51
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
52
|
+
* @returns The cached or freshly fetched result.
|
|
53
|
+
* @throws Whatever `APIProvider.call` throws if the fetch fails.
|
|
54
|
+
* @example await cache.call(getUser, { id: "abc" })
|
|
55
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/call
|
|
21
56
|
*/
|
|
22
57
|
call<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, maxAge?: number, caller?: AnyCaller): Promise<RR>;
|
|
23
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Invalidate a specific store for an endpoint so the next read refetches.
|
|
60
|
+
*
|
|
61
|
+
* @param endpoint The endpoint whose cached payload should be invalidated.
|
|
62
|
+
* @param payload The payload identifying the specific store to invalidate.
|
|
63
|
+
* @example cache.invalidate(getUser, { id: "abc" })
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidate
|
|
65
|
+
*/
|
|
24
66
|
invalidate<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP): void;
|
|
25
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Invalidate all stores for an endpoint so the next read of any payload refetches.
|
|
69
|
+
*
|
|
70
|
+
* @param endpoint The endpoint whose stores should all be invalidated.
|
|
71
|
+
* @example cache.invalidateAll(getUser)
|
|
72
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidateAll
|
|
73
|
+
*/
|
|
26
74
|
invalidateAll<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>): void;
|
|
27
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Trigger a refetch on a specific store for an endpoint.
|
|
77
|
+
*
|
|
78
|
+
* @param endpoint The endpoint whose store should be refreshed.
|
|
79
|
+
* @param payload The payload identifying the specific store to refresh.
|
|
80
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
81
|
+
* @example cache.refresh(getUser, { id: "abc" })
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refresh
|
|
83
|
+
*/
|
|
28
84
|
refresh<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, payload: PP, maxAge?: number): void;
|
|
29
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Trigger a refetch on all stores for an endpoint.
|
|
87
|
+
*
|
|
88
|
+
* @param endpoint The endpoint whose stores should all be refreshed.
|
|
89
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
90
|
+
* @example cache.refreshAll(getUser)
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refreshAll
|
|
92
|
+
*/
|
|
30
93
|
refreshAll<PP extends P, RR extends R>(endpoint: Endpoint<PP, RR>, maxAge?: number): void;
|
|
31
94
|
[Symbol.asyncDispose](): Promise<void>;
|
|
32
95
|
}
|
package/api/cache/APICache.js
CHANGED
|
@@ -3,12 +3,31 @@ import { awaitDispose } from "../../util/dispose.js";
|
|
|
3
3
|
import { setMapItem } from "../../util/map.js";
|
|
4
4
|
import { EndpointCache } from "./EndpointCache.js";
|
|
5
5
|
/**
|
|
6
|
-
* Cache of `EndpointCache` objects
|
|
6
|
+
* Cache of `EndpointCache` objects keyed by `Endpoint`, providing memoised API results across many endpoints.
|
|
7
7
|
* - Use `get(endpoint)` to retrieve or create the `EndpointCache` for a given endpoint, then `get(payload)` on that to get a specific `EndpointStore`.
|
|
8
|
+
* - Disposing the cache disposes every nested `EndpointCache` and clears the map.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const cache = new APICache(provider);
|
|
12
|
+
* const user = await cache.call(getUser, { id: "abc" });
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
|
|
8
15
|
*/
|
|
9
16
|
export class APICache {
|
|
10
17
|
_endpoints = new Map();
|
|
18
|
+
/**
|
|
19
|
+
* The underlying `APIProvider` that backs every cached endpoint.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/provider
|
|
22
|
+
*/
|
|
11
23
|
provider;
|
|
24
|
+
/**
|
|
25
|
+
* Create a new `APICache` backed by an `APIProvider`.
|
|
26
|
+
*
|
|
27
|
+
* @param provider The `APIProvider` used to fetch results for every cached endpoint.
|
|
28
|
+
* @example new APICache(provider)
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache
|
|
30
|
+
*/
|
|
12
31
|
constructor(provider) {
|
|
13
32
|
this.provider = provider;
|
|
14
33
|
}
|
|
@@ -23,23 +42,60 @@ export class APICache {
|
|
|
23
42
|
* - Returns the cached value immediately if one exists.
|
|
24
43
|
* - Waits for the in-flight fetch if the store is loading.
|
|
25
44
|
* - Throws if the fetch fails, matching `APIProvider.call` behaviour.
|
|
45
|
+
*
|
|
46
|
+
* @param endpoint The endpoint to fetch a result for.
|
|
47
|
+
* @param payload The payload to send to the endpoint.
|
|
48
|
+
* @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
|
|
49
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
50
|
+
* @returns The cached or freshly fetched result.
|
|
51
|
+
* @throws Whatever `APIProvider.call` throws if the fetch fails.
|
|
52
|
+
* @example await cache.call(getUser, { id: "abc" })
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/call
|
|
26
54
|
*/
|
|
27
55
|
async call(endpoint, payload, maxAge = AVOID_REFRESH, caller = this.call) {
|
|
28
56
|
return this.get(endpoint).call(payload, maxAge, caller);
|
|
29
57
|
}
|
|
30
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Invalidate a specific store for an endpoint so the next read refetches.
|
|
60
|
+
*
|
|
61
|
+
* @param endpoint The endpoint whose cached payload should be invalidated.
|
|
62
|
+
* @param payload The payload identifying the specific store to invalidate.
|
|
63
|
+
* @example cache.invalidate(getUser, { id: "abc" })
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidate
|
|
65
|
+
*/
|
|
31
66
|
invalidate(endpoint, payload) {
|
|
32
67
|
this._get(endpoint)?.invalidate(payload);
|
|
33
68
|
}
|
|
34
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Invalidate all stores for an endpoint so the next read of any payload refetches.
|
|
71
|
+
*
|
|
72
|
+
* @param endpoint The endpoint whose stores should all be invalidated.
|
|
73
|
+
* @example cache.invalidateAll(getUser)
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/invalidateAll
|
|
75
|
+
*/
|
|
35
76
|
invalidateAll(endpoint) {
|
|
36
77
|
this._get(endpoint)?.invalidateAll();
|
|
37
78
|
}
|
|
38
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Trigger a refetch on a specific store for an endpoint.
|
|
81
|
+
*
|
|
82
|
+
* @param endpoint The endpoint whose store should be refreshed.
|
|
83
|
+
* @param payload The payload identifying the specific store to refresh.
|
|
84
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
85
|
+
* @example cache.refresh(getUser, { id: "abc" })
|
|
86
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refresh
|
|
87
|
+
*/
|
|
39
88
|
refresh(endpoint, payload, maxAge) {
|
|
40
89
|
this._get(endpoint)?.refresh(payload, maxAge);
|
|
41
90
|
}
|
|
42
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* Trigger a refetch on all stores for an endpoint.
|
|
93
|
+
*
|
|
94
|
+
* @param endpoint The endpoint whose stores should all be refreshed.
|
|
95
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
96
|
+
* @example cache.refreshAll(getUser)
|
|
97
|
+
* @see https://dhoulb.github.io/shelving/api/cache/APICache/APICache/refreshAll
|
|
98
|
+
*/
|
|
43
99
|
refreshAll(endpoint, maxAge) {
|
|
44
100
|
this._get(endpoint)?.refreshAll(maxAge);
|
|
45
101
|
}
|
|
@@ -3,15 +3,49 @@ import type { Endpoint } from "../endpoint/Endpoint.js";
|
|
|
3
3
|
import type { APIProvider } from "../provider/APIProvider.js";
|
|
4
4
|
import { EndpointStore } from "../store/EndpointStore.js";
|
|
5
5
|
/**
|
|
6
|
-
* Cache of `EndpointStore` objects for a single endpoint, keyed by
|
|
6
|
+
* Cache of `EndpointStore` objects for a single endpoint, keyed by the rendered request URL of each payload.
|
|
7
7
|
* - Use `get(payload)` to retrieve or create the `EndpointStore` for a given payload.
|
|
8
|
+
* - Disposing the cache disposes every nested `EndpointStore` and clears the map.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const cache = new EndpointCache(getUser, provider);
|
|
12
|
+
* const user = await cache.call({ id: "abc" });
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
|
|
8
15
|
*/
|
|
9
16
|
export declare class EndpointCache<P = unknown, R = unknown> implements AsyncDisposable {
|
|
10
17
|
private readonly _endpoints;
|
|
18
|
+
/**
|
|
19
|
+
* The endpoint that every store in this cache fetches from.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/endpoint
|
|
22
|
+
*/
|
|
11
23
|
readonly endpoint: Endpoint<P, R>;
|
|
24
|
+
/**
|
|
25
|
+
* The `APIProvider` used to render URLs and fetch results for this endpoint.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/provider
|
|
28
|
+
*/
|
|
12
29
|
readonly provider: APIProvider<P, R>;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new `EndpointCache` for a single endpoint and provider.
|
|
32
|
+
*
|
|
33
|
+
* @param endpoint The endpoint that every cached store fetches from.
|
|
34
|
+
* @param provider The `APIProvider` used to render URLs and fetch results.
|
|
35
|
+
* @example new EndpointCache(getUser, provider)
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
|
|
37
|
+
*/
|
|
13
38
|
constructor(endpoint: Endpoint<P, R>, provider: APIProvider<P, R>);
|
|
14
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Get (or create) the `EndpointStore` for the given payload.
|
|
41
|
+
* - Stores are keyed by the rendered request URL, so equivalent payloads share a store.
|
|
42
|
+
*
|
|
43
|
+
* @param payload The payload identifying the store to return.
|
|
44
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
45
|
+
* @returns The existing `EndpointStore` for `payload`, or a newly created one.
|
|
46
|
+
* @example cache.get({ id: "abc" })
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/get
|
|
48
|
+
*/
|
|
15
49
|
get(payload: P, caller?: AnyCaller): EndpointStore<P, R>;
|
|
16
50
|
/**
|
|
17
51
|
* Fetch (or return a cached result) for the given payload.
|
|
@@ -19,16 +53,50 @@ export declare class EndpointCache<P = unknown, R = unknown> implements AsyncDis
|
|
|
19
53
|
* - Waits for the in-flight fetch if the store is loading.
|
|
20
54
|
* - Throws if the fetch fails, matching `APIProvider.call` behaviour.
|
|
21
55
|
*
|
|
22
|
-
* @param
|
|
56
|
+
* @param payload The payload to send to the endpoint.
|
|
57
|
+
* @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
|
|
58
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
59
|
+
* @returns The cached or freshly fetched result.
|
|
60
|
+
* @throws Whatever `APIProvider.call` throws if the fetch fails.
|
|
61
|
+
* @example await cache.call({ id: "abc" })
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/call
|
|
23
63
|
*/
|
|
24
64
|
call(payload: P, maxAge?: number, caller?: AnyCaller): Promise<R>;
|
|
25
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Invalidate a specific store so the next read refetches.
|
|
67
|
+
*
|
|
68
|
+
* @param payload The payload identifying the store to invalidate.
|
|
69
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
70
|
+
* @example cache.invalidate({ id: "abc" })
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidate
|
|
72
|
+
*/
|
|
26
73
|
invalidate(payload: P, caller?: AnyCaller): void;
|
|
27
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Invalidate all stores so the next read of any payload refetches.
|
|
76
|
+
*
|
|
77
|
+
* @example cache.invalidateAll()
|
|
78
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidateAll
|
|
79
|
+
*/
|
|
28
80
|
invalidateAll(): void;
|
|
29
|
-
/**
|
|
81
|
+
/**
|
|
82
|
+
* Trigger a refetch on a specific store.
|
|
83
|
+
*
|
|
84
|
+
* @param payload The payload identifying the store to refresh.
|
|
85
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
86
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
87
|
+
* @returns A promise that resolves when the refetch settles.
|
|
88
|
+
* @example await cache.refresh({ id: "abc" })
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refresh
|
|
90
|
+
*/
|
|
30
91
|
refresh(payload: P, maxAge?: number, caller?: AnyCaller): Promise<void>;
|
|
31
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Trigger a refetch on all stores.
|
|
94
|
+
*
|
|
95
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
96
|
+
* @returns A promise that resolves when every refetch settles.
|
|
97
|
+
* @example await cache.refreshAll()
|
|
98
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refreshAll
|
|
99
|
+
*/
|
|
32
100
|
refreshAll(maxAge?: number): Promise<void>;
|
|
33
101
|
[Symbol.asyncDispose](): Promise<void>;
|
|
34
102
|
}
|
|
@@ -4,18 +4,52 @@ import { awaitDispose } from "../../util/dispose.js";
|
|
|
4
4
|
import { setMapItem } from "../../util/map.js";
|
|
5
5
|
import { EndpointStore } from "../store/EndpointStore.js";
|
|
6
6
|
/**
|
|
7
|
-
* Cache of `EndpointStore` objects for a single endpoint, keyed by
|
|
7
|
+
* Cache of `EndpointStore` objects for a single endpoint, keyed by the rendered request URL of each payload.
|
|
8
8
|
* - Use `get(payload)` to retrieve or create the `EndpointStore` for a given payload.
|
|
9
|
+
* - Disposing the cache disposes every nested `EndpointStore` and clears the map.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const cache = new EndpointCache(getUser, provider);
|
|
13
|
+
* const user = await cache.call({ id: "abc" });
|
|
14
|
+
*
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
|
|
9
16
|
*/
|
|
10
17
|
export class EndpointCache {
|
|
11
18
|
_endpoints = new Map();
|
|
19
|
+
/**
|
|
20
|
+
* The endpoint that every store in this cache fetches from.
|
|
21
|
+
*
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/endpoint
|
|
23
|
+
*/
|
|
12
24
|
endpoint;
|
|
25
|
+
/**
|
|
26
|
+
* The `APIProvider` used to render URLs and fetch results for this endpoint.
|
|
27
|
+
*
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/provider
|
|
29
|
+
*/
|
|
13
30
|
provider;
|
|
31
|
+
/**
|
|
32
|
+
* Create a new `EndpointCache` for a single endpoint and provider.
|
|
33
|
+
*
|
|
34
|
+
* @param endpoint The endpoint that every cached store fetches from.
|
|
35
|
+
* @param provider The `APIProvider` used to render URLs and fetch results.
|
|
36
|
+
* @example new EndpointCache(getUser, provider)
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache
|
|
38
|
+
*/
|
|
14
39
|
constructor(endpoint, provider) {
|
|
15
40
|
this.endpoint = endpoint;
|
|
16
41
|
this.provider = provider;
|
|
17
42
|
}
|
|
18
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Get (or create) the `EndpointStore` for the given payload.
|
|
45
|
+
* - Stores are keyed by the rendered request URL, so equivalent payloads share a store.
|
|
46
|
+
*
|
|
47
|
+
* @param payload The payload identifying the store to return.
|
|
48
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
49
|
+
* @returns The existing `EndpointStore` for `payload`, or a newly created one.
|
|
50
|
+
* @example cache.get({ id: "abc" })
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/get
|
|
52
|
+
*/
|
|
19
53
|
get(payload, caller = this.get) {
|
|
20
54
|
const url = this.provider.renderURL(this.endpoint, payload, caller).href;
|
|
21
55
|
return this._endpoints.get(url) || setMapItem(this._endpoints, url, new EndpointStore(this.endpoint, payload, this.provider));
|
|
@@ -26,27 +60,61 @@ export class EndpointCache {
|
|
|
26
60
|
* - Waits for the in-flight fetch if the store is loading.
|
|
27
61
|
* - Throws if the fetch fails, matching `APIProvider.call` behaviour.
|
|
28
62
|
*
|
|
29
|
-
* @param
|
|
63
|
+
* @param payload The payload to send to the endpoint.
|
|
64
|
+
* @param maxAge The maximum age in milliseconds (defaults to only refreshing if the value is still in a loading state).
|
|
65
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
66
|
+
* @returns The cached or freshly fetched result.
|
|
67
|
+
* @throws Whatever `APIProvider.call` throws if the fetch fails.
|
|
68
|
+
* @example await cache.call({ id: "abc" })
|
|
69
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/call
|
|
30
70
|
*/
|
|
31
71
|
async call(payload, maxAge = AVOID_REFRESH, caller = this.call) {
|
|
32
72
|
const store = this.get(payload, caller);
|
|
33
73
|
await store.refresh(maxAge);
|
|
34
74
|
return store.value;
|
|
35
75
|
}
|
|
36
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Invalidate a specific store so the next read refetches.
|
|
78
|
+
*
|
|
79
|
+
* @param payload The payload identifying the store to invalidate.
|
|
80
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
81
|
+
* @example cache.invalidate({ id: "abc" })
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidate
|
|
83
|
+
*/
|
|
37
84
|
invalidate(payload, caller = this.invalidate) {
|
|
38
85
|
this.get(payload, caller)?.invalidate();
|
|
39
86
|
}
|
|
40
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Invalidate all stores so the next read of any payload refetches.
|
|
89
|
+
*
|
|
90
|
+
* @example cache.invalidateAll()
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/invalidateAll
|
|
92
|
+
*/
|
|
41
93
|
invalidateAll() {
|
|
42
94
|
for (const store of this._endpoints.values())
|
|
43
95
|
store.invalidate();
|
|
44
96
|
}
|
|
45
|
-
/**
|
|
97
|
+
/**
|
|
98
|
+
* Trigger a refetch on a specific store.
|
|
99
|
+
*
|
|
100
|
+
* @param payload The payload identifying the store to refresh.
|
|
101
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
102
|
+
* @param caller The function to attribute thrown errors to (defaults to this method).
|
|
103
|
+
* @returns A promise that resolves when the refetch settles.
|
|
104
|
+
* @example await cache.refresh({ id: "abc" })
|
|
105
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refresh
|
|
106
|
+
*/
|
|
46
107
|
async refresh(payload, maxAge, caller = this.invalidate) {
|
|
47
108
|
await this.get(payload, caller)?.refresh(maxAge);
|
|
48
109
|
}
|
|
49
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* Trigger a refetch on all stores.
|
|
112
|
+
*
|
|
113
|
+
* @param maxAge The maximum age in milliseconds before a refetch is triggered.
|
|
114
|
+
* @returns A promise that resolves when every refetch settles.
|
|
115
|
+
* @example await cache.refreshAll()
|
|
116
|
+
* @see https://dhoulb.github.io/shelving/api/cache/EndpointCache/EndpointCache/refreshAll
|
|
117
|
+
*/
|
|
50
118
|
async refreshAll(maxAge) {
|
|
51
119
|
await awaitValues(...this._endpoints.values().map(store => store.refresh(maxAge)));
|
|
52
120
|
}
|