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/bytes.js
CHANGED
|
@@ -1,9 +1,25 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Is an unknown value a set of bytes?
|
|
4
|
+
*
|
|
5
|
+
* @param value The value to test.
|
|
6
|
+
* @returns `true` if `value` is a `Uint8Array` backed by an `ArrayBuffer`, narrowing its type.
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/isBytes
|
|
8
|
+
*/
|
|
3
9
|
export function isBytes(value) {
|
|
4
10
|
return value instanceof Uint8Array && value.buffer instanceof ArrayBuffer;
|
|
5
11
|
}
|
|
6
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Assert that an unknown value is a `Uint8Array` byte sequence (optionally with a min/max length).
|
|
14
|
+
*
|
|
15
|
+
* @param value The value to assert.
|
|
16
|
+
* @param min Minimum allowed length (defaults to `0`).
|
|
17
|
+
* @param max Maximum allowed length (defaults to `Infinity`).
|
|
18
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertBytes` itself).
|
|
19
|
+
* @throws {RequiredError} If `value` is not a byte sequence within the allowed length range.
|
|
20
|
+
* @example assertBytes(new Uint8Array([1, 2, 3]), 1, 8);
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/assertBytes
|
|
22
|
+
*/
|
|
7
23
|
export function assertBytes(value, min = 0, max = Number.POSITIVE_INFINITY, caller = assertBytes) {
|
|
8
24
|
if (!isBytes(value) || value.length < min || value.length > max)
|
|
9
25
|
throw new RequiredError(`Value must be byte sequence${min > 0 || max < Number.POSITIVE_INFINITY ? ` with length between ${min} and ${max}` : ""}`, { received: value, caller });
|
|
@@ -15,6 +31,11 @@ export function assertBytes(value, min = 0, max = Number.POSITIVE_INFINITY, call
|
|
|
15
31
|
* - `ArrayBuffer` instances are converted to `Uint8Array`
|
|
16
32
|
* - Strings are encoded as UTF-8 characters in a `Uint8Array`
|
|
17
33
|
* - Everything else returns `undefined`
|
|
34
|
+
*
|
|
35
|
+
* @param value The value to convert.
|
|
36
|
+
* @returns The byte sequence, or `undefined` if `value` cannot be converted.
|
|
37
|
+
* @example getBytes("abc") // Uint8Array([97, 98, 99])
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/getBytes
|
|
18
39
|
*/
|
|
19
40
|
export function getBytes(value) {
|
|
20
41
|
if (isBytes(value))
|
|
@@ -27,6 +48,15 @@ export function getBytes(value) {
|
|
|
27
48
|
}
|
|
28
49
|
/**
|
|
29
50
|
* Convert a possible set of bytes to a `Uint8Array` byte sequence, or throw `RequiredError` if the value cannot be converted.
|
|
51
|
+
*
|
|
52
|
+
* @param value The possible bytes to convert.
|
|
53
|
+
* @param min Minimum allowed length (defaults to `0`).
|
|
54
|
+
* @param max Maximum allowed length (defaults to `Infinity`).
|
|
55
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireBytes` itself).
|
|
56
|
+
* @returns The converted byte sequence.
|
|
57
|
+
* @throws {RequiredError} If `value` cannot be converted or is outside the allowed length range.
|
|
58
|
+
* @example requireBytes("abc") // Uint8Array([97, 98, 99])
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/util/bytes/requireBytes
|
|
30
60
|
*/
|
|
31
61
|
export function requireBytes(value, min = 0, max = Number.POSITIVE_INFINITY, caller = requireBytes) {
|
|
32
62
|
const bytes = getBytes(value);
|
package/util/class.d.ts
CHANGED
|
@@ -1,17 +1,68 @@
|
|
|
1
1
|
import type { Arguments } from "./function.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Class that has a public `constructor()` function.
|
|
4
|
+
*
|
|
5
|
+
* @see https://dhoulb.github.io/shelving/util/class/Constructor
|
|
6
|
+
*/
|
|
3
7
|
export type Constructor<T, A extends Arguments> = new (...args: A) => T;
|
|
4
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Any class constructor (designed for use with `extends AnyConstructor` guards).
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/util/class/AnyConstructor
|
|
12
|
+
*/
|
|
5
13
|
export type AnyConstructor = new (...args: any) => any;
|
|
6
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Class prototype that can be used with `instanceof`.
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/util/class/Class
|
|
18
|
+
*/
|
|
7
19
|
export type Class<T> = new (...args: any) => T;
|
|
8
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Is a given value a class constructor?
|
|
22
|
+
*
|
|
23
|
+
* @param value The value to test.
|
|
24
|
+
* @returns `true` if `value` is a class constructor, narrowing its type.
|
|
25
|
+
* @example isConstructor(class {}) // true
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/util/class/isConstructor
|
|
27
|
+
*/
|
|
9
28
|
export declare function isConstructor(value: unknown): value is AnyConstructor;
|
|
10
|
-
/**
|
|
29
|
+
/**
|
|
30
|
+
* Is a value an instance of a class?
|
|
31
|
+
*
|
|
32
|
+
* @param value The value to test.
|
|
33
|
+
* @param type The class to test `value` against.
|
|
34
|
+
* @returns `true` if `value` is an instance of `type`, narrowing its type.
|
|
35
|
+
* @example isInstance(new Date(), Date) // true
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/util/class/isInstance
|
|
37
|
+
*/
|
|
11
38
|
export declare function isInstance<T>(value: unknown, type: Class<T>): value is T;
|
|
12
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Assert that a value is an instance of something.
|
|
41
|
+
*
|
|
42
|
+
* @param value The value to assert.
|
|
43
|
+
* @param type The class `value` must be an instance of.
|
|
44
|
+
* @throws {RequiredError} If `value` is not an instance of `type`.
|
|
45
|
+
* @example assertInstance(new Date(), Date); // passes
|
|
46
|
+
* @see https://dhoulb.github.io/shelving/util/class/assertInstance
|
|
47
|
+
*/
|
|
13
48
|
export declare function assertInstance<T>(value: unknown, type: Class<T>): asserts value is T;
|
|
14
|
-
/**
|
|
49
|
+
/**
|
|
50
|
+
* Get the 'getter' function for a given property, or `undefined` if it doesn't exist.
|
|
51
|
+
*
|
|
52
|
+
* @param obj The object to read the property descriptor from.
|
|
53
|
+
* @param prop The property name to look up.
|
|
54
|
+
* @returns The getter function bound to `T`, or `undefined` if the property has no getter.
|
|
55
|
+
* @example getGetter(obj, "size") // () => number | undefined
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/util/class/getGetter
|
|
57
|
+
*/
|
|
15
58
|
export declare function getGetter<T extends Object, K extends keyof T>(obj: T, prop: K): ((this: T) => T[K]) | undefined;
|
|
16
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Get the 'setter' function for a given property, or `undefined` if it doesn't exist.
|
|
61
|
+
*
|
|
62
|
+
* @param obj The object whose prototype is searched for the property descriptor.
|
|
63
|
+
* @param prop The property name to look up.
|
|
64
|
+
* @returns The setter function bound to `T`, or `undefined` if the property has no setter.
|
|
65
|
+
* @example getSetter(obj, "size") // (value: number) => void | undefined
|
|
66
|
+
* @see https://dhoulb.github.io/shelving/util/class/getSetter
|
|
67
|
+
*/
|
|
17
68
|
export declare function getSetter<T extends Object, K extends keyof T>(obj: T, prop: K): ((this: T, value: T[K]) => void) | undefined;
|
package/util/class.js
CHANGED
|
@@ -1,24 +1,63 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Is a given value a class constructor?
|
|
4
|
+
*
|
|
5
|
+
* @param value The value to test.
|
|
6
|
+
* @returns `true` if `value` is a class constructor, narrowing its type.
|
|
7
|
+
* @example isConstructor(class {}) // true
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/class/isConstructor
|
|
9
|
+
*/
|
|
3
10
|
export function isConstructor(value) {
|
|
4
11
|
return typeof value === "function" && value.toString().startsWith("class");
|
|
5
12
|
}
|
|
6
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Is a value an instance of a class?
|
|
15
|
+
*
|
|
16
|
+
* @param value The value to test.
|
|
17
|
+
* @param type The class to test `value` against.
|
|
18
|
+
* @returns `true` if `value` is an instance of `type`, narrowing its type.
|
|
19
|
+
* @example isInstance(new Date(), Date) // true
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/util/class/isInstance
|
|
21
|
+
*/
|
|
7
22
|
export function isInstance(value, type) {
|
|
8
23
|
return value instanceof type;
|
|
9
24
|
}
|
|
10
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Assert that a value is an instance of something.
|
|
27
|
+
*
|
|
28
|
+
* @param value The value to assert.
|
|
29
|
+
* @param type The class `value` must be an instance of.
|
|
30
|
+
* @throws {RequiredError} If `value` is not an instance of `type`.
|
|
31
|
+
* @example assertInstance(new Date(), Date); // passes
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/util/class/assertInstance
|
|
33
|
+
*/
|
|
11
34
|
export function assertInstance(value, type) {
|
|
12
35
|
if (!(value instanceof type))
|
|
13
36
|
throw new RequiredError(`Must be instance of class "${type.name}"`, { received: value, expected: type, caller: assertInstance });
|
|
14
37
|
}
|
|
15
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Get the 'getter' function for a given property, or `undefined` if it doesn't exist.
|
|
40
|
+
*
|
|
41
|
+
* @param obj The object to read the property descriptor from.
|
|
42
|
+
* @param prop The property name to look up.
|
|
43
|
+
* @returns The getter function bound to `T`, or `undefined` if the property has no getter.
|
|
44
|
+
* @example getGetter(obj, "size") // () => number | undefined
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/class/getGetter
|
|
46
|
+
*/
|
|
16
47
|
// biome-ignore lint/complexity/noBannedTypes: This is correct here.
|
|
17
48
|
export function getGetter(obj, prop) {
|
|
18
49
|
const descriptor = Object.getOwnPropertyDescriptor(obj, prop);
|
|
19
50
|
return descriptor && typeof descriptor.get === "function" ? descriptor.get : undefined;
|
|
20
51
|
}
|
|
21
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Get the 'setter' function for a given property, or `undefined` if it doesn't exist.
|
|
54
|
+
*
|
|
55
|
+
* @param obj The object whose prototype is searched for the property descriptor.
|
|
56
|
+
* @param prop The property name to look up.
|
|
57
|
+
* @returns The setter function bound to `T`, or `undefined` if the property has no setter.
|
|
58
|
+
* @example getSetter(obj, "size") // (value: number) => void | undefined
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/util/class/getSetter
|
|
60
|
+
*/
|
|
22
61
|
// biome-ignore lint/complexity/noBannedTypes: This is correct here.
|
|
23
62
|
export function getSetter(obj, prop) {
|
|
24
63
|
const descriptor = Object.getOwnPropertyDescriptor(obj.constructor.prototype, prop);
|
package/util/color.d.ts
CHANGED
|
@@ -1,36 +1,154 @@
|
|
|
1
1
|
import type { AnyCaller } from "./function.js";
|
|
2
|
+
/**
|
|
3
|
+
* Regular expression matching a three-digit hex color (e.g. `#F00`), capturing each channel.
|
|
4
|
+
*
|
|
5
|
+
* @see https://dhoulb.github.io/shelving/util/color/HEX3_REGEXP
|
|
6
|
+
*/
|
|
2
7
|
export declare const HEX3_REGEXP: RegExp;
|
|
8
|
+
/**
|
|
9
|
+
* Regular expression matching a six or eight digit hex color (e.g. `#FF0000` or `#FF0000FF`), capturing each channel.
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/util/color/HEX6_REGEXP
|
|
12
|
+
*/
|
|
3
13
|
export declare const HEX6_REGEXP: RegExp;
|
|
4
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Things that can be converted to a `Color` instance.
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/util/color/PossibleColor
|
|
18
|
+
*/
|
|
5
19
|
export type PossibleColor = Color | string;
|
|
6
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Represents an RGBA color with red, green, blue, and alpha channels (each `0`–`255`).
|
|
22
|
+
*
|
|
23
|
+
* @example new Color(255, 0, 0).hex // "#FF0000"
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color
|
|
25
|
+
*/
|
|
7
26
|
export declare class Color {
|
|
8
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Make a `Color` from an unknown value, or `undefined` if it can't be parsed.
|
|
29
|
+
*
|
|
30
|
+
* @param possible The value to parse, typically a `Color` instance or a three/six/eight digit hex string.
|
|
31
|
+
* @returns The parsed `Color`, or `undefined` if `possible` cannot be converted.
|
|
32
|
+
* @example Color.from("#F00") // Color(255, 0, 0)
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/from
|
|
34
|
+
*/
|
|
9
35
|
static from(possible: unknown): Color | undefined;
|
|
36
|
+
/**
|
|
37
|
+
* Red channel, bounded to `0`–`255`.
|
|
38
|
+
*
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/r
|
|
40
|
+
*/
|
|
10
41
|
readonly r: number;
|
|
42
|
+
/**
|
|
43
|
+
* Green channel, bounded to `0`–`255`.
|
|
44
|
+
*
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/g
|
|
46
|
+
*/
|
|
11
47
|
readonly g: number;
|
|
48
|
+
/**
|
|
49
|
+
* Blue channel, bounded to `0`–`255`.
|
|
50
|
+
*
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/b
|
|
52
|
+
*/
|
|
12
53
|
readonly b: number;
|
|
54
|
+
/**
|
|
55
|
+
* Alpha channel, bounded to `0`–`255`.
|
|
56
|
+
*
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/a
|
|
58
|
+
*/
|
|
13
59
|
readonly a: number;
|
|
60
|
+
/**
|
|
61
|
+
* Create a new `Color` from red, green, blue, and alpha channel values.
|
|
62
|
+
*
|
|
63
|
+
* @param r Red channel, bounded to `0`–`255` (defaults to `255`).
|
|
64
|
+
* @param g Green channel, bounded to `0`–`255` (defaults to `255`).
|
|
65
|
+
* @param b Blue channel, bounded to `0`–`255` (defaults to `255`).
|
|
66
|
+
* @param a Alpha channel, bounded to `0`–`255` (defaults to `255`).
|
|
67
|
+
* @example new Color(255, 0, 0) // opaque red
|
|
68
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/constructor
|
|
69
|
+
*/
|
|
14
70
|
constructor(r?: number, g?: number, b?: number, a?: number);
|
|
15
|
-
/**
|
|
71
|
+
/**
|
|
72
|
+
* This color as a six or eight digit hex string (eight digits when the alpha channel is less than `255`).
|
|
73
|
+
*
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/hex
|
|
75
|
+
*/
|
|
16
76
|
get hex(): string;
|
|
17
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* This color as a CSS `rgb()` string.
|
|
79
|
+
*
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/rgb
|
|
81
|
+
*/
|
|
18
82
|
get rgb(): string;
|
|
19
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* This color as a CSS `rgba()` string.
|
|
85
|
+
*
|
|
86
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/rgba
|
|
87
|
+
*/
|
|
20
88
|
get rgba(): string;
|
|
21
|
-
/**
|
|
89
|
+
/**
|
|
90
|
+
* The sRGB luminance of this color (`0`–`255`).
|
|
91
|
+
*
|
|
92
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/luminance
|
|
93
|
+
*/
|
|
22
94
|
get luminance(): number;
|
|
23
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Whether this color is light (its luminance is above the dark/light threshold).
|
|
97
|
+
*
|
|
98
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/isLight
|
|
99
|
+
*/
|
|
24
100
|
get isLight(): boolean;
|
|
25
|
-
/**
|
|
101
|
+
/**
|
|
102
|
+
* Whether this color is dark (its luminance is at or below the dark/light threshold).
|
|
103
|
+
*
|
|
104
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/isDark
|
|
105
|
+
*/
|
|
26
106
|
get isDark(): boolean;
|
|
107
|
+
/**
|
|
108
|
+
* Return this color as an `rgba()` string.
|
|
109
|
+
*
|
|
110
|
+
* @returns This color formatted as a CSS `rgba()` string.
|
|
111
|
+
* @example String(new Color(255, 0, 0)) // "rgba(255, 0, 0, 1)"
|
|
112
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/toString
|
|
113
|
+
*/
|
|
27
114
|
toString(): string;
|
|
28
115
|
}
|
|
29
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* Is an unknown value a `Color` instance?
|
|
118
|
+
*
|
|
119
|
+
* @param value The value to test.
|
|
120
|
+
* @returns `true` if `value` is a `Color`, narrowing its type.
|
|
121
|
+
* @example isColor(new Color()) // true
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/util/color/isColor
|
|
123
|
+
*/
|
|
30
124
|
export declare function isColor(value: unknown): value is Color;
|
|
31
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* Assert that an unknown value is a `Color` instance.
|
|
127
|
+
*
|
|
128
|
+
* @param value The value to assert.
|
|
129
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertColor` itself).
|
|
130
|
+
* @throws {RequiredError} If `value` is not a `Color` instance.
|
|
131
|
+
* @example assertColor(new Color());
|
|
132
|
+
* @see https://dhoulb.github.io/shelving/util/color/assertColor
|
|
133
|
+
*/
|
|
32
134
|
export declare function assertColor(value: unknown, caller?: AnyCaller): asserts value is Color;
|
|
33
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Convert an unknown value to a `Color` instance, or return `undefined` if conversion fails.
|
|
137
|
+
*
|
|
138
|
+
* @param value The value to convert.
|
|
139
|
+
* @returns The converted `Color`, or `undefined` if `value` cannot be converted.
|
|
140
|
+
* @example getColor("#F00") // Color(255, 0, 0)
|
|
141
|
+
* @see https://dhoulb.github.io/shelving/util/color/getColor
|
|
142
|
+
*/
|
|
34
143
|
export declare function getColor(value: unknown): Color | undefined;
|
|
35
|
-
/**
|
|
144
|
+
/**
|
|
145
|
+
* Convert a possible color to a `Color` instance, or throw `RequiredError` if it can't be converted.
|
|
146
|
+
*
|
|
147
|
+
* @param value The possible color to convert.
|
|
148
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireColor` itself).
|
|
149
|
+
* @returns The converted `Color`.
|
|
150
|
+
* @throws {RequiredError} If `value` cannot be converted to a `Color`.
|
|
151
|
+
* @example requireColor("#F00") // Color(255, 0, 0)
|
|
152
|
+
* @see https://dhoulb.github.io/shelving/util/color/requireColor
|
|
153
|
+
*/
|
|
36
154
|
export declare function requireColor(value: PossibleColor, caller?: AnyCaller): Color;
|
package/util/color.js
CHANGED
|
@@ -3,11 +3,33 @@ import { boundNumber, roundNumber } from "./number.js";
|
|
|
3
3
|
// Constants.
|
|
4
4
|
const DARK = 140; // Anything with a luminance > 140 is considered light.
|
|
5
5
|
// Regular expressions.
|
|
6
|
+
/**
|
|
7
|
+
* Regular expression matching a three-digit hex color (e.g. `#F00`), capturing each channel.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/util/color/HEX3_REGEXP
|
|
10
|
+
*/
|
|
6
11
|
export const HEX3_REGEXP = /^#?([0-F])([0-F])([0-F])$/i;
|
|
12
|
+
/**
|
|
13
|
+
* Regular expression matching a six or eight digit hex color (e.g. `#FF0000` or `#FF0000FF`), capturing each channel.
|
|
14
|
+
*
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/util/color/HEX6_REGEXP
|
|
16
|
+
*/
|
|
7
17
|
export const HEX6_REGEXP = /^#?([0-F]{2})([0-F]{2})([0-F]{2})([0-F]{2})?$/i;
|
|
8
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Represents an RGBA color with red, green, blue, and alpha channels (each `0`–`255`).
|
|
20
|
+
*
|
|
21
|
+
* @example new Color(255, 0, 0).hex // "#FF0000"
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color
|
|
23
|
+
*/
|
|
9
24
|
export class Color {
|
|
10
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Make a `Color` from an unknown value, or `undefined` if it can't be parsed.
|
|
27
|
+
*
|
|
28
|
+
* @param possible The value to parse, typically a `Color` instance or a three/six/eight digit hex string.
|
|
29
|
+
* @returns The parsed `Color`, or `undefined` if `possible` cannot be converted.
|
|
30
|
+
* @example Color.from("#F00") // Color(255, 0, 0)
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/from
|
|
32
|
+
*/
|
|
11
33
|
static from(possible) {
|
|
12
34
|
if (isColor(possible))
|
|
13
35
|
return possible;
|
|
@@ -19,41 +41,102 @@ export class Color {
|
|
|
19
41
|
}
|
|
20
42
|
}
|
|
21
43
|
}
|
|
44
|
+
/**
|
|
45
|
+
* Red channel, bounded to `0`–`255`.
|
|
46
|
+
*
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/r
|
|
48
|
+
*/
|
|
22
49
|
r;
|
|
50
|
+
/**
|
|
51
|
+
* Green channel, bounded to `0`–`255`.
|
|
52
|
+
*
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/g
|
|
54
|
+
*/
|
|
23
55
|
g;
|
|
56
|
+
/**
|
|
57
|
+
* Blue channel, bounded to `0`–`255`.
|
|
58
|
+
*
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/b
|
|
60
|
+
*/
|
|
24
61
|
b;
|
|
62
|
+
/**
|
|
63
|
+
* Alpha channel, bounded to `0`–`255`.
|
|
64
|
+
*
|
|
65
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/a
|
|
66
|
+
*/
|
|
25
67
|
a;
|
|
68
|
+
/**
|
|
69
|
+
* Create a new `Color` from red, green, blue, and alpha channel values.
|
|
70
|
+
*
|
|
71
|
+
* @param r Red channel, bounded to `0`–`255` (defaults to `255`).
|
|
72
|
+
* @param g Green channel, bounded to `0`–`255` (defaults to `255`).
|
|
73
|
+
* @param b Blue channel, bounded to `0`–`255` (defaults to `255`).
|
|
74
|
+
* @param a Alpha channel, bounded to `0`–`255` (defaults to `255`).
|
|
75
|
+
* @example new Color(255, 0, 0) // opaque red
|
|
76
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/constructor
|
|
77
|
+
*/
|
|
26
78
|
constructor(r = 255, g = 255, b = 255, a = 255) {
|
|
27
79
|
this.r = boundNumber(r, 0, 255);
|
|
28
80
|
this.g = boundNumber(g, 0, 255);
|
|
29
81
|
this.b = boundNumber(b, 0, 255);
|
|
30
82
|
this.a = boundNumber(a, 0, 255);
|
|
31
83
|
}
|
|
32
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* This color as a six or eight digit hex string (eight digits when the alpha channel is less than `255`).
|
|
86
|
+
*
|
|
87
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/hex
|
|
88
|
+
*/
|
|
33
89
|
get hex() {
|
|
34
90
|
return `#${_hex(this.r)}${_hex(this.g)}${_hex(this.b)}${this.a < 255 ? _hex(this.a) : ""}`;
|
|
35
91
|
}
|
|
36
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* This color as a CSS `rgb()` string.
|
|
94
|
+
*
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/rgb
|
|
96
|
+
*/
|
|
37
97
|
get rgb() {
|
|
38
98
|
return `rgb(${this.r}, ${this.g}, ${this.b})`;
|
|
39
99
|
}
|
|
40
|
-
/**
|
|
100
|
+
/**
|
|
101
|
+
* This color as a CSS `rgba()` string.
|
|
102
|
+
*
|
|
103
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/rgba
|
|
104
|
+
*/
|
|
41
105
|
get rgba() {
|
|
42
106
|
return `rgba(${this.r}, ${this.g}, ${this.b}, ${roundNumber(this.a / 256, 4)})`;
|
|
43
107
|
}
|
|
44
|
-
/**
|
|
108
|
+
/**
|
|
109
|
+
* The sRGB luminance of this color (`0`–`255`).
|
|
110
|
+
*
|
|
111
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/luminance
|
|
112
|
+
*/
|
|
45
113
|
get luminance() {
|
|
46
114
|
// Green is the largest component of the luminence, etc.
|
|
47
115
|
return Math.round(0.2126 * this.r + 0.7152 * this.g + 0.0722 * this.b);
|
|
48
116
|
}
|
|
49
|
-
/**
|
|
117
|
+
/**
|
|
118
|
+
* Whether this color is light (its luminance is above the dark/light threshold).
|
|
119
|
+
*
|
|
120
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/isLight
|
|
121
|
+
*/
|
|
50
122
|
get isLight() {
|
|
51
123
|
return this.luminance > DARK;
|
|
52
124
|
}
|
|
53
|
-
/**
|
|
125
|
+
/**
|
|
126
|
+
* Whether this color is dark (its luminance is at or below the dark/light threshold).
|
|
127
|
+
*
|
|
128
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/isDark
|
|
129
|
+
*/
|
|
54
130
|
get isDark() {
|
|
55
131
|
return this.luminance <= DARK;
|
|
56
132
|
}
|
|
133
|
+
/**
|
|
134
|
+
* Return this color as an `rgba()` string.
|
|
135
|
+
*
|
|
136
|
+
* @returns This color formatted as a CSS `rgba()` string.
|
|
137
|
+
* @example String(new Color(255, 0, 0)) // "rgba(255, 0, 0, 1)"
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/util/color/Color/toString
|
|
139
|
+
*/
|
|
57
140
|
toString() {
|
|
58
141
|
return this.rgba;
|
|
59
142
|
}
|
|
@@ -64,20 +147,51 @@ function _parse(hex) {
|
|
|
64
147
|
function _hex(channel) {
|
|
65
148
|
return channel.toString(16).padStart(2, "00");
|
|
66
149
|
}
|
|
67
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Is an unknown value a `Color` instance?
|
|
152
|
+
*
|
|
153
|
+
* @param value The value to test.
|
|
154
|
+
* @returns `true` if `value` is a `Color`, narrowing its type.
|
|
155
|
+
* @example isColor(new Color()) // true
|
|
156
|
+
* @see https://dhoulb.github.io/shelving/util/color/isColor
|
|
157
|
+
*/
|
|
68
158
|
export function isColor(value) {
|
|
69
159
|
return value instanceof Color;
|
|
70
160
|
}
|
|
71
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
* Assert that an unknown value is a `Color` instance.
|
|
163
|
+
*
|
|
164
|
+
* @param value The value to assert.
|
|
165
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertColor` itself).
|
|
166
|
+
* @throws {RequiredError} If `value` is not a `Color` instance.
|
|
167
|
+
* @example assertColor(new Color());
|
|
168
|
+
* @see https://dhoulb.github.io/shelving/util/color/assertColor
|
|
169
|
+
*/
|
|
72
170
|
export function assertColor(value, caller = assertColor) {
|
|
73
171
|
if (!isColor(value))
|
|
74
172
|
throw new RequiredError("Must be color", { received: value, caller });
|
|
75
173
|
}
|
|
76
|
-
/**
|
|
174
|
+
/**
|
|
175
|
+
* Convert an unknown value to a `Color` instance, or return `undefined` if conversion fails.
|
|
176
|
+
*
|
|
177
|
+
* @param value The value to convert.
|
|
178
|
+
* @returns The converted `Color`, or `undefined` if `value` cannot be converted.
|
|
179
|
+
* @example getColor("#F00") // Color(255, 0, 0)
|
|
180
|
+
* @see https://dhoulb.github.io/shelving/util/color/getColor
|
|
181
|
+
*/
|
|
77
182
|
export function getColor(value) {
|
|
78
183
|
return Color.from(value);
|
|
79
184
|
}
|
|
80
|
-
/**
|
|
185
|
+
/**
|
|
186
|
+
* Convert a possible color to a `Color` instance, or throw `RequiredError` if it can't be converted.
|
|
187
|
+
*
|
|
188
|
+
* @param value The possible color to convert.
|
|
189
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireColor` itself).
|
|
190
|
+
* @returns The converted `Color`.
|
|
191
|
+
* @throws {RequiredError} If `value` cannot be converted to a `Color`.
|
|
192
|
+
* @example requireColor("#F00") // Color(255, 0, 0)
|
|
193
|
+
* @see https://dhoulb.github.io/shelving/util/color/requireColor
|
|
194
|
+
*/
|
|
81
195
|
export function requireColor(value, caller = requireColor) {
|
|
82
196
|
const color = getColor(value);
|
|
83
197
|
assertColor(color, caller);
|