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
|
@@ -3,9 +3,47 @@ import { PostgreSQLProvider, type SQLFragment } from "../db/index.js";
|
|
|
3
3
|
import type { ImmutableArray } from "../util/array.js";
|
|
4
4
|
import type { Data } from "../util/data.js";
|
|
5
5
|
import type { Identifier } from "../util/item.js";
|
|
6
|
+
/**
|
|
7
|
+
* PostgreSQL database provider backed by Bun's built-in `Bun.SQL` driver.
|
|
8
|
+
*
|
|
9
|
+
* Implements the `PostgreSQLProvider` SQL abstraction by executing tagged-template queries against a `Bun.SQL` connection.
|
|
10
|
+
* - Identifiers are escaped through `Bun.SQL`'s own `sql()` helper rather than naive string quoting, which is more secure.
|
|
11
|
+
* - Requires the `bun` peer dependency and a running Bun environment.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* import { SQL } from "bun";
|
|
15
|
+
* const provider = new BunPostgreSQLProvider(new SQL(process.env.DATABASE_URL));
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider
|
|
18
|
+
*/
|
|
6
19
|
export declare class BunPostgreSQLProvider<I extends Identifier = Identifier, T extends Data = Data> extends PostgreSQLProvider<I, T> {
|
|
7
20
|
private _sql;
|
|
21
|
+
/**
|
|
22
|
+
* Create a provider wrapping an existing `Bun.SQL` connection.
|
|
23
|
+
*
|
|
24
|
+
* @param sql The `Bun.SQL` instance to execute queries against.
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider
|
|
26
|
+
*/
|
|
8
27
|
constructor(sql: SQL);
|
|
28
|
+
/**
|
|
29
|
+
* Execute an SQL query through the underlying `Bun.SQL` connection.
|
|
30
|
+
*
|
|
31
|
+
* @param strings The tagged-template string parts of the query.
|
|
32
|
+
* @param values The interpolated values bound as query parameters.
|
|
33
|
+
* @returns Promise resolving to the array of result rows.
|
|
34
|
+
* @example provider.exec`SELECT * FROM ${provider.sqlIdentifier("items")}`
|
|
35
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider/exec
|
|
36
|
+
*/
|
|
9
37
|
exec<X extends Data>(strings: TemplateStringsArray, ...values: ImmutableArray<unknown>): Promise<ImmutableArray<X>>;
|
|
38
|
+
/**
|
|
39
|
+
* Build an SQL fragment for an identifier, escaped via `Bun.SQL`'s `sql()` helper.
|
|
40
|
+
*
|
|
41
|
+
* Overrides the base implementation because the Bun SQL engine supports first-class identifier wrapping, which is more secure than manual quoting.
|
|
42
|
+
*
|
|
43
|
+
* @param name The identifier (table or column name) to escape.
|
|
44
|
+
* @returns An `SQLFragment` wrapping the escaped identifier.
|
|
45
|
+
* @example provider.sqlIdentifier("items")
|
|
46
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider/sqlIdentifier
|
|
47
|
+
*/
|
|
10
48
|
sqlIdentifier(name: string): SQLFragment;
|
|
11
49
|
}
|
|
@@ -1,15 +1,51 @@
|
|
|
1
1
|
import { PostgreSQLProvider } from "../db/index.js";
|
|
2
|
+
/**
|
|
3
|
+
* PostgreSQL database provider backed by Bun's built-in `Bun.SQL` driver.
|
|
4
|
+
*
|
|
5
|
+
* Implements the `PostgreSQLProvider` SQL abstraction by executing tagged-template queries against a `Bun.SQL` connection.
|
|
6
|
+
* - Identifiers are escaped through `Bun.SQL`'s own `sql()` helper rather than naive string quoting, which is more secure.
|
|
7
|
+
* - Requires the `bun` peer dependency and a running Bun environment.
|
|
8
|
+
*
|
|
9
|
+
* @example
|
|
10
|
+
* import { SQL } from "bun";
|
|
11
|
+
* const provider = new BunPostgreSQLProvider(new SQL(process.env.DATABASE_URL));
|
|
12
|
+
*
|
|
13
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider
|
|
14
|
+
*/
|
|
2
15
|
export class BunPostgreSQLProvider extends PostgreSQLProvider {
|
|
3
16
|
_sql;
|
|
17
|
+
/**
|
|
18
|
+
* Create a provider wrapping an existing `Bun.SQL` connection.
|
|
19
|
+
*
|
|
20
|
+
* @param sql The `Bun.SQL` instance to execute queries against.
|
|
21
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider
|
|
22
|
+
*/
|
|
4
23
|
constructor(sql) {
|
|
5
24
|
super();
|
|
6
25
|
this._sql = sql;
|
|
7
26
|
}
|
|
8
|
-
|
|
27
|
+
/**
|
|
28
|
+
* Execute an SQL query through the underlying `Bun.SQL` connection.
|
|
29
|
+
*
|
|
30
|
+
* @param strings The tagged-template string parts of the query.
|
|
31
|
+
* @param values The interpolated values bound as query parameters.
|
|
32
|
+
* @returns Promise resolving to the array of result rows.
|
|
33
|
+
* @example provider.exec`SELECT * FROM ${provider.sqlIdentifier("items")}`
|
|
34
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider/exec
|
|
35
|
+
*/
|
|
9
36
|
exec(strings, ...values) {
|
|
10
37
|
return this._sql(strings, ...values);
|
|
11
38
|
}
|
|
12
|
-
|
|
39
|
+
/**
|
|
40
|
+
* Build an SQL fragment for an identifier, escaped via `Bun.SQL`'s `sql()` helper.
|
|
41
|
+
*
|
|
42
|
+
* Overrides the base implementation because the Bun SQL engine supports first-class identifier wrapping, which is more secure than manual quoting.
|
|
43
|
+
*
|
|
44
|
+
* @param name The identifier (table or column name) to escape.
|
|
45
|
+
* @returns An `SQLFragment` wrapping the escaped identifier.
|
|
46
|
+
* @example provider.sqlIdentifier("items")
|
|
47
|
+
* @see https://dhoulb.github.io/shelving/bun/BunPostgreSQLProvider/BunPostgreSQLProvider/sqlIdentifier
|
|
48
|
+
*/
|
|
13
49
|
sqlIdentifier(name) {
|
|
14
50
|
return this.sql `${this._sql(name)}`;
|
|
15
51
|
}
|
|
@@ -4,12 +4,39 @@ import type { Data } from "../util/data.js";
|
|
|
4
4
|
import type { Identifier } from "../util/item.js";
|
|
5
5
|
import type { D1Database } from "./types.js";
|
|
6
6
|
/**
|
|
7
|
-
*
|
|
7
|
+
* SQLite database provider backed by Cloudflare D1.
|
|
8
8
|
*
|
|
9
|
-
*
|
|
9
|
+
* Implements the `SQLiteProvider` SQL abstraction by binding tagged-template queries and running them through the D1 Worker API.
|
|
10
|
+
* - Tagged-template values are flattened into positional `?` bindings; nested `SQLFragment` values are inlined recursively.
|
|
11
|
+
* - Array and plain-object values are JSON-encoded before binding; other non-primitive values throw `ValueError`.
|
|
12
|
+
* - The `D1Database` binding is provided by the Cloudflare Workers runtime environment.
|
|
13
|
+
*
|
|
14
|
+
* @example
|
|
15
|
+
* // `env.DB` is the D1 binding from the Worker environment.
|
|
16
|
+
* const provider = new CloudflareD1Provider(env.DB);
|
|
17
|
+
*
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareD1Provider/CloudflareD1Provider
|
|
10
19
|
*/
|
|
11
20
|
export declare class CloudflareD1Provider<I extends Identifier = Identifier, T extends Data = Data> extends SQLiteProvider<I, T> {
|
|
12
21
|
private readonly _db;
|
|
22
|
+
/**
|
|
23
|
+
* Create a provider wrapping a Cloudflare D1 database binding.
|
|
24
|
+
*
|
|
25
|
+
* @param db The `D1Database` binding from the Worker environment.
|
|
26
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareD1Provider/CloudflareD1Provider
|
|
27
|
+
*/
|
|
13
28
|
constructor(db: D1Database);
|
|
29
|
+
/**
|
|
30
|
+
* Execute an SQL query through the Cloudflare D1 Worker API.
|
|
31
|
+
*
|
|
32
|
+
* Converts the tagged-template query into a parameterised statement, binds its values, and runs it via `prepare().bind().run()`.
|
|
33
|
+
*
|
|
34
|
+
* @param strings The tagged-template string parts of the query.
|
|
35
|
+
* @param values The interpolated values, bound as positional parameters or inlined `SQLFragment` instances.
|
|
36
|
+
* @returns Promise resolving to the array of result rows (empty if D1 returns no results).
|
|
37
|
+
* @throws {ValueError} If a value cannot be converted to a D1 binding.
|
|
38
|
+
* @example provider.exec`SELECT * FROM ${provider.sqlIdentifier("items")}`
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareD1Provider/CloudflareD1Provider/exec
|
|
40
|
+
*/
|
|
14
41
|
exec<X extends Data>(strings: TemplateStringsArray, ...values: ImmutableArray<unknown>): Promise<readonly X[]>;
|
|
15
42
|
}
|
|
@@ -3,16 +3,43 @@ import { ValueError } from "../error/ValueError.js";
|
|
|
3
3
|
import { isArray } from "../util/array.js";
|
|
4
4
|
import { isPlainObject } from "../util/object.js";
|
|
5
5
|
/**
|
|
6
|
-
*
|
|
6
|
+
* SQLite database provider backed by Cloudflare D1.
|
|
7
7
|
*
|
|
8
|
-
*
|
|
8
|
+
* Implements the `SQLiteProvider` SQL abstraction by binding tagged-template queries and running them through the D1 Worker API.
|
|
9
|
+
* - Tagged-template values are flattened into positional `?` bindings; nested `SQLFragment` values are inlined recursively.
|
|
10
|
+
* - Array and plain-object values are JSON-encoded before binding; other non-primitive values throw `ValueError`.
|
|
11
|
+
* - The `D1Database` binding is provided by the Cloudflare Workers runtime environment.
|
|
12
|
+
*
|
|
13
|
+
* @example
|
|
14
|
+
* // `env.DB` is the D1 binding from the Worker environment.
|
|
15
|
+
* const provider = new CloudflareD1Provider(env.DB);
|
|
16
|
+
*
|
|
17
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareD1Provider/CloudflareD1Provider
|
|
9
18
|
*/
|
|
10
19
|
export class CloudflareD1Provider extends SQLiteProvider {
|
|
11
20
|
_db;
|
|
21
|
+
/**
|
|
22
|
+
* Create a provider wrapping a Cloudflare D1 database binding.
|
|
23
|
+
*
|
|
24
|
+
* @param db The `D1Database` binding from the Worker environment.
|
|
25
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareD1Provider/CloudflareD1Provider
|
|
26
|
+
*/
|
|
12
27
|
constructor(db) {
|
|
13
28
|
super();
|
|
14
29
|
this._db = db;
|
|
15
30
|
}
|
|
31
|
+
/**
|
|
32
|
+
* Execute an SQL query through the Cloudflare D1 Worker API.
|
|
33
|
+
*
|
|
34
|
+
* Converts the tagged-template query into a parameterised statement, binds its values, and runs it via `prepare().bind().run()`.
|
|
35
|
+
*
|
|
36
|
+
* @param strings The tagged-template string parts of the query.
|
|
37
|
+
* @param values The interpolated values, bound as positional parameters or inlined `SQLFragment` instances.
|
|
38
|
+
* @returns Promise resolving to the array of result rows (empty if D1 returns no results).
|
|
39
|
+
* @throws {ValueError} If a value cannot be converted to a D1 binding.
|
|
40
|
+
* @example provider.exec`SELECT * FROM ${provider.sqlIdentifier("items")}`
|
|
41
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareD1Provider/CloudflareD1Provider/exec
|
|
42
|
+
*/
|
|
16
43
|
async exec(strings, ...values) {
|
|
17
44
|
const { query, values: bindings } = _getD1Query(strings, values, this.exec);
|
|
18
45
|
const result = await this._db
|
|
@@ -26,19 +26,134 @@ import type { KVNamespace } from "./types.js";
|
|
|
26
26
|
* - **Single-key store only:** This provider is intentionally limited to direct key reads and writes.
|
|
27
27
|
* If you need collection queries, filtering, sorting, or bulk mutations, use a different backend.
|
|
28
28
|
* - **Eventual consistency:** KV is eventually consistent, so reads may briefly return stale values shortly after writes.
|
|
29
|
+
*
|
|
30
|
+
* @example
|
|
31
|
+
* // `env.KV` is the KV namespace binding from the Worker environment.
|
|
32
|
+
* const provider = new CloudflareKVProvider(env.KV);
|
|
33
|
+
*
|
|
34
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider
|
|
29
35
|
*/
|
|
30
36
|
export declare class CloudflareKVProvider<I extends string = string, T extends Data = Data> extends DBProvider<I, T> {
|
|
31
37
|
private readonly _kv;
|
|
38
|
+
/**
|
|
39
|
+
* Create a provider wrapping a Cloudflare Workers KV namespace binding.
|
|
40
|
+
*
|
|
41
|
+
* @param kv The `KVNamespace` binding from the Worker environment.
|
|
42
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider
|
|
43
|
+
*/
|
|
32
44
|
constructor(kv: KVNamespace);
|
|
45
|
+
/**
|
|
46
|
+
* Read a single item by ID from the KV namespace.
|
|
47
|
+
*
|
|
48
|
+
* @param collection The collection the item belongs to (only its `name` is used to form the key).
|
|
49
|
+
* @param id The ID of the item to read.
|
|
50
|
+
* @returns Promise resolving to the item, or `undefined` if no value exists for the key.
|
|
51
|
+
* @example await provider.getItem(users, "abc123")
|
|
52
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getItem
|
|
53
|
+
*/
|
|
33
54
|
getItem<II extends I, TT extends T>({ name }: Collection<string, II, TT>, id: II): Promise<OptionalItem<II, TT>>;
|
|
55
|
+
/**
|
|
56
|
+
* Not supported — KV has no change feed or push notification mechanism.
|
|
57
|
+
*
|
|
58
|
+
* @param collection The collection the item belongs to.
|
|
59
|
+
* @param id The ID of the item to subscribe to.
|
|
60
|
+
* @returns Never returns normally.
|
|
61
|
+
* @throws {UnimplementedError} Always, because KV does not support realtime subscriptions.
|
|
62
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getItemSequence
|
|
63
|
+
*/
|
|
34
64
|
getItemSequence<II extends I, TT extends T>(_collection: Collection<string, II, TT>, _id: II): OptionalItemSequence<II, TT>;
|
|
65
|
+
/**
|
|
66
|
+
* Add an item with an automatically generated UUID v4 identifier.
|
|
67
|
+
*
|
|
68
|
+
* @param collection The collection to add the item to (only its `name` is used to form the key).
|
|
69
|
+
* @param data The data for the new item.
|
|
70
|
+
* @returns Promise resolving to the generated ID of the new item.
|
|
71
|
+
* @example const id = await provider.addItem(users, { name: "Dave" })
|
|
72
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/addItem
|
|
73
|
+
*/
|
|
35
74
|
addItem<II extends I, TT extends T>({ name }: Collection<string, II, TT>, data: TT): Promise<II>;
|
|
75
|
+
/**
|
|
76
|
+
* Write an item by ID, overwriting any existing value.
|
|
77
|
+
*
|
|
78
|
+
* @param collection The collection the item belongs to (only its `name` is used to form the key).
|
|
79
|
+
* @param id The ID of the item to write.
|
|
80
|
+
* @param data The data to store for the item.
|
|
81
|
+
* @returns Promise resolving once the write completes.
|
|
82
|
+
* @example await provider.setItem(users, "abc123", { name: "Dave" })
|
|
83
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/setItem
|
|
84
|
+
*/
|
|
36
85
|
setItem<II extends I, TT extends T>({ name }: Collection<string, II, TT>, id: II, data: TT): Promise<void>;
|
|
86
|
+
/**
|
|
87
|
+
* Not supported — KV cannot apply partial updates atomically.
|
|
88
|
+
*
|
|
89
|
+
* @param collection The collection the item belongs to.
|
|
90
|
+
* @param id The ID of the item to update.
|
|
91
|
+
* @param updates The updates to apply.
|
|
92
|
+
* @returns Never returns normally.
|
|
93
|
+
* @throws {UnimplementedError} Always, because KV does not support item updates.
|
|
94
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/updateItem
|
|
95
|
+
*/
|
|
37
96
|
updateItem<II extends I, TT extends T>(_collection: Collection<string, II, TT>, _id: II, _updates: Updates<Item<II, TT>>): Promise<void>;
|
|
97
|
+
/**
|
|
98
|
+
* Delete an item by ID from the KV namespace.
|
|
99
|
+
*
|
|
100
|
+
* @param collection The collection the item belongs to (only its `name` is used to form the key).
|
|
101
|
+
* @param id The ID of the item to delete.
|
|
102
|
+
* @returns Promise resolving once the deletion completes.
|
|
103
|
+
* @example await provider.deleteItem(users, "abc123")
|
|
104
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/deleteItem
|
|
105
|
+
*/
|
|
38
106
|
deleteItem<II extends I, TT extends T>({ name }: Collection<string, II, TT>, id: II): Promise<void>;
|
|
107
|
+
/**
|
|
108
|
+
* Not supported — KV cannot efficiently filter, sort, or scan collections.
|
|
109
|
+
*
|
|
110
|
+
* @param collection The collection to query.
|
|
111
|
+
* @param query The query to run.
|
|
112
|
+
* @returns Never returns normally.
|
|
113
|
+
* @throws {UnimplementedError} Always, because KV does not support collection queries.
|
|
114
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getQuery
|
|
115
|
+
*/
|
|
39
116
|
getQuery<II extends I, TT extends T>(_collection: Collection<string, II, TT>, _query?: Query<Item<II, TT>>): Promise<Items<II, TT>>;
|
|
117
|
+
/**
|
|
118
|
+
* Not supported — KV has no change feed and cannot run collection queries.
|
|
119
|
+
*
|
|
120
|
+
* @param collection The collection to query.
|
|
121
|
+
* @param query The query to subscribe to.
|
|
122
|
+
* @returns Never returns normally.
|
|
123
|
+
* @throws {UnimplementedError} Always, because KV does not support realtime subscriptions.
|
|
124
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getQuerySequence
|
|
125
|
+
*/
|
|
40
126
|
getQuerySequence<II extends I, TT extends T>(_collection: Collection<string, II, TT>, _query?: Query<Item<II, TT>>): ItemsSequence<II, TT>;
|
|
127
|
+
/**
|
|
128
|
+
* Not supported — KV cannot run the collection query needed to target matching items.
|
|
129
|
+
*
|
|
130
|
+
* @param collection The collection to query.
|
|
131
|
+
* @param query The query selecting items to write.
|
|
132
|
+
* @param data The data to write to each matching item.
|
|
133
|
+
* @returns Never returns normally.
|
|
134
|
+
* @throws {UnimplementedError} Always, because KV does not support collection queries.
|
|
135
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/setQuery
|
|
136
|
+
*/
|
|
41
137
|
setQuery<II extends I, TT extends T>(_collection: Collection<string, II, TT>, _query: Query<Item<II, TT>>, _data: TT): Promise<void>;
|
|
138
|
+
/**
|
|
139
|
+
* Not supported — KV supports neither updates nor collection queries.
|
|
140
|
+
*
|
|
141
|
+
* @param collection The collection to query.
|
|
142
|
+
* @param query The query selecting items to update.
|
|
143
|
+
* @param updates The updates to apply to each matching item.
|
|
144
|
+
* @returns Never returns normally.
|
|
145
|
+
* @throws {UnimplementedError} Always, because KV does not support item updates.
|
|
146
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/updateQuery
|
|
147
|
+
*/
|
|
42
148
|
updateQuery<II extends I, TT extends T>(_collection: Collection<string, II, TT>, _query: Query<Item<II, TT>>, _updates: Updates<TT>): Promise<void>;
|
|
149
|
+
/**
|
|
150
|
+
* Not supported — KV cannot run the collection query needed to target matching items.
|
|
151
|
+
*
|
|
152
|
+
* @param collection The collection to query.
|
|
153
|
+
* @param query The query selecting items to delete.
|
|
154
|
+
* @returns Never returns normally.
|
|
155
|
+
* @throws {UnimplementedError} Always, because KV does not support collection queries.
|
|
156
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/deleteQuery
|
|
157
|
+
*/
|
|
43
158
|
deleteQuery<II extends I, TT extends T>(_collection: Collection<string, II, TT>, _query: Query<Item<II, TT>>): Promise<void>;
|
|
44
159
|
}
|
|
@@ -23,47 +23,162 @@ import { randomUUID } from "../util/uuid.js";
|
|
|
23
23
|
* - **Single-key store only:** This provider is intentionally limited to direct key reads and writes.
|
|
24
24
|
* If you need collection queries, filtering, sorting, or bulk mutations, use a different backend.
|
|
25
25
|
* - **Eventual consistency:** KV is eventually consistent, so reads may briefly return stale values shortly after writes.
|
|
26
|
+
*
|
|
27
|
+
* @example
|
|
28
|
+
* // `env.KV` is the KV namespace binding from the Worker environment.
|
|
29
|
+
* const provider = new CloudflareKVProvider(env.KV);
|
|
30
|
+
*
|
|
31
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider
|
|
26
32
|
*/
|
|
27
33
|
export class CloudflareKVProvider extends DBProvider {
|
|
28
34
|
_kv;
|
|
35
|
+
/**
|
|
36
|
+
* Create a provider wrapping a Cloudflare Workers KV namespace binding.
|
|
37
|
+
*
|
|
38
|
+
* @param kv The `KVNamespace` binding from the Worker environment.
|
|
39
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider
|
|
40
|
+
*/
|
|
29
41
|
constructor(kv) {
|
|
30
42
|
super();
|
|
31
43
|
this._kv = kv;
|
|
32
44
|
}
|
|
45
|
+
/**
|
|
46
|
+
* Read a single item by ID from the KV namespace.
|
|
47
|
+
*
|
|
48
|
+
* @param collection The collection the item belongs to (only its `name` is used to form the key).
|
|
49
|
+
* @param id The ID of the item to read.
|
|
50
|
+
* @returns Promise resolving to the item, or `undefined` if no value exists for the key.
|
|
51
|
+
* @example await provider.getItem(users, "abc123")
|
|
52
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getItem
|
|
53
|
+
*/
|
|
33
54
|
async getItem({ name }, id) {
|
|
34
55
|
const data = (await this._kv.get(_getKey(name, id), { type: "json" })); // `as TT` needed: KV returns unknown from JSON parse.
|
|
35
56
|
if (data)
|
|
36
57
|
return getItem(id, data);
|
|
37
58
|
}
|
|
59
|
+
/**
|
|
60
|
+
* Not supported — KV has no change feed or push notification mechanism.
|
|
61
|
+
*
|
|
62
|
+
* @param collection The collection the item belongs to.
|
|
63
|
+
* @param id The ID of the item to subscribe to.
|
|
64
|
+
* @returns Never returns normally.
|
|
65
|
+
* @throws {UnimplementedError} Always, because KV does not support realtime subscriptions.
|
|
66
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getItemSequence
|
|
67
|
+
*/
|
|
38
68
|
getItemSequence(_collection, _id) {
|
|
39
69
|
throw new UnimplementedError("CloudflareKVProvider does not support realtime subscriptions");
|
|
40
70
|
}
|
|
71
|
+
/**
|
|
72
|
+
* Add an item with an automatically generated UUID v4 identifier.
|
|
73
|
+
*
|
|
74
|
+
* @param collection The collection to add the item to (only its `name` is used to form the key).
|
|
75
|
+
* @param data The data for the new item.
|
|
76
|
+
* @returns Promise resolving to the generated ID of the new item.
|
|
77
|
+
* @example const id = await provider.addItem(users, { name: "Dave" })
|
|
78
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/addItem
|
|
79
|
+
*/
|
|
41
80
|
async addItem({ name }, data) {
|
|
42
81
|
const id = randomUUID(); // `as II` needed: TypeScript can't narrow II from string return type.
|
|
43
82
|
await this._kv.put(_getKey(name, id), JSON.stringify(data));
|
|
44
83
|
return id;
|
|
45
84
|
}
|
|
85
|
+
/**
|
|
86
|
+
* Write an item by ID, overwriting any existing value.
|
|
87
|
+
*
|
|
88
|
+
* @param collection The collection the item belongs to (only its `name` is used to form the key).
|
|
89
|
+
* @param id The ID of the item to write.
|
|
90
|
+
* @param data The data to store for the item.
|
|
91
|
+
* @returns Promise resolving once the write completes.
|
|
92
|
+
* @example await provider.setItem(users, "abc123", { name: "Dave" })
|
|
93
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/setItem
|
|
94
|
+
*/
|
|
46
95
|
async setItem({ name }, id, data) {
|
|
47
96
|
await this._kv.put(_getKey(name, id), JSON.stringify(data));
|
|
48
97
|
}
|
|
98
|
+
/**
|
|
99
|
+
* Not supported — KV cannot apply partial updates atomically.
|
|
100
|
+
*
|
|
101
|
+
* @param collection The collection the item belongs to.
|
|
102
|
+
* @param id The ID of the item to update.
|
|
103
|
+
* @param updates The updates to apply.
|
|
104
|
+
* @returns Never returns normally.
|
|
105
|
+
* @throws {UnimplementedError} Always, because KV does not support item updates.
|
|
106
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/updateItem
|
|
107
|
+
*/
|
|
49
108
|
async updateItem(_collection, _id, _updates) {
|
|
50
109
|
throw new UnimplementedError("CloudflareKVProvider does not support updates to items");
|
|
51
110
|
}
|
|
111
|
+
/**
|
|
112
|
+
* Delete an item by ID from the KV namespace.
|
|
113
|
+
*
|
|
114
|
+
* @param collection The collection the item belongs to (only its `name` is used to form the key).
|
|
115
|
+
* @param id The ID of the item to delete.
|
|
116
|
+
* @returns Promise resolving once the deletion completes.
|
|
117
|
+
* @example await provider.deleteItem(users, "abc123")
|
|
118
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/deleteItem
|
|
119
|
+
*/
|
|
52
120
|
async deleteItem({ name }, id) {
|
|
53
121
|
await this._kv.delete(_getKey(name, id));
|
|
54
122
|
}
|
|
123
|
+
/**
|
|
124
|
+
* Not supported — KV cannot efficiently filter, sort, or scan collections.
|
|
125
|
+
*
|
|
126
|
+
* @param collection The collection to query.
|
|
127
|
+
* @param query The query to run.
|
|
128
|
+
* @returns Never returns normally.
|
|
129
|
+
* @throws {UnimplementedError} Always, because KV does not support collection queries.
|
|
130
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getQuery
|
|
131
|
+
*/
|
|
55
132
|
async getQuery(_collection, _query) {
|
|
56
133
|
throw new UnimplementedError("CloudflareKVProvider does not support querying items");
|
|
57
134
|
}
|
|
135
|
+
/**
|
|
136
|
+
* Not supported — KV has no change feed and cannot run collection queries.
|
|
137
|
+
*
|
|
138
|
+
* @param collection The collection to query.
|
|
139
|
+
* @param query The query to subscribe to.
|
|
140
|
+
* @returns Never returns normally.
|
|
141
|
+
* @throws {UnimplementedError} Always, because KV does not support realtime subscriptions.
|
|
142
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/getQuerySequence
|
|
143
|
+
*/
|
|
58
144
|
getQuerySequence(_collection, _query) {
|
|
59
145
|
throw new UnimplementedError("CloudflareKVProvider does not support realtime subscriptions");
|
|
60
146
|
}
|
|
147
|
+
/**
|
|
148
|
+
* Not supported — KV cannot run the collection query needed to target matching items.
|
|
149
|
+
*
|
|
150
|
+
* @param collection The collection to query.
|
|
151
|
+
* @param query The query selecting items to write.
|
|
152
|
+
* @param data The data to write to each matching item.
|
|
153
|
+
* @returns Never returns normally.
|
|
154
|
+
* @throws {UnimplementedError} Always, because KV does not support collection queries.
|
|
155
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/setQuery
|
|
156
|
+
*/
|
|
61
157
|
async setQuery(_collection, _query, _data) {
|
|
62
158
|
throw new UnimplementedError("CloudflareKVProvider does not support querying items");
|
|
63
159
|
}
|
|
160
|
+
/**
|
|
161
|
+
* Not supported — KV supports neither updates nor collection queries.
|
|
162
|
+
*
|
|
163
|
+
* @param collection The collection to query.
|
|
164
|
+
* @param query The query selecting items to update.
|
|
165
|
+
* @param updates The updates to apply to each matching item.
|
|
166
|
+
* @returns Never returns normally.
|
|
167
|
+
* @throws {UnimplementedError} Always, because KV does not support item updates.
|
|
168
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/updateQuery
|
|
169
|
+
*/
|
|
64
170
|
async updateQuery(_collection, _query, _updates) {
|
|
65
171
|
throw new UnimplementedError("CloudflareKVProvider does not support updates to items");
|
|
66
172
|
}
|
|
173
|
+
/**
|
|
174
|
+
* Not supported — KV cannot run the collection query needed to target matching items.
|
|
175
|
+
*
|
|
176
|
+
* @param collection The collection to query.
|
|
177
|
+
* @param query The query selecting items to delete.
|
|
178
|
+
* @returns Never returns normally.
|
|
179
|
+
* @throws {UnimplementedError} Always, because KV does not support collection queries.
|
|
180
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/CloudflareKVProvider/CloudflareKVProvider/deleteQuery
|
|
181
|
+
*/
|
|
67
182
|
async deleteQuery(_collection, _query) {
|
|
68
183
|
throw new UnimplementedError("CloudflareKVProvider does not support querying items");
|
|
69
184
|
}
|
package/cloudflare/types.d.ts
CHANGED
|
@@ -1,4 +1,10 @@
|
|
|
1
|
-
/**
|
|
1
|
+
/**
|
|
2
|
+
* Minimal interface matching the Cloudflare Workers KV namespace runtime object.
|
|
3
|
+
*
|
|
4
|
+
* Declares only the subset of methods `CloudflareKVProvider` uses, so the `@cloudflare/workers-types` package is not required as a dependency.
|
|
5
|
+
*
|
|
6
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/types/KVNamespace
|
|
7
|
+
*/
|
|
2
8
|
export interface KVNamespace {
|
|
3
9
|
get(key: string, options: {
|
|
4
10
|
type: "json";
|
|
@@ -6,9 +12,17 @@ export interface KVNamespace {
|
|
|
6
12
|
put(key: string, value: string): Promise<void>;
|
|
7
13
|
delete(key: string): Promise<void>;
|
|
8
14
|
}
|
|
9
|
-
/**
|
|
15
|
+
/**
|
|
16
|
+
* Value that can be passed through the D1 Worker API as a bound parameter.
|
|
17
|
+
*
|
|
18
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/types/D1Value
|
|
19
|
+
*/
|
|
10
20
|
export type D1Value = boolean | null | number | string;
|
|
11
|
-
/**
|
|
21
|
+
/**
|
|
22
|
+
* Metadata returned by the D1 Worker API alongside a query result.
|
|
23
|
+
*
|
|
24
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/types/D1Meta
|
|
25
|
+
*/
|
|
12
26
|
export interface D1Meta {
|
|
13
27
|
readonly changed_db?: boolean | undefined;
|
|
14
28
|
readonly duration?: number | undefined;
|
|
@@ -16,18 +30,32 @@ export interface D1Meta {
|
|
|
16
30
|
readonly rows_read?: number | undefined;
|
|
17
31
|
readonly rows_written?: number | undefined;
|
|
18
32
|
}
|
|
19
|
-
/**
|
|
33
|
+
/**
|
|
34
|
+
* Result object returned by `D1PreparedStatement.run()`.
|
|
35
|
+
*
|
|
36
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/types/D1Result
|
|
37
|
+
*/
|
|
20
38
|
export interface D1Result<T extends Record<string, unknown> = Record<string, unknown>> {
|
|
21
39
|
readonly success: boolean;
|
|
22
40
|
readonly meta?: D1Meta | undefined;
|
|
23
41
|
readonly results?: readonly T[] | undefined;
|
|
24
42
|
}
|
|
25
|
-
/**
|
|
43
|
+
/**
|
|
44
|
+
* Result object returned by `D1Database.exec()`.
|
|
45
|
+
*
|
|
46
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/types/D1ExecResult
|
|
47
|
+
*/
|
|
26
48
|
export interface D1ExecResult {
|
|
27
49
|
readonly count: number;
|
|
28
50
|
readonly duration: number;
|
|
29
51
|
}
|
|
30
|
-
/**
|
|
52
|
+
/**
|
|
53
|
+
* Minimal prepared statement interface for D1 databases and sessions.
|
|
54
|
+
*
|
|
55
|
+
* Declares only the subset of the D1 prepared-statement API used by `CloudflareD1Provider`.
|
|
56
|
+
*
|
|
57
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/types/D1PreparedStatement
|
|
58
|
+
*/
|
|
31
59
|
export interface D1PreparedStatement {
|
|
32
60
|
bind(...values: D1Value[]): D1PreparedStatement;
|
|
33
61
|
first<T = Record<string, unknown>>(column?: string): Promise<T | null>;
|
|
@@ -36,7 +64,13 @@ export interface D1PreparedStatement {
|
|
|
36
64
|
}): Promise<readonly T[]>;
|
|
37
65
|
run<T extends Record<string, unknown> = Record<string, unknown>>(): Promise<D1Result<T>>;
|
|
38
66
|
}
|
|
39
|
-
/**
|
|
67
|
+
/**
|
|
68
|
+
* Minimal D1 binding/session interface used by `CloudflareD1Provider`.
|
|
69
|
+
*
|
|
70
|
+
* Declares only the subset of the D1 binding API the provider needs, so the `@cloudflare/workers-types` package is not required as a dependency.
|
|
71
|
+
*
|
|
72
|
+
* @see https://dhoulb.github.io/shelving/cloudflare/types/D1Database
|
|
73
|
+
*/
|
|
40
74
|
export interface D1Database {
|
|
41
75
|
batch<T extends Record<string, unknown> = Record<string, unknown>>(statements: readonly D1PreparedStatement[]): Promise<readonly D1Result<T>[]>;
|
|
42
76
|
exec?(query: string): Promise<D1ExecResult>;
|