UNPKG

5.74 kBPlain TextView Raw
1import * as _ from 'lodash';
2
3import { COMPODOC_DEFAULTS } from '../utils/defaults';
4
5import { ConfigurationInterface } from './interfaces/configuration.interface';
6import { CoverageData } from './interfaces/coverageData.interface';
7import { MainDataInterface } from './interfaces/main-data.interface';
8import { PageInterface } from './interfaces/page.interface';
9
10export class Configuration implements ConfigurationInterface {
11 private _pages: PageInterface[] = [];
12 private _mainData: MainDataInterface = {
13 output: COMPODOC_DEFAULTS.folder,
14 theme: COMPODOC_DEFAULTS.theme,
15 extTheme: '',
16 serve: false,
17 hostname: COMPODOC_DEFAULTS.hostname,
18 host: '',
19 port: COMPODOC_DEFAULTS.port,
20 open: false,
21 assetsFolder: '',
22 documentationMainName: COMPODOC_DEFAULTS.title,
23 documentationMainDescription: '',
24 base: COMPODOC_DEFAULTS.base,
25 hideGenerator: false,
26 hideDarkModeToggle: false,
27 hasFilesToCoverage: false,
28 modules: [],
29 readme: false,
30 changelog: '',
31 contributing: '',
32 license: '',
33 todo: '',
34 markdowns: [],
35 additionalPages: [],
36 pipes: [],
37 classes: [],
38 interfaces: [],
39 components: [],
40 controllers: [],
41 entities: [],
42 directives: [],
43 injectables: [],
44 interceptors: [],
45 guards: [],
46 miscellaneous: [],
47 routes: [],
48 tsconfig: '',
49 toggleMenuItems: COMPODOC_DEFAULTS.toggleMenuItems,
50 navTabConfig: [],
51 templates: '',
52 includes: '',
53 includesName: COMPODOC_DEFAULTS.additionalEntryName,
54 includesFolder: COMPODOC_DEFAULTS.additionalEntryPath,
55 disableSourceCode: COMPODOC_DEFAULTS.disableSourceCode,
56 disableDomTree: COMPODOC_DEFAULTS.disableDomTree,
57 disableTemplateTab: COMPODOC_DEFAULTS.disableTemplateTab,
58 disableStyleTab: COMPODOC_DEFAULTS.disableStyleTab,
59 disableGraph: COMPODOC_DEFAULTS.disableGraph,
60 disableMainGraph: COMPODOC_DEFAULTS.disableMainGraph,
61 disableCoverage: COMPODOC_DEFAULTS.disableCoverage,
62 disablePrivate: COMPODOC_DEFAULTS.disablePrivate,
63 disableInternal: COMPODOC_DEFAULTS.disableInternal,
64 disableProtected: COMPODOC_DEFAULTS.disableProtected,
65 disableLifeCycleHooks: COMPODOC_DEFAULTS.disableLifeCycleHooks,
66 disableRoutesGraph: COMPODOC_DEFAULTS.disableRoutesGraph,
67 disableSearch: false,
68 disableDependencies: COMPODOC_DEFAULTS.disableDependencies,
69 disableProperties: COMPODOC_DEFAULTS.disableProperties,
70 watch: false,
71 mainGraph: '',
72 coverageTest: false,
73 coverageTestThreshold: COMPODOC_DEFAULTS.defaultCoverageThreshold,
74 coverageTestThresholdFail: COMPODOC_DEFAULTS.coverageTestThresholdFail,
75 coverageTestPerFile: false,
76 coverageMinimumPerFile: COMPODOC_DEFAULTS.defaultCoverageMinimumPerFile,
77 unitTestCoverage: '',
78 unitTestData: undefined,
79 coverageTestShowOnlyFailed: COMPODOC_DEFAULTS.coverageTestShowOnlyFailed,
80 routesLength: 0,
81 angularVersion: '',
82 exportFormat: COMPODOC_DEFAULTS.exportFormat,
83 coverageData: {} as CoverageData,
84 customFavicon: '',
85 customLogo: '',
86 packageDependencies: [],
87 packagePeerDependencies: [],
88 packageProperties: {},
89 gaID: '',
90 gaSite: '',
91 angularProject: false,
92 angularJSProject: false,
93 language: COMPODOC_DEFAULTS.language,
94 maxSearchResults: 15
95 };
96
97 private static instance: Configuration;
98 private constructor() {}
99 public static getInstance() {
100 if (!Configuration.instance) {
101 Configuration.instance = new Configuration();
102 }
103 return Configuration.instance;
104 }
105
106 public addPage(page: PageInterface) {
107 let indexPage = _.findIndex(this._pages, { name: page.name });
108 if (indexPage === -1) {
109 this._pages.push(page);
110 }
111 }
112
113 public hasPage(name: string): boolean {
114 let indexPage = _.findIndex(this._pages, { name: name });
115 return indexPage !== -1;
116 }
117
118 public addAdditionalPage(page: PageInterface) {
119 this._mainData.additionalPages.push(page);
120 }
121
122 public getAdditionalPageById(id): PageInterface {
123 return this._mainData.additionalPages.find(page => page.id === id);
124 }
125
126 public resetPages() {
127 this._pages = [];
128 }
129
130 public resetAdditionalPages() {
131 this._mainData.additionalPages = [];
132 }
133
134 public resetRootMarkdownPages() {
135 let indexPage = _.findIndex(this._pages, { name: 'index' });
136 this._pages.splice(indexPage, 1);
137 indexPage = _.findIndex(this._pages, { name: 'changelog' });
138 this._pages.splice(indexPage, 1);
139 indexPage = _.findIndex(this._pages, { name: 'contributing' });
140 this._pages.splice(indexPage, 1);
141 indexPage = _.findIndex(this._pages, { name: 'license' });
142 this._pages.splice(indexPage, 1);
143 indexPage = _.findIndex(this._pages, { name: 'todo' });
144 this._pages.splice(indexPage, 1);
145 this._mainData.markdowns = [];
146 }
147
148 get pages(): PageInterface[] {
149 return this._pages;
150 }
151 set pages(pages: PageInterface[]) {
152 this._pages = [];
153 }
154
155 get markDownPages() {
156 return this._pages.filter(page => page.markdown);
157 }
158
159 get mainData(): MainDataInterface {
160 return this._mainData;
161 }
162 set mainData(data: MainDataInterface) {
163 (Object as any).assign(this._mainData, data);
164 }
165}
166
167export default Configuration.getInstance();