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
|
@@ -1,6 +1,14 @@
|
|
|
1
1
|
import { type CurrencyCode } from "../util/currency.js";
|
|
2
|
+
import type { NullableSchema } from "./NullableSchema.js";
|
|
2
3
|
import { NumberSchema, type NumberSchemaOptions } from "./NumberSchema.js";
|
|
3
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Options for `CurrencyAmountSchema`.
|
|
6
|
+
*
|
|
7
|
+
* - `currency` — ISO 4217 currency code that determines the step and symbol.
|
|
8
|
+
* - `symbol` — override the currency symbol used when formatting.
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchemaOptions
|
|
11
|
+
*/
|
|
4
12
|
export interface CurrencyAmountSchemaOptions extends NumberSchemaOptions {
|
|
5
13
|
readonly symbol?: string | undefined;
|
|
6
14
|
readonly currency: CurrencyCode;
|
|
@@ -15,21 +23,109 @@ export interface CurrencyAmountSchemaOptions extends NumberSchemaOptions {
|
|
|
15
23
|
* const PRICE = new CurrencyAmountSchema({ currency: "GBP", min: 0 });
|
|
16
24
|
* PRICE.validate("12.345"); // 12.35
|
|
17
25
|
* PRICE.format(12.3); // "£12.30"
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema
|
|
18
27
|
*/
|
|
19
28
|
export declare class CurrencyAmountSchema extends NumberSchema {
|
|
29
|
+
/**
|
|
30
|
+
* Rounding step, always defined and inferred from the currency's minor units.
|
|
31
|
+
*
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/step
|
|
33
|
+
*/
|
|
20
34
|
readonly step: number;
|
|
35
|
+
/**
|
|
36
|
+
* ISO 4217 currency code this schema validates amounts for.
|
|
37
|
+
*
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/currency
|
|
39
|
+
*/
|
|
21
40
|
readonly currency: CurrencyCode;
|
|
41
|
+
/**
|
|
42
|
+
* Currency symbol used when formatting amounts.
|
|
43
|
+
*
|
|
44
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/symbol
|
|
45
|
+
*/
|
|
22
46
|
readonly symbol: string;
|
|
47
|
+
/**
|
|
48
|
+
* Create a new `CurrencyAmountSchema`.
|
|
49
|
+
*
|
|
50
|
+
* @param options Options for the schema (`currency` required, optional `symbol`, `step`, plus base `NumberSchemaOptions`).
|
|
51
|
+
* @throws `string` if `currency` is not a valid ISO 4217 currency code.
|
|
52
|
+
*/
|
|
23
53
|
constructor({ currency, one, title, symbol, step, ...options }: CurrencyAmountSchemaOptions);
|
|
54
|
+
/**
|
|
55
|
+
* Format a validated amount as a currency string for display.
|
|
56
|
+
*
|
|
57
|
+
* - Decimal places are omitted when `step` is `1` or more.
|
|
58
|
+
*
|
|
59
|
+
* @param value The validated amount to format.
|
|
60
|
+
* @returns The amount formatted using the schema's currency and symbol.
|
|
61
|
+
* @example schema.format(12.3) // "£12.30"
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/format
|
|
63
|
+
*/
|
|
24
64
|
format(value: number): string;
|
|
25
65
|
}
|
|
26
|
-
/**
|
|
27
|
-
|
|
66
|
+
/**
|
|
67
|
+
* Create a `CurrencyAmountSchema` for a non-negative monetary amount in a currency.
|
|
68
|
+
*
|
|
69
|
+
* *Factory for `CurrencyAmountSchema`.*
|
|
70
|
+
*
|
|
71
|
+
* @param currency ISO 4217 currency code that determines the step and symbol.
|
|
72
|
+
* @returns A `CurrencyAmountSchema` validating amounts in `currency`.
|
|
73
|
+
* @throws `string` if `currency` is not a valid ISO 4217 currency code.
|
|
74
|
+
* @example CURRENCY_AMOUNT("GBP").validate("12.345") // 12.35
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CURRENCY_AMOUNT
|
|
76
|
+
*/
|
|
77
|
+
export declare function CURRENCY_AMOUNT(currency: CurrencyCode): CurrencyAmountSchema;
|
|
78
|
+
/**
|
|
79
|
+
* Valid US dollar amount, e.g. `12.35`.
|
|
80
|
+
*
|
|
81
|
+
* @example USD_AMOUNT.validate("12.345") // 12.35
|
|
82
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/USD_AMOUNT
|
|
83
|
+
*/
|
|
28
84
|
export declare const USD_AMOUNT: CurrencyAmountSchema;
|
|
85
|
+
/**
|
|
86
|
+
* Valid pound sterling amount, e.g. `12.35`.
|
|
87
|
+
*
|
|
88
|
+
* @example GBP_AMOUNT.validate("12.345") // 12.35
|
|
89
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/GBP_AMOUNT
|
|
90
|
+
*/
|
|
29
91
|
export declare const GBP_AMOUNT: CurrencyAmountSchema;
|
|
92
|
+
/**
|
|
93
|
+
* Valid euro amount, e.g. `12.35`.
|
|
94
|
+
*
|
|
95
|
+
* @example EUR_AMOUNT.validate("12.345") // 12.35
|
|
96
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/EUR_AMOUNT
|
|
97
|
+
*/
|
|
30
98
|
export declare const EUR_AMOUNT: CurrencyAmountSchema;
|
|
31
|
-
/**
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
99
|
+
/**
|
|
100
|
+
* Create a `NullableSchema` for an optional monetary amount in a currency, or `null`.
|
|
101
|
+
*
|
|
102
|
+
* *Factory for `NullableSchema`.*
|
|
103
|
+
*
|
|
104
|
+
* @param currency ISO 4217 currency code that determines the step and symbol.
|
|
105
|
+
* @returns A `NullableSchema` validating amounts in `currency`, or `null`.
|
|
106
|
+
* @throws `string` if `currency` is not a valid ISO 4217 currency code.
|
|
107
|
+
* @example NULLABLE_CURRENCY_AMOUNT("GBP").validate(null) // null
|
|
108
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_CURRENCY_AMOUNT
|
|
109
|
+
*/
|
|
110
|
+
export declare function NULLABLE_CURRENCY_AMOUNT(currency: CurrencyCode): NullableSchema<number>;
|
|
111
|
+
/**
|
|
112
|
+
* Valid US dollar amount, e.g. `12.35`, or `null`.
|
|
113
|
+
*
|
|
114
|
+
* @example NULLABLE_USD_AMOUNT.validate(null) // null
|
|
115
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_USD_AMOUNT
|
|
116
|
+
*/
|
|
117
|
+
export declare const NULLABLE_USD_AMOUNT: NullableSchema<number>;
|
|
118
|
+
/**
|
|
119
|
+
* Valid pound sterling amount, e.g. `12.35`, or `null`.
|
|
120
|
+
*
|
|
121
|
+
* @example NULLABLE_GBP_AMOUNT.validate(null) // null
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_GBP_AMOUNT
|
|
123
|
+
*/
|
|
124
|
+
export declare const NULLABLE_GBP_AMOUNT: NullableSchema<number>;
|
|
125
|
+
/**
|
|
126
|
+
* Valid euro amount, e.g. `12.35`, or `null`.
|
|
127
|
+
*
|
|
128
|
+
* @example NULLABLE_EUR_AMOUNT.validate(null) // null
|
|
129
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_EUR_AMOUNT
|
|
130
|
+
*/
|
|
131
|
+
export declare const NULLABLE_EUR_AMOUNT: NullableSchema<number>;
|
|
@@ -12,10 +12,27 @@ import { NumberSchema } from "./NumberSchema.js";
|
|
|
12
12
|
* const PRICE = new CurrencyAmountSchema({ currency: "GBP", min: 0 });
|
|
13
13
|
* PRICE.validate("12.345"); // 12.35
|
|
14
14
|
* PRICE.format(12.3); // "£12.30"
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema
|
|
15
16
|
*/
|
|
16
17
|
export class CurrencyAmountSchema extends NumberSchema {
|
|
18
|
+
/**
|
|
19
|
+
* ISO 4217 currency code this schema validates amounts for.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/currency
|
|
22
|
+
*/
|
|
17
23
|
currency;
|
|
24
|
+
/**
|
|
25
|
+
* Currency symbol used when formatting amounts.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/symbol
|
|
28
|
+
*/
|
|
18
29
|
symbol;
|
|
30
|
+
/**
|
|
31
|
+
* Create a new `CurrencyAmountSchema`.
|
|
32
|
+
*
|
|
33
|
+
* @param options Options for the schema (`currency` required, optional `symbol`, `step`, plus base `NumberSchemaOptions`).
|
|
34
|
+
* @throws `string` if `currency` is not a valid ISO 4217 currency code.
|
|
35
|
+
*/
|
|
19
36
|
constructor({ currency, one = "amount", title = "Amount", symbol, step, ...options }) {
|
|
20
37
|
const validCurrency = requireCurrencyCode(currency, CurrencyAmountSchema);
|
|
21
38
|
super({
|
|
@@ -27,18 +44,88 @@ export class CurrencyAmountSchema extends NumberSchema {
|
|
|
27
44
|
this.currency = validCurrency;
|
|
28
45
|
this.symbol = symbol ?? getCurrencySymbol(validCurrency, CurrencyAmountSchema);
|
|
29
46
|
}
|
|
47
|
+
/**
|
|
48
|
+
* Format a validated amount as a currency string for display.
|
|
49
|
+
*
|
|
50
|
+
* - Decimal places are omitted when `step` is `1` or more.
|
|
51
|
+
*
|
|
52
|
+
* @param value The validated amount to format.
|
|
53
|
+
* @returns The amount formatted using the schema's currency and symbol.
|
|
54
|
+
* @example schema.format(12.3) // "£12.30"
|
|
55
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CurrencyAmountSchema/format
|
|
56
|
+
*/
|
|
30
57
|
format(value) {
|
|
31
58
|
const options = this.step >= 1 ? { maximumFractionDigits: 0 } : {}; // Skip showing decimal places if step is 1 or more.
|
|
32
59
|
return formatCurrency(value, this.currency, options, this.format);
|
|
33
60
|
}
|
|
34
61
|
}
|
|
35
|
-
/**
|
|
36
|
-
|
|
62
|
+
/**
|
|
63
|
+
* Create a `CurrencyAmountSchema` for a non-negative monetary amount in a currency.
|
|
64
|
+
*
|
|
65
|
+
* *Factory for `CurrencyAmountSchema`.*
|
|
66
|
+
*
|
|
67
|
+
* @param currency ISO 4217 currency code that determines the step and symbol.
|
|
68
|
+
* @returns A `CurrencyAmountSchema` validating amounts in `currency`.
|
|
69
|
+
* @throws `string` if `currency` is not a valid ISO 4217 currency code.
|
|
70
|
+
* @example CURRENCY_AMOUNT("GBP").validate("12.345") // 12.35
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/CURRENCY_AMOUNT
|
|
72
|
+
*/
|
|
73
|
+
export function CURRENCY_AMOUNT(currency) {
|
|
74
|
+
return new CurrencyAmountSchema({ currency });
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Valid US dollar amount, e.g. `12.35`.
|
|
78
|
+
*
|
|
79
|
+
* @example USD_AMOUNT.validate("12.345") // 12.35
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/USD_AMOUNT
|
|
81
|
+
*/
|
|
37
82
|
export const USD_AMOUNT = new CurrencyAmountSchema({ currency: "USD" });
|
|
83
|
+
/**
|
|
84
|
+
* Valid pound sterling amount, e.g. `12.35`.
|
|
85
|
+
*
|
|
86
|
+
* @example GBP_AMOUNT.validate("12.345") // 12.35
|
|
87
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/GBP_AMOUNT
|
|
88
|
+
*/
|
|
38
89
|
export const GBP_AMOUNT = new CurrencyAmountSchema({ currency: "GBP" });
|
|
90
|
+
/**
|
|
91
|
+
* Valid euro amount, e.g. `12.35`.
|
|
92
|
+
*
|
|
93
|
+
* @example EUR_AMOUNT.validate("12.345") // 12.35
|
|
94
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/EUR_AMOUNT
|
|
95
|
+
*/
|
|
39
96
|
export const EUR_AMOUNT = new CurrencyAmountSchema({ currency: "EUR" });
|
|
40
|
-
/**
|
|
41
|
-
|
|
97
|
+
/**
|
|
98
|
+
* Create a `NullableSchema` for an optional monetary amount in a currency, or `null`.
|
|
99
|
+
*
|
|
100
|
+
* *Factory for `NullableSchema`.*
|
|
101
|
+
*
|
|
102
|
+
* @param currency ISO 4217 currency code that determines the step and symbol.
|
|
103
|
+
* @returns A `NullableSchema` validating amounts in `currency`, or `null`.
|
|
104
|
+
* @throws `string` if `currency` is not a valid ISO 4217 currency code.
|
|
105
|
+
* @example NULLABLE_CURRENCY_AMOUNT("GBP").validate(null) // null
|
|
106
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_CURRENCY_AMOUNT
|
|
107
|
+
*/
|
|
108
|
+
export function NULLABLE_CURRENCY_AMOUNT(currency) {
|
|
109
|
+
return NULLABLE(CURRENCY_AMOUNT(currency));
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Valid US dollar amount, e.g. `12.35`, or `null`.
|
|
113
|
+
*
|
|
114
|
+
* @example NULLABLE_USD_AMOUNT.validate(null) // null
|
|
115
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_USD_AMOUNT
|
|
116
|
+
*/
|
|
42
117
|
export const NULLABLE_USD_AMOUNT = NULLABLE(USD_AMOUNT);
|
|
118
|
+
/**
|
|
119
|
+
* Valid pound sterling amount, e.g. `12.35`, or `null`.
|
|
120
|
+
*
|
|
121
|
+
* @example NULLABLE_GBP_AMOUNT.validate(null) // null
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_GBP_AMOUNT
|
|
123
|
+
*/
|
|
43
124
|
export const NULLABLE_GBP_AMOUNT = NULLABLE(GBP_AMOUNT);
|
|
125
|
+
/**
|
|
126
|
+
* Valid euro amount, e.g. `12.35`, or `null`.
|
|
127
|
+
*
|
|
128
|
+
* @example NULLABLE_EUR_AMOUNT.validate(null) // null
|
|
129
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyAmountSchema/NULLABLE_EUR_AMOUNT
|
|
130
|
+
*/
|
|
44
131
|
export const NULLABLE_EUR_AMOUNT = NULLABLE(EUR_AMOUNT);
|
|
@@ -2,20 +2,72 @@ import type { ImmutableArray } from "../util/array.js";
|
|
|
2
2
|
import { type CurrencyCode } from "../util/currency.js";
|
|
3
3
|
import type { StringSchemaOptions } from "./StringSchema.js";
|
|
4
4
|
import { StringSchema } from "./StringSchema.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Options for `CurrencyCodeSchema`.
|
|
7
|
+
*
|
|
8
|
+
* - `currencies` — set of allowed ISO 4217 currency codes (defaults to all known codes).
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchemaOptions
|
|
11
|
+
*/
|
|
6
12
|
export interface CurrencyCodeSchemaOptions extends Omit<StringSchemaOptions, "input" | "min" | "max" | "match" | "rows"> {
|
|
7
13
|
currencies?: ImmutableArray<CurrencyCode>;
|
|
8
14
|
}
|
|
9
15
|
/**
|
|
10
|
-
*
|
|
16
|
+
* Schema that defines a valid ISO 4217 currency code, e.g. `GBP`.
|
|
17
|
+
*
|
|
18
|
+
* - The input is sanitized to three uppercase letters, then checked against the allowed `currencies`.
|
|
19
|
+
*
|
|
20
|
+
* @example
|
|
21
|
+
* const schema = new CurrencyCodeSchema({});
|
|
22
|
+
* schema.validate("gbp"); // "GBP"
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
|
|
11
24
|
*/
|
|
12
25
|
export declare class CurrencyCodeSchema extends StringSchema {
|
|
26
|
+
/**
|
|
27
|
+
* Set of allowed ISO 4217 currency codes.
|
|
28
|
+
*
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/currencies
|
|
30
|
+
*/
|
|
13
31
|
readonly currencies: ImmutableArray<CurrencyCode>;
|
|
32
|
+
/**
|
|
33
|
+
* Create a new `CurrencyCodeSchema`.
|
|
34
|
+
*
|
|
35
|
+
* @param options Options for the schema (`currencies`, plus base `StringSchemaOptions` except `input`/`min`/`max`/`match`/`rows`).
|
|
36
|
+
* @example new CurrencyCodeSchema({ currencies: ["GBP", "USD"] })
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
|
|
38
|
+
*/
|
|
14
39
|
constructor({ one, title, currencies, ...options }: CurrencyCodeSchemaOptions);
|
|
40
|
+
/**
|
|
41
|
+
* Sanitize an input string down to uppercase `A-Z` letters.
|
|
42
|
+
*
|
|
43
|
+
* @param insaneString The raw input string to sanitize.
|
|
44
|
+
* @returns The sanitized string with all non-`A-Z` characters stripped.
|
|
45
|
+
* @example schema.sanitize(" gb p ") // "GBP"
|
|
46
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/sanitize
|
|
47
|
+
*/
|
|
15
48
|
sanitize(insaneString: string): string;
|
|
49
|
+
/**
|
|
50
|
+
* Validate an unknown input value and return a valid currency code.
|
|
51
|
+
*
|
|
52
|
+
* @param value The value to validate (defaults to this schema's `value`).
|
|
53
|
+
* @returns The validated three-letter uppercase currency code.
|
|
54
|
+
* @throws `string` if the value is not a valid string, or `"Unknown currency code"` if it is not in `currencies`.
|
|
55
|
+
* @example schema.validate("gbp") // "GBP"
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/validate
|
|
57
|
+
*/
|
|
16
58
|
validate(value?: unknown): string;
|
|
17
59
|
}
|
|
18
|
-
/**
|
|
60
|
+
/**
|
|
61
|
+
* Valid currency code, e.g. `GBP` (required because falsy values are invalid).
|
|
62
|
+
*
|
|
63
|
+
* @example CURRENCY_CODE.validate("gbp") // "GBP"
|
|
64
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CURRENCY_CODE
|
|
65
|
+
*/
|
|
19
66
|
export declare const CURRENCY_CODE: CurrencyCodeSchema;
|
|
20
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Valid currency code, e.g. `GBP`, or `null`.
|
|
69
|
+
*
|
|
70
|
+
* @example NULLABLE_CURRENCY_CODE.validate(null) // null
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/NULLABLE_CURRENCY_CODE
|
|
72
|
+
*/
|
|
21
73
|
export declare const NULLABLE_CURRENCY_CODE: import("./NullableSchema.js").NullableSchema<string>;
|
|
@@ -2,10 +2,29 @@ import { CURRENCY_CODES } from "../util/currency.js";
|
|
|
2
2
|
import { NULLABLE } from "./NullableSchema.js";
|
|
3
3
|
import { StringSchema } from "./StringSchema.js";
|
|
4
4
|
/**
|
|
5
|
-
*
|
|
5
|
+
* Schema that defines a valid ISO 4217 currency code, e.g. `GBP`.
|
|
6
|
+
*
|
|
7
|
+
* - The input is sanitized to three uppercase letters, then checked against the allowed `currencies`.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const schema = new CurrencyCodeSchema({});
|
|
11
|
+
* schema.validate("gbp"); // "GBP"
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
|
|
6
13
|
*/
|
|
7
14
|
export class CurrencyCodeSchema extends StringSchema {
|
|
15
|
+
/**
|
|
16
|
+
* Set of allowed ISO 4217 currency codes.
|
|
17
|
+
*
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/currencies
|
|
19
|
+
*/
|
|
8
20
|
currencies;
|
|
21
|
+
/**
|
|
22
|
+
* Create a new `CurrencyCodeSchema`.
|
|
23
|
+
*
|
|
24
|
+
* @param options Options for the schema (`currencies`, plus base `StringSchemaOptions` except `input`/`min`/`max`/`match`/`rows`).
|
|
25
|
+
* @example new CurrencyCodeSchema({ currencies: ["GBP", "USD"] })
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema
|
|
27
|
+
*/
|
|
9
28
|
constructor({ one = "currency", title = "Currency", currencies = CURRENCY_CODES, ...options }) {
|
|
10
29
|
super({
|
|
11
30
|
one,
|
|
@@ -19,10 +38,27 @@ export class CurrencyCodeSchema extends StringSchema {
|
|
|
19
38
|
});
|
|
20
39
|
this.currencies = currencies;
|
|
21
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Sanitize an input string down to uppercase `A-Z` letters.
|
|
43
|
+
*
|
|
44
|
+
* @param insaneString The raw input string to sanitize.
|
|
45
|
+
* @returns The sanitized string with all non-`A-Z` characters stripped.
|
|
46
|
+
* @example schema.sanitize(" gb p ") // "GBP"
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/sanitize
|
|
48
|
+
*/
|
|
22
49
|
sanitize(insaneString) {
|
|
23
50
|
// Strip characters that aren't A-Z (including whitespace).
|
|
24
51
|
return super.sanitize(insaneString).replace(/[^A-Z+]/g, "");
|
|
25
52
|
}
|
|
53
|
+
/**
|
|
54
|
+
* Validate an unknown input value and return a valid currency code.
|
|
55
|
+
*
|
|
56
|
+
* @param value The value to validate (defaults to this schema's `value`).
|
|
57
|
+
* @returns The validated three-letter uppercase currency code.
|
|
58
|
+
* @throws `string` if the value is not a valid string, or `"Unknown currency code"` if it is not in `currencies`.
|
|
59
|
+
* @example schema.validate("gbp") // "GBP"
|
|
60
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CurrencyCodeSchema/validate
|
|
61
|
+
*/
|
|
26
62
|
validate(value) {
|
|
27
63
|
const currency = super.validate(value);
|
|
28
64
|
if (!this.currencies.includes(currency))
|
|
@@ -30,7 +66,17 @@ export class CurrencyCodeSchema extends StringSchema {
|
|
|
30
66
|
return currency;
|
|
31
67
|
}
|
|
32
68
|
}
|
|
33
|
-
/**
|
|
69
|
+
/**
|
|
70
|
+
* Valid currency code, e.g. `GBP` (required because falsy values are invalid).
|
|
71
|
+
*
|
|
72
|
+
* @example CURRENCY_CODE.validate("gbp") // "GBP"
|
|
73
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/CURRENCY_CODE
|
|
74
|
+
*/
|
|
34
75
|
export const CURRENCY_CODE = new CurrencyCodeSchema({});
|
|
35
|
-
/**
|
|
76
|
+
/**
|
|
77
|
+
* Valid currency code, e.g. `GBP`, or `null`.
|
|
78
|
+
*
|
|
79
|
+
* @example NULLABLE_CURRENCY_CODE.validate(null) // null
|
|
80
|
+
* @see https://dhoulb.github.io/shelving/schema/CurrencyCodeSchema/NULLABLE_CURRENCY_CODE
|
|
81
|
+
*/
|
|
36
82
|
export const NULLABLE_CURRENCY_CODE = NULLABLE(CURRENCY_CODE);
|
package/schema/DataSchema.d.ts
CHANGED
|
@@ -4,28 +4,119 @@ import { type Key } from "../util/object.js";
|
|
|
4
4
|
import type { NullableSchema } from "./NullableSchema.js";
|
|
5
5
|
import type { SchemaOptions, Schemas } from "./Schema.js";
|
|
6
6
|
import { Schema } from "./Schema.js";
|
|
7
|
-
/**
|
|
7
|
+
/**
|
|
8
|
+
* Options for `DataSchema`.
|
|
9
|
+
*
|
|
10
|
+
* - `props` — a named schema for each property the data object must have.
|
|
11
|
+
* - `value` — partial default value merged over the per-prop defaults.
|
|
12
|
+
*
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchemaOptions
|
|
14
|
+
*/
|
|
8
15
|
export interface DataSchemaOptions<T extends Data> extends SchemaOptions {
|
|
9
16
|
readonly props: Schemas<T>;
|
|
10
17
|
readonly value?: Partial<T> | undefined;
|
|
11
18
|
}
|
|
12
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Schema that validates a data object against a fixed set of named property schemas.
|
|
21
|
+
*
|
|
22
|
+
* - Each property is validated by its own schema in `props`.
|
|
23
|
+
* - Excess keys are stripped and `undefined` outputs removed (via `validateData()`).
|
|
24
|
+
*
|
|
25
|
+
* @example
|
|
26
|
+
* const schema = new DataSchema({ props: { name: STRING, age: NUMBER } });
|
|
27
|
+
* schema.validate({ name: "Dave", age: 40 }); // { name: "Dave", age: 40 }
|
|
28
|
+
*
|
|
29
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema
|
|
30
|
+
*/
|
|
13
31
|
export declare class DataSchema<T extends Data> extends Schema<unknown> {
|
|
14
32
|
readonly value: T;
|
|
15
33
|
readonly props: Schemas<T>;
|
|
34
|
+
/**
|
|
35
|
+
* Create a new `DataSchema`.
|
|
36
|
+
*
|
|
37
|
+
* @param options Options for the schema, including the `props` schemas and an optional partial `value`.
|
|
38
|
+
*/
|
|
16
39
|
constructor({ one, title, props, value: partialValue, ...options }: DataSchemaOptions<T>);
|
|
40
|
+
/**
|
|
41
|
+
* Validate an unknown value as a data object matching this schema's props.
|
|
42
|
+
*
|
|
43
|
+
* @param unsafeValue The unknown input value to validate (defaults to this schema's `value`).
|
|
44
|
+
* @returns The valid data object with each property validated by its schema.
|
|
45
|
+
* @throws `string` `"Must be object"` if the value is not a data object, or a `"key: message"` line per invalid property.
|
|
46
|
+
* @example schema.validate({ name: "Dave" }) // { name: "Dave" }
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/validate
|
|
48
|
+
*/
|
|
17
49
|
validate(unsafeValue?: unknown): T;
|
|
18
|
-
/**
|
|
50
|
+
/**
|
|
51
|
+
* Make a new `DataSchema` that only uses a defined subset of the current props.
|
|
52
|
+
*
|
|
53
|
+
* @param keys The property keys to keep.
|
|
54
|
+
* @returns A new `DataSchema` containing only the picked props.
|
|
55
|
+
* @example schema.pick("name", "age") // DataSchema<Pick<T, "name" | "age">>
|
|
56
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/pick
|
|
57
|
+
*/
|
|
19
58
|
pick<K extends Key<T>>(...keys: K[]): DataSchema<Pick<T, K>>;
|
|
20
|
-
/**
|
|
59
|
+
/**
|
|
60
|
+
* Make a new `DataSchema` that omits one or more of the current props.
|
|
61
|
+
*
|
|
62
|
+
* @param keys The property keys to remove.
|
|
63
|
+
* @returns A new `DataSchema` without the omitted props.
|
|
64
|
+
* @example schema.omit("age") // DataSchema<Omit<T, "age">>
|
|
65
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/omit
|
|
66
|
+
*/
|
|
21
67
|
omit<K extends Key<T>>(...keys: K[]): DataSchema<Omit<T, K>>;
|
|
68
|
+
/**
|
|
69
|
+
* Format a validated data object as a string for display.
|
|
70
|
+
*
|
|
71
|
+
* @param value The valid data object to format.
|
|
72
|
+
* @returns The data object formatted as a human-readable string.
|
|
73
|
+
* @example schema.format({ name: "Dave" }) // "name: Dave"
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/DataSchema/format
|
|
75
|
+
*/
|
|
22
76
|
format(value: T): string;
|
|
23
77
|
}
|
|
24
|
-
/**
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
78
|
+
/**
|
|
79
|
+
* Create a `DataSchema` for a set of properties.
|
|
80
|
+
*
|
|
81
|
+
* *Factory for `DataSchema`.*
|
|
82
|
+
*
|
|
83
|
+
* @param props A named schema for each property of the data object.
|
|
84
|
+
* @returns A `DataSchema` validating data with the given props.
|
|
85
|
+
* @example DATA({ name: STRING, age: NUMBER }) // DataSchema<{ name: string; age: number }>
|
|
86
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/DATA
|
|
87
|
+
*/
|
|
88
|
+
export declare function DATA<T extends Data>(props: Schemas<T>): DataSchema<T>;
|
|
89
|
+
/**
|
|
90
|
+
* Create a schema for a valid data object with specified properties, or `null`.
|
|
91
|
+
*
|
|
92
|
+
* *Factory for `NullableSchema`.*
|
|
93
|
+
*
|
|
94
|
+
* @param props A named schema for each property of the data object.
|
|
95
|
+
* @returns A `NullableSchema` wrapping a `DataSchema` with the given props.
|
|
96
|
+
* @example NULLABLE_DATA({ name: STRING }) // NullableSchema<{ name: string }>
|
|
97
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/NULLABLE_DATA
|
|
98
|
+
*/
|
|
99
|
+
export declare function NULLABLE_DATA<T extends Data>(props: Schemas<T>): NullableSchema<T>;
|
|
100
|
+
/**
|
|
101
|
+
* Create a `DataSchema` that validates partially, i.e. every property can be its value or `undefined`.
|
|
102
|
+
*
|
|
103
|
+
* *Factory for `DataSchema`.*
|
|
104
|
+
*
|
|
105
|
+
* @param source The props schemas or an existing `DataSchema` to make partial.
|
|
106
|
+
* @returns A `DataSchema` whose every property is optional.
|
|
107
|
+
* @example PARTIAL({ name: STRING, age: NUMBER }) // DataSchema<{ name?: string; age?: number }>
|
|
108
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/PARTIAL
|
|
109
|
+
*/
|
|
29
110
|
export declare function PARTIAL<T extends Data>(source: Schemas<T> | DataSchema<T>): DataSchema<PartialData<T>>;
|
|
30
|
-
/**
|
|
111
|
+
/**
|
|
112
|
+
* Create a `DataSchema` that validates a data item, i.e. it has a string or number `.id` identifier property.
|
|
113
|
+
*
|
|
114
|
+
* *Factory for `DataSchema`.*
|
|
115
|
+
*
|
|
116
|
+
* @param id Schema for the item's `id` identifier property.
|
|
117
|
+
* @param schemas The props schemas or an existing `DataSchema` for the rest of the item.
|
|
118
|
+
* @returns A `DataSchema` validating an item with an `id` property plus the given props.
|
|
119
|
+
* @example ITEM(NUMBER, { name: STRING }) // DataSchema<{ id: number; name: string }>
|
|
120
|
+
* @see https://dhoulb.github.io/shelving/schema/DataSchema/ITEM
|
|
121
|
+
*/
|
|
31
122
|
export declare function ITEM<I extends Identifier, T extends Data>(id: Schema<I>, schemas: Schemas<T> | DataSchema<T>): DataSchema<Item<I, T>>;
|