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/units.d.ts
CHANGED
|
@@ -11,14 +11,36 @@ interface UnitProps<T extends string> extends UnitFormatOptions {
|
|
|
11
11
|
/** Conversions to other units (typically needs at least the base conversion, unless it's already the base unit). */
|
|
12
12
|
readonly to?: Conversions<T>;
|
|
13
13
|
}
|
|
14
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Represent a single unit of measure within a `UnitList`, e.g. `kilometer`.
|
|
16
|
+
*
|
|
17
|
+
* - Knows how to convert amounts to/from other units in its list and to format them for display.
|
|
18
|
+
*
|
|
19
|
+
* @param list `UnitList` this unit belongs to.
|
|
20
|
+
* @param key String key for this unit, e.g. `kilometer`.
|
|
21
|
+
* @param props Props to configure this unit (conversions and formatting options).
|
|
22
|
+
* @example LENGTH_UNITS.require("kilometer").to(5, "meter") // 5000
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit
|
|
24
|
+
*/
|
|
15
25
|
export declare class Unit<K extends string> {
|
|
16
26
|
private readonly _to;
|
|
17
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* `UnitList` this unit belongs to.
|
|
29
|
+
*
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/list
|
|
31
|
+
*/
|
|
18
32
|
readonly list: UnitList<K>;
|
|
19
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* String key for this unit, e.g. `kilometer`
|
|
35
|
+
*
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/key
|
|
37
|
+
*/
|
|
20
38
|
readonly key: K;
|
|
21
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Possible options for formatting these units.
|
|
41
|
+
*
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/options
|
|
43
|
+
*/
|
|
22
44
|
readonly options: Readonly<UnitFormatOptions> | undefined;
|
|
23
45
|
constructor(
|
|
24
46
|
/** `UnitList` this unit belongs to. */
|
|
@@ -27,9 +49,29 @@ export declare class Unit<K extends string> {
|
|
|
27
49
|
key: K,
|
|
28
50
|
/** Props to configure this unit. */
|
|
29
51
|
{ to, ...options }: UnitProps<K>);
|
|
30
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Convert an amount from this unit to another unit.
|
|
54
|
+
*
|
|
55
|
+
* @param amount The amount in this unit.
|
|
56
|
+
* @param targetKey Key of the unit to convert to (defaults to the list's base unit).
|
|
57
|
+
* @returns The amount expressed in the target unit.
|
|
58
|
+
* @throws `RequiredError` if `targetKey` is not a unit in this list.
|
|
59
|
+
* @throws `ValueError` if no conversion path exists to the target unit.
|
|
60
|
+
* @example LENGTH_UNITS.require("kilometer").to(1, "meter") // 1000
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/to
|
|
62
|
+
*/
|
|
31
63
|
to(amount: number, targetKey?: K): number;
|
|
32
|
-
/**
|
|
64
|
+
/**
|
|
65
|
+
* Convert an amount from another unit to this unit.
|
|
66
|
+
*
|
|
67
|
+
* @param amount The amount in the source unit.
|
|
68
|
+
* @param sourceKey Key of the unit to convert from (defaults to the list's base unit).
|
|
69
|
+
* @returns The amount expressed in this unit.
|
|
70
|
+
* @throws `RequiredError` if `sourceKey` is not a unit in this list.
|
|
71
|
+
* @throws `ValueError` if no conversion path exists from the source unit.
|
|
72
|
+
* @example LENGTH_UNITS.require("kilometer").from(1000, "meter") // 1
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/from
|
|
74
|
+
*/
|
|
33
75
|
from(amount: number, sourceKey?: K): number;
|
|
34
76
|
/** Convert an amount from this unit to another unit (must specify another `Unit` instance). */
|
|
35
77
|
private _convertTo;
|
|
@@ -37,33 +79,86 @@ export declare class Unit<K extends string> {
|
|
|
37
79
|
* Format an amount with a given unit of measure, e.g. `12 kg` or `29.5 l`
|
|
38
80
|
* - Uses `Intl.NumberFormat` if this is a supported unit (so e.g. `ounce` is translated to e.g. `Unze` in German).
|
|
39
81
|
* - Polyfills unsupported units to use long/short form based on `options.unitDisplay`.
|
|
82
|
+
*
|
|
83
|
+
* @param amount The amount to format.
|
|
84
|
+
* @param options Formatting options merged over this unit's own `options`.
|
|
85
|
+
* @returns The formatted unit string.
|
|
86
|
+
* @example MASS_UNITS.require("kilogram").format(12) // "12 kg"
|
|
87
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/format
|
|
40
88
|
*/
|
|
41
89
|
format(amount: number, options?: UnitFormatOptions): string;
|
|
42
90
|
}
|
|
43
91
|
/**
|
|
44
|
-
* Represent a list of units.
|
|
92
|
+
* Represent a list of related units of measure (e.g. all length units).
|
|
45
93
|
* - Has a known base unit at `.base`
|
|
46
94
|
* - Can get required units from `.unit()`
|
|
47
95
|
* - Cannot have additional units added after it is created.
|
|
96
|
+
*
|
|
97
|
+
* @param units Set of units keyed by their string key — the first entry becomes the base unit.
|
|
98
|
+
* @example new UnitList({ meter: {}, kilometer: { to: { meter: 1000 } } }).convert(1, "kilometer", "meter") // 1000
|
|
99
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList
|
|
48
100
|
*/
|
|
49
101
|
export declare class UnitList<K extends string> extends ImmutableMap<K, Unit<K>> {
|
|
102
|
+
/**
|
|
103
|
+
* Base unit for this list (the first unit added).
|
|
104
|
+
*
|
|
105
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList/base
|
|
106
|
+
*/
|
|
50
107
|
readonly base: Unit<K>;
|
|
51
108
|
constructor(units: ImmutableObject<K, UnitProps<K>>);
|
|
52
|
-
/**
|
|
109
|
+
/**
|
|
110
|
+
* Convert an amount from a unit in this list to another unit in this list.
|
|
111
|
+
*
|
|
112
|
+
* @param amount The amount in the source unit.
|
|
113
|
+
* @param sourceKey Key of the unit to convert from.
|
|
114
|
+
* @param targetKey Key of the unit to convert to.
|
|
115
|
+
* @returns The amount expressed in the target unit.
|
|
116
|
+
* @throws `RequiredError` if `sourceKey` or `targetKey` is not a unit in this list.
|
|
117
|
+
* @throws `ValueError` if no conversion path exists between the units.
|
|
118
|
+
* @example LENGTH_UNITS.convert(1, "kilometer", "meter") // 1000
|
|
119
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList/convert
|
|
120
|
+
*/
|
|
53
121
|
convert(amount: number, sourceKey: K, targetKey: K): number;
|
|
54
122
|
/**
|
|
55
123
|
* Require a unit from this list.
|
|
56
|
-
*
|
|
124
|
+
*
|
|
125
|
+
* @param key Key of the unit to retrieve.
|
|
126
|
+
* @returns The matching `Unit` instance.
|
|
127
|
+
* @throws `RequiredError` if the unit key is not found.
|
|
128
|
+
* @example LENGTH_UNITS.require("kilometer") // Unit instance
|
|
129
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList/require
|
|
57
130
|
*/
|
|
58
131
|
require(key: K): Unit<K>;
|
|
59
132
|
}
|
|
60
|
-
/**
|
|
133
|
+
/**
|
|
134
|
+
* Percentage units.
|
|
135
|
+
*
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/util/units/PERCENT_UNITS
|
|
137
|
+
*/
|
|
61
138
|
export declare const PERCENT_UNITS: UnitList<"percent">;
|
|
139
|
+
/**
|
|
140
|
+
* String key for a percentage unit.
|
|
141
|
+
*
|
|
142
|
+
* @see https://dhoulb.github.io/shelving/util/units/PercentUnitKey
|
|
143
|
+
*/
|
|
62
144
|
export type PercentUnitKey = MapKey<typeof PERCENT_UNITS>;
|
|
63
|
-
/**
|
|
145
|
+
/**
|
|
146
|
+
* Point units.
|
|
147
|
+
*
|
|
148
|
+
* @see https://dhoulb.github.io/shelving/util/units/POINT_UNITS
|
|
149
|
+
*/
|
|
64
150
|
export declare const POINT_UNITS: UnitList<"basis-point" | "percentage-point">;
|
|
151
|
+
/**
|
|
152
|
+
* String key for a point unit.
|
|
153
|
+
*
|
|
154
|
+
* @see https://dhoulb.github.io/shelving/util/units/PointUnitKey
|
|
155
|
+
*/
|
|
65
156
|
export type PointUnitKey = MapKey<typeof POINT_UNITS>;
|
|
66
|
-
/**
|
|
157
|
+
/**
|
|
158
|
+
* Angle units.
|
|
159
|
+
*
|
|
160
|
+
* @see https://dhoulb.github.io/shelving/util/units/ANGLE_UNITS
|
|
161
|
+
*/
|
|
67
162
|
export declare const ANGLE_UNITS: UnitList<"degree" | "gradian" | "radian">;
|
|
68
163
|
export type AngleUnitKey = MapKey<typeof ANGLE_UNITS>;
|
|
69
164
|
/** Mass units. */
|
package/util/units.js
CHANGED
|
@@ -8,14 +8,36 @@ import { getProps } from "./object.js";
|
|
|
8
8
|
function _convert(amount, conversion) {
|
|
9
9
|
return typeof conversion === "function" ? conversion(amount) : conversion === 1 ? amount : amount * conversion;
|
|
10
10
|
}
|
|
11
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Represent a single unit of measure within a `UnitList`, e.g. `kilometer`.
|
|
13
|
+
*
|
|
14
|
+
* - Knows how to convert amounts to/from other units in its list and to format them for display.
|
|
15
|
+
*
|
|
16
|
+
* @param list `UnitList` this unit belongs to.
|
|
17
|
+
* @param key String key for this unit, e.g. `kilometer`.
|
|
18
|
+
* @param props Props to configure this unit (conversions and formatting options).
|
|
19
|
+
* @example LENGTH_UNITS.require("kilometer").to(5, "meter") // 5000
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit
|
|
21
|
+
*/
|
|
12
22
|
export class Unit {
|
|
13
23
|
_to;
|
|
14
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* `UnitList` this unit belongs to.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/list
|
|
28
|
+
*/
|
|
15
29
|
list;
|
|
16
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* String key for this unit, e.g. `kilometer`
|
|
32
|
+
*
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/key
|
|
34
|
+
*/
|
|
17
35
|
key;
|
|
18
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Possible options for formatting these units.
|
|
38
|
+
*
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/options
|
|
40
|
+
*/
|
|
19
41
|
options;
|
|
20
42
|
constructor(
|
|
21
43
|
/** `UnitList` this unit belongs to. */
|
|
@@ -29,12 +51,32 @@ export class Unit {
|
|
|
29
51
|
this.options = options;
|
|
30
52
|
this._to = to;
|
|
31
53
|
}
|
|
32
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Convert an amount from this unit to another unit.
|
|
56
|
+
*
|
|
57
|
+
* @param amount The amount in this unit.
|
|
58
|
+
* @param targetKey Key of the unit to convert to (defaults to the list's base unit).
|
|
59
|
+
* @returns The amount expressed in the target unit.
|
|
60
|
+
* @throws `RequiredError` if `targetKey` is not a unit in this list.
|
|
61
|
+
* @throws `ValueError` if no conversion path exists to the target unit.
|
|
62
|
+
* @example LENGTH_UNITS.require("kilometer").to(1, "meter") // 1000
|
|
63
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/to
|
|
64
|
+
*/
|
|
33
65
|
to(amount, targetKey) {
|
|
34
66
|
const target = targetKey ? _requireUnit(this.to, this.list, targetKey) : this.list.base;
|
|
35
67
|
return this._convertTo(amount, target, this.to);
|
|
36
68
|
}
|
|
37
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Convert an amount from another unit to this unit.
|
|
71
|
+
*
|
|
72
|
+
* @param amount The amount in the source unit.
|
|
73
|
+
* @param sourceKey Key of the unit to convert from (defaults to the list's base unit).
|
|
74
|
+
* @returns The amount expressed in this unit.
|
|
75
|
+
* @throws `RequiredError` if `sourceKey` is not a unit in this list.
|
|
76
|
+
* @throws `ValueError` if no conversion path exists from the source unit.
|
|
77
|
+
* @example LENGTH_UNITS.require("kilometer").from(1000, "meter") // 1
|
|
78
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/from
|
|
79
|
+
*/
|
|
38
80
|
from(amount, sourceKey) {
|
|
39
81
|
const source = sourceKey ? _requireUnit(this.from, this.list, sourceKey) : this.list.base;
|
|
40
82
|
return source._convertTo(amount, this, this.from);
|
|
@@ -68,18 +110,33 @@ export class Unit {
|
|
|
68
110
|
* Format an amount with a given unit of measure, e.g. `12 kg` or `29.5 l`
|
|
69
111
|
* - Uses `Intl.NumberFormat` if this is a supported unit (so e.g. `ounce` is translated to e.g. `Unze` in German).
|
|
70
112
|
* - Polyfills unsupported units to use long/short form based on `options.unitDisplay`.
|
|
113
|
+
*
|
|
114
|
+
* @param amount The amount to format.
|
|
115
|
+
* @param options Formatting options merged over this unit's own `options`.
|
|
116
|
+
* @returns The formatted unit string.
|
|
117
|
+
* @example MASS_UNITS.require("kilogram").format(12) // "12 kg"
|
|
118
|
+
* @see https://dhoulb.github.io/shelving/util/units/Unit/format
|
|
71
119
|
*/
|
|
72
120
|
format(amount, options) {
|
|
73
121
|
return formatUnit(amount, this.key, { ...this.options, ...options });
|
|
74
122
|
}
|
|
75
123
|
}
|
|
76
124
|
/**
|
|
77
|
-
* Represent a list of units.
|
|
125
|
+
* Represent a list of related units of measure (e.g. all length units).
|
|
78
126
|
* - Has a known base unit at `.base`
|
|
79
127
|
* - Can get required units from `.unit()`
|
|
80
128
|
* - Cannot have additional units added after it is created.
|
|
129
|
+
*
|
|
130
|
+
* @param units Set of units keyed by their string key — the first entry becomes the base unit.
|
|
131
|
+
* @example new UnitList({ meter: {}, kilometer: { to: { meter: 1000 } } }).convert(1, "kilometer", "meter") // 1000
|
|
132
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList
|
|
81
133
|
*/
|
|
82
134
|
export class UnitList extends ImmutableMap {
|
|
135
|
+
/**
|
|
136
|
+
* Base unit for this list (the first unit added).
|
|
137
|
+
*
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList/base
|
|
139
|
+
*/
|
|
83
140
|
base;
|
|
84
141
|
constructor(units) {
|
|
85
142
|
super();
|
|
@@ -90,13 +147,29 @@ export class UnitList extends ImmutableMap {
|
|
|
90
147
|
Map.prototype.set.call(this, id, unit);
|
|
91
148
|
}
|
|
92
149
|
}
|
|
93
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Convert an amount from a unit in this list to another unit in this list.
|
|
152
|
+
*
|
|
153
|
+
* @param amount The amount in the source unit.
|
|
154
|
+
* @param sourceKey Key of the unit to convert from.
|
|
155
|
+
* @param targetKey Key of the unit to convert to.
|
|
156
|
+
* @returns The amount expressed in the target unit.
|
|
157
|
+
* @throws `RequiredError` if `sourceKey` or `targetKey` is not a unit in this list.
|
|
158
|
+
* @throws `ValueError` if no conversion path exists between the units.
|
|
159
|
+
* @example LENGTH_UNITS.convert(1, "kilometer", "meter") // 1000
|
|
160
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList/convert
|
|
161
|
+
*/
|
|
94
162
|
convert(amount, sourceKey, targetKey) {
|
|
95
163
|
return _requireUnit(this.convert, this, sourceKey).to(amount, targetKey);
|
|
96
164
|
}
|
|
97
165
|
/**
|
|
98
166
|
* Require a unit from this list.
|
|
99
|
-
*
|
|
167
|
+
*
|
|
168
|
+
* @param key Key of the unit to retrieve.
|
|
169
|
+
* @returns The matching `Unit` instance.
|
|
170
|
+
* @throws `RequiredError` if the unit key is not found.
|
|
171
|
+
* @example LENGTH_UNITS.require("kilometer") // Unit instance
|
|
172
|
+
* @see https://dhoulb.github.io/shelving/util/units/UnitList/require
|
|
100
173
|
*/
|
|
101
174
|
require(key) {
|
|
102
175
|
return _requireUnit(this.require, this, key);
|
|
@@ -134,16 +207,28 @@ const MM3_PER_IN3 = MM_PER_IN ** 3;
|
|
|
134
207
|
const ML_PER_IN3 = MM3_PER_IN3 / 1000;
|
|
135
208
|
const US_IN3_PER_GAL = 231;
|
|
136
209
|
const IMP_ML_PER_GAL = 4546090 / 1000;
|
|
137
|
-
/**
|
|
210
|
+
/**
|
|
211
|
+
* Percentage units.
|
|
212
|
+
*
|
|
213
|
+
* @see https://dhoulb.github.io/shelving/util/units/PERCENT_UNITS
|
|
214
|
+
*/
|
|
138
215
|
export const PERCENT_UNITS = new UnitList({
|
|
139
216
|
percent: { abbr: "%", many: "percent" },
|
|
140
217
|
});
|
|
141
|
-
/**
|
|
218
|
+
/**
|
|
219
|
+
* Point units.
|
|
220
|
+
*
|
|
221
|
+
* @see https://dhoulb.github.io/shelving/util/units/POINT_UNITS
|
|
222
|
+
*/
|
|
142
223
|
export const POINT_UNITS = new UnitList({
|
|
143
224
|
"basis-point": { abbr: "bp" },
|
|
144
225
|
"percentage-point": { abbr: "pp", to: { "basis-point": 100 } },
|
|
145
226
|
});
|
|
146
|
-
/**
|
|
227
|
+
/**
|
|
228
|
+
* Angle units.
|
|
229
|
+
*
|
|
230
|
+
* @see https://dhoulb.github.io/shelving/util/units/ANGLE_UNITS
|
|
231
|
+
*/
|
|
147
232
|
export const ANGLE_UNITS = new UnitList({
|
|
148
233
|
degree: { abbr: "deg" },
|
|
149
234
|
radian: { abbr: "rad", to: { degree: 180 / Math.PI } },
|
package/util/update.d.ts
CHANGED
|
@@ -2,10 +2,14 @@ import { type ImmutableArray } from "./array.js";
|
|
|
2
2
|
import type { BranchData, BranchDataPath, Data, LeafData, LeafDataPath } from "./data.js";
|
|
3
3
|
import type { Segments } from "./string.js";
|
|
4
4
|
/**
|
|
5
|
-
* Set of named updates for a data object.
|
|
5
|
+
* Set of named updates for a data object, keyed by encoded update syntax.
|
|
6
|
+
*
|
|
7
|
+
* - Plain key `a.b` sets a value, `=a.b` sets a leaf value, `+=`/`-=` sum numbers, and `+[]`/`-[]` add/remove array items.
|
|
6
8
|
*
|
|
7
9
|
* Note: string templates infer best when you have fixed character(s) at the start,
|
|
8
10
|
* so our `Update` syntax always
|
|
11
|
+
*
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/util/update/Updates
|
|
9
13
|
*/
|
|
10
14
|
export type Updates<T extends Data = Data> = {
|
|
11
15
|
/**
|
|
@@ -35,7 +39,13 @@ export type Updates<T extends Data = Data> = {
|
|
|
35
39
|
*/
|
|
36
40
|
readonly [K in LeafDataPath<T> as `+[]${K}` | `-[]${K}`]?: LeafData<T>[K] extends ImmutableArray<unknown> ? LeafData<T>[K] | LeafData<T>[K][number] | undefined : never;
|
|
37
41
|
};
|
|
38
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* A single decoded update to a keyed property in an object.
|
|
44
|
+
*
|
|
45
|
+
* - Discriminated by `action`: `"set"`, `"with"` (add array items), `"omit"` (remove array items), or `"sum"` (add to a number).
|
|
46
|
+
*
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/util/update/Update
|
|
48
|
+
*/
|
|
39
49
|
export type Update = {
|
|
40
50
|
action: "set";
|
|
41
51
|
key: Segments;
|
|
@@ -53,7 +63,29 @@ export type Update = {
|
|
|
53
63
|
key: Segments;
|
|
54
64
|
value: number;
|
|
55
65
|
};
|
|
56
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* Decode the prop updates in an `Updates` object into a set of `Update` objects.
|
|
68
|
+
*
|
|
69
|
+
* - Props with `undefined` value are skipped.
|
|
70
|
+
*
|
|
71
|
+
* @param data The `Updates` object to decode.
|
|
72
|
+
* @returns Array of decoded `Update` objects.
|
|
73
|
+
* @throws `RequiredError` if a `+=`/`-=` sum update has a non-number value.
|
|
74
|
+
* @example getUpdates({ "+=count": 1 }) // [{ action: "sum", key: ["count"], value: 1 }]
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/util/update/getUpdates
|
|
76
|
+
*/
|
|
57
77
|
export declare function getUpdates<T extends Data>(data: Updates<T>): ImmutableArray<Update>;
|
|
58
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* Return a copy of a data object with a set of updates applied.
|
|
80
|
+
*
|
|
81
|
+
* - Returns the original reference unchanged when no update changed a value.
|
|
82
|
+
* - Supports nested paths, sum/increment, and array add/remove updates via the encoded `Updates` syntax.
|
|
83
|
+
*
|
|
84
|
+
* @param data The data object to update.
|
|
85
|
+
* @param updates The set of updates to apply.
|
|
86
|
+
* @returns The updated data object (or the original reference if nothing changed).
|
|
87
|
+
* @throws `RequiredError` if a `+=`/`-=` sum update has a non-number value.
|
|
88
|
+
* @example updateData({ count: 1 }, { "+=count": 2 }) // { count: 3 }
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/util/update/updateData
|
|
90
|
+
*/
|
|
59
91
|
export declare function updateData<T extends Data>(data: T, updates: Updates<T>): T;
|
package/util/update.js
CHANGED
|
@@ -4,7 +4,17 @@ import { reduceItems } from "./iterate.js";
|
|
|
4
4
|
import { requireNumber } from "./number.js";
|
|
5
5
|
import { getProps, isObject } from "./object.js";
|
|
6
6
|
import { isDefined } from "./undefined.js";
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Decode the prop updates in an `Updates` object into a set of `Update` objects.
|
|
9
|
+
*
|
|
10
|
+
* - Props with `undefined` value are skipped.
|
|
11
|
+
*
|
|
12
|
+
* @param data The `Updates` object to decode.
|
|
13
|
+
* @returns Array of decoded `Update` objects.
|
|
14
|
+
* @throws `RequiredError` if a `+=`/`-=` sum update has a non-number value.
|
|
15
|
+
* @example getUpdates({ "+=count": 1 }) // [{ action: "sum", key: ["count"], value: 1 }]
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/util/update/getUpdates
|
|
17
|
+
*/
|
|
8
18
|
export function getUpdates(data) {
|
|
9
19
|
return getProps(data).map(_getUpdate).filter(isDefined);
|
|
10
20
|
}
|
|
@@ -27,7 +37,19 @@ function _getUpdate([key, value]) {
|
|
|
27
37
|
return { action: "set", key: splitDataPath(key), value };
|
|
28
38
|
}
|
|
29
39
|
}
|
|
30
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Return a copy of a data object with a set of updates applied.
|
|
42
|
+
*
|
|
43
|
+
* - Returns the original reference unchanged when no update changed a value.
|
|
44
|
+
* - Supports nested paths, sum/increment, and array add/remove updates via the encoded `Updates` syntax.
|
|
45
|
+
*
|
|
46
|
+
* @param data The data object to update.
|
|
47
|
+
* @param updates The set of updates to apply.
|
|
48
|
+
* @returns The updated data object (or the original reference if nothing changed).
|
|
49
|
+
* @throws `RequiredError` if a `+=`/`-=` sum update has a non-number value.
|
|
50
|
+
* @example updateData({ count: 1 }, { "+=count": 2 }) // { count: 3 }
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/util/update/updateData
|
|
52
|
+
*/
|
|
31
53
|
export function updateData(data, updates) {
|
|
32
54
|
return reduceItems(getUpdates(updates), _updateProp, data);
|
|
33
55
|
}
|
package/util/uri.d.ts
CHANGED
|
@@ -12,17 +12,39 @@ import type { ImmutableURL, URLString } from "./url.js";
|
|
|
12
12
|
* - The absence of `//` indicates a non-hierarchical URI.
|
|
13
13
|
* - URLs can be considered as "hierarchical URIs".
|
|
14
14
|
* - All URLs are also URIs, but not all URIs are URLs.
|
|
15
|
+
*
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/util/uri/URIString
|
|
15
17
|
*/
|
|
16
18
|
export type URIString = `${string}:${string}`;
|
|
19
|
+
/**
|
|
20
|
+
* String for the search component of a URI, including the leading `?`
|
|
21
|
+
*
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/util/uri/URISearch
|
|
23
|
+
*/
|
|
17
24
|
export type URISearch = `?${string}`;
|
|
25
|
+
/**
|
|
26
|
+
* String for the hash component of a URI, including the leading `#`
|
|
27
|
+
*
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/util/uri/URIHash
|
|
29
|
+
*/
|
|
18
30
|
export type URIHash = `#${string}`;
|
|
19
31
|
/**
|
|
20
32
|
* Construct a correctly-typed `URI` object.
|
|
21
33
|
* - This is a more correctly typed version of the builtin Javascript `URL` constructor.
|
|
22
34
|
* - Takes a URI string or URI object that already encodes a complete URI — no base parameter, so relative inputs are not accepted.
|
|
23
35
|
* - To resolve a relative input against a base, use `getBasedURI()` from `url.ts`.
|
|
36
|
+
*
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURIConstructor
|
|
24
38
|
*/
|
|
25
39
|
export interface ImmutableURIConstructor {
|
|
40
|
+
/**
|
|
41
|
+
* Construct an `ImmutableURI` from a complete URI string or URI object.
|
|
42
|
+
*
|
|
43
|
+
* @param input URI string or URI object that already encodes a complete URI.
|
|
44
|
+
* @returns New `ImmutableURI` instance.
|
|
45
|
+
* @throws {TypeError} If `input` is not a valid complete URI.
|
|
46
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURIConstructor/new
|
|
47
|
+
*/
|
|
26
48
|
new (input: URIString | ImmutableURI): ImmutableURI;
|
|
27
49
|
}
|
|
28
50
|
/**
|
|
@@ -35,42 +57,152 @@ export interface ImmutableURIConstructor {
|
|
|
35
57
|
* - The absence of `//` indicates a non-hierarchical URI.
|
|
36
58
|
* - URLs can be considered as "hierarchical URIs".
|
|
37
59
|
* - All URLs are also URIs, but not all URIs are URLs.
|
|
60
|
+
*
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI
|
|
38
62
|
*/
|
|
39
63
|
export interface ImmutableURI extends URL {
|
|
64
|
+
/**
|
|
65
|
+
* Hash component of the URI, including the leading `#` (empty string if absent).
|
|
66
|
+
*
|
|
67
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/hash
|
|
68
|
+
*/
|
|
40
69
|
readonly hash: URIHash | ``;
|
|
70
|
+
/**
|
|
71
|
+
* Host component of the URI (hostname and port), or empty string for non-hierarchical URIs.
|
|
72
|
+
*
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/host
|
|
74
|
+
*/
|
|
41
75
|
readonly host: string;
|
|
76
|
+
/**
|
|
77
|
+
* Hostname component of the URI, or empty string for non-hierarchical URIs.
|
|
78
|
+
*
|
|
79
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/hostname
|
|
80
|
+
*/
|
|
42
81
|
readonly hostname: string;
|
|
82
|
+
/**
|
|
83
|
+
* Full URI string.
|
|
84
|
+
*
|
|
85
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/href
|
|
86
|
+
*/
|
|
43
87
|
readonly href: URIString;
|
|
88
|
+
/**
|
|
89
|
+
* Origin of the URI, or the string `"null"` for origins that cannot be serialised.
|
|
90
|
+
*
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/origin
|
|
92
|
+
*/
|
|
44
93
|
readonly origin: URIString | `null`;
|
|
94
|
+
/**
|
|
95
|
+
* Password component of the URI (empty string if absent).
|
|
96
|
+
*
|
|
97
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/password
|
|
98
|
+
*/
|
|
45
99
|
readonly password: string;
|
|
100
|
+
/**
|
|
101
|
+
* Pathname component of the URI.
|
|
102
|
+
*
|
|
103
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/pathname
|
|
104
|
+
*/
|
|
46
105
|
readonly pathname: string;
|
|
106
|
+
/**
|
|
107
|
+
* Port component of the URI (empty string if absent).
|
|
108
|
+
*
|
|
109
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/port
|
|
110
|
+
*/
|
|
47
111
|
readonly port: string;
|
|
112
|
+
/**
|
|
113
|
+
* Protocol scheme of the URI, including the trailing `:`
|
|
114
|
+
*
|
|
115
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/protocol
|
|
116
|
+
*/
|
|
48
117
|
readonly protocol: URIScheme;
|
|
118
|
+
/**
|
|
119
|
+
* Search component of the URI, including the leading `?` (empty string if absent).
|
|
120
|
+
*
|
|
121
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/search
|
|
122
|
+
*/
|
|
49
123
|
readonly search: URISearch | ``;
|
|
124
|
+
/**
|
|
125
|
+
* Username component of the URI (empty string if absent).
|
|
126
|
+
*
|
|
127
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI/username
|
|
128
|
+
*/
|
|
50
129
|
readonly username: string;
|
|
51
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* Correctly-typed `URI` constructor (the builtin `URL` class typed as `ImmutableURIConstructor`).
|
|
133
|
+
*
|
|
134
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI
|
|
135
|
+
*/
|
|
52
136
|
export declare const ImmutableURI: ImmutableURIConstructor;
|
|
53
|
-
/**
|
|
137
|
+
/**
|
|
138
|
+
* Values that can be converted to an `ImmutableURI` instance.
|
|
139
|
+
*
|
|
140
|
+
* @see https://dhoulb.github.io/shelving/util/uri/PossibleURI
|
|
141
|
+
*/
|
|
54
142
|
export type PossibleURI = string | URL;
|
|
55
|
-
/**
|
|
143
|
+
/**
|
|
144
|
+
* Is an unknown value a URI object?
|
|
145
|
+
*
|
|
146
|
+
* @param value The value to test.
|
|
147
|
+
* @returns `true` if `value` is an `ImmutableURI`, narrowing its type.
|
|
148
|
+
* @example isURI(new URL("http://x.com")) // true
|
|
149
|
+
* @see https://dhoulb.github.io/shelving/util/uri/isURI
|
|
150
|
+
*/
|
|
56
151
|
export declare function isURI(value: unknown): value is ImmutableURI;
|
|
57
|
-
/**
|
|
152
|
+
/**
|
|
153
|
+
* Assert that an unknown value is a URI object.
|
|
154
|
+
*
|
|
155
|
+
* @param value The value to assert.
|
|
156
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertURI` itself).
|
|
157
|
+
* @throws {RequiredError} If `value` is not a URI object.
|
|
158
|
+
* @see https://dhoulb.github.io/shelving/util/uri/assertURI
|
|
159
|
+
*/
|
|
58
160
|
export declare function assertURI(value: unknown, caller?: AnyCaller): asserts value is ImmutableURI;
|
|
59
161
|
/**
|
|
60
162
|
* Convert a possible URI to a URI, or return `undefined` if conversion fails.
|
|
61
163
|
* - Only inputs that already encode a complete URI succeed — relative inputs return `undefined`. No implicit fallback to the document or window URL.
|
|
62
164
|
* - To resolve a relative ref against a base, use `getBasedURI()` from `url.ts`.
|
|
165
|
+
*
|
|
166
|
+
* @param possible Possible URI value to convert (a nullish value returns `undefined`).
|
|
167
|
+
* @returns Converted `ImmutableURI`, or `undefined` if conversion fails.
|
|
168
|
+
* @example getURI("http://shax.com") // URL { … }
|
|
169
|
+
* @see https://dhoulb.github.io/shelving/util/uri/getURI
|
|
63
170
|
*/
|
|
64
171
|
export declare function getURI(possible: Nullish<PossibleURI>): ImmutableURI | undefined;
|
|
65
|
-
/**
|
|
172
|
+
/**
|
|
173
|
+
* Convert a possible URI to a URI, or throw `RequiredError` if conversion fails.
|
|
174
|
+
*
|
|
175
|
+
* @param possible Possible URI value to convert.
|
|
176
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireURI` itself).
|
|
177
|
+
* @returns Converted `ImmutableURI`.
|
|
178
|
+
* @throws {RequiredError} If `possible` cannot be converted to a valid URI.
|
|
179
|
+
* @example requireURI("http://shax.com") // URL { … }
|
|
180
|
+
* @see https://dhoulb.github.io/shelving/util/uri/requireURI
|
|
181
|
+
*/
|
|
66
182
|
export declare function requireURI(possible: PossibleURI, caller?: AnyCaller): ImmutableURI;
|
|
67
|
-
/**
|
|
183
|
+
/**
|
|
184
|
+
* Type for a set of named URI parameters.
|
|
185
|
+
*
|
|
186
|
+
* @see https://dhoulb.github.io/shelving/util/uri/URIParams
|
|
187
|
+
*/
|
|
68
188
|
export type URIParams = ImmutableDictionary<string>;
|
|
69
|
-
/**
|
|
189
|
+
/**
|
|
190
|
+
* Type for things that can be converted to named URI parameters.
|
|
191
|
+
*
|
|
192
|
+
* @see https://dhoulb.github.io/shelving/util/uri/PossibleURIParams
|
|
193
|
+
*/
|
|
70
194
|
export type PossibleURIParams = PossibleURI | URLSearchParams | ImmutableDictionary<unknown>;
|
|
71
195
|
/**
|
|
72
196
|
* Get a set of params for a URI as a dictionary.
|
|
73
197
|
* - Any params with `undefined` value will be ignored.
|
|
198
|
+
*
|
|
199
|
+
* @param params Possible URI params to convert.
|
|
200
|
+
* @param caller Function to attribute a thrown error to (defaults to `getURIParams` itself).
|
|
201
|
+
* @returns Dictionary of string params keyed by name.
|
|
202
|
+
* @throws {RequiredError} If `params` is a string or URL that cannot be converted to a valid URI.
|
|
203
|
+
* @throws {ValueError} If any param value cannot be converted to a string.
|
|
204
|
+
* @example getURIParams("http://x.com?a=1&b=2") // { a: "1", b: "2" }
|
|
205
|
+
* @see https://dhoulb.github.io/shelving/util/uri/getURIParams
|
|
74
206
|
*/
|
|
75
207
|
export declare function getURIParams(params: PossibleURIParams, caller?: AnyCaller): URIParams;
|
|
76
208
|
/** Get a single named param from a URI. */
|