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/equal.js
CHANGED
|
@@ -3,37 +3,103 @@ import { isArray } from "./array.js";
|
|
|
3
3
|
import { isMap } from "./map.js";
|
|
4
4
|
import { isObject, isProp } from "./object.js";
|
|
5
5
|
import { compareAscending } from "./sort.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Assert that two values are exactly (referentially) equal, narrowing `left` to the type of `right`.
|
|
8
|
+
*
|
|
9
|
+
* @param left The value to check and narrow.
|
|
10
|
+
* @param right The value `left` must equal.
|
|
11
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertEqual`).
|
|
12
|
+
* @throws {RequiredError} If the values are not equal.
|
|
13
|
+
* @example assertEqual(1, 1); // passes
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/util/equal/assertEqual
|
|
15
|
+
*/
|
|
7
16
|
export function assertEqual(left, right, caller = assertEqual) {
|
|
8
17
|
if (left !== right)
|
|
9
18
|
new RequiredError("Must be equal", { left, right, caller });
|
|
10
19
|
}
|
|
11
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Assert that two values are not equal, narrowing `left` to exclude the type of `right`.
|
|
22
|
+
*
|
|
23
|
+
* @param left The value to check and narrow.
|
|
24
|
+
* @param right The value `left` must not equal.
|
|
25
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertNot`).
|
|
26
|
+
* @throws {RequiredError} If the values are equal.
|
|
27
|
+
* @example assertNot(1, 2); // passes
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/util/equal/assertNot
|
|
29
|
+
*/
|
|
12
30
|
export function assertNot(left, right, caller = assertNot) {
|
|
13
31
|
if (left === right)
|
|
14
32
|
new RequiredError("Must not be equal", { left, right, caller });
|
|
15
33
|
}
|
|
16
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Is unknown value `left` exactly (referentially) equal to `right`?
|
|
36
|
+
*
|
|
37
|
+
* @param left The value to check and narrow.
|
|
38
|
+
* @param right The value to compare against.
|
|
39
|
+
* @returns `true` if the values are strictly equal.
|
|
40
|
+
* @example isEqual(1, 1) // true
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isEqual
|
|
42
|
+
*/
|
|
17
43
|
export function isEqual(left, right) {
|
|
18
44
|
return left === right;
|
|
19
45
|
}
|
|
20
|
-
/**
|
|
46
|
+
/**
|
|
47
|
+
* Is unknown value `left` not exactly (referentially) equal to `right`?
|
|
48
|
+
*
|
|
49
|
+
* @param left The value to check and narrow.
|
|
50
|
+
* @param right The value to compare against.
|
|
51
|
+
* @returns `true` if the values are not strictly equal.
|
|
52
|
+
* @example notEqual(1, 2) // true
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/util/equal/notEqual
|
|
54
|
+
*/
|
|
21
55
|
export function notEqual(left, right) {
|
|
22
56
|
return left !== right;
|
|
23
57
|
}
|
|
24
|
-
/**
|
|
58
|
+
/**
|
|
59
|
+
* Is unknown value `left` less than `right` (using `compareAscending`)?
|
|
60
|
+
*
|
|
61
|
+
* @param left The value to compare.
|
|
62
|
+
* @param right The value to compare against.
|
|
63
|
+
* @returns `true` if `left` sorts before `right`.
|
|
64
|
+
* @example isLess(1, 2) // true
|
|
65
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isLess
|
|
66
|
+
*/
|
|
25
67
|
export function isLess(left, right) {
|
|
26
68
|
return compareAscending(left, right) < 0;
|
|
27
69
|
}
|
|
28
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Is unknown value `left` less than or equal to `right` (using `compareAscending`)?
|
|
72
|
+
*
|
|
73
|
+
* @param left The value to compare.
|
|
74
|
+
* @param right The value to compare against.
|
|
75
|
+
* @returns `true` if `left` sorts before or equal to `right`.
|
|
76
|
+
* @example isEqualLess(2, 2) // true
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isEqualLess
|
|
78
|
+
*/
|
|
29
79
|
export function isEqualLess(left, right) {
|
|
30
80
|
return compareAscending(left, right) <= 0;
|
|
31
81
|
}
|
|
32
|
-
/**
|
|
82
|
+
/**
|
|
83
|
+
* Is unknown value `left` greater than `right` (using `compareAscending`)?
|
|
84
|
+
*
|
|
85
|
+
* @param left The value to compare.
|
|
86
|
+
* @param right The value to compare against.
|
|
87
|
+
* @returns `true` if `left` sorts after `right`.
|
|
88
|
+
* @example isGreater(2, 1) // true
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isGreater
|
|
90
|
+
*/
|
|
33
91
|
export function isGreater(left, right) {
|
|
34
92
|
return compareAscending(left, right) > 0;
|
|
35
93
|
}
|
|
36
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* Is unknown value `left` greater than or equal to `right` (using `compareAscending`)?
|
|
96
|
+
*
|
|
97
|
+
* @param left The value to compare.
|
|
98
|
+
* @param right The value to compare against.
|
|
99
|
+
* @returns `true` if `left` sorts after or equal to `right`.
|
|
100
|
+
* @example isEqualGreater(2, 2) // true
|
|
101
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isEqualGreater
|
|
102
|
+
*/
|
|
37
103
|
export function isEqualGreater(left, right) {
|
|
38
104
|
return compareAscending(left, right) >= 0;
|
|
39
105
|
}
|
|
@@ -53,27 +119,62 @@ function _isEqualRecursively(left, right, recursor) {
|
|
|
53
119
|
/**
|
|
54
120
|
* Are two unknown values shallowly equal?
|
|
55
121
|
* - If the values are both arrays/objects, see if the items/properties are **shallowly** equal with each other.
|
|
122
|
+
*
|
|
123
|
+
* @param left The value to check and narrow.
|
|
124
|
+
* @param right The value to compare against.
|
|
125
|
+
* @returns `true` if the values are shallowly equal.
|
|
126
|
+
* @example isShallowEqual({ a: 1 }, { a: 1 }) // true
|
|
127
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isShallowEqual
|
|
56
128
|
*/
|
|
57
129
|
export function isShallowEqual(left, right) {
|
|
58
130
|
return _isEqualRecursively(left, right, isEqual);
|
|
59
131
|
}
|
|
60
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* Are two unknown values not shallowly equal?
|
|
134
|
+
*
|
|
135
|
+
* @param left The value to check and narrow.
|
|
136
|
+
* @param right The value to compare against.
|
|
137
|
+
* @returns `true` if the values are not shallowly equal.
|
|
138
|
+
* @example notShallowEqual({ a: 1 }, { a: 2 }) // true
|
|
139
|
+
* @see https://dhoulb.github.io/shelving/util/equal/notShallowEqual
|
|
140
|
+
*/
|
|
61
141
|
export function notShallowEqual(left, right) {
|
|
62
142
|
return !isShallowEqual(left, right);
|
|
63
143
|
}
|
|
64
144
|
/**
|
|
65
145
|
* Are two unknown values deeply equal?
|
|
66
146
|
* - If the values are both arrays/objects, see if the items/properties are **deeply** equal with each other.
|
|
147
|
+
*
|
|
148
|
+
* @param left The value to check and narrow.
|
|
149
|
+
* @param right The value to compare against.
|
|
150
|
+
* @returns `true` if the values are deeply equal.
|
|
151
|
+
* @example isDeepEqual({ a: { b: 1 } }, { a: { b: 1 } }) // true
|
|
152
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isDeepEqual
|
|
67
153
|
*/
|
|
68
154
|
export function isDeepEqual(left, right) {
|
|
69
155
|
return _isEqualRecursively(left, right, isDeepEqual);
|
|
70
156
|
}
|
|
71
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Are two unknown values not deeply equal?
|
|
159
|
+
*
|
|
160
|
+
* @param left The value to check and narrow.
|
|
161
|
+
* @param right The value to compare against.
|
|
162
|
+
* @returns `true` if the values are not deeply equal.
|
|
163
|
+
* @example notDeepEqual({ a: { b: 1 } }, { a: { b: 2 } }) // true
|
|
164
|
+
* @see https://dhoulb.github.io/shelving/util/equal/notDeepEqual
|
|
165
|
+
*/
|
|
72
166
|
export function notDeepEqual(left, right) {
|
|
73
167
|
return !isShallowEqual(left, right);
|
|
74
168
|
}
|
|
75
169
|
/**
|
|
76
|
-
* Are two maps equal
|
|
170
|
+
* Are two maps equal based on their items?
|
|
171
|
+
*
|
|
172
|
+
* @param left The map to check and narrow.
|
|
173
|
+
* @param right The map to compare against.
|
|
174
|
+
* @param recursor Function that checks each value of the map (defaults to `isEqual` for strict equality; pass `isDeepEqual` for deep equality).
|
|
175
|
+
* @returns `true` if both maps have the same keys and matching values.
|
|
176
|
+
* @example isMapEqual(new Map([["a", 1]]), new Map([["a", 1]])) // true
|
|
177
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isMapEqual
|
|
77
178
|
*/
|
|
78
179
|
export function isMapEqual(left, right, recursor = isEqual) {
|
|
79
180
|
if (left === right)
|
|
@@ -93,9 +194,14 @@ export function isMapEqual(left, right, recursor = isEqual) {
|
|
|
93
194
|
/**
|
|
94
195
|
* Are two arrays equal based on their items?
|
|
95
196
|
*
|
|
197
|
+
* @param left The array to check and narrow.
|
|
198
|
+
* @param right The array to compare against.
|
|
96
199
|
* @param recursor Function that checks each item of the array.
|
|
97
200
|
* - Defaults to `isEqual()` to check strict equality of the items.
|
|
98
201
|
* - Use `isDeepEqual()` as the recursor to check to check deep equality of the items.
|
|
202
|
+
* @returns `true` if both arrays have the same length and matching items.
|
|
203
|
+
* @example isArrayEqual([1, 2], [1, 2]) // true
|
|
204
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isArrayEqual
|
|
99
205
|
*/
|
|
100
206
|
export function isArrayEqual(left, right, recursor = isEqual) {
|
|
101
207
|
if (left === right)
|
|
@@ -107,19 +213,51 @@ export function isArrayEqual(left, right, recursor = isEqual) {
|
|
|
107
213
|
return false;
|
|
108
214
|
return true;
|
|
109
215
|
}
|
|
110
|
-
/**
|
|
216
|
+
/**
|
|
217
|
+
* Is unknown value `left` in array `right`?
|
|
218
|
+
*
|
|
219
|
+
* @param left The value to look for and narrow.
|
|
220
|
+
* @param right The array to search within.
|
|
221
|
+
* @returns `true` if `left` is an item of `right`.
|
|
222
|
+
* @example isInArray(2, [1, 2, 3]) // true
|
|
223
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isInArray
|
|
224
|
+
*/
|
|
111
225
|
export function isInArray(left, right) {
|
|
112
226
|
return right.includes(left);
|
|
113
227
|
}
|
|
114
|
-
/**
|
|
228
|
+
/**
|
|
229
|
+
* Is unknown value `left` not in array `right`?
|
|
230
|
+
*
|
|
231
|
+
* @param left The value to look for.
|
|
232
|
+
* @param right The array to search within.
|
|
233
|
+
* @returns `true` if `left` is not an item of `right`.
|
|
234
|
+
* @example notInArray(9, [1, 2, 3]) // true
|
|
235
|
+
* @see https://dhoulb.github.io/shelving/util/equal/notInArray
|
|
236
|
+
*/
|
|
115
237
|
export function notInArray(left, right) {
|
|
116
238
|
return !isInArray(left, right);
|
|
117
239
|
}
|
|
118
|
-
/**
|
|
240
|
+
/**
|
|
241
|
+
* Is unknown value `left` an array that includes `right`?
|
|
242
|
+
*
|
|
243
|
+
* @param left The value to check and narrow.
|
|
244
|
+
* @param right The item the array must include.
|
|
245
|
+
* @returns `true` if `left` is an array containing `right`.
|
|
246
|
+
* @example isArrayWith([1, 2, 3], 2) // true
|
|
247
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isArrayWith
|
|
248
|
+
*/
|
|
119
249
|
export function isArrayWith(left, right) {
|
|
120
250
|
return isArray(left) && left.includes(right);
|
|
121
251
|
}
|
|
122
|
-
/**
|
|
252
|
+
/**
|
|
253
|
+
* Is unknown value `left` not an array, or an array that does not include `right`?
|
|
254
|
+
*
|
|
255
|
+
* @param left The value to check.
|
|
256
|
+
* @param right The item the array must include.
|
|
257
|
+
* @returns `true` if `left` is not an array or does not include `right`.
|
|
258
|
+
* @example notArrayWith([1, 2, 3], 9) // true
|
|
259
|
+
* @see https://dhoulb.github.io/shelving/util/equal/notArrayWith
|
|
260
|
+
*/
|
|
123
261
|
export function notArrayWith(left, right) {
|
|
124
262
|
return !isArrayWith(left, right);
|
|
125
263
|
}
|
|
@@ -128,9 +266,14 @@ export function notArrayWith(left, right) {
|
|
|
128
266
|
* - `left` must have every property present in `right`
|
|
129
267
|
* - `left` must not have excess properties not present in `right`
|
|
130
268
|
*
|
|
269
|
+
* @param left The object to check and narrow.
|
|
270
|
+
* @param right The object to compare against.
|
|
131
271
|
* @param recursor Function that checks each prop of the object.
|
|
132
272
|
* - Defaults to `isEqual()` to check strict equality of the properties.
|
|
133
273
|
* - Use `isDeepEqual()` as the recursor to check to check deep equality of the properties.
|
|
274
|
+
* @returns `true` if both objects have exactly the same own props and matching values.
|
|
275
|
+
* @example isObjectEqual({ a: 1 }, { a: 1 }) // true
|
|
276
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isObjectEqual
|
|
134
277
|
*/
|
|
135
278
|
export function isObjectEqual(left, right, recursor = isEqual) {
|
|
136
279
|
if (left === right)
|
|
@@ -149,9 +292,14 @@ export function isObjectEqual(left, right, recursor = isEqual) {
|
|
|
149
292
|
* - `left` must have every property present in `right`
|
|
150
293
|
* - `left` may have have excess properties not present in `right`
|
|
151
294
|
*
|
|
295
|
+
* @param left The object to check and narrow.
|
|
296
|
+
* @param right The object whose props `left` must contain.
|
|
152
297
|
* @param recursor Function that checks each prop of the object.
|
|
153
298
|
* - Defaults to `isEqual()` to check strict equality of the properties.
|
|
154
299
|
* - Use `isDeepEqual()` as the recursor to check to check deep equality of the properties.
|
|
300
|
+
* @returns `true` if `left` contains every prop of `right` with matching values.
|
|
301
|
+
* @example isObjectMatch({ a: 1, b: 2 }, { a: 1 }) // true
|
|
302
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isObjectMatch
|
|
155
303
|
*/
|
|
156
304
|
export function isObjectMatch(left, right, recursor = isEqual) {
|
|
157
305
|
if (left === right)
|
|
@@ -162,11 +310,27 @@ export function isObjectMatch(left, right, recursor = isEqual) {
|
|
|
162
310
|
return false;
|
|
163
311
|
return true;
|
|
164
312
|
}
|
|
165
|
-
/**
|
|
313
|
+
/**
|
|
314
|
+
* Is unknown value `left` an object with every prop from `right`?
|
|
315
|
+
*
|
|
316
|
+
* @param left The value to check.
|
|
317
|
+
* @param right The object whose props `left` must contain.
|
|
318
|
+
* @returns `true` if `left` is an object containing every prop of `right`.
|
|
319
|
+
* @example isObjectWith({ a: 1, b: 2 }, { a: 1 }) // true
|
|
320
|
+
* @see https://dhoulb.github.io/shelving/util/equal/isObjectWith
|
|
321
|
+
*/
|
|
166
322
|
export function isObjectWith(left, right) {
|
|
167
323
|
return isObject(left) && isObjectMatch(left, right);
|
|
168
324
|
}
|
|
169
|
-
/**
|
|
325
|
+
/**
|
|
326
|
+
* Is unknown value `left` not an object or missing one or more props from `right`?
|
|
327
|
+
*
|
|
328
|
+
* @param left The value to check.
|
|
329
|
+
* @param right The object whose props `left` must contain.
|
|
330
|
+
* @returns `true` if `left` is not an object or is missing one or more props of `right`.
|
|
331
|
+
* @example notObjectWith({ a: 1 }, { b: 2 }) // true
|
|
332
|
+
* @see https://dhoulb.github.io/shelving/util/equal/notObjectWith
|
|
333
|
+
*/
|
|
170
334
|
export function notObjectWith(left, right) {
|
|
171
335
|
return !isObjectWith(left, right);
|
|
172
336
|
}
|
package/util/error.d.ts
CHANGED
|
@@ -1,24 +1,65 @@
|
|
|
1
1
|
import type { ImmutableDictionary } from "./dictionary.js";
|
|
2
2
|
import type { AnyCaller } from "./function.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Log an error to the console.
|
|
5
|
+
*
|
|
6
|
+
* @param reason The error (or any thrown value) to log.
|
|
7
|
+
* @returns Nothing.
|
|
8
|
+
* @example logError(new Error("Boom")) // logs to console.error
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/util/error/logError
|
|
10
|
+
*/
|
|
4
11
|
export declare function logError(reason: unknown): void;
|
|
5
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Is an unknown value an `Error` instance?
|
|
14
|
+
* - Uses the native `Error.isError()` if available, otherwise falls back to `instanceof Error`.
|
|
15
|
+
*
|
|
16
|
+
* @param v The value to check and narrow.
|
|
17
|
+
* @returns `true` if `v` is an `Error` (narrowing it, with an optional `code` string).
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/util/error/isError
|
|
19
|
+
*/
|
|
6
20
|
export declare function isError(v: unknown): v is Error & {
|
|
7
21
|
readonly code?: string | undefined;
|
|
8
22
|
};
|
|
9
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Things that can be a message: a string, or an object with a `message` string property.
|
|
25
|
+
*
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/util/error/PossibleMessage
|
|
27
|
+
*/
|
|
10
28
|
export type PossibleMessage = {
|
|
11
29
|
message: string;
|
|
12
30
|
} | string;
|
|
13
|
-
/**
|
|
31
|
+
/**
|
|
32
|
+
* Return the string message from an unknown value, or return `undefined` if it could not be found.
|
|
33
|
+
*
|
|
34
|
+
* @param input The value to read a message from (a string, or an object with a `message` string).
|
|
35
|
+
* @returns The message string, or `undefined` if none could be found.
|
|
36
|
+
* @example getMessage(new Error("Boom")) // "Boom"
|
|
37
|
+
* @example getMessage(123) // undefined
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/util/error/getMessage
|
|
39
|
+
*/
|
|
14
40
|
export declare function getMessage(input: unknown): string | undefined;
|
|
15
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Require a message from an unknown value, or throw `RequiredError` if it could not be found.
|
|
43
|
+
*
|
|
44
|
+
* @param input The value to read a message from (a string, or an object with a `message` string).
|
|
45
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireMessage`).
|
|
46
|
+
* @returns The message string.
|
|
47
|
+
* @throws `RequiredError` if no message could be found.
|
|
48
|
+
* @example requireMessage(new Error("Boom")) // "Boom"
|
|
49
|
+
* @see https://dhoulb.github.io/shelving/util/error/requireMessage
|
|
50
|
+
*/
|
|
16
51
|
export declare function requireMessage(input: PossibleMessage, caller?: AnyCaller): string;
|
|
17
52
|
/**
|
|
18
53
|
* Split a string message into lines, look for prefixes like `name:`, and return a dictionary of those named messages.
|
|
19
54
|
* - Full messages strings can have multiple lines separated by `\n` newline.
|
|
20
55
|
* - Named messages are extracted into their own entries in the dictionary.
|
|
21
56
|
* - Unnamed messages are combined into a single entry with the key `""` (empty string).
|
|
57
|
+
*
|
|
58
|
+
* @param input The value to read a message from (a string, or an object with a `message` string).
|
|
59
|
+
* @returns Dictionary mapping each name (or `""` for unnamed lines) to its combined message.
|
|
60
|
+
* @throws `RequiredError` if no message could be found.
|
|
61
|
+
* @example splitMessage("name: Bad\nUh oh") // { name: "Bad", "": "Uh oh" }
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/util/error/splitMessage
|
|
22
63
|
*/
|
|
23
64
|
export declare function splitMessage(input: PossibleMessage): ImmutableDictionary<string>;
|
|
24
65
|
/**
|
|
@@ -26,10 +67,21 @@ export declare function splitMessage(input: PossibleMessage): ImmutableDictionar
|
|
|
26
67
|
* - The `""` (empty string) key is emitted as unnamed lines.
|
|
27
68
|
* - Named messages are emitted as `name: message`, one line per message line.
|
|
28
69
|
* - Empty lines are skipped and each emitted line is trimmed to match `splitMessage()` semantics.
|
|
70
|
+
*
|
|
71
|
+
* @param input Dictionary mapping each name (or `""` for unnamed lines) to its message.
|
|
72
|
+
* @returns The combined message string, with one line per message line.
|
|
73
|
+
* @example joinMessage({ name: "Bad", "": "Uh oh" }) // "name: Bad\nUh oh"
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/util/error/joinMessage
|
|
29
75
|
*/
|
|
30
76
|
export declare function joinMessage(input: ImmutableDictionary<string>): string;
|
|
31
77
|
/**
|
|
32
78
|
* Name a message by applying a `name: ` prefix to it.
|
|
33
79
|
* - Assumes each line in the message is a separate error, so each line has the same prefix applied.
|
|
80
|
+
*
|
|
81
|
+
* @param name The name to prefix each line of the message with.
|
|
82
|
+
* @param message The message to prefix (may contain multiple `\n`-separated lines).
|
|
83
|
+
* @returns The message with `name: ` prefixed to every line.
|
|
84
|
+
* @example getNamedMessage("email", "Required\nInvalid") // "email: Required\nemail: Invalid"
|
|
85
|
+
* @see https://dhoulb.github.io/shelving/util/error/getNamedMessage
|
|
34
86
|
*/
|
|
35
87
|
export declare function getNamedMessage(name: string | number, message: string): string;
|
package/util/error.js
CHANGED
|
@@ -1,18 +1,49 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
2
|
import { isObject } from "./object.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Log an error to the console.
|
|
5
|
+
*
|
|
6
|
+
* @param reason The error (or any thrown value) to log.
|
|
7
|
+
* @returns Nothing.
|
|
8
|
+
* @example logError(new Error("Boom")) // logs to console.error
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/util/error/logError
|
|
10
|
+
*/
|
|
4
11
|
export function logError(reason) {
|
|
5
12
|
console.error(reason);
|
|
6
13
|
}
|
|
7
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Is an unknown value an `Error` instance?
|
|
16
|
+
* - Uses the native `Error.isError()` if available, otherwise falls back to `instanceof Error`.
|
|
17
|
+
*
|
|
18
|
+
* @param v The value to check and narrow.
|
|
19
|
+
* @returns `true` if `v` is an `Error` (narrowing it, with an optional `code` string).
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/util/error/isError
|
|
21
|
+
*/
|
|
8
22
|
export function isError(v) {
|
|
9
23
|
return typeof Error.isError === "function" ? Error.isError(v) : v instanceof Error;
|
|
10
24
|
}
|
|
11
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Return the string message from an unknown value, or return `undefined` if it could not be found.
|
|
27
|
+
*
|
|
28
|
+
* @param input The value to read a message from (a string, or an object with a `message` string).
|
|
29
|
+
* @returns The message string, or `undefined` if none could be found.
|
|
30
|
+
* @example getMessage(new Error("Boom")) // "Boom"
|
|
31
|
+
* @example getMessage(123) // undefined
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/util/error/getMessage
|
|
33
|
+
*/
|
|
12
34
|
export function getMessage(input) {
|
|
13
35
|
return typeof input === "string" ? input : isObject(input) && typeof input.message === "string" ? input.message : undefined;
|
|
14
36
|
}
|
|
15
|
-
/**
|
|
37
|
+
/**
|
|
38
|
+
* Require a message from an unknown value, or throw `RequiredError` if it could not be found.
|
|
39
|
+
*
|
|
40
|
+
* @param input The value to read a message from (a string, or an object with a `message` string).
|
|
41
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireMessage`).
|
|
42
|
+
* @returns The message string.
|
|
43
|
+
* @throws `RequiredError` if no message could be found.
|
|
44
|
+
* @example requireMessage(new Error("Boom")) // "Boom"
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/error/requireMessage
|
|
46
|
+
*/
|
|
16
47
|
export function requireMessage(input, caller = requireMessage) {
|
|
17
48
|
const message = getMessage(input);
|
|
18
49
|
if (message === undefined)
|
|
@@ -24,6 +55,12 @@ export function requireMessage(input, caller = requireMessage) {
|
|
|
24
55
|
* - Full messages strings can have multiple lines separated by `\n` newline.
|
|
25
56
|
* - Named messages are extracted into their own entries in the dictionary.
|
|
26
57
|
* - Unnamed messages are combined into a single entry with the key `""` (empty string).
|
|
58
|
+
*
|
|
59
|
+
* @param input The value to read a message from (a string, or an object with a `message` string).
|
|
60
|
+
* @returns Dictionary mapping each name (or `""` for unnamed lines) to its combined message.
|
|
61
|
+
* @throws `RequiredError` if no message could be found.
|
|
62
|
+
* @example splitMessage("name: Bad\nUh oh") // { name: "Bad", "": "Uh oh" }
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/util/error/splitMessage
|
|
27
64
|
*/
|
|
28
65
|
export function splitMessage(input) {
|
|
29
66
|
const messages = requireMessage(input, splitMessage).split("\n");
|
|
@@ -57,6 +94,11 @@ export function splitMessage(input) {
|
|
|
57
94
|
* - The `""` (empty string) key is emitted as unnamed lines.
|
|
58
95
|
* - Named messages are emitted as `name: message`, one line per message line.
|
|
59
96
|
* - Empty lines are skipped and each emitted line is trimmed to match `splitMessage()` semantics.
|
|
97
|
+
*
|
|
98
|
+
* @param input Dictionary mapping each name (or `""` for unnamed lines) to its message.
|
|
99
|
+
* @returns The combined message string, with one line per message line.
|
|
100
|
+
* @example joinMessage({ name: "Bad", "": "Uh oh" }) // "name: Bad\nUh oh"
|
|
101
|
+
* @see https://dhoulb.github.io/shelving/util/error/joinMessage
|
|
60
102
|
*/
|
|
61
103
|
export function joinMessage(input) {
|
|
62
104
|
const output = [];
|
|
@@ -73,6 +115,12 @@ export function joinMessage(input) {
|
|
|
73
115
|
/**
|
|
74
116
|
* Name a message by applying a `name: ` prefix to it.
|
|
75
117
|
* - Assumes each line in the message is a separate error, so each line has the same prefix applied.
|
|
118
|
+
*
|
|
119
|
+
* @param name The name to prefix each line of the message with.
|
|
120
|
+
* @param message The message to prefix (may contain multiple `\n`-separated lines).
|
|
121
|
+
* @returns The message with `name: ` prefixed to every line.
|
|
122
|
+
* @example getNamedMessage("email", "Required\nInvalid") // "email: Required\nemail: Invalid"
|
|
123
|
+
* @see https://dhoulb.github.io/shelving/util/error/getNamedMessage
|
|
76
124
|
*/
|
|
77
125
|
export function getNamedMessage(name, message) {
|
|
78
126
|
return `${name}: ${message.split("\n").join(`\n${name}: `)}`;
|
package/util/file.d.ts
CHANGED
|
@@ -1,6 +1,10 @@
|
|
|
1
1
|
import type { AnyCaller } from "./function.js";
|
|
2
2
|
import type { Nullish } from "./null.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* List of file types in `extension: mime` format.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/util/file/FileTypes
|
|
7
|
+
*/
|
|
4
8
|
export type FileTypes = {
|
|
5
9
|
[extension: string]: string;
|
|
6
10
|
};
|
|
@@ -9,13 +13,32 @@ export type FileTypes = {
|
|
|
9
13
|
* - Extension with no leading dot, e.g. `"ts"`.
|
|
10
14
|
* - Returns `undefined` for either part if the filename has no dot or starts with a dot only.
|
|
11
15
|
*
|
|
12
|
-
* @
|
|
13
|
-
* @
|
|
14
|
-
* @example
|
|
15
|
-
* @example
|
|
16
|
+
* @param file The filename to split, or a nullish value (defaults to `""`).
|
|
17
|
+
* @returns A `[base, extension]` tuple, with `undefined` for either part that is absent.
|
|
18
|
+
* @example splitFileExtension("array.ts") // ["array", "ts"]
|
|
19
|
+
* @example splitFileExtension("no-ext") // ["no-ext", undefined]
|
|
20
|
+
* @example splitFileExtension(".gitignore") // [undefined, "gitignore"]
|
|
21
|
+
* @example splitFileExtension(undefined) // [undefined, undefined]
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/util/file/splitFileExtension
|
|
16
23
|
*/
|
|
17
24
|
export declare function splitFileExtension(file?: Nullish<string>): [base: string | undefined, extension: string | undefined];
|
|
18
|
-
/**
|
|
25
|
+
/**
|
|
26
|
+
* Get the file extension from a file path, e.g. `"md"`, or return `undefined` if the input has no extension.
|
|
27
|
+
*
|
|
28
|
+
* @param file The filename to read the extension from, or a nullish value.
|
|
29
|
+
* @returns The extension (no leading dot), or `undefined` if the input has no extension.
|
|
30
|
+
* @example getFileExtension("readme.md") // "md"
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/util/file/getFileExtension
|
|
32
|
+
*/
|
|
19
33
|
export declare function getFileExtension(file: Nullish<string>): string | undefined;
|
|
20
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Get the file extension from a file path e.g. `"tsx"`, or throw `RequiredError` if the input has no extension.
|
|
36
|
+
*
|
|
37
|
+
* @param file The filename to read the extension from.
|
|
38
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireFileExtension`).
|
|
39
|
+
* @returns The extension (no leading dot).
|
|
40
|
+
* @throws `RequiredError` if the input has no extension.
|
|
41
|
+
* @example requireFileExtension("component.tsx") // "tsx"
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/util/file/requireFileExtension
|
|
43
|
+
*/
|
|
21
44
|
export declare function requireFileExtension(file: string, caller?: AnyCaller): string;
|
package/util/file.js
CHANGED
|
@@ -4,10 +4,13 @@ import { RequiredError } from "../error/RequiredError.js";
|
|
|
4
4
|
* - Extension with no leading dot, e.g. `"ts"`.
|
|
5
5
|
* - Returns `undefined` for either part if the filename has no dot or starts with a dot only.
|
|
6
6
|
*
|
|
7
|
-
* @
|
|
8
|
-
* @
|
|
9
|
-
* @example
|
|
10
|
-
* @example
|
|
7
|
+
* @param file The filename to split, or a nullish value (defaults to `""`).
|
|
8
|
+
* @returns A `[base, extension]` tuple, with `undefined` for either part that is absent.
|
|
9
|
+
* @example splitFileExtension("array.ts") // ["array", "ts"]
|
|
10
|
+
* @example splitFileExtension("no-ext") // ["no-ext", undefined]
|
|
11
|
+
* @example splitFileExtension(".gitignore") // [undefined, "gitignore"]
|
|
12
|
+
* @example splitFileExtension(undefined) // [undefined, undefined]
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/util/file/splitFileExtension
|
|
11
14
|
*/
|
|
12
15
|
export function splitFileExtension(file = "") {
|
|
13
16
|
if (!file)
|
|
@@ -17,11 +20,27 @@ export function splitFileExtension(file = "") {
|
|
|
17
20
|
return [file, undefined];
|
|
18
21
|
return [file.slice(0, i) || undefined, file.slice(i + 1) || undefined];
|
|
19
22
|
}
|
|
20
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Get the file extension from a file path, e.g. `"md"`, or return `undefined` if the input has no extension.
|
|
25
|
+
*
|
|
26
|
+
* @param file The filename to read the extension from, or a nullish value.
|
|
27
|
+
* @returns The extension (no leading dot), or `undefined` if the input has no extension.
|
|
28
|
+
* @example getFileExtension("readme.md") // "md"
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/util/file/getFileExtension
|
|
30
|
+
*/
|
|
21
31
|
export function getFileExtension(file) {
|
|
22
32
|
return splitFileExtension(file)[1];
|
|
23
33
|
}
|
|
24
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Get the file extension from a file path e.g. `"tsx"`, or throw `RequiredError` if the input has no extension.
|
|
36
|
+
*
|
|
37
|
+
* @param file The filename to read the extension from.
|
|
38
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireFileExtension`).
|
|
39
|
+
* @returns The extension (no leading dot).
|
|
40
|
+
* @throws `RequiredError` if the input has no extension.
|
|
41
|
+
* @example requireFileExtension("component.tsx") // "tsx"
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/util/file/requireFileExtension
|
|
43
|
+
*/
|
|
25
44
|
export function requireFileExtension(file, caller = requireFileExtension) {
|
|
26
45
|
const extension = getFileExtension(file);
|
|
27
46
|
if (!extension)
|
package/util/filter.d.ts
CHANGED
|
@@ -1,10 +1,42 @@
|
|
|
1
1
|
import type { ImmutableArray } from "./array.js";
|
|
2
2
|
import type { Arguments } from "./function.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Function that can match an item against a target.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/util/filter/Match
|
|
7
|
+
*/
|
|
4
8
|
export type Match<A extends Arguments = unknown[]> = (...args: A) => boolean;
|
|
5
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Filter an iterable set of items using a matcher.
|
|
11
|
+
*
|
|
12
|
+
* @param items Iterable of items to filter.
|
|
13
|
+
* @param match Matcher called with each item (plus any extra `args`); items it returns `true` for are kept.
|
|
14
|
+
* @param args Extra arguments passed to `match` after each item.
|
|
15
|
+
* @returns Iterable yielding only the items the matcher returned `true` for.
|
|
16
|
+
* @example Array.from(filterItems([1, 2, 3], n => n > 1)) // [2, 3]
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/util/filter/filterItems
|
|
18
|
+
*/
|
|
6
19
|
export declare function filterItems<T, A extends Arguments = []>(items: Iterable<T>, match: Match<[T, ...A]>, ...args: A): Iterable<T>;
|
|
7
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Filter an array (immutably) using a matcher.
|
|
22
|
+
* - Returns the exact same array instance if no items were removed (for referential stability).
|
|
23
|
+
*
|
|
24
|
+
* @param input Array of items to filter.
|
|
25
|
+
* @param match Matcher called with each item (plus any extra `args`); items it returns `true` for are kept.
|
|
26
|
+
* @param args Extra arguments passed to `match` after each item.
|
|
27
|
+
* @returns A filtered array, or the same `input` instance if nothing was removed.
|
|
28
|
+
* @example filterArray([1, 2, 3], n => n > 1) // [2, 3]
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/util/filter/filterArray
|
|
30
|
+
*/
|
|
8
31
|
export declare function filterArray<T, A extends Arguments = []>(input: ImmutableArray<T>, match: Match<[T, ...A]>, ...args: A): ImmutableArray<T>;
|
|
9
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* Filter a sequence of values using a matcher.
|
|
34
|
+
*
|
|
35
|
+
* @param sequence Async iterable of items to filter.
|
|
36
|
+
* @param match Matcher called with each item (plus any extra `args`); items it returns `true` for are kept.
|
|
37
|
+
* @param args Extra arguments passed to `match` after each item.
|
|
38
|
+
* @returns Async iterable yielding only the items the matcher returned `true` for.
|
|
39
|
+
* @example for await (const n of filterSequence(stream, n => n > 1)) { ... }
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/util/filter/filterSequence
|
|
41
|
+
*/
|
|
10
42
|
export declare function filterSequence<T, A extends Arguments = []>(sequence: AsyncIterable<T>, match: Match, ...args: A): AsyncIterable<T>;
|