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/date.js
CHANGED
|
@@ -1,12 +1,24 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
2
|
/**
|
|
3
|
-
* Is a value a valid
|
|
3
|
+
* Is a value a valid `Date` instance?
|
|
4
4
|
* - Note: `Date` instances can be invalid (e.g. `new Date("blah blah").getTime()` returns `NaN`). These are detected and will always return `false`
|
|
5
|
+
*
|
|
6
|
+
* @param value The value to check.
|
|
7
|
+
* @returns `true` if the value is a `Date` instance representing a valid date, narrowing it to `Date`.
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/date/isDate
|
|
5
9
|
*/
|
|
6
10
|
export function isDate(value) {
|
|
7
11
|
return value instanceof Date && Number.isFinite(value.getTime());
|
|
8
12
|
}
|
|
9
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Assert that a value is a valid `Date` instance.
|
|
15
|
+
*
|
|
16
|
+
* @param value The value to check.
|
|
17
|
+
* @param caller The function to attribute a thrown error to (defaults to `assertDate`).
|
|
18
|
+
* @throws {RequiredError} If the value is not a valid `Date` instance.
|
|
19
|
+
* @example assertDate(value); // throws unless `value` is a valid `Date`
|
|
20
|
+
* @see https://dhoulb.github.io/shelving/util/date/assertDate
|
|
21
|
+
*/
|
|
10
22
|
export function assertDate(value, caller = assertDate) {
|
|
11
23
|
if (!isDate(value))
|
|
12
24
|
throw new RequiredError("Must be valid date", { received: value, caller });
|
|
@@ -27,7 +39,10 @@ export function assertDate(value, caller = assertDate) {
|
|
|
27
39
|
* - Numbers are return the corresponding date (using `new Date(number)`, i.e. milliseconds since 01/01/1970).
|
|
28
40
|
* - Anything else returns `undefined`
|
|
29
41
|
*
|
|
30
|
-
* @returns `Date` instance if the value could be converted to a valid date,
|
|
42
|
+
* @returns `Date` instance if the value could be converted to a valid date, or `undefined` if not.
|
|
43
|
+
* @example getDate("2003-09-12") // Date instance for 2003-09-12
|
|
44
|
+
* @example getDate("nope") // undefined
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/date/getDate
|
|
31
46
|
*/
|
|
32
47
|
export function getDate(value) {
|
|
33
48
|
if (value === "now")
|
|
@@ -49,37 +64,79 @@ export function getDate(value) {
|
|
|
49
64
|
return time;
|
|
50
65
|
}
|
|
51
66
|
}
|
|
52
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Get a date representing this exact moment.
|
|
69
|
+
*
|
|
70
|
+
* @returns A new `Date` instance for the current moment.
|
|
71
|
+
* @example getNow() // Date instance for right now
|
|
72
|
+
* @see https://dhoulb.github.io/shelving/util/date/getNow
|
|
73
|
+
*/
|
|
53
74
|
export function getNow() {
|
|
54
75
|
return new Date();
|
|
55
76
|
}
|
|
56
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Get a date representing midnight of the previous day.
|
|
79
|
+
*
|
|
80
|
+
* @returns A new `Date` instance at midnight yesterday.
|
|
81
|
+
* @example getYesterday() // Date instance for yesterday at 00:00
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/util/date/getYesterday
|
|
83
|
+
*/
|
|
57
84
|
export function getYesterday() {
|
|
58
85
|
const date = new Date();
|
|
59
86
|
date.setHours(0, 0, 0, 0);
|
|
60
87
|
date.setDate(date.getDate() - 1);
|
|
61
88
|
return date;
|
|
62
89
|
}
|
|
63
|
-
/**
|
|
90
|
+
/**
|
|
91
|
+
* Get a date representing midnight of the current day.
|
|
92
|
+
*
|
|
93
|
+
* @returns A new `Date` instance at midnight today.
|
|
94
|
+
* @example getToday() // Date instance for today at 00:00
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/util/date/getToday
|
|
96
|
+
*/
|
|
64
97
|
export function getToday() {
|
|
65
98
|
const date = new Date();
|
|
66
99
|
date.setHours(0, 0, 0, 0);
|
|
67
100
|
return date;
|
|
68
101
|
}
|
|
69
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* Get a date representing midnight of the next day.
|
|
104
|
+
*
|
|
105
|
+
* @returns A new `Date` instance at midnight tomorrow.
|
|
106
|
+
* @example getTomorrow() // Date instance for tomorrow at 00:00
|
|
107
|
+
* @see https://dhoulb.github.io/shelving/util/date/getTomorrow
|
|
108
|
+
*/
|
|
70
109
|
export function getTomorrow() {
|
|
71
110
|
const date = new Date();
|
|
72
111
|
date.setHours(0, 0, 0, 0);
|
|
73
112
|
date.setDate(date.getDate() + 1);
|
|
74
113
|
return date;
|
|
75
114
|
}
|
|
76
|
-
/**
|
|
115
|
+
/**
|
|
116
|
+
* Get a `Date` representing exactly midnight of the specified date.
|
|
117
|
+
*
|
|
118
|
+
* @param target The date to find midnight for (defaults to `"now"`).
|
|
119
|
+
* @param caller The function to attribute a thrown error to (defaults to `getMidnight`).
|
|
120
|
+
* @returns A new `Date` instance at midnight of the target date.
|
|
121
|
+
* @throws {RequiredError} If `target` couldn't be converted to a valid date.
|
|
122
|
+
* @example getMidnight("2003-09-12") // Date instance for 2003-09-12 at 00:00
|
|
123
|
+
* @see https://dhoulb.github.io/shelving/util/date/getMidnight
|
|
124
|
+
*/
|
|
77
125
|
export function getMidnight(target, caller = getMidnight) {
|
|
78
126
|
const date = new Date(requireDate(target, caller));
|
|
79
127
|
date.setHours(0, 0, 0, 0);
|
|
80
128
|
return date;
|
|
81
129
|
}
|
|
82
|
-
/**
|
|
130
|
+
/**
|
|
131
|
+
* Get a `Date` representing midnight on Monday of the specified week.
|
|
132
|
+
*
|
|
133
|
+
* @param target The date whose week to find Monday for (defaults to `"now"`).
|
|
134
|
+
* @param caller The function to attribute a thrown error to (defaults to `getMonday`).
|
|
135
|
+
* @returns A new `Date` instance at midnight on Monday of the target week.
|
|
136
|
+
* @throws {RequiredError} If `target` couldn't be converted to a valid date.
|
|
137
|
+
* @example getMonday("2003-09-12") // Date instance for the Monday of that week at 00:00
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/util/date/getMonday
|
|
139
|
+
*/
|
|
83
140
|
export function getMonday(target, caller = getMonday) {
|
|
84
141
|
const date = getMidnight(target, caller);
|
|
85
142
|
const day = date.getDay();
|
|
@@ -89,7 +146,16 @@ export function getMonday(target, caller = getMonday) {
|
|
|
89
146
|
date.setDate(date.getDate() - (day - 1));
|
|
90
147
|
return date;
|
|
91
148
|
}
|
|
92
|
-
/**
|
|
149
|
+
/**
|
|
150
|
+
* Get a `Date` representing midnight on the first day of the specified month.
|
|
151
|
+
*
|
|
152
|
+
* @param target The date whose month to find the start of (defaults to `"now"`).
|
|
153
|
+
* @param caller The function to attribute a thrown error to (defaults to `getMonthStart`).
|
|
154
|
+
* @returns A new `Date` instance at midnight on the 1st of the target month.
|
|
155
|
+
* @throws {RequiredError} If `target` couldn't be converted to a valid date.
|
|
156
|
+
* @example getMonthStart("2003-09-12") // Date instance for 2003-09-01 at 00:00
|
|
157
|
+
* @see https://dhoulb.github.io/shelving/util/date/getMonthStart
|
|
158
|
+
*/
|
|
93
159
|
export function getMonthStart(target, caller = getMonthStart) {
|
|
94
160
|
const date = getMidnight(target, caller);
|
|
95
161
|
date.setDate(1);
|
|
@@ -97,18 +163,39 @@ export function getMonthStart(target, caller = getMonthStart) {
|
|
|
97
163
|
}
|
|
98
164
|
/**
|
|
99
165
|
* Convert a possible date to a `Date` instance, or throw `RequiredError` if it couldn't be converted.
|
|
166
|
+
*
|
|
100
167
|
* @param value Any value that we want to parse as a valid date (defaults to `"now"`).
|
|
168
|
+
* @param caller The function to attribute a thrown error to (defaults to `requireDate`).
|
|
169
|
+
* @returns A valid `Date` instance.
|
|
170
|
+
* @throws {RequiredError} If `value` couldn't be converted to a valid date.
|
|
171
|
+
* @example requireDate("2003-09-12") // Date instance for 2003-09-12
|
|
172
|
+
* @see https://dhoulb.github.io/shelving/util/date/requireDate
|
|
101
173
|
*/
|
|
102
174
|
export function requireDate(value = "now", caller = requireDate) {
|
|
103
175
|
const date = getDate(value);
|
|
104
176
|
assertDate(date, caller);
|
|
105
177
|
return date;
|
|
106
178
|
}
|
|
107
|
-
/**
|
|
179
|
+
/**
|
|
180
|
+
* Convert an unknown value to a timestamp (milliseconds past Unix epoch), or `undefined` if it couldn't be converted.
|
|
181
|
+
*
|
|
182
|
+
* @param value Any value that we want to parse as a valid date.
|
|
183
|
+
* @returns The timestamp in milliseconds, or `undefined` if the value couldn't be converted.
|
|
184
|
+
* @example getTimestamp("1970-01-01T00:00:00Z") // 0
|
|
185
|
+
* @see https://dhoulb.github.io/shelving/util/date/getTimestamp
|
|
186
|
+
*/
|
|
108
187
|
export function getTimestamp(value) {
|
|
109
188
|
return getDate(value)?.getTime();
|
|
110
189
|
}
|
|
111
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* Convert a possible date to a timestamp (milliseconds past Unix epoch), or throw `RequiredError` if it couldn't be converted.
|
|
192
|
+
*
|
|
193
|
+
* @param value Any value that we want to parse as a valid date (defaults to `"now"`).
|
|
194
|
+
* @returns The timestamp in milliseconds.
|
|
195
|
+
* @throws {RequiredError} If `value` couldn't be converted to a valid date.
|
|
196
|
+
* @example requireTimestamp("1970-01-01T00:00:00Z") // 0
|
|
197
|
+
* @see https://dhoulb.github.io/shelving/util/date/requireTimestamp
|
|
198
|
+
*/
|
|
112
199
|
export function requireTimestamp(value) {
|
|
113
200
|
return requireDate(value, requireTimestamp).getTime();
|
|
114
201
|
}
|
|
@@ -125,17 +212,40 @@ function _time(date) {
|
|
|
125
212
|
function _datetime(date) {
|
|
126
213
|
return `${_date(date)}T${_time(date)}`;
|
|
127
214
|
}
|
|
128
|
-
/**
|
|
215
|
+
/**
|
|
216
|
+
* Convert an unknown value to a local date string like "2015-09-12T18:30:00", or `undefined` if it couldn't be converted.
|
|
217
|
+
*
|
|
218
|
+
* @param value Any value that we want to parse as a valid date.
|
|
219
|
+
* @returns The local datetime string, or `undefined` if `value` couldn't be converted.
|
|
220
|
+
* @example getDateTimeString("2015-09-12T18:30:00") // "2015-09-12T18:30:00"
|
|
221
|
+
* @see https://dhoulb.github.io/shelving/util/date/getDateTimeString
|
|
222
|
+
*/
|
|
129
223
|
export function getDateTimeString(value) {
|
|
130
224
|
const date = getDate(value);
|
|
131
225
|
if (date)
|
|
132
226
|
return _datetime(date);
|
|
133
227
|
}
|
|
134
|
-
/**
|
|
228
|
+
/**
|
|
229
|
+
* Convert a possible `Date` instance to a local YMD string like "2015-09-12T18:30:00", or throw `RequiredError` if it couldn't be converted.
|
|
230
|
+
*
|
|
231
|
+
* @param value Any value that we want to parse as a valid date (defaults to `"now"`).
|
|
232
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireDateTimeString` itself).
|
|
233
|
+
* @returns The local datetime string.
|
|
234
|
+
* @throws {RequiredError} If `value` couldn't be converted to a valid date.
|
|
235
|
+
* @example requireDateTimeString("2015-09-12T18:30:00") // "2015-09-12T18:30:00"
|
|
236
|
+
* @see https://dhoulb.github.io/shelving/util/date/requireDateTimeString
|
|
237
|
+
*/
|
|
135
238
|
export function requireDateTimeString(value, caller = requireDateTimeString) {
|
|
136
239
|
return _datetime(requireDate(value, caller));
|
|
137
240
|
}
|
|
138
|
-
/**
|
|
241
|
+
/**
|
|
242
|
+
* Convert an unknown value to a local date string like "2015-09-12", or `undefined` if it couldn't be converted.
|
|
243
|
+
*
|
|
244
|
+
* @param value Any value that we want to parse as a valid date.
|
|
245
|
+
* @returns The local date string, or `undefined` if `value` couldn't be converted.
|
|
246
|
+
* @example getDateString("2015-09-12T18:30:00") // "2015-09-12"
|
|
247
|
+
* @see https://dhoulb.github.io/shelving/util/date/getDateString
|
|
248
|
+
*/
|
|
139
249
|
export function getDateString(value) {
|
|
140
250
|
const date = getDate(value);
|
|
141
251
|
if (date)
|
|
@@ -210,13 +320,33 @@ export function addMinutes(change, target, caller = addMinutes) {
|
|
|
210
320
|
date.setMinutes(date.getMinutes() + change);
|
|
211
321
|
return date;
|
|
212
322
|
}
|
|
213
|
-
/**
|
|
323
|
+
/**
|
|
324
|
+
* Return a new date that increases or decreases the seconds based on an input date.
|
|
325
|
+
*
|
|
326
|
+
* @param change The number of seconds to add (negative numbers subtract).
|
|
327
|
+
* @param target Any value that can be converted to a date (defaults to `"now"`).
|
|
328
|
+
* @param caller Function to attribute a thrown error to (defaults to `addSeconds` itself).
|
|
329
|
+
* @returns A new `Date` instance offset by `change` seconds.
|
|
330
|
+
* @throws {RequiredError} If `target` couldn't be converted to a valid date.
|
|
331
|
+
* @example addSeconds(30, "2003-09-12T00:00:00") // Date instance for 2003-09-12T00:00:30
|
|
332
|
+
* @see https://dhoulb.github.io/shelving/util/date/addSeconds
|
|
333
|
+
*/
|
|
214
334
|
export function addSeconds(change, target, caller = addSeconds) {
|
|
215
335
|
const date = new Date(requireDate(target, caller));
|
|
216
336
|
date.setSeconds(date.getSeconds() + change);
|
|
217
337
|
return date;
|
|
218
338
|
}
|
|
219
|
-
/**
|
|
339
|
+
/**
|
|
340
|
+
* Return a new date that increases or decreases the milliseconds based on an input date.
|
|
341
|
+
*
|
|
342
|
+
* @param change The number of milliseconds to add (negative numbers subtract).
|
|
343
|
+
* @param target Any value that can be converted to a date (defaults to `"now"`).
|
|
344
|
+
* @param caller Function to attribute a thrown error to (defaults to `addMilliseconds` itself).
|
|
345
|
+
* @returns A new `Date` instance offset by `change` milliseconds.
|
|
346
|
+
* @throws {RequiredError} If `target` couldn't be converted to a valid date.
|
|
347
|
+
* @example addMilliseconds(500, "2003-09-12T00:00:00") // Date instance for 2003-09-12T00:00:00.500
|
|
348
|
+
* @see https://dhoulb.github.io/shelving/util/date/addMilliseconds
|
|
349
|
+
*/
|
|
220
350
|
export function addMilliseconds(change, target, caller = addMilliseconds) {
|
|
221
351
|
const date = new Date(requireDate(target, caller));
|
|
222
352
|
date.setMilliseconds(date.getMilliseconds() + change);
|
package/util/debug.d.ts
CHANGED
|
@@ -2,16 +2,47 @@
|
|
|
2
2
|
import type { ImmutableArray } from "./array.js";
|
|
3
3
|
import type { ImmutableMap } from "./map.js";
|
|
4
4
|
import type { ImmutableSet } from "./set.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Convert any unknown value into a readable debug string.
|
|
7
|
+
* - Dispatches on the value's type to a specialised debugger (string, array, map, set, object, `Request`, `Response`, `Headers`, `Date`, `Error`, etc.).
|
|
8
|
+
* - Nested values are expanded down to `depth` levels; deeper values collapse to their container shape.
|
|
9
|
+
*
|
|
10
|
+
* @param value The value to debug.
|
|
11
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
12
|
+
* @returns A human-readable string representation of `value`.
|
|
13
|
+
* @example debug({ a: 1, b: "two" }) // `{\n\t"a": 1,\n\t"b": "two"\n}`
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debug
|
|
15
|
+
*/
|
|
6
16
|
export declare function debug(value: unknown, depth?: number): string;
|
|
7
|
-
/**
|
|
8
|
-
|
|
9
|
-
|
|
17
|
+
/**
|
|
18
|
+
* Convert a string into a quoted, escaped debug string.
|
|
19
|
+
* - Wraps the value in double quotes and escapes control characters, quotes, and backslashes.
|
|
20
|
+
*
|
|
21
|
+
* @param value The string to debug.
|
|
22
|
+
* @returns The quoted and escaped string.
|
|
23
|
+
* @example debugString("a\tb") // `"a\\tb"`
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugString
|
|
25
|
+
*/
|
|
26
|
+
export declare function debugString(value: string): string;
|
|
27
|
+
/**
|
|
28
|
+
* Convert a set of `Headers` into a debug string.
|
|
29
|
+
* - One `key: value` pair per line.
|
|
30
|
+
*
|
|
31
|
+
* @param headers The `Headers` object to debug.
|
|
32
|
+
* @returns A newline-separated string of `key: value` pairs.
|
|
33
|
+
* @example debugHeaders(new Headers({ "Content-Type": "text/plain" })) // "content-type: text/plain"
|
|
34
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugHeaders
|
|
35
|
+
*/
|
|
10
36
|
export declare function debugHeaders(headers: Headers): string;
|
|
11
37
|
/**
|
|
12
38
|
* Debug a full `Request` as a string including its body.
|
|
13
39
|
* - Clones the request before reading the body so the original request can still be sent or parsed later.
|
|
14
40
|
* - Omits the body section when the request body is empty.
|
|
41
|
+
*
|
|
42
|
+
* @param request The `Request` to debug.
|
|
43
|
+
* @returns A promise resolving to the request line, headers, and body as a string.
|
|
44
|
+
* @example await debugFullRequest(new Request("https://x.com")) // "GET https://x.com/"
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugFullRequest
|
|
15
46
|
*/
|
|
16
47
|
export declare function debugFullRequest(request: Request): Promise<string>;
|
|
17
48
|
/**
|
|
@@ -19,19 +50,89 @@ export declare function debugFullRequest(request: Request): Promise<string>;
|
|
|
19
50
|
* - Clones the response before reading the body so the original response can still be parsed later.
|
|
20
51
|
* - Omits the headers section when there are no headers.
|
|
21
52
|
* - Omits the body section when the response body is empty.
|
|
53
|
+
*
|
|
54
|
+
* @param response The `Response` to debug.
|
|
55
|
+
* @returns A promise resolving to the status line, headers, and body as a string.
|
|
56
|
+
* @example await debugFullResponse(new Response("hi", { status: 200 })) // "200 \n\nhi"
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugFullResponse
|
|
22
58
|
*/
|
|
23
59
|
export declare function debugFullResponse(response: Response): Promise<string>;
|
|
24
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Convert a `Request` into a one-line debug string.
|
|
62
|
+
* - Shows the method and URL only (no headers or body).
|
|
63
|
+
*
|
|
64
|
+
* @param request The `Request` to debug.
|
|
65
|
+
* @returns A string in `METHOD url` format.
|
|
66
|
+
* @example debugRequest(new Request("https://x.com")) // "GET https://x.com/"
|
|
67
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugRequest
|
|
68
|
+
*/
|
|
25
69
|
export declare function debugRequest(request: Request): string;
|
|
26
|
-
/**
|
|
70
|
+
/**
|
|
71
|
+
* Convert a `Response` into a one-line debug string.
|
|
72
|
+
* - Shows the status code and status text only (no headers or body).
|
|
73
|
+
*
|
|
74
|
+
* @param response The `Response` to debug.
|
|
75
|
+
* @returns A string in `status statusText` format.
|
|
76
|
+
* @example debugResponse(new Response("hi", { status: 404 })) // "404 Not Found"
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugResponse
|
|
78
|
+
*/
|
|
27
79
|
export declare function debugResponse(response: Response): string;
|
|
28
|
-
/**
|
|
80
|
+
/**
|
|
81
|
+
* Convert an array into a readable debug string.
|
|
82
|
+
* - Prefixes the constructor name for non-plain arrays.
|
|
83
|
+
* - Expands items down to `depth` levels.
|
|
84
|
+
*
|
|
85
|
+
* @param value The array to debug.
|
|
86
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
87
|
+
* @returns A human-readable string representation of the array.
|
|
88
|
+
* @example debugArray([1, 2]) // `[\n\t1,\n\t2\n]`
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugArray
|
|
90
|
+
*/
|
|
29
91
|
export declare function debugArray(value: ImmutableArray, depth?: number): string;
|
|
30
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Convert a `Set` into a readable debug string.
|
|
94
|
+
* - Prefixes the constructor name and item count.
|
|
95
|
+
* - Expands items down to `depth` levels.
|
|
96
|
+
*
|
|
97
|
+
* @param value The set to debug.
|
|
98
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
99
|
+
* @returns A human-readable string representation of the set.
|
|
100
|
+
* @example debugSet(new Set([1, 2])) // `(value.size) {\n\t1,\n\t2\n}`
|
|
101
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugSet
|
|
102
|
+
*/
|
|
31
103
|
export declare function debugSet(value: ImmutableSet, depth?: number): string;
|
|
32
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Convert a `Map` into a readable debug string.
|
|
106
|
+
* - Prefixes the constructor name and entry count.
|
|
107
|
+
* - Expands keys and values down to `depth` levels.
|
|
108
|
+
*
|
|
109
|
+
* @param value The map to debug.
|
|
110
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
111
|
+
* @returns A human-readable string representation of the map.
|
|
112
|
+
* @example debugMap(new Map([["a", 1]])) // `(value.size) {\n\t"a": 1\n}`
|
|
113
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugMap
|
|
114
|
+
*/
|
|
33
115
|
export declare function debugMap(value: ImmutableMap, depth?: number): string;
|
|
34
|
-
/**
|
|
116
|
+
/**
|
|
117
|
+
* Convert an object into a readable debug string.
|
|
118
|
+
* - Prefixes the constructor name for non-plain objects.
|
|
119
|
+
* - Expands entries down to `depth` levels.
|
|
120
|
+
*
|
|
121
|
+
* @param value The object to debug.
|
|
122
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
123
|
+
* @returns A human-readable string representation of the object.
|
|
124
|
+
* @example debugObject({ a: 1 }) // `{\n\t"a": 1\n}`
|
|
125
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugObject
|
|
126
|
+
*/
|
|
35
127
|
export declare function debugObject(value: object, depth?: number): string;
|
|
36
|
-
/**
|
|
128
|
+
/**
|
|
129
|
+
* Indent a string for nested debug output.
|
|
130
|
+
* - Multiline strings are pushed onto a new line with a tab prepended to each line.
|
|
131
|
+
* - Single-line strings are simply prefixed with a space.
|
|
132
|
+
*
|
|
133
|
+
* @param str The string to indent.
|
|
134
|
+
* @returns The indented string.
|
|
135
|
+
* @example indent("a\nb") // `\na\n\tb`
|
|
136
|
+
* @see https://dhoulb.github.io/shelving/util/debug/indent
|
|
137
|
+
*/
|
|
37
138
|
export declare function indent(str: string): string;
|
package/util/debug.js
CHANGED
|
@@ -1,4 +1,14 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Convert any unknown value into a readable debug string.
|
|
3
|
+
* - Dispatches on the value's type to a specialised debugger (string, array, map, set, object, `Request`, `Response`, `Headers`, `Date`, `Error`, etc.).
|
|
4
|
+
* - Nested values are expanded down to `depth` levels; deeper values collapse to their container shape.
|
|
5
|
+
*
|
|
6
|
+
* @param value The value to debug.
|
|
7
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
8
|
+
* @returns A human-readable string representation of `value`.
|
|
9
|
+
* @example debug({ a: 1, b: "two" }) // `{\n\t"a": 1,\n\t"b": "two"\n}`
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debug
|
|
11
|
+
*/
|
|
2
12
|
export function debug(value, depth = 1) {
|
|
3
13
|
if (value === null)
|
|
4
14
|
return "null";
|
|
@@ -36,8 +46,18 @@ export function debug(value, depth = 1) {
|
|
|
36
46
|
}
|
|
37
47
|
return typeof value;
|
|
38
48
|
}
|
|
39
|
-
/**
|
|
40
|
-
|
|
49
|
+
/**
|
|
50
|
+
* Convert a string into a quoted, escaped debug string.
|
|
51
|
+
* - Wraps the value in double quotes and escapes control characters, quotes, and backslashes.
|
|
52
|
+
*
|
|
53
|
+
* @param value The string to debug.
|
|
54
|
+
* @returns The quoted and escaped string.
|
|
55
|
+
* @example debugString("a\tb") // `"a\\tb"`
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugString
|
|
57
|
+
*/
|
|
58
|
+
export function debugString(value) {
|
|
59
|
+
return `"${value.replace(ESCAPE_REGEXP, _escapeChar)}"`;
|
|
60
|
+
}
|
|
41
61
|
// biome-ignore lint/suspicious/noControlCharactersInRegex: Intentional.
|
|
42
62
|
const ESCAPE_REGEXP = /[\x00-\x08\x0B-\x1F\x7F-\x9F"\\]/g; // Match control characters, `"` double quote, `\` backslash.
|
|
43
63
|
const ESCAPE_LIST = {
|
|
@@ -51,7 +71,15 @@ const ESCAPE_LIST = {
|
|
|
51
71
|
"\v": "\\v",
|
|
52
72
|
};
|
|
53
73
|
const _escapeChar = (char) => ESCAPE_LIST[char] || `\\x${char.charCodeAt(0).toString(16).padStart(2, "00")}`;
|
|
54
|
-
/**
|
|
74
|
+
/**
|
|
75
|
+
* Convert a set of `Headers` into a debug string.
|
|
76
|
+
* - One `key: value` pair per line.
|
|
77
|
+
*
|
|
78
|
+
* @param headers The `Headers` object to debug.
|
|
79
|
+
* @returns A newline-separated string of `key: value` pairs.
|
|
80
|
+
* @example debugHeaders(new Headers({ "Content-Type": "text/plain" })) // "content-type: text/plain"
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugHeaders
|
|
82
|
+
*/
|
|
55
83
|
export function debugHeaders(headers) {
|
|
56
84
|
return Array.from(headers, ([key, value]) => `${key}: ${value}`).join("\n");
|
|
57
85
|
}
|
|
@@ -59,6 +87,11 @@ export function debugHeaders(headers) {
|
|
|
59
87
|
* Debug a full `Request` as a string including its body.
|
|
60
88
|
* - Clones the request before reading the body so the original request can still be sent or parsed later.
|
|
61
89
|
* - Omits the body section when the request body is empty.
|
|
90
|
+
*
|
|
91
|
+
* @param request The `Request` to debug.
|
|
92
|
+
* @returns A promise resolving to the request line, headers, and body as a string.
|
|
93
|
+
* @example await debugFullRequest(new Request("https://x.com")) // "GET https://x.com/"
|
|
94
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugFullRequest
|
|
62
95
|
*/
|
|
63
96
|
export async function debugFullRequest(request) {
|
|
64
97
|
return _debugFullMessage(debugRequest(request), request);
|
|
@@ -68,6 +101,11 @@ export async function debugFullRequest(request) {
|
|
|
68
101
|
* - Clones the response before reading the body so the original response can still be parsed later.
|
|
69
102
|
* - Omits the headers section when there are no headers.
|
|
70
103
|
* - Omits the body section when the response body is empty.
|
|
104
|
+
*
|
|
105
|
+
* @param response The `Response` to debug.
|
|
106
|
+
* @returns A promise resolving to the status line, headers, and body as a string.
|
|
107
|
+
* @example await debugFullResponse(new Response("hi", { status: 200 })) // "200 \n\nhi"
|
|
108
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugFullResponse
|
|
71
109
|
*/
|
|
72
110
|
export async function debugFullResponse(response) {
|
|
73
111
|
return _debugFullMessage(debugResponse(response), response);
|
|
@@ -108,22 +146,58 @@ async function _debugMessageBody(message) {
|
|
|
108
146
|
return `${text}\n[read failed: ${reason?.message ?? reason}]`;
|
|
109
147
|
}
|
|
110
148
|
}
|
|
111
|
-
/**
|
|
149
|
+
/**
|
|
150
|
+
* Convert a `Request` into a one-line debug string.
|
|
151
|
+
* - Shows the method and URL only (no headers or body).
|
|
152
|
+
*
|
|
153
|
+
* @param request The `Request` to debug.
|
|
154
|
+
* @returns A string in `METHOD url` format.
|
|
155
|
+
* @example debugRequest(new Request("https://x.com")) // "GET https://x.com/"
|
|
156
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugRequest
|
|
157
|
+
*/
|
|
112
158
|
export function debugRequest(request) {
|
|
113
159
|
return `${request.method} ${request.url}`;
|
|
114
160
|
}
|
|
115
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
* Convert a `Response` into a one-line debug string.
|
|
163
|
+
* - Shows the status code and status text only (no headers or body).
|
|
164
|
+
*
|
|
165
|
+
* @param response The `Response` to debug.
|
|
166
|
+
* @returns A string in `status statusText` format.
|
|
167
|
+
* @example debugResponse(new Response("hi", { status: 404 })) // "404 Not Found"
|
|
168
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugResponse
|
|
169
|
+
*/
|
|
116
170
|
export function debugResponse(response) {
|
|
117
171
|
return `${response.status} ${response.statusText}`;
|
|
118
172
|
}
|
|
119
|
-
/**
|
|
173
|
+
/**
|
|
174
|
+
* Convert an array into a readable debug string.
|
|
175
|
+
* - Prefixes the constructor name for non-plain arrays.
|
|
176
|
+
* - Expands items down to `depth` levels.
|
|
177
|
+
*
|
|
178
|
+
* @param value The array to debug.
|
|
179
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
180
|
+
* @returns A human-readable string representation of the array.
|
|
181
|
+
* @example debugArray([1, 2]) // `[\n\t1,\n\t2\n]`
|
|
182
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugArray
|
|
183
|
+
*/
|
|
120
184
|
export function debugArray(value, depth = 1) {
|
|
121
185
|
const prototype = Object.getPrototypeOf(value);
|
|
122
186
|
const name = prototype === Array.prototype ? "" : prototype.constructor.name || "";
|
|
123
187
|
const items = depth > 0 && value.length ? value.map(v => debug(v, depth - 1)).join(",\n\t") : "";
|
|
124
188
|
return `${name ? `${name} ` : ""}${value.length ? `[\n\t${items}\n]` : "[]"}`;
|
|
125
189
|
}
|
|
126
|
-
/**
|
|
190
|
+
/**
|
|
191
|
+
* Convert a `Set` into a readable debug string.
|
|
192
|
+
* - Prefixes the constructor name and item count.
|
|
193
|
+
* - Expands items down to `depth` levels.
|
|
194
|
+
*
|
|
195
|
+
* @param value The set to debug.
|
|
196
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
197
|
+
* @returns A human-readable string representation of the set.
|
|
198
|
+
* @example debugSet(new Set([1, 2])) // `(value.size) {\n\t1,\n\t2\n}`
|
|
199
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugSet
|
|
200
|
+
*/
|
|
127
201
|
export function debugSet(value, depth = 1) {
|
|
128
202
|
const prototype = Object.getPrototypeOf(value);
|
|
129
203
|
const name = prototype === Set.prototype ? "" : prototype.constructor.name || "Set";
|
|
@@ -134,7 +208,17 @@ export function debugSet(value, depth = 1) {
|
|
|
134
208
|
: "";
|
|
135
209
|
return `${name}(value.size) ${items ? `{\n\t${items}\n}` : "{}"}`;
|
|
136
210
|
}
|
|
137
|
-
/**
|
|
211
|
+
/**
|
|
212
|
+
* Convert a `Map` into a readable debug string.
|
|
213
|
+
* - Prefixes the constructor name and entry count.
|
|
214
|
+
* - Expands keys and values down to `depth` levels.
|
|
215
|
+
*
|
|
216
|
+
* @param value The map to debug.
|
|
217
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
218
|
+
* @returns A human-readable string representation of the map.
|
|
219
|
+
* @example debugMap(new Map([["a", 1]])) // `(value.size) {\n\t"a": 1\n}`
|
|
220
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugMap
|
|
221
|
+
*/
|
|
138
222
|
export function debugMap(value, depth = 1) {
|
|
139
223
|
const prototype = Object.getPrototypeOf(value);
|
|
140
224
|
const name = prototype === Map.prototype ? "" : prototype.constructor.name || "Map";
|
|
@@ -145,7 +229,17 @@ export function debugMap(value, depth = 1) {
|
|
|
145
229
|
: "";
|
|
146
230
|
return `${name}(value.size) ${entries ? `{\n\t${entries}\n}` : "{}"}`;
|
|
147
231
|
}
|
|
148
|
-
/**
|
|
232
|
+
/**
|
|
233
|
+
* Convert an object into a readable debug string.
|
|
234
|
+
* - Prefixes the constructor name for non-plain objects.
|
|
235
|
+
* - Expands entries down to `depth` levels.
|
|
236
|
+
*
|
|
237
|
+
* @param value The object to debug.
|
|
238
|
+
* @param depth How many levels of nested containers to expand (defaults to `1`).
|
|
239
|
+
* @returns A human-readable string representation of the object.
|
|
240
|
+
* @example debugObject({ a: 1 }) // `{\n\t"a": 1\n}`
|
|
241
|
+
* @see https://dhoulb.github.io/shelving/util/debug/debugObject
|
|
242
|
+
*/
|
|
149
243
|
export function debugObject(value, depth = 1) {
|
|
150
244
|
const prototype = Object.getPrototypeOf(value);
|
|
151
245
|
const name = prototype === Object.prototype ? "" : prototype.constructor.name || "";
|
|
@@ -156,7 +250,16 @@ export function debugObject(value, depth = 1) {
|
|
|
156
250
|
: "";
|
|
157
251
|
return `${name ? `${name} ` : ""}${entries ? `{\n\t${entries}\n}` : "{}"}`;
|
|
158
252
|
}
|
|
159
|
-
/**
|
|
253
|
+
/**
|
|
254
|
+
* Indent a string for nested debug output.
|
|
255
|
+
* - Multiline strings are pushed onto a new line with a tab prepended to each line.
|
|
256
|
+
* - Single-line strings are simply prefixed with a space.
|
|
257
|
+
*
|
|
258
|
+
* @param str The string to indent.
|
|
259
|
+
* @returns The indented string.
|
|
260
|
+
* @example indent("a\nb") // `\na\n\tb`
|
|
261
|
+
* @see https://dhoulb.github.io/shelving/util/debug/indent
|
|
262
|
+
*/
|
|
160
263
|
export function indent(str) {
|
|
161
264
|
const lines = str.split("\n");
|
|
162
265
|
return lines.length > 1 ? `\n${lines.join("\n\t")}` : ` ${str}`;
|