export default async()

in modules/material-parser/src/parse/index.ts [25:80]


export default async (args: IParseArgs) => {
  const {
    typingsFileAbsolutePath,
    mainFileAbsolutePath,
    moduleFileAbsolutePath = mainFileAbsolutePath,
    useEntry = false,
  } = args;
  if (args.accesser === 'local') {
    if (isTSLike(mainFileAbsolutePath)) {
      await install(args);
      // in case the developer forgets to install types
      await installTypeDTS(args);
      return parseTS(mainFileAbsolutePath, args);
    } else if (typingsFileAbsolutePath) {
      await installTypeDTS(args);
      return parseTS(typingsFileAbsolutePath, args);
    } else {
      try {
        return parseJS(moduleFileAbsolutePath || mainFileAbsolutePath);
      } catch (e) {
        log(e);
        await install(args);
        const info = parseDynamic(mainFileAbsolutePath);
        if (!info || !info.length) {
          throw Error();
        }
        return info;
      }
    }
  } else if (args.accesser === 'online') {
    // ts
    const entryPath = useEntry ? mainFileAbsolutePath : typingsFileAbsolutePath;
    if (entryPath && isTSLike(entryPath)) {
      await syncTypeModules(args);
      await install(args);
      await installTypeDTS(args);
      await installPeerAndDevDeps(args);
      return parseTS(entryPath, args);
    }
    // js
    try {
      // try dynamic parsing first
      await installPeerAndDevDeps(args);
      const info = parseDynamic(mainFileAbsolutePath);
      if (!info || !info.length) {
        throw Error();
      }
      return info;
    } catch (e) {
      log(e);
      // if error, use static js parsing instead
      return parseJS(moduleFileAbsolutePath || mainFileAbsolutePath);
    }
  }
  return parseJS(moduleFileAbsolutePath || mainFileAbsolutePath);
};