|
- import * as KanjidicImpl from './sources/kanjidic';
- import * as JMdictImpl from './sources/jmdict';
- import * as JMnedictImpl from './sources/jmnedict';
- import * as RadKFileImpl from './sources/radkfile';
- import * as KRadFileImpl from './sources/kradfile';
-
- const SUPPORTED_SOURCES = [
- KanjidicImpl,
- JMdictImpl,
- JMnedictImpl,
- RadKFileImpl,
- KRadFileImpl,
- ] as const;
-
- export type CreateDownloaderParams = (
- KanjidicImpl.CreateDownloaderParams
- | JMdictImpl.CreateDownloaderParams
- | JMnedictImpl.CreateDownloaderParams
- | RadKFileImpl.CreateDownloaderParams
- | KRadFileImpl.CreateDownloaderParams
- );
-
- export * as Kanjidic from './sources/kanjidic';
- export * as JMdict from './sources/jmdict';
- export * as JMnedict from './sources/jmnedict';
- export * as RadKFile from './sources/radkfile';
- export * as KRadFile from './sources/kradfile';
- export * from './streams';
-
- export const createDownloader = (params: CreateDownloaderParams) => {
- const { type: sourceType, ...etcParams } = params;
-
- const theSourceModule = SUPPORTED_SOURCES
- .find((videoTypeModule) => videoTypeModule.SOURCE_ID === sourceType);
-
- if (!theSourceModule) {
- const validSourceTypes = SUPPORTED_SOURCES.map((videoTypeModule) => videoTypeModule.SOURCE_ID).join(', ');
- throw new TypeError(`Invalid source type: "${sourceType}". Valid values are: ${validSourceTypes}`);
- }
-
- return theSourceModule.createDownloader(etcParams);
- };
|