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/sequence/LazySequence.js
CHANGED
|
@@ -1,14 +1,34 @@
|
|
|
1
1
|
import { awaitDispose } from "../util/dispose.js";
|
|
2
2
|
import { Starter } from "../util/start.js";
|
|
3
3
|
import { ThroughSequence } from "./ThroughSequence.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Sequence of values that calls a `StartCallback` when it has iterators that are iterating, and calls the corresponding `StopCallback` when all iterators have finished.
|
|
6
|
+
* - The `start` callback runs lazily on the first active iterator and the returned stop callback runs when the last iterator finishes.
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const seq = new LazySequence(source, () => {
|
|
10
|
+
* const timer = setInterval(tick, 1000);
|
|
11
|
+
* return () => clearInterval(timer); // Stop callback.
|
|
12
|
+
* });
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence
|
|
14
|
+
*/
|
|
5
15
|
export class LazySequence extends ThroughSequence {
|
|
6
16
|
_iterators = new Set(); // Keep track of the iterators that are iterating.
|
|
7
17
|
_starter;
|
|
8
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Number of iterators currently registered as iterating.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence/iterators
|
|
22
|
+
*/
|
|
9
23
|
get iterators() {
|
|
10
24
|
return this._iterators.size;
|
|
11
25
|
}
|
|
26
|
+
/**
|
|
27
|
+
* Create a new `LazySequence`.
|
|
28
|
+
*
|
|
29
|
+
* @param source Async iterator to pull values from.
|
|
30
|
+
* @param start Callback run when the first iterator starts; its returned stop callback runs when the last iterator finishes.
|
|
31
|
+
*/
|
|
12
32
|
constructor(source, start) {
|
|
13
33
|
super(source);
|
|
14
34
|
this._starter = new Starter(start);
|
|
@@ -27,6 +47,10 @@ export class LazySequence extends ThroughSequence {
|
|
|
27
47
|
* An iterator started iterating.
|
|
28
48
|
* - Add this iterator to the register.
|
|
29
49
|
* - Start the starter if this is the first iterator.
|
|
50
|
+
*
|
|
51
|
+
* @param iterator The iterator that has started iterating.
|
|
52
|
+
* @example sequence.start(iterator);
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence/start
|
|
30
54
|
*/
|
|
31
55
|
start(iterator) {
|
|
32
56
|
const before = this._iterators.size;
|
|
@@ -38,6 +62,10 @@ export class LazySequence extends ThroughSequence {
|
|
|
38
62
|
* An iterator stopped iterating.
|
|
39
63
|
* - Add this iterator to the register
|
|
40
64
|
* - Stop the starter if this is the last iterator.
|
|
65
|
+
*
|
|
66
|
+
* @param iterator The iterator that has stopped iterating.
|
|
67
|
+
* @example sequence.stop(iterator);
|
|
68
|
+
* @see https://dhoulb.github.io/shelving/sequence/LazySequence/LazySequence/stop
|
|
41
69
|
*/
|
|
42
70
|
stop(iterator) {
|
|
43
71
|
const before = this._iterators.size;
|
package/sequence/Sequence.d.ts
CHANGED
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
* - Key constraint is that a generator only runs one time through and keeps track of its status.
|
|
7
7
|
* - This means when a generator throws, further requests to `next()` will always return `done: true`
|
|
8
8
|
* - This class does not provide that guarantee or have that constraint.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* class NumberSequence extends Sequence<number, void, void> {
|
|
12
|
+
* async next() { return { done: false, value: Math.random() }; }
|
|
13
|
+
* }
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/sequence/Sequence/Sequence
|
|
9
15
|
*/
|
|
10
16
|
export declare abstract class Sequence<T, R, N> implements AsyncIterable<T, R | undefined, N | undefined>, AsyncIterator<T, R | undefined, N | undefined>, AsyncDisposable {
|
|
11
17
|
readonly [Symbol.toStringTag] = "Sequence";
|
|
@@ -18,6 +24,7 @@ export declare abstract class Sequence<T, R, N> implements AsyncIterable<T, R |
|
|
|
18
24
|
* - Will be the `N` next value on subsequent calls.
|
|
19
25
|
*
|
|
20
26
|
* @returns An incomplete iterator result with `done: false` and `value: T`.
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/sequence/Sequence/Sequence/next
|
|
21
28
|
*/
|
|
22
29
|
abstract next(value?: N | undefined): Promise<IteratorResult<T, R | undefined>>;
|
|
23
30
|
/**
|
|
@@ -30,6 +37,7 @@ export declare abstract class Sequence<T, R, N> implements AsyncIterable<T, R |
|
|
|
30
37
|
* - Will be `undefined` on the first call.
|
|
31
38
|
*
|
|
32
39
|
* @returns A completed iterator result with `done: true`.
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/sequence/Sequence/Sequence/return
|
|
33
41
|
*/
|
|
34
42
|
return(value?: R | undefined | PromiseLike<R | undefined>): Promise<IteratorResult<T, R | undefined>>;
|
|
35
43
|
/**
|
|
@@ -38,6 +46,9 @@ export declare abstract class Sequence<T, R, N> implements AsyncIterable<T, R |
|
|
|
38
46
|
* - Subclasses can override this to recover from errors or perform cleanup.
|
|
39
47
|
*
|
|
40
48
|
* @param reason Error or other thrown value to send into the iterator.
|
|
49
|
+
* @returns A completed iterator result with `done: true` if a subclass recovers from the error.
|
|
50
|
+
* @throws The `reason` value by default — subclasses may override to recover instead.
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/sequence/Sequence/Sequence/throw
|
|
41
52
|
*/
|
|
42
53
|
throw(reason?: unknown): Promise<IteratorResult<T, R | undefined>>;
|
|
43
54
|
[Symbol.asyncIterator](): AsyncIterator<T, R | undefined, N | undefined>;
|
package/sequence/Sequence.js
CHANGED
|
@@ -6,6 +6,12 @@
|
|
|
6
6
|
* - Key constraint is that a generator only runs one time through and keeps track of its status.
|
|
7
7
|
* - This means when a generator throws, further requests to `next()` will always return `done: true`
|
|
8
8
|
* - This class does not provide that guarantee or have that constraint.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* class NumberSequence extends Sequence<number, void, void> {
|
|
12
|
+
* async next() { return { done: false, value: Math.random() }; }
|
|
13
|
+
* }
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/sequence/Sequence/Sequence
|
|
9
15
|
*/
|
|
10
16
|
export class Sequence {
|
|
11
17
|
[Symbol.toStringTag] = "Sequence";
|
|
@@ -19,6 +25,7 @@ export class Sequence {
|
|
|
19
25
|
* - Will be `undefined` on the first call.
|
|
20
26
|
*
|
|
21
27
|
* @returns A completed iterator result with `done: true`.
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/sequence/Sequence/Sequence/return
|
|
22
29
|
*/
|
|
23
30
|
async return(value) {
|
|
24
31
|
// Default behaviour for a generator is to return `done: true` and repeat back input value.
|
|
@@ -30,6 +37,9 @@ export class Sequence {
|
|
|
30
37
|
* - Subclasses can override this to recover from errors or perform cleanup.
|
|
31
38
|
*
|
|
32
39
|
* @param reason Error or other thrown value to send into the iterator.
|
|
40
|
+
* @returns A completed iterator result with `done: true` if a subclass recovers from the error.
|
|
41
|
+
* @throws The `reason` value by default — subclasses may override to recover instead.
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/sequence/Sequence/Sequence/throw
|
|
33
43
|
*/
|
|
34
44
|
async throw(reason) {
|
|
35
45
|
// Default behaviour for a generator is to throw the error back out of the iterator and not continue.
|
|
@@ -3,9 +3,24 @@ import { Sequence } from "./Sequence.js";
|
|
|
3
3
|
* Async iterable that pulls values from a source async iterable.
|
|
4
4
|
* - Can be used to turn an `AsyncIterator` into an `AsyncIterableIterator`
|
|
5
5
|
* - Can be used to ensure `throw()` and `return()` are always set on an `AsyncIterator`
|
|
6
|
+
*
|
|
7
|
+
* @example
|
|
8
|
+
* const seq = new ThroughSequence(someAsyncIterator);
|
|
9
|
+
* for await (const value of seq) console.log(value);
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/sequence/ThroughSequence/ThroughSequence
|
|
6
11
|
*/
|
|
7
12
|
export declare class ThroughSequence<T, R, N> extends Sequence<T, R | undefined, N | undefined> {
|
|
13
|
+
/**
|
|
14
|
+
* Source async iterator that this sequence pulls values from.
|
|
15
|
+
*
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/sequence/ThroughSequence/ThroughSequence/source
|
|
17
|
+
*/
|
|
8
18
|
readonly source: AsyncIterator<T, R | undefined, N | undefined>;
|
|
19
|
+
/**
|
|
20
|
+
* Create a new `ThroughSequence` wrapping a source iterator.
|
|
21
|
+
*
|
|
22
|
+
* @param source Async iterator to pull values from.
|
|
23
|
+
*/
|
|
9
24
|
constructor(source: AsyncIterator<T, R | undefined, N | undefined>);
|
|
10
25
|
next(value?: N | undefined): Promise<IteratorResult<T, R | undefined>>;
|
|
11
26
|
return(value?: R | undefined | PromiseLike<R | undefined>): Promise<IteratorResult<T, R | undefined>>;
|
|
@@ -4,9 +4,24 @@ import { Sequence } from "./Sequence.js";
|
|
|
4
4
|
* Async iterable that pulls values from a source async iterable.
|
|
5
5
|
* - Can be used to turn an `AsyncIterator` into an `AsyncIterableIterator`
|
|
6
6
|
* - Can be used to ensure `throw()` and `return()` are always set on an `AsyncIterator`
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const seq = new ThroughSequence(someAsyncIterator);
|
|
10
|
+
* for await (const value of seq) console.log(value);
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/sequence/ThroughSequence/ThroughSequence
|
|
7
12
|
*/
|
|
8
13
|
export class ThroughSequence extends Sequence {
|
|
14
|
+
/**
|
|
15
|
+
* Source async iterator that this sequence pulls values from.
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/sequence/ThroughSequence/ThroughSequence/source
|
|
18
|
+
*/
|
|
9
19
|
source;
|
|
20
|
+
/**
|
|
21
|
+
* Create a new `ThroughSequence` wrapping a source iterator.
|
|
22
|
+
*
|
|
23
|
+
* @param source Async iterator to pull values from.
|
|
24
|
+
*/
|
|
10
25
|
constructor(source) {
|
|
11
26
|
super();
|
|
12
27
|
this.source = source;
|
package/store/ArrayStore.d.ts
CHANGED
|
@@ -1,28 +1,91 @@
|
|
|
1
1
|
import type { ImmutableArray, PossibleArray } from "../util/array.js";
|
|
2
2
|
import type { AnyCaller } from "../util/function.js";
|
|
3
3
|
import { BusyStore } from "./BusyStore.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Store an immutable array of items, with helpers to read and mutate its contents.
|
|
6
|
+
* - Accepts any `PossibleArray<T>` as input and normalises it to an `ImmutableArray<T>`.
|
|
7
|
+
* - Mutations (`add()`, `delete()`, `toggle()`) replace the stored array with an immutable updated copy.
|
|
8
|
+
* - Iterable, so you can `for (const item of store)`.
|
|
9
|
+
*
|
|
10
|
+
* @param value The initial array value (defaults to an empty array).
|
|
11
|
+
* @example
|
|
12
|
+
* const store = new ArrayStore([1, 2, 3]);
|
|
13
|
+
* store.add(4); // [1, 2, 3, 4]
|
|
14
|
+
* store.first; // 1
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore
|
|
16
|
+
*/
|
|
5
17
|
export declare class ArrayStore<T> extends BusyStore<ImmutableArray<T>, PossibleArray<T>> implements Iterable<T> {
|
|
6
18
|
constructor(value?: PossibleArray<T>);
|
|
7
19
|
protected _convert(input: PossibleArray<T>, caller: AnyCaller): ImmutableArray<T>;
|
|
8
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Get the first item in this store, or `undefined` if it has no items.
|
|
22
|
+
*
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/optionalFirst
|
|
24
|
+
*/
|
|
9
25
|
get optionalFirst(): T | undefined;
|
|
10
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Get the last item in this store, or `undefined` if it has no items.
|
|
28
|
+
*
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/optionalLast
|
|
30
|
+
*/
|
|
11
31
|
get optionalLast(): T | undefined;
|
|
12
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Get the first item in this store, or throw `RequiredError` if it has no items.
|
|
34
|
+
*
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/first
|
|
36
|
+
*/
|
|
13
37
|
get first(): T;
|
|
14
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Get the last item in this store, or throw `RequiredError` if it has no items.
|
|
40
|
+
*
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/last
|
|
42
|
+
*/
|
|
15
43
|
get last(): T;
|
|
16
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Whether this store has at least one item.
|
|
46
|
+
*
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/exists
|
|
48
|
+
*/
|
|
17
49
|
get exists(): boolean;
|
|
18
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Get the number of items in the current value of this store.
|
|
52
|
+
*
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/count
|
|
54
|
+
*/
|
|
19
55
|
get count(): number;
|
|
20
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Add one or more items to this array.
|
|
58
|
+
* - Duplicate items (already present in the array) are skipped.
|
|
59
|
+
*
|
|
60
|
+
* @param items The items to add.
|
|
61
|
+
* @returns Nothing.
|
|
62
|
+
* @example store.add(4, 5);
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/add
|
|
64
|
+
*/
|
|
21
65
|
add(...items: T[]): void;
|
|
22
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* Remove one or more items from this array.
|
|
68
|
+
*
|
|
69
|
+
* @param items The items to remove.
|
|
70
|
+
* @returns Nothing.
|
|
71
|
+
* @example store.delete(2, 3);
|
|
72
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/delete
|
|
73
|
+
*/
|
|
23
74
|
delete(...items: T[]): void;
|
|
24
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Toggle one or more items in this array (add if absent, remove if present).
|
|
77
|
+
*
|
|
78
|
+
* @param items The items to toggle.
|
|
79
|
+
* @returns Nothing.
|
|
80
|
+
* @example store.toggle(1, 4);
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/toggle
|
|
82
|
+
*/
|
|
25
83
|
toggle(...items: T[]): void;
|
|
26
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Iterate over the items in this store's current array.
|
|
86
|
+
*
|
|
87
|
+
* @returns An iterator over the items.
|
|
88
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/[Symbol.iterator]
|
|
89
|
+
*/
|
|
27
90
|
[Symbol.iterator](): Iterator<T, void>;
|
|
28
91
|
}
|
package/store/ArrayStore.js
CHANGED
|
@@ -1,6 +1,18 @@
|
|
|
1
1
|
import { getFirst, getLast, omitArrayItems, requireArray, requireFirst, requireLast, toggleArrayItems, withArrayItems, } from "../util/array.js";
|
|
2
2
|
import { BusyStore } from "./BusyStore.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Store an immutable array of items, with helpers to read and mutate its contents.
|
|
5
|
+
* - Accepts any `PossibleArray<T>` as input and normalises it to an `ImmutableArray<T>`.
|
|
6
|
+
* - Mutations (`add()`, `delete()`, `toggle()`) replace the stored array with an immutable updated copy.
|
|
7
|
+
* - Iterable, so you can `for (const item of store)`.
|
|
8
|
+
*
|
|
9
|
+
* @param value The initial array value (defaults to an empty array).
|
|
10
|
+
* @example
|
|
11
|
+
* const store = new ArrayStore([1, 2, 3]);
|
|
12
|
+
* store.add(4); // [1, 2, 3, 4]
|
|
13
|
+
* store.first; // 1
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore
|
|
15
|
+
*/
|
|
4
16
|
export class ArrayStore extends BusyStore {
|
|
5
17
|
// Override to set default value to `[]` and convert possible arrays.
|
|
6
18
|
constructor(value = []) {
|
|
@@ -10,43 +22,94 @@ export class ArrayStore extends BusyStore {
|
|
|
10
22
|
_convert(input, caller) {
|
|
11
23
|
return requireArray(input, undefined, undefined, caller);
|
|
12
24
|
}
|
|
13
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Get the first item in this store, or `undefined` if it has no items.
|
|
27
|
+
*
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/optionalFirst
|
|
29
|
+
*/
|
|
14
30
|
get optionalFirst() {
|
|
15
31
|
return getFirst(this.value);
|
|
16
32
|
}
|
|
17
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Get the last item in this store, or `undefined` if it has no items.
|
|
35
|
+
*
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/optionalLast
|
|
37
|
+
*/
|
|
18
38
|
get optionalLast() {
|
|
19
39
|
return getLast(this.value);
|
|
20
40
|
}
|
|
21
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Get the first item in this store, or throw `RequiredError` if it has no items.
|
|
43
|
+
*
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/first
|
|
45
|
+
*/
|
|
22
46
|
get first() {
|
|
23
47
|
return requireFirst(this.value);
|
|
24
48
|
}
|
|
25
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Get the last item in this store, or throw `RequiredError` if it has no items.
|
|
51
|
+
*
|
|
52
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/last
|
|
53
|
+
*/
|
|
26
54
|
get last() {
|
|
27
55
|
return requireLast(this.value);
|
|
28
56
|
}
|
|
29
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Whether this store has at least one item.
|
|
59
|
+
*
|
|
60
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/exists
|
|
61
|
+
*/
|
|
30
62
|
get exists() {
|
|
31
63
|
return !!this.value.length;
|
|
32
64
|
}
|
|
33
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Get the number of items in the current value of this store.
|
|
67
|
+
*
|
|
68
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/count
|
|
69
|
+
*/
|
|
34
70
|
get count() {
|
|
35
71
|
return this.value.length;
|
|
36
72
|
}
|
|
37
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Add one or more items to this array.
|
|
75
|
+
* - Duplicate items (already present in the array) are skipped.
|
|
76
|
+
*
|
|
77
|
+
* @param items The items to add.
|
|
78
|
+
* @returns Nothing.
|
|
79
|
+
* @example store.add(4, 5);
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/add
|
|
81
|
+
*/
|
|
38
82
|
add(...items) {
|
|
39
83
|
this.value = withArrayItems(this.value, ...items);
|
|
40
84
|
}
|
|
41
|
-
/**
|
|
85
|
+
/**
|
|
86
|
+
* Remove one or more items from this array.
|
|
87
|
+
*
|
|
88
|
+
* @param items The items to remove.
|
|
89
|
+
* @returns Nothing.
|
|
90
|
+
* @example store.delete(2, 3);
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/delete
|
|
92
|
+
*/
|
|
42
93
|
delete(...items) {
|
|
43
94
|
this.value = omitArrayItems(this.value, ...items);
|
|
44
95
|
}
|
|
45
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Toggle one or more items in this array (add if absent, remove if present).
|
|
98
|
+
*
|
|
99
|
+
* @param items The items to toggle.
|
|
100
|
+
* @returns Nothing.
|
|
101
|
+
* @example store.toggle(1, 4);
|
|
102
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/toggle
|
|
103
|
+
*/
|
|
46
104
|
toggle(...items) {
|
|
47
105
|
this.value = toggleArrayItems(this.value, ...items);
|
|
48
106
|
}
|
|
49
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Iterate over the items in this store's current array.
|
|
109
|
+
*
|
|
110
|
+
* @returns An iterator over the items.
|
|
111
|
+
* @see https://dhoulb.github.io/shelving/store/ArrayStore/ArrayStore/[Symbol.iterator]
|
|
112
|
+
*/
|
|
50
113
|
[Symbol.iterator]() {
|
|
51
114
|
return this.value.values();
|
|
52
115
|
}
|
package/store/BooleanStore.d.ts
CHANGED
|
@@ -1,9 +1,26 @@
|
|
|
1
1
|
import { Store } from "./Store.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Store a boolean value.
|
|
4
|
+
* - Any input is coerced to a boolean via `!!input`, so truthy/falsy values are accepted.
|
|
5
|
+
* - Defaults to `false`.
|
|
6
|
+
*
|
|
7
|
+
* @param value The initial boolean value (defaults to `false`).
|
|
8
|
+
* @example
|
|
9
|
+
* const store = new BooleanStore();
|
|
10
|
+
* store.value = 1; // true (coerced)
|
|
11
|
+
* store.toggle(); // now false
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/store/BooleanStore/BooleanStore
|
|
13
|
+
*/
|
|
3
14
|
export declare class BooleanStore extends Store<boolean, unknown> {
|
|
4
15
|
constructor(value?: boolean);
|
|
5
16
|
protected _convert(input: unknown): boolean;
|
|
6
17
|
protected _equal(a: boolean, b: boolean): boolean;
|
|
7
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Toggle the current boolean value.
|
|
20
|
+
*
|
|
21
|
+
* @returns Nothing.
|
|
22
|
+
* @example store.toggle(); // `true` becomes `false`, `false` becomes `true`
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/store/BooleanStore/BooleanStore/toggle
|
|
24
|
+
*/
|
|
8
25
|
toggle(): void;
|
|
9
26
|
}
|
package/store/BooleanStore.js
CHANGED
|
@@ -1,5 +1,16 @@
|
|
|
1
1
|
import { Store } from "./Store.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Store a boolean value.
|
|
4
|
+
* - Any input is coerced to a boolean via `!!input`, so truthy/falsy values are accepted.
|
|
5
|
+
* - Defaults to `false`.
|
|
6
|
+
*
|
|
7
|
+
* @param value The initial boolean value (defaults to `false`).
|
|
8
|
+
* @example
|
|
9
|
+
* const store = new BooleanStore();
|
|
10
|
+
* store.value = 1; // true (coerced)
|
|
11
|
+
* store.toggle(); // now false
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/store/BooleanStore/BooleanStore
|
|
13
|
+
*/
|
|
3
14
|
export class BooleanStore extends Store {
|
|
4
15
|
// Override to set default value to `false`
|
|
5
16
|
constructor(value = false) {
|
|
@@ -13,7 +24,13 @@ export class BooleanStore extends Store {
|
|
|
13
24
|
_equal(a, b) {
|
|
14
25
|
return a === b;
|
|
15
26
|
}
|
|
16
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Toggle the current boolean value.
|
|
29
|
+
*
|
|
30
|
+
* @returns Nothing.
|
|
31
|
+
* @example store.toggle(); // `true` becomes `false`, `false` becomes `true`
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/store/BooleanStore/BooleanStore/toggle
|
|
33
|
+
*/
|
|
17
34
|
toggle() {
|
|
18
35
|
this.value = !this.value;
|
|
19
36
|
}
|
package/store/BusyStore.d.ts
CHANGED
|
@@ -2,9 +2,21 @@ import { BooleanStore } from "./BooleanStore.js";
|
|
|
2
2
|
import { Store, type StoreInput } from "./Store.js";
|
|
3
3
|
/**
|
|
4
4
|
* Store that tracks its busy status via a separate `this.busy` store.
|
|
5
|
-
* - "busy" means the store is awaiting a new value.
|
|
5
|
+
* - "busy" means the store is awaiting a new (async) value.
|
|
6
|
+
* - `this.busy` becomes `true` when `await()` starts and `false` when `abort()` is called (which also happens whenever a value or `reason` is set).
|
|
7
|
+
*
|
|
8
|
+
* @example
|
|
9
|
+
* const store = new BusyStore(123);
|
|
10
|
+
* store.value = fetchValue();
|
|
11
|
+
* store.busy.value; // true while the promise is pending
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/store/BusyStore/BusyStore
|
|
6
13
|
*/
|
|
7
14
|
export declare class BusyStore<T, TT = T> extends Store<T, TT> {
|
|
15
|
+
/**
|
|
16
|
+
* Boolean store that is `true` while this store is awaiting a new value.
|
|
17
|
+
*
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/store/BusyStore/BusyStore/busy
|
|
19
|
+
*/
|
|
8
20
|
readonly busy: BooleanStore;
|
|
9
21
|
await(pending: PromiseLike<StoreInput<TT>>): Promise<boolean>;
|
|
10
22
|
abort(): void;
|
package/store/BusyStore.js
CHANGED
|
@@ -3,9 +3,21 @@ import { BooleanStore } from "./BooleanStore.js";
|
|
|
3
3
|
import { Store } from "./Store.js";
|
|
4
4
|
/**
|
|
5
5
|
* Store that tracks its busy status via a separate `this.busy` store.
|
|
6
|
-
* - "busy" means the store is awaiting a new value.
|
|
6
|
+
* - "busy" means the store is awaiting a new (async) value.
|
|
7
|
+
* - `this.busy` becomes `true` when `await()` starts and `false` when `abort()` is called (which also happens whenever a value or `reason` is set).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const store = new BusyStore(123);
|
|
11
|
+
* store.value = fetchValue();
|
|
12
|
+
* store.busy.value; // true while the promise is pending
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/store/BusyStore/BusyStore
|
|
7
14
|
*/
|
|
8
15
|
export class BusyStore extends Store {
|
|
16
|
+
/**
|
|
17
|
+
* Boolean store that is `true` while this store is awaiting a new value.
|
|
18
|
+
*
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/store/BusyStore/BusyStore/busy
|
|
20
|
+
*/
|
|
9
21
|
busy = new BooleanStore(false);
|
|
10
22
|
// Overload to set `this.busy` to `true` when we start awaiting a value.
|
|
11
23
|
// Gets set back to `false` when `abort()` is called (this also happens whenever a value or reason is set).
|
package/store/DataStore.d.ts
CHANGED
|
@@ -2,35 +2,138 @@ import type { Data, DataKey } from "../util/data.js";
|
|
|
2
2
|
import type { AnyCaller } from "../util/function.js";
|
|
3
3
|
import type { Updates } from "../util/update.js";
|
|
4
4
|
import { BusyStore } from "./BusyStore.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Store a data object, with helpers to read and update individual props.
|
|
7
|
+
* - `update()`, `set()` replace the stored object with an immutable updated copy.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const store = new DataStore({ name: "Dave", age: 40 });
|
|
11
|
+
* store.set("age", 41);
|
|
12
|
+
* store.get("name"); // "Dave"
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore
|
|
14
|
+
*/
|
|
6
15
|
export declare class DataStore<T extends Data> extends BusyStore<T> {
|
|
7
|
-
/**
|
|
16
|
+
/**
|
|
17
|
+
* Get the current data of this store.
|
|
18
|
+
* - Supports suspense-like reads: throws a `Promise` while loading or the error `reason` on failure (inherited from `Store.value`).
|
|
19
|
+
*
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/data
|
|
21
|
+
*/
|
|
8
22
|
get data(): T;
|
|
9
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Set the data of this store.
|
|
25
|
+
*
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/data
|
|
27
|
+
*/
|
|
10
28
|
set data(data: T);
|
|
11
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Update several props in this data.
|
|
31
|
+
*
|
|
32
|
+
* @param updates The set of prop updates to apply.
|
|
33
|
+
* @returns Nothing.
|
|
34
|
+
* @example store.update({ age: 41, "name": "Dave" });
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/update
|
|
36
|
+
*/
|
|
12
37
|
update(updates: Updates<T>): void;
|
|
13
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Get a single named prop from this data.
|
|
40
|
+
*
|
|
41
|
+
* @param name The name of the prop to read.
|
|
42
|
+
* @returns The current value of the named prop.
|
|
43
|
+
* @example store.get("name"); // "Dave"
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/get
|
|
45
|
+
*/
|
|
14
46
|
get<K extends DataKey<T>>(name: K): T[K];
|
|
15
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Set a single named prop in this data.
|
|
49
|
+
*
|
|
50
|
+
* @param name The name of the prop to set.
|
|
51
|
+
* @param value The new value for the prop.
|
|
52
|
+
* @returns Nothing.
|
|
53
|
+
* @example store.set("age", 41);
|
|
54
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/DataStore/set
|
|
55
|
+
*/
|
|
16
56
|
set<K extends DataKey<T>>(name: K, value: T[K]): void;
|
|
17
57
|
}
|
|
18
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Store a data object that may be `undefined` (e.g. a document that may not exist).
|
|
60
|
+
* - Reading `data` or calling `require()` throws `RequiredError` when the value is `undefined`.
|
|
61
|
+
* - `delete()` sets the value back to `undefined`.
|
|
62
|
+
*
|
|
63
|
+
* @example
|
|
64
|
+
* const store = new OptionalDataStore<{ name: string }>(undefined);
|
|
65
|
+
* store.exists; // false
|
|
66
|
+
* store.data = { name: "Dave" };
|
|
67
|
+
* store.delete(); // back to undefined
|
|
68
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore
|
|
69
|
+
*/
|
|
19
70
|
export declare class OptionalDataStore<T extends Data> extends BusyStore<T | undefined> {
|
|
20
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* Get the current data of this store, or throw if it is not set.
|
|
73
|
+
* - Supports suspense-like reads: throws a `Promise` while loading or the error `reason` on failure (inherited from `Store.value`).
|
|
74
|
+
*
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/data
|
|
76
|
+
*/
|
|
21
77
|
get data(): T;
|
|
22
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* Set the data of this store.
|
|
80
|
+
*
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/data
|
|
82
|
+
*/
|
|
23
83
|
set data(data: T);
|
|
24
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Whether the data currently exists (is not `undefined`).
|
|
86
|
+
*
|
|
87
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/exists
|
|
88
|
+
*/
|
|
25
89
|
get exists(): boolean;
|
|
26
|
-
/**
|
|
90
|
+
/**
|
|
91
|
+
* Require the data of this store, or throw `RequiredError` if it is not set.
|
|
92
|
+
*
|
|
93
|
+
* @param caller The function to attribute a thrown `RequiredError` to (defaults to `this.require`).
|
|
94
|
+
* @returns The current data.
|
|
95
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
96
|
+
* @example store.require(); // throws if no data is set
|
|
97
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/require
|
|
98
|
+
*/
|
|
27
99
|
require(caller?: AnyCaller): T;
|
|
28
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* Update several props in this data.
|
|
102
|
+
*
|
|
103
|
+
* @param updates The set of prop updates to apply.
|
|
104
|
+
* @returns Nothing.
|
|
105
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
106
|
+
* @example store.update({ name: "Dave" });
|
|
107
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/update
|
|
108
|
+
*/
|
|
29
109
|
update(updates: Updates<T>): void;
|
|
30
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* Get a single named prop from this data.
|
|
112
|
+
*
|
|
113
|
+
* @param name The name of the prop to read.
|
|
114
|
+
* @returns The current value of the named prop.
|
|
115
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
116
|
+
* @example store.get("name");
|
|
117
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/get
|
|
118
|
+
*/
|
|
31
119
|
get<K extends DataKey<T>>(name: K): T[K];
|
|
32
|
-
/**
|
|
120
|
+
/**
|
|
121
|
+
* Set a single named prop in this data.
|
|
122
|
+
*
|
|
123
|
+
* @param name The name of the prop to set.
|
|
124
|
+
* @param value The new value for the prop.
|
|
125
|
+
* @returns Nothing.
|
|
126
|
+
* @throws {RequiredError} If the data is `undefined`.
|
|
127
|
+
* @example store.set("name", "Dave");
|
|
128
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/set
|
|
129
|
+
*/
|
|
33
130
|
set<K extends DataKey<T>>(name: K, value: T[K]): void;
|
|
34
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* Set the data to `undefined`.
|
|
133
|
+
*
|
|
134
|
+
* @returns Nothing.
|
|
135
|
+
* @example store.delete();
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/store/DataStore/OptionalDataStore/delete
|
|
137
|
+
*/
|
|
35
138
|
delete(): void;
|
|
36
139
|
}
|