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/uri.js
CHANGED
|
@@ -2,12 +2,31 @@ import { RequiredError } from "../error/RequiredError.js";
|
|
|
2
2
|
import { ValueError } from "../error/ValueError.js";
|
|
3
3
|
import { getDictionaryItems, isDictionary } from "./dictionary.js";
|
|
4
4
|
import { getString, isString } from "./string.js";
|
|
5
|
+
/**
|
|
6
|
+
* Correctly-typed `URI` constructor (the builtin `URL` class typed as `ImmutableURIConstructor`).
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/uri/ImmutableURI
|
|
9
|
+
*/
|
|
5
10
|
export const ImmutableURI = URL;
|
|
6
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Is an unknown value a URI object?
|
|
13
|
+
*
|
|
14
|
+
* @param value The value to test.
|
|
15
|
+
* @returns `true` if `value` is an `ImmutableURI`, narrowing its type.
|
|
16
|
+
* @example isURI(new URL("http://x.com")) // true
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/util/uri/isURI
|
|
18
|
+
*/
|
|
7
19
|
export function isURI(value) {
|
|
8
20
|
return value instanceof ImmutableURI;
|
|
9
21
|
}
|
|
10
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Assert that an unknown value is a URI object.
|
|
24
|
+
*
|
|
25
|
+
* @param value The value to assert.
|
|
26
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertURI` itself).
|
|
27
|
+
* @throws {RequiredError} If `value` is not a URI object.
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/util/uri/assertURI
|
|
29
|
+
*/
|
|
11
30
|
export function assertURI(value, caller = assertURI) {
|
|
12
31
|
if (!isURI(value))
|
|
13
32
|
throw new RequiredError("Invalid URI", { received: value, caller });
|
|
@@ -16,6 +35,11 @@ export function assertURI(value, caller = assertURI) {
|
|
|
16
35
|
* Convert a possible URI to a URI, or return `undefined` if conversion fails.
|
|
17
36
|
* - Only inputs that already encode a complete URI succeed — relative inputs return `undefined`. No implicit fallback to the document or window URL.
|
|
18
37
|
* - To resolve a relative ref against a base, use `getBasedURI()` from `url.ts`.
|
|
38
|
+
*
|
|
39
|
+
* @param possible Possible URI value to convert (a nullish value returns `undefined`).
|
|
40
|
+
* @returns Converted `ImmutableURI`, or `undefined` if conversion fails.
|
|
41
|
+
* @example getURI("http://shax.com") // URL { … }
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/util/uri/getURI
|
|
19
43
|
*/
|
|
20
44
|
export function getURI(possible) {
|
|
21
45
|
if (!possible)
|
|
@@ -29,7 +53,16 @@ export function getURI(possible) {
|
|
|
29
53
|
//
|
|
30
54
|
}
|
|
31
55
|
}
|
|
32
|
-
/**
|
|
56
|
+
/**
|
|
57
|
+
* Convert a possible URI to a URI, or throw `RequiredError` if conversion fails.
|
|
58
|
+
*
|
|
59
|
+
* @param possible Possible URI value to convert.
|
|
60
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireURI` itself).
|
|
61
|
+
* @returns Converted `ImmutableURI`.
|
|
62
|
+
* @throws {RequiredError} If `possible` cannot be converted to a valid URI.
|
|
63
|
+
* @example requireURI("http://shax.com") // URL { … }
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/util/uri/requireURI
|
|
65
|
+
*/
|
|
33
66
|
export function requireURI(possible, caller = requireURI) {
|
|
34
67
|
const url = getURI(possible);
|
|
35
68
|
assertURI(url, caller);
|
|
@@ -69,6 +102,14 @@ function* getURIEntries(params, caller = getURIParams) {
|
|
|
69
102
|
/**
|
|
70
103
|
* Get a set of params for a URI as a dictionary.
|
|
71
104
|
* - Any params with `undefined` value will be ignored.
|
|
105
|
+
*
|
|
106
|
+
* @param params Possible URI params to convert.
|
|
107
|
+
* @param caller Function to attribute a thrown error to (defaults to `getURIParams` itself).
|
|
108
|
+
* @returns Dictionary of string params keyed by name.
|
|
109
|
+
* @throws {RequiredError} If `params` is a string or URL that cannot be converted to a valid URI.
|
|
110
|
+
* @throws {ValueError} If any param value cannot be converted to a string.
|
|
111
|
+
* @example getURIParams("http://x.com?a=1&b=2") // { a: "1", b: "2" }
|
|
112
|
+
* @see https://dhoulb.github.io/shelving/util/uri/getURIParams
|
|
72
113
|
*/
|
|
73
114
|
export function getURIParams(params, caller = getURIParams) {
|
|
74
115
|
const output = {};
|
package/util/url.d.ts
CHANGED
|
@@ -6,6 +6,8 @@ import type { ImmutableURI } from "./uri.js";
|
|
|
6
6
|
* A URL string has a protocol and a `//`.
|
|
7
7
|
* - The `//` at the start of a URL indicates that it has a hierarchical path component, so this makes it a URL.
|
|
8
8
|
* - URLs have a concept of "absolute" or "relative" URLs, since they have a path.
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/url/URLString
|
|
9
11
|
*/
|
|
10
12
|
export type URLString = `${string}://${string}`;
|
|
11
13
|
/**
|
|
@@ -14,6 +16,8 @@ export type URLString = `${string}://${string}`;
|
|
|
14
16
|
* - Requires a URL string, URL object, or path as input, and optionally a base URL.
|
|
15
17
|
* - If a path is provided as input, a base URL _must_ also be provided.
|
|
16
18
|
* - The returned type is
|
|
19
|
+
*
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/util/url/ImmutableURLConstructor
|
|
17
21
|
*/
|
|
18
22
|
export interface ImmutableURLConstructor {
|
|
19
23
|
new (input: URLString | ImmutableURL, base?: URLString | ImmutableURL): ImmutableURL;
|
|
@@ -35,6 +39,8 @@ export interface ImmutableURLConstructor {
|
|
|
35
39
|
* - It's more "correct" terminology to use `URI` to refer to what the Javascript `URL` class represents.
|
|
36
40
|
* - You can tell the difference because a URL will have a non-empty `host` property, whereas URIs will never have a `host` (it will be `""` empty string).
|
|
37
41
|
* - Javascript URLs are mutable which can lead to subtle bugs.
|
|
42
|
+
*
|
|
43
|
+
* @see https://dhoulb.github.io/shelving/util/url/ImmutableURL
|
|
38
44
|
*/
|
|
39
45
|
export interface ImmutableURL extends ImmutableURI {
|
|
40
46
|
readonly href: URLString;
|
|
@@ -42,14 +48,42 @@ export interface ImmutableURL extends ImmutableURI {
|
|
|
42
48
|
readonly pathname: AbsolutePath;
|
|
43
49
|
}
|
|
44
50
|
export declare const ImmutableURL: ImmutableURLConstructor;
|
|
45
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Values that can be converted to a URL instance.
|
|
53
|
+
*
|
|
54
|
+
* @see https://dhoulb.github.io/shelving/util/url/PossibleURL
|
|
55
|
+
*/
|
|
46
56
|
export type PossibleURL = string | URL;
|
|
47
57
|
/**
|
|
48
58
|
* Is an unknown value a URL object?
|
|
49
59
|
* - Must be a `URL` instance and its origin must start with `scheme://`
|
|
60
|
+
*
|
|
61
|
+
* @param value Unknown value to test.
|
|
62
|
+
* @returns `true` if `value` is a true `scheme://host` URL object, otherwise `false`.
|
|
63
|
+
*
|
|
64
|
+
* @example
|
|
65
|
+
* ```ts
|
|
66
|
+
* if (isURL(value)) value.pathname; // `value` is narrowed to `ImmutableURL`
|
|
67
|
+
* ```
|
|
68
|
+
*
|
|
69
|
+
* @see https://dhoulb.github.io/shelving/util/url/isURL
|
|
50
70
|
*/
|
|
51
71
|
export declare function isURL(value: unknown): value is ImmutableURL;
|
|
52
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Assert that an unknown value is a URL object.
|
|
74
|
+
*
|
|
75
|
+
* @param value Unknown value to test.
|
|
76
|
+
* @param caller Function to attribute a thrown error to — defaults to `assertURL`.
|
|
77
|
+
* @throws RequiredError If `value` is not a true `scheme://host` URL object.
|
|
78
|
+
*
|
|
79
|
+
* @example
|
|
80
|
+
* ```ts
|
|
81
|
+
* assertURL(value);
|
|
82
|
+
* value.pathname; // `value` is narrowed to `ImmutableURL`
|
|
83
|
+
* ```
|
|
84
|
+
*
|
|
85
|
+
* @see https://dhoulb.github.io/shelving/util/url/assertURL
|
|
86
|
+
*/
|
|
53
87
|
export declare function assertURL(value: unknown, caller?: AnyCaller): asserts value is ImmutableURL;
|
|
54
88
|
/**
|
|
55
89
|
* Resolve a possible URI relative to a base, or return `undefined` if conversion fails.
|
|
@@ -59,14 +93,52 @@ export declare function assertURL(value: unknown, caller?: AnyCaller): asserts v
|
|
|
59
93
|
* Note: the base is normalised with `getBaseURL()`, so it is always treated as if it ends in a slash.
|
|
60
94
|
* - e.g. if `base` is `http://p.com/a/b/c` the path resolves relative to `c/` as if a trailing slash was present.
|
|
61
95
|
* - This differs from the default behaviour of `new URL()`, but is the more natural expected result.
|
|
96
|
+
*
|
|
97
|
+
* @param input URI string, URL object, or path to resolve — falsy values return `undefined`.
|
|
98
|
+
* @param base Base URL to resolve a relative `input` against.
|
|
99
|
+
* @returns Resolved `ImmutableURI`, or `undefined` if conversion fails.
|
|
100
|
+
*
|
|
101
|
+
* @example
|
|
102
|
+
* ```ts
|
|
103
|
+
* getBasedURI("path/to/page", "http://example.com/base/"); // `http://example.com/base/path/to/page`
|
|
104
|
+
* ```
|
|
105
|
+
*
|
|
106
|
+
* @see https://dhoulb.github.io/shelving/util/url/getBasedURI
|
|
62
107
|
*/
|
|
63
108
|
export declare function getBasedURI(input: Nullish<PossibleURL>, base?: PossibleURL): ImmutableURI | undefined;
|
|
64
109
|
/**
|
|
65
110
|
* Resolve a possible URL relative to a base URL, or return `undefined` if conversion fails.
|
|
66
111
|
* - Like `getBasedURI()` but only succeeds for true `scheme://host` URLs — other URIs (e.g. `mailto:`) return `undefined`.
|
|
112
|
+
*
|
|
113
|
+
* @param target URL string, URL object, or path to resolve — falsy values return `undefined`.
|
|
114
|
+
* @param base Base URL to resolve a relative `target` against.
|
|
115
|
+
* @returns Resolved `ImmutableURL`, or `undefined` if conversion fails or the result is not a true URL.
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* ```ts
|
|
119
|
+
* getURL("/page", "http://example.com/"); // `http://example.com/page`
|
|
120
|
+
* getURL("mailto:a@b.com"); // `undefined` — not a hierarchical URL
|
|
121
|
+
* ```
|
|
122
|
+
*
|
|
123
|
+
* @see https://dhoulb.github.io/shelving/util/url/getURL
|
|
67
124
|
*/
|
|
68
125
|
export declare function getURL(target: Nullish<PossibleURL>, base?: PossibleURL): ImmutableURL | undefined;
|
|
69
|
-
/**
|
|
126
|
+
/**
|
|
127
|
+
* Convert a possible URL to a URL, or throw `RequiredError` if conversion fails.
|
|
128
|
+
*
|
|
129
|
+
* @param target URL string, URL object, or path to resolve.
|
|
130
|
+
* @param base Base URL to resolve a relative `target` against.
|
|
131
|
+
* @param caller Function to attribute a thrown error to — defaults to `requireURL`.
|
|
132
|
+
* @returns Resolved `ImmutableURL`.
|
|
133
|
+
* @throws RequiredError If `target` cannot be resolved to a true `scheme://host` URL.
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* ```ts
|
|
137
|
+
* requireURL("/page", "http://example.com/"); // `http://example.com/page`
|
|
138
|
+
* ```
|
|
139
|
+
*
|
|
140
|
+
* @see https://dhoulb.github.io/shelving/util/url/requireURL
|
|
141
|
+
*/
|
|
70
142
|
export declare function requireURL(target: PossibleURL, base?: PossibleURL, caller?: AnyCaller): ImmutableURL;
|
|
71
143
|
/**
|
|
72
144
|
* Resolve and match a target URL/path against a base URL and return the remaining path.
|
|
@@ -76,8 +148,18 @@ export declare function requireURL(target: PossibleURL, base?: PossibleURL, call
|
|
|
76
148
|
* - Relative targets are resolved against the normalized base URL.
|
|
77
149
|
*
|
|
78
150
|
* @param target URL to match against `base` — if this is a relative path it will be resolved against `base`
|
|
151
|
+
* @param base Base URL the `target` is matched against.
|
|
152
|
+
* @param caller Function to attribute a thrown error to — defaults to `matchURLPrefix`.
|
|
79
153
|
*
|
|
80
154
|
* @returns Absolute path starting with `/`, or `undefined` for origin mismatches or non-matching paths.
|
|
155
|
+
* @throws RequiredError If `target` or `base` cannot be resolved to a true URL.
|
|
156
|
+
*
|
|
157
|
+
* @example
|
|
158
|
+
* ```ts
|
|
159
|
+
* matchURLPrefix("http://x.com/a/b", "http://x.com/a/"); // `/b`
|
|
160
|
+
* ```
|
|
161
|
+
*
|
|
162
|
+
* @see https://dhoulb.github.io/shelving/util/url/matchURLPrefix
|
|
81
163
|
*/
|
|
82
164
|
export declare function matchURLPrefix(target: PossibleURL | undefined, base: PossibleURL | undefined, caller?: AnyCaller): AbsolutePath | undefined;
|
|
83
165
|
/**
|
|
@@ -87,6 +169,15 @@ export declare function matchURLPrefix(target: PossibleURL | undefined, base: Po
|
|
|
87
169
|
*
|
|
88
170
|
* @param target URL whose status to test — relative paths resolve against `base`.
|
|
89
171
|
* @param base Base URL to test against.
|
|
172
|
+
* @param caller Function to attribute a thrown error to — defaults to `isURLActive`.
|
|
173
|
+
* @returns `true` if `target` resolves to exactly the same URL as `base`, otherwise `false`.
|
|
174
|
+
*
|
|
175
|
+
* @example
|
|
176
|
+
* ```ts
|
|
177
|
+
* isURLActive("http://x.com/a", "http://x.com/a"); // `true`
|
|
178
|
+
* ```
|
|
179
|
+
*
|
|
180
|
+
* @see https://dhoulb.github.io/shelving/util/url/isURLActive
|
|
90
181
|
*/
|
|
91
182
|
export declare function isURLActive(target: PossibleURL | undefined, base: PossibleURL | undefined, caller?: AnyCaller): boolean;
|
|
92
183
|
/**
|
|
@@ -97,15 +188,69 @@ export declare function isURLActive(target: PossibleURL | undefined, base: Possi
|
|
|
97
188
|
*
|
|
98
189
|
* @param target URL whose status to test — relative paths resolve against `base`.
|
|
99
190
|
* @param base Base URL to test against.
|
|
191
|
+
* @param caller Function to attribute a thrown error to — defaults to `isURLProud`.
|
|
192
|
+
* @returns `true` if `target` is `base` or a descendant of `base`, otherwise `false`.
|
|
193
|
+
*
|
|
194
|
+
* @example
|
|
195
|
+
* ```ts
|
|
196
|
+
* isURLProud("http://x.com/a/b", "http://x.com/a"); // `true`
|
|
197
|
+
* ```
|
|
198
|
+
*
|
|
199
|
+
* @see https://dhoulb.github.io/shelving/util/url/isURLProud
|
|
100
200
|
*/
|
|
101
201
|
export declare function isURLProud(target: PossibleURL | undefined, base: PossibleURL | undefined, caller?: AnyCaller): boolean;
|
|
102
|
-
/**
|
|
202
|
+
/**
|
|
203
|
+
* BaseURL is a URL with a guaranteed trailing slash on pathname.
|
|
204
|
+
*
|
|
205
|
+
* @see https://dhoulb.github.io/shelving/util/url/BaseURL
|
|
206
|
+
*/
|
|
103
207
|
export interface BaseURL extends ImmutableURL {
|
|
104
208
|
readonly pathname: `/` | `/${string}/`;
|
|
105
209
|
}
|
|
106
|
-
/**
|
|
210
|
+
/**
|
|
211
|
+
* Is an unknown value a valid Base URL?
|
|
212
|
+
* - Must be a true URL whose `pathname` ends in a trailing slash.
|
|
213
|
+
*
|
|
214
|
+
* @param value Value to test.
|
|
215
|
+
* @returns `true` if `value` is a `BaseURL` (a URL with a trailing-slash pathname), otherwise `false`.
|
|
216
|
+
*
|
|
217
|
+
* @example
|
|
218
|
+
* ```ts
|
|
219
|
+
* isBaseURL(new URL("http://x.com/a/")); // `true`
|
|
220
|
+
* ```
|
|
221
|
+
*
|
|
222
|
+
* @see https://dhoulb.github.io/shelving/util/url/isBaseURL
|
|
223
|
+
*/
|
|
107
224
|
export declare function isBaseURL(value: PossibleURL): value is BaseURL;
|
|
108
|
-
/**
|
|
225
|
+
/**
|
|
226
|
+
* Get a Base URL — a true URL whose `pathname` is normalised to end in a trailing slash.
|
|
227
|
+
* - Falsy or non-URL input returns `undefined`.
|
|
228
|
+
* - A URL without a trailing slash is cloned and given one (the input is never mutated).
|
|
229
|
+
*
|
|
230
|
+
* @param input URL string, URL object, or path to normalise.
|
|
231
|
+
* @returns `BaseURL` with a trailing-slash pathname, or `undefined` if `input` is not a true URL.
|
|
232
|
+
*
|
|
233
|
+
* @example
|
|
234
|
+
* ```ts
|
|
235
|
+
* getBaseURL("http://x.com/a"); // `http://x.com/a/`
|
|
236
|
+
* ```
|
|
237
|
+
*
|
|
238
|
+
* @see https://dhoulb.github.io/shelving/util/url/getBaseURL
|
|
239
|
+
*/
|
|
109
240
|
export declare function getBaseURL(input: Nullish<PossibleURL>): BaseURL | undefined;
|
|
110
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* Require a Base URL — a true URL whose `pathname` is normalised to end in a trailing slash.
|
|
243
|
+
*
|
|
244
|
+
* @param value URL string, URL object, or path to normalise.
|
|
245
|
+
* @param caller Function to attribute a thrown error to.
|
|
246
|
+
* @returns `BaseURL` with a trailing-slash pathname.
|
|
247
|
+
* @throws RequiredError If `value` cannot be resolved to a true URL.
|
|
248
|
+
*
|
|
249
|
+
* @example
|
|
250
|
+
* ```ts
|
|
251
|
+
* requireBaseURL("http://x.com/a", requireBaseURL); // `http://x.com/a/`
|
|
252
|
+
* ```
|
|
253
|
+
*
|
|
254
|
+
* @see https://dhoulb.github.io/shelving/util/url/requireBaseURL
|
|
255
|
+
*/
|
|
111
256
|
export declare function requireBaseURL(value: PossibleURL, caller: AnyCaller): BaseURL;
|
package/util/url.js
CHANGED
|
@@ -3,6 +3,16 @@ export const ImmutableURL = URL;
|
|
|
3
3
|
/**
|
|
4
4
|
* Is an unknown value a URL object?
|
|
5
5
|
* - Must be a `URL` instance and its origin must start with `scheme://`
|
|
6
|
+
*
|
|
7
|
+
* @param value Unknown value to test.
|
|
8
|
+
* @returns `true` if `value` is a true `scheme://host` URL object, otherwise `false`.
|
|
9
|
+
*
|
|
10
|
+
* @example
|
|
11
|
+
* ```ts
|
|
12
|
+
* if (isURL(value)) value.pathname; // `value` is narrowed to `ImmutableURL`
|
|
13
|
+
* ```
|
|
14
|
+
*
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/util/url/isURL
|
|
6
16
|
*/
|
|
7
17
|
export function isURL(value) {
|
|
8
18
|
return value instanceof URL && _isURL(value);
|
|
@@ -10,7 +20,21 @@ export function isURL(value) {
|
|
|
10
20
|
function _isURL(uri) {
|
|
11
21
|
return uri.href.startsWith(`${uri.protocol}//`);
|
|
12
22
|
}
|
|
13
|
-
/**
|
|
23
|
+
/**
|
|
24
|
+
* Assert that an unknown value is a URL object.
|
|
25
|
+
*
|
|
26
|
+
* @param value Unknown value to test.
|
|
27
|
+
* @param caller Function to attribute a thrown error to — defaults to `assertURL`.
|
|
28
|
+
* @throws RequiredError If `value` is not a true `scheme://host` URL object.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* ```ts
|
|
32
|
+
* assertURL(value);
|
|
33
|
+
* value.pathname; // `value` is narrowed to `ImmutableURL`
|
|
34
|
+
* ```
|
|
35
|
+
*
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/util/url/assertURL
|
|
37
|
+
*/
|
|
14
38
|
export function assertURL(value, caller = assertURL) {
|
|
15
39
|
if (!isURL(value))
|
|
16
40
|
throw new RequiredError("Invalid URL", { received: value, caller });
|
|
@@ -23,6 +47,17 @@ export function assertURL(value, caller = assertURL) {
|
|
|
23
47
|
* Note: the base is normalised with `getBaseURL()`, so it is always treated as if it ends in a slash.
|
|
24
48
|
* - e.g. if `base` is `http://p.com/a/b/c` the path resolves relative to `c/` as if a trailing slash was present.
|
|
25
49
|
* - This differs from the default behaviour of `new URL()`, but is the more natural expected result.
|
|
50
|
+
*
|
|
51
|
+
* @param input URI string, URL object, or path to resolve — falsy values return `undefined`.
|
|
52
|
+
* @param base Base URL to resolve a relative `input` against.
|
|
53
|
+
* @returns Resolved `ImmutableURI`, or `undefined` if conversion fails.
|
|
54
|
+
*
|
|
55
|
+
* @example
|
|
56
|
+
* ```ts
|
|
57
|
+
* getBasedURI("path/to/page", "http://example.com/base/"); // `http://example.com/base/path/to/page`
|
|
58
|
+
* ```
|
|
59
|
+
*
|
|
60
|
+
* @see https://dhoulb.github.io/shelving/util/url/getBasedURI
|
|
26
61
|
*/
|
|
27
62
|
export function getBasedURI(input, base) {
|
|
28
63
|
if (!input)
|
|
@@ -39,13 +74,40 @@ export function getBasedURI(input, base) {
|
|
|
39
74
|
/**
|
|
40
75
|
* Resolve a possible URL relative to a base URL, or return `undefined` if conversion fails.
|
|
41
76
|
* - Like `getBasedURI()` but only succeeds for true `scheme://host` URLs — other URIs (e.g. `mailto:`) return `undefined`.
|
|
77
|
+
*
|
|
78
|
+
* @param target URL string, URL object, or path to resolve — falsy values return `undefined`.
|
|
79
|
+
* @param base Base URL to resolve a relative `target` against.
|
|
80
|
+
* @returns Resolved `ImmutableURL`, or `undefined` if conversion fails or the result is not a true URL.
|
|
81
|
+
*
|
|
82
|
+
* @example
|
|
83
|
+
* ```ts
|
|
84
|
+
* getURL("/page", "http://example.com/"); // `http://example.com/page`
|
|
85
|
+
* getURL("mailto:a@b.com"); // `undefined` — not a hierarchical URL
|
|
86
|
+
* ```
|
|
87
|
+
*
|
|
88
|
+
* @see https://dhoulb.github.io/shelving/util/url/getURL
|
|
42
89
|
*/
|
|
43
90
|
export function getURL(target, base) {
|
|
44
91
|
const uri = getBasedURI(target, base);
|
|
45
92
|
if (uri && _isURL(uri))
|
|
46
93
|
return uri;
|
|
47
94
|
}
|
|
48
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Convert a possible URL to a URL, or throw `RequiredError` if conversion fails.
|
|
97
|
+
*
|
|
98
|
+
* @param target URL string, URL object, or path to resolve.
|
|
99
|
+
* @param base Base URL to resolve a relative `target` against.
|
|
100
|
+
* @param caller Function to attribute a thrown error to — defaults to `requireURL`.
|
|
101
|
+
* @returns Resolved `ImmutableURL`.
|
|
102
|
+
* @throws RequiredError If `target` cannot be resolved to a true `scheme://host` URL.
|
|
103
|
+
*
|
|
104
|
+
* @example
|
|
105
|
+
* ```ts
|
|
106
|
+
* requireURL("/page", "http://example.com/"); // `http://example.com/page`
|
|
107
|
+
* ```
|
|
108
|
+
*
|
|
109
|
+
* @see https://dhoulb.github.io/shelving/util/url/requireURL
|
|
110
|
+
*/
|
|
49
111
|
export function requireURL(target, base, caller = requireURL) {
|
|
50
112
|
const url = getURL(target, base);
|
|
51
113
|
assertURL(url, caller);
|
|
@@ -59,8 +121,18 @@ export function requireURL(target, base, caller = requireURL) {
|
|
|
59
121
|
* - Relative targets are resolved against the normalized base URL.
|
|
60
122
|
*
|
|
61
123
|
* @param target URL to match against `base` — if this is a relative path it will be resolved against `base`
|
|
124
|
+
* @param base Base URL the `target` is matched against.
|
|
125
|
+
* @param caller Function to attribute a thrown error to — defaults to `matchURLPrefix`.
|
|
62
126
|
*
|
|
63
127
|
* @returns Absolute path starting with `/`, or `undefined` for origin mismatches or non-matching paths.
|
|
128
|
+
* @throws RequiredError If `target` or `base` cannot be resolved to a true URL.
|
|
129
|
+
*
|
|
130
|
+
* @example
|
|
131
|
+
* ```ts
|
|
132
|
+
* matchURLPrefix("http://x.com/a/b", "http://x.com/a/"); // `/b`
|
|
133
|
+
* ```
|
|
134
|
+
*
|
|
135
|
+
* @see https://dhoulb.github.io/shelving/util/url/matchURLPrefix
|
|
64
136
|
*/
|
|
65
137
|
export function matchURLPrefix(target, base, caller = matchURLPrefix) {
|
|
66
138
|
if (!target || !base)
|
|
@@ -87,6 +159,15 @@ export function matchURLPrefix(target, base, caller = matchURLPrefix) {
|
|
|
87
159
|
*
|
|
88
160
|
* @param target URL whose status to test — relative paths resolve against `base`.
|
|
89
161
|
* @param base Base URL to test against.
|
|
162
|
+
* @param caller Function to attribute a thrown error to — defaults to `isURLActive`.
|
|
163
|
+
* @returns `true` if `target` resolves to exactly the same URL as `base`, otherwise `false`.
|
|
164
|
+
*
|
|
165
|
+
* @example
|
|
166
|
+
* ```ts
|
|
167
|
+
* isURLActive("http://x.com/a", "http://x.com/a"); // `true`
|
|
168
|
+
* ```
|
|
169
|
+
*
|
|
170
|
+
* @see https://dhoulb.github.io/shelving/util/url/isURLActive
|
|
90
171
|
*/
|
|
91
172
|
export function isURLActive(target, base, caller = isURLActive) {
|
|
92
173
|
return !!target && !!base && matchURLPrefix(target, base, caller) === "/";
|
|
@@ -99,18 +180,54 @@ export function isURLActive(target, base, caller = isURLActive) {
|
|
|
99
180
|
*
|
|
100
181
|
* @param target URL whose status to test — relative paths resolve against `base`.
|
|
101
182
|
* @param base Base URL to test against.
|
|
183
|
+
* @param caller Function to attribute a thrown error to — defaults to `isURLProud`.
|
|
184
|
+
* @returns `true` if `target` is `base` or a descendant of `base`, otherwise `false`.
|
|
185
|
+
*
|
|
186
|
+
* @example
|
|
187
|
+
* ```ts
|
|
188
|
+
* isURLProud("http://x.com/a/b", "http://x.com/a"); // `true`
|
|
189
|
+
* ```
|
|
190
|
+
*
|
|
191
|
+
* @see https://dhoulb.github.io/shelving/util/url/isURLProud
|
|
102
192
|
*/
|
|
103
193
|
export function isURLProud(target, base, caller = isURLProud) {
|
|
104
194
|
return !!target && !!base && matchURLPrefix(target, base, caller) !== undefined;
|
|
105
195
|
}
|
|
106
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* Is an unknown value a valid Base URL?
|
|
198
|
+
* - Must be a true URL whose `pathname` ends in a trailing slash.
|
|
199
|
+
*
|
|
200
|
+
* @param value Value to test.
|
|
201
|
+
* @returns `true` if `value` is a `BaseURL` (a URL with a trailing-slash pathname), otherwise `false`.
|
|
202
|
+
*
|
|
203
|
+
* @example
|
|
204
|
+
* ```ts
|
|
205
|
+
* isBaseURL(new URL("http://x.com/a/")); // `true`
|
|
206
|
+
* ```
|
|
207
|
+
*
|
|
208
|
+
* @see https://dhoulb.github.io/shelving/util/url/isBaseURL
|
|
209
|
+
*/
|
|
107
210
|
export function isBaseURL(value) {
|
|
108
211
|
return isURL(value) && _isBaseURL(value);
|
|
109
212
|
}
|
|
110
213
|
function _isBaseURL(uri) {
|
|
111
214
|
return uri.pathname.endsWith("/");
|
|
112
215
|
}
|
|
113
|
-
/**
|
|
216
|
+
/**
|
|
217
|
+
* Get a Base URL — a true URL whose `pathname` is normalised to end in a trailing slash.
|
|
218
|
+
* - Falsy or non-URL input returns `undefined`.
|
|
219
|
+
* - A URL without a trailing slash is cloned and given one (the input is never mutated).
|
|
220
|
+
*
|
|
221
|
+
* @param input URL string, URL object, or path to normalise.
|
|
222
|
+
* @returns `BaseURL` with a trailing-slash pathname, or `undefined` if `input` is not a true URL.
|
|
223
|
+
*
|
|
224
|
+
* @example
|
|
225
|
+
* ```ts
|
|
226
|
+
* getBaseURL("http://x.com/a"); // `http://x.com/a/`
|
|
227
|
+
* ```
|
|
228
|
+
*
|
|
229
|
+
* @see https://dhoulb.github.io/shelving/util/url/getBaseURL
|
|
230
|
+
*/
|
|
114
231
|
export function getBaseURL(input) {
|
|
115
232
|
if (!input)
|
|
116
233
|
return;
|
|
@@ -124,7 +241,21 @@ export function getBaseURL(input) {
|
|
|
124
241
|
base.pathname = `${uri.pathname}/`; // Add a trailing slash.
|
|
125
242
|
return base;
|
|
126
243
|
}
|
|
127
|
-
/**
|
|
244
|
+
/**
|
|
245
|
+
* Require a Base URL — a true URL whose `pathname` is normalised to end in a trailing slash.
|
|
246
|
+
*
|
|
247
|
+
* @param value URL string, URL object, or path to normalise.
|
|
248
|
+
* @param caller Function to attribute a thrown error to.
|
|
249
|
+
* @returns `BaseURL` with a trailing-slash pathname.
|
|
250
|
+
* @throws RequiredError If `value` cannot be resolved to a true URL.
|
|
251
|
+
*
|
|
252
|
+
* @example
|
|
253
|
+
* ```ts
|
|
254
|
+
* requireBaseURL("http://x.com/a", requireBaseURL); // `http://x.com/a/`
|
|
255
|
+
* ```
|
|
256
|
+
*
|
|
257
|
+
* @see https://dhoulb.github.io/shelving/util/url/requireBaseURL
|
|
258
|
+
*/
|
|
128
259
|
export function requireBaseURL(value, caller) {
|
|
129
260
|
const url = getBaseURL(value);
|
|
130
261
|
if (!url)
|
package/util/uuid.d.ts
CHANGED
|
@@ -1,6 +1,31 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Return a random UUID (v4) as a 32-character lowercase hex string with dashes stripped.
|
|
3
|
+
*
|
|
4
|
+
* @returns A random 32-character lowercase hex UUID string.
|
|
5
|
+
* @example randomUUID() // "1b4e28ba2fa14931918f4c9bf9f12b3a"
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/util/uuid/randomUUID
|
|
7
|
+
*/
|
|
2
8
|
export declare function randomUUID(): string;
|
|
3
|
-
/**
|
|
9
|
+
/**
|
|
10
|
+
* Convert/validate a string value as a UUID, or return `undefined` if it isn't valid.
|
|
11
|
+
*
|
|
12
|
+
* - Strips any non-hex characters (including existing dashes) and normalises to lowercase.
|
|
13
|
+
* - Requires exactly 32 hex characters after cleaning, otherwise returns `undefined`.
|
|
14
|
+
* - The returned string is re-grouped into the canonical `8-4-4-4-12` segment layout.
|
|
15
|
+
*
|
|
16
|
+
* @param value The value to convert/validate as a UUID.
|
|
17
|
+
* @returns The normalised UUID string, or `undefined` if the value is not a valid UUID.
|
|
18
|
+
* @example getUUID("1b4e28ba-2fa1-4931-918f-4c9bf9f12b3a") // "1b4e28ba2fa14931918f4c9bf9f12b3a"
|
|
19
|
+
* @see https://dhoulb.github.io/shelving/util/uuid/getUUID
|
|
20
|
+
*/
|
|
4
21
|
export declare function getUUID(value: string): string | undefined;
|
|
5
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Convert/validate a string value as a UUID, or throw `RequiredError` if it isn't valid.
|
|
24
|
+
*
|
|
25
|
+
* @param value The value to convert/validate as a UUID.
|
|
26
|
+
* @returns The normalised UUID string.
|
|
27
|
+
* @throws `RequiredError` if the value is not a valid UUID.
|
|
28
|
+
* @example requireUUID("1b4e28ba-2fa1-4931-918f-4c9bf9f12b3a") // "1b4e28ba2fa14931918f4c9bf9f12b3a"
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/util/uuid/requireUUID
|
|
30
|
+
*/
|
|
6
31
|
export declare function requireUUID(value: string): string;
|
package/util/uuid.js
CHANGED
|
@@ -1,10 +1,27 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
2
|
const R_NOT_LOWERCHAR = /[^0-9a-f]/g;
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Return a random UUID (v4) as a 32-character lowercase hex string with dashes stripped.
|
|
5
|
+
*
|
|
6
|
+
* @returns A random 32-character lowercase hex UUID string.
|
|
7
|
+
* @example randomUUID() // "1b4e28ba2fa14931918f4c9bf9f12b3a"
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/uuid/randomUUID
|
|
9
|
+
*/
|
|
4
10
|
export function randomUUID() {
|
|
5
11
|
return crypto.randomUUID().replace(R_NOT_LOWERCHAR, "");
|
|
6
12
|
}
|
|
7
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Convert/validate a string value as a UUID, or return `undefined` if it isn't valid.
|
|
15
|
+
*
|
|
16
|
+
* - Strips any non-hex characters (including existing dashes) and normalises to lowercase.
|
|
17
|
+
* - Requires exactly 32 hex characters after cleaning, otherwise returns `undefined`.
|
|
18
|
+
* - The returned string is re-grouped into the canonical `8-4-4-4-12` segment layout.
|
|
19
|
+
*
|
|
20
|
+
* @param value The value to convert/validate as a UUID.
|
|
21
|
+
* @returns The normalised UUID string, or `undefined` if the value is not a valid UUID.
|
|
22
|
+
* @example getUUID("1b4e28ba-2fa1-4931-918f-4c9bf9f12b3a") // "1b4e28ba2fa14931918f4c9bf9f12b3a"
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/util/uuid/getUUID
|
|
24
|
+
*/
|
|
8
25
|
export function getUUID(value) {
|
|
9
26
|
if (typeof value !== "string" || !value)
|
|
10
27
|
return;
|
|
@@ -14,7 +31,15 @@ export function getUUID(value) {
|
|
|
14
31
|
return;
|
|
15
32
|
return `${cleaned.slice(0, 8)}${cleaned.slice(8, 12)}${cleaned.slice(12, 16)}${cleaned.slice(16, 20)}${cleaned.slice(20)}`;
|
|
16
33
|
}
|
|
17
|
-
/**
|
|
34
|
+
/**
|
|
35
|
+
* Convert/validate a string value as a UUID, or throw `RequiredError` if it isn't valid.
|
|
36
|
+
*
|
|
37
|
+
* @param value The value to convert/validate as a UUID.
|
|
38
|
+
* @returns The normalised UUID string.
|
|
39
|
+
* @throws `RequiredError` if the value is not a valid UUID.
|
|
40
|
+
* @example requireUUID("1b4e28ba-2fa1-4931-918f-4c9bf9f12b3a") // "1b4e28ba2fa14931918f4c9bf9f12b3a"
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/util/uuid/requireUUID
|
|
42
|
+
*/
|
|
18
43
|
export function requireUUID(value) {
|
|
19
44
|
const uuid = getUUID(value);
|
|
20
45
|
if (!uuid)
|