UNPKG

@brighter/storage

Version:

A JavaScript object storage library that enables local development.

64 lines (53 loc) 1.26 kB
import { providers } from './providers/index.js' import { Util } from './util/index.js' // prettier-ignore import { copyApi, existsApi, listApi, readApi, removeApi, statApi, writeApi, presignApi } from './api/index.js' // prettier-ignore const createConfig = (config = {}) => Object.assign({ encoding: 'utf8', concurrency: 32 }, config) const createProvider = (config, dependencies = {}) => { if (!providers[config.type]) { throw new Error(`Unknown provider type '${config.type}'.`) } return providers[config.type](config, dependencies) } const Storage = (config, dependencies) => { const providerConfig = createConfig(config) const provider = createProvider(providerConfig, dependencies) const ctx = { provider, util: Util({ config: providerConfig }) } const exists = existsApi(ctx) const stat = statApi(ctx) const write = writeApi(ctx) const read = readApi(ctx) const presign = presignApi(ctx) const list = listApi({ ...ctx, exists }) const copy = copyApi({ ...ctx, exists, list }) const remove = removeApi({ ...ctx, list }) return { config, client: provider.client, exists, copy, list, read, remove, stat, write, presign } } export { Storage }