@voyant-travel/storage
v0.115.1
Published
Vendor-neutral object storage contracts and built-in Node providers for Voyant.
Downloads
62,041
Readme
@voyant-travel/storage
Vendor-neutral object storage contracts and built-in Node providers for Voyant.
Providers
memorykeeps objects in process for local development and tests.s3-compatibleuses AWS SDK v3 for AWS S3 and compatible services such as Cloudflare R2, Google Cloud Storage's XML API, and MinIO.customloads a selectedstorage.objectprovider from an adapter package.
Deployments select the provider through deployment.providers.storage.
Credentials configure the selected provider; their presence never changes the
selection. Application code resolves logical media and documents stores and
does not depend on vendor bucket bindings.
import { createS3CompatibleStorageProvider } from "@voyant-travel/storage/providers/s3-compatible"
const documents = createS3CompatibleStorageProvider({
region: "us-east-1",
bucket: "documents",
// endpoint and explicit credentials are optional for normal AWS SDK resolution.
})Adapter packages can verify custom implementations with
assertStorageProviderConformance from @voyant-travel/storage/conformance.
They declare the provider in their package-owned Voyant manifest:
import { definePlugin } from "@voyant-travel/core/project"
export default definePlugin({
id: "@acme/voyant-storage",
config: [
{ id: "@acme/voyant-storage#config.endpoint", key: "STORAGE_ENDPOINT" },
],
secrets: [
{ id: "@acme/voyant-storage#secret.token", key: "STORAGE_TOKEN", required: true },
],
providers: [
{
id: "@acme/voyant-storage#provider.custom",
port: "storage.object",
selection: { role: "storage", value: "custom" },
uses: {
config: ["@acme/voyant-storage#config.endpoint"],
secrets: ["@acme/voyant-storage#secret.token"],
},
runtime: {
entry: "@acme/voyant-storage/provider",
export: "createStorageResolver",
},
},
],
})The factory returns a StorageProviderResolver. Boot fails when custom is
selected but the graph has no matching provider. Embedded hosts and tests may
still pass an explicit resolver through
createVoyantProjectServerEntry({ host: { storage } }).
Provider factories may read only the unit-owned config, secret, and resource
declaration IDs listed in uses. Port-scoped boot therefore does not validate
unrelated settings from a multi-provider plugin package.
Exports
| Entry | Description |
| --- | --- |
| . | Storage contracts and service helpers |
| ./types | StorageProvider and StorageProviderResolver |
| ./conformance | Portable provider conformance runner |
| ./providers/local | In-memory provider |
| ./providers/s3-compatible | AWS SDK v3 S3-compatible provider |
License
Apache-2.0
