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
package/store/DataStore.js
CHANGED
|
@@ -3,63 +3,166 @@ import { getGetter } from "../util/class.js";
|
|
|
3
3
|
import { withProp } from "../util/object.js";
|
|
4
4
|
import { updateData } from "../util/update.js";
|
|
5
5
|
import { BusyStore } from "./BusyStore.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Store a data object, with helpers to read and update individual props.
|
|
8
|
+
* - `update()`, `set()` replace the stored object with an immutable updated copy.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* const store = new DataStore({ name: "Dave", age: 40 });
|
|
12
|
+
* store.set("age", 41);
|
|
13
|
+
* store.get("name"); // "Dave"
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore
|
|
15
|
+
*/
|
|
7
16
|
export class DataStore extends BusyStore {
|
|
8
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Get the current data of this store.
|
|
19
|
+
* - Supports suspense-like reads: throws a `Promise` while loading or the error `reason` on failure (inherited from `Store.value`).
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/data
|
|
22
|
+
*/
|
|
9
23
|
get data() {
|
|
10
24
|
return this.value;
|
|
11
25
|
}
|
|
12
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Set the data of this store.
|
|
28
|
+
*
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/data
|
|
30
|
+
*/
|
|
13
31
|
set data(data) {
|
|
14
32
|
this.value = data;
|
|
15
33
|
}
|
|
16
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Update several props in this data.
|
|
36
|
+
*
|
|
37
|
+
* @param updates The set of prop updates to apply.
|
|
38
|
+
* @returns Nothing.
|
|
39
|
+
* @example store.update({ age: 41, "name": "Dave" });
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/update
|
|
41
|
+
*/
|
|
17
42
|
update(updates) {
|
|
18
43
|
this.value = updateData(this.data, updates);
|
|
19
44
|
}
|
|
20
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Get a single named prop from this data.
|
|
47
|
+
*
|
|
48
|
+
* @param name The name of the prop to read.
|
|
49
|
+
* @returns The current value of the named prop.
|
|
50
|
+
* @example store.get("name"); // "Dave"
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/get
|
|
52
|
+
*/
|
|
21
53
|
get(name) {
|
|
22
54
|
return this.data[name];
|
|
23
55
|
}
|
|
24
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Set a single named prop in this data.
|
|
58
|
+
*
|
|
59
|
+
* @param name The name of the prop to set.
|
|
60
|
+
* @param value The new value for the prop.
|
|
61
|
+
* @returns Nothing.
|
|
62
|
+
* @example store.set("age", 41);
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/set
|
|
64
|
+
*/
|
|
25
65
|
set(name, value) {
|
|
26
66
|
this.value = withProp(this.data, name, value);
|
|
27
67
|
}
|
|
28
68
|
}
|
|
29
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Store a data object that may be `undefined` (e.g. a document that may not exist).
|
|
71
|
+
* - Reading `data` or calling `require()` throws `RequiredError` when the value is `undefined`.
|
|
72
|
+
* - `delete()` sets the value back to `undefined`.
|
|
73
|
+
*
|
|
74
|
+
* @example
|
|
75
|
+
* const store = new OptionalDataStore<{ name: string }>(undefined);
|
|
76
|
+
* store.exists; // false
|
|
77
|
+
* store.data = { name: "Dave" };
|
|
78
|
+
* store.delete(); // back to undefined
|
|
79
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore
|
|
80
|
+
*/
|
|
30
81
|
export class OptionalDataStore extends BusyStore {
|
|
31
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Get the current data of this store, or throw if it is not set.
|
|
84
|
+
* - Supports suspense-like reads: throws a `Promise` while loading or the error `reason` on failure (inherited from `Store.value`).
|
|
85
|
+
*
|
|
86
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/data
|
|
87
|
+
*/
|
|
32
88
|
get data() {
|
|
33
89
|
return this.require(getGetter(this, "data"));
|
|
34
90
|
}
|
|
35
|
-
/**
|
|
91
|
+
/**
|
|
92
|
+
* Set the data of this store.
|
|
93
|
+
*
|
|
94
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/data
|
|
95
|
+
*/
|
|
36
96
|
set data(data) {
|
|
37
97
|
this.value = data;
|
|
38
98
|
}
|
|
39
|
-
/**
|
|
99
|
+
/**
|
|
100
|
+
* Whether the data currently exists (is not `undefined`).
|
|
101
|
+
*
|
|
102
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/exists
|
|
103
|
+
*/
|
|
40
104
|
get exists() {
|
|
41
105
|
return !!this.value;
|
|
42
106
|
}
|
|
43
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Require the data of this store, or throw `RequiredError` if it is not set.
|
|
109
|
+
*
|
|
110
|
+
* @param caller The function to attribute a thrown `RequiredError` to (defaults to `this.require`).
|
|
111
|
+
* @returns The current data.
|
|
112
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
113
|
+
* @example store.require(); // throws if no data is set
|
|
114
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/require
|
|
115
|
+
*/
|
|
44
116
|
require(caller = this.require) {
|
|
45
117
|
const data = this.value;
|
|
46
118
|
if (!data)
|
|
47
119
|
throw new RequiredError("Data is empty", { caller });
|
|
48
120
|
return data;
|
|
49
121
|
}
|
|
50
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Update several props in this data.
|
|
124
|
+
*
|
|
125
|
+
* @param updates The set of prop updates to apply.
|
|
126
|
+
* @returns Nothing.
|
|
127
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
128
|
+
* @example store.update({ name: "Dave" });
|
|
129
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/update
|
|
130
|
+
*/
|
|
51
131
|
update(updates) {
|
|
52
132
|
this.value = updateData(this.require(this.update), updates);
|
|
53
133
|
}
|
|
54
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* Get a single named prop from this data.
|
|
136
|
+
*
|
|
137
|
+
* @param name The name of the prop to read.
|
|
138
|
+
* @returns The current value of the named prop.
|
|
139
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
140
|
+
* @example store.get("name");
|
|
141
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/get
|
|
142
|
+
*/
|
|
55
143
|
get(name) {
|
|
56
144
|
return this.require(this.get)[name];
|
|
57
145
|
}
|
|
58
|
-
/**
|
|
146
|
+
/**
|
|
147
|
+
* Set a single named prop in this data.
|
|
148
|
+
*
|
|
149
|
+
* @param name The name of the prop to set.
|
|
150
|
+
* @param value The new value for the prop.
|
|
151
|
+
* @returns Nothing.
|
|
152
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
153
|
+
* @example store.set("name", "Dave");
|
|
154
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/set
|
|
155
|
+
*/
|
|
59
156
|
set(name, value) {
|
|
60
157
|
this.value = withProp(this.require(this.set), name, value);
|
|
61
158
|
}
|
|
62
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* Set the data to `undefined`.
|
|
161
|
+
*
|
|
162
|
+
* @returns Nothing.
|
|
163
|
+
* @example store.delete();
|
|
164
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/delete
|
|
165
|
+
*/
|
|
63
166
|
delete() {
|
|
64
167
|
this.value = undefined;
|
|
65
168
|
}
|
|
@@ -1,22 +1,80 @@
|
|
|
1
1
|
import type { DictionaryItem, ImmutableDictionary, PossibleDictionary } from "../util/dictionary.js";
|
|
2
2
|
import type { Updates } from "../util/update.js";
|
|
3
3
|
import { BusyStore } from "./BusyStore.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Store a dictionary object (string-keyed map of values), with helpers to read and mutate its entries.
|
|
6
|
+
* - Accepts any `PossibleDictionary<T>` as input and normalises it to an `ImmutableDictionary<T>`.
|
|
7
|
+
* - Mutations replace the stored dictionary with an immutable updated copy.
|
|
8
|
+
* - Iterable, yielding `[key, value]` entry tuples.
|
|
9
|
+
*
|
|
10
|
+
* @param value The initial dictionary value (defaults to an empty dictionary).
|
|
11
|
+
* @example
|
|
12
|
+
* const store = new DictionaryStore<number>({ a: 1, b: 2 });
|
|
13
|
+
* store.set("c", 3);
|
|
14
|
+
* store.get("a"); // 1
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore
|
|
16
|
+
*/
|
|
5
17
|
export declare class DictionaryStore<T> extends BusyStore<ImmutableDictionary<T>, PossibleDictionary<T>> implements Iterable<DictionaryItem<T>> {
|
|
6
18
|
constructor(value?: PossibleDictionary<T>);
|
|
7
19
|
protected _convert(possible: PossibleDictionary<T>): ImmutableDictionary<T>;
|
|
8
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Get the number of entries in the current value of this store.
|
|
22
|
+
*
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/count
|
|
24
|
+
*/
|
|
9
25
|
get count(): number;
|
|
10
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Update several entries in this dictionary.
|
|
28
|
+
*
|
|
29
|
+
* @param updates The set of entry updates to apply.
|
|
30
|
+
* @returns Nothing.
|
|
31
|
+
* @example store.update({ a: 10, b: 20 });
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/update
|
|
33
|
+
*/
|
|
11
34
|
update(updates: Updates<ImmutableDictionary<T>>): void;
|
|
12
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Remove one or more named entries from this dictionary.
|
|
37
|
+
*
|
|
38
|
+
* @param keys The keys of the entries to remove.
|
|
39
|
+
* @returns Nothing.
|
|
40
|
+
* @example store.deleteItems("a", "b");
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/deleteItems
|
|
42
|
+
*/
|
|
13
43
|
deleteItems(...keys: string[]): void;
|
|
14
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Get a single named item from this dictionary, or `undefined` if it is not set.
|
|
46
|
+
*
|
|
47
|
+
* @param name The key of the item to read.
|
|
48
|
+
* @returns The item value, or `undefined` if it is not present.
|
|
49
|
+
* @example store.get("a"); // 1
|
|
50
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/get
|
|
51
|
+
*/
|
|
15
52
|
get(name: string): T | undefined;
|
|
16
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Set a single named item in this dictionary.
|
|
55
|
+
*
|
|
56
|
+
* @param name The key of the item to set.
|
|
57
|
+
* @param value The new value for the item.
|
|
58
|
+
* @returns Nothing.
|
|
59
|
+
* @example store.set("a", 10);
|
|
60
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/set
|
|
61
|
+
*/
|
|
17
62
|
set(name: string, value: T): void;
|
|
18
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Delete one or more named items from this dictionary.
|
|
65
|
+
*
|
|
66
|
+
* @param name The key of the first item to delete.
|
|
67
|
+
* @param names Additional keys to delete.
|
|
68
|
+
* @returns Nothing.
|
|
69
|
+
* @example store.delete("a", "b");
|
|
70
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/delete
|
|
71
|
+
*/
|
|
19
72
|
delete(name: string, ...names: string[]): void;
|
|
20
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Iterate over the `[key, value]` entries of this dictionary.
|
|
75
|
+
*
|
|
76
|
+
* @returns An iterator over the dictionary's entry tuples.
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/[Symbol.iterator]
|
|
78
|
+
*/
|
|
21
79
|
[Symbol.iterator](): Iterator<DictionaryItem<T>>;
|
|
22
80
|
}
|
package/store/DictionaryStore.js
CHANGED
|
@@ -2,7 +2,19 @@ import { EMPTY_DICTIONARY, getDictionaryItems, omitDictionaryItems, requireDicti
|
|
|
2
2
|
import { omitProps, withProp } from "../util/object.js";
|
|
3
3
|
import { updateData } from "../util/update.js";
|
|
4
4
|
import { BusyStore } from "./BusyStore.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Store a dictionary object (string-keyed map of values), with helpers to read and mutate its entries.
|
|
7
|
+
* - Accepts any `PossibleDictionary<T>` as input and normalises it to an `ImmutableDictionary<T>`.
|
|
8
|
+
* - Mutations replace the stored dictionary with an immutable updated copy.
|
|
9
|
+
* - Iterable, yielding `[key, value]` entry tuples.
|
|
10
|
+
*
|
|
11
|
+
* @param value The initial dictionary value (defaults to an empty dictionary).
|
|
12
|
+
* @example
|
|
13
|
+
* const store = new DictionaryStore<number>({ a: 1, b: 2 });
|
|
14
|
+
* store.set("c", 3);
|
|
15
|
+
* store.get("a"); // 1
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore
|
|
17
|
+
*/
|
|
6
18
|
export class DictionaryStore extends BusyStore {
|
|
7
19
|
// Override to set default value to empty dictionary.
|
|
8
20
|
constructor(value = EMPTY_DICTIONARY) {
|
|
@@ -12,31 +24,77 @@ export class DictionaryStore extends BusyStore {
|
|
|
12
24
|
_convert(possible) {
|
|
13
25
|
return requireDictionary(possible);
|
|
14
26
|
}
|
|
15
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Get the number of entries in the current value of this store.
|
|
29
|
+
*
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/count
|
|
31
|
+
*/
|
|
16
32
|
get count() {
|
|
17
33
|
return Object.keys(this.value).length;
|
|
18
34
|
}
|
|
19
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Update several entries in this dictionary.
|
|
37
|
+
*
|
|
38
|
+
* @param updates The set of entry updates to apply.
|
|
39
|
+
* @returns Nothing.
|
|
40
|
+
* @example store.update({ a: 10, b: 20 });
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/update
|
|
42
|
+
*/
|
|
20
43
|
update(updates) {
|
|
21
44
|
this.value = updateData(this.value, updates);
|
|
22
45
|
}
|
|
23
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Remove one or more named entries from this dictionary.
|
|
48
|
+
*
|
|
49
|
+
* @param keys The keys of the entries to remove.
|
|
50
|
+
* @returns Nothing.
|
|
51
|
+
* @example store.deleteItems("a", "b");
|
|
52
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/deleteItems
|
|
53
|
+
*/
|
|
24
54
|
deleteItems(...keys) {
|
|
25
55
|
this.value = omitDictionaryItems(this.value, ...keys);
|
|
26
56
|
}
|
|
27
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Get a single named item from this dictionary, or `undefined` if it is not set.
|
|
59
|
+
*
|
|
60
|
+
* @param name The key of the item to read.
|
|
61
|
+
* @returns The item value, or `undefined` if it is not present.
|
|
62
|
+
* @example store.get("a"); // 1
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/get
|
|
64
|
+
*/
|
|
28
65
|
get(name) {
|
|
29
66
|
return this.value[name];
|
|
30
67
|
}
|
|
31
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Set a single named item in this dictionary.
|
|
70
|
+
*
|
|
71
|
+
* @param name The key of the item to set.
|
|
72
|
+
* @param value The new value for the item.
|
|
73
|
+
* @returns Nothing.
|
|
74
|
+
* @example store.set("a", 10);
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/set
|
|
76
|
+
*/
|
|
32
77
|
set(name, value) {
|
|
33
78
|
this.value = withProp(this.value, name, value);
|
|
34
79
|
}
|
|
35
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* Delete one or more named items from this dictionary.
|
|
82
|
+
*
|
|
83
|
+
* @param name The key of the first item to delete.
|
|
84
|
+
* @param names Additional keys to delete.
|
|
85
|
+
* @returns Nothing.
|
|
86
|
+
* @example store.delete("a", "b");
|
|
87
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/delete
|
|
88
|
+
*/
|
|
36
89
|
delete(name, ...names) {
|
|
37
90
|
this.value = omitProps(this.value, name, ...names);
|
|
38
91
|
}
|
|
39
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Iterate over the `[key, value]` entries of this dictionary.
|
|
94
|
+
*
|
|
95
|
+
* @returns An iterator over the dictionary's entry tuples.
|
|
96
|
+
* @see https://dhoulb.github.io/shelving/store/DictionaryStore/DictionaryStore/[Symbol.iterator]
|
|
97
|
+
*/
|
|
40
98
|
[Symbol.iterator]() {
|
|
41
99
|
return getDictionaryItems(this.value)[Symbol.iterator]();
|
|
42
100
|
}
|
package/store/FetchStore.d.ts
CHANGED
|
@@ -1,18 +1,39 @@
|
|
|
1
1
|
import { type NONE } from "../util/constants.js";
|
|
2
2
|
import { BusyStore } from "./BusyStore.js";
|
|
3
3
|
import type { AsyncStoreInput, StoreInput } from "./Store.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* `maxAge` of zero passed to `refresh()` means "always refresh this value" (this is the default).
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/ALWAYS_REFRESH
|
|
8
|
+
*/
|
|
5
9
|
export declare const ALWAYS_REFRESH = 0;
|
|
6
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* `maxAge` of `Infinity` passed to `refresh()` means "only refresh if this value is not loaded or invalid".
|
|
12
|
+
*
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/AVOID_REFRESH
|
|
14
|
+
*/
|
|
7
15
|
export declare const AVOID_REFRESH: number;
|
|
8
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Callback that fetches the next value for a `FetchStore`.
|
|
18
|
+
* - Receives the current `AbortSignal` so it can cancel in-flight HTTP requests when the fetch is aborted.
|
|
19
|
+
* - May return a value synchronously or a `PromiseLike` resolving to one (which the store will await).
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchCallback
|
|
22
|
+
*/
|
|
9
23
|
export type FetchCallback<T> = (signal: AbortSignal) => StoreInput<T> | PromiseLike<StoreInput<T>>;
|
|
10
24
|
/**
|
|
11
|
-
* Store that fetches its values from a remote source.
|
|
25
|
+
* Store that fetches its values from a remote source on demand.
|
|
26
|
+
* - Reading `value` or `loading` optimistically triggers a fetch so the value is available next time.
|
|
27
|
+
* - Fetches are de-duplicated, can be aged out with `maxAge`, and can be forced stale with `invalidate()`.
|
|
28
|
+
* - Provide a `callback` to fetch values, or subclass and override `this._fetch()` for custom behaviour.
|
|
12
29
|
*
|
|
13
30
|
* @param value The initial value for the store, or `NONE` if it does not have one yet.
|
|
14
31
|
* @param callback An optional callback that, if set, will be called when the `refresh()` method is invoked to fetch the next value.
|
|
15
32
|
* - Override `this._fetch()` in subclasses to define custom fetching behaviour for a subclass.
|
|
33
|
+
* @example
|
|
34
|
+
* const store = new FetchStore(NONE, async signal => (await fetch("/api/thing", { signal })).json());
|
|
35
|
+
* store.value; // throws a `Promise` while loading, then resolves to the fetched value
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore
|
|
16
37
|
*/
|
|
17
38
|
export declare class FetchStore<T, TT = T> extends BusyStore<T, TT> {
|
|
18
39
|
get loading(): boolean;
|
|
@@ -30,13 +51,20 @@ export declare class FetchStore<T, TT = T> extends BusyStore<T, TT> {
|
|
|
30
51
|
* - `0` zero means "always refresh" (this is the default).
|
|
31
52
|
* - `Infinity` means "refresh only if store is still in a loading state.
|
|
32
53
|
* - Any other value may or may not be stale based on `this.age`
|
|
54
|
+
* @returns `true` if the value was set synchronously, `false` if no refresh happened, or a `Promise` resolving to whether the awaited fetch succeeded.
|
|
55
|
+
* @throws {never} Never throws — fetch errors are stored as `reason` instead.
|
|
56
|
+
* @example store.refresh(MINUTE); // refresh only if the current value is older than a minute
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/refresh
|
|
33
58
|
*/
|
|
34
59
|
refresh(maxAge?: number): Promise<boolean> | boolean;
|
|
35
60
|
private _pendingRefresh;
|
|
36
61
|
/**
|
|
37
62
|
* Current `AbortSignal` for this store's in-flight fetch.
|
|
38
63
|
* - Created lazily; a new signal is issued each time `refresh()` starts a new fetch or `abort()` is called.
|
|
39
|
-
* -
|
|
64
|
+
* - Reading this triggers `abort()` so any current awaits are cancelled.
|
|
65
|
+
*
|
|
66
|
+
* @returns A fresh `AbortSignal` for the next fetch.
|
|
67
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/signal
|
|
40
68
|
*/
|
|
41
69
|
get signal(): AbortSignal;
|
|
42
70
|
private _aborter;
|
|
@@ -46,11 +74,20 @@ export declare class FetchStore<T, TT = T> extends BusyStore<T, TT> {
|
|
|
46
74
|
*/
|
|
47
75
|
protected _fetch(signal: AbortSignal): AsyncStoreInput<TT>;
|
|
48
76
|
private _callback;
|
|
49
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Whether this store has currently been invalidated and needs a refresh.
|
|
79
|
+
*
|
|
80
|
+
* @returns `true` if a refresh is pending after an `invalidate()` call, otherwise `false`.
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/invalidated
|
|
82
|
+
*/
|
|
50
83
|
get invalidated(): boolean;
|
|
51
84
|
/**
|
|
52
85
|
* Invalidate this store so a new fetch is triggered on the next read of `loading` or `value`.
|
|
53
86
|
* - Triggers `abort()` so any current awaits are cancelled.
|
|
87
|
+
*
|
|
88
|
+
* @returns Nothing.
|
|
89
|
+
* @example store.invalidate(); // next read of `value` refetches
|
|
90
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/invalidate
|
|
54
91
|
*/
|
|
55
92
|
invalidate(): void;
|
|
56
93
|
private _invalidation;
|
package/store/FetchStore.js
CHANGED
|
@@ -2,16 +2,31 @@ import { RequiredError } from "../error/RequiredError.js";
|
|
|
2
2
|
import { isAsync } from "../util/async.js";
|
|
3
3
|
import { ABORT, SKIP } from "../util/constants.js";
|
|
4
4
|
import { BusyStore } from "./BusyStore.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* `maxAge` of zero passed to `refresh()` means "always refresh this value" (this is the default).
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/ALWAYS_REFRESH
|
|
9
|
+
*/
|
|
6
10
|
export const ALWAYS_REFRESH = 0;
|
|
7
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* `maxAge` of `Infinity` passed to `refresh()` means "only refresh if this value is not loaded or invalid".
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/AVOID_REFRESH
|
|
15
|
+
*/
|
|
8
16
|
export const AVOID_REFRESH = Infinity;
|
|
9
17
|
/**
|
|
10
|
-
* Store that fetches its values from a remote source.
|
|
18
|
+
* Store that fetches its values from a remote source on demand.
|
|
19
|
+
* - Reading `value` or `loading` optimistically triggers a fetch so the value is available next time.
|
|
20
|
+
* - Fetches are de-duplicated, can be aged out with `maxAge`, and can be forced stale with `invalidate()`.
|
|
21
|
+
* - Provide a `callback` to fetch values, or subclass and override `this._fetch()` for custom behaviour.
|
|
11
22
|
*
|
|
12
23
|
* @param value The initial value for the store, or `NONE` if it does not have one yet.
|
|
13
24
|
* @param callback An optional callback that, if set, will be called when the `refresh()` method is invoked to fetch the next value.
|
|
14
25
|
* - Override `this._fetch()` in subclasses to define custom fetching behaviour for a subclass.
|
|
26
|
+
* @example
|
|
27
|
+
* const store = new FetchStore(NONE, async signal => (await fetch("/api/thing", { signal })).json());
|
|
28
|
+
* store.value; // throws a `Promise` while loading, then resolves to the fetched value
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore
|
|
15
30
|
*/
|
|
16
31
|
export class FetchStore extends BusyStore {
|
|
17
32
|
// Override to trigger a refresh when `this.loading` is read.
|
|
@@ -56,6 +71,10 @@ export class FetchStore extends BusyStore {
|
|
|
56
71
|
* - `0` zero means "always refresh" (this is the default).
|
|
57
72
|
* - `Infinity` means "refresh only if store is still in a loading state.
|
|
58
73
|
* - Any other value may or may not be stale based on `this.age`
|
|
74
|
+
* @returns `true` if the value was set synchronously, `false` if no refresh happened, or a `Promise` resolving to whether the awaited fetch succeeded.
|
|
75
|
+
* @throws {never} Never throws — fetch errors are stored as `reason` instead.
|
|
76
|
+
* @example store.refresh(MINUTE); // refresh only if the current value is older than a minute
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/refresh
|
|
59
78
|
*/
|
|
60
79
|
refresh(maxAge = ALWAYS_REFRESH) {
|
|
61
80
|
if (this._pendingRefresh)
|
|
@@ -78,7 +97,10 @@ export class FetchStore extends BusyStore {
|
|
|
78
97
|
/**
|
|
79
98
|
* Current `AbortSignal` for this store's in-flight fetch.
|
|
80
99
|
* - Created lazily; a new signal is issued each time `refresh()` starts a new fetch or `abort()` is called.
|
|
81
|
-
* -
|
|
100
|
+
* - Reading this triggers `abort()` so any current awaits are cancelled.
|
|
101
|
+
*
|
|
102
|
+
* @returns A fresh `AbortSignal` for the next fetch.
|
|
103
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/signal
|
|
82
104
|
*/
|
|
83
105
|
get signal() {
|
|
84
106
|
this.abort();
|
|
@@ -96,13 +118,22 @@ export class FetchStore extends BusyStore {
|
|
|
96
118
|
return this._callback(signal);
|
|
97
119
|
}
|
|
98
120
|
_callback;
|
|
99
|
-
/**
|
|
121
|
+
/**
|
|
122
|
+
* Whether this store has currently been invalidated and needs a refresh.
|
|
123
|
+
*
|
|
124
|
+
* @returns `true` if a refresh is pending after an `invalidate()` call, otherwise `false`.
|
|
125
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/invalidated
|
|
126
|
+
*/
|
|
100
127
|
get invalidated() {
|
|
101
128
|
return !!this._invalidation;
|
|
102
129
|
}
|
|
103
130
|
/**
|
|
104
131
|
* Invalidate this store so a new fetch is triggered on the next read of `loading` or `value`.
|
|
105
132
|
* - Triggers `abort()` so any current awaits are cancelled.
|
|
133
|
+
*
|
|
134
|
+
* @returns Nothing.
|
|
135
|
+
* @example store.invalidate(); // next read of `value` refetches
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/store/FetchStore/FetchStore/invalidate
|
|
106
137
|
*/
|
|
107
138
|
invalidate() {
|
|
108
139
|
this.abort();
|
package/store/PathStore.d.ts
CHANGED
|
@@ -3,20 +3,59 @@ import type { AbsolutePath, RelativePath } from "../util/path.js";
|
|
|
3
3
|
import { BusyStore } from "./BusyStore.js";
|
|
4
4
|
/**
|
|
5
5
|
* Store an absolute path, e.g. `/a/b/c`
|
|
6
|
+
* - Accepts absolute or relative paths as input and normalises them to an absolute path against `this.base`.
|
|
7
|
+
* - Provides helpers to test whether other paths are active or proud relative to the current path.
|
|
6
8
|
*
|
|
7
|
-
* @param path
|
|
8
|
-
* @param base
|
|
9
|
+
* @param path The initial value for the store (defaults to `.`, resolved against `base`).
|
|
10
|
+
* @param base The base path to resolve relative paths against (defaults to `/`).
|
|
11
|
+
* @example
|
|
12
|
+
* const store = new PathStore("/a/b");
|
|
13
|
+
* store.isActive("/a/b"); // true
|
|
14
|
+
* store.getPath("c"); // "/a/b/c"
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/store/PathStore/PathStore
|
|
9
16
|
*/
|
|
10
17
|
export declare class PathStore extends BusyStore<AbsolutePath, AbsolutePath | RelativePath> {
|
|
18
|
+
/**
|
|
19
|
+
* Base path that relative inputs are resolved against.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/store/PathStore/PathStore/base
|
|
22
|
+
*/
|
|
11
23
|
readonly base: AbsolutePath;
|
|
12
24
|
constructor(path?: AbsolutePath | RelativePath, base?: AbsolutePath);
|
|
13
25
|
protected _convert(possible: AbsolutePath | RelativePath, caller: AnyCaller): AbsolutePath;
|
|
14
26
|
protected _equal(a: AbsolutePath, b: AbsolutePath): boolean;
|
|
15
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Based on the current store path, is a path active (i.e. equal to the current path)?
|
|
29
|
+
*
|
|
30
|
+
* @param path The absolute path to test.
|
|
31
|
+
* @returns `true` if `path` matches the current path, otherwise `false`.
|
|
32
|
+
* @example store.isActive("/a/b");
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/store/PathStore/PathStore/isActive
|
|
34
|
+
*/
|
|
16
35
|
isActive(path: AbsolutePath): boolean;
|
|
17
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Based on the current store path, is a path proud (i.e. an ancestor of the current store path)?
|
|
38
|
+
*
|
|
39
|
+
* @param path The absolute path to test.
|
|
40
|
+
* @returns `true` if `path` is at or above the current path in the hierarchy, otherwise `false`.
|
|
41
|
+
* @example store.isProud("/a"); // true when current path is "/a/b"
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/store/PathStore/PathStore/isProud
|
|
43
|
+
*/
|
|
18
44
|
isProud(path: AbsolutePath): boolean;
|
|
19
|
-
/**
|
|
45
|
+
/**
|
|
46
|
+
* Get an absolute path from a path relative to the current store path.
|
|
47
|
+
*
|
|
48
|
+
* @param path The absolute or relative path to resolve.
|
|
49
|
+
* @returns The resolved absolute path.
|
|
50
|
+
* @example store.getPath("c"); // "/a/b/c" when current path is "/a/b"
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/store/PathStore/PathStore/getPath
|
|
52
|
+
*/
|
|
20
53
|
getPath(path: AbsolutePath | RelativePath): AbsolutePath;
|
|
54
|
+
/**
|
|
55
|
+
* Return the current path as a string.
|
|
56
|
+
*
|
|
57
|
+
* @returns The current absolute path.
|
|
58
|
+
* @see https://dhoulb.github.io/shelving/store/PathStore/PathStore/toString
|
|
59
|
+
*/
|
|
21
60
|
toString(): string;
|
|
22
61
|
}
|