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/iterate.js
CHANGED
|
@@ -1,6 +1,21 @@
|
|
|
1
|
-
/**
|
|
2
|
-
|
|
3
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Is an unknown value an iterable?
|
|
3
|
+
*
|
|
4
|
+
* @param value The value to test.
|
|
5
|
+
* @returns `true` if `value` is an object with a `Symbol.iterator` method, otherwise `false`.
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/isIterable
|
|
7
|
+
*/
|
|
8
|
+
export function isIterable(value) {
|
|
9
|
+
return typeof value === "object" && !!value && Symbol.iterator in value;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* Flatten one or more (possibly nested) iterables into a flat sequence of items.
|
|
13
|
+
*
|
|
14
|
+
* @param items The item or deeply-nested iterable of items to flatten.
|
|
15
|
+
* @returns An iterable yielding every leaf item in order.
|
|
16
|
+
* @example Array.from(flattenItems([1, [2, [3, 4]]])) // [1, 2, 3, 4]
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/flattenItems
|
|
18
|
+
*/
|
|
4
19
|
export function* flattenItems(items) {
|
|
5
20
|
if (isIterable(items))
|
|
6
21
|
for (const item of items)
|
|
@@ -10,14 +25,27 @@ export function* flattenItems(items) {
|
|
|
10
25
|
}
|
|
11
26
|
/**
|
|
12
27
|
* Does an iterable have one or more items.
|
|
13
|
-
* -
|
|
28
|
+
* - Stops as soon as the first item is found, so it never fully consumes the iterable.
|
|
29
|
+
*
|
|
30
|
+
* @param items The iterable to test.
|
|
31
|
+
* @returns `true` if the iterable yields at least one item, otherwise `false`.
|
|
32
|
+
* @example hasItems([1, 2, 3]) // true
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/hasItems
|
|
14
34
|
*/
|
|
15
35
|
export function hasItems(items) {
|
|
16
36
|
for (const _unused of items)
|
|
17
37
|
return true;
|
|
18
38
|
return false;
|
|
19
39
|
}
|
|
20
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Count the number of items in an iterable.
|
|
42
|
+
* - Fully consumes the iterable to count its iterations.
|
|
43
|
+
*
|
|
44
|
+
* @param items The iterable to count.
|
|
45
|
+
* @returns The number of items yielded by the iterable.
|
|
46
|
+
* @example countItems([1, 2, 3]) // 3
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/countItems
|
|
48
|
+
*/
|
|
21
49
|
export function countItems(items) {
|
|
22
50
|
let count = 0;
|
|
23
51
|
for (const _unused of items)
|
|
@@ -27,6 +55,13 @@ export function countItems(items) {
|
|
|
27
55
|
/**
|
|
28
56
|
* Yield a range of numbers from `start` to `end`
|
|
29
57
|
* - Yields in descending order if `end` is lower than `start`
|
|
58
|
+
* - Both `start` and `end` are inclusive.
|
|
59
|
+
*
|
|
60
|
+
* @param start The first number to yield.
|
|
61
|
+
* @param end The last number to yield (inclusive).
|
|
62
|
+
* @returns An iterable yielding the numbers between `start` and `end`.
|
|
63
|
+
* @example Array.from(getRange(1, 4)) // [1, 2, 3, 4]
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/getRange
|
|
30
65
|
*/
|
|
31
66
|
export function* getRange(start, end) {
|
|
32
67
|
if (start <= end)
|
|
@@ -38,7 +73,13 @@ export function* getRange(start, end) {
|
|
|
38
73
|
}
|
|
39
74
|
/**
|
|
40
75
|
* Apply a limit to an iterable set of items.
|
|
41
|
-
* -
|
|
76
|
+
* - Stops yielding once `limit` items have been produced.
|
|
77
|
+
*
|
|
78
|
+
* @param items The iterable to limit.
|
|
79
|
+
* @param limit The maximum number of items to yield.
|
|
80
|
+
* @returns An iterable yielding at most `limit` items.
|
|
81
|
+
* @example Array.from(limitItems([1, 2, 3, 4], 2)) // [1, 2]
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/limitItems
|
|
42
83
|
*/
|
|
43
84
|
export function* limitItems(items, limit) {
|
|
44
85
|
let count = 0;
|
|
@@ -51,13 +92,31 @@ export function* limitItems(items, limit) {
|
|
|
51
92
|
return;
|
|
52
93
|
}
|
|
53
94
|
}
|
|
54
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Pick items from an iterable set of items.
|
|
97
|
+
* - Only yields items that appear in the `pick` list.
|
|
98
|
+
*
|
|
99
|
+
* @param items The iterable to filter.
|
|
100
|
+
* @param pick The items to keep.
|
|
101
|
+
* @returns An iterable yielding only the items found in `pick`.
|
|
102
|
+
* @example Array.from(pickItems([1, 2, 3], 1, 3)) // [1, 3]
|
|
103
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/pickItems
|
|
104
|
+
*/
|
|
55
105
|
export function* pickItems(items, ...pick) {
|
|
56
106
|
for (const item of items)
|
|
57
107
|
if (pick.includes(item))
|
|
58
108
|
yield item;
|
|
59
109
|
}
|
|
60
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* Omit items from an iterable set of items.
|
|
112
|
+
* - Yields every item except those that appear in the `omit` list.
|
|
113
|
+
*
|
|
114
|
+
* @param items The iterable to filter.
|
|
115
|
+
* @param omit The items to remove.
|
|
116
|
+
* @returns An iterable yielding every item not found in `omit`.
|
|
117
|
+
* @example Array.from(omitItems([1, 2, 3], 2)) // [1, 3]
|
|
118
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/omitItems
|
|
119
|
+
*/
|
|
61
120
|
export function* omitItems(items, ...omit) {
|
|
62
121
|
for (const item of items)
|
|
63
122
|
if (!omit.includes(item))
|
|
@@ -69,7 +128,16 @@ export function reduceItems(items, reducer, initial) {
|
|
|
69
128
|
current = reducer(current, item);
|
|
70
129
|
return current;
|
|
71
130
|
}
|
|
72
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* Yield chunks of a given size.
|
|
133
|
+
* - The final chunk may contain fewer than `size` items.
|
|
134
|
+
*
|
|
135
|
+
* @param items The iterable to split into chunks.
|
|
136
|
+
* @param size The maximum number of items per chunk.
|
|
137
|
+
* @returns An iterable yielding arrays of up to `size` items.
|
|
138
|
+
* @example Array.from(getChunks([1, 2, 3, 4, 5], 2)) // [[1, 2], [3, 4], [5]]
|
|
139
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/getChunks
|
|
140
|
+
*/
|
|
73
141
|
export function* getChunks(items, size) {
|
|
74
142
|
let chunk = [];
|
|
75
143
|
for (const item of items) {
|
|
@@ -82,7 +150,15 @@ export function* getChunks(items, size) {
|
|
|
82
150
|
if (chunk.length)
|
|
83
151
|
yield chunk;
|
|
84
152
|
}
|
|
85
|
-
/**
|
|
153
|
+
/**
|
|
154
|
+
* Merge two or more iterables into a single iterable set.
|
|
155
|
+
* - Yields all items from each input in order.
|
|
156
|
+
*
|
|
157
|
+
* @param inputs Two or more iterables to merge.
|
|
158
|
+
* @returns An iterable yielding every item from each input in sequence.
|
|
159
|
+
* @example Array.from(mergeItems([1, 2], [3, 4])) // [1, 2, 3, 4]
|
|
160
|
+
* @see https://dhoulb.github.io/shelving/util/iterate/mergeItems
|
|
161
|
+
*/
|
|
86
162
|
export function* mergeItems(...inputs) {
|
|
87
163
|
for (const input of inputs)
|
|
88
164
|
yield* input;
|
package/util/jwt.d.ts
CHANGED
|
@@ -2,6 +2,12 @@ import { type Bytes, type PossibleBytes } from "./bytes.js";
|
|
|
2
2
|
import type { Data } from "./data.js";
|
|
3
3
|
import { type PossibleDate } from "./date.js";
|
|
4
4
|
import type { AnyCaller } from "./function.js";
|
|
5
|
+
/**
|
|
6
|
+
* Claims payload accepted when encoding a JWT.
|
|
7
|
+
* - Extends `Data`, so any additional custom claims may be included alongside the standard `iat` / `nbf` / `exp` fields.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/TokenClaims
|
|
10
|
+
*/
|
|
5
11
|
export interface TokenClaims extends Data {
|
|
6
12
|
/**
|
|
7
13
|
* "Issued at" date (defaults to "now").
|
|
@@ -23,15 +29,21 @@ export interface TokenClaims extends Data {
|
|
|
23
29
|
/**
|
|
24
30
|
* Encode a JWT and return the string token.
|
|
25
31
|
* - Currently only supports HMAC SHA-512 signing.
|
|
32
|
+
* - The `exp` claim defaults to 30 days from now, and `iat` / `nbf` default to "now".
|
|
26
33
|
*
|
|
27
|
-
* @param claims The payload claims to include in the JWT.
|
|
28
|
-
* @param secret The secret key to sign the JWT with.
|
|
29
|
-
* @
|
|
30
|
-
*
|
|
31
|
-
* @
|
|
34
|
+
* @param claims The payload claims to include in the JWT, including optional `iat`, `nbf`, and `exp` values.
|
|
35
|
+
* @param secret The secret key to sign the JWT with (minimum 64 bytes / 512 bits).
|
|
36
|
+
* @returns A promise resolving to the signed JWT string token.
|
|
37
|
+
* @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
|
|
38
|
+
* @example const token = await encodeToken({ sub: "user1" }, secret)
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/encodeToken
|
|
32
40
|
*/
|
|
33
41
|
export declare function encodeToken({ nbf, iat, exp, ...claims }: TokenClaims, secret: PossibleBytes): Promise<string>;
|
|
34
|
-
/**
|
|
42
|
+
/**
|
|
43
|
+
* Parts that make up a JSON Web Token — the raw encoded segments plus their decoded contents.
|
|
44
|
+
*
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/TokenData
|
|
46
|
+
*/
|
|
35
47
|
export type TokenData = {
|
|
36
48
|
header: string;
|
|
37
49
|
payload: string;
|
|
@@ -42,22 +54,39 @@ export type TokenData = {
|
|
|
42
54
|
};
|
|
43
55
|
/**
|
|
44
56
|
* Split a JSON Web Token into its header, payload, and signature, and decode and parse the JSON.
|
|
57
|
+
* - Does not verify the signature — use `verifyToken` for that.
|
|
58
|
+
*
|
|
59
|
+
* @param token The JWT string to split and decode.
|
|
60
|
+
* @param caller Identity of the calling function for error attribution.
|
|
61
|
+
* @returns A `TokenData` object with the raw segments and their decoded header, payload, and signature.
|
|
62
|
+
* @throws UnauthorizedError If the token is malformed, or its segments are not valid Base64URL-encoded JSON.
|
|
63
|
+
* @example splitToken("aaa.bbb.ccc") // { header, payload, signature, headerData, payloadData, signatureBytes }
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/splitToken
|
|
45
65
|
*/
|
|
46
66
|
export declare function splitToken(token: string, caller?: AnyCaller): TokenData;
|
|
47
67
|
/**
|
|
48
68
|
* Decode a JWT, verify it, and return the full payload data.
|
|
49
69
|
* - Currently only supports HMAC SHA-512 signing.
|
|
70
|
+
* - Allows a small amount of clock skew when checking `nbf` and `exp`.
|
|
50
71
|
*
|
|
51
|
-
* @
|
|
52
|
-
* @
|
|
53
|
-
* @
|
|
72
|
+
* @param token The JWT string to verify.
|
|
73
|
+
* @param secret The secret key to verify the JWT signature with (minimum 64 bytes / 512 bits).
|
|
74
|
+
* @param caller Identity of the calling function for error attribution.
|
|
75
|
+
* @returns A promise resolving to the decoded payload claims.
|
|
76
|
+
* @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
|
|
77
|
+
* @throws UnauthorizedError If the token is malformed, the signature is incorrect, or the token is expired or not yet valid.
|
|
78
|
+
* @example const { sub } = await verifyToken(token, secret)
|
|
79
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/verifyToken
|
|
54
80
|
*/
|
|
55
81
|
export declare function verifyToken(token: string, secret: PossibleBytes, caller?: AnyCaller): Promise<Data>;
|
|
56
82
|
/**
|
|
57
83
|
* Set the `Authorization: Bearer {token}` on a `Request` object (by reference).
|
|
58
84
|
*
|
|
59
85
|
* @param request The `Request` object to set the token on.
|
|
86
|
+
* @param token The JWT string to set in the `Authorization` header.
|
|
60
87
|
* @returns The same `Request` object that was passed in.
|
|
88
|
+
* @example setRequestToken(request, token)
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/setRequestToken
|
|
61
90
|
*/
|
|
62
91
|
export declare function setRequestToken(request: Request, token: string): Request;
|
|
63
92
|
/**
|
|
@@ -65,14 +94,19 @@ export declare function setRequestToken(request: Request, token: string): Reques
|
|
|
65
94
|
*
|
|
66
95
|
* @param request The `Request` object possibly containing an `Authorization: Bearer {token}` header to extract the token from.
|
|
67
96
|
* @returns The string token extracted from the `Authorization` header, or `undefined` if not set.
|
|
97
|
+
* @example getRequestToken(request) // "eyJ..." or undefined
|
|
98
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/getRequestToken
|
|
68
99
|
*/
|
|
69
100
|
export declare function getRequestToken(request: Request): string | undefined;
|
|
70
101
|
/**
|
|
71
102
|
* Extract the `Authorization: Bearer {token}` from a `Request` object, or throw `UnauthorizedError` if not set or malformed.
|
|
72
103
|
*
|
|
73
104
|
* @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
|
|
105
|
+
* @param caller Identity of the calling function for error attribution.
|
|
74
106
|
* @returns The string token extracted from the `Authorization` header.
|
|
75
107
|
* @throws UnauthorizedError If the `Authorization` header is not set, or the JWT it contains is not well-formed.
|
|
108
|
+
* @example requireRequestToken(request) // "eyJ..."
|
|
109
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/requireRequestToken
|
|
76
110
|
*/
|
|
77
111
|
export declare function requireRequestToken(request: Request, caller?: AnyCaller): string;
|
|
78
112
|
/**
|
|
@@ -81,10 +115,10 @@ export declare function requireRequestToken(request: Request, caller?: AnyCaller
|
|
|
81
115
|
*
|
|
82
116
|
* @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
|
|
83
117
|
* @param secret The secret key to verify the JWT signature with.
|
|
84
|
-
*
|
|
85
|
-
* @returns
|
|
118
|
+
* @param caller Identity of the calling function for error attribution.
|
|
119
|
+
* @returns A promise resolving to the decoded payload data from the JWT.
|
|
86
120
|
* @throws UnauthorizedError If the `Authorization` header is not set, the JWT it contains is not well-formed, or the JWT signature is invalid.
|
|
87
|
-
*
|
|
88
|
-
* @
|
|
121
|
+
* @example const { sub, iss, customClaim } = await verifyRequestToken(request, secret)
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/verifyRequestToken
|
|
89
123
|
*/
|
|
90
124
|
export declare function verifyRequestToken(request: Request, secret: PossibleBytes, caller?: AnyCaller): Promise<Data>;
|
package/util/jwt.js
CHANGED
|
@@ -22,12 +22,14 @@ function _getKey(caller, secret, ...usages) {
|
|
|
22
22
|
/**
|
|
23
23
|
* Encode a JWT and return the string token.
|
|
24
24
|
* - Currently only supports HMAC SHA-512 signing.
|
|
25
|
+
* - The `exp` claim defaults to 30 days from now, and `iat` / `nbf` default to "now".
|
|
25
26
|
*
|
|
26
|
-
* @param claims The payload claims to include in the JWT.
|
|
27
|
-
* @param secret The secret key to sign the JWT with.
|
|
28
|
-
* @
|
|
29
|
-
*
|
|
30
|
-
* @
|
|
27
|
+
* @param claims The payload claims to include in the JWT, including optional `iat`, `nbf`, and `exp` values.
|
|
28
|
+
* @param secret The secret key to sign the JWT with (minimum 64 bytes / 512 bits).
|
|
29
|
+
* @returns A promise resolving to the signed JWT string token.
|
|
30
|
+
* @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
|
|
31
|
+
* @example const token = await encodeToken({ sub: "user1" }, secret)
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/encodeToken
|
|
31
33
|
*/
|
|
32
34
|
export async function encodeToken({ nbf = "now", iat = "now", exp = DAY * 30, ...claims }, secret) {
|
|
33
35
|
// Encode header.
|
|
@@ -47,6 +49,14 @@ export async function encodeToken({ nbf = "now", iat = "now", exp = DAY * 30, ..
|
|
|
47
49
|
}
|
|
48
50
|
/**
|
|
49
51
|
* Split a JSON Web Token into its header, payload, and signature, and decode and parse the JSON.
|
|
52
|
+
* - Does not verify the signature — use `verifyToken` for that.
|
|
53
|
+
*
|
|
54
|
+
* @param token The JWT string to split and decode.
|
|
55
|
+
* @param caller Identity of the calling function for error attribution.
|
|
56
|
+
* @returns A `TokenData` object with the raw segments and their decoded header, payload, and signature.
|
|
57
|
+
* @throws UnauthorizedError If the token is malformed, or its segments are not valid Base64URL-encoded JSON.
|
|
58
|
+
* @example splitToken("aaa.bbb.ccc") // { header, payload, signature, headerData, payloadData, signatureBytes }
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/splitToken
|
|
50
60
|
*/
|
|
51
61
|
export function splitToken(token, caller = splitToken) {
|
|
52
62
|
// Split token.
|
|
@@ -82,10 +92,16 @@ export function splitToken(token, caller = splitToken) {
|
|
|
82
92
|
/**
|
|
83
93
|
* Decode a JWT, verify it, and return the full payload data.
|
|
84
94
|
* - Currently only supports HMAC SHA-512 signing.
|
|
95
|
+
* - Allows a small amount of clock skew when checking `nbf` and `exp`.
|
|
85
96
|
*
|
|
86
|
-
* @
|
|
87
|
-
* @
|
|
88
|
-
* @
|
|
97
|
+
* @param token The JWT string to verify.
|
|
98
|
+
* @param secret The secret key to verify the JWT signature with (minimum 64 bytes / 512 bits).
|
|
99
|
+
* @param caller Identity of the calling function for error attribution.
|
|
100
|
+
* @returns A promise resolving to the decoded payload claims.
|
|
101
|
+
* @throws ValueError If the `secret` is not a byte sequence of at least 64 bytes.
|
|
102
|
+
* @throws UnauthorizedError If the token is malformed, the signature is incorrect, or the token is expired or not yet valid.
|
|
103
|
+
* @example const { sub } = await verifyToken(token, secret)
|
|
104
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/verifyToken
|
|
89
105
|
*/
|
|
90
106
|
export async function verifyToken(token, secret, caller = verifyToken) {
|
|
91
107
|
const { header, payload, signature, headerData, payloadData } = splitToken(token, caller);
|
|
@@ -112,7 +128,10 @@ export async function verifyToken(token, secret, caller = verifyToken) {
|
|
|
112
128
|
* Set the `Authorization: Bearer {token}` on a `Request` object (by reference).
|
|
113
129
|
*
|
|
114
130
|
* @param request The `Request` object to set the token on.
|
|
131
|
+
* @param token The JWT string to set in the `Authorization` header.
|
|
115
132
|
* @returns The same `Request` object that was passed in.
|
|
133
|
+
* @example setRequestToken(request, token)
|
|
134
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/setRequestToken
|
|
116
135
|
*/
|
|
117
136
|
export function setRequestToken(request, token) {
|
|
118
137
|
request.headers.set("Authorization", `Bearer ${token}`);
|
|
@@ -123,6 +142,8 @@ export function setRequestToken(request, token) {
|
|
|
123
142
|
*
|
|
124
143
|
* @param request The `Request` object possibly containing an `Authorization: Bearer {token}` header to extract the token from.
|
|
125
144
|
* @returns The string token extracted from the `Authorization` header, or `undefined` if not set.
|
|
145
|
+
* @example getRequestToken(request) // "eyJ..." or undefined
|
|
146
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/getRequestToken
|
|
126
147
|
*/
|
|
127
148
|
export function getRequestToken(request) {
|
|
128
149
|
const auth = request.headers.get("Authorization");
|
|
@@ -133,8 +154,11 @@ export function getRequestToken(request) {
|
|
|
133
154
|
* Extract the `Authorization: Bearer {token}` from a `Request` object, or throw `UnauthorizedError` if not set or malformed.
|
|
134
155
|
*
|
|
135
156
|
* @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
|
|
157
|
+
* @param caller Identity of the calling function for error attribution.
|
|
136
158
|
* @returns The string token extracted from the `Authorization` header.
|
|
137
159
|
* @throws UnauthorizedError If the `Authorization` header is not set, or the JWT it contains is not well-formed.
|
|
160
|
+
* @example requireRequestToken(request) // "eyJ..."
|
|
161
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/requireRequestToken
|
|
138
162
|
*/
|
|
139
163
|
export function requireRequestToken(request, caller = requireRequestToken) {
|
|
140
164
|
const token = getRequestToken(request);
|
|
@@ -148,11 +172,11 @@ export function requireRequestToken(request, caller = requireRequestToken) {
|
|
|
148
172
|
*
|
|
149
173
|
* @param request The `Request` object containing an `Authorization: Bearer {token}` header to extract the token from.
|
|
150
174
|
* @param secret The secret key to verify the JWT signature with.
|
|
151
|
-
*
|
|
152
|
-
* @returns
|
|
175
|
+
* @param caller Identity of the calling function for error attribution.
|
|
176
|
+
* @returns A promise resolving to the decoded payload data from the JWT.
|
|
153
177
|
* @throws UnauthorizedError If the `Authorization` header is not set, the JWT it contains is not well-formed, or the JWT signature is invalid.
|
|
154
|
-
*
|
|
155
|
-
* @
|
|
178
|
+
* @example const { sub, iss, customClaim } = await verifyRequestToken(request, secret)
|
|
179
|
+
* @see https://dhoulb.github.io/shelving/util/jwt/verifyRequestToken
|
|
156
180
|
*/
|
|
157
181
|
export function verifyRequestToken(request, secret, caller = verifyRequestToken) {
|
|
158
182
|
const token = requireRequestToken(request, caller);
|
package/util/lazy.d.ts
CHANGED
|
@@ -1,18 +1,21 @@
|
|
|
1
1
|
import type { Arguments } from "./function.js";
|
|
2
2
|
/**
|
|
3
3
|
* Lazy value: a plain value, or an initialiser function that returns that value.
|
|
4
|
-
*
|
|
4
|
+
*
|
|
5
|
+
* @see https://dhoulb.github.io/shelving/util/lazy/Lazy
|
|
5
6
|
*/
|
|
6
7
|
export type Lazy<T, A extends Arguments = []> = ((...args: A) => T) | T;
|
|
7
8
|
/**
|
|
8
9
|
* Initialise a lazy value.
|
|
10
|
+
* - If `value` is a plain value, that value is returned.
|
|
11
|
+
* - If `value` is a function, it is called with `args` and its returned value is returned.
|
|
9
12
|
*
|
|
10
13
|
* @param value The lazy value to resolve.
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
* @
|
|
15
|
-
*
|
|
14
|
+
* @param args Any additional arguments passed into the initialiser function as its parameters.
|
|
15
|
+
* @returns The resolved value.
|
|
16
|
+
* @example getLazy(() => 123) // 123
|
|
17
|
+
* @example getLazy(123) // 123
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/util/lazy/getLazy
|
|
16
19
|
*/
|
|
17
20
|
export declare function getLazy<T, A extends Arguments>(value: (...args: A) => T, ...args: A): T;
|
|
18
21
|
export declare function getLazy<T, A extends Arguments>(value: Lazy<T, A>, ...args: A): T;
|
package/util/link.d.ts
CHANGED
|
@@ -2,7 +2,11 @@ import type { AnyCaller } from "./function.js";
|
|
|
2
2
|
import type { Nullish } from "./null.js";
|
|
3
3
|
import { type ImmutableURI, type PossibleURI } from "./uri.js";
|
|
4
4
|
import { type ImmutableURL } from "./url.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Anything that can be turned into an `<a href>`.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/link/PossibleLink
|
|
9
|
+
*/
|
|
6
10
|
export type PossibleLink = PossibleURI;
|
|
7
11
|
/**
|
|
8
12
|
* Resolve a possible link to an absolute URI string, or return `undefined` if resolution fails.
|
|
@@ -26,6 +30,7 @@ export type PossibleLink = PossibleURI;
|
|
|
26
30
|
* @example getLink("/schema", pageURL, siteRoot) // → "https://x.com/app/schema" when siteRoot is "https://x.com/app/"
|
|
27
31
|
* @example getLink("./db", new URL("https://x.com/app/schema/")) // → "https://x.com/app/schema/db"
|
|
28
32
|
* @example getLink("mailto:a@b") // → "mailto:a@b"
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/util/link/getLink
|
|
29
34
|
*/
|
|
30
35
|
export declare function getLink(href: Nullish<PossibleLink>, url?: ImmutableURL, root?: ImmutableURL | undefined): ImmutableURI | undefined;
|
|
31
36
|
/**
|
|
@@ -36,8 +41,10 @@ export declare function getLink(href: Nullish<PossibleLink>, url?: ImmutableURL,
|
|
|
36
41
|
* @param href The link to resolve.
|
|
37
42
|
* @param url The current page URL — base for relative refs and scheme-prefixed URIs.
|
|
38
43
|
* @param root The site root URL — base for absolute paths. Defaults to `url`.
|
|
39
|
-
* @param caller
|
|
44
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireLink` itself).
|
|
40
45
|
* @returns An absolute URI string.
|
|
41
|
-
* @throws
|
|
46
|
+
* @throws {RequiredError} If `href` cannot be resolved.
|
|
47
|
+
* @example requireLink("mailto:a@b") // → "mailto:a@b"
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/util/link/requireLink
|
|
42
49
|
*/
|
|
43
50
|
export declare function requireLink(href: PossibleLink, url?: ImmutableURL, root?: ImmutableURL, caller?: AnyCaller): ImmutableURI;
|
package/util/link.js
CHANGED
|
@@ -24,6 +24,7 @@ import { getBasedURI, getURL } from "./url.js";
|
|
|
24
24
|
* @example getLink("/schema", pageURL, siteRoot) // → "https://x.com/app/schema" when siteRoot is "https://x.com/app/"
|
|
25
25
|
* @example getLink("./db", new URL("https://x.com/app/schema/")) // → "https://x.com/app/schema/db"
|
|
26
26
|
* @example getLink("mailto:a@b") // → "mailto:a@b"
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/util/link/getLink
|
|
27
28
|
*/
|
|
28
29
|
export function getLink(href, url, root = url) {
|
|
29
30
|
if (!href)
|
|
@@ -45,9 +46,11 @@ export function getLink(href, url, root = url) {
|
|
|
45
46
|
* @param href The link to resolve.
|
|
46
47
|
* @param url The current page URL — base for relative refs and scheme-prefixed URIs.
|
|
47
48
|
* @param root The site root URL — base for absolute paths. Defaults to `url`.
|
|
48
|
-
* @param caller
|
|
49
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireLink` itself).
|
|
49
50
|
* @returns An absolute URI string.
|
|
50
|
-
* @throws
|
|
51
|
+
* @throws {RequiredError} If `href` cannot be resolved.
|
|
52
|
+
* @example requireLink("mailto:a@b") // → "mailto:a@b"
|
|
53
|
+
* @see https://dhoulb.github.io/shelving/util/link/requireLink
|
|
51
54
|
*/
|
|
52
55
|
export function requireLink(href, url, root, caller = requireLink) {
|
|
53
56
|
const uri = getLink(href, url, root);
|
package/util/log.d.ts
CHANGED
|
@@ -1,7 +1,30 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noConsole: This file's purpose is to write logs. */
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Log a `Request` to the console.
|
|
4
|
+
*
|
|
5
|
+
* @param request The `Request` to log.
|
|
6
|
+
* @returns A promise that resolves once the request has been logged.
|
|
7
|
+
* @example await logRequest(request)
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/log/logRequest
|
|
9
|
+
*/
|
|
3
10
|
export declare function logRequest(request: Request): Promise<void>;
|
|
4
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Log a `Response` to a `Request` to the console.
|
|
13
|
+
*
|
|
14
|
+
* @param response The `Response` to log.
|
|
15
|
+
* @param request The originating `Request`, included in the log for context.
|
|
16
|
+
* @returns A promise that resolves once the response has been logged.
|
|
17
|
+
* @example await logRequestResponse(response, request)
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/util/log/logRequestResponse
|
|
19
|
+
*/
|
|
5
20
|
export declare function logRequestResponse(response: Response, request: Request): Promise<void>;
|
|
6
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Log an `Error` from a `Request` to the console.
|
|
23
|
+
*
|
|
24
|
+
* @param reason The error value to log.
|
|
25
|
+
* @param request The originating `Request`, included in the log for context.
|
|
26
|
+
* @returns Nothing.
|
|
27
|
+
* @example logRequestError(error, request)
|
|
28
|
+
* @see https://dhoulb.github.io/shelving/util/log/logRequestError
|
|
29
|
+
*/
|
|
7
30
|
export declare function logRequestError(reason: unknown, request: Request): void;
|
package/util/log.js
CHANGED
|
@@ -1,15 +1,38 @@
|
|
|
1
1
|
/** biome-ignore-all lint/suspicious/noConsole: This file's purpose is to write logs. */
|
|
2
2
|
import { ANSI_FAILURE, ANSI_LEFT, ANSI_RIGHT } from "./ansi.js";
|
|
3
3
|
import { debug, debugFullRequest, debugFullResponse, debugRequest } from "./debug.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Log a `Request` to the console.
|
|
6
|
+
*
|
|
7
|
+
* @param request The `Request` to log.
|
|
8
|
+
* @returns A promise that resolves once the request has been logged.
|
|
9
|
+
* @example await logRequest(request)
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/log/logRequest
|
|
11
|
+
*/
|
|
5
12
|
export async function logRequest(request) {
|
|
6
13
|
console.log(`${ANSI_RIGHT} ${await debugFullRequest(request)}`);
|
|
7
14
|
}
|
|
8
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Log a `Response` to a `Request` to the console.
|
|
17
|
+
*
|
|
18
|
+
* @param response The `Response` to log.
|
|
19
|
+
* @param request The originating `Request`, included in the log for context.
|
|
20
|
+
* @returns A promise that resolves once the response has been logged.
|
|
21
|
+
* @example await logRequestResponse(response, request)
|
|
22
|
+
* @see https://dhoulb.github.io/shelving/util/log/logRequestResponse
|
|
23
|
+
*/
|
|
9
24
|
export async function logRequestResponse(response, request) {
|
|
10
25
|
console.log(`${ANSI_LEFT} ${debugRequest(request)}\n\n${await debugFullResponse(response)}`);
|
|
11
26
|
}
|
|
12
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Log an `Error` from a `Request` to the console.
|
|
29
|
+
*
|
|
30
|
+
* @param reason The error value to log.
|
|
31
|
+
* @param request The originating `Request`, included in the log for context.
|
|
32
|
+
* @returns Nothing.
|
|
33
|
+
* @example logRequestError(error, request)
|
|
34
|
+
* @see https://dhoulb.github.io/shelving/util/log/logRequestError
|
|
35
|
+
*/
|
|
13
36
|
export function logRequestError(reason, request) {
|
|
14
37
|
console.error(`${ANSI_FAILURE} ${debugRequest(request)}\n\n${debug(reason)}`);
|
|
15
38
|
}
|