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/object.d.ts
CHANGED
|
@@ -1,38 +1,113 @@
|
|
|
1
1
|
import type { ImmutableArray } from "./array.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Any readonly object.
|
|
4
|
+
*
|
|
5
|
+
* @see https://dhoulb.github.io/shelving/util/object/ImmutableObject
|
|
6
|
+
*/
|
|
3
7
|
export type ImmutableObject<K extends PropertyKey = PropertyKey, T = unknown> = {
|
|
4
8
|
readonly [KK in K]: T;
|
|
5
9
|
};
|
|
6
|
-
/**
|
|
10
|
+
/**
|
|
11
|
+
* Any writable object.
|
|
12
|
+
*
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/util/object/MutableObject
|
|
14
|
+
*/
|
|
7
15
|
export type MutableObject<K extends PropertyKey = PropertyKey, T = unknown> = {
|
|
8
16
|
[KK in K]: T;
|
|
9
17
|
};
|
|
10
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Prop for an object, as a readonly key/value entry tuple.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/util/object/Prop
|
|
22
|
+
*/
|
|
11
23
|
export type Prop<T> = readonly [keyof T, T[keyof T]];
|
|
12
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Key for an object prop.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/util/object/Key
|
|
28
|
+
*/
|
|
13
29
|
export type Key<T> = keyof T;
|
|
14
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Value for an object prop.
|
|
32
|
+
*
|
|
33
|
+
* @see https://dhoulb.github.io/shelving/util/object/Value
|
|
34
|
+
*/
|
|
15
35
|
export type Value<T> = T[keyof T];
|
|
16
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Something that can be converted to an object.
|
|
38
|
+
* - Either the object itself, or an iterable set of key/value entry tuples.
|
|
39
|
+
*
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/util/object/PossibleObject
|
|
41
|
+
*/
|
|
17
42
|
export type PossibleObject<T> = T | Iterable<Prop<T>>;
|
|
18
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Is an unknown value an unknown object?
|
|
45
|
+
*
|
|
46
|
+
* @param value The value to test.
|
|
47
|
+
* @returns `true` if `value` is a non-null `object`, narrowing its type.
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/util/object/isObject
|
|
49
|
+
*/
|
|
19
50
|
export declare function isObject(value: unknown): value is ImmutableObject;
|
|
20
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Assert that a value is an object.
|
|
53
|
+
*
|
|
54
|
+
* @param value The value to assert.
|
|
55
|
+
* @throws {RequiredError} If `value` is not an `object`.
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/util/object/assertObject
|
|
57
|
+
*/
|
|
21
58
|
export declare function assertObject(value: unknown): asserts value is ImmutableObject;
|
|
22
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Is an unknown value a plain object?
|
|
61
|
+
* - A plain object is one whose prototype is `Object.prototype` or `null` (i.e. not a class instance).
|
|
62
|
+
*
|
|
63
|
+
* @param value The value to test.
|
|
64
|
+
* @returns `true` if `value` is a plain object, narrowing its type.
|
|
65
|
+
* @see https://dhoulb.github.io/shelving/util/object/isPlainObject
|
|
66
|
+
*/
|
|
23
67
|
export declare function isPlainObject(value: unknown): value is ImmutableObject;
|
|
24
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Assert that an unknown value is a plain object.
|
|
70
|
+
*
|
|
71
|
+
* @param value The value to assert.
|
|
72
|
+
* @throws {RequiredError} If `value` is not a plain object.
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/util/object/assertPlainObject
|
|
74
|
+
*/
|
|
25
75
|
export declare function assertPlainObject(value: unknown): asserts value is ImmutableObject;
|
|
26
|
-
/**
|
|
27
|
-
|
|
28
|
-
|
|
76
|
+
/**
|
|
77
|
+
* Is an unknown value the key for an own prop of an object.
|
|
78
|
+
*
|
|
79
|
+
* @param obj The object to test against.
|
|
80
|
+
* @param key The key to test for.
|
|
81
|
+
* @returns `true` if `key` is an own prop of `obj`, narrowing its type.
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/util/object/isProp
|
|
83
|
+
*/
|
|
84
|
+
export declare function isProp<T extends ImmutableObject>(obj: T, key: PropertyKey): key is keyof T;
|
|
85
|
+
/**
|
|
86
|
+
* Assert that an unknown value is the key for an own prop of an object.
|
|
87
|
+
*
|
|
88
|
+
* @param obj The object to assert against.
|
|
89
|
+
* @param key The key to assert is an own prop.
|
|
90
|
+
* @throws {RequiredError} If `key` is not an own prop of `obj`.
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/util/object/assertProp
|
|
92
|
+
*/
|
|
29
93
|
export declare function assertProp<T extends ImmutableObject>(obj: T, key: PropertyKey): asserts key is keyof T;
|
|
30
|
-
/**
|
|
94
|
+
/**
|
|
95
|
+
* Turn a possible object into an object.
|
|
96
|
+
* - If the value is iterable it is converted to an object using `Object.fromEntries()`, otherwise it is returned as-is.
|
|
97
|
+
*
|
|
98
|
+
* @param obj The object or iterable set of key/value entry tuples to convert.
|
|
99
|
+
* @returns The corresponding object.
|
|
100
|
+
* @example
|
|
101
|
+
* getObject([["a", 1], ["b", 2]]); // { a: 1, b: 2 }
|
|
102
|
+
* @see https://dhoulb.github.io/shelving/util/object/getObject
|
|
103
|
+
*/
|
|
31
104
|
export declare function getObject<T extends ImmutableObject>(obj: PossibleObject<T>): T;
|
|
32
105
|
/**
|
|
33
106
|
* Mutable type is the opposite of `Readonly<T>` helper type.
|
|
34
107
|
* - See https://github.com/microsoft/TypeScript/issues/24509
|
|
35
108
|
* - Consistency with `Readonly<T>`
|
|
109
|
+
*
|
|
110
|
+
* @see https://dhoulb.github.io/shelving/util/object/Mutable
|
|
36
111
|
*/
|
|
37
112
|
export type Mutable<T> = {
|
|
38
113
|
-readonly [K in keyof T]: T[K];
|
|
@@ -41,6 +116,8 @@ export type Mutable<T> = {
|
|
|
41
116
|
* Deep partial object: deeply convert an object to its partial version.
|
|
42
117
|
* - Any value that extends `UnknownObject` has its props made partial.
|
|
43
118
|
* - Works deeply on nested objects too.
|
|
119
|
+
*
|
|
120
|
+
* @see https://dhoulb.github.io/shelving/util/object/DeepPartial
|
|
44
121
|
*/
|
|
45
122
|
export type DeepPartial<T> = {
|
|
46
123
|
[K in keyof T]?: DeepPartial<T[K]>;
|
|
@@ -49,6 +126,8 @@ export type DeepPartial<T> = {
|
|
|
49
126
|
* Deep mutable object: deeply convert an object to its mutable version.
|
|
50
127
|
* - Any value that extends `UnknownObject` has its props made mutable.
|
|
51
128
|
* - Works deeply on nested objects too.
|
|
129
|
+
*
|
|
130
|
+
* @see https://dhoulb.github.io/shelving/util/object/DeepMutable
|
|
52
131
|
*/
|
|
53
132
|
export type DeepMutable<T> = {
|
|
54
133
|
-readonly [K in keyof T]: DeepMutable<T[K]>;
|
|
@@ -57,59 +136,212 @@ export type DeepMutable<T> = {
|
|
|
57
136
|
* Deep readonly object: deeply convert an object to its readonly version.
|
|
58
137
|
* - Any value that extends `UnknownObject` has its props made readonly.
|
|
59
138
|
* - Works deeply on nested objects too.
|
|
139
|
+
*
|
|
140
|
+
* @see https://dhoulb.github.io/shelving/util/object/DeepReadonly
|
|
60
141
|
*/
|
|
61
142
|
export type DeepReadonly<T> = {
|
|
62
143
|
+readonly [K in keyof T]: DeepReadonly<T[K]>;
|
|
63
144
|
};
|
|
64
|
-
/**
|
|
145
|
+
/**
|
|
146
|
+
* Pick only the properties of an object that match a type.
|
|
147
|
+
*
|
|
148
|
+
* @see https://dhoulb.github.io/shelving/util/object/PickProps
|
|
149
|
+
*/
|
|
65
150
|
export type PickProps<T, TT> = Pick<T, {
|
|
66
151
|
[K in keyof T]: T[K] extends TT ? K : never;
|
|
67
152
|
}[keyof T]>;
|
|
68
|
-
/**
|
|
153
|
+
/**
|
|
154
|
+
* Omit the properties of an object that match a type.
|
|
155
|
+
*
|
|
156
|
+
* @see https://dhoulb.github.io/shelving/util/object/OmitProps
|
|
157
|
+
*/
|
|
69
158
|
export type OmitProps<T, TT> = Omit<T, {
|
|
70
159
|
[K in keyof T]: T[K] extends TT ? K : never;
|
|
71
160
|
}[keyof T]>;
|
|
72
|
-
/**
|
|
161
|
+
/**
|
|
162
|
+
* Get the props of an object as a set of entries.
|
|
163
|
+
*
|
|
164
|
+
* @param obj The object to read the props from.
|
|
165
|
+
* @returns Iterable set of key/value entry tuples for the object.
|
|
166
|
+
* @example
|
|
167
|
+
* getProps({ a: 1, b: 2 }); // [["a", 1], ["b", 2]]
|
|
168
|
+
* @see https://dhoulb.github.io/shelving/util/object/getProps
|
|
169
|
+
*/
|
|
73
170
|
export declare function getProps<T>(obj: T): ImmutableArray<Prop<T>>;
|
|
74
171
|
export declare function getProps<T>(obj: T | Partial<T>): ImmutableArray<Prop<T>>;
|
|
75
172
|
export declare function getProps<T>(obj: T | Partial<T> | Iterable<Prop<T>>): Iterable<Prop<T>>;
|
|
76
|
-
/**
|
|
173
|
+
/**
|
|
174
|
+
* Get the keys of an object as an array.
|
|
175
|
+
*
|
|
176
|
+
* @param obj The object to read the keys from.
|
|
177
|
+
* @returns Iterable set of keys for the object.
|
|
178
|
+
* @example
|
|
179
|
+
* getKeys({ a: 1, b: 2 }); // ["a", "b"]
|
|
180
|
+
* @see https://dhoulb.github.io/shelving/util/object/getKeys
|
|
181
|
+
*/
|
|
77
182
|
export declare function getKeys<T>(obj: T): ImmutableArray<Key<T>>;
|
|
78
183
|
export declare function getKeys<T>(obj: T | Partial<T>): ImmutableArray<Key<T>>;
|
|
79
184
|
export declare function getKeys<T>(obj: T | Partial<T> | Iterable<Key<T>>): Iterable<Key<T>>;
|
|
80
|
-
/**
|
|
185
|
+
/**
|
|
186
|
+
* Extract the value of a named prop from an object.
|
|
187
|
+
*
|
|
188
|
+
* @param obj The object to read the prop from.
|
|
189
|
+
* @param key The key of the prop to read.
|
|
190
|
+
* @returns The value of the named prop.
|
|
191
|
+
* @example
|
|
192
|
+
* getProp({ a: 1, b: 2 }, "a"); // 1
|
|
193
|
+
* @see https://dhoulb.github.io/shelving/util/object/getProp
|
|
194
|
+
*/
|
|
81
195
|
export declare function getProp<T, K extends Key<T>>(obj: T, key: K): T[K];
|
|
82
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* Create an object from a single prop.
|
|
198
|
+
*
|
|
199
|
+
* @param key The key of the prop to set.
|
|
200
|
+
* @param value The value of the prop to set.
|
|
201
|
+
* @returns A new object containing only the single prop.
|
|
202
|
+
* @example
|
|
203
|
+
* fromProp("a", 1); // { a: 1 }
|
|
204
|
+
* @see https://dhoulb.github.io/shelving/util/object/fromProp
|
|
205
|
+
*/
|
|
83
206
|
export declare function fromProp<K extends PropertyKey, V>(key: K, value: V): {
|
|
84
207
|
readonly [KK in K]: V;
|
|
85
208
|
};
|
|
86
|
-
/**
|
|
209
|
+
/**
|
|
210
|
+
* Set a prop on an object (immutably) and return a new object including that prop.
|
|
211
|
+
* - If the value is unchanged the original object is returned unchanged.
|
|
212
|
+
*
|
|
213
|
+
* @param input The object to set the prop on.
|
|
214
|
+
* @param key The key of the prop to set.
|
|
215
|
+
* @param value The value of the prop to set.
|
|
216
|
+
* @returns A new object including the set prop, or the original object if the value was unchanged.
|
|
217
|
+
* @example
|
|
218
|
+
* withProp({ a: 1 }, "b", 2); // { a: 1, b: 2 }
|
|
219
|
+
* @see https://dhoulb.github.io/shelving/util/object/withProp
|
|
220
|
+
*/
|
|
87
221
|
export declare function withProp<T extends ImmutableObject, K extends Key<T>>(input: T, key: K, value: T[K]): T;
|
|
88
|
-
/**
|
|
222
|
+
/**
|
|
223
|
+
* Set several props on an object (immutably) and return a new object including those props.
|
|
224
|
+
* - If all values are unchanged the original object is returned unchanged.
|
|
225
|
+
*
|
|
226
|
+
* @param input The object to set the props on.
|
|
227
|
+
* @param props The props to set, as an object or iterable set of key/value entry tuples.
|
|
228
|
+
* @returns A new object including the set props, or the original object if all values were unchanged.
|
|
229
|
+
* @example
|
|
230
|
+
* withProps({ a: 1 }, { b: 2, c: 3 }); // { a: 1, b: 2, c: 3 }
|
|
231
|
+
* @see https://dhoulb.github.io/shelving/util/object/withProps
|
|
232
|
+
*/
|
|
89
233
|
export declare function withProps<T>(input: T, props: Partial<T>): T;
|
|
90
234
|
export declare function withProps<T>(input: T, props: T | Partial<T> | Iterable<Prop<T>>): T;
|
|
91
|
-
/**
|
|
235
|
+
/**
|
|
236
|
+
* Remove several props from an object (immutably) and return a new object without those props.
|
|
237
|
+
* - If none of the keys exist the original object is returned unchanged.
|
|
238
|
+
*
|
|
239
|
+
* @param input The object to remove the props from.
|
|
240
|
+
* @param keys The keys of the props to remove.
|
|
241
|
+
* @returns A new object without the removed props, or the original object if no keys were present.
|
|
242
|
+
* @example
|
|
243
|
+
* omitProps({ a: 1, b: 2, c: 3 }, "b", "c"); // { a: 1 }
|
|
244
|
+
* @see https://dhoulb.github.io/shelving/util/object/omitProps
|
|
245
|
+
*/
|
|
92
246
|
export declare function omitProps<T, K extends Key<T>>(input: T, ...keys: K[]): Omit<T, K>;
|
|
93
|
-
/**
|
|
247
|
+
/**
|
|
248
|
+
* Remove a prop from an object (immutably) and return a new object without that prop.
|
|
249
|
+
* - If the key doesn't exist the original object is returned unchanged.
|
|
250
|
+
*
|
|
251
|
+
* @param input The object to remove the prop from.
|
|
252
|
+
* @param key The key of the prop to remove.
|
|
253
|
+
* @returns A new object without the removed prop, or the original object if the key was not present.
|
|
254
|
+
* @example
|
|
255
|
+
* omitProp({ a: 1, b: 2 }, "b"); // { a: 1 }
|
|
256
|
+
* @see https://dhoulb.github.io/shelving/util/object/omitProp
|
|
257
|
+
*/
|
|
94
258
|
export declare const omitProp: <T, K extends Key<T>>(input: T, key: K) => Omit<T, K>;
|
|
95
|
-
/**
|
|
259
|
+
/**
|
|
260
|
+
* Pick several props from an object and return a new object with only those props.
|
|
261
|
+
*
|
|
262
|
+
* @param obj The object to pick the props from.
|
|
263
|
+
* @param keys The keys of the props to pick.
|
|
264
|
+
* @returns A new object containing only the picked props.
|
|
265
|
+
* @example
|
|
266
|
+
* pickProps({ a: 1, b: 2, c: 3 }, "a", "b"); // { a: 1, b: 2 }
|
|
267
|
+
* @see https://dhoulb.github.io/shelving/util/object/pickProps
|
|
268
|
+
*/
|
|
96
269
|
export declare function pickProps<T, K extends Key<T>>(obj: T, ...keys: K[]): Pick<T, K>;
|
|
97
|
-
/**
|
|
270
|
+
/**
|
|
271
|
+
* Set a single named prop on an object (by reference) and return its value.
|
|
272
|
+
*
|
|
273
|
+
* @param obj The object to set the prop on (modified by reference).
|
|
274
|
+
* @param key The key of the prop to set.
|
|
275
|
+
* @param value The value of the prop to set.
|
|
276
|
+
* @returns The value that was set.
|
|
277
|
+
* @example
|
|
278
|
+
* setProp(obj, "a", 1); // 1
|
|
279
|
+
* @see https://dhoulb.github.io/shelving/util/object/setProp
|
|
280
|
+
*/
|
|
98
281
|
export declare function setProp<T extends MutableObject, K extends Key<T>>(obj: T, key: K, value: T[K]): T[K];
|
|
99
|
-
/**
|
|
282
|
+
/**
|
|
283
|
+
* Set several named props on an object (by reference).
|
|
284
|
+
*
|
|
285
|
+
* @param obj The object to set the props on (modified by reference).
|
|
286
|
+
* @param entries The props to set, as an object or iterable set of key/value entry tuples.
|
|
287
|
+
* @example
|
|
288
|
+
* setProps(obj, { a: 1, b: 2 });
|
|
289
|
+
* @see https://dhoulb.github.io/shelving/util/object/setProps
|
|
290
|
+
*/
|
|
100
291
|
export declare function setProps<T extends MutableObject>(obj: T, entries: T | Partial<T> | Iterable<Prop<T>>): void;
|
|
101
|
-
/**
|
|
292
|
+
/**
|
|
293
|
+
* Remove several key/value entries from an object (by reference).
|
|
294
|
+
*
|
|
295
|
+
* @param obj The object to remove the props from (modified by reference).
|
|
296
|
+
* @param keys The keys of the props to remove.
|
|
297
|
+
* @example
|
|
298
|
+
* deleteProps(obj, "a", "b");
|
|
299
|
+
* @see https://dhoulb.github.io/shelving/util/object/deleteProps
|
|
300
|
+
*/
|
|
102
301
|
export declare function deleteProps<T extends MutableObject>(obj: T, ...keys: Key<T>[]): void;
|
|
103
|
-
/**
|
|
302
|
+
/**
|
|
303
|
+
* Remove a key/value entry from an object (by reference).
|
|
304
|
+
*
|
|
305
|
+
* @param input The object to remove the prop from (modified by reference).
|
|
306
|
+
* @param key The key of the prop to remove.
|
|
307
|
+
* @example
|
|
308
|
+
* deleteProp(obj, "a");
|
|
309
|
+
* @see https://dhoulb.github.io/shelving/util/object/deleteProp
|
|
310
|
+
*/
|
|
104
311
|
export declare const deleteProp: <T extends MutableObject>(input: T, key: Key<T>) => void;
|
|
105
312
|
/**
|
|
106
313
|
* Get the prototype of an object instance.
|
|
107
314
|
* - Recommend to use this because Typescript's default lib specifies `Object.getPrototypeOf()` returning `any`.
|
|
315
|
+
*
|
|
316
|
+
* @param obj The object to read the prototype from.
|
|
317
|
+
* @returns The prototype of the object, or `null` if it has none.
|
|
318
|
+
* @example
|
|
319
|
+
* getPrototype({ a: 1 }); // Object.prototype
|
|
320
|
+
* @see https://dhoulb.github.io/shelving/util/object/getPrototype
|
|
108
321
|
*/
|
|
109
322
|
export declare function getPrototype<T>(obj: T): Partial<T> | null;
|
|
110
|
-
/**
|
|
323
|
+
/**
|
|
324
|
+
* Shallow clone an object with the same prototype.
|
|
325
|
+
*
|
|
326
|
+
* @param input The object to clone.
|
|
327
|
+
* @returns A new object with the same prototype and props as `input`.
|
|
328
|
+
* @example
|
|
329
|
+
* cloneObject({ a: 1 }); // { a: 1 }
|
|
330
|
+
* @see https://dhoulb.github.io/shelving/util/object/cloneObject
|
|
331
|
+
*/
|
|
111
332
|
export declare function cloneObject<T>(input: T): T;
|
|
112
|
-
/**
|
|
333
|
+
/**
|
|
334
|
+
* Shallow clone an object with a single changed value.
|
|
335
|
+
* - If the value is unchanged the original object is returned unchanged.
|
|
336
|
+
*
|
|
337
|
+
* @param input The object to clone.
|
|
338
|
+
* @param key The key of the prop to change.
|
|
339
|
+
* @param value The value of the prop to change.
|
|
340
|
+
* @returns A new object with the changed prop, or the original object if the value was unchanged.
|
|
341
|
+
* @example
|
|
342
|
+
* cloneObjectWith({ a: 1 }, "a", 2); // { a: 2 }
|
|
343
|
+
* @see https://dhoulb.github.io/shelving/util/object/cloneObjectWith
|
|
344
|
+
*/
|
|
113
345
|
export declare function cloneObjectWith<T, K extends Key<T>>(input: T, key: K, value: T[K]): T;
|
|
114
346
|
export declare function cloneObjectWith<T, K extends string, V>(input: T, key: K, value: V): T & {
|
|
115
347
|
[KK in K]: V;
|
package/util/object.js
CHANGED
|
@@ -1,15 +1,34 @@
|
|
|
1
1
|
import { RequiredError } from "../error/RequiredError.js";
|
|
2
2
|
import { isIterable } from "./iterate.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Is an unknown value an unknown object?
|
|
5
|
+
*
|
|
6
|
+
* @param value The value to test.
|
|
7
|
+
* @returns `true` if `value` is a non-null `object`, narrowing its type.
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/object/isObject
|
|
9
|
+
*/
|
|
4
10
|
export function isObject(value) {
|
|
5
11
|
return typeof value === "object" && value !== null;
|
|
6
12
|
}
|
|
7
|
-
/**
|
|
13
|
+
/**
|
|
14
|
+
* Assert that a value is an object.
|
|
15
|
+
*
|
|
16
|
+
* @param value The value to assert.
|
|
17
|
+
* @throws {RequiredError} If `value` is not an `object`.
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/util/object/assertObject
|
|
19
|
+
*/
|
|
8
20
|
export function assertObject(value) {
|
|
9
21
|
if (!isObject(value))
|
|
10
22
|
throw new RequiredError("Must be object", { received: value, caller: assertObject });
|
|
11
23
|
}
|
|
12
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Is an unknown value a plain object?
|
|
26
|
+
* - A plain object is one whose prototype is `Object.prototype` or `null` (i.e. not a class instance).
|
|
27
|
+
*
|
|
28
|
+
* @param value The value to test.
|
|
29
|
+
* @returns `true` if `value` is a plain object, narrowing its type.
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/util/object/isPlainObject
|
|
31
|
+
*/
|
|
13
32
|
export function isPlainObject(value) {
|
|
14
33
|
if (isObject(value)) {
|
|
15
34
|
const proto = getPrototype(value);
|
|
@@ -17,19 +36,50 @@ export function isPlainObject(value) {
|
|
|
17
36
|
}
|
|
18
37
|
return false;
|
|
19
38
|
}
|
|
20
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Assert that an unknown value is a plain object.
|
|
41
|
+
*
|
|
42
|
+
* @param value The value to assert.
|
|
43
|
+
* @throws {RequiredError} If `value` is not a plain object.
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/util/object/assertPlainObject
|
|
45
|
+
*/
|
|
21
46
|
export function assertPlainObject(value) {
|
|
22
47
|
if (!isPlainObject(value))
|
|
23
48
|
throw new RequiredError("Must be plain object", { received: value, caller: assertPlainObject });
|
|
24
49
|
}
|
|
25
|
-
/**
|
|
26
|
-
|
|
27
|
-
|
|
50
|
+
/**
|
|
51
|
+
* Is an unknown value the key for an own prop of an object.
|
|
52
|
+
*
|
|
53
|
+
* @param obj The object to test against.
|
|
54
|
+
* @param key The key to test for.
|
|
55
|
+
* @returns `true` if `key` is an own prop of `obj`, narrowing its type.
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/util/object/isProp
|
|
57
|
+
*/
|
|
58
|
+
export function isProp(obj, key) {
|
|
59
|
+
return Object.hasOwn(obj, key);
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Assert that an unknown value is the key for an own prop of an object.
|
|
63
|
+
*
|
|
64
|
+
* @param obj The object to assert against.
|
|
65
|
+
* @param key The key to assert is an own prop.
|
|
66
|
+
* @throws {RequiredError} If `key` is not an own prop of `obj`.
|
|
67
|
+
* @see https://dhoulb.github.io/shelving/util/object/assertProp
|
|
68
|
+
*/
|
|
28
69
|
export function assertProp(obj, key) {
|
|
29
70
|
if (!isProp(obj, key))
|
|
30
71
|
throw new RequiredError("Key must exist in object", { key, obj, caller: assertProp });
|
|
31
72
|
}
|
|
32
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Turn a possible object into an object.
|
|
75
|
+
* - If the value is iterable it is converted to an object using `Object.fromEntries()`, otherwise it is returned as-is.
|
|
76
|
+
*
|
|
77
|
+
* @param obj The object or iterable set of key/value entry tuples to convert.
|
|
78
|
+
* @returns The corresponding object.
|
|
79
|
+
* @example
|
|
80
|
+
* getObject([["a", 1], ["b", 2]]); // { a: 1, b: 2 }
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/util/object/getObject
|
|
82
|
+
*/
|
|
33
83
|
export function getObject(obj) {
|
|
34
84
|
return isIterable(obj) ? Object.fromEntries(obj) : obj;
|
|
35
85
|
}
|
|
@@ -39,15 +89,44 @@ export function getProps(obj) {
|
|
|
39
89
|
export function getKeys(obj) {
|
|
40
90
|
return isIterable(obj) ? obj : Object.keys(obj);
|
|
41
91
|
}
|
|
42
|
-
/**
|
|
92
|
+
/**
|
|
93
|
+
* Extract the value of a named prop from an object.
|
|
94
|
+
*
|
|
95
|
+
* @param obj The object to read the prop from.
|
|
96
|
+
* @param key The key of the prop to read.
|
|
97
|
+
* @returns The value of the named prop.
|
|
98
|
+
* @example
|
|
99
|
+
* getProp({ a: 1, b: 2 }, "a"); // 1
|
|
100
|
+
* @see https://dhoulb.github.io/shelving/util/object/getProp
|
|
101
|
+
*/
|
|
43
102
|
export function getProp(obj, key) {
|
|
44
103
|
return obj[key];
|
|
45
104
|
}
|
|
46
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* Create an object from a single prop.
|
|
107
|
+
*
|
|
108
|
+
* @param key The key of the prop to set.
|
|
109
|
+
* @param value The value of the prop to set.
|
|
110
|
+
* @returns A new object containing only the single prop.
|
|
111
|
+
* @example
|
|
112
|
+
* fromProp("a", 1); // { a: 1 }
|
|
113
|
+
* @see https://dhoulb.github.io/shelving/util/object/fromProp
|
|
114
|
+
*/
|
|
47
115
|
export function fromProp(key, value) {
|
|
48
116
|
return { [key]: value };
|
|
49
117
|
}
|
|
50
|
-
/**
|
|
118
|
+
/**
|
|
119
|
+
* Set a prop on an object (immutably) and return a new object including that prop.
|
|
120
|
+
* - If the value is unchanged the original object is returned unchanged.
|
|
121
|
+
*
|
|
122
|
+
* @param input The object to set the prop on.
|
|
123
|
+
* @param key The key of the prop to set.
|
|
124
|
+
* @param value The value of the prop to set.
|
|
125
|
+
* @returns A new object including the set prop, or the original object if the value was unchanged.
|
|
126
|
+
* @example
|
|
127
|
+
* withProp({ a: 1 }, "b", 2); // { a: 1, b: 2 }
|
|
128
|
+
* @see https://dhoulb.github.io/shelving/util/object/withProp
|
|
129
|
+
*/
|
|
51
130
|
export function withProp(input, key, value) {
|
|
52
131
|
return input[key] === value ? input : { __proto__: getPrototype(input), ...input, [key]: value };
|
|
53
132
|
}
|
|
@@ -68,7 +147,17 @@ export function omitProps(input, ...keys) {
|
|
|
68
147
|
function _hasntKey([key]) {
|
|
69
148
|
return !this.includes(key);
|
|
70
149
|
}
|
|
71
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Remove a prop from an object (immutably) and return a new object without that prop.
|
|
152
|
+
* - If the key doesn't exist the original object is returned unchanged.
|
|
153
|
+
*
|
|
154
|
+
* @param input The object to remove the prop from.
|
|
155
|
+
* @param key The key of the prop to remove.
|
|
156
|
+
* @returns A new object without the removed prop, or the original object if the key was not present.
|
|
157
|
+
* @example
|
|
158
|
+
* omitProp({ a: 1, b: 2 }, "b"); // { a: 1 }
|
|
159
|
+
* @see https://dhoulb.github.io/shelving/util/object/omitProp
|
|
160
|
+
*/
|
|
72
161
|
export const omitProp = omitProps;
|
|
73
162
|
export function pickProps(input, ...keys) {
|
|
74
163
|
return Object.fromEntries(Object.entries(input).filter(_hasKey, keys));
|
|
@@ -76,31 +165,79 @@ export function pickProps(input, ...keys) {
|
|
|
76
165
|
function _hasKey([key]) {
|
|
77
166
|
return this.includes(key);
|
|
78
167
|
}
|
|
79
|
-
/**
|
|
168
|
+
/**
|
|
169
|
+
* Set a single named prop on an object (by reference) and return its value.
|
|
170
|
+
*
|
|
171
|
+
* @param obj The object to set the prop on (modified by reference).
|
|
172
|
+
* @param key The key of the prop to set.
|
|
173
|
+
* @param value The value of the prop to set.
|
|
174
|
+
* @returns The value that was set.
|
|
175
|
+
* @example
|
|
176
|
+
* setProp(obj, "a", 1); // 1
|
|
177
|
+
* @see https://dhoulb.github.io/shelving/util/object/setProp
|
|
178
|
+
*/
|
|
80
179
|
export function setProp(obj, key, value) {
|
|
81
180
|
obj[key] = value;
|
|
82
181
|
return value;
|
|
83
182
|
}
|
|
84
|
-
/**
|
|
183
|
+
/**
|
|
184
|
+
* Set several named props on an object (by reference).
|
|
185
|
+
*
|
|
186
|
+
* @param obj The object to set the props on (modified by reference).
|
|
187
|
+
* @param entries The props to set, as an object or iterable set of key/value entry tuples.
|
|
188
|
+
* @example
|
|
189
|
+
* setProps(obj, { a: 1, b: 2 });
|
|
190
|
+
* @see https://dhoulb.github.io/shelving/util/object/setProps
|
|
191
|
+
*/
|
|
85
192
|
export function setProps(obj, entries) {
|
|
86
193
|
for (const [k, v] of getProps(entries))
|
|
87
194
|
obj[k] = v;
|
|
88
195
|
}
|
|
89
|
-
/**
|
|
196
|
+
/**
|
|
197
|
+
* Remove several key/value entries from an object (by reference).
|
|
198
|
+
*
|
|
199
|
+
* @param obj The object to remove the props from (modified by reference).
|
|
200
|
+
* @param keys The keys of the props to remove.
|
|
201
|
+
* @example
|
|
202
|
+
* deleteProps(obj, "a", "b");
|
|
203
|
+
* @see https://dhoulb.github.io/shelving/util/object/deleteProps
|
|
204
|
+
*/
|
|
90
205
|
export function deleteProps(obj, ...keys) {
|
|
91
206
|
for (const key of keys)
|
|
92
207
|
delete obj[key];
|
|
93
208
|
}
|
|
94
|
-
/**
|
|
209
|
+
/**
|
|
210
|
+
* Remove a key/value entry from an object (by reference).
|
|
211
|
+
*
|
|
212
|
+
* @param input The object to remove the prop from (modified by reference).
|
|
213
|
+
* @param key The key of the prop to remove.
|
|
214
|
+
* @example
|
|
215
|
+
* deleteProp(obj, "a");
|
|
216
|
+
* @see https://dhoulb.github.io/shelving/util/object/deleteProp
|
|
217
|
+
*/
|
|
95
218
|
export const deleteProp = deleteProps;
|
|
96
219
|
/**
|
|
97
220
|
* Get the prototype of an object instance.
|
|
98
221
|
* - Recommend to use this because Typescript's default lib specifies `Object.getPrototypeOf()` returning `any`.
|
|
222
|
+
*
|
|
223
|
+
* @param obj The object to read the prototype from.
|
|
224
|
+
* @returns The prototype of the object, or `null` if it has none.
|
|
225
|
+
* @example
|
|
226
|
+
* getPrototype({ a: 1 }); // Object.prototype
|
|
227
|
+
* @see https://dhoulb.github.io/shelving/util/object/getPrototype
|
|
99
228
|
*/
|
|
100
229
|
export function getPrototype(obj) {
|
|
101
230
|
return Object.getPrototypeOf(obj);
|
|
102
231
|
}
|
|
103
|
-
/**
|
|
232
|
+
/**
|
|
233
|
+
* Shallow clone an object with the same prototype.
|
|
234
|
+
*
|
|
235
|
+
* @param input The object to clone.
|
|
236
|
+
* @returns A new object with the same prototype and props as `input`.
|
|
237
|
+
* @example
|
|
238
|
+
* cloneObject({ a: 1 }); // { a: 1 }
|
|
239
|
+
* @see https://dhoulb.github.io/shelving/util/object/cloneObject
|
|
240
|
+
*/
|
|
104
241
|
export function cloneObject(input) {
|
|
105
242
|
return { __proto__: getPrototype(input), ...input };
|
|
106
243
|
}
|