aboutsummaryrefslogtreecommitdiff
path: root/node_modules/typedoc/dist/lib/utils/plugins.js.map
diff options
context:
space:
mode:
Diffstat (limited to 'node_modules/typedoc/dist/lib/utils/plugins.js.map')
-rw-r--r--node_modules/typedoc/dist/lib/utils/plugins.js.map2
1 files changed, 1 insertions, 1 deletions
diff --git a/node_modules/typedoc/dist/lib/utils/plugins.js.map b/node_modules/typedoc/dist/lib/utils/plugins.js.map
index 835106b21..f1db89114 100644
--- a/node_modules/typedoc/dist/lib/utils/plugins.js.map
+++ b/node_modules/typedoc/dist/lib/utils/plugins.js.map
@@ -1 +1 @@
-{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/lib/utils/plugins.ts"],"names":[],"mappings":"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","sourcesContent":["import * as FS from 'fs';\nimport * as Path from 'path';\nimport * as Util from 'util';\n\nimport {Application} from '../application';\nimport {AbstractComponent, Component, Option} from './component';\nimport {ParameterType} from './options/declaration';\n\n@Component({name: 'plugin-host', internal: true})\nexport class PluginHost extends AbstractComponent<Application> {\n @Option({\n name: 'plugin',\n help: 'Specify the npm plugins that should be loaded. Omit to load all installed plugins, set to \\'none\\' to load no plugins.',\n type: ParameterType.String,\n isArray: true\n })\n plugins: string[];\n\n /**\n * Load the given list of npm plugins.\n *\n * @param plugins A list of npm modules that should be loaded as plugins. When not specified\n * this function will invoke [[discoverNpmPlugins]] to find a list of all installed plugins.\n * @returns TRUE on success, otherwise FALSE.\n */\n load(): boolean {\n const logger = this.application.logger;\n const plugins = this.plugins || this.discoverNpmPlugins();\n\n let i: number, c: number = plugins.length;\n for (i = 0; i < c; i++) {\n const plugin = plugins[i];\n if (typeof plugin !== 'string') {\n logger.error('Unknown plugin %s', plugin);\n return false;\n } else if (plugin.toLowerCase() === 'none') {\n return true;\n }\n }\n\n for (i = 0; i < c; i++) {\n const plugin = plugins[i];\n try {\n const instance = require(plugin);\n if (typeof instance === 'function') {\n instance(this);\n logger.write('Loaded plugin %s', plugin);\n } else {\n logger.error('The plugin %s did not return a function.', plugin);\n }\n } catch (error) {\n logger.error('The plugin %s could not be loaded.', plugin);\n logger.writeln(error.stack);\n }\n }\n }\n\n /**\n * Discover all installed TypeDoc plugins.\n *\n * @returns A list of all npm module names that are qualified TypeDoc plugins.\n */\n private discoverNpmPlugins(): string[] {\n const result: string[] = [];\n const logger = this.application.logger;\n discover();\n return result;\n\n /**\n * Find all parent folders containing a `node_modules` subdirectory.\n */\n function discover() {\n let path = process.cwd(), previous: string;\n do {\n const modules = Path.join(path, 'node_modules');\n if (FS.existsSync(modules) && FS.lstatSync(modules).isDirectory()) {\n discoverModules(modules);\n }\n\n previous = path;\n path = Path.resolve(Path.join(previous, '..'));\n } while (previous !== path);\n }\n\n /**\n * Scan the given `node_modules` directory for TypeDoc plugins.\n */\n function discoverModules(basePath: string) {\n FS.readdirSync(basePath).forEach((name) => {\n const dir = Path.join(basePath, name);\n const infoFile = Path.join(dir, 'package.json');\n if (!FS.existsSync(infoFile)) {\n return;\n }\n\n const info = loadPackageInfo(infoFile);\n if (isPlugin(info)) {\n result.push(name);\n }\n });\n }\n\n /**\n * Load and parse the given `package.json`.\n */\n function loadPackageInfo(fileName: string): any {\n try {\n return JSON.parse(FS.readFileSync(fileName, {encoding: 'utf-8'}));\n } catch (error) {\n logger.error('Could not parse %s', fileName);\n return {};\n }\n }\n\n /**\n * Test whether the given package info describes a TypeDoc plugin.\n */\n function isPlugin(info: any): boolean {\n const keywords: string[] = info.keywords;\n if (!keywords || !Util.isArray(keywords)) {\n return false;\n }\n\n for (let i = 0, c = keywords.length; i < c; i++) {\n const keyword = keywords[i];\n if (typeof keyword === 'string' && keyword.toLowerCase() === 'typedocplugin') {\n return true;\n }\n }\n\n return false;\n }\n }\n}\n"]} \ No newline at end of file
+{"version":3,"file":"plugins.js","sourceRoot":"","sources":["../../../src/lib/utils/plugins.ts"],"names":[],"mappings":"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","sourcesContent":["import * as FS from 'fs';\nimport * as Path from 'path';\nimport * as Util from 'util';\n\nimport { Application } from '../application';\nimport { AbstractComponent, Component, Option } from './component';\nimport { ParameterType } from './options/declaration';\n\n@Component({name: 'plugin-host', internal: true})\nexport class PluginHost extends AbstractComponent<Application> {\n @Option({\n name: 'plugin',\n help: 'Specify the npm plugins that should be loaded. Omit to load all installed plugins, set to \\'none\\' to load no plugins.',\n type: ParameterType.String,\n isArray: true\n })\n plugins: string[];\n\n /**\n * Load the given list of npm plugins.\n *\n * @param plugins A list of npm modules that should be loaded as plugins. When not specified\n * this function will invoke [[discoverNpmPlugins]] to find a list of all installed plugins.\n * @returns TRUE on success, otherwise FALSE.\n */\n load(): boolean {\n const logger = this.application.logger;\n const plugins = this.plugins || this.discoverNpmPlugins();\n\n let i: number, c: number = plugins.length;\n for (i = 0; i < c; i++) {\n const plugin = plugins[i];\n if (typeof plugin !== 'string') {\n logger.error('Unknown plugin %s', plugin);\n return false;\n } else if (plugin.toLowerCase() === 'none') {\n return true;\n }\n }\n\n for (i = 0; i < c; i++) {\n const plugin = plugins[i];\n try {\n const instance = require(plugin);\n if (typeof instance === 'function') {\n instance(this);\n logger.write('Loaded plugin %s', plugin);\n } else {\n logger.error('The plugin %s did not return a function.', plugin);\n }\n } catch (error) {\n logger.error('The plugin %s could not be loaded.', plugin);\n logger.writeln(error.stack);\n }\n }\n }\n\n /**\n * Discover all installed TypeDoc plugins.\n *\n * @returns A list of all npm module names that are qualified TypeDoc plugins.\n */\n private discoverNpmPlugins(): string[] {\n const result: string[] = [];\n const logger = this.application.logger;\n discover();\n return result;\n\n /**\n * Find all parent folders containing a `node_modules` subdirectory.\n */\n function discover() {\n let path = process.cwd(), previous: string;\n do {\n const modules = Path.join(path, 'node_modules');\n if (FS.existsSync(modules) && FS.lstatSync(modules).isDirectory()) {\n discoverModules(modules);\n }\n\n previous = path;\n path = Path.resolve(Path.join(previous, '..'));\n } while (previous !== path);\n }\n\n /**\n * Scan the given `node_modules` directory for TypeDoc plugins.\n */\n function discoverModules(basePath: string) {\n FS.readdirSync(basePath).forEach((name) => {\n const dir = Path.join(basePath, name);\n const infoFile = Path.join(dir, 'package.json');\n if (!FS.existsSync(infoFile)) {\n return;\n }\n\n const info = loadPackageInfo(infoFile);\n if (isPlugin(info)) {\n result.push(name);\n }\n });\n }\n\n /**\n * Load and parse the given `package.json`.\n */\n function loadPackageInfo(fileName: string): any {\n try {\n return JSON.parse(FS.readFileSync(fileName, {encoding: 'utf-8'}));\n } catch (error) {\n logger.error('Could not parse %s', fileName);\n return {};\n }\n }\n\n /**\n * Test whether the given package info describes a TypeDoc plugin.\n */\n function isPlugin(info: any): boolean {\n const keywords: string[] = info.keywords;\n if (!keywords || !Util.isArray(keywords)) {\n return false;\n }\n\n for (let i = 0, c = keywords.length; i < c; i++) {\n const keyword = keywords[i];\n if (typeof keyword === 'string' && keyword.toLowerCase() === 'typedocplugin') {\n return true;\n }\n }\n\n return false;\n }\n }\n}\n"]} \ No newline at end of file