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);
};