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/util/array.js
CHANGED
|
@@ -10,7 +10,17 @@ export function assertArray(value, min, max, caller = assertArray) {
|
|
|
10
10
|
caller,
|
|
11
11
|
});
|
|
12
12
|
}
|
|
13
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Convert a possible array to an array.
|
|
15
|
+
*
|
|
16
|
+
* @param list The value to convert (an array is returned as-is, an iterable is collected into a new array).
|
|
17
|
+
* @returns An array of the items, or `undefined` if `list` could not be converted.
|
|
18
|
+
*
|
|
19
|
+
* @example getArray(new Set([1, 2])); // [1, 2]
|
|
20
|
+
* @example getArray(123); // undefined
|
|
21
|
+
*
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/util/array/getArray
|
|
23
|
+
*/
|
|
14
24
|
export function getArray(list) {
|
|
15
25
|
return Array.isArray(list) ? list : isIterable(list) ? Array.from(list) : undefined;
|
|
16
26
|
}
|
|
@@ -19,7 +29,18 @@ export function requireArray(list, min, max, caller = requireArray) {
|
|
|
19
29
|
assertArray(arr, min, max, caller);
|
|
20
30
|
return arr;
|
|
21
31
|
}
|
|
22
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Is an unknown value an item in a specified array or iterable?
|
|
34
|
+
*
|
|
35
|
+
* @param list The array or iterable to search.
|
|
36
|
+
* @param item The value to look for.
|
|
37
|
+
* @returns `true` if `item` exists in `list`, narrowing its type.
|
|
38
|
+
*
|
|
39
|
+
* @example isArrayItem([1, 2, 3], 2); // true
|
|
40
|
+
* @example isArrayItem([1, 2, 3], 9); // false
|
|
41
|
+
*
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/util/array/isArrayItem
|
|
43
|
+
*/
|
|
23
44
|
export function isArrayItem(list, item) {
|
|
24
45
|
if (isArray(list))
|
|
25
46
|
list.includes(item);
|
|
@@ -28,12 +49,34 @@ export function isArrayItem(list, item) {
|
|
|
28
49
|
return true;
|
|
29
50
|
return false;
|
|
30
51
|
}
|
|
31
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Assert that an unknown value is an item in a specified array.
|
|
54
|
+
*
|
|
55
|
+
* @param arr The array or iterable to search.
|
|
56
|
+
* @param item The value to look for.
|
|
57
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertArrayItem` itself).
|
|
58
|
+
* @throws {RequiredError} If `item` does not exist in `arr`.
|
|
59
|
+
*
|
|
60
|
+
* @example assertArrayItem([1, 2, 3], 2); // (passes)
|
|
61
|
+
* @example assertArrayItem([1, 2, 3], 9); // throws RequiredError
|
|
62
|
+
*
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/util/array/assertArrayItem
|
|
64
|
+
*/
|
|
32
65
|
export function assertArrayItem(arr, item, caller = assertArrayItem) {
|
|
33
66
|
if (!isArrayItem(arr, item))
|
|
34
67
|
throw new RequiredError("Item must exist in array", { item, array: arr, caller });
|
|
35
68
|
}
|
|
36
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Add multiple items to an array (immutably) and return a new array with those items (or the same array if no changes were made).
|
|
71
|
+
*
|
|
72
|
+
* @param list The array or iterable to add to.
|
|
73
|
+
* @param add The items to add (items already present are skipped).
|
|
74
|
+
* @returns A new array including the added items, or the same array if nothing changed.
|
|
75
|
+
*
|
|
76
|
+
* @example withArrayItems([1, 2], 2, 3); // [1, 2, 3]
|
|
77
|
+
*
|
|
78
|
+
* @see https://dhoulb.github.io/shelving/util/array/withArrayItems
|
|
79
|
+
*/
|
|
37
80
|
export function withArrayItems(list, ...add) {
|
|
38
81
|
const arr = Array.from(list);
|
|
39
82
|
const extras = add.filter(_doesNotInclude, arr);
|
|
@@ -42,32 +85,111 @@ export function withArrayItems(list, ...add) {
|
|
|
42
85
|
function _doesNotInclude(value) {
|
|
43
86
|
return !this.includes(value);
|
|
44
87
|
}
|
|
45
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Add an item to an array (immutably) and return a new array with that item (or the same array if no changes were made).
|
|
90
|
+
*
|
|
91
|
+
* @param items The array or iterable to add to.
|
|
92
|
+
* @param add The item to add (skipped if already present).
|
|
93
|
+
* @returns A new array including the added item, or the same array if nothing changed.
|
|
94
|
+
*
|
|
95
|
+
* @example withArrayItem([1, 2], 3); // [1, 2, 3]
|
|
96
|
+
*
|
|
97
|
+
* @see https://dhoulb.github.io/shelving/util/array/withArrayItem
|
|
98
|
+
*/
|
|
46
99
|
export const withArrayItem = withArrayItems;
|
|
47
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* Pick multiple items from an array (immutably) and return a new array with those items (or the same array if no changes were made).
|
|
102
|
+
*
|
|
103
|
+
* @param items The array or iterable to pick from.
|
|
104
|
+
* @param pick The items to keep.
|
|
105
|
+
* @returns A new array containing only the picked items, or the same array if nothing changed.
|
|
106
|
+
*
|
|
107
|
+
* @example pickArrayItems([1, 2, 3], 1, 3); // [1, 3]
|
|
108
|
+
*
|
|
109
|
+
* @see https://dhoulb.github.io/shelving/util/array/pickArrayItems
|
|
110
|
+
*/
|
|
48
111
|
export function pickArrayItems(items, ...pick) {
|
|
49
112
|
const arr = Array.from(pickItems(items, ...pick));
|
|
50
113
|
return isArray(items) && arr.length === items.length ? items : arr;
|
|
51
114
|
}
|
|
52
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Pick an item from an array (immutably) and return a new array with that item (or the same array if no changes were made).
|
|
117
|
+
*
|
|
118
|
+
* @param items The array or iterable to pick from.
|
|
119
|
+
* @param pick The item to keep.
|
|
120
|
+
* @returns A new array containing only the picked item, or the same array if nothing changed.
|
|
121
|
+
*
|
|
122
|
+
* @example pickArrayItem([1, 2, 3], 2); // [2]
|
|
123
|
+
*
|
|
124
|
+
* @see https://dhoulb.github.io/shelving/util/array/pickArrayItem
|
|
125
|
+
*/
|
|
53
126
|
export const pickArrayItem = pickArrayItems;
|
|
54
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Remove multiple items from an array (immutably) and return a new array without those items (or the same array if no changes were made).
|
|
129
|
+
*
|
|
130
|
+
* @param items The array or iterable to remove from.
|
|
131
|
+
* @param omit The items to remove.
|
|
132
|
+
* @returns A new array without the omitted items, or the same array if nothing changed.
|
|
133
|
+
*
|
|
134
|
+
* @example omitArrayItems([1, 2, 3], 2); // [1, 3]
|
|
135
|
+
*
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/util/array/omitArrayItems
|
|
137
|
+
*/
|
|
55
138
|
export function omitArrayItems(items, ...omit) {
|
|
56
139
|
const filtered = Array.from(omitItems(items, ...omit));
|
|
57
140
|
return isArray(items) && filtered.length === items.length ? items : filtered;
|
|
58
141
|
}
|
|
59
|
-
/**
|
|
142
|
+
/**
|
|
143
|
+
* Remove an item from an array (immutably) and return a new array without that item (or the same array if no changes were made).
|
|
144
|
+
*
|
|
145
|
+
* @param items The array or iterable to remove from.
|
|
146
|
+
* @param omit The item to remove.
|
|
147
|
+
* @returns A new array without the omitted item, or the same array if nothing changed.
|
|
148
|
+
*
|
|
149
|
+
* @example omitArrayItem([1, 2, 3], 2); // [1, 3]
|
|
150
|
+
*
|
|
151
|
+
* @see https://dhoulb.github.io/shelving/util/array/omitArrayItem
|
|
152
|
+
*/
|
|
60
153
|
export const omitArrayItem = omitArrayItems;
|
|
61
|
-
/**
|
|
154
|
+
/**
|
|
155
|
+
* Toggle an item in and out of an array (immutably) and return a new array with or without the specified items (or the same array if no changes were made).
|
|
156
|
+
*
|
|
157
|
+
* @param items The array or iterable to toggle within.
|
|
158
|
+
* @param toggle The items to toggle (added if absent, removed if present).
|
|
159
|
+
* @returns A new array with the items toggled, or the same array if nothing changed.
|
|
160
|
+
*
|
|
161
|
+
* @example toggleArrayItems([1, 2], 2, 3); // [1, 3]
|
|
162
|
+
*
|
|
163
|
+
* @see https://dhoulb.github.io/shelving/util/array/toggleArrayItems
|
|
164
|
+
*/
|
|
62
165
|
export function toggleArrayItems(items, ...toggle) {
|
|
63
166
|
const arr = Array.from(items);
|
|
64
167
|
const extras = toggle.filter(_doesNotInclude, arr);
|
|
65
168
|
const filtered = arr.filter(_doesNotInclude, toggle);
|
|
66
169
|
return extras.length ? [...filtered, ...extras] : filtered.length !== arr.length ? filtered : isArray(items) ? items : arr;
|
|
67
170
|
}
|
|
68
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* Toggle an item in and out of an array (immutably) and return a new array with or without the specified item (or the same array if no changes were made).
|
|
173
|
+
*
|
|
174
|
+
* @param items The array or iterable to toggle within.
|
|
175
|
+
* @param toggle The item to toggle (added if absent, removed if present).
|
|
176
|
+
* @returns A new array with the item toggled, or the same array if nothing changed.
|
|
177
|
+
*
|
|
178
|
+
* @example toggleArrayItem([1, 2], 2); // [1]
|
|
179
|
+
*
|
|
180
|
+
* @see https://dhoulb.github.io/shelving/util/array/toggleArrayItem
|
|
181
|
+
*/
|
|
69
182
|
export const toggleArrayItem = toggleArrayItems;
|
|
70
|
-
/**
|
|
183
|
+
/**
|
|
184
|
+
* Return a shuffled version of an array or iterable.
|
|
185
|
+
*
|
|
186
|
+
* @param items The array or iterable to shuffle.
|
|
187
|
+
* @returns A new array containing the same items in random order.
|
|
188
|
+
*
|
|
189
|
+
* @example shuffleArray([1, 2, 3]); // e.g. [2, 3, 1]
|
|
190
|
+
*
|
|
191
|
+
* @see https://dhoulb.github.io/shelving/util/array/shuffleArray
|
|
192
|
+
*/
|
|
71
193
|
export function shuffleArray(items) {
|
|
72
194
|
const arr = Array.from(items);
|
|
73
195
|
for (let i = arr.length - 1; i > 0; i--) {
|
|
@@ -79,6 +201,14 @@ export function shuffleArray(items) {
|
|
|
79
201
|
/**
|
|
80
202
|
* Add an item to an array (by reference) and return the item.
|
|
81
203
|
* - Skip items that already exist.
|
|
204
|
+
*
|
|
205
|
+
* @param arr The array to add to (modified in place).
|
|
206
|
+
* @param item The item to add.
|
|
207
|
+
* @returns The added `item`.
|
|
208
|
+
*
|
|
209
|
+
* @example addArrayItem(arr, 3); // 3 (and `arr` now contains `3`)
|
|
210
|
+
*
|
|
211
|
+
* @see https://dhoulb.github.io/shelving/util/array/addArrayItem
|
|
82
212
|
*/
|
|
83
213
|
export function addArrayItem(arr, item) {
|
|
84
214
|
if (arr.indexOf(item) < 0)
|
|
@@ -88,21 +218,47 @@ export function addArrayItem(arr, item) {
|
|
|
88
218
|
/**
|
|
89
219
|
* Add multiple items to an array (by reference).
|
|
90
220
|
* - Skip items that already exist.
|
|
221
|
+
*
|
|
222
|
+
* @param arr The array to add to (modified in place).
|
|
223
|
+
* @param items The items to add.
|
|
224
|
+
* @example addArrayItems(arr, 3, 4); // (`arr` now contains `3` and `4`)
|
|
225
|
+
* @see https://dhoulb.github.io/shelving/util/array/addArrayItems
|
|
91
226
|
*/
|
|
92
227
|
export function addArrayItems(arr, ...items) {
|
|
93
228
|
for (const item of items)
|
|
94
229
|
if (arr.indexOf(item) < 0)
|
|
95
230
|
arr.push(item);
|
|
96
231
|
}
|
|
97
|
-
/**
|
|
232
|
+
/**
|
|
233
|
+
* Remove multiple items from an array (by reference).
|
|
234
|
+
*
|
|
235
|
+
* @param arr The array to remove from (modified in place).
|
|
236
|
+
* @param items The items to remove.
|
|
237
|
+
* @example deleteArrayItems(arr, 2, 3); // (`arr` no longer contains `2` or `3`)
|
|
238
|
+
* @see https://dhoulb.github.io/shelving/util/array/deleteArrayItems
|
|
239
|
+
*/
|
|
98
240
|
export function deleteArrayItems(arr, ...items) {
|
|
99
241
|
for (let i = arr.length - 1; i >= 0; i--)
|
|
100
242
|
if (i in arr && items.includes(arr[i]))
|
|
101
243
|
arr.splice(i, 1);
|
|
102
244
|
}
|
|
103
|
-
/**
|
|
245
|
+
/**
|
|
246
|
+
* Remove an item from an array (by reference).
|
|
247
|
+
*
|
|
248
|
+
* @param arr The array to remove from (modified in place).
|
|
249
|
+
* @param item The item to remove.
|
|
250
|
+
* @example deleteArrayItem(arr, 2); // (`arr` no longer contains `2`)
|
|
251
|
+
* @see https://dhoulb.github.io/shelving/util/array/deleteArrayItem
|
|
252
|
+
*/
|
|
104
253
|
export const deleteArrayItem = deleteArrayItems;
|
|
105
|
-
/**
|
|
254
|
+
/**
|
|
255
|
+
* Return an array of the unique items in an array.
|
|
256
|
+
*
|
|
257
|
+
* @param list The array or iterable to deduplicate.
|
|
258
|
+
* @returns A new array with duplicate items removed, or the same array if all items were already unique.
|
|
259
|
+
* @example getUniqueArray([1, 2, 2, 3]) // [1, 2, 3]
|
|
260
|
+
* @see https://dhoulb.github.io/shelving/util/array/getUniqueArray
|
|
261
|
+
*/
|
|
106
262
|
export function getUniqueArray(list) {
|
|
107
263
|
const output = [];
|
|
108
264
|
for (const item of list)
|
|
@@ -110,12 +266,28 @@ export function getUniqueArray(list) {
|
|
|
110
266
|
output.push(item);
|
|
111
267
|
return isArray(list) && list.length === output.length ? list : output;
|
|
112
268
|
}
|
|
113
|
-
/**
|
|
269
|
+
/**
|
|
270
|
+
* Apply a limit to an array.
|
|
271
|
+
*
|
|
272
|
+
* @param list The array or iterable to limit.
|
|
273
|
+
* @param limit The maximum number of items to keep.
|
|
274
|
+
* @returns An array of at most `limit` items, or the same array if it was already within the limit.
|
|
275
|
+
* @throws {RequiredError} If `list` cannot be converted to an array.
|
|
276
|
+
* @example limitArray([1, 2, 3, 4], 2) // [1, 2]
|
|
277
|
+
* @see https://dhoulb.github.io/shelving/util/array/limitArray
|
|
278
|
+
*/
|
|
114
279
|
export function limitArray(list, limit) {
|
|
115
280
|
const arr = requireArray(list, undefined, undefined, limitArray);
|
|
116
281
|
return limit > arr.length ? arr : arr.slice(0, limit);
|
|
117
282
|
}
|
|
118
|
-
/**
|
|
283
|
+
/**
|
|
284
|
+
* Count the items in an array.
|
|
285
|
+
*
|
|
286
|
+
* @param arr The array to count.
|
|
287
|
+
* @returns The number of items in `arr`.
|
|
288
|
+
* @example countArray([1, 2, 3]) // 3
|
|
289
|
+
* @see https://dhoulb.github.io/shelving/util/array/countArray
|
|
290
|
+
*/
|
|
119
291
|
export function countArray(arr) {
|
|
120
292
|
return arr.length;
|
|
121
293
|
}
|
|
@@ -124,32 +296,72 @@ export function interleaveArray(items, separator) {
|
|
|
124
296
|
return items; // Return same empty array if empty or only one item.
|
|
125
297
|
return Array.from(interleaveItems(items, separator));
|
|
126
298
|
}
|
|
127
|
-
/**
|
|
299
|
+
/**
|
|
300
|
+
* Return a new array with a new value replacing a specific index in the array (or the same array if the value was unchanged).
|
|
301
|
+
*
|
|
302
|
+
* @param arr The array to update.
|
|
303
|
+
* @param index The index to replace.
|
|
304
|
+
* @param value The new value to set at `index`.
|
|
305
|
+
* @returns A new array with `value` at `index`, or the same array if the value was unchanged.
|
|
306
|
+
* @example withArrayIndex([1, 2, 3], 1, 9) // [1, 9, 3]
|
|
307
|
+
* @see https://dhoulb.github.io/shelving/util/array/withArrayIndex
|
|
308
|
+
*/
|
|
128
309
|
export function withArrayIndex(arr, index, value) {
|
|
129
310
|
if (arr[index] === value)
|
|
130
311
|
return arr;
|
|
131
312
|
return [...arr.slice(0, index), value, ...arr.slice(index + 1)];
|
|
132
313
|
}
|
|
133
|
-
/**
|
|
314
|
+
/**
|
|
315
|
+
* Return a new array without a specific index in the array (or the same array if the value was unchanged).
|
|
316
|
+
*
|
|
317
|
+
* @param arr The array to update.
|
|
318
|
+
* @param index The index to remove.
|
|
319
|
+
* @returns A new array without `index`, or the same array if nothing changed.
|
|
320
|
+
* @example omitArrayIndex([1, 2, 3], 1) // [1, 3]
|
|
321
|
+
* @see https://dhoulb.github.io/shelving/util/array/omitArrayIndex
|
|
322
|
+
*/
|
|
134
323
|
export function omitArrayIndex(arr, index) {
|
|
135
324
|
const output = [...arr.slice(0, index), ...arr.slice(index + 1)];
|
|
136
325
|
return arr.length !== output.length ? output : arr;
|
|
137
326
|
}
|
|
138
|
-
/**
|
|
327
|
+
/**
|
|
328
|
+
* Get the first item from an array or iterable, or `undefined` if it didn't exist.
|
|
329
|
+
*
|
|
330
|
+
* @param items The array or iterable to read from.
|
|
331
|
+
* @returns The first item, or `undefined` if `items` is empty.
|
|
332
|
+
* @example getFirst([1, 2, 3]) // 1
|
|
333
|
+
* @see https://dhoulb.github.io/shelving/util/array/getFirst
|
|
334
|
+
*/
|
|
139
335
|
export function getFirst(items) {
|
|
140
336
|
if (isArray(items))
|
|
141
337
|
return items[0];
|
|
142
338
|
for (const i of items)
|
|
143
339
|
return i;
|
|
144
340
|
}
|
|
145
|
-
/**
|
|
341
|
+
/**
|
|
342
|
+
* Get the first item from an array or iterable.
|
|
343
|
+
*
|
|
344
|
+
* @param items The array or iterable to read from.
|
|
345
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireFirst` itself).
|
|
346
|
+
* @returns The first item.
|
|
347
|
+
* @throws {RequiredError} If `items` is empty.
|
|
348
|
+
* @example requireFirst([1, 2, 3]) // 1
|
|
349
|
+
* @see https://dhoulb.github.io/shelving/util/array/requireFirst
|
|
350
|
+
*/
|
|
146
351
|
export function requireFirst(items, caller = requireFirst) {
|
|
147
352
|
const item = getFirst(items);
|
|
148
353
|
if (item === undefined)
|
|
149
354
|
throw new RequiredError("First item is required", { items: items, caller });
|
|
150
355
|
return item;
|
|
151
356
|
}
|
|
152
|
-
/**
|
|
357
|
+
/**
|
|
358
|
+
* Get the last item from an array or iterable, or `undefined` if it didn't exist.
|
|
359
|
+
*
|
|
360
|
+
* @param items The array or iterable to read from.
|
|
361
|
+
* @returns The last item, or `undefined` if `items` is empty.
|
|
362
|
+
* @example getLast([1, 2, 3]) // 3
|
|
363
|
+
* @see https://dhoulb.github.io/shelving/util/array/getLast
|
|
364
|
+
*/
|
|
153
365
|
export function getLast(items) {
|
|
154
366
|
if (isArray(items))
|
|
155
367
|
return items[items.length - 1];
|
|
@@ -159,14 +371,31 @@ export function getLast(items) {
|
|
|
159
371
|
}
|
|
160
372
|
return last;
|
|
161
373
|
}
|
|
162
|
-
/**
|
|
374
|
+
/**
|
|
375
|
+
* Get the last item from an array or iterable.
|
|
376
|
+
*
|
|
377
|
+
* @param items The array or iterable to read from.
|
|
378
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireLast` itself).
|
|
379
|
+
* @returns The last item.
|
|
380
|
+
* @throws {RequiredError} If `items` is empty.
|
|
381
|
+
* @example requireLast([1, 2, 3]) // 3
|
|
382
|
+
* @see https://dhoulb.github.io/shelving/util/array/requireLast
|
|
383
|
+
*/
|
|
163
384
|
export function requireLast(items, caller = requireLast) {
|
|
164
385
|
const item = getLast(items);
|
|
165
386
|
if (item === undefined)
|
|
166
387
|
throw new RequiredError("Last item is required", { items, caller });
|
|
167
388
|
return item;
|
|
168
389
|
}
|
|
169
|
-
/**
|
|
390
|
+
/**
|
|
391
|
+
* Get the next item in an array or iterable.
|
|
392
|
+
*
|
|
393
|
+
* @param items The array or iterable to search.
|
|
394
|
+
* @param item The item to find the successor of.
|
|
395
|
+
* @returns The item following `item`, or `undefined` if `item` is missing or last.
|
|
396
|
+
* @example getNext([1, 2, 3], 2) // 3
|
|
397
|
+
* @see https://dhoulb.github.io/shelving/util/array/getNext
|
|
398
|
+
*/
|
|
170
399
|
export function getNext(items, item) {
|
|
171
400
|
let found = false;
|
|
172
401
|
for (const i of items) {
|
|
@@ -176,14 +405,32 @@ export function getNext(items, item) {
|
|
|
176
405
|
found = true;
|
|
177
406
|
}
|
|
178
407
|
}
|
|
179
|
-
/**
|
|
408
|
+
/**
|
|
409
|
+
* Get the next item from an array or iterable.
|
|
410
|
+
*
|
|
411
|
+
* @param items The array or iterable to search.
|
|
412
|
+
* @param item The item to find the successor of.
|
|
413
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireNext` itself).
|
|
414
|
+
* @returns The item following `item`.
|
|
415
|
+
* @throws {RequiredError} If `item` is missing or has no successor.
|
|
416
|
+
* @example requireNext([1, 2, 3], 2) // 3
|
|
417
|
+
* @see https://dhoulb.github.io/shelving/util/array/requireNext
|
|
418
|
+
*/
|
|
180
419
|
export function requireNext(items, item, caller = requireNext) {
|
|
181
420
|
const next = getNext(items, item);
|
|
182
421
|
if (next === undefined)
|
|
183
422
|
throw new RequiredError("Next item is required", { item, items, caller });
|
|
184
423
|
return next;
|
|
185
424
|
}
|
|
186
|
-
/**
|
|
425
|
+
/**
|
|
426
|
+
* Get the previous item in an array or iterable.
|
|
427
|
+
*
|
|
428
|
+
* @param items The array or iterable to search.
|
|
429
|
+
* @param value The item to find the predecessor of.
|
|
430
|
+
* @returns The item preceding `value`, or `undefined` if `value` is missing or first.
|
|
431
|
+
* @example getPrev([1, 2, 3], 2) // 1
|
|
432
|
+
* @see https://dhoulb.github.io/shelving/util/array/getPrev
|
|
433
|
+
*/
|
|
187
434
|
export function getPrev(items, value) {
|
|
188
435
|
let last;
|
|
189
436
|
for (const i of items) {
|
|
@@ -192,7 +439,17 @@ export function getPrev(items, value) {
|
|
|
192
439
|
last = i;
|
|
193
440
|
}
|
|
194
441
|
}
|
|
195
|
-
/**
|
|
442
|
+
/**
|
|
443
|
+
* Get the previous item from an array or iterable.
|
|
444
|
+
*
|
|
445
|
+
* @param items The array or iterable to search.
|
|
446
|
+
* @param item The item to find the predecessor of.
|
|
447
|
+
* @param caller Function to attribute a thrown error to (defaults to `requirePrev` itself).
|
|
448
|
+
* @returns The item preceding `item`.
|
|
449
|
+
* @throws {RequiredError} If `item` is missing or has no predecessor.
|
|
450
|
+
* @example requirePrev([1, 2, 3], 2) // 1
|
|
451
|
+
* @see https://dhoulb.github.io/shelving/util/array/requirePrev
|
|
452
|
+
*/
|
|
196
453
|
export function requirePrev(items, item, caller = requirePrev) {
|
|
197
454
|
const prev = getPrev(items, item);
|
|
198
455
|
if (prev === undefined)
|
package/util/async.d.ts
CHANGED
|
@@ -1,22 +1,65 @@
|
|
|
1
1
|
import type { ImmutableArray } from "./array.js";
|
|
2
2
|
import { type ErrorCallback, type ValueCallback } from "./function.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Is a value an asynchronous value implementing a `then()` function.
|
|
5
|
+
*
|
|
6
|
+
* @param value The value to test.
|
|
7
|
+
* @returns `true` if `value` is a `PromiseLike`, narrowing its type.
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/async/isAsync
|
|
9
|
+
*/
|
|
4
10
|
export declare function isAsync<T>(value: PromiseLike<T> | T): value is PromiseLike<T>;
|
|
5
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Is a value a synchronous value.
|
|
13
|
+
*
|
|
14
|
+
* @param value The value to test.
|
|
15
|
+
* @returns `true` if `value` is not a `PromiseLike`, narrowing its type.
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/util/async/notAsync
|
|
17
|
+
*/
|
|
6
18
|
export declare function notAsync<T>(value: PromiseLike<T> | T): value is T;
|
|
7
19
|
/**
|
|
8
20
|
* Throw the value if it's an async (promised) value.
|
|
21
|
+
*
|
|
22
|
+
* @param value The value to unwrap.
|
|
9
23
|
* @returns Synchronous (not promised) value.
|
|
10
24
|
* @throws Promise if value is an asynchronous (promised) value.
|
|
25
|
+
* @example throwAsync(123) // 123
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/util/async/throwAsync
|
|
11
27
|
*/
|
|
12
28
|
export declare function throwAsync<T>(value: PromiseLike<T> | T): T;
|
|
13
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Assert an unknown value is synchronous (i.e. does not have a `.then()` method).
|
|
31
|
+
*
|
|
32
|
+
* @param value The value to assert.
|
|
33
|
+
* @throws {RequiredError} If `value` is a `PromiseLike`.
|
|
34
|
+
* @example assertNotAsync(123); // passes
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/util/async/assertNotAsync
|
|
36
|
+
*/
|
|
14
37
|
export declare function assertNotAsync<T>(value: PromiseLike<T> | T): asserts value is T;
|
|
15
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Assert an unknown value is asynchronous (i.e. has a `.then()` method).
|
|
40
|
+
*
|
|
41
|
+
* @param value The value to assert.
|
|
42
|
+
* @throws {RequiredError} If `value` is not a `PromiseLike`.
|
|
43
|
+
* @example assertAsync(Promise.resolve(1)); // passes
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/util/async/assertAsync
|
|
45
|
+
*/
|
|
16
46
|
export declare function assertAsync<T>(value: PromiseLike<T> | T): asserts value is PromiseLike<T>;
|
|
17
|
-
/**
|
|
47
|
+
/**
|
|
48
|
+
* Assert that an unknown value is a `Promise`.
|
|
49
|
+
*
|
|
50
|
+
* @param value The value to assert.
|
|
51
|
+
* @throws {RequiredError} If `value` is not a `Promise` instance.
|
|
52
|
+
* @example assertPromise(Promise.resolve(1)); // passes
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/util/async/assertPromise
|
|
54
|
+
*/
|
|
18
55
|
export declare function assertPromise<T>(value: Promise<T> | T): asserts value is Promise<T>;
|
|
19
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Run any queued microtasks now.
|
|
58
|
+
*
|
|
59
|
+
* @returns A promise that resolves after all currently-queued microtasks have run.
|
|
60
|
+
* @example await runMicrotasks();
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/util/async/runMicrotasks
|
|
62
|
+
*/
|
|
20
63
|
export declare function runMicrotasks(): Promise<void>;
|
|
21
64
|
/**
|
|
22
65
|
* Get the result of multiple promises concurrently.
|
|
@@ -29,6 +72,8 @@ export declare function runMicrotasks(): Promise<void>;
|
|
|
29
72
|
* @param promises Values (usually async, but not necessarily) that we need to wait for.
|
|
30
73
|
* @returns Array of values of all promises (in the same order/positions as input).
|
|
31
74
|
* @throws {Errors} If one or more promises throws all rejection reasons after resolving all of the promises.
|
|
75
|
+
* @example const [a, b] = await awaitValues(getA(), getB());
|
|
76
|
+
* @see https://dhoulb.github.io/shelving/util/async/awaitValues
|
|
32
77
|
*/
|
|
33
78
|
export declare function awaitValues<T extends ImmutableArray<unknown>>(...promises: T): Promise<{
|
|
34
79
|
readonly [P in keyof T]: Awaited<T[P]>;
|
|
@@ -38,9 +83,19 @@ export declare function awaitValues<T extends ImmutableArray<unknown>>(...promis
|
|
|
38
83
|
*
|
|
39
84
|
* @param promises Values (usually async, but not necessarily) that we need to wait for.
|
|
40
85
|
* @returns Array of rejection reasons of all promises (or empty array if no promises threw).
|
|
86
|
+
* @example const errors = await awaitErrors(getA(), getB());
|
|
87
|
+
* @see https://dhoulb.github.io/shelving/util/async/awaitErrors
|
|
41
88
|
*/
|
|
42
89
|
export declare function awaitErrors(...promises: PromiseLike<unknown>[]): Promise<ImmutableArray<unknown>>;
|
|
43
|
-
/**
|
|
90
|
+
/**
|
|
91
|
+
* `Promise` designed for extending with `._resolve()` and `._reject()` methods that can be accessed by subclasses.
|
|
92
|
+
*
|
|
93
|
+
* @example
|
|
94
|
+
* class MyPromise extends BasePromise<number> {
|
|
95
|
+
* done() { this._resolve(123); }
|
|
96
|
+
* }
|
|
97
|
+
* @see https://dhoulb.github.io/shelving/util/async/BasePromise
|
|
98
|
+
*/
|
|
44
99
|
export declare abstract class BasePromise<T> extends Promise<T> {
|
|
45
100
|
static get [Symbol.species](): PromiseConstructor;
|
|
46
101
|
/** Resolve this promise with a value. */
|
|
@@ -49,7 +104,11 @@ export declare abstract class BasePromise<T> extends Promise<T> {
|
|
|
49
104
|
protected readonly _reject: ErrorCallback;
|
|
50
105
|
constructor();
|
|
51
106
|
}
|
|
52
|
-
/**
|
|
107
|
+
/**
|
|
108
|
+
* Deferred allows you to access the internal resolve/reject callbacks of a `Promise`.
|
|
109
|
+
*
|
|
110
|
+
* @see https://dhoulb.github.io/shelving/util/async/Deferred
|
|
111
|
+
*/
|
|
53
112
|
export type Deferred<T = unknown> = {
|
|
54
113
|
promise: Promise<T>;
|
|
55
114
|
resolve: ValueCallback<T>;
|
|
@@ -58,16 +117,31 @@ export type Deferred<T = unknown> = {
|
|
|
58
117
|
/**
|
|
59
118
|
* Create a deferred to access the `resolve()` and `reject()` functions of a promise.
|
|
60
119
|
* - See https://github.com/tc39/proposal-promise-with-resolvers/
|
|
120
|
+
*
|
|
121
|
+
* @returns A `Deferred` exposing the promise and its `resolve()`/`reject()` functions.
|
|
122
|
+
* @example const { promise, resolve } = createDeferred<number>();
|
|
123
|
+
* @see https://dhoulb.github.io/shelving/util/async/createDeferred
|
|
61
124
|
*/
|
|
62
125
|
export declare function createDeferred<T = void>(): Deferred<T>;
|
|
63
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* Get a promise that automatically resolves after a delay.
|
|
128
|
+
*
|
|
129
|
+
* @param ms The delay in milliseconds before the promise resolves.
|
|
130
|
+
* @returns A promise that resolves with `undefined` after `ms` milliseconds.
|
|
131
|
+
* @example await getDelay(300); // resolves after 300ms
|
|
132
|
+
* @see https://dhoulb.github.io/shelving/util/async/getDelay
|
|
133
|
+
*/
|
|
64
134
|
export declare function getDelay(ms: number): Promise<void>;
|
|
65
135
|
/**
|
|
66
136
|
* Get a promise that rejects with the signal's reason when an `AbortSignal` fires.
|
|
67
137
|
* - Rejects immediately if the signal is already aborted.
|
|
68
138
|
* - Use with `awaitRace()` to cancel a concurrent operation when a signal fires.
|
|
69
139
|
*
|
|
140
|
+
* @param signal The `AbortSignal` to watch.
|
|
141
|
+
* @returns A promise that never resolves and rejects with the signal's reason when it fires.
|
|
142
|
+
* @throws The signal's `reason` when the signal aborts.
|
|
70
143
|
* @example await awaitRace(getDelay(300), awaitAbort(signal));
|
|
144
|
+
* @see https://dhoulb.github.io/shelving/util/async/awaitAbort
|
|
71
145
|
*/
|
|
72
146
|
export declare function awaitAbort(signal: AbortSignal): Promise<never>;
|
|
73
147
|
/**
|
|
@@ -76,6 +150,10 @@ export declare function awaitAbort(signal: AbortSignal): Promise<never>;
|
|
|
76
150
|
* - The losing inputs keep running (Promises cannot be cancelled), but their eventual rejection — if any — is silently absorbed instead of bubbling up as an unhandled rejection.
|
|
77
151
|
* - Built for cancellation/timeout patterns, where the loser's eventual fate is genuinely uninteresting once another arm has settled. Do not use when both arms might surface meaningful errors that the caller should see.
|
|
78
152
|
*
|
|
153
|
+
* @param promises The promises to race against each other.
|
|
154
|
+
* @returns A promise that settles with the first input to settle.
|
|
155
|
+
* @throws The rejection reason of the first input to settle, if it rejects.
|
|
79
156
|
* @example await awaitRace(getDelay(300), awaitAbort(signal)); // delay or abort, no leaked ABORT rejection if delay wins
|
|
157
|
+
* @see https://dhoulb.github.io/shelving/util/async/awaitRace
|
|
80
158
|
*/
|
|
81
159
|
export declare function awaitRace<T>(...promises: Promise<T>[]): Promise<T>;
|