UNPKG

4.41 kBSource Map (JSON)View Raw
1{"version":3,"file":"JavascriptIndexPlugin.js","sourceRoot":"","sources":["../../../../src/lib/output/plugins/JavascriptIndexPlugin.ts"],"names":[],"mappings":";;;;;;;;AAAA,6BAA6B;AAE7B,0DAA0F;AAC1F,qEAAkE;AAClE,8CAA6D;AAC7D,uCAA2C;AAC3C,sCAA0C;AAQ1C,IAAa,qBAAqB,GAAlC,MAAa,qBAAsB,SAAQ,8BAAiB;IAIxD,UAAU;QACN,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,KAAK,EAAE,sBAAa,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,CAAC;IACzE,CAAC;IAOO,eAAe,CAAC,KAAoB;QACxC,MAAM,IAAI,GAAU,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,EAAE,CAAC;QAEjB,KAAK,IAAI,GAAG,IAAI,KAAK,CAAC,OAAO,CAAC,WAAW,EAAE;YACvC,MAAM,UAAU,GAAkD,KAAK,CAAC,OAAO,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;YACjG,IAAI,CAAC,CAAC,UAAU,YAAY,6BAAqB,CAAC,EAAE;gBAChD,SAAS;aACZ;YAED,IAAI,CAAC,UAAU,CAAC,GAAG;gBACf,CAAC,UAAU,CAAC,IAAI;gBAChB,UAAU,CAAC,KAAK,CAAC,UAAU;gBAC3B,UAAU,CAAC,IAAI,KAAK,EAAE,EAAE;gBACxB,SAAS;aACZ;YAED,IAAI,MAAM,GAAG,UAAU,CAAC,MAAM,CAAC;YAC/B,IAAI,MAAM,YAAY,yBAAiB,EAAE;gBACrC,MAAM,GAAG,SAAS,CAAC;aACtB;YAED,MAAM,GAAG,GAAQ;gBACb,EAAE,EAAE,IAAI,CAAC,MAAM;gBACf,IAAI,EAAK,UAAU,CAAC,IAAI;gBACxB,IAAI,EAAK,UAAU,CAAC,IAAI;gBACxB,GAAG,EAAM,UAAU,CAAC,GAAG;gBACvB,OAAO,EAAE,UAAU,CAAC,UAAU;aACjC,CAAC;YAEF,IAAI,MAAM,EAAE;gBACR,GAAG,CAAC,MAAM,GAAG,MAAM,CAAC,WAAW,EAAE,CAAC;aACrC;YAED,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EAAE;gBACzB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,yBAAW,CAAC,eAAe,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;aACzE;YAED,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;SAClB;QAED,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,eAAe,EAAE,QAAQ,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QAC/E,MAAM,IAAI,GACN;;oCAEwB,IAAI,CAAC,SAAS,CAAC,EAAC,KAAK,EAAE,KAAK,EAAE,IAAI,EAAE,IAAI,EAAC,CAAC,GAAG,CAAC;QAE1E,cAAS,CAAC,QAAQ,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;IACrC,CAAC;CACJ,CAAA;AA9DY,qBAAqB;IADjC,sBAAS,CAAC,EAAC,IAAI,EAAE,kBAAkB,EAAC,CAAC;GACzB,qBAAqB,CA8DjC;AA9DY,sDAAqB","sourcesContent":["import * as Path from 'path';\n\nimport { DeclarationReflection, ProjectReflection } from '../../models/reflections/index';\nimport { GroupPlugin } from '../../converter/plugins/GroupPlugin';\nimport { Component, RendererComponent } from '../components';\nimport { writeFile } from '../../utils/fs';\nimport { RendererEvent } from '../events';\n\n/**\n * A plugin that exports an index of the project to a javascript file.\n *\n * The resulting javascript file can be used to build a simple search function.\n */\n@Component({name: 'javascript-index'})\nexport class JavascriptIndexPlugin extends RendererComponent {\n /**\n * Create a new JavascriptIndexPlugin instance.\n */\n initialize() {\n this.listenTo(this.owner, RendererEvent.BEGIN, this.onRendererBegin);\n }\n\n /**\n * Triggered after a document has been rendered, just before it is written to disc.\n *\n * @param event An event object describing the current render operation.\n */\n private onRendererBegin(event: RendererEvent) {\n const rows: any[] = [];\n const kinds = {};\n\n for (let key in event.project.reflections) {\n const reflection: DeclarationReflection = <DeclarationReflection> event.project.reflections[key];\n if (!(reflection instanceof DeclarationReflection)) {\n continue;\n }\n\n if (!reflection.url ||\n !reflection.name ||\n reflection.flags.isExternal ||\n reflection.name === '') {\n continue;\n }\n\n let parent = reflection.parent;\n if (parent instanceof ProjectReflection) {\n parent = undefined;\n }\n\n const row: any = {\n id: rows.length,\n kind: reflection.kind,\n name: reflection.name,\n url: reflection.url,\n classes: reflection.cssClasses\n };\n\n if (parent) {\n row.parent = parent.getFullName();\n }\n\n if (!kinds[reflection.kind]) {\n kinds[reflection.kind] = GroupPlugin.getKindSingular(reflection.kind);\n }\n\n rows.push(row);\n }\n\n const fileName = Path.join(event.outputDirectory, 'assets', 'js', 'search.js');\n const data =\n `var typedoc = typedoc || {};\n typedoc.search = typedoc.search || {};\n typedoc.search.data = ${JSON.stringify({kinds: kinds, rows: rows})};`;\n\n writeFile(fileName, data, false);\n }\n}\n"]}
\No newline at end of file