Update typedoc and fix doc json gen

This commit is contained in:
Max Lynch 2021-09-24 14:25:04 -05:00
parent 8652097906
commit 3c35fa6df0
4 changed files with 18014 additions and 107 deletions

18077
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -64,7 +64,7 @@
"tslint": "~6.1.0",
"tslint-config-prettier": "^1.18.0",
"tslint-ionic-rules": "0.0.21",
"typedoc": "^0.22.3",
"typedoc": "^0.22.4",
"typescript": "4.1.6",
"typescript-tslint-plugin": "^1.0.1",
"uglifyjs-webpack-plugin": "^2.2.0",

View File

@ -27,31 +27,42 @@ const typedoc = new Application();
typedoc.options.addReader(new TypeDoc.TSConfigReader());
typedoc.options.addReader(new TypeDoc.TypeDocReader());
typedoc.bootstrap({
mode: 'modules',
ignoreCompilerErrors: true,
});
run(pluginsDir);
async function run(pluginsDir: string) {
const typedocData = await generateTypedoc(pluginsDir);
const modules = typedocData.children.filter(isModule);
const plugins = modules.filter(hasPlugin).map(processPlugin);
await fs.outputJson(resolve(__dirname, 'plugins.json'), plugins, {
spaces: 2,
});
try {
const typedocData = await generateTypedoc(pluginsDir);
const modules = typedocData.children.filter(isModule);
const plugins = modules.filter(hasPlugin).map(processPlugin);
await fs.outputJson(resolve(__dirname, 'plugins.json'), plugins, {
spaces: 2,
});
} catch (e) {
console.error('Unable to generate typedoc', e);
}
}
async function generateTypedoc(root: string, outputPath = typedocTmp) {
const pluginDirs = await fs.readdir(root);
const paths = pluginDirs.map(dir => resolve(root, dir, 'index.ts'));
typedoc.generateJson(paths, outputPath);
typedoc.bootstrap({
/*
mode: 'modules',
ignoreCompilerErrors: true,
*/
entryPoints: paths,
tsconfig: `tsconfig.json`,
});
const project = typedoc.converter.convert(typedoc.getEntryPoints() ?? []);
await typedoc.generateJson(project, outputPath);
return fs.readJson(outputPath);
}
function processPlugin(pluginModule): Plugin {
const pluginClass = pluginModule.children.find(isPlugin);
console.log(pluginClass);
const decorator = getPluginDecorator(pluginClass);
const packageName = `@ionic-native/${basename(dirname(pluginModule.originalName))}`;
const displayName = getTag(pluginClass, 'name');
@ -84,6 +95,8 @@ function processPlugin(pluginModule): Plugin {
const getPluginDecorator = (child: any) => {
if (isPlugin(child)) {
const decorator = child.decorators.find(d => d.name === 'Plugin');
console.log('Found decorator', decorator.arguments, child);
return runInNewContext(`(${decorator.arguments.config})`);
}
};

View File

@ -4,7 +4,10 @@
"target": "es5",
"moduleResolution": "node",
"noImplicitAny": false,
"lib": ["es6"]
"lib": ["es6"],
"paths": {
"@ionic-native/core": ["../src/@ionic-native/core"]
}
},
"exclude": ["node_modules"]
}