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/schema/NumberSchema.d.ts
CHANGED
|
@@ -1,7 +1,16 @@
|
|
|
1
1
|
import { formatNumber } from "../util/format.js";
|
|
2
2
|
import type { SchemaOptions } from "./Schema.js";
|
|
3
3
|
import { Schema } from "./Schema.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Allowed options for `NumberSchema`.
|
|
6
|
+
*
|
|
7
|
+
* - `value` — default number value used when the input is `undefined`.
|
|
8
|
+
* - `min`/`max` — minimum and maximum allowed value.
|
|
9
|
+
* - `step` — rounding step the value is snapped to (e.g. `1` for integers).
|
|
10
|
+
* - `format` — function used to render the number for display in downstream UIs.
|
|
11
|
+
*
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchemaOptions
|
|
13
|
+
*/
|
|
5
14
|
export interface NumberSchemaOptions extends SchemaOptions {
|
|
6
15
|
readonly value?: number | undefined;
|
|
7
16
|
readonly min?: number | undefined;
|
|
@@ -10,33 +19,149 @@ export interface NumberSchemaOptions extends SchemaOptions {
|
|
|
10
19
|
/** Format the number for display in downstream UIs. */
|
|
11
20
|
readonly format?: typeof formatNumber | undefined;
|
|
12
21
|
}
|
|
13
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* Schema that defines a valid number.
|
|
24
|
+
*
|
|
25
|
+
* - Values are coerced with `getNumber`; anything that cannot become a number is rejected.
|
|
26
|
+
* - The number is snapped to `step` (if set), then checked against `min` and `max`.
|
|
27
|
+
*
|
|
28
|
+
* @example
|
|
29
|
+
* const schema = new NumberSchema({ min: 0, max: 100, step: 1 });
|
|
30
|
+
* schema.validate("42"); // Returns 42
|
|
31
|
+
*
|
|
32
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema
|
|
33
|
+
*/
|
|
14
34
|
export declare class NumberSchema extends Schema<number> {
|
|
15
35
|
readonly value: number | undefined;
|
|
16
36
|
readonly min: number;
|
|
17
37
|
readonly max: number;
|
|
18
38
|
readonly step: number | undefined;
|
|
39
|
+
/**
|
|
40
|
+
* Create a new `NumberSchema`.
|
|
41
|
+
*
|
|
42
|
+
* @param options Options for the schema.
|
|
43
|
+
* @param options.one Singular noun describing one value, used in error messages (defaults to `"number"`).
|
|
44
|
+
* @param options.title Human-readable title for the schema (defaults to `"Number"`).
|
|
45
|
+
* @param options.min Minimum allowed value (defaults to `Number.NEGATIVE_INFINITY`).
|
|
46
|
+
* @param options.max Maximum allowed value (defaults to `Number.POSITIVE_INFINITY`).
|
|
47
|
+
* @param options.step Rounding step the value is snapped to.
|
|
48
|
+
* @param options.format Function used to render the number for display (defaults to `formatNumber`).
|
|
49
|
+
* @param options.value Default number value used when the input is `undefined`.
|
|
50
|
+
*/
|
|
19
51
|
constructor({ one, title, min, max, step, format, value, ...options }: NumberSchemaOptions);
|
|
52
|
+
/**
|
|
53
|
+
* Validate an unknown value and coerce it to a number.
|
|
54
|
+
*
|
|
55
|
+
* @param value Value to validate (defaults to this schema's `value`).
|
|
56
|
+
* @returns The coerced (and optionally stepped) number value.
|
|
57
|
+
* @throws `string` `"Required"` if the value is empty or missing, `` `Must be ${one}` `` if it cannot be coerced to a number, `` `Minimum ${min}` `` if below `min`, or `` `Maximum ${max}` `` if above `max`.
|
|
58
|
+
*
|
|
59
|
+
* @example
|
|
60
|
+
* NUMBER.validate("42"); // Returns 42
|
|
61
|
+
*
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/validate
|
|
63
|
+
*/
|
|
20
64
|
validate(value?: unknown): number;
|
|
65
|
+
/**
|
|
66
|
+
* Format a number value as a human-readable string for display.
|
|
67
|
+
*
|
|
68
|
+
* @param value Number value to format.
|
|
69
|
+
* @returns The formatted string.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* NUMBER.format(2048.5); // Returns "2,048.5"
|
|
73
|
+
*
|
|
74
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/format
|
|
75
|
+
*/
|
|
21
76
|
format(value: number): string;
|
|
22
77
|
}
|
|
23
|
-
/**
|
|
78
|
+
/**
|
|
79
|
+
* Valid number, e.g. `2048.12345` or `0` zero and a default value of zero.
|
|
80
|
+
*
|
|
81
|
+
* @example
|
|
82
|
+
* NUMBER.validate("42"); // Returns 42
|
|
83
|
+
*
|
|
84
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NUMBER
|
|
85
|
+
*/
|
|
24
86
|
export declare const NUMBER: NumberSchema;
|
|
25
|
-
/**
|
|
87
|
+
/**
|
|
88
|
+
* Valid optional number, e.g. `2048.12345` or `0` zero, or `null`.
|
|
89
|
+
*
|
|
90
|
+
* @example
|
|
91
|
+
* NULLABLE_NUMBER.validate(null); // Returns null
|
|
92
|
+
*
|
|
93
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_NUMBER
|
|
94
|
+
*/
|
|
26
95
|
export declare const NULLABLE_NUMBER: import("./NullableSchema.js").NullableSchema<number>;
|
|
27
|
-
/**
|
|
96
|
+
/**
|
|
97
|
+
* Valid integer number, e.g. `2048` or `0` zero.
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* INTEGER.validate("42.7"); // Returns 43 (rounded to step)
|
|
101
|
+
*
|
|
102
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/INTEGER
|
|
103
|
+
*/
|
|
28
104
|
export declare const INTEGER: NumberSchema;
|
|
29
|
-
/**
|
|
105
|
+
/**
|
|
106
|
+
* Valid positive integer number, e.g. `1,2,3` (not including zero).
|
|
107
|
+
*
|
|
108
|
+
* @example
|
|
109
|
+
* POSITIVE_INTEGER.validate(0); // Throws "Required"
|
|
110
|
+
*
|
|
111
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/POSITIVE_INTEGER
|
|
112
|
+
*/
|
|
30
113
|
export declare const POSITIVE_INTEGER: NumberSchema;
|
|
31
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Valid non-negative integer number, e.g. `0,1,2,3` (including zero).
|
|
116
|
+
*
|
|
117
|
+
* @example
|
|
118
|
+
* NON_NEGATIVE_INTEGER.validate(0); // Returns 0
|
|
119
|
+
*
|
|
120
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_NEGATIVE_INTEGER
|
|
121
|
+
*/
|
|
32
122
|
export declare const NON_NEGATIVE_INTEGER: NumberSchema;
|
|
33
|
-
/**
|
|
123
|
+
/**
|
|
124
|
+
* Valid negative integer number, e.g. `-1,-2,-3` (not including zero).
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* NEGATIVE_INTEGER.validate(-3); // Returns -3
|
|
128
|
+
*
|
|
129
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NEGATIVE_INTEGER
|
|
130
|
+
*/
|
|
34
131
|
export declare const NEGATIVE_INTEGER: NumberSchema;
|
|
35
|
-
/**
|
|
132
|
+
/**
|
|
133
|
+
* Valid non-positive integer number, e.g. `0,-1,-2,-3` (including zero).
|
|
134
|
+
*
|
|
135
|
+
* @example
|
|
136
|
+
* NON_POSITIVE_INTEGER.validate(0); // Returns 0
|
|
137
|
+
*
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_POSITIVE_INTEGER
|
|
139
|
+
*/
|
|
36
140
|
export declare const NON_POSITIVE_INTEGER: NumberSchema;
|
|
37
|
-
/**
|
|
141
|
+
/**
|
|
142
|
+
* Valid optional integer number, e.g. `2048` or `0` zero, or `null`.
|
|
143
|
+
*
|
|
144
|
+
* @example
|
|
145
|
+
* NULLABLE_INTEGER.validate(null); // Returns null
|
|
146
|
+
*
|
|
147
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_INTEGER
|
|
148
|
+
*/
|
|
38
149
|
export declare const NULLABLE_INTEGER: import("./NullableSchema.js").NullableSchema<number>;
|
|
39
|
-
/**
|
|
150
|
+
/**
|
|
151
|
+
* Valid Unix timestamp (including milliseconds).
|
|
152
|
+
*
|
|
153
|
+
* @example
|
|
154
|
+
* TIMESTAMP.validate(1700000000000); // Returns 1700000000000
|
|
155
|
+
*
|
|
156
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/TIMESTAMP
|
|
157
|
+
*/
|
|
40
158
|
export declare const TIMESTAMP: NumberSchema;
|
|
41
|
-
/**
|
|
159
|
+
/**
|
|
160
|
+
* Valid optional Unix timestamp (including milliseconds), or `null`.
|
|
161
|
+
*
|
|
162
|
+
* @example
|
|
163
|
+
* NULLABLE_TIMESTAMP.validate(null); // Returns null
|
|
164
|
+
*
|
|
165
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_TIMESTAMP
|
|
166
|
+
*/
|
|
42
167
|
export declare const NULLABLE_TIMESTAMP: import("./NullableSchema.js").NullableSchema<number>;
|
package/schema/NumberSchema.js
CHANGED
|
@@ -2,17 +2,52 @@ import { formatNumber } from "../util/format.js";
|
|
|
2
2
|
import { getNumber, roundStep } from "../util/number.js";
|
|
3
3
|
import { NULLABLE } from "./NullableSchema.js";
|
|
4
4
|
import { Schema } from "./Schema.js";
|
|
5
|
-
/**
|
|
5
|
+
/**
|
|
6
|
+
* Schema that defines a valid number.
|
|
7
|
+
*
|
|
8
|
+
* - Values are coerced with `getNumber`; anything that cannot become a number is rejected.
|
|
9
|
+
* - The number is snapped to `step` (if set), then checked against `min` and `max`.
|
|
10
|
+
*
|
|
11
|
+
* @example
|
|
12
|
+
* const schema = new NumberSchema({ min: 0, max: 100, step: 1 });
|
|
13
|
+
* schema.validate("42"); // Returns 42
|
|
14
|
+
*
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema
|
|
16
|
+
*/
|
|
6
17
|
export class NumberSchema extends Schema {
|
|
7
18
|
min;
|
|
8
19
|
max;
|
|
9
20
|
step;
|
|
21
|
+
/**
|
|
22
|
+
* Create a new `NumberSchema`.
|
|
23
|
+
*
|
|
24
|
+
* @param options Options for the schema.
|
|
25
|
+
* @param options.one Singular noun describing one value, used in error messages (defaults to `"number"`).
|
|
26
|
+
* @param options.title Human-readable title for the schema (defaults to `"Number"`).
|
|
27
|
+
* @param options.min Minimum allowed value (defaults to `Number.NEGATIVE_INFINITY`).
|
|
28
|
+
* @param options.max Maximum allowed value (defaults to `Number.POSITIVE_INFINITY`).
|
|
29
|
+
* @param options.step Rounding step the value is snapped to.
|
|
30
|
+
* @param options.format Function used to render the number for display (defaults to `formatNumber`).
|
|
31
|
+
* @param options.value Default number value used when the input is `undefined`.
|
|
32
|
+
*/
|
|
10
33
|
constructor({ one = "number", title = "Number", min = Number.NEGATIVE_INFINITY, max = Number.POSITIVE_INFINITY, step, format = formatNumber, value, ...options }) {
|
|
11
34
|
super({ one, title, value, ...options });
|
|
12
35
|
this.min = min;
|
|
13
36
|
this.max = max;
|
|
14
37
|
this.step = step;
|
|
15
38
|
}
|
|
39
|
+
/**
|
|
40
|
+
* Validate an unknown value and coerce it to a number.
|
|
41
|
+
*
|
|
42
|
+
* @param value Value to validate (defaults to this schema's `value`).
|
|
43
|
+
* @returns The coerced (and optionally stepped) number value.
|
|
44
|
+
* @throws `string` `"Required"` if the value is empty or missing, `` `Must be ${one}` `` if it cannot be coerced to a number, `` `Minimum ${min}` `` if below `min`, or `` `Maximum ${max}` `` if above `max`.
|
|
45
|
+
*
|
|
46
|
+
* @example
|
|
47
|
+
* NUMBER.validate("42"); // Returns 42
|
|
48
|
+
*
|
|
49
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/validate
|
|
50
|
+
*/
|
|
16
51
|
validate(value = this.value) {
|
|
17
52
|
const number = getNumber(value);
|
|
18
53
|
if (typeof number !== "number")
|
|
@@ -24,32 +59,113 @@ export class NumberSchema extends Schema {
|
|
|
24
59
|
throw `Maximum ${this.format(this.max)}`;
|
|
25
60
|
return stepped;
|
|
26
61
|
}
|
|
62
|
+
/**
|
|
63
|
+
* Format a number value as a human-readable string for display.
|
|
64
|
+
*
|
|
65
|
+
* @param value Number value to format.
|
|
66
|
+
* @returns The formatted string.
|
|
67
|
+
*
|
|
68
|
+
* @example
|
|
69
|
+
* NUMBER.format(2048.5); // Returns "2,048.5"
|
|
70
|
+
*
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NumberSchema/format
|
|
72
|
+
*/
|
|
27
73
|
format(value) {
|
|
28
74
|
return formatNumber(value);
|
|
29
75
|
}
|
|
30
76
|
}
|
|
31
|
-
/**
|
|
77
|
+
/**
|
|
78
|
+
* Valid number, e.g. `2048.12345` or `0` zero and a default value of zero.
|
|
79
|
+
*
|
|
80
|
+
* @example
|
|
81
|
+
* NUMBER.validate("42"); // Returns 42
|
|
82
|
+
*
|
|
83
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NUMBER
|
|
84
|
+
*/
|
|
32
85
|
export const NUMBER = new NumberSchema({ title: "Number" });
|
|
33
|
-
/**
|
|
86
|
+
/**
|
|
87
|
+
* Valid optional number, e.g. `2048.12345` or `0` zero, or `null`.
|
|
88
|
+
*
|
|
89
|
+
* @example
|
|
90
|
+
* NULLABLE_NUMBER.validate(null); // Returns null
|
|
91
|
+
*
|
|
92
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_NUMBER
|
|
93
|
+
*/
|
|
34
94
|
export const NULLABLE_NUMBER = NULLABLE(NUMBER);
|
|
35
|
-
/**
|
|
95
|
+
/**
|
|
96
|
+
* Valid integer number, e.g. `2048` or `0` zero.
|
|
97
|
+
*
|
|
98
|
+
* @example
|
|
99
|
+
* INTEGER.validate("42.7"); // Returns 43 (rounded to step)
|
|
100
|
+
*
|
|
101
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/INTEGER
|
|
102
|
+
*/
|
|
36
103
|
export const INTEGER = new NumberSchema({ step: 1, min: Number.MIN_SAFE_INTEGER, max: Number.MAX_SAFE_INTEGER });
|
|
37
|
-
/**
|
|
104
|
+
/**
|
|
105
|
+
* Valid positive integer number, e.g. `1,2,3` (not including zero).
|
|
106
|
+
*
|
|
107
|
+
* @example
|
|
108
|
+
* POSITIVE_INTEGER.validate(0); // Throws "Required"
|
|
109
|
+
*
|
|
110
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/POSITIVE_INTEGER
|
|
111
|
+
*/
|
|
38
112
|
export const POSITIVE_INTEGER = new NumberSchema({ step: 1, min: 1, max: Number.MAX_SAFE_INTEGER });
|
|
39
|
-
/**
|
|
113
|
+
/**
|
|
114
|
+
* Valid non-negative integer number, e.g. `0,1,2,3` (including zero).
|
|
115
|
+
*
|
|
116
|
+
* @example
|
|
117
|
+
* NON_NEGATIVE_INTEGER.validate(0); // Returns 0
|
|
118
|
+
*
|
|
119
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_NEGATIVE_INTEGER
|
|
120
|
+
*/
|
|
40
121
|
export const NON_NEGATIVE_INTEGER = new NumberSchema({ step: 1, min: 0, max: Number.MAX_SAFE_INTEGER });
|
|
41
|
-
/**
|
|
122
|
+
/**
|
|
123
|
+
* Valid negative integer number, e.g. `-1,-2,-3` (not including zero).
|
|
124
|
+
*
|
|
125
|
+
* @example
|
|
126
|
+
* NEGATIVE_INTEGER.validate(-3); // Returns -3
|
|
127
|
+
*
|
|
128
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NEGATIVE_INTEGER
|
|
129
|
+
*/
|
|
42
130
|
export const NEGATIVE_INTEGER = new NumberSchema({ step: 1, min: Number.MIN_SAFE_INTEGER, max: -1 });
|
|
43
|
-
/**
|
|
131
|
+
/**
|
|
132
|
+
* Valid non-positive integer number, e.g. `0,-1,-2,-3` (including zero).
|
|
133
|
+
*
|
|
134
|
+
* @example
|
|
135
|
+
* NON_POSITIVE_INTEGER.validate(0); // Returns 0
|
|
136
|
+
*
|
|
137
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NON_POSITIVE_INTEGER
|
|
138
|
+
*/
|
|
44
139
|
export const NON_POSITIVE_INTEGER = new NumberSchema({ step: 1, min: Number.MIN_SAFE_INTEGER, max: 0 });
|
|
45
|
-
/**
|
|
140
|
+
/**
|
|
141
|
+
* Valid optional integer number, e.g. `2048` or `0` zero, or `null`.
|
|
142
|
+
*
|
|
143
|
+
* @example
|
|
144
|
+
* NULLABLE_INTEGER.validate(null); // Returns null
|
|
145
|
+
*
|
|
146
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_INTEGER
|
|
147
|
+
*/
|
|
46
148
|
export const NULLABLE_INTEGER = NULLABLE(INTEGER);
|
|
47
|
-
/**
|
|
149
|
+
/**
|
|
150
|
+
* Valid Unix timestamp (including milliseconds).
|
|
151
|
+
*
|
|
152
|
+
* @example
|
|
153
|
+
* TIMESTAMP.validate(1700000000000); // Returns 1700000000000
|
|
154
|
+
*
|
|
155
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/TIMESTAMP
|
|
156
|
+
*/
|
|
48
157
|
export const TIMESTAMP = new NumberSchema({
|
|
49
158
|
title: "Timestamp",
|
|
50
159
|
step: 1,
|
|
51
160
|
min: Number.MIN_SAFE_INTEGER,
|
|
52
161
|
max: Number.MAX_SAFE_INTEGER,
|
|
53
162
|
});
|
|
54
|
-
/**
|
|
163
|
+
/**
|
|
164
|
+
* Valid optional Unix timestamp (including milliseconds), or `null`.
|
|
165
|
+
*
|
|
166
|
+
* @example
|
|
167
|
+
* NULLABLE_TIMESTAMP.validate(null); // Returns null
|
|
168
|
+
*
|
|
169
|
+
* @see https://dhoulb.github.io/shelving/schema/NumberSchema/NULLABLE_TIMESTAMP
|
|
170
|
+
*/
|
|
55
171
|
export const NULLABLE_TIMESTAMP = NULLABLE_INTEGER;
|
|
@@ -1,20 +1,77 @@
|
|
|
1
1
|
import type { Schema } from "./Schema.js";
|
|
2
2
|
import { ThroughSchema, type ThroughSchemaOptions } from "./ThroughSchema.js";
|
|
3
|
+
/**
|
|
4
|
+
* Allowed options for `OptionalSchema`.
|
|
5
|
+
*
|
|
6
|
+
* - `value` — default value is always `undefined` (the default is only used when a value is `undefined`, so otherwise `undefined` could never be returned).
|
|
7
|
+
*
|
|
8
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchemaOptions
|
|
9
|
+
*/
|
|
3
10
|
export interface OptionalSchemaOptions<T> extends ThroughSchemaOptions<T | undefined> {
|
|
4
11
|
/** Default value for an `OptionalSchema` can always `undefined` */
|
|
5
12
|
readonly value?: undefined;
|
|
6
13
|
}
|
|
7
14
|
/**
|
|
8
|
-
*
|
|
9
|
-
*
|
|
15
|
+
* Schema that wraps a source schema and additionally allows `undefined`.
|
|
16
|
+
*
|
|
17
|
+
* - `undefined` input validates to `undefined` instead of being passed to the source schema.
|
|
10
18
|
* - When used with `validateData()` this means the prop can be silently skipped.
|
|
19
|
+
* - Any other value is delegated to the source schema for validation.
|
|
20
|
+
*
|
|
21
|
+
* @example
|
|
22
|
+
* const schema = new OptionalSchema({ source: STRING });
|
|
23
|
+
* schema.validate(undefined); // Returns undefined
|
|
24
|
+
* schema.validate("abc"); // Returns "abc"
|
|
25
|
+
*
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema
|
|
11
27
|
*/
|
|
12
28
|
export declare class OptionalSchema<T> extends ThroughSchema<T | undefined> {
|
|
13
29
|
/** Default value for an `OptionalSchema` is always `undefined` (default value is only used when a value is `undefined`, so otherwise `undefined` could never be returned as a value). */
|
|
14
30
|
readonly value: undefined;
|
|
31
|
+
/**
|
|
32
|
+
* Create a new `OptionalSchema`.
|
|
33
|
+
*
|
|
34
|
+
* @param options Options for the schema, including the `source` schema to wrap.
|
|
35
|
+
*/
|
|
15
36
|
constructor(options: OptionalSchemaOptions<T>);
|
|
37
|
+
/**
|
|
38
|
+
* Validate an unknown value, returning `undefined` for `undefined` input or delegating to the source schema.
|
|
39
|
+
*
|
|
40
|
+
* @param unsafeValue Value to validate.
|
|
41
|
+
* @returns The valid value of type `T`, or `undefined` when the input is `undefined`.
|
|
42
|
+
* @throws `string` error message if the source schema rejects the value.
|
|
43
|
+
*
|
|
44
|
+
* @example
|
|
45
|
+
* OPTIONAL(STRING).validate(undefined); // Returns undefined
|
|
46
|
+
*
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/validate
|
|
48
|
+
*/
|
|
16
49
|
validate(unsafeValue: unknown): T | undefined;
|
|
50
|
+
/**
|
|
51
|
+
* Format an optional value as a human-readable string for display.
|
|
52
|
+
*
|
|
53
|
+
* @param value Value to format, or `undefined`.
|
|
54
|
+
* @returns The formatted string, or `` `No ${one}` `` when the value is `undefined`.
|
|
55
|
+
*
|
|
56
|
+
* @example
|
|
57
|
+
* OPTIONAL(STRING).format(undefined); // Returns "No string"
|
|
58
|
+
*
|
|
59
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/format
|
|
60
|
+
*/
|
|
17
61
|
format(value: T | undefined): string;
|
|
18
62
|
}
|
|
19
|
-
/**
|
|
20
|
-
|
|
63
|
+
/**
|
|
64
|
+
* Create an `OptionalSchema` that wraps a source schema and also allows `undefined`.
|
|
65
|
+
*
|
|
66
|
+
* *Factory for `OptionalSchema`.*
|
|
67
|
+
*
|
|
68
|
+
* @param source Source schema to wrap.
|
|
69
|
+
* @returns An `OptionalSchema` wrapping `source`.
|
|
70
|
+
*
|
|
71
|
+
* @example
|
|
72
|
+
* const schema = OPTIONAL(STRING);
|
|
73
|
+
* schema.validate(undefined); // Returns undefined
|
|
74
|
+
*
|
|
75
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OPTIONAL
|
|
76
|
+
*/
|
|
77
|
+
export declare function OPTIONAL<T>(source: Schema<T>): OptionalSchema<T>;
|
package/schema/OptionalSchema.js
CHANGED
|
@@ -1,21 +1,73 @@
|
|
|
1
1
|
import { ThroughSchema } from "./ThroughSchema.js";
|
|
2
2
|
/**
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
* Schema that wraps a source schema and additionally allows `undefined`.
|
|
4
|
+
*
|
|
5
|
+
* - `undefined` input validates to `undefined` instead of being passed to the source schema.
|
|
5
6
|
* - When used with `validateData()` this means the prop can be silently skipped.
|
|
7
|
+
* - Any other value is delegated to the source schema for validation.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* const schema = new OptionalSchema({ source: STRING });
|
|
11
|
+
* schema.validate(undefined); // Returns undefined
|
|
12
|
+
* schema.validate("abc"); // Returns "abc"
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema
|
|
6
15
|
*/
|
|
7
16
|
export class OptionalSchema extends ThroughSchema {
|
|
17
|
+
/**
|
|
18
|
+
* Create a new `OptionalSchema`.
|
|
19
|
+
*
|
|
20
|
+
* @param options Options for the schema, including the `source` schema to wrap.
|
|
21
|
+
*/
|
|
8
22
|
constructor(options) {
|
|
9
23
|
super({ ...options, value: undefined });
|
|
10
24
|
}
|
|
25
|
+
/**
|
|
26
|
+
* Validate an unknown value, returning `undefined` for `undefined` input or delegating to the source schema.
|
|
27
|
+
*
|
|
28
|
+
* @param unsafeValue Value to validate.
|
|
29
|
+
* @returns The valid value of type `T`, or `undefined` when the input is `undefined`.
|
|
30
|
+
* @throws `string` error message if the source schema rejects the value.
|
|
31
|
+
*
|
|
32
|
+
* @example
|
|
33
|
+
* OPTIONAL(STRING).validate(undefined); // Returns undefined
|
|
34
|
+
*
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/validate
|
|
36
|
+
*/
|
|
11
37
|
validate(unsafeValue) {
|
|
12
38
|
if (unsafeValue === undefined)
|
|
13
39
|
return undefined;
|
|
14
40
|
return super.validate(unsafeValue);
|
|
15
41
|
}
|
|
42
|
+
/**
|
|
43
|
+
* Format an optional value as a human-readable string for display.
|
|
44
|
+
*
|
|
45
|
+
* @param value Value to format, or `undefined`.
|
|
46
|
+
* @returns The formatted string, or `` `No ${one}` `` when the value is `undefined`.
|
|
47
|
+
*
|
|
48
|
+
* @example
|
|
49
|
+
* OPTIONAL(STRING).format(undefined); // Returns "No string"
|
|
50
|
+
*
|
|
51
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OptionalSchema/format
|
|
52
|
+
*/
|
|
16
53
|
format(value) {
|
|
17
54
|
return value === undefined ? `No ${this.source.one}` : super.format(value);
|
|
18
55
|
}
|
|
19
56
|
}
|
|
20
|
-
/**
|
|
21
|
-
|
|
57
|
+
/**
|
|
58
|
+
* Create an `OptionalSchema` that wraps a source schema and also allows `undefined`.
|
|
59
|
+
*
|
|
60
|
+
* *Factory for `OptionalSchema`.*
|
|
61
|
+
*
|
|
62
|
+
* @param source Source schema to wrap.
|
|
63
|
+
* @returns An `OptionalSchema` wrapping `source`.
|
|
64
|
+
*
|
|
65
|
+
* @example
|
|
66
|
+
* const schema = OPTIONAL(STRING);
|
|
67
|
+
* schema.validate(undefined); // Returns undefined
|
|
68
|
+
*
|
|
69
|
+
* @see https://dhoulb.github.io/shelving/schema/OptionalSchema/OPTIONAL
|
|
70
|
+
*/
|
|
71
|
+
export function OPTIONAL(source) {
|
|
72
|
+
return new OptionalSchema({ source });
|
|
73
|
+
}
|
|
@@ -1,9 +1,45 @@
|
|
|
1
1
|
import { StringSchema, type StringSchemaOptions } from "./StringSchema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Options for a `PasswordSchema`.
|
|
4
|
+
*
|
|
5
|
+
* @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchemaOptions
|
|
6
|
+
*/
|
|
2
7
|
export interface PasswordSchemaOptions extends Omit<StringSchemaOptions, "input"> {
|
|
3
8
|
}
|
|
9
|
+
/**
|
|
10
|
+
* Schema that defines a valid password string.
|
|
11
|
+
*
|
|
12
|
+
* - Forces the `<input />` hint to `"password"` for downstream UIs.
|
|
13
|
+
* - Never formats the value for display (`format()` always returns `""`).
|
|
14
|
+
*
|
|
15
|
+
* @example new PasswordSchema({}).validate("hunter2"); // Returns "hunter2"
|
|
16
|
+
* @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema
|
|
17
|
+
*/
|
|
4
18
|
export declare class PasswordSchema extends StringSchema {
|
|
19
|
+
/**
|
|
20
|
+
* Create a new `PasswordSchema`.
|
|
21
|
+
*
|
|
22
|
+
* @param options Options for the schema (inherits `StringSchema` options except `input`, which is fixed to `"password"`).
|
|
23
|
+
* @param options.one Singular noun describing one value, used in error messages (defaults to `"password"`).
|
|
24
|
+
* @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Password"`).
|
|
25
|
+
* @param options.min Minimum allowed character length (defaults to `6`).
|
|
26
|
+
*/
|
|
5
27
|
constructor({ one, title, min, ...options }?: PasswordSchemaOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Format a password value for display (always returns `""`).
|
|
30
|
+
*
|
|
31
|
+
* - Passwords are never shown, so this deliberately yields an empty string.
|
|
32
|
+
*
|
|
33
|
+
* @returns An empty string.
|
|
34
|
+
* @example new PasswordSchema({}).format("hunter2"); // Returns ""
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema/format
|
|
36
|
+
*/
|
|
6
37
|
format(): string;
|
|
7
38
|
}
|
|
8
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Password string.
|
|
41
|
+
*
|
|
42
|
+
* @example PASSWORD.validate("hunter2"); // Returns "hunter2"
|
|
43
|
+
* @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PASSWORD
|
|
44
|
+
*/
|
|
9
45
|
export declare const PASSWORD: StringSchema;
|
package/schema/PasswordSchema.js
CHANGED
|
@@ -1,11 +1,42 @@
|
|
|
1
1
|
import { StringSchema } from "./StringSchema.js";
|
|
2
|
+
/**
|
|
3
|
+
* Schema that defines a valid password string.
|
|
4
|
+
*
|
|
5
|
+
* - Forces the `<input />` hint to `"password"` for downstream UIs.
|
|
6
|
+
* - Never formats the value for display (`format()` always returns `""`).
|
|
7
|
+
*
|
|
8
|
+
* @example new PasswordSchema({}).validate("hunter2"); // Returns "hunter2"
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema
|
|
10
|
+
*/
|
|
2
11
|
export class PasswordSchema extends StringSchema {
|
|
12
|
+
/**
|
|
13
|
+
* Create a new `PasswordSchema`.
|
|
14
|
+
*
|
|
15
|
+
* @param options Options for the schema (inherits `StringSchema` options except `input`, which is fixed to `"password"`).
|
|
16
|
+
* @param options.one Singular noun describing one value, used in error messages (defaults to `"password"`).
|
|
17
|
+
* @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Password"`).
|
|
18
|
+
* @param options.min Minimum allowed character length (defaults to `6`).
|
|
19
|
+
*/
|
|
3
20
|
constructor({ one = "password", title = "Password", min = 6, ...options } = {}) {
|
|
4
21
|
super({ one, title, min, ...options, input: "password" });
|
|
5
22
|
}
|
|
23
|
+
/**
|
|
24
|
+
* Format a password value for display (always returns `""`).
|
|
25
|
+
*
|
|
26
|
+
* - Passwords are never shown, so this deliberately yields an empty string.
|
|
27
|
+
*
|
|
28
|
+
* @returns An empty string.
|
|
29
|
+
* @example new PasswordSchema({}).format("hunter2"); // Returns ""
|
|
30
|
+
* @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PasswordSchema/format
|
|
31
|
+
*/
|
|
6
32
|
format() {
|
|
7
33
|
return ""; // Never format a password for display.
|
|
8
34
|
}
|
|
9
35
|
}
|
|
10
|
-
/**
|
|
36
|
+
/**
|
|
37
|
+
* Password string.
|
|
38
|
+
*
|
|
39
|
+
* @example PASSWORD.validate("hunter2"); // Returns "hunter2"
|
|
40
|
+
* @see https://dhoulb.github.io/shelving/schema/PasswordSchema/PASSWORD
|
|
41
|
+
*/
|
|
11
42
|
export const PASSWORD = new StringSchema({});
|
package/schema/PhoneSchema.d.ts
CHANGED
|
@@ -1,18 +1,54 @@
|
|
|
1
1
|
import type { StringSchemaOptions } from "./StringSchema.js";
|
|
2
2
|
import { StringSchema } from "./StringSchema.js";
|
|
3
|
-
/**
|
|
3
|
+
/**
|
|
4
|
+
* Options for a `PhoneSchema`.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PhoneSchemaOptions
|
|
7
|
+
*/
|
|
4
8
|
export interface PhoneSchemaOptions extends Omit<StringSchemaOptions, "input" | "min" | "max" | "match" | "rows"> {
|
|
5
9
|
}
|
|
6
10
|
/**
|
|
7
|
-
*
|
|
11
|
+
* Schema that defines a valid phone number.
|
|
12
|
+
*
|
|
8
13
|
* - Multiple string formats are automatically converted to E.164 format (starting with `+` plus).
|
|
9
14
|
* - Falsy values are converted to `""` empty string.
|
|
15
|
+
*
|
|
16
|
+
* @example PHONE.validate("+44 1234 567890"); // Returns "+441234567890"
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PhoneSchema
|
|
10
18
|
*/
|
|
11
19
|
export declare class PhoneSchema extends StringSchema {
|
|
20
|
+
/**
|
|
21
|
+
* Create a new `PhoneSchema`.
|
|
22
|
+
*
|
|
23
|
+
* @param options Options for the schema (inherits `StringSchema` options except `input`, `min`, `max`, `match`, and `rows`, which are fixed for phone numbers).
|
|
24
|
+
* @param options.one Singular noun describing one value, used in error messages (defaults to `"phone number"`).
|
|
25
|
+
* @param options.title Title of the schema, e.g. for a corresponding field (defaults to `"Phone"`).
|
|
26
|
+
*/
|
|
12
27
|
constructor({ one, title, ...options }: PhoneSchemaOptions);
|
|
28
|
+
/**
|
|
29
|
+
* Sanitize the string into a valid E.164 phone number.
|
|
30
|
+
*
|
|
31
|
+
* - Strips every character that isn't `0`–`9` or `+` plus (including whitespace).
|
|
32
|
+
* - Keeps a `+` plus only when it is the first character.
|
|
33
|
+
*
|
|
34
|
+
* @param insaneString String to sanitize.
|
|
35
|
+
* @returns The sanitized phone number.
|
|
36
|
+
* @example PHONE.sanitize("+44 (1234) 567890"); // Returns "+441234567890"
|
|
37
|
+
* @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PhoneSchema/sanitize
|
|
38
|
+
*/
|
|
13
39
|
sanitize(insaneString: string): string;
|
|
14
40
|
}
|
|
15
|
-
/**
|
|
41
|
+
/**
|
|
42
|
+
* Valid phone number, e.g. `+441234567890`
|
|
43
|
+
*
|
|
44
|
+
* @example PHONE.validate("+441234567890"); // Returns "+441234567890"
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/schema/PhoneSchema/PHONE
|
|
46
|
+
*/
|
|
16
47
|
export declare const PHONE: PhoneSchema;
|
|
17
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* Valid phone number, e.g. `+441234567890`, or `null`
|
|
50
|
+
*
|
|
51
|
+
* @example NULLABLE_PHONE.validate(null); // Returns null
|
|
52
|
+
* @see https://dhoulb.github.io/shelving/schema/PhoneSchema/NULLABLE_PHONE
|
|
53
|
+
*/
|
|
18
54
|
export declare const NULLABLE_PHONE: import("./NullableSchema.js").NullableSchema<string>;
|