Tools for learning Japanese.
Ви не можете вибрати більше 25 тем Теми мають розпочинатися з літери або цифри, можуть містити дефіси (-) і не повинні перевищувати 35 символів.

31 рядки
957 B

  1. import * as KanjidicImpl from './sources/kanjidic';
  2. import * as JmdictImpl from './sources/jmdict';
  3. const SUPPORTED_SOURCES = [
  4. KanjidicImpl,
  5. JmdictImpl,
  6. ] as const;
  7. export type CreateDownloaderParams = (
  8. KanjidicImpl.CreateDownloaderParams
  9. | JmdictImpl.CreateDownloaderParams
  10. );
  11. export * as Kanjidic from './sources/kanjidic';
  12. export * as Jmdict from './sources/jmdict';
  13. export * from './streams';
  14. export const createDownloader = (params: CreateDownloaderParams) => {
  15. const { type: sourceType, ...etcParams } = params;
  16. const theSourceModule = SUPPORTED_SOURCES
  17. .find((videoTypeModule) => videoTypeModule.SOURCE_ID === sourceType);
  18. if (!theSourceModule) {
  19. const validSourceTypes = SUPPORTED_SOURCES.map((videoTypeModule) => videoTypeModule.SOURCE_ID).join(', ');
  20. throw new TypeError(`Invalid source type: "${sourceType}". Valid values are: ${validSourceTypes}`);
  21. }
  22. return theSourceModule.createDownloader(etcParams);
  23. };