Tools for learning Japanese.
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

43 lignes
1.4 KiB

  1. import * as KanjidicImpl from './sources/kanjidic';
  2. import * as JMdictImpl from './sources/jmdict';
  3. import * as JMnedictImpl from './sources/jmnedict';
  4. import * as RadKFileImpl from './sources/radkfile';
  5. import * as KRadFileImpl from './sources/kradfile';
  6. const SUPPORTED_SOURCES = [
  7. KanjidicImpl,
  8. JMdictImpl,
  9. JMnedictImpl,
  10. RadKFileImpl,
  11. KRadFileImpl,
  12. ] as const;
  13. export type CreateDownloaderParams = (
  14. KanjidicImpl.CreateDownloaderParams
  15. | JMdictImpl.CreateDownloaderParams
  16. | JMnedictImpl.CreateDownloaderParams
  17. | RadKFileImpl.CreateDownloaderParams
  18. | KRadFileImpl.CreateDownloaderParams
  19. );
  20. export * as Kanjidic from './sources/kanjidic';
  21. export * as JMdict from './sources/jmdict';
  22. export * as JMnedict from './sources/jmnedict';
  23. export * as RadKFile from './sources/radkfile';
  24. export * as KRadFile from './sources/kradfile';
  25. export * from './streams';
  26. export const createDownloader = (params: CreateDownloaderParams) => {
  27. const { type: sourceType, ...etcParams } = params;
  28. const theSourceModule = SUPPORTED_SOURCES
  29. .find((videoTypeModule) => videoTypeModule.SOURCE_ID === sourceType);
  30. if (!theSourceModule) {
  31. const validSourceTypes = SUPPORTED_SOURCES.map((videoTypeModule) => videoTypeModule.SOURCE_ID).join(', ');
  32. throw new TypeError(`Invalid source type: "${sourceType}". Valid values are: ${validSourceTypes}`);
  33. }
  34. return theSourceModule.createDownloader(etcParams);
  35. };