Skip to main content

FileStorageResolver

The FileStorageResolver class provides a flexible way to configure and switch between different FileStorage adapters at runtime.

Initial configuration​

To begin using the IFileStorageFactory, You will need to register all required adapters during initialization.

./samples/file-storage-resolver-initial-config.ts
import { FileStorageResolver } from "eridu-tech/file-storage";
import { MemoryFileStorageAdapter } from "eridu-tech/file-storage/memory-file-storage-adapter";
import { FsFileStorageAdapter } from "eridu-tech/file-storage/fs-file-storage-adapter";
import { SignedFileStorageAdapter } from "eridu-tech/file-storage/signed-file-storage-adapter";

export const fileStorageResolver = new FileStorageResolver({
adapters: {
memory: new SignedFileStorageAdapter({
adapter: new MemoryFileStorageAdapter(),
urlAdapter: {},
}),
fs: new SignedFileStorageAdapter({
adapter: new FsFileStorageAdapter(),
urlAdapter: {},
}),
},
// You can set an optional default adapter
defaultAdapter: "memory",
});

Usage​

1. Using the default adapter​

./samples/file-storage-resolver-default-adapter.ts
import { fileStorageResolver } from "./file-storage-resolver-initial-config.js";

await fileStorageResolver
.use()
.create("file.txt")
.add({ data: "Text file content" });
danger

Note that if you dont set a default adapter, an error will be thrown.

2. Specifying an adapter explicitly​

./samples/file-storage-resolver-specific-adapter.ts
import { fileStorageResolver } from "./file-storage-resolver-initial-config.js";

await fileStorageResolver
.use("fs")
.create("file.txt")
.add({ data: "Text file content" });
danger

Note that if you specify a non-existent adapter, an error will be thrown.

3. Overriding default settings​

./samples/file-storage-resolver-override-settings.ts
import { fileStorageResolver } from "./file-storage-resolver-initial-config.js";

await fileStorageResolver
.setDefaultCacheControl("public, max-age=31536000")
.use("fs")
.create("file.txt")
.add({ data: "Text file content" });
info

Note that the FileStorageResolver is immutable, meaning any configuration override returns a new instance rather than modifying the existing one.

Further information​

For further information refer to eridu-tech/file-storage API docs.