UNPKG

@suites/unit

Version:

<p align="center"> <img width="200" src="https://raw.githubusercontent.com/suites-dev/suites/master/logo.png" alt="Logo" /> </p>

28 lines (27 loc) 885 B
export class PackageResolver { adapters; constructor(adapters) { this.adapters = adapters; } async resolveCorrespondingAdapter() { const resolvers = Object.keys(this.adapters); const adapterName = resolvers.find((resolverName) => this.packageIsAvailable(this.adapters[resolverName])); if (!adapterName) { throw new Error('Adapter not found'); } const adapter = await import(this.adapters[adapterName]); if (!Object.prototype.hasOwnProperty.call(adapter, 'adapter')) { throw new Error('Adapter has no export'); } return import(this.adapters[adapterName]).then((module) => module.adapter); } packageIsAvailable(path) { try { require.resolve(path); return true; } catch (e) { return false; } } }