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/async.js
CHANGED
|
@@ -1,40 +1,83 @@
|
|
|
1
1
|
import { Errors } from "../error/Errors.js";
|
|
2
2
|
import { RequiredError } from "../error/RequiredError.js";
|
|
3
3
|
import { BLACKHOLE } from "./function.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Is a value an asynchronous value implementing a `then()` function.
|
|
6
|
+
*
|
|
7
|
+
* @param value The value to test.
|
|
8
|
+
* @returns `true` if `value` is a `PromiseLike`, narrowing its type.
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/util/async/isAsync
|
|
10
|
+
*/
|
|
5
11
|
export function isAsync(value) {
|
|
6
12
|
return typeof value === "object" && value !== null && typeof value.then === "function";
|
|
7
13
|
}
|
|
8
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Is a value a synchronous value.
|
|
16
|
+
*
|
|
17
|
+
* @param value The value to test.
|
|
18
|
+
* @returns `true` if `value` is not a `PromiseLike`, narrowing its type.
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/util/async/notAsync
|
|
20
|
+
*/
|
|
9
21
|
export function notAsync(value) {
|
|
10
22
|
return !isAsync(value);
|
|
11
23
|
}
|
|
12
24
|
/**
|
|
13
25
|
* Throw the value if it's an async (promised) value.
|
|
26
|
+
*
|
|
27
|
+
* @param value The value to unwrap.
|
|
14
28
|
* @returns Synchronous (not promised) value.
|
|
15
29
|
* @throws Promise if value is an asynchronous (promised) value.
|
|
30
|
+
* @example throwAsync(123) // 123
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/util/async/throwAsync
|
|
16
32
|
*/
|
|
17
33
|
export function throwAsync(value) {
|
|
18
34
|
if (isAsync(value))
|
|
19
35
|
throw value;
|
|
20
36
|
return value;
|
|
21
37
|
}
|
|
22
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Assert an unknown value is synchronous (i.e. does not have a `.then()` method).
|
|
40
|
+
*
|
|
41
|
+
* @param value The value to assert.
|
|
42
|
+
* @throws {RequiredError} If `value` is a `PromiseLike`.
|
|
43
|
+
* @example assertNotAsync(123); // passes
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/util/async/assertNotAsync
|
|
45
|
+
*/
|
|
23
46
|
export function assertNotAsync(value) {
|
|
24
47
|
if (isAsync(value))
|
|
25
48
|
throw new RequiredError("Must be synchronous", { received: value, caller: assertNotAsync });
|
|
26
49
|
}
|
|
27
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Assert an unknown value is asynchronous (i.e. has a `.then()` method).
|
|
52
|
+
*
|
|
53
|
+
* @param value The value to assert.
|
|
54
|
+
* @throws {RequiredError} If `value` is not a `PromiseLike`.
|
|
55
|
+
* @example assertAsync(Promise.resolve(1)); // passes
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/util/async/assertAsync
|
|
57
|
+
*/
|
|
28
58
|
export function assertAsync(value) {
|
|
29
59
|
if (!isAsync(value))
|
|
30
60
|
throw new RequiredError("Must be asynchronous", { received: value, caller: assertAsync });
|
|
31
61
|
}
|
|
32
|
-
/**
|
|
62
|
+
/**
|
|
63
|
+
* Assert that an unknown value is a `Promise`.
|
|
64
|
+
*
|
|
65
|
+
* @param value The value to assert.
|
|
66
|
+
* @throws {RequiredError} If `value` is not a `Promise` instance.
|
|
67
|
+
* @example assertPromise(Promise.resolve(1)); // passes
|
|
68
|
+
* @see https://dhoulb.github.io/shelving/util/async/assertPromise
|
|
69
|
+
*/
|
|
33
70
|
export function assertPromise(value) {
|
|
34
71
|
if (!(value instanceof Promise))
|
|
35
72
|
throw new RequiredError("Must be promise", { received: value, caller: assertPromise });
|
|
36
73
|
}
|
|
37
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Run any queued microtasks now.
|
|
76
|
+
*
|
|
77
|
+
* @returns A promise that resolves after all currently-queued microtasks have run.
|
|
78
|
+
* @example await runMicrotasks();
|
|
79
|
+
* @see https://dhoulb.github.io/shelving/util/async/runMicrotasks
|
|
80
|
+
*/
|
|
38
81
|
export function runMicrotasks() {
|
|
39
82
|
// Timeouts are part of the main event queue, and events in the main queue are run _after_ all microtasks complete.
|
|
40
83
|
return new Promise(resolve => setTimeout(resolve));
|
|
@@ -57,6 +100,8 @@ export async function awaitValues(...promises) {
|
|
|
57
100
|
*
|
|
58
101
|
* @param promises Values (usually async, but not necessarily) that we need to wait for.
|
|
59
102
|
* @returns Array of rejection reasons of all promises (or empty array if no promises threw).
|
|
103
|
+
* @example const errors = await awaitErrors(getA(), getB());
|
|
104
|
+
* @see https://dhoulb.github.io/shelving/util/async/awaitErrors
|
|
60
105
|
*/
|
|
61
106
|
export async function awaitErrors(...promises) {
|
|
62
107
|
const errors = [];
|
|
@@ -65,7 +110,15 @@ export async function awaitErrors(...promises) {
|
|
|
65
110
|
errors.push(result.reason);
|
|
66
111
|
return errors;
|
|
67
112
|
}
|
|
68
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* `Promise` designed for extending with `._resolve()` and `._reject()` methods that can be accessed by subclasses.
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* class MyPromise extends BasePromise<number> {
|
|
118
|
+
* done() { this._resolve(123); }
|
|
119
|
+
* }
|
|
120
|
+
* @see https://dhoulb.github.io/shelving/util/async/BasePromise
|
|
121
|
+
*/
|
|
69
122
|
export class BasePromise extends Promise {
|
|
70
123
|
// Make `this.then()` create a `Promise` not a `Deferred`
|
|
71
124
|
// Done with a getter because some implementations implement this with a getter and we need to override it.
|
|
@@ -92,6 +145,10 @@ export class BasePromise extends Promise {
|
|
|
92
145
|
/**
|
|
93
146
|
* Create a deferred to access the `resolve()` and `reject()` functions of a promise.
|
|
94
147
|
* - See https://github.com/tc39/proposal-promise-with-resolvers/
|
|
148
|
+
*
|
|
149
|
+
* @returns A `Deferred` exposing the promise and its `resolve()`/`reject()` functions.
|
|
150
|
+
* @example const { promise, resolve } = createDeferred<number>();
|
|
151
|
+
* @see https://dhoulb.github.io/shelving/util/async/createDeferred
|
|
95
152
|
*/
|
|
96
153
|
export function createDeferred() {
|
|
97
154
|
let resolve;
|
|
@@ -107,7 +164,14 @@ export function createDeferred() {
|
|
|
107
164
|
reject: reject,
|
|
108
165
|
};
|
|
109
166
|
}
|
|
110
|
-
/**
|
|
167
|
+
/**
|
|
168
|
+
* Get a promise that automatically resolves after a delay.
|
|
169
|
+
*
|
|
170
|
+
* @param ms The delay in milliseconds before the promise resolves.
|
|
171
|
+
* @returns A promise that resolves with `undefined` after `ms` milliseconds.
|
|
172
|
+
* @example await getDelay(300); // resolves after 300ms
|
|
173
|
+
* @see https://dhoulb.github.io/shelving/util/async/getDelay
|
|
174
|
+
*/
|
|
111
175
|
export function getDelay(ms) {
|
|
112
176
|
return new Promise(resolve => setTimeout(resolve, ms));
|
|
113
177
|
}
|
|
@@ -116,7 +180,11 @@ export function getDelay(ms) {
|
|
|
116
180
|
* - Rejects immediately if the signal is already aborted.
|
|
117
181
|
* - Use with `awaitRace()` to cancel a concurrent operation when a signal fires.
|
|
118
182
|
*
|
|
183
|
+
* @param signal The `AbortSignal` to watch.
|
|
184
|
+
* @returns A promise that never resolves and rejects with the signal's reason when it fires.
|
|
185
|
+
* @throws The signal's `reason` when the signal aborts.
|
|
119
186
|
* @example await awaitRace(getDelay(300), awaitAbort(signal));
|
|
187
|
+
* @see https://dhoulb.github.io/shelving/util/async/awaitAbort
|
|
120
188
|
*/
|
|
121
189
|
export function awaitAbort(signal) {
|
|
122
190
|
const promise = new Promise((_, reject) => {
|
|
@@ -134,7 +202,11 @@ export function awaitAbort(signal) {
|
|
|
134
202
|
* - 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.
|
|
135
203
|
* - 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.
|
|
136
204
|
*
|
|
205
|
+
* @param promises The promises to race against each other.
|
|
206
|
+
* @returns A promise that settles with the first input to settle.
|
|
207
|
+
* @throws The rejection reason of the first input to settle, if it rejects.
|
|
137
208
|
* @example await awaitRace(getDelay(300), awaitAbort(signal)); // delay or abort, no leaked ABORT rejection if delay wins
|
|
209
|
+
* @see https://dhoulb.github.io/shelving/util/async/awaitRace
|
|
138
210
|
*/
|
|
139
211
|
export function awaitRace(...promises) {
|
|
140
212
|
for (const promise of promises)
|
package/util/base64.d.ts
CHANGED
|
@@ -1,13 +1,63 @@
|
|
|
1
1
|
import { type Bytes, type PossibleBytes } from "./bytes.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Encode a string or binary data to a Base64 string.
|
|
4
|
+
*
|
|
5
|
+
* @param input The string or byte data to encode.
|
|
6
|
+
* @param pad Whether to append `=` padding characters (defaults to `true`).
|
|
7
|
+
* @returns The Base64-encoded string.
|
|
8
|
+
* @throws {RequiredError} If `input` cannot be converted to a byte sequence.
|
|
9
|
+
* @example encodeBase64("abc") // "YWJj"
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/base64/encodeBase64
|
|
11
|
+
*/
|
|
3
12
|
export declare function encodeBase64(input: PossibleBytes, pad?: boolean): string;
|
|
4
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Decode a Base64 string to a string (decodes Base64URL too).
|
|
15
|
+
*
|
|
16
|
+
* @param base64 The Base64 (or Base64URL) string to decode.
|
|
17
|
+
* @returns The decoded UTF-8 string.
|
|
18
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
19
|
+
* @example decodeBase64String("YWJj") // "abc"
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64String
|
|
21
|
+
*/
|
|
5
22
|
export declare function decodeBase64String(base64: string): string;
|
|
6
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Decode a Base64 string to a byte sequence (decodes Base64URL too).
|
|
25
|
+
*
|
|
26
|
+
* @param base64 The Base64 (or Base64URL) string to decode.
|
|
27
|
+
* @returns The decoded byte sequence.
|
|
28
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
29
|
+
* @example decodeBase64Bytes("YWJj") // Uint8Array([97, 98, 99])
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64Bytes
|
|
31
|
+
*/
|
|
7
32
|
export declare function decodeBase64Bytes(base64: string): Bytes;
|
|
8
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Encode a string or binary data to a URL-safe Base64 string.
|
|
35
|
+
*
|
|
36
|
+
* @param input The string or byte data to encode.
|
|
37
|
+
* @param pad Whether to append `=` padding characters (defaults to `false`).
|
|
38
|
+
* @returns The Base64URL-encoded string.
|
|
39
|
+
* @throws {RequiredError} If `input` cannot be converted to a byte sequence.
|
|
40
|
+
* @example encodeBase64URL("abc") // "YWJj"
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/util/base64/encodeBase64URL
|
|
42
|
+
*/
|
|
9
43
|
export declare function encodeBase64URL(input: PossibleBytes, pad?: boolean): string;
|
|
10
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Decode a string from a URL-safe Base64 string (decodes Base64 too).
|
|
46
|
+
*
|
|
47
|
+
* @param base64 The Base64URL (or Base64) string to decode.
|
|
48
|
+
* @returns The decoded UTF-8 string.
|
|
49
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
50
|
+
* @example decodeBase64URLString("YWJj") // "abc"
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLString
|
|
52
|
+
*/
|
|
11
53
|
export declare function decodeBase64URLString(base64: string): string;
|
|
12
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Decode a URL-safe Base64 string to a byte sequence (decodes Base64 too).
|
|
56
|
+
*
|
|
57
|
+
* @param base64 The Base64URL (or Base64) string to decode.
|
|
58
|
+
* @returns The decoded byte sequence.
|
|
59
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
60
|
+
* @example decodeBase64URLBytes("YWJj") // Uint8Array([97, 98, 99])
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLBytes
|
|
62
|
+
*/
|
|
13
63
|
export declare function decodeBase64URLBytes(base64: string): Bytes;
|
package/util/base64.js
CHANGED
|
@@ -60,27 +60,77 @@ function _lookup(base64, index, caller) {
|
|
|
60
60
|
throw new ValueError(`Invalid character "${code}" in Base64 string`, { received: base64, index: index, caller });
|
|
61
61
|
return value;
|
|
62
62
|
}
|
|
63
|
-
/**
|
|
63
|
+
/**
|
|
64
|
+
* Encode a string or binary data to a Base64 string.
|
|
65
|
+
*
|
|
66
|
+
* @param input The string or byte data to encode.
|
|
67
|
+
* @param pad Whether to append `=` padding characters (defaults to `true`).
|
|
68
|
+
* @returns The Base64-encoded string.
|
|
69
|
+
* @throws {RequiredError} If `input` cannot be converted to a byte sequence.
|
|
70
|
+
* @example encodeBase64("abc") // "YWJj"
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/util/base64/encodeBase64
|
|
72
|
+
*/
|
|
64
73
|
export function encodeBase64(input, pad = true) {
|
|
65
74
|
return _encode(requireBytes(input), BASE64_CHARS, pad ? "=" : "");
|
|
66
75
|
}
|
|
67
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Decode a Base64 string to a string (decodes Base64URL too).
|
|
78
|
+
*
|
|
79
|
+
* @param base64 The Base64 (or Base64URL) string to decode.
|
|
80
|
+
* @returns The decoded UTF-8 string.
|
|
81
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
82
|
+
* @example decodeBase64String("YWJj") // "abc"
|
|
83
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64String
|
|
84
|
+
*/
|
|
68
85
|
export function decodeBase64String(base64) {
|
|
69
86
|
return new TextDecoder("utf-8").decode(_decode(base64, decodeBase64String));
|
|
70
87
|
}
|
|
71
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Decode a Base64 string to a byte sequence (decodes Base64URL too).
|
|
90
|
+
*
|
|
91
|
+
* @param base64 The Base64 (or Base64URL) string to decode.
|
|
92
|
+
* @returns The decoded byte sequence.
|
|
93
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
94
|
+
* @example decodeBase64Bytes("YWJj") // Uint8Array([97, 98, 99])
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64Bytes
|
|
96
|
+
*/
|
|
72
97
|
export function decodeBase64Bytes(base64) {
|
|
73
98
|
return _decode(base64, decodeBase64Bytes);
|
|
74
99
|
}
|
|
75
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* Encode a string or binary data to a URL-safe Base64 string.
|
|
102
|
+
*
|
|
103
|
+
* @param input The string or byte data to encode.
|
|
104
|
+
* @param pad Whether to append `=` padding characters (defaults to `false`).
|
|
105
|
+
* @returns The Base64URL-encoded string.
|
|
106
|
+
* @throws {RequiredError} If `input` cannot be converted to a byte sequence.
|
|
107
|
+
* @example encodeBase64URL("abc") // "YWJj"
|
|
108
|
+
* @see https://dhoulb.github.io/shelving/util/base64/encodeBase64URL
|
|
109
|
+
*/
|
|
76
110
|
export function encodeBase64URL(input, pad = false) {
|
|
77
111
|
return _encode(requireBytes(input), BASE64URL_CHARS, pad ? "=" : "");
|
|
78
112
|
}
|
|
79
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* Decode a string from a URL-safe Base64 string (decodes Base64 too).
|
|
115
|
+
*
|
|
116
|
+
* @param base64 The Base64URL (or Base64) string to decode.
|
|
117
|
+
* @returns The decoded UTF-8 string.
|
|
118
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
119
|
+
* @example decodeBase64URLString("YWJj") // "abc"
|
|
120
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLString
|
|
121
|
+
*/
|
|
80
122
|
export function decodeBase64URLString(base64) {
|
|
81
123
|
return new TextDecoder("utf-8").decode(_decode(base64, decodeBase64URLString));
|
|
82
124
|
}
|
|
83
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* Decode a URL-safe Base64 string to a byte sequence (decodes Base64 too).
|
|
127
|
+
*
|
|
128
|
+
* @param base64 The Base64URL (or Base64) string to decode.
|
|
129
|
+
* @returns The decoded byte sequence.
|
|
130
|
+
* @throws {ValueError} If `base64` contains an invalid character.
|
|
131
|
+
* @example decodeBase64URLBytes("YWJj") // Uint8Array([97, 98, 99])
|
|
132
|
+
* @see https://dhoulb.github.io/shelving/util/base64/decodeBase64URLBytes
|
|
133
|
+
*/
|
|
84
134
|
export function decodeBase64URLBytes(base64) {
|
|
85
135
|
return _decode(base64, decodeBase64URLBytes);
|
|
86
136
|
}
|
package/util/boolean.d.ts
CHANGED
|
@@ -1,21 +1,86 @@
|
|
|
1
1
|
import type { AnyCaller } from "./function.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Is an unknown value a boolean?
|
|
4
|
+
*
|
|
5
|
+
* @param value The value to test.
|
|
6
|
+
* @returns `true` if `value` is a `boolean`, narrowing its type.
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isBoolean
|
|
8
|
+
*/
|
|
3
9
|
export declare function isBoolean(value: unknown): value is boolean;
|
|
4
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Is an unknown value exactly `true`?
|
|
12
|
+
*
|
|
13
|
+
* @param value The value to test.
|
|
14
|
+
* @returns `true` if `value` is the literal `true`, narrowing its type.
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isTrue
|
|
16
|
+
*/
|
|
5
17
|
export declare function isTrue(value: unknown): value is true;
|
|
6
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Is an unknown value exactly `false`?
|
|
20
|
+
*
|
|
21
|
+
* @param value The value to test.
|
|
22
|
+
* @returns `true` if `value` is the literal `false`, narrowing its type.
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isFalse
|
|
24
|
+
*/
|
|
7
25
|
export declare function isFalse(value: unknown): value is false;
|
|
8
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* Is an unknown value truthy?
|
|
28
|
+
*
|
|
29
|
+
* @param value The value to test.
|
|
30
|
+
* @returns `true` if `value` coerces to `true`.
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isTruthy
|
|
32
|
+
*/
|
|
9
33
|
export declare function isTruthy(value: unknown): boolean;
|
|
10
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Is an unknown value falsey?
|
|
36
|
+
*
|
|
37
|
+
* @param value The value to test.
|
|
38
|
+
* @returns `true` if `value` coerces to `false`.
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isFalsey
|
|
40
|
+
*/
|
|
11
41
|
export declare function isFalsey(value: unknown): boolean;
|
|
12
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Assert that an unknown value is a boolean.
|
|
44
|
+
*
|
|
45
|
+
* @param value The value to assert.
|
|
46
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertBoolean` itself).
|
|
47
|
+
* @throws {RequiredError} If `value` is not a `boolean`.
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertBoolean
|
|
49
|
+
*/
|
|
13
50
|
export declare function assertBoolean(value: unknown, caller?: AnyCaller): asserts value is boolean;
|
|
14
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Assert that an unknown value is exactly `true`.
|
|
53
|
+
*
|
|
54
|
+
* @param value The value to assert.
|
|
55
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertTrue` itself).
|
|
56
|
+
* @throws {RequiredError} If `value` is not the literal `true`.
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertTrue
|
|
58
|
+
*/
|
|
15
59
|
export declare function assertTrue(value: unknown, caller?: AnyCaller): asserts value is true;
|
|
16
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Assert that an unknown value is exactly `false`.
|
|
62
|
+
*
|
|
63
|
+
* @param value The value to assert.
|
|
64
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertFalse` itself).
|
|
65
|
+
* @throws {RequiredError} If `value` is not the literal `false`.
|
|
66
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertFalse
|
|
67
|
+
*/
|
|
17
68
|
export declare function assertFalse(value: unknown, caller?: AnyCaller): asserts value is false;
|
|
18
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Assert that an unknown value is truthy.
|
|
71
|
+
*
|
|
72
|
+
* @param value The value to assert.
|
|
73
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertTruthy` itself).
|
|
74
|
+
* @throws {RequiredError} If `value` is falsey.
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertTruthy
|
|
76
|
+
*/
|
|
19
77
|
export declare function assertTruthy(value: unknown, caller?: AnyCaller): asserts value is true;
|
|
20
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* Assert that an unknown value is falsy.
|
|
80
|
+
*
|
|
81
|
+
* @param value The value to assert.
|
|
82
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertFalsy` itself).
|
|
83
|
+
* @throws {RequiredError} If `value` is truthy.
|
|
84
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertFalsy
|
|
85
|
+
*/
|
|
21
86
|
export declare function assertFalsy(value: unknown, caller?: AnyCaller): asserts value is false;
|
package/util/boolean.js
CHANGED
|
@@ -1,45 +1,110 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Is an unknown value a boolean?
|
|
4
|
+
*
|
|
5
|
+
* @param value The value to test.
|
|
6
|
+
* @returns `true` if `value` is a `boolean`, narrowing its type.
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isBoolean
|
|
8
|
+
*/
|
|
3
9
|
export function isBoolean(value) {
|
|
4
10
|
return typeof value === "boolean";
|
|
5
11
|
}
|
|
6
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Is an unknown value exactly `true`?
|
|
14
|
+
*
|
|
15
|
+
* @param value The value to test.
|
|
16
|
+
* @returns `true` if `value` is the literal `true`, narrowing its type.
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isTrue
|
|
18
|
+
*/
|
|
7
19
|
export function isTrue(value) {
|
|
8
20
|
return value === true;
|
|
9
21
|
}
|
|
10
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Is an unknown value exactly `false`?
|
|
24
|
+
*
|
|
25
|
+
* @param value The value to test.
|
|
26
|
+
* @returns `true` if `value` is the literal `false`, narrowing its type.
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isFalse
|
|
28
|
+
*/
|
|
11
29
|
export function isFalse(value) {
|
|
12
30
|
return value === false;
|
|
13
31
|
}
|
|
14
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Is an unknown value truthy?
|
|
34
|
+
*
|
|
35
|
+
* @param value The value to test.
|
|
36
|
+
* @returns `true` if `value` coerces to `true`.
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isTruthy
|
|
38
|
+
*/
|
|
15
39
|
export function isTruthy(value) {
|
|
16
40
|
return !!value;
|
|
17
41
|
}
|
|
18
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Is an unknown value falsey?
|
|
44
|
+
*
|
|
45
|
+
* @param value The value to test.
|
|
46
|
+
* @returns `true` if `value` coerces to `false`.
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/isFalsey
|
|
48
|
+
*/
|
|
19
49
|
export function isFalsey(value) {
|
|
20
50
|
return !value;
|
|
21
51
|
}
|
|
22
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Assert that an unknown value is a boolean.
|
|
54
|
+
*
|
|
55
|
+
* @param value The value to assert.
|
|
56
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertBoolean` itself).
|
|
57
|
+
* @throws {RequiredError} If `value` is not a `boolean`.
|
|
58
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertBoolean
|
|
59
|
+
*/
|
|
23
60
|
export function assertBoolean(value, caller = assertBoolean) {
|
|
24
61
|
if (typeof value !== "boolean")
|
|
25
62
|
throw new RequiredError("Must be boolean", { received: value, caller });
|
|
26
63
|
}
|
|
27
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Assert that an unknown value is exactly `true`.
|
|
66
|
+
*
|
|
67
|
+
* @param value The value to assert.
|
|
68
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertTrue` itself).
|
|
69
|
+
* @throws {RequiredError} If `value` is not the literal `true`.
|
|
70
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertTrue
|
|
71
|
+
*/
|
|
28
72
|
export function assertTrue(value, caller = assertTrue) {
|
|
29
73
|
if (value !== true)
|
|
30
74
|
throw new RequiredError("Must be true", { received: value, caller });
|
|
31
75
|
}
|
|
32
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Assert that an unknown value is exactly `false`.
|
|
78
|
+
*
|
|
79
|
+
* @param value The value to assert.
|
|
80
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertFalse` itself).
|
|
81
|
+
* @throws {RequiredError} If `value` is not the literal `false`.
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertFalse
|
|
83
|
+
*/
|
|
33
84
|
export function assertFalse(value, caller = assertFalse) {
|
|
34
85
|
if (value !== false)
|
|
35
86
|
throw new RequiredError("Must be false", { received: value, caller });
|
|
36
87
|
}
|
|
37
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Assert that an unknown value is truthy.
|
|
90
|
+
*
|
|
91
|
+
* @param value The value to assert.
|
|
92
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertTruthy` itself).
|
|
93
|
+
* @throws {RequiredError} If `value` is falsey.
|
|
94
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertTruthy
|
|
95
|
+
*/
|
|
38
96
|
export function assertTruthy(value, caller = assertTruthy) {
|
|
39
97
|
if (!value)
|
|
40
98
|
throw new RequiredError("Must be truthy", { received: value, caller });
|
|
41
99
|
}
|
|
42
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* Assert that an unknown value is falsy.
|
|
102
|
+
*
|
|
103
|
+
* @param value The value to assert.
|
|
104
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertFalsy` itself).
|
|
105
|
+
* @throws {RequiredError} If `value` is truthy.
|
|
106
|
+
* @see https://dhoulb.github.io/shelving/util/boolean/assertFalsy
|
|
107
|
+
*/
|
|
43
108
|
export function assertFalsy(value, caller = assertFalsy) {
|
|
44
109
|
if (value)
|
|
45
110
|
throw new RequiredError("Must be falsy", { received: value, caller });
|
package/util/buffer.d.ts
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Union of the numeric `TypedArray` views over an `ArrayBufferLike` (excludes `DataView`).
|
|
3
|
+
*
|
|
4
|
+
* @see https://dhoulb.github.io/shelving/util/buffer/TypedArray
|
|
5
|
+
*/
|
|
1
6
|
export type TypedArray<T extends ArrayBufferLike = ArrayBufferLike> = Uint8Array<T> | Uint16Array<T> | Uint32Array<T> | Int8Array<T> | Int16Array<T> | Int32Array<T> | Float32Array<T> | Float64Array<T>;
|
|
2
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Detect if an unknown value is an `ArrayBuffer` (not a view like `Uint8Array` or `Float32Array` or `DataView`).
|
|
9
|
+
*
|
|
10
|
+
* @param value The value to test.
|
|
11
|
+
* @returns `true` if `value` is an `ArrayBuffer`, narrowing its type.
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/util/buffer/isBuffer
|
|
13
|
+
*/
|
|
3
14
|
export declare function isBuffer(value: unknown): value is ArrayBuffer;
|
|
4
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Detect if an unknown value is an `ArrayBufferView`, like `Uint8Array` or `Float32Array` or `DataView`.
|
|
17
|
+
*
|
|
18
|
+
* @param value The value to test.
|
|
19
|
+
* @returns `true` if `value` is an `ArrayBufferView`, narrowing its type.
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/util/buffer/isBufferView
|
|
21
|
+
*/
|
|
5
22
|
export declare function isBufferView(value: unknown): value is ArrayBufferView;
|
|
6
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Detect if an unknown value is a `TypedArray`, like `Uint8Array` or `Float32Array` (not including `DataView`).
|
|
25
|
+
*
|
|
26
|
+
* @param value The value to test.
|
|
27
|
+
* @returns `true` if `value` is a numeric `TypedArray`, narrowing its type.
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/util/buffer/isTypedArray
|
|
29
|
+
*/
|
|
7
30
|
export declare function isTypedArray(value: unknown): value is TypedArray;
|
package/util/buffer.js
CHANGED
|
@@ -1,12 +1,30 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Detect if an unknown value is an `ArrayBuffer` (not a view like `Uint8Array` or `Float32Array` or `DataView`).
|
|
3
|
+
*
|
|
4
|
+
* @param value The value to test.
|
|
5
|
+
* @returns `true` if `value` is an `ArrayBuffer`, narrowing its type.
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/util/buffer/isBuffer
|
|
7
|
+
*/
|
|
2
8
|
export function isBuffer(value) {
|
|
3
9
|
return value instanceof ArrayBuffer;
|
|
4
10
|
}
|
|
5
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Detect if an unknown value is an `ArrayBufferView`, like `Uint8Array` or `Float32Array` or `DataView`.
|
|
13
|
+
*
|
|
14
|
+
* @param value The value to test.
|
|
15
|
+
* @returns `true` if `value` is an `ArrayBufferView`, narrowing its type.
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/util/buffer/isBufferView
|
|
17
|
+
*/
|
|
6
18
|
export function isBufferView(value) {
|
|
7
19
|
return ArrayBuffer.isView(value);
|
|
8
20
|
}
|
|
9
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Detect if an unknown value is a `TypedArray`, like `Uint8Array` or `Float32Array` (not including `DataView`).
|
|
23
|
+
*
|
|
24
|
+
* @param value The value to test.
|
|
25
|
+
* @returns `true` if `value` is a numeric `TypedArray`, narrowing its type.
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/util/buffer/isTypedArray
|
|
27
|
+
*/
|
|
10
28
|
export function isTypedArray(value) {
|
|
11
29
|
return value instanceof Object.getPrototypeOf(Uint8Array);
|
|
12
30
|
}
|
package/util/bytes.d.ts
CHANGED
|
@@ -1,11 +1,35 @@
|
|
|
1
1
|
import type { AnyCaller } from "./function.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* A set of bytes stored as a `Uint8Array` byte sequence backed by an `ArrayBuffer`.
|
|
4
|
+
*
|
|
5
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/Bytes
|
|
6
|
+
*/
|
|
3
7
|
export type Bytes = Uint8Array<ArrayBuffer>;
|
|
4
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Types that can be converted to a `Uint8Array` byte sequence.
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/PossibleBytes
|
|
12
|
+
*/
|
|
5
13
|
export type PossibleBytes = Bytes | ArrayBuffer | string;
|
|
6
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Is an unknown value a set of bytes?
|
|
16
|
+
*
|
|
17
|
+
* @param value The value to test.
|
|
18
|
+
* @returns `true` if `value` is a `Uint8Array` backed by an `ArrayBuffer`, narrowing its type.
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/isBytes
|
|
20
|
+
*/
|
|
7
21
|
export declare function isBytes(value: unknown): value is Bytes;
|
|
8
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Assert that an unknown value is a `Uint8Array` byte sequence (optionally with a min/max length).
|
|
24
|
+
*
|
|
25
|
+
* @param value The value to assert.
|
|
26
|
+
* @param min Minimum allowed length (defaults to `0`).
|
|
27
|
+
* @param max Maximum allowed length (defaults to `Infinity`).
|
|
28
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertBytes` itself).
|
|
29
|
+
* @throws {RequiredError} If `value` is not a byte sequence within the allowed length range.
|
|
30
|
+
* @example assertBytes(new Uint8Array([1, 2, 3]), 1, 8);
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/assertBytes
|
|
32
|
+
*/
|
|
9
33
|
export declare function assertBytes(value: unknown, min?: number, max?: number, caller?: AnyCaller): asserts value is Bytes;
|
|
10
34
|
/**
|
|
11
35
|
* Convert an unknown value to a `Uint8Array<ArrayBuffer>` byte sequence, or `undefined` if the value cannot be converted.
|
|
@@ -14,9 +38,23 @@ export declare function assertBytes(value: unknown, min?: number, max?: number,
|
|
|
14
38
|
* - `ArrayBuffer` instances are converted to `Uint8Array`
|
|
15
39
|
* - Strings are encoded as UTF-8 characters in a `Uint8Array`
|
|
16
40
|
* - Everything else returns `undefined`
|
|
41
|
+
*
|
|
42
|
+
* @param value The value to convert.
|
|
43
|
+
* @returns The byte sequence, or `undefined` if `value` cannot be converted.
|
|
44
|
+
* @example getBytes("abc") // Uint8Array([97, 98, 99])
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/getBytes
|
|
17
46
|
*/
|
|
18
47
|
export declare function getBytes(value: unknown): Uint8Array<ArrayBuffer> | undefined;
|
|
19
48
|
/**
|
|
20
49
|
* Convert a possible set of bytes to a `Uint8Array` byte sequence, or throw `RequiredError` if the value cannot be converted.
|
|
50
|
+
*
|
|
51
|
+
* @param value The possible bytes to convert.
|
|
52
|
+
* @param min Minimum allowed length (defaults to `0`).
|
|
53
|
+
* @param max Maximum allowed length (defaults to `Infinity`).
|
|
54
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireBytes` itself).
|
|
55
|
+
* @returns The converted byte sequence.
|
|
56
|
+
* @throws {RequiredError} If `value` cannot be converted or is outside the allowed length range.
|
|
57
|
+
* @example requireBytes("abc") // Uint8Array([97, 98, 99])
|
|
58
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/requireBytes
|
|
21
59
|
*/
|
|
22
60
|
export declare function requireBytes(value: PossibleBytes, min?: number, max?: number, caller?: AnyCaller): Uint8Array<ArrayBuffer>;
|