(adapter, defaultAdapter, options)
| 10 | * @returns {Object} the loaded adapter |
| 11 | */ |
| 12 | export function loadAdapter<T>(adapter, defaultAdapter, options): T { |
| 13 | if (!adapter) { |
| 14 | if (!defaultAdapter) { |
| 15 | return options; |
| 16 | } |
| 17 | // Load from the default adapter when no adapter is set |
| 18 | return loadAdapter(defaultAdapter, undefined, options); |
| 19 | } else if (typeof adapter === 'function') { |
| 20 | try { |
| 21 | return adapter(options); |
| 22 | } catch (e) { |
| 23 | if (e.name === 'TypeError') { |
| 24 | var Adapter = adapter; |
| 25 | return new Adapter(options); |
| 26 | } else { |
| 27 | throw e; |
| 28 | } |
| 29 | } |
| 30 | } else if (typeof adapter === 'string') { |
| 31 | adapter = require(adapter); |
| 32 | // If it's define as a module, get the default |
| 33 | if (adapter.default) { |
| 34 | adapter = adapter.default; |
| 35 | } |
| 36 | return loadAdapter(adapter, undefined, options); |
| 37 | } else if (adapter.module) { |
| 38 | return loadAdapter(adapter.module, undefined, adapter.options); |
| 39 | } else if (adapter.class) { |
| 40 | return loadAdapter(adapter.class, undefined, adapter.options); |
| 41 | } else if (adapter.adapter) { |
| 42 | return loadAdapter(adapter.adapter, undefined, adapter.options); |
| 43 | } |
| 44 | // return the adapter as provided |
| 45 | return adapter; |
| 46 | } |
| 47 | |
| 48 | export async function loadModule(modulePath) { |
| 49 | const module = await import(modulePath); |
no outgoing calls
no test coverage detected