diff --git a/package.json b/package.json index 1c96aec..9ae73a7 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "escape-regexp": "0.0.1", "html-entities": "1.2.0", "request": "2.79.0", + "require-all": "2.1.0", "trace-redirect": "1.0.2-1" } } diff --git a/src/index.ts b/src/index.ts index d8a284d..67ae33b 100644 --- a/src/index.ts +++ b/src/index.ts @@ -4,31 +4,28 @@ import ISummary from './isummary'; import IPlugin from './iplugin'; import general from './general'; -/* plugins */ -import * as amazon from './plugins/amazon'; -import * as wikipedia from './plugins/wikipedia'; - -const plugins: IPlugin[] = [ - amazon, - wikipedia -]; +const plugins: IPlugin[] = require('require-all')({ + dirname: __dirname + '/plugins' +}); export default async (url: string): Promise => { const actualUrl = await tracer(url); const _url = URL.parse(actualUrl, true); - const plugin = plugins.filter(plugin => plugin.test(_url))[0]; + const match = Object.keys(plugins) + .map(key => plugins[key]) + .filter(plugin => plugin.test(_url))[0] as IPlugin; - const summary = plugin - ? await plugin.summary(_url) + const summary = match + ? await match.summary(_url) : await general(_url); Object.keys(summary).forEach(k => { - if ((summary)[k]) { - (summary)[k] = (summary)[k].trim(); - if ((summary)[k] === '') { - (summary)[k] = null; + if (summary[k]) { + summary[k] = summary[k].trim(); + if (summary[k] === '') { + summary[k] = null; } } });