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/function.d.ts
CHANGED
|
@@ -1,23 +1,78 @@
|
|
|
1
1
|
import type { AnyConstructor } from "./class.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Readonly unknown array that is being used as a set of arguments to a function.
|
|
4
|
+
*
|
|
5
|
+
* @see https://dhoulb.github.io/shelving/util/function/Arguments
|
|
6
|
+
*/
|
|
3
7
|
export type Arguments = readonly unknown[];
|
|
4
|
-
/**
|
|
8
|
+
/**
|
|
9
|
+
* Unknown function.
|
|
10
|
+
*
|
|
11
|
+
* @see https://dhoulb.github.io/shelving/util/function/UnknownFunction
|
|
12
|
+
*/
|
|
5
13
|
export type UnknownFunction = (...args: unknown[]) => unknown;
|
|
6
|
-
/**
|
|
14
|
+
/**
|
|
15
|
+
* Any function (purposefully as wide as possible for use with `extends X` or `is X` statements).
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/util/function/AnyFunction
|
|
18
|
+
*/
|
|
7
19
|
export type AnyFunction = (...args: any) => any;
|
|
8
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Any calling function or constructor, usually referring to something that can call in the current scope that can appear in a stack trace.
|
|
22
|
+
*
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/util/function/AnyCaller
|
|
24
|
+
*/
|
|
9
25
|
export type AnyCaller = AnyFunction | AnyConstructor;
|
|
10
|
-
/**
|
|
26
|
+
/**
|
|
27
|
+
* A callback is a function that is called when something happens, optionally with multiple values.
|
|
28
|
+
*
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/util/function/Callback
|
|
30
|
+
*/
|
|
11
31
|
export type Callback<A extends Arguments = []> = (...args: A) => void;
|
|
12
|
-
/**
|
|
32
|
+
/**
|
|
33
|
+
* A callback is a function that is called when something happens with a value.
|
|
34
|
+
*
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/util/function/ValueCallback
|
|
36
|
+
*/
|
|
13
37
|
export type ValueCallback<T> = (value: T) => void;
|
|
14
|
-
/**
|
|
38
|
+
/**
|
|
39
|
+
* Function that is called when something errors.
|
|
40
|
+
*
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/util/function/ErrorCallback
|
|
42
|
+
*/
|
|
15
43
|
export type ErrorCallback = (reason: unknown) => void;
|
|
16
|
-
/**
|
|
44
|
+
/**
|
|
45
|
+
* Is a value a function?
|
|
46
|
+
*
|
|
47
|
+
* @param value The value to test.
|
|
48
|
+
* @returns `true` if `value` is a function, narrowing its type to `AnyFunction`.
|
|
49
|
+
* @example isFunction(() => {}) // true
|
|
50
|
+
* @see https://dhoulb.github.io/shelving/util/function/isFunction
|
|
51
|
+
*/
|
|
17
52
|
export declare function isFunction(value: unknown): value is AnyFunction;
|
|
18
|
-
/**
|
|
53
|
+
/**
|
|
54
|
+
* Assert that a value is a function.
|
|
55
|
+
*
|
|
56
|
+
* @param value The value to assert.
|
|
57
|
+
* @throws {RequiredError} If `value` is not a function.
|
|
58
|
+
* @see https://dhoulb.github.io/shelving/util/function/assertFunction
|
|
59
|
+
*/
|
|
19
60
|
export declare function assertFunction(value: unknown): asserts value is AnyFunction;
|
|
20
|
-
/**
|
|
61
|
+
/**
|
|
62
|
+
* Function that just passes through the first argument.
|
|
63
|
+
*
|
|
64
|
+
* @param value The value to return.
|
|
65
|
+
* @returns The exact `value` it was given, unchanged.
|
|
66
|
+
* @example PASSTHROUGH(123) // 123
|
|
67
|
+
* @see https://dhoulb.github.io/shelving/util/function/PASSTHROUGH
|
|
68
|
+
*/
|
|
21
69
|
export declare function PASSTHROUGH<T>(value: T): T;
|
|
22
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Function that does nothing with its arguments and always returns void.
|
|
72
|
+
*
|
|
73
|
+
* @param _unused Zero or more arguments, all ignored.
|
|
74
|
+
* @returns Always `undefined`.
|
|
75
|
+
* @example BLACKHOLE(1, 2, 3) // undefined
|
|
76
|
+
* @see https://dhoulb.github.io/shelving/util/function/BLACKHOLE
|
|
77
|
+
*/
|
|
23
78
|
export declare function BLACKHOLE(..._unused: Arguments): void | undefined;
|
package/util/function.js
CHANGED
|
@@ -1,18 +1,45 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Is a value a function?
|
|
4
|
+
*
|
|
5
|
+
* @param value The value to test.
|
|
6
|
+
* @returns `true` if `value` is a function, narrowing its type to `AnyFunction`.
|
|
7
|
+
* @example isFunction(() => {}) // true
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/function/isFunction
|
|
9
|
+
*/
|
|
3
10
|
export function isFunction(value) {
|
|
4
11
|
return typeof value === "function";
|
|
5
12
|
}
|
|
6
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Assert that a value is a function.
|
|
15
|
+
*
|
|
16
|
+
* @param value The value to assert.
|
|
17
|
+
* @throws {RequiredError} If `value` is not a function.
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/util/function/assertFunction
|
|
19
|
+
*/
|
|
7
20
|
export function assertFunction(value) {
|
|
8
21
|
if (typeof value !== "function")
|
|
9
22
|
throw new RequiredError("Must be function", { received: value, caller: assertFunction });
|
|
10
23
|
}
|
|
11
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Function that just passes through the first argument.
|
|
26
|
+
*
|
|
27
|
+
* @param value The value to return.
|
|
28
|
+
* @returns The exact `value` it was given, unchanged.
|
|
29
|
+
* @example PASSTHROUGH(123) // 123
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/util/function/PASSTHROUGH
|
|
31
|
+
*/
|
|
12
32
|
export function PASSTHROUGH(value) {
|
|
13
33
|
return value;
|
|
14
34
|
}
|
|
15
|
-
/**
|
|
35
|
+
/**
|
|
36
|
+
* Function that does nothing with its arguments and always returns void.
|
|
37
|
+
*
|
|
38
|
+
* @param _unused Zero or more arguments, all ignored.
|
|
39
|
+
* @returns Always `undefined`.
|
|
40
|
+
* @example BLACKHOLE(1, 2, 3) // undefined
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/util/function/BLACKHOLE
|
|
42
|
+
*/
|
|
16
43
|
export function BLACKHOLE(..._unused) {
|
|
17
44
|
return undefined;
|
|
18
45
|
}
|
package/util/geo.d.ts
CHANGED
|
@@ -1,5 +1,10 @@
|
|
|
1
1
|
import type { AnyCaller } from "./function.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* List of countries by two-letter ISO 3166-1 alpha-2 code.
|
|
4
|
+
* - Keys are uppercase two-letter codes; values are the full English country name.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/util/geo/COUNTRIES
|
|
7
|
+
*/
|
|
3
8
|
export declare const COUNTRIES: {
|
|
4
9
|
readonly AF: "Afghanistan";
|
|
5
10
|
readonly AX: "Aland Islands";
|
|
@@ -248,17 +253,55 @@ export declare const COUNTRIES: {
|
|
|
248
253
|
readonly ZM: "Zambia";
|
|
249
254
|
readonly ZW: "Zimbabwe";
|
|
250
255
|
};
|
|
251
|
-
/**
|
|
256
|
+
/**
|
|
257
|
+
* Two-letter ISO 3166-1 alpha-2 country code string (a key of `COUNTRIES`).
|
|
258
|
+
*
|
|
259
|
+
* @see https://dhoulb.github.io/shelving/util/geo/Country
|
|
260
|
+
*/
|
|
252
261
|
export type Country = keyof typeof COUNTRIES;
|
|
253
|
-
/**
|
|
262
|
+
/**
|
|
263
|
+
* A value that can possibly be resolved to a `Country` — either a country code or the literal `"detect"`.
|
|
264
|
+
*
|
|
265
|
+
* @see https://dhoulb.github.io/shelving/util/geo/PossibleCountry
|
|
266
|
+
*/
|
|
254
267
|
export type PossibleCountry = Country | "detect";
|
|
255
|
-
/**
|
|
268
|
+
/**
|
|
269
|
+
* Parse a country string, or detect a browser country from `navigator.language`.
|
|
270
|
+
* - When `value` is `"detect"`, reads the last two characters of `navigator.language` (if available).
|
|
271
|
+
* - Matching is case-insensitive; the value is uppercased before lookup.
|
|
272
|
+
*
|
|
273
|
+
* @param value The country code to parse, or `"detect"` to read it from the browser. Defaults to `"detect"`.
|
|
274
|
+
* @returns The matching `Country` code, or `undefined` if it could not be resolved.
|
|
275
|
+
* @example getCountry("gb") // "GB"
|
|
276
|
+
* @see https://dhoulb.github.io/shelving/util/geo/getCountry
|
|
277
|
+
*/
|
|
256
278
|
export declare function getCountry(value?: unknown): Country | undefined;
|
|
257
|
-
/**
|
|
279
|
+
/**
|
|
280
|
+
* Parse a country string, or detect a browser country from `navigator.language`, or throw `RequiredError`.
|
|
281
|
+
*
|
|
282
|
+
* @param value The country code to parse, or `"detect"` to read it from the browser.
|
|
283
|
+
* @param caller Identity of the calling function for error attribution.
|
|
284
|
+
* @returns The matching `Country` code.
|
|
285
|
+
* @throws RequiredError If a country could not be resolved.
|
|
286
|
+
* @example requireCountry("gb") // "GB"
|
|
287
|
+
* @see https://dhoulb.github.io/shelving/util/geo/requireCountry
|
|
288
|
+
*/
|
|
258
289
|
export declare function requireCountry(value?: unknown, caller?: AnyCaller): Country;
|
|
259
|
-
/**
|
|
290
|
+
/**
|
|
291
|
+
* Format a country code into its full country name.
|
|
292
|
+
* - Matching is case-insensitive; unknown codes are returned unchanged.
|
|
293
|
+
*
|
|
294
|
+
* @param country The country code to format.
|
|
295
|
+
* @returns The full English country name, or the input unchanged if it is not a known code.
|
|
296
|
+
* @example formatCountry("GB") // "United Kingdom"
|
|
297
|
+
* @see https://dhoulb.github.io/shelving/util/geo/formatCountry
|
|
298
|
+
*/
|
|
260
299
|
export declare function formatCountry(country: string): string;
|
|
261
|
-
/**
|
|
300
|
+
/**
|
|
301
|
+
* Valid shape for physical address data.
|
|
302
|
+
*
|
|
303
|
+
* @see https://dhoulb.github.io/shelving/util/geo/AddressData
|
|
304
|
+
*/
|
|
262
305
|
export type AddressData = {
|
|
263
306
|
readonly address1: string;
|
|
264
307
|
readonly address2: string;
|
|
@@ -267,5 +310,14 @@ export type AddressData = {
|
|
|
267
310
|
readonly postcode: string;
|
|
268
311
|
readonly country: Country;
|
|
269
312
|
};
|
|
270
|
-
/**
|
|
313
|
+
/**
|
|
314
|
+
* Format address data into a single multiline string.
|
|
315
|
+
* - Each field is placed on its own line; an empty `address2` is omitted.
|
|
316
|
+
* - The country code is expanded to its full name via `formatCountry`.
|
|
317
|
+
*
|
|
318
|
+
* @param address The address data to format.
|
|
319
|
+
* @returns A newline-separated address string.
|
|
320
|
+
* @example formatAddress({ address1: "1 High St", address2: "", city: "London", state: "", postcode: "SW1", country: "GB" })
|
|
321
|
+
* @see https://dhoulb.github.io/shelving/util/geo/formatAddress
|
|
322
|
+
*/
|
|
271
323
|
export declare function formatAddress({ address1, address2, city, state, postcode, country }: AddressData): string;
|
package/util/geo.js
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
2
|
import { isProp } from "./object.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* List of countries by two-letter ISO 3166-1 alpha-2 code.
|
|
5
|
+
* - Keys are uppercase two-letter codes; values are the full English country name.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/util/geo/COUNTRIES
|
|
8
|
+
*/
|
|
4
9
|
export const COUNTRIES = {
|
|
5
10
|
AF: "Afghanistan",
|
|
6
11
|
AX: "Aland Islands",
|
|
@@ -249,7 +254,16 @@ export const COUNTRIES = {
|
|
|
249
254
|
ZM: "Zambia",
|
|
250
255
|
ZW: "Zimbabwe",
|
|
251
256
|
};
|
|
252
|
-
/**
|
|
257
|
+
/**
|
|
258
|
+
* Parse a country string, or detect a browser country from `navigator.language`.
|
|
259
|
+
* - When `value` is `"detect"`, reads the last two characters of `navigator.language` (if available).
|
|
260
|
+
* - Matching is case-insensitive; the value is uppercased before lookup.
|
|
261
|
+
*
|
|
262
|
+
* @param value The country code to parse, or `"detect"` to read it from the browser. Defaults to `"detect"`.
|
|
263
|
+
* @returns The matching `Country` code, or `undefined` if it could not be resolved.
|
|
264
|
+
* @example getCountry("gb") // "GB"
|
|
265
|
+
* @see https://dhoulb.github.io/shelving/util/geo/getCountry
|
|
266
|
+
*/
|
|
253
267
|
export function getCountry(value = "detect") {
|
|
254
268
|
if (value === "detect") {
|
|
255
269
|
if (typeof navigator === "object") {
|
|
@@ -264,19 +278,45 @@ export function getCountry(value = "detect") {
|
|
|
264
278
|
return code;
|
|
265
279
|
}
|
|
266
280
|
}
|
|
267
|
-
/**
|
|
281
|
+
/**
|
|
282
|
+
* Parse a country string, or detect a browser country from `navigator.language`, or throw `RequiredError`.
|
|
283
|
+
*
|
|
284
|
+
* @param value The country code to parse, or `"detect"` to read it from the browser.
|
|
285
|
+
* @param caller Identity of the calling function for error attribution.
|
|
286
|
+
* @returns The matching `Country` code.
|
|
287
|
+
* @throws RequiredError If a country could not be resolved.
|
|
288
|
+
* @example requireCountry("gb") // "GB"
|
|
289
|
+
* @see https://dhoulb.github.io/shelving/util/geo/requireCountry
|
|
290
|
+
*/
|
|
268
291
|
export function requireCountry(value, caller = requireCountry) {
|
|
269
292
|
const country = getCountry(value);
|
|
270
293
|
if (!country)
|
|
271
294
|
throw new RequiredError("Must be country", { received: value, caller });
|
|
272
295
|
return country;
|
|
273
296
|
}
|
|
274
|
-
/**
|
|
297
|
+
/**
|
|
298
|
+
* Format a country code into its full country name.
|
|
299
|
+
* - Matching is case-insensitive; unknown codes are returned unchanged.
|
|
300
|
+
*
|
|
301
|
+
* @param country The country code to format.
|
|
302
|
+
* @returns The full English country name, or the input unchanged if it is not a known code.
|
|
303
|
+
* @example formatCountry("GB") // "United Kingdom"
|
|
304
|
+
* @see https://dhoulb.github.io/shelving/util/geo/formatCountry
|
|
305
|
+
*/
|
|
275
306
|
export function formatCountry(country) {
|
|
276
307
|
const code = country.toUpperCase();
|
|
277
308
|
return isProp(COUNTRIES, code) ? COUNTRIES[code] : country;
|
|
278
309
|
}
|
|
279
|
-
/**
|
|
310
|
+
/**
|
|
311
|
+
* Format address data into a single multiline string.
|
|
312
|
+
* - Each field is placed on its own line; an empty `address2` is omitted.
|
|
313
|
+
* - The country code is expanded to its full name via `formatCountry`.
|
|
314
|
+
*
|
|
315
|
+
* @param address The address data to format.
|
|
316
|
+
* @returns A newline-separated address string.
|
|
317
|
+
* @example formatAddress({ address1: "1 High St", address2: "", city: "London", state: "", postcode: "SW1", country: "GB" })
|
|
318
|
+
* @see https://dhoulb.github.io/shelving/util/geo/formatAddress
|
|
319
|
+
*/
|
|
280
320
|
export function formatAddress({ address1, address2, city, state, postcode, country }) {
|
|
281
321
|
return `${address1}\n${address2 ? `${address2}\n` : ""}${city}\n${state}\n${postcode}\n${formatCountry(country)}`;
|
|
282
322
|
}
|
package/util/hash.d.ts
CHANGED
|
@@ -1,4 +1,23 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Hash a string into an idempotent number.
|
|
3
|
+
* - Sums the char codes of every character, so the same string always produces the same number.
|
|
4
|
+
* - Not cryptographically secure — intended for cheap, stable bucketing.
|
|
5
|
+
*
|
|
6
|
+
* @param str The string to hash.
|
|
7
|
+
* @returns A non-negative number derived from the string's characters.
|
|
8
|
+
* @example hashString("abc") // 294
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/util/hash/hashString
|
|
10
|
+
*/
|
|
2
11
|
export declare function hashString(str: string): number;
|
|
3
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Hash a string into an idempotent number wrapped between two values.
|
|
14
|
+
* - Useful for deterministically mapping a string into a fixed range, e.g. a colour or bucket index.
|
|
15
|
+
*
|
|
16
|
+
* @param str The string to hash.
|
|
17
|
+
* @param min The inclusive lower bound of the output range. Defaults to `0`.
|
|
18
|
+
* @param max The exclusive upper bound of the output range. Defaults to `256`.
|
|
19
|
+
* @returns A number in the range `min` to `max` derived from the string.
|
|
20
|
+
* @example hashStringBetween("abc", 0, 10) // 4
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/util/hash/hashStringBetween
|
|
22
|
+
*/
|
|
4
23
|
export declare function hashStringBetween(str: string, min?: number, max?: number): number;
|
package/util/hash.js
CHANGED
|
@@ -1,12 +1,31 @@
|
|
|
1
1
|
import { wrapNumber } from "./number.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Hash a string into an idempotent number.
|
|
4
|
+
* - Sums the char codes of every character, so the same string always produces the same number.
|
|
5
|
+
* - Not cryptographically secure — intended for cheap, stable bucketing.
|
|
6
|
+
*
|
|
7
|
+
* @param str The string to hash.
|
|
8
|
+
* @returns A non-negative number derived from the string's characters.
|
|
9
|
+
* @example hashString("abc") // 294
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/hash/hashString
|
|
11
|
+
*/
|
|
3
12
|
export function hashString(str) {
|
|
4
13
|
let hash = 0;
|
|
5
14
|
for (let i = 0; i < str.length; i++)
|
|
6
15
|
hash += str.charCodeAt(i);
|
|
7
16
|
return hash;
|
|
8
17
|
}
|
|
9
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Hash a string into an idempotent number wrapped between two values.
|
|
20
|
+
* - Useful for deterministically mapping a string into a fixed range, e.g. a colour or bucket index.
|
|
21
|
+
*
|
|
22
|
+
* @param str The string to hash.
|
|
23
|
+
* @param min The inclusive lower bound of the output range. Defaults to `0`.
|
|
24
|
+
* @param max The exclusive upper bound of the output range. Defaults to `256`.
|
|
25
|
+
* @returns A number in the range `min` to `max` derived from the string.
|
|
26
|
+
* @example hashStringBetween("abc", 0, 10) // 4
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/util/hash/hashStringBetween
|
|
28
|
+
*/
|
|
10
29
|
export function hashStringBetween(str, min = 0, max = 256) {
|
|
11
30
|
return wrapNumber(hashString(str), min, max);
|
|
12
31
|
}
|
package/util/http.d.ts
CHANGED
|
@@ -4,62 +4,107 @@ import type { AnyCaller, Arguments } from "./function.js";
|
|
|
4
4
|
import { type Nullish } from "./null.js";
|
|
5
5
|
import { type PossibleURIParams } from "./uri.js";
|
|
6
6
|
import { type PossibleURL } from "./url.js";
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* A handler function takes a `Request` and optional extra arguments and returns a `Response` (possibly asynchronously).
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/http/RequestHandler
|
|
11
|
+
*/
|
|
8
12
|
export type RequestHandler<A extends Arguments = []> = (request: Request, ...args: A) => Response | Promise<Response>;
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* An optional request handler that may return `undefined` to indicate no match.
|
|
15
|
+
*
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/util/http/OptionalRequestHandler
|
|
17
|
+
*/
|
|
10
18
|
export type OptionalRequestHandler<A extends Arguments = []> = (request: Request, ...args: A) => Response | Promise<Response> | undefined;
|
|
11
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* A list of optional request handlers.
|
|
21
|
+
*
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/util/http/OptionalRequestHandlers
|
|
23
|
+
*/
|
|
12
24
|
export type OptionalRequestHandlers<A extends Arguments = []> = Iterable<OptionalRequestHandler<A>>;
|
|
13
25
|
/**
|
|
14
26
|
* Parse the body content of an HTTP `Request` based on its content type, or throw `RequestError` if the content could not be parsed.
|
|
15
27
|
*
|
|
28
|
+
* @param request The `Request` whose body to parse.
|
|
29
|
+
* @param caller Identity of the calling function for error attribution.
|
|
16
30
|
* @returns undefined If the request method is `GET` or `HEAD` (these request methods have no body).
|
|
17
31
|
* @returns unknown If content type is `application/json` and has valid JSON (including `undefined` if the content is empty).
|
|
18
32
|
* @returns unknown If content type is `multipart/form-data` then convert it to a simple `Data` object.
|
|
19
33
|
* @returns string If content type is `text/plain` or anything else (including `""` empty string if it's empty).
|
|
20
34
|
*
|
|
21
|
-
* @throws RequestError
|
|
35
|
+
* @throws {RequestError} If the content is not `text/plain`, or `application/json` with valid JSON.
|
|
36
|
+
* @example const body = await parseRequestBody(request);
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/util/http/parseRequestBody
|
|
22
38
|
*/
|
|
23
39
|
export declare function parseRequestBody(request: Request, caller?: AnyCaller): Promise<unknown>;
|
|
24
40
|
/**
|
|
25
41
|
* Parse JSON from an HTTP `Request`, or return `undefined` when the request has no body.
|
|
26
42
|
*
|
|
27
|
-
* @
|
|
43
|
+
* @param request The `Request` whose JSON body to parse.
|
|
44
|
+
* @param caller Identity of the calling function for error attribution.
|
|
45
|
+
* @returns The parsed JSON value, or `undefined` if the body is empty.
|
|
46
|
+
* @throws {RequestError} If the request body is not valid JSON.
|
|
47
|
+
* @example const data = await parseRequestJSON(request);
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/util/http/parseRequestJSON
|
|
28
49
|
*/
|
|
29
50
|
export declare function parseRequestJSON(request: Request, caller?: AnyCaller): Promise<unknown>;
|
|
30
51
|
/**
|
|
31
52
|
* Parse `FormData` from an HTTP `Request`, or return `undefined` when the request has no body.
|
|
32
53
|
*
|
|
33
|
-
* @
|
|
54
|
+
* @param request The `Request` whose form-data body to parse.
|
|
55
|
+
* @param caller Identity of the calling function for error attribution.
|
|
56
|
+
* @returns The parsed `FormData`.
|
|
57
|
+
* @throws {RequestError} If the request body is not valid multipart form-data.
|
|
58
|
+
* @example const form = await parseRequestFormData(request);
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/util/http/parseRequestFormData
|
|
34
60
|
*/
|
|
35
61
|
export declare function parseRequestFormData(request: Request, caller?: AnyCaller): Promise<FormData | undefined>;
|
|
36
62
|
/**
|
|
37
63
|
* Parse the body content of an HTTP `Response` based on its content type, or throw `ResponseError` if the content could not be parsed.
|
|
38
64
|
*
|
|
65
|
+
* @param response The `Response` whose body to parse.
|
|
66
|
+
* @param caller Identity of the calling function for error attribution.
|
|
39
67
|
* @returns unknown If content type is `application/json` and has valid JSON (including `undefined` if the content is empty).
|
|
40
68
|
* @returns unknown If content type is `multipart/form-data` then convert it to a simple `Data` object.
|
|
41
69
|
* @returns string If content type is `text/plain` or anything else (including `""` empty string if it's empty).
|
|
42
70
|
*
|
|
43
|
-
* @throws ResponseError
|
|
71
|
+
* @throws {ResponseError} If the content is not `text/plain` or `application/json` with valid JSON.
|
|
72
|
+
* @example const body = await parseResponseBody(response);
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/util/http/parseResponseBody
|
|
44
74
|
*/
|
|
45
75
|
export declare function parseResponseBody(response: Response, caller?: AnyCaller): Promise<unknown>;
|
|
46
76
|
/**
|
|
47
77
|
* Parse JSON from an HTTP `Response`, or return `undefined` when the response has no body.
|
|
48
78
|
*
|
|
49
|
-
* @
|
|
79
|
+
* @param response The `Response` whose JSON body to parse.
|
|
80
|
+
* @param caller Identity of the calling function for error attribution.
|
|
81
|
+
* @returns The parsed JSON value, or `undefined` if the body is empty.
|
|
82
|
+
* @throws {ResponseError} If the response body is not valid JSON.
|
|
83
|
+
* @example const data = await parseResponseJSON(response);
|
|
84
|
+
* @see https://dhoulb.github.io/shelving/util/http/parseResponseJSON
|
|
50
85
|
*/
|
|
51
86
|
export declare function parseResponseJSON(response: Response, caller?: AnyCaller): Promise<unknown>;
|
|
52
87
|
/**
|
|
53
88
|
* Parse `FormData` from an HTTP `Response`, or return `undefined` when the response has no body.
|
|
54
89
|
*
|
|
55
|
-
* @
|
|
90
|
+
* @param response The `Response` whose form-data body to parse.
|
|
91
|
+
* @param caller Identity of the calling function for error attribution.
|
|
92
|
+
* @returns The parsed `FormData`.
|
|
93
|
+
* @throws {ResponseError} If the response body is not valid multipart form-data.
|
|
94
|
+
* @example const form = await parseResponseFormData(response);
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/util/http/parseResponseFormData
|
|
56
96
|
*/
|
|
57
97
|
export declare function parseResponseFormData(response: Response, caller?: AnyCaller): Promise<FormData>;
|
|
58
98
|
/**
|
|
59
99
|
* Get an HTTP `Response` for an unknown value.
|
|
100
|
+
* - A `Response` value is returned unchanged.
|
|
101
|
+
* - `undefined` becomes a `204 No Content` response.
|
|
102
|
+
* - Anything else becomes a `200` JSON response.
|
|
60
103
|
*
|
|
61
104
|
* @param value The value to convert to a `Response`.
|
|
62
105
|
* @returns A `Response` with a 2xx status, and response body as JSON (if it was set), or no body if `value` is `undefined`
|
|
106
|
+
* @example getResponse({ name: "abc" }) // 200 JSON Response
|
|
107
|
+
* @see https://dhoulb.github.io/shelving/util/http/getResponse
|
|
63
108
|
*/
|
|
64
109
|
export declare function getResponse(value: unknown): Response;
|
|
65
110
|
/**
|
|
@@ -73,28 +118,71 @@ export declare function getResponse(value: unknown): Response;
|
|
|
73
118
|
* - Anything else returns a 500 response.
|
|
74
119
|
*
|
|
75
120
|
* @param reason The error value to convert to a `Response`.
|
|
76
|
-
* @param debug If `true` include the error message in the response (for debugging), or `false` to return generic error codes (for security).
|
|
121
|
+
* @param debug If `true` include the error message in the response (for debugging), or `false` to return generic error codes (for security). Defaults to `false`.
|
|
122
|
+
* @returns A `Response` with a status code and (optionally) body derived from the error.
|
|
123
|
+
* @example getErrorResponse("Invalid input") // 422 Response
|
|
124
|
+
* @see https://dhoulb.github.io/shelving/util/http/getErrorResponse
|
|
77
125
|
*/
|
|
78
126
|
export declare function getErrorResponse(reason: unknown, debug?: boolean): Response;
|
|
79
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* HTTP request methods that have no body.
|
|
129
|
+
*
|
|
130
|
+
* @see https://dhoulb.github.io/shelving/util/http/RequestHeadMethod
|
|
131
|
+
*/
|
|
80
132
|
export type RequestHeadMethod = "HEAD" | "GET";
|
|
81
|
-
/**
|
|
133
|
+
/**
|
|
134
|
+
* HTTP request methods that have a body.
|
|
135
|
+
*
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/util/http/RequestBodyMethod
|
|
137
|
+
*/
|
|
82
138
|
export type RequestBodyMethod = "POST" | "PUT" | "PATCH" | "DELETE";
|
|
83
|
-
/**
|
|
139
|
+
/**
|
|
140
|
+
* HTTP request methods.
|
|
141
|
+
*
|
|
142
|
+
* @see https://dhoulb.github.io/shelving/util/http/RequestMethod
|
|
143
|
+
*/
|
|
84
144
|
export type RequestMethod = RequestHeadMethod | RequestBodyMethod;
|
|
85
|
-
/**
|
|
145
|
+
/**
|
|
146
|
+
* Is a string a supported HTTP request method?
|
|
147
|
+
*
|
|
148
|
+
* @param method The method string to test.
|
|
149
|
+
* @returns `true` if `method` is a supported `RequestMethod`, narrowing its type.
|
|
150
|
+
* @example isRequestMethod("GET") // true
|
|
151
|
+
* @see https://dhoulb.github.io/shelving/util/http/isRequestMethod
|
|
152
|
+
*/
|
|
86
153
|
export declare function isRequestMethod(method: string): method is RequestMethod;
|
|
87
|
-
/**
|
|
154
|
+
/**
|
|
155
|
+
* Is a string a supported HTTP request method that never sends a body?
|
|
156
|
+
*
|
|
157
|
+
* @param method The method string to test.
|
|
158
|
+
* @returns `true` if `method` is a supported `RequestHeadMethod`, narrowing its type.
|
|
159
|
+
* @example isRequestHeadMethod("GET") // true
|
|
160
|
+
* @see https://dhoulb.github.io/shelving/util/http/isRequestHeadMethod
|
|
161
|
+
*/
|
|
88
162
|
export declare function isRequestHeadMethod(method: string): method is RequestHeadMethod;
|
|
89
|
-
/**
|
|
163
|
+
/**
|
|
164
|
+
* Params in requests are a dictionary of strings.
|
|
165
|
+
*
|
|
166
|
+
* @see https://dhoulb.github.io/shelving/util/http/RequestParams
|
|
167
|
+
*/
|
|
90
168
|
export type RequestParams = ImmutableDictionary<string>;
|
|
91
|
-
/**
|
|
169
|
+
/**
|
|
170
|
+
* Configurable options for endpoint requests.
|
|
171
|
+
*
|
|
172
|
+
* @see https://dhoulb.github.io/shelving/util/http/RequestOptions
|
|
173
|
+
*/
|
|
92
174
|
export type RequestOptions = Pick<RequestInit, "cache" | "credentials" | "headers" | "integrity" | "keepalive" | "mode" | "redirect" | "referrer" | "referrerPolicy" | "signal">;
|
|
93
175
|
/**
|
|
94
176
|
* Merge provider-level and call-level request options.
|
|
95
177
|
* - Scalar options from `b` override `a`.
|
|
96
178
|
* - Header dictionaries are merged so call-level headers override default headers by key.
|
|
97
179
|
* - Abort signals are merged, so either abort signal will cancel the request.
|
|
180
|
+
*
|
|
181
|
+
* @param a The provider-level (default) request options.
|
|
182
|
+
* @param b The call-level request options whose values override `a`.
|
|
183
|
+
* @returns A merged `RequestOptions` with combined headers and abort signals.
|
|
184
|
+
* @example mergeRequestOptions({ cache: "no-store" }, { mode: "cors" }) // { cache: "no-store", mode: "cors", ... }
|
|
185
|
+
* @see https://dhoulb.github.io/shelving/util/http/mergeRequestOptions
|
|
98
186
|
*/
|
|
99
187
|
export declare function mergeRequestOptions({ headers: aHeaders, signal: aSignal, ...a }?: RequestOptions, { headers: bHeaders, signal: bSignal, ...b }?: RequestOptions): RequestOptions;
|
|
100
188
|
/**
|
|
@@ -105,9 +193,11 @@ export declare function mergeRequestOptions({ headers: aHeaders, signal: aSignal
|
|
|
105
193
|
* @param url The target URL.
|
|
106
194
|
* @param params `?query` params to encode into the URL.
|
|
107
195
|
* @param options Additional request options.
|
|
196
|
+
* @param caller Function to attribute a thrown error to (defaults to `createHeadRequest`).
|
|
108
197
|
* @returns A `Request` with no body content.
|
|
109
198
|
*
|
|
110
199
|
* @example createHeadRequest("POST", "https://api.example.com/items", { name: "abc" })
|
|
200
|
+
* @see https://dhoulb.github.io/shelving/util/http/createHeadRequest
|
|
111
201
|
*/
|
|
112
202
|
export declare function createHeadRequest(method: RequestHeadMethod, url: PossibleURL, params: Nullish<PossibleURIParams>, options?: RequestOptions, caller?: AnyCaller): Request;
|
|
113
203
|
/**
|
|
@@ -119,9 +209,11 @@ export declare function createHeadRequest(method: RequestHeadMethod, url: Possib
|
|
|
119
209
|
* @param url The target URL.
|
|
120
210
|
* @param body The plain-text request body.
|
|
121
211
|
* @param options Additional request options.
|
|
212
|
+
* @param caller Function to attribute a thrown error to (defaults to `createTextRequest`).
|
|
122
213
|
* @returns A `Request` with `text/plain` content type.
|
|
123
214
|
*
|
|
124
215
|
* @example createTextRequest("POST", "https://api.example.com/items", "hello")
|
|
216
|
+
* @see https://dhoulb.github.io/shelving/util/http/createTextRequest
|
|
125
217
|
*/
|
|
126
218
|
export declare function createTextRequest(method: RequestMethod, url: PossibleURL, body: string, options?: RequestOptions, caller?: AnyCaller): Request;
|
|
127
219
|
/**
|
|
@@ -133,9 +225,11 @@ export declare function createTextRequest(method: RequestMethod, url: PossibleUR
|
|
|
133
225
|
* @param url The target URL.
|
|
134
226
|
* @param body The value to JSON-encode.
|
|
135
227
|
* @param options Additional request options.
|
|
228
|
+
* @param caller Function to attribute a thrown error to (defaults to `createJSONRequest`).
|
|
136
229
|
* @returns A `Request` with `application/json` content type.
|
|
137
230
|
*
|
|
138
231
|
* @example createJSONRequest("POST", "https://api.example.com/items", { name: "abc" })
|
|
232
|
+
* @see https://dhoulb.github.io/shelving/util/http/createJSONRequest
|
|
139
233
|
*/
|
|
140
234
|
export declare function createJSONRequest(method: RequestBodyMethod, url: PossibleURL, body: unknown, options?: RequestOptions, caller?: AnyCaller): Request;
|
|
141
235
|
/**
|
|
@@ -146,9 +240,11 @@ export declare function createJSONRequest(method: RequestBodyMethod, url: Possib
|
|
|
146
240
|
* @param url The target URL.
|
|
147
241
|
* @param body The `FormData` payload.
|
|
148
242
|
* @param options Additional request options.
|
|
243
|
+
* @param caller Function to attribute a thrown error to (defaults to `createFormDataRequest`).
|
|
149
244
|
* @returns A `Request` with a multipart body.
|
|
150
245
|
*
|
|
151
246
|
* @example createFormDataRequest("POST", "https://api.example.com/upload", new FormData())
|
|
247
|
+
* @see https://dhoulb.github.io/shelving/util/http/createFormDataRequest
|
|
152
248
|
*/
|
|
153
249
|
export declare function createFormDataRequest(method: RequestBodyMethod, url: PossibleURL, body: FormData, options?: RequestOptions, caller?: AnyCaller): Request;
|
|
154
250
|
/**
|
|
@@ -160,11 +256,13 @@ export declare function createFormDataRequest(method: RequestBodyMethod, url: Po
|
|
|
160
256
|
* @param url The target URL.
|
|
161
257
|
* @param data The data object to serialize as XML.
|
|
162
258
|
* @param options Additional request options.
|
|
259
|
+
* @param caller Function to attribute a thrown error to (defaults to `createXMLRequest`).
|
|
163
260
|
* @returns A `Request` with `application/xml` content type.
|
|
164
261
|
*
|
|
165
262
|
* @throws {RequiredError} If the XML data contains invalid element names or values.
|
|
166
263
|
*
|
|
167
264
|
* @example createXMLRequest("POST", "https://api.example.com/items", { item: { name: "abc" } })
|
|
265
|
+
* @see https://dhoulb.github.io/shelving/util/http/createXMLRequest
|
|
168
266
|
*/
|
|
169
267
|
export declare function createXMLRequest(method: RequestBodyMethod, url: PossibleURL, data: Data, options?: RequestOptions, caller?: AnyCaller): Request;
|
|
170
268
|
/**
|
|
@@ -176,10 +274,27 @@ export declare function createXMLRequest(method: RequestBodyMethod, url: Possibl
|
|
|
176
274
|
* - Expects a fully valid URL (any `{placeholders}` in the URL are not considered).
|
|
177
275
|
* - As per the HTTP spec, `GET` and `HEAD` requests cannot contain a body
|
|
178
276
|
*
|
|
179
|
-
* @
|
|
277
|
+
* @param method The HTTP method.
|
|
278
|
+
* @param url The target URL.
|
|
279
|
+
* @param payload The body payload, whose type selects the content type.
|
|
280
|
+
* @param options Additional request options.
|
|
281
|
+
* @param caller Function to attribute a thrown error to (defaults to `createRequest`).
|
|
282
|
+
* @returns A `Request` with a content type chosen to match `payload`.
|
|
180
283
|
*
|
|
181
284
|
* @throws {RequiredError} if this is a `HEAD` or `GET` request but `body` is not a data object.
|
|
285
|
+
*
|
|
286
|
+
* @example createRequest("POST", "https://api.example.com/items", { name: "abc" }) // JSON Request
|
|
287
|
+
* @see https://dhoulb.github.io/shelving/util/http/createRequest
|
|
182
288
|
*/
|
|
183
289
|
export declare function createRequest(method: RequestMethod, url: PossibleURL, payload: unknown, options?: RequestOptions, caller?: AnyCaller): Request;
|
|
184
|
-
/**
|
|
290
|
+
/**
|
|
291
|
+
* Assert that the payload for a `HEAD` or `GET` method is a data object, `null`, or `undefined`.
|
|
292
|
+
*
|
|
293
|
+
* @param payload The payload to assert.
|
|
294
|
+
* @param method The HTTP method the payload is for (used in the error message).
|
|
295
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertRequestHeadPayload`).
|
|
296
|
+
* @throws {RequiredError} If `payload` is not a data object, `null`, or `undefined`.
|
|
297
|
+
* @example assertRequestHeadPayload({ q: "abc" }, "GET"); // passes
|
|
298
|
+
* @see https://dhoulb.github.io/shelving/util/http/assertRequestHeadPayload
|
|
299
|
+
*/
|
|
185
300
|
export declare function assertRequestHeadPayload(payload: unknown, method: RequestHeadMethod, caller?: AnyCaller): asserts payload is Nullish<Data>;
|