shelving 1.236.0 → 1.236.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/api/cache/APICache.d.ts +69 -6
- package/api/cache/APICache.js +61 -5
- package/api/cache/EndpointCache.d.ts +75 -7
- package/api/cache/EndpointCache.js +75 -7
- package/api/endpoint/Endpoint.d.ts +141 -25
- package/api/endpoint/Endpoint.js +55 -9
- package/api/endpoint/util.d.ts +28 -6
- package/api/provider/APIProvider.d.ts +58 -14
- package/api/provider/APIProvider.js +24 -2
- package/api/provider/CachedAPIProvider.d.ts +58 -5
- package/api/provider/CachedAPIProvider.js +58 -6
- package/api/provider/ClientAPIProvider.d.ts +80 -4
- package/api/provider/ClientAPIProvider.js +75 -4
- package/api/provider/DebugAPIProvider.d.ts +40 -1
- package/api/provider/DebugAPIProvider.js +40 -1
- package/api/provider/JSONAPIProvider.d.ts +18 -2
- package/api/provider/JSONAPIProvider.js +18 -2
- package/api/provider/LoggingAPIProvider.d.ts +25 -2
- package/api/provider/LoggingAPIProvider.js +25 -2
- package/api/provider/MockAPIProvider.d.ts +72 -1
- package/api/provider/MockAPIProvider.js +60 -4
- package/api/provider/MockEndpointAPIProvider.d.ts +9 -0
- package/api/provider/MockEndpointAPIProvider.js +9 -0
- package/api/provider/ThroughAPIProvider.d.ts +67 -1
- package/api/provider/ThroughAPIProvider.js +67 -1
- package/api/provider/ValidationAPIProvider.d.ts +32 -1
- package/api/provider/ValidationAPIProvider.js +32 -1
- package/api/provider/XMLAPIProvider.d.ts +18 -2
- package/api/provider/XMLAPIProvider.js +18 -2
- package/api/store/EndpointStore.d.ts +24 -1
- package/api/store/EndpointStore.js +24 -1
- package/bun/BunPostgreSQLProvider.d.ts +38 -0
- package/bun/BunPostgreSQLProvider.js +38 -2
- package/cloudflare/CloudflareD1Provider.d.ts +29 -2
- package/cloudflare/CloudflareD1Provider.js +29 -2
- package/cloudflare/CloudflareKVProvider.d.ts +115 -0
- package/cloudflare/CloudflareKVProvider.js +115 -0
- package/cloudflare/types.d.ts +41 -7
- package/db/cache/CollectionCache.d.ts +83 -7
- package/db/cache/CollectionCache.js +83 -7
- package/db/cache/DBCache.d.ts +93 -8
- package/db/cache/DBCache.js +85 -7
- package/db/collection/Collection.d.ts +103 -15
- package/db/collection/Collection.js +58 -6
- package/db/migrate/DBMigrator.d.ts +29 -1
- package/db/migrate/DBMigrator.js +20 -1
- package/db/migrate/PostgreSQLMigrator.d.ts +8 -1
- package/db/migrate/PostgreSQLMigrator.js +8 -1
- package/db/migrate/SQLMigrator.d.ts +63 -4
- package/db/migrate/SQLMigrator.js +51 -1
- package/db/migrate/SQLiteMigrator.d.ts +8 -1
- package/db/migrate/SQLiteMigrator.js +8 -1
- package/db/provider/CacheDBProvider.d.ts +135 -1
- package/db/provider/CacheDBProvider.js +135 -1
- package/db/provider/ChangesDBProvider.d.ts +84 -3
- package/db/provider/ChangesDBProvider.js +77 -2
- package/db/provider/DBProvider.d.ts +148 -1
- package/db/provider/DBProvider.js +51 -1
- package/db/provider/DebugDBProvider.d.ts +118 -1
- package/db/provider/DebugDBProvider.js +118 -1
- package/db/provider/MemoryDBProvider.d.ts +262 -7
- package/db/provider/MemoryDBProvider.js +262 -7
- package/db/provider/MockDBProvider.d.ts +113 -2
- package/db/provider/MockDBProvider.js +106 -1
- package/db/provider/PostgreSQLProvider.d.ts +34 -2
- package/db/provider/PostgreSQLProvider.js +34 -4
- package/db/provider/SQLProvider.d.ts +250 -14
- package/db/provider/SQLProvider.js +237 -13
- package/db/provider/SQLiteProvider.d.ts +41 -1
- package/db/provider/SQLiteProvider.js +41 -4
- package/db/provider/ThroughDBProvider.d.ts +156 -1
- package/db/provider/ThroughDBProvider.js +156 -1
- package/db/provider/ValidationDBProvider.d.ts +120 -1
- package/db/provider/ValidationDBProvider.js +120 -1
- package/db/store/ItemStore.d.ts +38 -2
- package/db/store/ItemStore.js +38 -2
- package/db/store/QueryStore.d.ts +64 -6
- package/db/store/QueryStore.js +64 -6
- package/error/BaseError.d.ts +27 -2
- package/error/BaseError.js +14 -0
- package/error/Errors.d.ts +12 -1
- package/error/Errors.js +12 -1
- package/error/NetworkError.d.ts +13 -1
- package/error/NetworkError.js +13 -1
- package/error/RequestError.d.ts +90 -7
- package/error/RequestError.js +90 -7
- package/error/RequiredError.d.ts +11 -1
- package/error/RequiredError.js +11 -1
- package/error/ResponseError.d.ts +19 -2
- package/error/ResponseError.js +19 -2
- package/error/UnexpectedError.d.ts +14 -1
- package/error/UnexpectedError.js +14 -1
- package/error/UnimplementedError.d.ts +13 -1
- package/error/UnimplementedError.js +13 -1
- package/error/ValueError.d.ts +14 -1
- package/error/ValueError.js +14 -1
- package/extract/DirectoryExtractor.d.ts +35 -1
- package/extract/DirectoryExtractor.js +30 -0
- package/extract/Extractor.d.ts +21 -2
- package/extract/Extractor.js +7 -1
- package/extract/FileExtractor.d.ts +18 -0
- package/extract/FileExtractor.js +18 -0
- package/extract/IndexExtractor.d.ts +36 -1
- package/extract/IndexExtractor.js +31 -0
- package/extract/MarkupExtractor.d.ts +15 -0
- package/extract/MarkupExtractor.js +15 -0
- package/extract/MergingExtractor.d.ts +36 -1
- package/extract/MergingExtractor.js +31 -0
- package/extract/ModuleExtractor.d.ts +25 -1
- package/extract/ModuleExtractor.js +20 -0
- package/extract/PackageExtractor.d.ts +36 -1
- package/extract/PackageExtractor.js +31 -0
- package/extract/ThroughExtractor.d.ts +22 -1
- package/extract/ThroughExtractor.js +22 -1
- package/extract/TypescriptExtractor.d.ts +21 -0
- package/extract/TypescriptExtractor.js +28 -3
- package/firestore/client/FirestoreClientProvider.d.ts +129 -4
- package/firestore/client/FirestoreClientProvider.js +129 -4
- package/firestore/lite/FirestoreLiteProvider.d.ts +128 -3
- package/firestore/lite/FirestoreLiteProvider.js +128 -3
- package/firestore/server/FirestoreServerProvider.d.ts +129 -2
- package/firestore/server/FirestoreServerProvider.js +129 -2
- package/markup/MarkupParser.d.ts +57 -10
- package/markup/MarkupParser.js +50 -9
- package/markup/MarkupRule.d.ts +34 -1
- package/markup/Parser.d.ts +18 -0
- package/markup/Parser.js +11 -0
- package/markup/rule/blockquote.d.ts +3 -0
- package/markup/rule/blockquote.js +3 -0
- package/markup/rule/code.d.ts +3 -0
- package/markup/rule/code.js +3 -0
- package/markup/rule/fenced.d.ts +3 -0
- package/markup/rule/fenced.js +3 -0
- package/markup/rule/heading.d.ts +3 -0
- package/markup/rule/heading.js +3 -0
- package/markup/rule/index.d.ts +16 -3
- package/markup/rule/index.js +16 -3
- package/markup/rule/inline.d.ts +4 -1
- package/markup/rule/inline.js +5 -2
- package/markup/rule/linebreak.d.ts +3 -0
- package/markup/rule/linebreak.js +3 -0
- package/markup/rule/link.d.ts +6 -0
- package/markup/rule/link.js +6 -0
- package/markup/rule/ordered.d.ts +3 -0
- package/markup/rule/ordered.js +3 -0
- package/markup/rule/paragraph.d.ts +3 -0
- package/markup/rule/paragraph.js +3 -0
- package/markup/rule/separator.d.ts +3 -0
- package/markup/rule/separator.js +3 -0
- package/markup/rule/table.d.ts +3 -0
- package/markup/rule/table.js +3 -0
- package/markup/rule/unordered.d.ts +3 -0
- package/markup/rule/unordered.js +3 -0
- package/markup/util/regexp.d.ts +80 -3
- package/markup/util/regexp.js +44 -0
- package/package.json +1 -1
- package/react/createAPIContext.d.ts +15 -0
- package/react/createAPIContext.js +10 -0
- package/react/createDBContext.d.ts +15 -0
- package/react/createDBContext.js +10 -0
- package/react/useInstance.d.ts +11 -0
- package/react/useInstance.js +11 -0
- package/react/useLazy.d.ts +11 -0
- package/react/useMap.d.ts +14 -1
- package/react/useMap.js +14 -1
- package/react/useReduce.d.ts +12 -0
- package/react/useSequence.d.ts +10 -0
- package/react/useSequence.js +10 -0
- package/react/useStore.d.ts +16 -1
- package/schema/AddressSchema.d.ts +41 -4
- package/schema/AddressSchema.js +36 -3
- package/schema/ArraySchema.d.ts +48 -6
- package/schema/ArraySchema.js +40 -5
- package/schema/BooleanSchema.d.ts +59 -3
- package/schema/BooleanSchema.js +51 -2
- package/schema/ChoiceSchema.d.ts +61 -7
- package/schema/ChoiceSchema.js +44 -2
- package/schema/ColorSchema.d.ts +41 -8
- package/schema/ColorSchema.js +36 -7
- package/schema/CountrySchema.d.ts +44 -4
- package/schema/CountrySchema.js +39 -3
- package/schema/CurrencyAmountSchema.d.ts +104 -8
- package/schema/CurrencyAmountSchema.js +91 -4
- package/schema/CurrencyCodeSchema.d.ts +56 -4
- package/schema/CurrencyCodeSchema.js +49 -3
- package/schema/DataSchema.d.ts +101 -10
- package/schema/DataSchema.js +87 -8
- package/schema/DateSchema.d.ts +73 -4
- package/schema/DateSchema.js +57 -2
- package/schema/DateTimeSchema.d.ts +40 -3
- package/schema/DateTimeSchema.js +40 -3
- package/schema/DictionarySchema.d.ts +54 -4
- package/schema/DictionarySchema.js +47 -3
- package/schema/EmailSchema.d.ts +34 -3
- package/schema/EmailSchema.js +34 -3
- package/schema/EntitySchema.d.ts +45 -4
- package/schema/EntitySchema.js +38 -3
- package/schema/FileSchema.d.ts +45 -4
- package/schema/FileSchema.js +39 -3
- package/schema/KeySchema.d.ts +32 -3
- package/schema/KeySchema.js +32 -3
- package/schema/NullableSchema.d.ts +64 -4
- package/schema/NullableSchema.js +59 -3
- package/schema/NumberSchema.d.ts +137 -12
- package/schema/NumberSchema.js +127 -11
- package/schema/OptionalSchema.d.ts +61 -4
- package/schema/OptionalSchema.js +56 -4
- package/schema/PasswordSchema.d.ts +37 -1
- package/schema/PasswordSchema.js +32 -1
- package/schema/PhoneSchema.d.ts +40 -4
- package/schema/PhoneSchema.js +35 -3
- package/schema/RequiredSchema.d.ts +39 -3
- package/schema/RequiredSchema.js +41 -3
- package/schema/Schema.d.ts +67 -7
- package/schema/Schema.js +42 -6
- package/schema/SlugSchema.d.ts +37 -5
- package/schema/SlugSchema.js +37 -5
- package/schema/StringSchema.d.ts +124 -19
- package/schema/StringSchema.js +107 -17
- package/schema/ThroughSchema.d.ts +35 -2
- package/schema/ThroughSchema.js +30 -1
- package/schema/TimeSchema.d.ts +43 -3
- package/schema/TimeSchema.js +43 -3
- package/schema/URISchema.d.ts +67 -6
- package/schema/URISchema.js +60 -6
- package/schema/URLSchema.d.ts +69 -6
- package/schema/URLSchema.js +61 -6
- package/schema/UUIDSchema.d.ts +37 -4
- package/schema/UUIDSchema.js +37 -4
- package/sequence/DeferredSequence.d.ts +49 -3
- package/sequence/DeferredSequence.js +39 -3
- package/sequence/InspectSequence.d.ts +59 -5
- package/sequence/InspectSequence.js +59 -5
- package/sequence/LazySequence.d.ts +30 -2
- package/sequence/LazySequence.js +30 -2
- package/sequence/Sequence.d.ts +11 -0
- package/sequence/Sequence.js +10 -0
- package/sequence/ThroughSequence.d.ts +15 -0
- package/sequence/ThroughSequence.js +15 -0
- package/store/ArrayStore.d.ts +74 -11
- package/store/ArrayStore.js +74 -11
- package/store/BooleanStore.d.ts +19 -2
- package/store/BooleanStore.js +19 -2
- package/store/BusyStore.d.ts +13 -1
- package/store/BusyStore.js +13 -1
- package/store/DataStore.d.ts +118 -15
- package/store/DataStore.js +118 -15
- package/store/DictionaryStore.d.ts +66 -8
- package/store/DictionaryStore.js +66 -8
- package/store/FetchStore.d.ts +43 -6
- package/store/FetchStore.js +36 -5
- package/store/PathStore.d.ts +44 -5
- package/store/PathStore.js +44 -5
- package/store/PayloadFetchStore.d.ts +16 -1
- package/store/PayloadFetchStore.js +9 -1
- package/store/Store.d.ts +85 -16
- package/store/Store.js +52 -10
- package/store/URLStore.d.ts +173 -15
- package/store/URLStore.js +173 -15
- package/test/basics.d.ts +70 -0
- package/test/basics.js +60 -0
- package/test/people.d.ts +45 -0
- package/test/people.js +35 -0
- package/test/util.d.ts +30 -3
- package/test/util.js +30 -3
- package/ui/app/App.d.ts +14 -2
- package/ui/app/App.js +9 -2
- package/ui/app/App.tsx +14 -2
- package/ui/block/Address.d.ts +45 -3
- package/ui/block/Address.js +30 -3
- package/ui/block/Address.tsx +46 -3
- package/ui/block/Block.d.ts +23 -1
- package/ui/block/Block.js +13 -1
- package/ui/block/Block.tsx +23 -1
- package/ui/block/Blockquote.d.ts +21 -0
- package/ui/block/Blockquote.js +16 -0
- package/ui/block/Blockquote.tsx +22 -0
- package/ui/block/Caption.d.ts +21 -1
- package/ui/block/Caption.js +16 -1
- package/ui/block/Caption.tsx +22 -1
- package/ui/block/Card.d.ts +6 -0
- package/ui/block/Card.js +1 -0
- package/ui/block/Card.tsx +6 -0
- package/ui/block/Definitions.d.ts +18 -0
- package/ui/block/Definitions.js +13 -0
- package/ui/block/Definitions.tsx +19 -0
- package/ui/block/Divider.d.ts +21 -0
- package/ui/block/Divider.js +16 -0
- package/ui/block/Divider.tsx +22 -0
- package/ui/block/Heading.d.ts +20 -1
- package/ui/block/Heading.js +15 -0
- package/ui/block/Heading.tsx +21 -1
- package/ui/block/Image.d.ts +23 -0
- package/ui/block/Image.js +18 -0
- package/ui/block/Image.tsx +24 -0
- package/ui/block/Label.d.ts +18 -3
- package/ui/block/Label.js +13 -3
- package/ui/block/Label.tsx +18 -3
- package/ui/block/List.d.ts +30 -0
- package/ui/block/List.js +25 -0
- package/ui/block/List.tsx +32 -0
- package/ui/block/Panel.d.ts +13 -1
- package/ui/block/Panel.js +3 -0
- package/ui/block/Panel.tsx +13 -1
- package/ui/block/Paragraph.d.ts +23 -0
- package/ui/block/Paragraph.js +18 -0
- package/ui/block/Paragraph.tsx +24 -0
- package/ui/block/Preformatted.d.ts +20 -0
- package/ui/block/Preformatted.js +15 -0
- package/ui/block/Preformatted.tsx +21 -0
- package/ui/block/Prose.d.ts +14 -1
- package/ui/block/Prose.js +9 -1
- package/ui/block/Prose.tsx +14 -1
- package/ui/block/Section.d.ts +69 -6
- package/ui/block/Section.js +59 -6
- package/ui/block/Section.tsx +70 -6
- package/ui/block/Subheading.d.ts +20 -1
- package/ui/block/Subheading.js +15 -0
- package/ui/block/Subheading.tsx +21 -1
- package/ui/block/Table.d.ts +20 -0
- package/ui/block/Table.js +15 -0
- package/ui/block/Table.tsx +21 -0
- package/ui/block/Title.d.ts +20 -1
- package/ui/block/Title.js +15 -0
- package/ui/block/Title.tsx +21 -1
- package/ui/block/Video.d.ts +50 -3
- package/ui/block/Video.js +30 -3
- package/ui/block/Video.tsx +50 -3
- package/ui/dialog/Dialog.d.ts +28 -1
- package/ui/dialog/Dialog.js +18 -1
- package/ui/dialog/Dialog.tsx +28 -1
- package/ui/dialog/Dialogs.d.ts +53 -6
- package/ui/dialog/Dialogs.js +43 -6
- package/ui/dialog/Dialogs.tsx +53 -6
- package/ui/dialog/Modal.d.ts +13 -0
- package/ui/dialog/Modal.js +8 -0
- package/ui/dialog/Modal.tsx +13 -0
- package/ui/docs/DocumentationButtons.d.ts +5 -1
- package/ui/docs/DocumentationButtons.tsx +5 -1
- package/ui/docs/DocumentationCard.d.ts +6 -1
- package/ui/docs/DocumentationCard.js +6 -1
- package/ui/docs/DocumentationCard.tsx +6 -1
- package/ui/docs/DocumentationKind.d.ts +13 -1
- package/ui/docs/DocumentationKind.js +8 -0
- package/ui/docs/DocumentationKind.tsx +13 -1
- package/ui/docs/DocumentationPage.d.ts +6 -1
- package/ui/docs/DocumentationPage.js +6 -1
- package/ui/docs/DocumentationPage.tsx +6 -1
- package/ui/docs/DocumentationSignatures.d.ts +10 -1
- package/ui/docs/DocumentationSignatures.js +5 -0
- package/ui/docs/DocumentationSignatures.tsx +10 -1
- package/ui/form/ArrayInput.d.ts +15 -0
- package/ui/form/ArrayInput.tsx +15 -0
- package/ui/form/ArrayRadioInputs.d.ts +10 -0
- package/ui/form/ArrayRadioInputs.js +5 -0
- package/ui/form/ArrayRadioInputs.tsx +10 -0
- package/ui/form/Button.d.ts +19 -3
- package/ui/form/Button.js +14 -2
- package/ui/form/Button.tsx +19 -3
- package/ui/form/ButtonInput.d.ts +14 -1
- package/ui/form/ButtonInput.js +9 -1
- package/ui/form/ButtonInput.tsx +14 -1
- package/ui/form/ButtonInputPopover.d.ts +10 -0
- package/ui/form/ButtonInputPopover.js +5 -0
- package/ui/form/ButtonInputPopover.tsx +10 -0
- package/ui/form/ButtonPopover.d.ts +11 -1
- package/ui/form/ButtonPopover.js +6 -1
- package/ui/form/ButtonPopover.tsx +11 -1
- package/ui/form/CheckboxInput.d.ts +14 -1
- package/ui/form/CheckboxInput.js +9 -1
- package/ui/form/CheckboxInput.tsx +14 -1
- package/ui/form/ChoiceRadioInputs.d.ts +10 -0
- package/ui/form/ChoiceRadioInputs.tsx +10 -0
- package/ui/form/Clickable.d.ts +45 -5
- package/ui/form/Clickable.js +30 -3
- package/ui/form/Clickable.tsx +45 -5
- package/ui/form/DataInput.d.ts +14 -0
- package/ui/form/DataInput.tsx +14 -0
- package/ui/form/DateInput.d.ts +14 -0
- package/ui/form/DateInput.js +9 -0
- package/ui/form/DateInput.tsx +14 -0
- package/ui/form/DictionaryInput.d.ts +15 -0
- package/ui/form/DictionaryInput.tsx +15 -0
- package/ui/form/Field.d.ts +5 -0
- package/ui/form/Field.tsx +5 -0
- package/ui/form/FileInput.d.ts +14 -0
- package/ui/form/FileInput.js +9 -0
- package/ui/form/FileInput.tsx +14 -0
- package/ui/form/Form.d.ts +55 -6
- package/ui/form/Form.js +35 -3
- package/ui/form/Form.tsx +55 -6
- package/ui/form/FormContext.d.ts +24 -3
- package/ui/form/FormContext.js +5 -1
- package/ui/form/FormContext.tsx +24 -3
- package/ui/form/FormFields.d.ts +15 -2
- package/ui/form/FormFields.js +15 -2
- package/ui/form/FormFields.tsx +15 -2
- package/ui/form/FormFooter.d.ts +13 -3
- package/ui/form/FormFooter.js +8 -3
- package/ui/form/FormFooter.tsx +13 -3
- package/ui/form/FormInput.d.ts +21 -2
- package/ui/form/FormInput.js +16 -2
- package/ui/form/FormInput.tsx +21 -2
- package/ui/form/FormMessage.d.ts +8 -1
- package/ui/form/FormMessage.js +8 -1
- package/ui/form/FormMessage.tsx +8 -2
- package/ui/form/FormNotice.d.ts +8 -1
- package/ui/form/FormNotice.js +8 -1
- package/ui/form/FormNotice.tsx +8 -2
- package/ui/form/FormNotify.d.ts +8 -1
- package/ui/form/FormNotify.js +8 -1
- package/ui/form/FormNotify.tsx +8 -2
- package/ui/form/FormStore.d.ts +50 -6
- package/ui/form/FormStore.js +50 -6
- package/ui/form/FormStore.tsx +50 -6
- package/ui/form/Input.d.ts +65 -1
- package/ui/form/Input.js +60 -0
- package/ui/form/Input.tsx +77 -1
- package/ui/form/NumberInput.d.ts +14 -0
- package/ui/form/NumberInput.js +9 -0
- package/ui/form/NumberInput.tsx +14 -0
- package/ui/form/OutputInput.d.ts +13 -1
- package/ui/form/OutputInput.js +8 -1
- package/ui/form/OutputInput.tsx +13 -1
- package/ui/form/Popover.d.ts +18 -2
- package/ui/form/Popover.js +8 -2
- package/ui/form/Popover.tsx +18 -2
- package/ui/form/Progress.d.ts +26 -2
- package/ui/form/Progress.js +16 -2
- package/ui/form/Progress.tsx +26 -2
- package/ui/form/QueryInput.d.ts +14 -5
- package/ui/form/QueryInput.js +9 -5
- package/ui/form/QueryInput.tsx +14 -5
- package/ui/form/RadioInput.d.ts +14 -1
- package/ui/form/RadioInput.js +9 -1
- package/ui/form/RadioInput.tsx +14 -1
- package/ui/form/SchemaInput.d.ts +138 -7
- package/ui/form/SchemaInput.js +79 -4
- package/ui/form/SchemaInput.tsx +138 -7
- package/ui/form/SelectInput.d.ts +14 -0
- package/ui/form/SelectInput.tsx +14 -0
- package/ui/form/SubmitButton.d.ts +14 -1
- package/ui/form/SubmitButton.js +9 -1
- package/ui/form/SubmitButton.tsx +14 -1
- package/ui/form/TextInput.d.ts +15 -0
- package/ui/form/TextInput.js +10 -0
- package/ui/form/TextInput.tsx +15 -0
- package/ui/inline/Code.d.ts +29 -0
- package/ui/inline/Code.js +24 -0
- package/ui/inline/Code.tsx +31 -0
- package/ui/inline/Deleted.d.ts +23 -0
- package/ui/inline/Deleted.js +18 -0
- package/ui/inline/Deleted.tsx +24 -0
- package/ui/inline/Emphasis.d.ts +23 -0
- package/ui/inline/Emphasis.js +18 -0
- package/ui/inline/Emphasis.tsx +24 -0
- package/ui/inline/Inserted.d.ts +23 -0
- package/ui/inline/Inserted.js +18 -0
- package/ui/inline/Inserted.tsx +24 -0
- package/ui/inline/Link.d.ts +23 -0
- package/ui/inline/Link.js +18 -0
- package/ui/inline/Link.tsx +24 -0
- package/ui/inline/Mark.d.ts +23 -0
- package/ui/inline/Mark.js +18 -0
- package/ui/inline/Mark.tsx +24 -0
- package/ui/inline/Small.d.ts +23 -0
- package/ui/inline/Small.js +18 -0
- package/ui/inline/Small.tsx +24 -0
- package/ui/inline/Strong.d.ts +23 -0
- package/ui/inline/Strong.js +18 -0
- package/ui/inline/Strong.tsx +24 -0
- package/ui/inline/Subscript.d.ts +23 -0
- package/ui/inline/Subscript.js +18 -0
- package/ui/inline/Subscript.tsx +24 -0
- package/ui/inline/Superscript.d.ts +23 -0
- package/ui/inline/Superscript.js +18 -0
- package/ui/inline/Superscript.tsx +24 -0
- package/ui/inline/When.d.ts +42 -3
- package/ui/inline/When.js +27 -3
- package/ui/inline/When.tsx +42 -3
- package/ui/layout/CenteredLayout.d.ts +12 -1
- package/ui/layout/CenteredLayout.js +7 -1
- package/ui/layout/CenteredLayout.tsx +12 -1
- package/ui/layout/Layout.d.ts +12 -3
- package/ui/layout/Layout.js +12 -3
- package/ui/layout/Layout.ts +12 -3
- package/ui/layout/SidebarLayout.d.ts +12 -0
- package/ui/layout/SidebarLayout.js +7 -0
- package/ui/layout/SidebarLayout.tsx +12 -0
- package/ui/menu/Menu.d.ts +22 -0
- package/ui/menu/Menu.js +12 -0
- package/ui/menu/Menu.tsx +22 -0
- package/ui/misc/Catcher.d.ts +77 -5
- package/ui/misc/Catcher.js +47 -5
- package/ui/misc/Catcher.tsx +77 -5
- package/ui/misc/Loading.d.ts +20 -0
- package/ui/misc/Loading.js +15 -0
- package/ui/misc/Loading.tsx +20 -0
- package/ui/misc/Mapper.d.ts +13 -1
- package/ui/misc/Mapper.js +4 -0
- package/ui/misc/Mapper.tsx +13 -1
- package/ui/misc/Markup.d.ts +9 -1
- package/ui/misc/Markup.js +4 -0
- package/ui/misc/Markup.tsx +9 -1
- package/ui/misc/MetaContext.d.ts +24 -7
- package/ui/misc/MetaContext.js +19 -6
- package/ui/misc/MetaContext.tsx +24 -7
- package/ui/misc/StatusIcon.d.ts +16 -1
- package/ui/misc/StatusIcon.js +11 -1
- package/ui/misc/StatusIcon.tsx +16 -1
- package/ui/misc/Tag.d.ts +21 -0
- package/ui/misc/Tag.js +11 -0
- package/ui/misc/Tag.tsx +21 -0
- package/ui/notice/Message.d.ts +27 -1
- package/ui/notice/Message.js +22 -1
- package/ui/notice/Message.tsx +27 -1
- package/ui/notice/Notice.d.ts +24 -0
- package/ui/notice/Notice.js +19 -0
- package/ui/notice/Notice.tsx +24 -0
- package/ui/notice/NoticeStore.d.ts +30 -2
- package/ui/notice/NoticeStore.js +30 -2
- package/ui/notice/NoticeStore.ts +30 -2
- package/ui/notice/Notices.d.ts +11 -1
- package/ui/notice/Notices.js +6 -1
- package/ui/notice/Notices.tsx +11 -1
- package/ui/notice/NoticesStore.d.ts +23 -3
- package/ui/notice/NoticesStore.js +23 -3
- package/ui/notice/NoticesStore.ts +23 -3
- package/ui/page/HTML.d.ts +13 -2
- package/ui/page/HTML.js +8 -2
- package/ui/page/HTML.tsx +13 -2
- package/ui/page/Head.d.ts +5 -1
- package/ui/page/Head.js +5 -1
- package/ui/page/Head.tsx +5 -1
- package/ui/page/Page.d.ts +12 -1
- package/ui/page/Page.js +7 -1
- package/ui/page/Page.tsx +12 -1
- package/ui/router/Navigation.d.ts +11 -0
- package/ui/router/Navigation.js +6 -0
- package/ui/router/Navigation.tsx +11 -0
- package/ui/router/NavigationContext.d.ts +14 -2
- package/ui/router/NavigationContext.js +14 -2
- package/ui/router/NavigationContext.tsx +14 -2
- package/ui/router/NavigationStore.d.ts +29 -1
- package/ui/router/NavigationStore.js +29 -1
- package/ui/router/NavigationStore.tsx +29 -1
- package/ui/router/Router.d.ts +12 -1
- package/ui/router/Router.js +7 -1
- package/ui/router/Router.tsx +12 -1
- package/ui/router/Routes.d.ts +14 -4
- package/ui/router/Routes.tsx +14 -4
- package/ui/style/Color.d.ts +15 -2
- package/ui/style/Color.js +5 -0
- package/ui/style/Color.tsx +15 -2
- package/ui/style/Flex.d.ts +41 -4
- package/ui/style/Flex.js +26 -3
- package/ui/style/Flex.tsx +41 -4
- package/ui/style/Gap.d.ts +18 -3
- package/ui/style/Gap.js +8 -1
- package/ui/style/Gap.tsx +18 -3
- package/ui/style/Padding.d.ts +18 -3
- package/ui/style/Padding.js +8 -1
- package/ui/style/Padding.tsx +18 -3
- package/ui/style/Scroll.d.ts +36 -1
- package/ui/style/Scroll.js +26 -1
- package/ui/style/Scroll.tsx +37 -1
- package/ui/style/Space.d.ts +18 -3
- package/ui/style/Space.js +8 -1
- package/ui/style/Space.tsx +18 -3
- package/ui/style/Status.d.ts +23 -7
- package/ui/style/Status.js +13 -5
- package/ui/style/Status.tsx +23 -7
- package/ui/style/Tint.d.ts +7 -1
- package/ui/style/Tint.js +7 -1
- package/ui/style/Tint.tsx +7 -1
- package/ui/style/Typography.d.ts +38 -6
- package/ui/style/Typography.js +8 -0
- package/ui/style/Typography.tsx +38 -6
- package/ui/style/Width.d.ts +18 -1
- package/ui/style/Width.js +8 -0
- package/ui/style/Width.tsx +18 -1
- package/ui/transition/CollapseTransition.d.ts +13 -0
- package/ui/transition/CollapseTransition.js +8 -0
- package/ui/transition/CollapseTransition.tsx +13 -0
- package/ui/transition/FadeTransition.d.ts +13 -0
- package/ui/transition/FadeTransition.js +8 -0
- package/ui/transition/FadeTransition.tsx +13 -0
- package/ui/transition/HorizontalTransition.d.ts +13 -0
- package/ui/transition/HorizontalTransition.js +8 -0
- package/ui/transition/HorizontalTransition.tsx +13 -0
- package/ui/transition/Transition.d.ts +12 -4
- package/ui/transition/Transition.js +7 -3
- package/ui/transition/Transition.tsx +12 -4
- package/ui/transition/VerticalTransition.d.ts +13 -0
- package/ui/transition/VerticalTransition.js +8 -0
- package/ui/transition/VerticalTransition.tsx +13 -0
- package/ui/transition/util.d.ts +16 -6
- package/ui/transition/util.js +7 -1
- package/ui/transition/util.tsx +16 -6
- package/ui/tree/TreeApp.d.ts +11 -0
- package/ui/tree/TreeApp.js +6 -0
- package/ui/tree/TreeApp.tsx +11 -0
- package/ui/tree/TreeBreadcrumbs.d.ts +11 -0
- package/ui/tree/TreeBreadcrumbs.js +6 -0
- package/ui/tree/TreeBreadcrumbs.tsx +11 -0
- package/ui/tree/TreeButton.d.ts +9 -1
- package/ui/tree/TreeButton.js +4 -0
- package/ui/tree/TreeButton.tsx +9 -1
- package/ui/tree/TreeCard.d.ts +8 -1
- package/ui/tree/TreeCard.js +8 -1
- package/ui/tree/TreeCard.tsx +8 -1
- package/ui/tree/TreeCards.d.ts +16 -1
- package/ui/tree/TreeCards.js +11 -1
- package/ui/tree/TreeCards.tsx +16 -1
- package/ui/tree/TreeContext.d.ts +18 -1
- package/ui/tree/TreeContext.js +18 -1
- package/ui/tree/TreeContext.tsx +18 -1
- package/ui/tree/TreeMenu.d.ts +28 -1
- package/ui/tree/TreeMenu.js +23 -1
- package/ui/tree/TreeMenu.tsx +28 -1
- package/ui/tree/TreePage.d.ts +6 -0
- package/ui/tree/TreePage.js +6 -0
- package/ui/tree/TreePage.tsx +6 -0
- package/ui/tree/TreeRouter.d.ts +17 -2
- package/ui/tree/TreeRouter.js +12 -2
- package/ui/tree/TreeRouter.tsx +17 -2
- package/ui/tree/TreeSidebar.d.ts +11 -0
- package/ui/tree/TreeSidebar.js +6 -0
- package/ui/tree/TreeSidebar.tsx +11 -0
- package/ui/util/context.d.ts +13 -1
- package/ui/util/context.ts +13 -1
- package/ui/util/css.d.ts +17 -4
- package/ui/util/css.js +5 -1
- package/ui/util/css.ts +17 -4
- package/ui/util/event.d.ts +9 -1
- package/ui/util/event.js +9 -1
- package/ui/util/event.ts +9 -1
- package/ui/util/focus.d.ts +24 -5
- package/ui/util/focus.js +24 -5
- package/ui/util/focus.ts +24 -5
- package/ui/util/meta.d.ts +113 -21
- package/ui/util/meta.js +73 -13
- package/ui/util/meta.ts +113 -21
- package/ui/util/notice.d.ts +98 -10
- package/ui/util/notice.js +93 -9
- package/ui/util/notice.ts +98 -10
- package/ui/util/props.d.ts +10 -2
- package/ui/util/props.ts +10 -2
- package/ui/util/refresh.d.ts +10 -1
- package/ui/util/refresh.js +10 -1
- package/ui/util/refresh.ts +10 -1
- package/ui/util/scroll.d.ts +20 -4
- package/ui/util/scroll.js +20 -4
- package/ui/util/scroll.ts +20 -4
- package/ui/util/state.d.ts +19 -5
- package/ui/util/state.js +19 -5
- package/ui/util/state.ts +19 -5
- package/util/ansi.d.ts +118 -0
- package/util/ansi.js +116 -0
- package/util/array.d.ts +349 -33
- package/util/array.js +284 -27
- package/util/async.d.ts +87 -9
- package/util/async.js +80 -8
- package/util/base64.d.ts +56 -6
- package/util/base64.js +56 -6
- package/util/boolean.d.ts +75 -10
- package/util/boolean.js +75 -10
- package/util/buffer.d.ts +26 -3
- package/util/buffer.js +21 -3
- package/util/bytes.d.ts +42 -4
- package/util/bytes.js +32 -2
- package/util/class.d.ts +59 -8
- package/util/class.js +44 -5
- package/util/color.d.ts +131 -13
- package/util/color.js +126 -12
- package/util/constants.d.ts +132 -19
- package/util/constants.js +132 -19
- package/util/crypto.d.ts +17 -1
- package/util/crypto.js +17 -1
- package/util/currency.d.ts +38 -4
- package/util/currency.js +33 -3
- package/util/data.d.ts +139 -24
- package/util/data.js +39 -5
- package/util/date.d.ts +152 -18
- package/util/date.js +147 -17
- package/util/debug.d.ts +112 -11
- package/util/debug.js +114 -11
- package/util/dictionary.d.ts +205 -24
- package/util/dictionary.js +162 -17
- package/util/diff.d.ts +22 -3
- package/util/diff.js +11 -1
- package/util/dispose.d.ts +74 -2
- package/util/dispose.js +74 -2
- package/util/duration.d.ts +278 -16
- package/util/duration.js +267 -15
- package/util/element.d.ts +59 -6
- package/util/element.js +32 -3
- package/util/entity.d.ts +39 -6
- package/util/entity.js +5 -1
- package/util/entry.d.ts +56 -9
- package/util/entry.js +32 -4
- package/util/env.d.ts +26 -4
- package/util/env.js +26 -4
- package/util/equal.d.ts +181 -17
- package/util/equal.js +181 -17
- package/util/error.d.ts +57 -5
- package/util/error.js +52 -4
- package/util/file.d.ts +30 -7
- package/util/file.js +25 -6
- package/util/filter.d.ts +36 -4
- package/util/filter.js +31 -3
- package/util/focus.d.ts +9 -1
- package/util/focus.js +9 -1
- package/util/format.d.ts +186 -22
- package/util/format.js +135 -14
- package/util/function.d.ts +66 -11
- package/util/function.js +31 -4
- package/util/geo.d.ts +60 -8
- package/util/geo.js +45 -5
- package/util/hash.d.ts +21 -2
- package/util/hash.js +21 -2
- package/util/http.d.ts +134 -19
- package/util/http.js +94 -11
- package/util/hydrate.d.ts +19 -2
- package/util/hydrate.js +12 -1
- package/util/item.d.ts +70 -11
- package/util/item.js +35 -4
- package/util/iterate.d.ts +109 -13
- package/util/iterate.js +86 -10
- package/util/jwt.d.ts +47 -13
- package/util/jwt.js +36 -12
- package/util/lazy.d.ts +9 -6
- package/util/link.d.ts +10 -3
- package/util/link.js +5 -2
- package/util/log.d.ts +26 -3
- package/util/log.js +26 -3
- package/util/map.d.ts +144 -19
- package/util/map.js +101 -11
- package/util/merge.d.ts +23 -1
- package/util/merge.js +6 -0
- package/util/null.d.ts +102 -13
- package/util/null.js +92 -11
- package/util/number.d.ts +125 -8
- package/util/number.js +120 -7
- package/util/object.d.ts +263 -31
- package/util/object.js +154 -17
- package/util/path.d.ts +91 -15
- package/util/path.js +60 -9
- package/util/query.d.ts +78 -9
- package/util/query.js +58 -6
- package/util/random.d.ts +67 -4
- package/util/random.js +67 -4
- package/util/regexp.d.ts +201 -24
- package/util/regexp.js +106 -11
- package/util/sequence.d.ts +66 -8
- package/util/sequence.js +52 -7
- package/util/serialise.d.ts +7 -1
- package/util/serialise.js +7 -1
- package/util/set.d.ts +103 -13
- package/util/set.js +83 -9
- package/util/sort.d.ts +32 -7
- package/util/sort.js +26 -6
- package/util/source.d.ts +28 -3
- package/util/source.js +22 -2
- package/util/start.d.ts +62 -5
- package/util/start.js +47 -2
- package/util/string.d.ts +209 -25
- package/util/string.js +188 -21
- package/util/template.d.ts +58 -9
- package/util/template.js +45 -6
- package/util/timeout.d.ts +35 -11
- package/util/timeout.js +35 -11
- package/util/transform.d.ts +87 -8
- package/util/transform.js +75 -7
- package/util/tree.d.ts +39 -6
- package/util/tree.js +3 -0
- package/util/types.d.ts +8 -2
- package/util/undefined.d.ts +47 -6
- package/util/undefined.js +47 -6
- package/util/units.d.ts +107 -12
- package/util/units.js +97 -12
- package/util/update.d.ts +36 -4
- package/util/update.js +24 -2
- package/util/uri.d.ts +138 -6
- package/util/uri.js +44 -3
- package/util/url.d.ts +152 -7
- package/util/url.js +136 -5
- package/util/uuid.d.ts +28 -3
- package/util/uuid.js +28 -3
- package/util/validate.d.ts +85 -20
- package/util/validate.js +61 -12
- package/util/xml.d.ts +9 -10
- package/util/xml.js +9 -10
package/util/path.d.ts
CHANGED
|
@@ -3,17 +3,47 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import type { AnyCaller } from "./function.js";
|
|
5
5
|
import type { Nullish } from "./null.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Absolute path string starting with a `/` slash.
|
|
8
|
+
*
|
|
9
|
+
* @see https://dhoulb.github.io/shelving/util/path/AbsolutePath
|
|
10
|
+
*/
|
|
7
11
|
export type AbsolutePath = `/` | `/${string}`;
|
|
8
|
-
/**
|
|
12
|
+
/**
|
|
13
|
+
* Relative path string that is `.` dot, or starts with `./` dot slash.
|
|
14
|
+
*
|
|
15
|
+
* @see https://dhoulb.github.io/shelving/util/path/RelativePath
|
|
16
|
+
*/
|
|
9
17
|
export type RelativePath = `.` | `./` | `./${string}`;
|
|
10
|
-
/**
|
|
18
|
+
/**
|
|
19
|
+
* Either an absolute or relative path.
|
|
20
|
+
*
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/util/path/Path
|
|
22
|
+
*/
|
|
11
23
|
export type Path = AbsolutePath | RelativePath;
|
|
12
|
-
/**
|
|
24
|
+
/**
|
|
25
|
+
* Things that can be converted to a path.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/util/path/PossiblePath
|
|
28
|
+
*/
|
|
13
29
|
export type PossiblePath = string | readonly string[];
|
|
14
|
-
/**
|
|
30
|
+
/**
|
|
31
|
+
* Is a string path an absolute path?
|
|
32
|
+
*
|
|
33
|
+
* @param path The path to test.
|
|
34
|
+
* @returns `true` if `path` is an `AbsolutePath` starting with `/`, narrowing its type.
|
|
35
|
+
* @example isAbsolutePath("/a/b") // true
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/util/path/isAbsolutePath
|
|
37
|
+
*/
|
|
15
38
|
export declare function isAbsolutePath(path: PossiblePath): path is AbsolutePath;
|
|
16
|
-
/**
|
|
39
|
+
/**
|
|
40
|
+
* Is a string path a relative path?
|
|
41
|
+
*
|
|
42
|
+
* @param path The path to test.
|
|
43
|
+
* @returns `true` if `path` is a `RelativePath` (`.` or starting with `./`), narrowing its type.
|
|
44
|
+
* @example isRelativePath("./a") // true
|
|
45
|
+
* @see https://dhoulb.github.io/shelving/util/path/isRelativePath
|
|
46
|
+
*/
|
|
17
47
|
export declare function isRelativePath(path: PossiblePath): path is RelativePath;
|
|
18
48
|
/**
|
|
19
49
|
* Resolve a relative or absolute path and return the absolute path, or `undefined` if not a valid path.
|
|
@@ -21,17 +51,24 @@ export declare function isRelativePath(path: PossiblePath): path is RelativePath
|
|
|
21
51
|
* - Normalises `\` windows paths.
|
|
22
52
|
* - Strips trailing slashes.
|
|
23
53
|
*
|
|
24
|
-
* @param
|
|
25
|
-
* @param
|
|
26
|
-
* @
|
|
54
|
+
* @param inputPath Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
|
|
55
|
+
* @param inputBase Absolute path used for resolving relative paths in `inputPath`.
|
|
56
|
+
* @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`, or `undefined` if `inputPath` is not a valid path.
|
|
57
|
+
* @example getPath("./a", "/b") // "/b/a"
|
|
58
|
+
* @see https://dhoulb.github.io/shelving/util/path/getPath
|
|
27
59
|
*/
|
|
28
60
|
export declare function getPath(inputPath: Nullish<PossiblePath>, inputBase?: AbsolutePath): AbsolutePath | undefined;
|
|
29
61
|
/**
|
|
30
|
-
* Normalise a path
|
|
62
|
+
* Normalise a path.
|
|
31
63
|
* - Runs of `/` and `\` collapsed to a single `/`.
|
|
32
64
|
* - `.` "current-directory" segments dropped (so `./a/b` → `a/b`, `a/./b` → `a/b`, `.` → `""`).
|
|
33
65
|
* - Trailing slashes stripped.
|
|
34
66
|
* - The root `"/"` is preserved as-is.
|
|
67
|
+
*
|
|
68
|
+
* @param path The path to normalise.
|
|
69
|
+
* @returns The normalised path, preserving the absolute/relative type of `path`.
|
|
70
|
+
* @example cleanPath("/a//b/") // "/a/b"
|
|
71
|
+
* @see https://dhoulb.github.io/shelving/util/path/cleanPath
|
|
35
72
|
*/
|
|
36
73
|
export declare function cleanPath(path: AbsolutePath): AbsolutePath;
|
|
37
74
|
export declare function cleanPath(path: string): string;
|
|
@@ -41,26 +78,65 @@ export declare function cleanPath(path: string): string;
|
|
|
41
78
|
* - Returned paths are cleaned with `cleanPath()` so runs of slashes and trailing slashes are removed.
|
|
42
79
|
*
|
|
43
80
|
* @param path Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
|
|
44
|
-
* @param base Absolute path used for resolving relative paths in `
|
|
45
|
-
* @
|
|
81
|
+
* @param base Absolute path used for resolving relative paths in `path`.
|
|
82
|
+
* @param caller Function to attribute a thrown error to (defaults to `requirePath` itself).
|
|
83
|
+
* @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`.
|
|
84
|
+
* @throws {RequiredError} If `path` is not a valid path.
|
|
85
|
+
* @example requirePath("./a", "/b") // "/b/a"
|
|
86
|
+
* @see https://dhoulb.github.io/shelving/util/path/requirePath
|
|
46
87
|
*/
|
|
47
88
|
export declare function requirePath(path: PossiblePath, base?: AbsolutePath, caller?: AnyCaller): AbsolutePath;
|
|
48
89
|
/**
|
|
49
90
|
* Match and strip a base path prefix from a path using segment-aware pathname rules.
|
|
50
91
|
* - Both inputs must be absolute paths that begin with `/`.
|
|
51
92
|
* - Returns `/` when the paths are an exact match.
|
|
93
|
+
*
|
|
94
|
+
* @param target Path to match against `base` — relative paths resolve against `base`.
|
|
95
|
+
* @param base Base path whose prefix is stripped from `target`.
|
|
96
|
+
* @param caller Function to attribute a thrown error to (defaults to `matchPathPrefix` itself).
|
|
97
|
+
* @returns The remaining absolute path after stripping `base`, `/` for an exact match, or `undefined` if `target` is not under `base`.
|
|
98
|
+
* @throws {RequiredError} If `target` or `base` is not a valid path.
|
|
99
|
+
* @example matchPathPrefix("/a/b", "/a") // "/b"
|
|
100
|
+
* @see https://dhoulb.github.io/shelving/util/path/matchPathPrefix
|
|
52
101
|
*/
|
|
53
102
|
export declare function matchPathPrefix(target: PossiblePath, base: PossiblePath, caller?: AnyCaller): AbsolutePath | undefined;
|
|
54
|
-
/**
|
|
103
|
+
/**
|
|
104
|
+
* Is a target path active relative to the current path?
|
|
105
|
+
* - Active means `target` and `current` are exactly the same path.
|
|
106
|
+
*
|
|
107
|
+
* @param target Path whose status to test.
|
|
108
|
+
* @param current Current path to test against.
|
|
109
|
+
* @returns `true` if `target` is exactly `current`.
|
|
110
|
+
* @example isPathActive("/a", "/a") // true
|
|
111
|
+
* @see https://dhoulb.github.io/shelving/util/path/isPathActive
|
|
112
|
+
*/
|
|
55
113
|
export declare function isPathActive(target: AbsolutePath, current: AbsolutePath): boolean;
|
|
56
|
-
/**
|
|
114
|
+
/**
|
|
115
|
+
* Is a target path proud relative to the current path?
|
|
116
|
+
* - Proud means `target` is the current path, or is an ancestor of the current path.
|
|
117
|
+
*
|
|
118
|
+
* @param target Path whose status to test.
|
|
119
|
+
* @param current Current path to test against.
|
|
120
|
+
* @returns `true` if `current` is `target` or a descendant of `target`.
|
|
121
|
+
* @example isPathProud("/a", "/a/b") // true
|
|
122
|
+
* @see https://dhoulb.github.io/shelving/util/path/isPathProud
|
|
123
|
+
*/
|
|
57
124
|
export declare function isPathProud(target: AbsolutePath, current: AbsolutePath): boolean;
|
|
58
125
|
/**
|
|
59
126
|
* Get the "segments" in an absolute path.
|
|
60
127
|
* - `splitPath("/")` returns `[]` — the root has no segments.
|
|
128
|
+
*
|
|
129
|
+
* @param path Path to split (an array of segments is returned as-is).
|
|
130
|
+
* @returns Array of path segments.
|
|
131
|
+
* @example splitPath("/a/b") // ["a", "b"]
|
|
132
|
+
* @see https://dhoulb.github.io/shelving/util/path/splitPath
|
|
61
133
|
*/
|
|
62
134
|
export declare function splitPath(path: PossiblePath): readonly string[];
|
|
63
|
-
/**
|
|
135
|
+
/**
|
|
136
|
+
* A single argument accepted by `joinPath()` — either a string (full path or single segment) or an array of segments.
|
|
137
|
+
*
|
|
138
|
+
* @see https://dhoulb.github.io/shelving/util/path/PathPart
|
|
139
|
+
*/
|
|
64
140
|
export type PathPart = string | readonly string[];
|
|
65
141
|
/**
|
|
66
142
|
* Join one or more path parts into a single path string.
|
package/util/path.js
CHANGED
|
@@ -3,11 +3,25 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { RequiredError } from "../error/RequiredError.js";
|
|
5
5
|
import { isNullish, splitString } from "./index.js";
|
|
6
|
-
/**
|
|
6
|
+
/**
|
|
7
|
+
* Is a string path an absolute path?
|
|
8
|
+
*
|
|
9
|
+
* @param path The path to test.
|
|
10
|
+
* @returns `true` if `path` is an `AbsolutePath` starting with `/`, narrowing its type.
|
|
11
|
+
* @example isAbsolutePath("/a/b") // true
|
|
12
|
+
* @see https://dhoulb.github.io/shelving/util/path/isAbsolutePath
|
|
13
|
+
*/
|
|
7
14
|
export function isAbsolutePath(path) {
|
|
8
15
|
return typeof path === "string" && path.startsWith("/");
|
|
9
16
|
}
|
|
10
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Is a string path a relative path?
|
|
19
|
+
*
|
|
20
|
+
* @param path The path to test.
|
|
21
|
+
* @returns `true` if `path` is a `RelativePath` (`.` or starting with `./`), narrowing its type.
|
|
22
|
+
* @example isRelativePath("./a") // true
|
|
23
|
+
* @see https://dhoulb.github.io/shelving/util/path/isRelativePath
|
|
24
|
+
*/
|
|
11
25
|
export function isRelativePath(path) {
|
|
12
26
|
return typeof path === "string" && (path === "." || path.startsWith("./"));
|
|
13
27
|
}
|
|
@@ -17,9 +31,11 @@ export function isRelativePath(path) {
|
|
|
17
31
|
* - Normalises `\` windows paths.
|
|
18
32
|
* - Strips trailing slashes.
|
|
19
33
|
*
|
|
20
|
-
* @param
|
|
21
|
-
* @param
|
|
22
|
-
* @
|
|
34
|
+
* @param inputPath Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
|
|
35
|
+
* @param inputBase Absolute path used for resolving relative paths in `inputPath`.
|
|
36
|
+
* @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`, or `undefined` if `inputPath` is not a valid path.
|
|
37
|
+
* @example getPath("./a", "/b") // "/b/a"
|
|
38
|
+
* @see https://dhoulb.github.io/shelving/util/path/getPath
|
|
23
39
|
*/
|
|
24
40
|
export function getPath(inputPath, inputBase = "/") {
|
|
25
41
|
if (isNullish(inputPath))
|
|
@@ -38,8 +54,12 @@ export function cleanPath(path) {
|
|
|
38
54
|
* - Returned paths are cleaned with `cleanPath()` so runs of slashes and trailing slashes are removed.
|
|
39
55
|
*
|
|
40
56
|
* @param path Absolute path e.g. `/a/b/c`, relative path e.g. `./a` or `b` or `../c`, URL string e.g. `http://shax.com/a/b/c`, or `URL` instance.
|
|
41
|
-
* @param base Absolute path used for resolving relative paths in `
|
|
42
|
-
* @
|
|
57
|
+
* @param base Absolute path used for resolving relative paths in `path`.
|
|
58
|
+
* @param caller Function to attribute a thrown error to (defaults to `requirePath` itself).
|
|
59
|
+
* @returns Absolute path with a leading slash but no trailing slash, e.g. `/a/c/b`.
|
|
60
|
+
* @throws {RequiredError} If `path` is not a valid path.
|
|
61
|
+
* @example requirePath("./a", "/b") // "/b/a"
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/util/path/requirePath
|
|
43
63
|
*/
|
|
44
64
|
export function requirePath(path, base, caller = requirePath) {
|
|
45
65
|
const output = getPath(path, base);
|
|
@@ -51,6 +71,14 @@ export function requirePath(path, base, caller = requirePath) {
|
|
|
51
71
|
* Match and strip a base path prefix from a path using segment-aware pathname rules.
|
|
52
72
|
* - Both inputs must be absolute paths that begin with `/`.
|
|
53
73
|
* - Returns `/` when the paths are an exact match.
|
|
74
|
+
*
|
|
75
|
+
* @param target Path to match against `base` — relative paths resolve against `base`.
|
|
76
|
+
* @param base Base path whose prefix is stripped from `target`.
|
|
77
|
+
* @param caller Function to attribute a thrown error to (defaults to `matchPathPrefix` itself).
|
|
78
|
+
* @returns The remaining absolute path after stripping `base`, `/` for an exact match, or `undefined` if `target` is not under `base`.
|
|
79
|
+
* @throws {RequiredError} If `target` or `base` is not a valid path.
|
|
80
|
+
* @example matchPathPrefix("/a/b", "/a") // "/b"
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/util/path/matchPathPrefix
|
|
54
82
|
*/
|
|
55
83
|
export function matchPathPrefix(target, base, caller = matchPathPrefix) {
|
|
56
84
|
const basePath = requirePath(base, undefined, caller);
|
|
@@ -62,17 +90,40 @@ export function matchPathPrefix(target, base, caller = matchPathPrefix) {
|
|
|
62
90
|
if (targetPath.startsWith(`${basePath}/`))
|
|
63
91
|
return targetPath.slice(basePath.length);
|
|
64
92
|
}
|
|
65
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Is a target path active relative to the current path?
|
|
95
|
+
* - Active means `target` and `current` are exactly the same path.
|
|
96
|
+
*
|
|
97
|
+
* @param target Path whose status to test.
|
|
98
|
+
* @param current Current path to test against.
|
|
99
|
+
* @returns `true` if `target` is exactly `current`.
|
|
100
|
+
* @example isPathActive("/a", "/a") // true
|
|
101
|
+
* @see https://dhoulb.github.io/shelving/util/path/isPathActive
|
|
102
|
+
*/
|
|
66
103
|
export function isPathActive(target, current) {
|
|
67
104
|
return target === current;
|
|
68
105
|
}
|
|
69
|
-
/**
|
|
106
|
+
/**
|
|
107
|
+
* Is a target path proud relative to the current path?
|
|
108
|
+
* - Proud means `target` is the current path, or is an ancestor of the current path.
|
|
109
|
+
*
|
|
110
|
+
* @param target Path whose status to test.
|
|
111
|
+
* @param current Current path to test against.
|
|
112
|
+
* @returns `true` if `current` is `target` or a descendant of `target`.
|
|
113
|
+
* @example isPathProud("/a", "/a/b") // true
|
|
114
|
+
* @see https://dhoulb.github.io/shelving/util/path/isPathProud
|
|
115
|
+
*/
|
|
70
116
|
export function isPathProud(target, current) {
|
|
71
117
|
return target === current || (target !== "/" && target.startsWith(`${current}/`));
|
|
72
118
|
}
|
|
73
119
|
/**
|
|
74
120
|
* Get the "segments" in an absolute path.
|
|
75
121
|
* - `splitPath("/")` returns `[]` — the root has no segments.
|
|
122
|
+
*
|
|
123
|
+
* @param path Path to split (an array of segments is returned as-is).
|
|
124
|
+
* @returns Array of path segments.
|
|
125
|
+
* @example splitPath("/a/b") // ["a", "b"]
|
|
126
|
+
* @see https://dhoulb.github.io/shelving/util/path/splitPath
|
|
76
127
|
*/
|
|
77
128
|
export function splitPath(path) {
|
|
78
129
|
if (typeof path !== "string")
|
package/util/query.d.ts
CHANGED
|
@@ -1,7 +1,14 @@
|
|
|
1
1
|
import type { ImmutableArray } from "./array.js";
|
|
2
2
|
import type { Data, LeafData, LeafDataPath } from "./data.js";
|
|
3
3
|
import type { Segments } from "./string.js";
|
|
4
|
-
/**
|
|
4
|
+
/**
|
|
5
|
+
* Query that can be applied to a list of data objects.
|
|
6
|
+
*
|
|
7
|
+
* - Keys encode filters: `key` (is), `!key` (not), arrays for in/out, `key<`/`key<=`/`key>`/`key>=` for ranges, and `key[]` for array contains.
|
|
8
|
+
* - `$order` sets the sort order (prefix `!` for descending) and `$limit` caps the number of results.
|
|
9
|
+
*
|
|
10
|
+
* @see https://dhoulb.github.io/shelving/util/query/Query
|
|
11
|
+
*/
|
|
5
12
|
export type Query<T extends Data = Data> = {
|
|
6
13
|
readonly [K in LeafDataPath<T> as `${K}` | `!${K}`]?: LeafData<T>[K] | ImmutableArray<LeafData<T>[K]> | undefined;
|
|
7
14
|
} & {
|
|
@@ -12,7 +19,13 @@ export type Query<T extends Data = Data> = {
|
|
|
12
19
|
readonly $order?: `${LeafDataPath<T>}` | `!${LeafDataPath<T>}` | undefined | ImmutableArray<`${LeafDataPath<T>}` | `!${LeafDataPath<T>}` | undefined>;
|
|
13
20
|
readonly $limit?: number | undefined;
|
|
14
21
|
};
|
|
15
|
-
/**
|
|
22
|
+
/**
|
|
23
|
+
* A single filter that can be applied to a list of data objects.
|
|
24
|
+
*
|
|
25
|
+
* - Discriminated by `operator`: `"is"`, `"not"`, `"in"`, `"out"`, `"contains"`, `"lt"`, `"lte"`, `"gt"`, or `"gte"`.
|
|
26
|
+
*
|
|
27
|
+
* @see https://dhoulb.github.io/shelving/util/query/QueryFilter
|
|
28
|
+
*/
|
|
16
29
|
export type QueryFilter = {
|
|
17
30
|
key: Segments;
|
|
18
31
|
operator: "is";
|
|
@@ -50,27 +63,83 @@ export type QueryFilter = {
|
|
|
50
63
|
operator: "gte";
|
|
51
64
|
value: unknown;
|
|
52
65
|
};
|
|
53
|
-
/**
|
|
66
|
+
/**
|
|
67
|
+
* A single sort order that can be applied to a list of data objects.
|
|
68
|
+
*
|
|
69
|
+
* @see https://dhoulb.github.io/shelving/util/query/QueryOrder
|
|
70
|
+
*/
|
|
54
71
|
export type QueryOrder = {
|
|
55
72
|
key: Segments;
|
|
56
73
|
direction: "asc" | "desc";
|
|
57
74
|
};
|
|
58
|
-
/**
|
|
75
|
+
/**
|
|
76
|
+
* Get the `QueryFilter` objects decoded from a query.
|
|
77
|
+
*
|
|
78
|
+
* @param query The query to extract filters from.
|
|
79
|
+
* @returns Array of decoded `QueryFilter` objects (excludes `$order` and `$limit` and any `undefined` values).
|
|
80
|
+
* @example getQueryFilters({ name: "Alice" }) // [{ key: ["name"], operator: "is", value: "Alice" }]
|
|
81
|
+
* @see https://dhoulb.github.io/shelving/util/query/getQueryFilters
|
|
82
|
+
*/
|
|
59
83
|
export declare function getQueryFilters<T extends Data>(query: Query<T>): ImmutableArray<QueryFilter>;
|
|
60
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Get the `QueryOrder` objects decoded from a query.
|
|
86
|
+
*
|
|
87
|
+
* @param query The query to extract sort orders from (reads its `$order` prop).
|
|
88
|
+
* @returns Array of decoded `QueryOrder` objects (`!`-prefixed keys are descending, others ascending).
|
|
89
|
+
* @example getQueryOrders({ $order: "!date" }) // [{ key: ["date"], direction: "desc" }]
|
|
90
|
+
* @see https://dhoulb.github.io/shelving/util/query/getQueryOrders
|
|
91
|
+
*/
|
|
61
92
|
export declare function getQueryOrders<T extends Data>({ $order }: Query<T>): ImmutableArray<QueryOrder>;
|
|
62
|
-
/**
|
|
93
|
+
/**
|
|
94
|
+
* Get the limit for a query.
|
|
95
|
+
*
|
|
96
|
+
* @param query The query to read the limit from (reads its `$limit` prop).
|
|
97
|
+
* @returns The maximum number of results, or `undefined` if the query is unlimited.
|
|
98
|
+
* @example getQueryLimit({ $limit: 10 }) // 10
|
|
99
|
+
* @see https://dhoulb.github.io/shelving/util/query/getQueryLimit
|
|
100
|
+
*/
|
|
63
101
|
export declare function getQueryLimit<T extends Data>({ $limit }: Query<T>): number | undefined;
|
|
64
|
-
/**
|
|
102
|
+
/**
|
|
103
|
+
* Query a set of data items using a query.
|
|
104
|
+
* - Filters, then sorts, then limits the items according to the query.
|
|
105
|
+
*
|
|
106
|
+
* @param items The iterable of data items to query.
|
|
107
|
+
* @param query The query to apply (filters, sort order, and limit).
|
|
108
|
+
* @returns Iterable of items matching the query, in sorted and limited order.
|
|
109
|
+
* @example Array.from(queryItems(items, { name: "Alice", $limit: 1 })) // matching items
|
|
110
|
+
* @see https://dhoulb.github.io/shelving/util/query/queryItems
|
|
111
|
+
*/
|
|
65
112
|
export declare function queryItems<T extends Data>(items: Iterable<T>, query: Query<T>): Iterable<T>;
|
|
66
113
|
/**
|
|
67
114
|
* Query a set of data items for writing using a query.
|
|
68
115
|
* - If no limit is set on the data sorting can be avoided too for performance reasons.
|
|
116
|
+
*
|
|
117
|
+
* @param items The iterable of data items to query.
|
|
118
|
+
* @param query The query to apply (filters, sort order, and limit).
|
|
119
|
+
* @returns Iterable of matching items (skips sorting when the query has no limit).
|
|
120
|
+
* @example Array.from(queryWritableItems(items, { name: "Alice" })) // matching items (unsorted)
|
|
121
|
+
* @see https://dhoulb.github.io/shelving/util/query/queryWritableItems
|
|
69
122
|
*/
|
|
70
123
|
export declare function queryWritableItems<T extends Data>(items: Iterable<T>, query: Query<T>): Iterable<T>;
|
|
71
|
-
/**
|
|
124
|
+
/**
|
|
125
|
+
* Match a single data item against a set of filters.
|
|
126
|
+
*
|
|
127
|
+
* @param item The data item to test.
|
|
128
|
+
* @param filters The set of filters that the item must satisfy.
|
|
129
|
+
* @returns `true` if the item matches every filter, `false` otherwise.
|
|
130
|
+
* @example matchQueryItem({ name: "Alice" }, [{ key: ["name"], operator: "is", value: "Alice" }]) // true
|
|
131
|
+
* @see https://dhoulb.github.io/shelving/util/query/matchQueryItem
|
|
132
|
+
*/
|
|
72
133
|
export declare function matchQueryItem<T extends Data>(item: T, filters: ImmutableArray<QueryFilter>): boolean;
|
|
73
|
-
/**
|
|
134
|
+
/**
|
|
135
|
+
* Filter a set of data items using a set of filters.
|
|
136
|
+
*
|
|
137
|
+
* @param items The iterable of data items to filter.
|
|
138
|
+
* @param filters The set of filters that each yielded item must satisfy.
|
|
139
|
+
* @yields Items that match every filter (yields all items when `filters` is empty).
|
|
140
|
+
* @example Array.from(filterQueryItems(items, filters)) // matching items
|
|
141
|
+
* @see https://dhoulb.github.io/shelving/util/query/filterQueryItems
|
|
142
|
+
*/
|
|
74
143
|
export declare function filterQueryItems<T extends Data>(items: Iterable<T>, filters: ImmutableArray<QueryFilter>): Iterable<T>;
|
|
75
144
|
/** Compare two data items using a set of orders. */
|
|
76
145
|
export declare function compareQueryItems<T extends Data>(left: T, right: T, orders: ImmutableArray<QueryOrder>): number;
|
package/util/query.js
CHANGED
|
@@ -16,7 +16,14 @@ const MATCHERS = {
|
|
|
16
16
|
gt: isGreater,
|
|
17
17
|
gte: isEqualGreater,
|
|
18
18
|
};
|
|
19
|
-
/**
|
|
19
|
+
/**
|
|
20
|
+
* Get the `QueryFilter` objects decoded from a query.
|
|
21
|
+
*
|
|
22
|
+
* @param query The query to extract filters from.
|
|
23
|
+
* @returns Array of decoded `QueryFilter` objects (excludes `$order` and `$limit` and any `undefined` values).
|
|
24
|
+
* @example getQueryFilters({ name: "Alice" }) // [{ key: ["name"], operator: "is", value: "Alice" }]
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/util/query/getQueryFilters
|
|
26
|
+
*/
|
|
20
27
|
export function getQueryFilters(query) {
|
|
21
28
|
return Array.from(yieldQueryFilters(query));
|
|
22
29
|
}
|
|
@@ -42,7 +49,14 @@ function* yieldQueryFilters(query) {
|
|
|
42
49
|
yield isArray(value) ? { key: splitDataPath(key), operator: "in", value } : { key: splitDataPath(key), operator: "is", value };
|
|
43
50
|
}
|
|
44
51
|
}
|
|
45
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Get the `QueryOrder` objects decoded from a query.
|
|
54
|
+
*
|
|
55
|
+
* @param query The query to extract sort orders from (reads its `$order` prop).
|
|
56
|
+
* @returns Array of decoded `QueryOrder` objects (`!`-prefixed keys are descending, others ascending).
|
|
57
|
+
* @example getQueryOrders({ $order: "!date" }) // [{ key: ["date"], direction: "desc" }]
|
|
58
|
+
* @see https://dhoulb.github.io/shelving/util/query/getQueryOrders
|
|
59
|
+
*/
|
|
46
60
|
export function getQueryOrders({ $order }) {
|
|
47
61
|
return Array.from(yieldQueryOrders($order));
|
|
48
62
|
}
|
|
@@ -56,22 +70,52 @@ function* yieldQueryOrders(order) {
|
|
|
56
70
|
yield { key: splitDataPath(key), direction: "asc" };
|
|
57
71
|
}
|
|
58
72
|
}
|
|
59
|
-
/**
|
|
73
|
+
/**
|
|
74
|
+
* Get the limit for a query.
|
|
75
|
+
*
|
|
76
|
+
* @param query The query to read the limit from (reads its `$limit` prop).
|
|
77
|
+
* @returns The maximum number of results, or `undefined` if the query is unlimited.
|
|
78
|
+
* @example getQueryLimit({ $limit: 10 }) // 10
|
|
79
|
+
* @see https://dhoulb.github.io/shelving/util/query/getQueryLimit
|
|
80
|
+
*/
|
|
60
81
|
export function getQueryLimit({ $limit }) {
|
|
61
82
|
return $limit;
|
|
62
83
|
}
|
|
63
|
-
/**
|
|
84
|
+
/**
|
|
85
|
+
* Query a set of data items using a query.
|
|
86
|
+
* - Filters, then sorts, then limits the items according to the query.
|
|
87
|
+
*
|
|
88
|
+
* @param items The iterable of data items to query.
|
|
89
|
+
* @param query The query to apply (filters, sort order, and limit).
|
|
90
|
+
* @returns Iterable of items matching the query, in sorted and limited order.
|
|
91
|
+
* @example Array.from(queryItems(items, { name: "Alice", $limit: 1 })) // matching items
|
|
92
|
+
* @see https://dhoulb.github.io/shelving/util/query/queryItems
|
|
93
|
+
*/
|
|
64
94
|
export function queryItems(items, query) {
|
|
65
95
|
return limitQueryItems(sortQueryItems(filterQueryItems(items, getQueryFilters(query)), getQueryOrders(query)), getQueryLimit(query));
|
|
66
96
|
}
|
|
67
97
|
/**
|
|
68
98
|
* Query a set of data items for writing using a query.
|
|
69
99
|
* - If no limit is set on the data sorting can be avoided too for performance reasons.
|
|
100
|
+
*
|
|
101
|
+
* @param items The iterable of data items to query.
|
|
102
|
+
* @param query The query to apply (filters, sort order, and limit).
|
|
103
|
+
* @returns Iterable of matching items (skips sorting when the query has no limit).
|
|
104
|
+
* @example Array.from(queryWritableItems(items, { name: "Alice" })) // matching items (unsorted)
|
|
105
|
+
* @see https://dhoulb.github.io/shelving/util/query/queryWritableItems
|
|
70
106
|
*/
|
|
71
107
|
export function queryWritableItems(items, query) {
|
|
72
108
|
return getQueryLimit(query) === undefined ? filterQueryItems(items, getQueryFilters(query)) : queryItems(items, query);
|
|
73
109
|
}
|
|
74
|
-
/**
|
|
110
|
+
/**
|
|
111
|
+
* Match a single data item against a set of filters.
|
|
112
|
+
*
|
|
113
|
+
* @param item The data item to test.
|
|
114
|
+
* @param filters The set of filters that the item must satisfy.
|
|
115
|
+
* @returns `true` if the item matches every filter, `false` otherwise.
|
|
116
|
+
* @example matchQueryItem({ name: "Alice" }, [{ key: ["name"], operator: "is", value: "Alice" }]) // true
|
|
117
|
+
* @see https://dhoulb.github.io/shelving/util/query/matchQueryItem
|
|
118
|
+
*/
|
|
75
119
|
export function matchQueryItem(item, filters) {
|
|
76
120
|
for (const { key, operator, value } of filters) {
|
|
77
121
|
const matcher = MATCHERS[operator];
|
|
@@ -80,7 +124,15 @@ export function matchQueryItem(item, filters) {
|
|
|
80
124
|
}
|
|
81
125
|
return true;
|
|
82
126
|
}
|
|
83
|
-
/**
|
|
127
|
+
/**
|
|
128
|
+
* Filter a set of data items using a set of filters.
|
|
129
|
+
*
|
|
130
|
+
* @param items The iterable of data items to filter.
|
|
131
|
+
* @param filters The set of filters that each yielded item must satisfy.
|
|
132
|
+
* @yields Items that match every filter (yields all items when `filters` is empty).
|
|
133
|
+
* @example Array.from(filterQueryItems(items, filters)) // matching items
|
|
134
|
+
* @see https://dhoulb.github.io/shelving/util/query/filterQueryItems
|
|
135
|
+
*/
|
|
84
136
|
export function* filterQueryItems(items, filters) {
|
|
85
137
|
if (filters.length) {
|
|
86
138
|
for (const item of items)
|
package/util/random.d.ts
CHANGED
|
@@ -1,16 +1,79 @@
|
|
|
1
1
|
import type { ImmutableArray } from "./array.js";
|
|
2
|
-
/**
|
|
2
|
+
/**
|
|
3
|
+
* Generate a random integer between two numbers (inclusive).
|
|
4
|
+
*
|
|
5
|
+
* @param min Lowest possible integer to return — defaults to `Number.MIN_SAFE_INTEGER`.
|
|
6
|
+
* @param max Highest possible integer to return — defaults to `Number.MAX_SAFE_INTEGER`.
|
|
7
|
+
* @returns Random integer in the range `min` to `max` (inclusive).
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* ```ts
|
|
11
|
+
* const dice = getRandom(1, 6); // e.g. `4`
|
|
12
|
+
* ```
|
|
13
|
+
*
|
|
14
|
+
* @see https://dhoulb.github.io/shelving/util/random/getRandom
|
|
15
|
+
*/
|
|
3
16
|
export declare function getRandom(min?: number, max?: number): number;
|
|
4
|
-
/**
|
|
17
|
+
/**
|
|
18
|
+
* Get a random integer that is anything except an existing number.
|
|
19
|
+
* - Repeatedly draws a random integer until it differs from `existing`.
|
|
20
|
+
*
|
|
21
|
+
* @param existing Number that must not be returned.
|
|
22
|
+
* @param min Lowest possible integer to return — defaults to `Number.MIN_SAFE_INTEGER`.
|
|
23
|
+
* @param max Highest possible integer to return — defaults to `Number.MAX_SAFE_INTEGER`.
|
|
24
|
+
* @returns Random integer in the range `min` to `max` that is not equal to `existing`.
|
|
25
|
+
*
|
|
26
|
+
* @example
|
|
27
|
+
* ```ts
|
|
28
|
+
* const next = getRandomExcept(current, 1, 6); // any of `1`–`6` except `current`
|
|
29
|
+
* ```
|
|
30
|
+
*
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/util/random/getRandomExcept
|
|
32
|
+
*/
|
|
5
33
|
export declare function getRandomExcept(existing: number, min?: number, max?: number): number;
|
|
6
34
|
/**
|
|
7
35
|
* Make a random key, e.g. `xs23r34hhsdx` or `e4m29klrugef`
|
|
8
36
|
* - Not designed to be cryptographically random!
|
|
9
37
|
* - Will probably clash — if you're making a random ID, check for existence of the record before saving.
|
|
10
38
|
* - Designed to be semi-readable, doesn't use capital letters or `i` or `o` or `l` or `u`
|
|
39
|
+
*
|
|
40
|
+
* @param length Number of characters in the returned key — defaults to `12`.
|
|
41
|
+
* @returns Random string of `length` lowercase alphanumeric characters.
|
|
42
|
+
*
|
|
43
|
+
* @example
|
|
44
|
+
* ```ts
|
|
45
|
+
* const id = getRandomKey(); // e.g. `xs23r34hhsdx`
|
|
46
|
+
* ```
|
|
47
|
+
*
|
|
48
|
+
* @see https://dhoulb.github.io/shelving/util/random/getRandomKey
|
|
11
49
|
*/
|
|
12
50
|
export declare function getRandomKey(length?: number): string;
|
|
13
|
-
/**
|
|
51
|
+
/**
|
|
52
|
+
* Get a random character from a string.
|
|
53
|
+
*
|
|
54
|
+
* @param str String to pick a character from.
|
|
55
|
+
* @returns Single character chosen at random from `str`.
|
|
56
|
+
*
|
|
57
|
+
* @example
|
|
58
|
+
* ```ts
|
|
59
|
+
* const letter = getRandomCharacter("abcde"); // e.g. `"c"`
|
|
60
|
+
* ```
|
|
61
|
+
*
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/util/random/getRandomCharacter
|
|
63
|
+
*/
|
|
14
64
|
export declare function getRandomCharacter(str: string): string;
|
|
15
|
-
/**
|
|
65
|
+
/**
|
|
66
|
+
* Get a random item from an array.
|
|
67
|
+
*
|
|
68
|
+
* @param arr Array to pick an item from.
|
|
69
|
+
* @returns Single item chosen at random from `arr`.
|
|
70
|
+
* @throws RequiredError If the chosen item is undefined (e.g. the array is empty).
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```ts
|
|
74
|
+
* const item = getRandomItem(["a", "b", "c"]); // e.g. `"b"`
|
|
75
|
+
* ```
|
|
76
|
+
*
|
|
77
|
+
* @see https://dhoulb.github.io/shelving/util/random/getRandomItem
|
|
78
|
+
*/
|
|
16
79
|
export declare function getRandomItem<T>(arr: ImmutableArray<T>): T;
|