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/dictionary.d.ts
CHANGED
|
@@ -1,56 +1,237 @@
|
|
|
1
1
|
import type { AnyCaller } from "./function.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Readonly dictionary object.
|
|
4
|
+
* - A dictionary is a plain object whose keys are arbitrary strings, all sharing the same value type.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/ImmutableDictionary
|
|
7
|
+
*/
|
|
3
8
|
export type ImmutableDictionary<T = unknown> = {
|
|
4
9
|
readonly [K in string]: T;
|
|
5
10
|
};
|
|
6
|
-
/**
|
|
11
|
+
/**
|
|
12
|
+
* Writable dictionary object.
|
|
13
|
+
* - A dictionary is a plain object whose keys are arbitrary strings, all sharing the same value type.
|
|
14
|
+
*
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/MutableDictionary
|
|
16
|
+
*/
|
|
7
17
|
export type MutableDictionary<T = unknown> = {
|
|
8
18
|
[K in string]: T;
|
|
9
19
|
};
|
|
10
|
-
/**
|
|
20
|
+
/**
|
|
21
|
+
* Single item for a dictionary object in entry format.
|
|
22
|
+
* - A readonly key/value entry tuple.
|
|
23
|
+
*
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/DictionaryItem
|
|
25
|
+
*/
|
|
11
26
|
export type DictionaryItem<T> = readonly [string, T];
|
|
12
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Get the type of the _values_ of the items of a dictionary object.
|
|
29
|
+
*
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/DictionaryValue
|
|
31
|
+
*/
|
|
13
32
|
export type DictionaryValue<T extends ImmutableDictionary> = T[string];
|
|
14
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Value that can be converted to a dictionary object.
|
|
35
|
+
* - Either the dictionary itself, or an iterable set of key/value entry tuples.
|
|
36
|
+
*
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/PossibleDictionary
|
|
38
|
+
*/
|
|
15
39
|
export type PossibleDictionary<T> = ImmutableDictionary<T> | Iterable<DictionaryItem<T>>;
|
|
16
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Is an unknown value a dictionary object?
|
|
42
|
+
*
|
|
43
|
+
* @param value The value to test.
|
|
44
|
+
* @returns `true` if `value` is a dictionary (plain) object, narrowing its type.
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/isDictionary
|
|
46
|
+
*/
|
|
17
47
|
export declare function isDictionary(value: unknown): value is ImmutableDictionary;
|
|
18
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Assert that an unknown value is a dictionary object.
|
|
50
|
+
*
|
|
51
|
+
* @param value The value to assert.
|
|
52
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertDictionary` itself).
|
|
53
|
+
* @throws {ValueError} If `value` is not a dictionary object.
|
|
54
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/assertDictionary
|
|
55
|
+
*/
|
|
19
56
|
export declare function assertDictionary(value: unknown, caller?: AnyCaller): asserts value is ImmutableDictionary;
|
|
20
|
-
/**
|
|
57
|
+
/**
|
|
58
|
+
* Convert a possible dictionary into a dictionary.
|
|
59
|
+
* - If the value is iterable it is converted to a dictionary using `Object.fromEntries()`, otherwise it is returned as-is.
|
|
60
|
+
*
|
|
61
|
+
* @param dict The dictionary or iterable set of key/value entry tuples to convert.
|
|
62
|
+
* @returns The corresponding dictionary object.
|
|
63
|
+
* @example
|
|
64
|
+
* requireDictionary([["a", 1], ["b", 2]]); // { a: 1, b: 2 }
|
|
65
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/requireDictionary
|
|
66
|
+
*/
|
|
21
67
|
export declare function requireDictionary<T>(dict: PossibleDictionary<T>): ImmutableDictionary<T>;
|
|
22
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Turn a dictionary object into a set of props.
|
|
70
|
+
*
|
|
71
|
+
* @param input The dictionary or iterable set of key/value entry tuples to read.
|
|
72
|
+
* @returns Iterable set of key/value entry tuples for the dictionary.
|
|
73
|
+
* @example
|
|
74
|
+
* getDictionaryItems({ a: 1, b: 2 }); // [["a", 1], ["b", 2]]
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/getDictionaryItems
|
|
76
|
+
*/
|
|
23
77
|
export declare function getDictionaryItems<T>(input: ImmutableDictionary<T>): readonly DictionaryItem<T>[];
|
|
24
78
|
export declare function getDictionaryItems<T>(input: PossibleDictionary<T>): Iterable<DictionaryItem<T>>;
|
|
25
|
-
/**
|
|
79
|
+
/**
|
|
80
|
+
* Is an unknown value the key for an own prop of a dictionary.
|
|
81
|
+
*
|
|
82
|
+
* @param dict The dictionary to test against.
|
|
83
|
+
* @param key The key to test for.
|
|
84
|
+
* @returns `true` if `key` is a string and an own prop of `dict`, narrowing its type.
|
|
85
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/isDictionaryItem
|
|
86
|
+
*/
|
|
26
87
|
export declare function isDictionaryItem<T>(dict: ImmutableDictionary<T>, key: unknown): key is string;
|
|
27
|
-
/**
|
|
88
|
+
/**
|
|
89
|
+
* Assert that an unknown value is the key for an own prop of a dictionary.
|
|
90
|
+
*
|
|
91
|
+
* @param dict The dictionary to assert against.
|
|
92
|
+
* @param key The key to assert is an own prop.
|
|
93
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertDictionaryItem` itself).
|
|
94
|
+
* @throws {RequiredError} If `key` is not an own prop of `dict`.
|
|
95
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/assertDictionaryItem
|
|
96
|
+
*/
|
|
28
97
|
export declare function assertDictionaryItem<T>(dict: ImmutableDictionary<T>, key: string, caller?: AnyCaller): asserts key is string;
|
|
29
|
-
/**
|
|
98
|
+
/**
|
|
99
|
+
* Get an item in a dictionary object, or throw `RequiredError` if it doesn't exist.
|
|
100
|
+
*
|
|
101
|
+
* @param dict The dictionary to read the item from.
|
|
102
|
+
* @param key The key of the item to read.
|
|
103
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireDictionaryItem` itself).
|
|
104
|
+
* @returns The value of the item.
|
|
105
|
+
* @throws {RequiredError} If `key` is not an own prop of `dict`.
|
|
106
|
+
* @example
|
|
107
|
+
* requireDictionaryItem({ a: 1 }, "a"); // 1
|
|
108
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/requireDictionaryItem
|
|
109
|
+
*/
|
|
30
110
|
export declare function requireDictionaryItem<T>(dict: ImmutableDictionary<T>, key: string, caller?: AnyCaller): T;
|
|
31
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* Get an item in a dictionary object, or `undefined` if it doesn't exist.
|
|
113
|
+
*
|
|
114
|
+
* @param dict The dictionary to read the item from.
|
|
115
|
+
* @param key The key of the item to read.
|
|
116
|
+
* @returns The value of the item, or `undefined` if `key` is not an own prop of `dict`.
|
|
117
|
+
* @example
|
|
118
|
+
* getDictionaryItem({ a: 1 }, "a"); // 1
|
|
119
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/getDictionaryItem
|
|
120
|
+
*/
|
|
32
121
|
export declare function getDictionaryItem<T>(dict: ImmutableDictionary<T>, key: string): T | undefined;
|
|
33
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Set an item on a dictionary object (immutably) and return a new object including that item.
|
|
124
|
+
* - If the value is unchanged the original dictionary is returned unchanged.
|
|
125
|
+
*
|
|
126
|
+
* @param dict The dictionary to set the item on.
|
|
127
|
+
* @param key The key of the item to set.
|
|
128
|
+
* @param value The value of the item to set.
|
|
129
|
+
* @returns A new dictionary including the set item, or the original dictionary if the value was unchanged.
|
|
130
|
+
* @example
|
|
131
|
+
* withDictionaryItem({ a: 1 }, "b", 2); // { a: 1, b: 2 }
|
|
132
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/withDictionaryItem
|
|
133
|
+
*/
|
|
34
134
|
export declare const withDictionaryItem: <T>(dict: ImmutableDictionary<T>, key: string, value: T) => ImmutableDictionary<T>;
|
|
35
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* Set several items on a dictionary object (immutably) and return a new object including those items.
|
|
137
|
+
* - If all values are unchanged the original dictionary is returned unchanged.
|
|
138
|
+
*
|
|
139
|
+
* @param dict The dictionary to set the items on.
|
|
140
|
+
* @param props The items to set, as a dictionary or iterable set of key/value entry tuples.
|
|
141
|
+
* @returns A new dictionary including the set items, or the original dictionary if all values were unchanged.
|
|
142
|
+
* @example
|
|
143
|
+
* withDictionaryItems({ a: 1 }, { b: 2, c: 3 }); // { a: 1, b: 2, c: 3 }
|
|
144
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/withDictionaryItems
|
|
145
|
+
*/
|
|
36
146
|
export declare const withDictionaryItems: <T>(dict: ImmutableDictionary<T>, props: PossibleDictionary<T>) => ImmutableDictionary<T>;
|
|
37
|
-
/**
|
|
147
|
+
/**
|
|
148
|
+
* Remove several items from a dictionary object (immutably) and return a new object without those items.
|
|
149
|
+
* - If none of the keys exist the original dictionary is returned unchanged.
|
|
150
|
+
*
|
|
151
|
+
* @param dict The dictionary to remove the items from.
|
|
152
|
+
* @param keys The keys of the items to remove.
|
|
153
|
+
* @returns A new dictionary without the removed items, or the original dictionary if no keys were present.
|
|
154
|
+
* @example
|
|
155
|
+
* omitDictionaryItems({ a: 1, b: 2, c: 3 }, "b", "c"); // { a: 1 }
|
|
156
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/omitDictionaryItems
|
|
157
|
+
*/
|
|
38
158
|
export declare const omitDictionaryItems: <T>(dict: ImmutableDictionary<T>, ...keys: string[]) => ImmutableDictionary<T>;
|
|
39
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* Remove an item from a dictionary object (immutably) and return a new object without that item.
|
|
161
|
+
* - If the key doesn't exist the original dictionary is returned unchanged.
|
|
162
|
+
*
|
|
163
|
+
* @param dict The dictionary to remove the item from.
|
|
164
|
+
* @param key The key of the item to remove.
|
|
165
|
+
* @returns A new dictionary without the removed item, or the original dictionary if the key was not present.
|
|
166
|
+
* @example
|
|
167
|
+
* omitDictionaryItem({ a: 1, b: 2 }, "b"); // { a: 1 }
|
|
168
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/omitDictionaryItem
|
|
169
|
+
*/
|
|
40
170
|
export declare const omitDictionaryItem: <T>(dict: ImmutableDictionary<T>, key: string) => ImmutableDictionary<T>;
|
|
41
|
-
/**
|
|
171
|
+
/**
|
|
172
|
+
* Pick several items from a dictionary object and return a new object with only those items.
|
|
173
|
+
*
|
|
174
|
+
* @param dict The dictionary to pick the items from.
|
|
175
|
+
* @param keys The keys of the items to pick.
|
|
176
|
+
* @returns A new dictionary containing only the picked items.
|
|
177
|
+
* @example
|
|
178
|
+
* pickDictionaryItems({ a: 1, b: 2, c: 3 }, "a", "b"); // { a: 1, b: 2 }
|
|
179
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/pickDictionaryItems
|
|
180
|
+
*/
|
|
42
181
|
export declare const pickDictionaryItems: <T>(dict: ImmutableDictionary<T>, ...keys: string[]) => ImmutableDictionary<T>;
|
|
43
|
-
/**
|
|
182
|
+
/**
|
|
183
|
+
* Set a single named item on a dictionary object (by reference) and return its value.
|
|
184
|
+
*
|
|
185
|
+
* @param dict The dictionary to set the item on (modified by reference).
|
|
186
|
+
* @param key The key of the item to set.
|
|
187
|
+
* @param value The value of the item to set.
|
|
188
|
+
* @returns The value that was set.
|
|
189
|
+
* @example
|
|
190
|
+
* setDictionaryItem(dict, "a", 1); // 1
|
|
191
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/setDictionaryItem
|
|
192
|
+
*/
|
|
44
193
|
export declare const setDictionaryItem: <T>(dict: MutableDictionary<T>, key: string, value: T) => T;
|
|
45
|
-
/**
|
|
194
|
+
/**
|
|
195
|
+
* Set several named items on a dictionary object (by reference).
|
|
196
|
+
*
|
|
197
|
+
* @param dict The dictionary to set the items on (modified by reference).
|
|
198
|
+
* @param entries The items to set, as a dictionary or iterable set of key/value entry tuples.
|
|
199
|
+
* @example
|
|
200
|
+
* setDictionaryItems(dict, { a: 1, b: 2 });
|
|
201
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/setDictionaryItems
|
|
202
|
+
*/
|
|
46
203
|
export declare const setDictionaryItems: <T>(dict: MutableDictionary<T>, entries: PossibleDictionary<T>) => void;
|
|
47
|
-
/**
|
|
204
|
+
/**
|
|
205
|
+
* Remove several key/value entries from a dictionary object (by reference).
|
|
206
|
+
*
|
|
207
|
+
* @param dict The dictionary to remove the items from (modified by reference).
|
|
208
|
+
* @param keys The keys of the items to remove.
|
|
209
|
+
* @example
|
|
210
|
+
* deleteDictionaryItems(dict, "a", "b");
|
|
211
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/deleteDictionaryItems
|
|
212
|
+
*/
|
|
48
213
|
export declare const deleteDictionaryItems: <T extends MutableDictionary>(dict: T, ...keys: string[]) => void;
|
|
49
|
-
/**
|
|
214
|
+
/**
|
|
215
|
+
* Remove a key/value entry from a dictionary object (by reference).
|
|
216
|
+
*
|
|
217
|
+
* @param dict The dictionary to remove the item from (modified by reference).
|
|
218
|
+
* @param key The key of the item to remove.
|
|
219
|
+
* @example
|
|
220
|
+
* deleteDictionaryItem(dict, "a");
|
|
221
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/deleteDictionaryItem
|
|
222
|
+
*/
|
|
50
223
|
export declare const deleteDictionaryItem: <T extends MutableDictionary>(dict: T, key: string) => void;
|
|
51
|
-
/**
|
|
224
|
+
/**
|
|
225
|
+
* Type that represents an empty dictionary object.
|
|
226
|
+
*
|
|
227
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/EmptyDictionary
|
|
228
|
+
*/
|
|
52
229
|
export type EmptyDictionary = {
|
|
53
230
|
readonly [K in never]: never;
|
|
54
231
|
};
|
|
55
|
-
/**
|
|
232
|
+
/**
|
|
233
|
+
* An empty dictionary object.
|
|
234
|
+
*
|
|
235
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/EMPTY_DICTIONARY
|
|
236
|
+
*/
|
|
56
237
|
export declare const EMPTY_DICTIONARY: EmptyDictionary;
|
package/util/dictionary.js
CHANGED
|
@@ -2,57 +2,202 @@ import { RequiredError } from "../error/RequiredError.js";
|
|
|
2
2
|
import { ValueError } from "../error/ValueError.js";
|
|
3
3
|
import { isIterable } from "./iterate.js";
|
|
4
4
|
import { deleteProps, isPlainObject, omitProps, pickProps, setProp, setProps, withProp, withProps } from "./object.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Is an unknown value a dictionary object?
|
|
7
|
+
*
|
|
8
|
+
* @param value The value to test.
|
|
9
|
+
* @returns `true` if `value` is a dictionary (plain) object, narrowing its type.
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/isDictionary
|
|
11
|
+
*/
|
|
6
12
|
export function isDictionary(value) {
|
|
7
13
|
return isPlainObject(value);
|
|
8
14
|
}
|
|
9
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Assert that an unknown value is a dictionary object.
|
|
17
|
+
*
|
|
18
|
+
* @param value The value to assert.
|
|
19
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertDictionary` itself).
|
|
20
|
+
* @throws {ValueError} If `value` is not a dictionary object.
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/assertDictionary
|
|
22
|
+
*/
|
|
10
23
|
export function assertDictionary(value, caller = assertDictionary) {
|
|
11
24
|
if (!isDictionary(value))
|
|
12
25
|
throw new ValueError("Must be dictionary object", { received: value, caller });
|
|
13
26
|
}
|
|
14
|
-
/**
|
|
27
|
+
/**
|
|
28
|
+
* Convert a possible dictionary into a dictionary.
|
|
29
|
+
* - If the value is iterable it is converted to a dictionary using `Object.fromEntries()`, otherwise it is returned as-is.
|
|
30
|
+
*
|
|
31
|
+
* @param dict The dictionary or iterable set of key/value entry tuples to convert.
|
|
32
|
+
* @returns The corresponding dictionary object.
|
|
33
|
+
* @example
|
|
34
|
+
* requireDictionary([["a", 1], ["b", 2]]); // { a: 1, b: 2 }
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/requireDictionary
|
|
36
|
+
*/
|
|
15
37
|
export function requireDictionary(dict) {
|
|
16
38
|
return isDictionary(dict) ? dict : Object.fromEntries(dict);
|
|
17
39
|
}
|
|
18
40
|
export function getDictionaryItems(input) {
|
|
19
41
|
return isIterable(input) ? input : Object.entries(input);
|
|
20
42
|
}
|
|
21
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Is an unknown value the key for an own prop of a dictionary.
|
|
45
|
+
*
|
|
46
|
+
* @param dict The dictionary to test against.
|
|
47
|
+
* @param key The key to test for.
|
|
48
|
+
* @returns `true` if `key` is a string and an own prop of `dict`, narrowing its type.
|
|
49
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/isDictionaryItem
|
|
50
|
+
*/
|
|
22
51
|
export function isDictionaryItem(dict, key) {
|
|
23
52
|
return typeof key === "string" && Object.hasOwn(dict, key);
|
|
24
53
|
}
|
|
25
|
-
/**
|
|
54
|
+
/**
|
|
55
|
+
* Assert that an unknown value is the key for an own prop of a dictionary.
|
|
56
|
+
*
|
|
57
|
+
* @param dict The dictionary to assert against.
|
|
58
|
+
* @param key The key to assert is an own prop.
|
|
59
|
+
* @param caller Function to attribute a thrown error to (defaults to `assertDictionaryItem` itself).
|
|
60
|
+
* @throws {RequiredError} If `key` is not an own prop of `dict`.
|
|
61
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/assertDictionaryItem
|
|
62
|
+
*/
|
|
26
63
|
export function assertDictionaryItem(dict, key, caller = assertDictionaryItem) {
|
|
27
64
|
if (!isDictionaryItem(dict, key))
|
|
28
65
|
throw new RequiredError("Key must exist in dictionary object", { key, dict, caller });
|
|
29
66
|
}
|
|
30
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Get an item in a dictionary object, or throw `RequiredError` if it doesn't exist.
|
|
69
|
+
*
|
|
70
|
+
* @param dict The dictionary to read the item from.
|
|
71
|
+
* @param key The key of the item to read.
|
|
72
|
+
* @param caller Function to attribute a thrown error to (defaults to `requireDictionaryItem` itself).
|
|
73
|
+
* @returns The value of the item.
|
|
74
|
+
* @throws {RequiredError} If `key` is not an own prop of `dict`.
|
|
75
|
+
* @example
|
|
76
|
+
* requireDictionaryItem({ a: 1 }, "a"); // 1
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/requireDictionaryItem
|
|
78
|
+
*/
|
|
31
79
|
export function requireDictionaryItem(dict, key, caller = requireDictionaryItem) {
|
|
32
80
|
assertDictionaryItem(dict, key, caller);
|
|
33
81
|
return dict[key];
|
|
34
82
|
}
|
|
35
|
-
/**
|
|
83
|
+
/**
|
|
84
|
+
* Get an item in a dictionary object, or `undefined` if it doesn't exist.
|
|
85
|
+
*
|
|
86
|
+
* @param dict The dictionary to read the item from.
|
|
87
|
+
* @param key The key of the item to read.
|
|
88
|
+
* @returns The value of the item, or `undefined` if `key` is not an own prop of `dict`.
|
|
89
|
+
* @example
|
|
90
|
+
* getDictionaryItem({ a: 1 }, "a"); // 1
|
|
91
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/getDictionaryItem
|
|
92
|
+
*/
|
|
36
93
|
export function getDictionaryItem(dict, key) {
|
|
37
94
|
return dict[key];
|
|
38
95
|
}
|
|
39
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Set an item on a dictionary object (immutably) and return a new object including that item.
|
|
98
|
+
* - If the value is unchanged the original dictionary is returned unchanged.
|
|
99
|
+
*
|
|
100
|
+
* @param dict The dictionary to set the item on.
|
|
101
|
+
* @param key The key of the item to set.
|
|
102
|
+
* @param value The value of the item to set.
|
|
103
|
+
* @returns A new dictionary including the set item, or the original dictionary if the value was unchanged.
|
|
104
|
+
* @example
|
|
105
|
+
* withDictionaryItem({ a: 1 }, "b", 2); // { a: 1, b: 2 }
|
|
106
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/withDictionaryItem
|
|
107
|
+
*/
|
|
40
108
|
export const withDictionaryItem = withProp;
|
|
41
|
-
/**
|
|
109
|
+
/**
|
|
110
|
+
* Set several items on a dictionary object (immutably) and return a new object including those items.
|
|
111
|
+
* - If all values are unchanged the original dictionary is returned unchanged.
|
|
112
|
+
*
|
|
113
|
+
* @param dict The dictionary to set the items on.
|
|
114
|
+
* @param props The items to set, as a dictionary or iterable set of key/value entry tuples.
|
|
115
|
+
* @returns A new dictionary including the set items, or the original dictionary if all values were unchanged.
|
|
116
|
+
* @example
|
|
117
|
+
* withDictionaryItems({ a: 1 }, { b: 2, c: 3 }); // { a: 1, b: 2, c: 3 }
|
|
118
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/withDictionaryItems
|
|
119
|
+
*/
|
|
42
120
|
export const withDictionaryItems = withProps;
|
|
43
|
-
/**
|
|
121
|
+
/**
|
|
122
|
+
* Remove several items from a dictionary object (immutably) and return a new object without those items.
|
|
123
|
+
* - If none of the keys exist the original dictionary is returned unchanged.
|
|
124
|
+
*
|
|
125
|
+
* @param dict The dictionary to remove the items from.
|
|
126
|
+
* @param keys The keys of the items to remove.
|
|
127
|
+
* @returns A new dictionary without the removed items, or the original dictionary if no keys were present.
|
|
128
|
+
* @example
|
|
129
|
+
* omitDictionaryItems({ a: 1, b: 2, c: 3 }, "b", "c"); // { a: 1 }
|
|
130
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/omitDictionaryItems
|
|
131
|
+
*/
|
|
44
132
|
export const omitDictionaryItems = omitProps;
|
|
45
|
-
/**
|
|
133
|
+
/**
|
|
134
|
+
* Remove an item from a dictionary object (immutably) and return a new object without that item.
|
|
135
|
+
* - If the key doesn't exist the original dictionary is returned unchanged.
|
|
136
|
+
*
|
|
137
|
+
* @param dict The dictionary to remove the item from.
|
|
138
|
+
* @param key The key of the item to remove.
|
|
139
|
+
* @returns A new dictionary without the removed item, or the original dictionary if the key was not present.
|
|
140
|
+
* @example
|
|
141
|
+
* omitDictionaryItem({ a: 1, b: 2 }, "b"); // { a: 1 }
|
|
142
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/omitDictionaryItem
|
|
143
|
+
*/
|
|
46
144
|
export const omitDictionaryItem = omitProps;
|
|
47
|
-
/**
|
|
145
|
+
/**
|
|
146
|
+
* Pick several items from a dictionary object and return a new object with only those items.
|
|
147
|
+
*
|
|
148
|
+
* @param dict The dictionary to pick the items from.
|
|
149
|
+
* @param keys The keys of the items to pick.
|
|
150
|
+
* @returns A new dictionary containing only the picked items.
|
|
151
|
+
* @example
|
|
152
|
+
* pickDictionaryItems({ a: 1, b: 2, c: 3 }, "a", "b"); // { a: 1, b: 2 }
|
|
153
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/pickDictionaryItems
|
|
154
|
+
*/
|
|
48
155
|
export const pickDictionaryItems = pickProps;
|
|
49
|
-
/**
|
|
156
|
+
/**
|
|
157
|
+
* Set a single named item on a dictionary object (by reference) and return its value.
|
|
158
|
+
*
|
|
159
|
+
* @param dict The dictionary to set the item on (modified by reference).
|
|
160
|
+
* @param key The key of the item to set.
|
|
161
|
+
* @param value The value of the item to set.
|
|
162
|
+
* @returns The value that was set.
|
|
163
|
+
* @example
|
|
164
|
+
* setDictionaryItem(dict, "a", 1); // 1
|
|
165
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/setDictionaryItem
|
|
166
|
+
*/
|
|
50
167
|
export const setDictionaryItem = setProp;
|
|
51
|
-
/**
|
|
168
|
+
/**
|
|
169
|
+
* Set several named items on a dictionary object (by reference).
|
|
170
|
+
*
|
|
171
|
+
* @param dict The dictionary to set the items on (modified by reference).
|
|
172
|
+
* @param entries The items to set, as a dictionary or iterable set of key/value entry tuples.
|
|
173
|
+
* @example
|
|
174
|
+
* setDictionaryItems(dict, { a: 1, b: 2 });
|
|
175
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/setDictionaryItems
|
|
176
|
+
*/
|
|
52
177
|
export const setDictionaryItems = setProps;
|
|
53
|
-
/**
|
|
178
|
+
/**
|
|
179
|
+
* Remove several key/value entries from a dictionary object (by reference).
|
|
180
|
+
*
|
|
181
|
+
* @param dict The dictionary to remove the items from (modified by reference).
|
|
182
|
+
* @param keys The keys of the items to remove.
|
|
183
|
+
* @example
|
|
184
|
+
* deleteDictionaryItems(dict, "a", "b");
|
|
185
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/deleteDictionaryItems
|
|
186
|
+
*/
|
|
54
187
|
export const deleteDictionaryItems = deleteProps;
|
|
55
|
-
/**
|
|
188
|
+
/**
|
|
189
|
+
* Remove a key/value entry from a dictionary object (by reference).
|
|
190
|
+
*
|
|
191
|
+
* @param dict The dictionary to remove the item from (modified by reference).
|
|
192
|
+
* @param key The key of the item to remove.
|
|
193
|
+
* @example
|
|
194
|
+
* deleteDictionaryItem(dict, "a");
|
|
195
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/deleteDictionaryItem
|
|
196
|
+
*/
|
|
56
197
|
export const deleteDictionaryItem = deleteProps;
|
|
57
|
-
/**
|
|
198
|
+
/**
|
|
199
|
+
* An empty dictionary object.
|
|
200
|
+
*
|
|
201
|
+
* @see https://dhoulb.github.io/shelving/util/dictionary/EMPTY_DICTIONARY
|
|
202
|
+
*/
|
|
58
203
|
export const EMPTY_DICTIONARY = { __proto__: null };
|
package/util/diff.d.ts
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
import type { ImmutableArray } from "./array.js";
|
|
2
2
|
import type { DeepPartial, ImmutableObject } from "./object.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* The `SAME` symbol indicates sameness.
|
|
5
|
+
* - Returned by the diff functions when two values are deeply equal and no transformation is needed.
|
|
6
|
+
*
|
|
7
|
+
* @see https://dhoulb.github.io/shelving/util/diff/SAME
|
|
8
|
+
*/
|
|
4
9
|
export declare const SAME: unique symbol;
|
|
5
10
|
/**
|
|
6
11
|
* Deeply diff two unknown values to produce the transformation needed to transform `left` into `right`, or the `SAME` constant if they are deeply equal.
|
|
@@ -8,11 +13,15 @@ export declare const SAME: unique symbol;
|
|
|
8
13
|
* @param left The old value.
|
|
9
14
|
* @param right The new/target value.
|
|
10
15
|
*
|
|
11
|
-
* @
|
|
16
|
+
* @returns The transformation needed to transform `left` into `right`
|
|
12
17
|
* - If the two values are deeply equal the `SAME` constant is returned.
|
|
13
18
|
* - Unequal scalar values can't be diffed, so `right` is always returned.
|
|
14
19
|
* - If `right` is an array, returns whatever `deepDiffArray()` returns.
|
|
15
20
|
* - If `right` is an object, returns whatever `deepDiffObject()` returns.
|
|
21
|
+
*
|
|
22
|
+
* @example deepDiff({ a: 1 }, { a: 1 }) // SAME
|
|
23
|
+
* @example deepDiff({ a: 1 }, { a: 2 }) // { a: 2 }
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/util/diff/deepDiff
|
|
16
25
|
*/
|
|
17
26
|
export declare function deepDiff<R extends ImmutableObject>(left: unknown, right: R): R | DeepPartial<R> | typeof SAME;
|
|
18
27
|
export declare function deepDiff<R>(left: unknown, right: R): R | typeof SAME;
|
|
@@ -20,8 +29,13 @@ export declare function deepDiff<R>(left: unknown, right: R): R | typeof SAME;
|
|
|
20
29
|
* Diff two arrays to produce the transformation needed to transform `left` into `right`
|
|
21
30
|
* DH: Currently arrays don't diff at an item level, they return the entire new array if not deeply equal.
|
|
22
31
|
*
|
|
32
|
+
* @param left The old array.
|
|
33
|
+
* @param right The new/target array.
|
|
23
34
|
* @returns The `right` array if it is different to `left`, or the exact `SAME` constant otherwise.
|
|
24
35
|
* - If the two values are deeply equal the `SAME` constant is returned.
|
|
36
|
+
* @example deepDiffArray([1, 2], [1, 2]) // SAME
|
|
37
|
+
* @example deepDiffArray([1, 2], [1, 3]) // [1, 3]
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/util/diff/deepDiffArray
|
|
25
39
|
*/
|
|
26
40
|
export declare function deepDiffArray<R extends ImmutableArray>(left: ImmutableArray, right: R): R | typeof SAME;
|
|
27
41
|
/**
|
|
@@ -30,8 +44,13 @@ export declare function deepDiffArray<R extends ImmutableArray>(left: ImmutableA
|
|
|
30
44
|
* - Includes a constructor check — if `left` and `right` have different constructors they will not be merged and `right` will be returned (ensures arrays aren't compared with objects).
|
|
31
45
|
* - Properties that exist in `left` but not `right` (i.e. have been deleted) are represented with `undefined`
|
|
32
46
|
*
|
|
33
|
-
* @
|
|
47
|
+
* @param left The old object.
|
|
48
|
+
* @param right The new/target object.
|
|
49
|
+
* @returns Object containing the missing/updated properties that `left` needs to become `right`.
|
|
34
50
|
* - If the two values are deeply equal the `SAME` constant is returned.
|
|
35
51
|
* - If `left` isn't an object then the result can't be diffed so entire `right` is returned.
|
|
52
|
+
* @example deepDiffObject({ a: 1 }, { a: 1 }) // SAME
|
|
53
|
+
* @example deepDiffObject({ a: 1, b: 2 }, { a: 1 }) // { b: undefined }
|
|
54
|
+
* @see https://dhoulb.github.io/shelving/util/diff/deepDiffObject
|
|
36
55
|
*/
|
|
37
56
|
export declare function deepDiffObject<R extends ImmutableObject>(left: ImmutableObject, right: R): R | DeepPartial<R> | typeof SAME;
|
package/util/diff.js
CHANGED
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import { isArray } from "./array.js";
|
|
2
2
|
import { isArrayEqual, isDeepEqual } from "./equal.js";
|
|
3
3
|
import { isObject } from "./object.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* The `SAME` symbol indicates sameness.
|
|
6
|
+
* - Returned by the diff functions when two values are deeply equal and no transformation is needed.
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/util/diff/SAME
|
|
9
|
+
*/
|
|
5
10
|
export const SAME = Symbol("shelving/SAME");
|
|
6
11
|
export function deepDiff(left, right) {
|
|
7
12
|
if (left === right)
|
|
@@ -16,8 +21,13 @@ export function deepDiff(left, right) {
|
|
|
16
21
|
* Diff two arrays to produce the transformation needed to transform `left` into `right`
|
|
17
22
|
* DH: Currently arrays don't diff at an item level, they return the entire new array if not deeply equal.
|
|
18
23
|
*
|
|
24
|
+
* @param left The old array.
|
|
25
|
+
* @param right The new/target array.
|
|
19
26
|
* @returns The `right` array if it is different to `left`, or the exact `SAME` constant otherwise.
|
|
20
27
|
* - If the two values are deeply equal the `SAME` constant is returned.
|
|
28
|
+
* @example deepDiffArray([1, 2], [1, 2]) // SAME
|
|
29
|
+
* @example deepDiffArray([1, 2], [1, 3]) // [1, 3]
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/util/diff/deepDiffArray
|
|
21
31
|
*/
|
|
22
32
|
export function deepDiffArray(left, right) {
|
|
23
33
|
if (left === right)
|