@simplysm/sd-cli 7.0.59 → 7.0.66
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/SdCliBuildResultError.d.ts +5 -0
- package/dist/SdCliBuildResultError.mjs +8 -0
- package/dist/bin/sd-cli.d.ts +2 -0
- package/dist/bin/sd-cli.mjs +3 -3
- package/dist/build-tool/SdCliCacheCompilerHost.d.ts +10 -0
- package/dist/build-tool/SdCliCordova.d.ts +16 -0
- package/dist/build-tool/SdCliCordova.mjs +171 -0
- package/dist/build-tool/SdCliIndexFileGenerator.d.ts +13 -0
- package/dist/{entry-points → build-tool}/SdCliIndexFileGenerator.mjs +4 -3
- package/dist/build-tool/SdCliNgCacheCompilerHost.d.ts +11 -0
- package/dist/build-tool/SdCliPackageLinter.d.ts +8 -0
- package/dist/build-tool/SdCliPackageLinter.mjs +19 -2
- package/dist/builder/SdCliClientBuilder.d.ts +23 -0
- package/dist/builder/SdCliClientBuilder.mjs +68 -6
- package/dist/builder/SdCliJsLibBuilder.d.ts +14 -0
- package/dist/builder/SdCliServerBuilder.d.ts +25 -0
- package/dist/builder/SdCliServerBuilder.mjs +11 -13
- package/dist/builder/SdCliTsLibBuilder.d.ts +34 -0
- package/dist/builder/SdCliTsLibBuilder.mjs +90 -20
- package/dist/commons.d.ts +85 -0
- package/dist/entry-points/SdCliLocalUpdate.d.ts +13 -0
- package/dist/entry-points/SdCliNpm.d.ts +6 -0
- package/dist/entry-points/SdCliPrepare.d.ts +5 -0
- package/dist/entry-points/SdCliWorkspace.d.ts +28 -0
- package/dist/entry-points/SdCliWorkspace.mjs +12 -16
- package/dist/index.d.ts +29 -0
- package/dist/index.mjs +30 -0
- package/dist/ng-tools/SdCliNgModuleGenerator.d.ts +26 -0
- package/dist/ng-tools/SdCliNgModuleGenerator.mjs +404 -0
- package/dist/ng-tools/babel/SdCliBbFileMetadata.d.ts +23 -0
- package/dist/ng-tools/babel/SdCliBbFileMetadata.mjs +482 -0
- package/dist/ng-tools/babel/SdCliBbRootMetadata.d.ts +22 -0
- package/dist/ng-tools/babel/SdCliBbRootMetadata.mjs +174 -0
- package/dist/ng-tools/babel/SdCliBbUtil.d.ts +5 -0
- package/dist/ng-tools/babel/SdCliBbUtil.mjs +14 -0
- package/dist/ng-tools/babel/TSdCliBbNgMetadata.d.ts +42 -0
- package/dist/ng-tools/babel/TSdCliBbNgMetadata.mjs +200 -0
- package/dist/ng-tools/babel/TSdCliBbTypeMetadata.d.ts +44 -0
- package/dist/ng-tools/babel/TSdCliBbTypeMetadata.mjs +127 -0
- package/dist/ng-tools/commons.d.ts +9 -0
- package/dist/ng-tools/commons.mjs +2 -0
- package/dist/ng-tools/typescript/SdCliTsFileMetadata.d.ts +61 -0
- package/dist/ng-tools/typescript/SdCliTsFileMetadata.mjs +326 -0
- package/dist/ng-tools/typescript/SdCliTsRootMetadata.d.ts +8 -0
- package/dist/ng-tools/typescript/SdCliTsRootMetadata.mjs +28 -0
- package/dist/ng-tools/typescript/SdCliTsUtil.d.ts +5 -0
- package/dist/ng-tools/typescript/SdCliTsUtil.mjs +28 -0
- package/dist/packages/SdCliPackage.d.ts +23 -0
- package/dist/packages/SdCliPackage.mjs +2 -3
- package/dist/utils/SdCliBuildResultUtil.d.ts +9 -0
- package/dist/utils/SdCliConfigUtil.d.ts +7 -0
- package/dist/utils/SdCliNpmConfigUtil.d.ts +7 -0
- package/dist/utils/SdCliNpmConfigUtil.mjs +3 -3
- package/package.json +16 -7
- package/src/SdCliBuildResultError.ts +9 -0
- package/src/bin/sd-cli.ts +2 -2
- package/src/build-tool/SdCliCordova.ts +219 -0
- package/src/{entry-points → build-tool}/SdCliIndexFileGenerator.ts +3 -2
- package/src/build-tool/SdCliPackageLinter.ts +18 -2
- package/src/builder/SdCliClientBuilder.ts +83 -5
- package/src/builder/SdCliServerBuilder.ts +10 -12
- package/src/builder/SdCliTsLibBuilder.ts +105 -21
- package/src/commons.ts +24 -0
- package/src/entry-points/SdCliWorkspace.ts +14 -17
- package/src/index.ts +29 -0
- package/src/ng-tools/SdCliNgModuleGenerator.ts +538 -0
- package/src/ng-tools/babel/SdCliBbFileMetadata.ts +568 -0
- package/src/ng-tools/babel/SdCliBbRootMetadata.ts +211 -0
- package/src/ng-tools/babel/SdCliBbUtil.ts +15 -0
- package/src/ng-tools/babel/TSdCliBbNgMetadata.ts +234 -0
- package/src/ng-tools/babel/TSdCliBbTypeMetadata.ts +177 -0
- package/src/ng-tools/commons.ts +3 -0
- package/src/ng-tools/typescript/SdCliTsFileMetadata.ts +385 -0
- package/src/ng-tools/typescript/SdCliTsRootMetadata.ts +32 -0
- package/src/ng-tools/typescript/SdCliTsUtil.ts +29 -0
- package/src/packages/SdCliPackage.ts +1 -2
- package/src/utils/SdCliNpmConfigUtil.ts +2 -2
- package/tsconfig-build.json +6 -2
- package/tsconfig.json +5 -1
|
@@ -0,0 +1,404 @@
|
|
|
1
|
+
import { SdCliTsRootMetadata } from "./typescript/SdCliTsRootMetadata";
|
|
2
|
+
import { SdCliBbRootMetadata } from "./babel/SdCliBbRootMetadata";
|
|
3
|
+
import { SdCliBbClassMetadata, SdCliBbObjectMetadata } from "./babel/TSdCliBbTypeMetadata";
|
|
4
|
+
import { SdCliBbNgComponentMetadata, SdCliBbNgDirectiveMetadata, SdCliBbNgModuleMetadata, SdCliBbNgPipeMetadata } from "./babel/TSdCliBbNgMetadata";
|
|
5
|
+
import { NeverEntryError, StringUtil } from "@simplysm/sd-core-common";
|
|
6
|
+
import { SdCliTsNgInjectableMetadata } from "./typescript/SdCliTsFileMetadata";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import { JSDOM } from "jsdom";
|
|
9
|
+
import { FsUtil, PathUtil } from "@simplysm/sd-core-node";
|
|
10
|
+
import os from "os";
|
|
11
|
+
// TODO: 에러 메시지 처리
|
|
12
|
+
// TODO: forRoot에 있는 Provider 처리??
|
|
13
|
+
export class SdCliNgModuleGenerator {
|
|
14
|
+
constructor(packagePath, _srcDirRelPaths, _routeOpts) {
|
|
15
|
+
this._srcDirRelPaths = _srcDirRelPaths;
|
|
16
|
+
this._routeOpts = _routeOpts;
|
|
17
|
+
this._fileWriterCache = new Map();
|
|
18
|
+
this._srcPath = path.resolve(packagePath, "src");
|
|
19
|
+
this._modulesPath = path.resolve(packagePath, "src", "_modules");
|
|
20
|
+
this._bbMeta = new SdCliBbRootMetadata(packagePath);
|
|
21
|
+
this._tsMeta = new SdCliTsRootMetadata(packagePath);
|
|
22
|
+
const glob = FsUtil.glob(path.resolve(this._modulesPath, "**", "*.ts"));
|
|
23
|
+
for (const currFilePath of glob) {
|
|
24
|
+
const content = FsUtil.readFile(currFilePath);
|
|
25
|
+
this._fileWriterCache.set(currFilePath, content);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
removeCaches(changedFilePaths) {
|
|
29
|
+
this._bbMeta.removeCaches(changedFilePaths);
|
|
30
|
+
this._tsMeta.removeCaches(changedFilePaths);
|
|
31
|
+
for (const changedFilePath of changedFilePaths) {
|
|
32
|
+
if (this._fileWriterCache.has(changedFilePath) && !FsUtil.exists(changedFilePath)) {
|
|
33
|
+
this._fileWriterCache.delete(changedFilePath);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
async runAsync() {
|
|
38
|
+
const bbNgModules = this._getBbNgModuleDefs();
|
|
39
|
+
const tsPreset = this._getTsGenNgModulePreset();
|
|
40
|
+
const genNgRoutingModules = await this._getGenNgRoutingModuleDefsAsync();
|
|
41
|
+
const genNgModules = this._getGenNgModuleDefs(bbNgModules, tsPreset.modules, tsPreset.sources);
|
|
42
|
+
const files = [
|
|
43
|
+
...this._getGenNgRoutingModuleFiles(genNgRoutingModules),
|
|
44
|
+
...this._getGenNgModuleFiles(genNgModules)
|
|
45
|
+
];
|
|
46
|
+
await this._writeFilesAsync(files);
|
|
47
|
+
}
|
|
48
|
+
_findBbMetasFromMeta(srcMeta) {
|
|
49
|
+
const metaTmp = typeof srcMeta !== "string" && "__TSdCliMetaRef__" in srcMeta ? this._bbMeta.findMeta(srcMeta) : srcMeta;
|
|
50
|
+
return metaTmp instanceof Array ? metaTmp : [metaTmp];
|
|
51
|
+
}
|
|
52
|
+
_getBbNgModuleDefs() {
|
|
53
|
+
const entryRecord = this._bbMeta.getEntryFileMetaRecord();
|
|
54
|
+
const result = [];
|
|
55
|
+
for (const moduleName of Object.keys(entryRecord)) {
|
|
56
|
+
const fileMeta = entryRecord[moduleName];
|
|
57
|
+
for (const exp of fileMeta.exports) {
|
|
58
|
+
const metas = this._findBbMetasFromMeta(exp.target);
|
|
59
|
+
for (const meta of metas) {
|
|
60
|
+
if (meta instanceof SdCliBbClassMetadata) {
|
|
61
|
+
if (meta.ngDecl instanceof SdCliBbNgModuleMetadata) {
|
|
62
|
+
const ngDecl = meta.ngDecl;
|
|
63
|
+
const resultItem = {
|
|
64
|
+
moduleName,
|
|
65
|
+
name: exp.exportedName === "*" ? meta.name : exp.exportedName,
|
|
66
|
+
providers: [],
|
|
67
|
+
exports: [],
|
|
68
|
+
selectors: [],
|
|
69
|
+
pipeNames: []
|
|
70
|
+
};
|
|
71
|
+
for (const modProv of ngDecl.def.providers) {
|
|
72
|
+
const modProvMetas = this._findBbMetasFromMeta(modProv);
|
|
73
|
+
if (modProvMetas.length === 0) {
|
|
74
|
+
throw new NeverEntryError();
|
|
75
|
+
}
|
|
76
|
+
for (const modProvMeta of modProvMetas) {
|
|
77
|
+
if (modProvMeta instanceof SdCliBbClassMetadata) {
|
|
78
|
+
const ref = this._bbMeta.findExportRef({
|
|
79
|
+
filePath: modProvMeta.filePath,
|
|
80
|
+
name: modProvMeta.name
|
|
81
|
+
});
|
|
82
|
+
if (ref) {
|
|
83
|
+
resultItem.providers.push(ref);
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else if (modProvMeta instanceof SdCliBbObjectMetadata) {
|
|
87
|
+
// 무시
|
|
88
|
+
}
|
|
89
|
+
else {
|
|
90
|
+
throw new NeverEntryError();
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
for (const modExp of ngDecl.def.exports) {
|
|
95
|
+
const modExpMetas = this._findBbMetasFromMeta(modExp);
|
|
96
|
+
if (modExpMetas.length === 0) {
|
|
97
|
+
throw new NeverEntryError();
|
|
98
|
+
}
|
|
99
|
+
for (const modExpMeta of modExpMetas) {
|
|
100
|
+
if (modExpMeta instanceof SdCliBbClassMetadata) {
|
|
101
|
+
const ref = this._bbMeta.findExportRef({
|
|
102
|
+
filePath: modExpMeta.filePath,
|
|
103
|
+
name: modExpMeta.name
|
|
104
|
+
});
|
|
105
|
+
if (ref) {
|
|
106
|
+
resultItem.exports.push(ref);
|
|
107
|
+
}
|
|
108
|
+
if (modExpMeta.ngDecl instanceof SdCliBbNgDirectiveMetadata) {
|
|
109
|
+
resultItem.selectors.push(modExpMeta.ngDecl.selector);
|
|
110
|
+
}
|
|
111
|
+
else if (modExpMeta.ngDecl instanceof SdCliBbNgComponentMetadata) {
|
|
112
|
+
resultItem.selectors.push(modExpMeta.ngDecl.selector);
|
|
113
|
+
}
|
|
114
|
+
else if (modExpMeta.ngDecl instanceof SdCliBbNgPipeMetadata) {
|
|
115
|
+
resultItem.pipeNames.push(modExpMeta.ngDecl.pipeName);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
throw new NeverEntryError();
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
result.push(resultItem);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
return result;
|
|
130
|
+
}
|
|
131
|
+
_getTsGenNgModulePreset() {
|
|
132
|
+
const fileMetas = this._tsMeta.getFileMetas();
|
|
133
|
+
const result = { modules: [], sources: [] };
|
|
134
|
+
for (const fileMeta of fileMetas) {
|
|
135
|
+
if (!this._srcDirRelPaths.some((item) => fileMeta.filePath.startsWith(path.resolve(this._srcPath, item)))) {
|
|
136
|
+
continue;
|
|
137
|
+
}
|
|
138
|
+
for (const cls of fileMeta.directExportClasses) {
|
|
139
|
+
if (cls.target.ngDecl) {
|
|
140
|
+
if (cls.target.ngDecl instanceof SdCliTsNgInjectableMetadata) {
|
|
141
|
+
if (cls.target.ngDecl.providedIn === "root") {
|
|
142
|
+
continue;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
const moduleClassName = cls.exportedName + "Module";
|
|
146
|
+
const moduleFilePath = path.resolve(this._modulesPath, path.relative(this._srcPath, path.dirname(fileMeta.filePath)), moduleClassName);
|
|
147
|
+
result.sources.push({
|
|
148
|
+
filePath: fileMeta.filePath,
|
|
149
|
+
name: cls.exportedName,
|
|
150
|
+
module: {
|
|
151
|
+
filePath: moduleFilePath,
|
|
152
|
+
name: moduleClassName
|
|
153
|
+
},
|
|
154
|
+
imports: fileMeta.imports,
|
|
155
|
+
template: "template" in cls.target.ngDecl ? cls.target.ngDecl.template : undefined,
|
|
156
|
+
isProvider: cls.target.ngDecl instanceof SdCliTsNgInjectableMetadata
|
|
157
|
+
});
|
|
158
|
+
result.modules.push({
|
|
159
|
+
filePath: moduleFilePath,
|
|
160
|
+
name: moduleClassName,
|
|
161
|
+
source: {
|
|
162
|
+
filePath: fileMeta.filePath,
|
|
163
|
+
name: cls.exportedName
|
|
164
|
+
},
|
|
165
|
+
selector: "selector" in cls.target.ngDecl ? cls.target.ngDecl.selector : undefined,
|
|
166
|
+
pipeName: "pipeName" in cls.target.ngDecl ? cls.target.ngDecl.pipeName : undefined
|
|
167
|
+
});
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
return result;
|
|
172
|
+
}
|
|
173
|
+
_getGenNgModuleDefs(bbModules, presetModules, presetSources) {
|
|
174
|
+
const result = [];
|
|
175
|
+
for (const el of presetSources) {
|
|
176
|
+
const imports = [];
|
|
177
|
+
for (const imp of el.imports) {
|
|
178
|
+
if ("moduleName" in imp) {
|
|
179
|
+
for (const mod of bbModules) {
|
|
180
|
+
if (mod.exports.some((item) => item.moduleName === imp.moduleName && item.name === imp.name)) {
|
|
181
|
+
imports.push({ moduleName: mod.moduleName, name: mod.name, __TSdCliMetaRef__: "__TSdCliMetaRef__" });
|
|
182
|
+
}
|
|
183
|
+
if (mod.providers.some((item) => item.moduleName === imp.moduleName && item.name === imp.name)) {
|
|
184
|
+
imports.push({ moduleName: mod.moduleName, name: mod.name, __TSdCliMetaRef__: "__TSdCliMetaRef__" });
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
else {
|
|
189
|
+
for (const mod of presetModules) {
|
|
190
|
+
if (mod.source && mod.source.filePath === imp.filePath && mod.source.name === imp.name) {
|
|
191
|
+
imports.push({ filePath: mod.filePath, name: mod.name, __TSdCliMetaRef__: "__TSdCliMetaRef__" });
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
if (el.template !== undefined) {
|
|
197
|
+
const templateDOM = new JSDOM(el.template);
|
|
198
|
+
for (const mod of bbModules) {
|
|
199
|
+
for (const selector of mod.selectors) {
|
|
200
|
+
if (templateDOM.window.document.querySelector([
|
|
201
|
+
selector,
|
|
202
|
+
selector.replace(/\[/g, "[\\[").replace(/]/g, "\\]]"),
|
|
203
|
+
selector.replace(/\[/g, "[\\(").replace(/]/g, "\\)]")
|
|
204
|
+
].join(", ")) != null) {
|
|
205
|
+
imports.push({ moduleName: mod.moduleName, name: mod.name, __TSdCliMetaRef__: "__TSdCliMetaRef__" });
|
|
206
|
+
}
|
|
207
|
+
}
|
|
208
|
+
for (const pipeName of mod.pipeNames) {
|
|
209
|
+
if (new RegExp("| *" + pipeName + "[^\\w]").test(el.template)) {
|
|
210
|
+
imports.push({ moduleName: mod.moduleName, name: mod.name, __TSdCliMetaRef__: "__TSdCliMetaRef__" });
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
for (const mod of presetModules) {
|
|
215
|
+
if (mod.selector !== undefined) {
|
|
216
|
+
if (templateDOM.window.document.querySelector([
|
|
217
|
+
mod.selector,
|
|
218
|
+
mod.selector.replace(/\[/g, "[\\[").replace(/]/g, "\\]]"),
|
|
219
|
+
mod.selector.replace(/\[/g, "[\\(").replace(/]/g, "\\)]")
|
|
220
|
+
].join(", ")) != null) {
|
|
221
|
+
imports.push({ filePath: mod.filePath, name: mod.name, __TSdCliMetaRef__: "__TSdCliMetaRef__" });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (mod.pipeName !== undefined) {
|
|
225
|
+
if (new RegExp("| *" + mod.pipeName + "[^\\w]").test(el.template)) {
|
|
226
|
+
imports.push({ filePath: mod.filePath, name: mod.name, __TSdCliMetaRef__: "__TSdCliMetaRef__" });
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
}
|
|
231
|
+
result.push({
|
|
232
|
+
filePath: el.module.filePath,
|
|
233
|
+
name: el.module.name,
|
|
234
|
+
imports: imports.distinct(),
|
|
235
|
+
exports: el.isProvider ? [] : [{ filePath: el.filePath, name: el.name }],
|
|
236
|
+
providers: el.isProvider ? [{ filePath: el.filePath, name: el.name }] : []
|
|
237
|
+
});
|
|
238
|
+
}
|
|
239
|
+
return result;
|
|
240
|
+
}
|
|
241
|
+
async _getGenNgRoutingModuleDefsAsync() {
|
|
242
|
+
if (this._routeOpts === undefined)
|
|
243
|
+
return [];
|
|
244
|
+
const result = [];
|
|
245
|
+
const filePaths = await FsUtil.globAsync(path.resolve(this._srcPath, this._routeOpts.glob));
|
|
246
|
+
for (const filePath of filePaths) {
|
|
247
|
+
const sourceClassName = path.basename(filePath, path.extname(filePath));
|
|
248
|
+
if (sourceClassName === this._routeOpts.rootClassName) {
|
|
249
|
+
const childDirName = StringUtil.toKebabCase(sourceClassName.slice(0, -this._routeOpts.fileEndsWith.length));
|
|
250
|
+
const childDirPath = path.resolve(path.dirname(filePath), childDirName);
|
|
251
|
+
result.push({
|
|
252
|
+
filePath: path.resolve(this._srcPath, "_routes"),
|
|
253
|
+
children: await this._getGenNgRoutingModuleDefChildrenAsync(childDirPath)
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
else {
|
|
257
|
+
const routingModuleClassName = sourceClassName + "RoutingModule";
|
|
258
|
+
const routingModuleFilePath = path.resolve(this._modulesPath, path.relative(this._srcPath, path.dirname(filePath)), routingModuleClassName);
|
|
259
|
+
const childDirName = StringUtil.toKebabCase(sourceClassName.slice(0, -this._routeOpts.fileEndsWith.length));
|
|
260
|
+
const childDirPath = path.resolve(path.dirname(filePath), childDirName);
|
|
261
|
+
result.push({
|
|
262
|
+
filePath: routingModuleFilePath,
|
|
263
|
+
name: routingModuleClassName,
|
|
264
|
+
component: { filePath: filePath.replace(/\.ts$/, ""), name: sourceClassName },
|
|
265
|
+
children: FsUtil.exists(childDirPath) ? await this._getGenNgRoutingModuleDefChildrenAsync(childDirPath) : undefined
|
|
266
|
+
});
|
|
267
|
+
}
|
|
268
|
+
}
|
|
269
|
+
return result;
|
|
270
|
+
}
|
|
271
|
+
async _getGenNgRoutingModuleDefChildrenAsync(rootPath) {
|
|
272
|
+
const result = [];
|
|
273
|
+
const childNames = await FsUtil.readdirAsync(rootPath);
|
|
274
|
+
for (const childName of childNames) {
|
|
275
|
+
if (!FsUtil.stat(path.resolve(rootPath, childName)).isDirectory()) { // 파일
|
|
276
|
+
const sourceFilePath = path.resolve(rootPath, childName);
|
|
277
|
+
const sourceClassName = path.basename(sourceFilePath, path.extname(childName));
|
|
278
|
+
const moduleClassName = sourceClassName + "Module";
|
|
279
|
+
const moduleFilePath = path.resolve(this._modulesPath, path.relative(this._srcPath, path.dirname(sourceFilePath)), moduleClassName);
|
|
280
|
+
result.push({
|
|
281
|
+
path: StringUtil.toKebabCase(childName.substring(0, childName.length - 7)),
|
|
282
|
+
target: { filePath: moduleFilePath, name: moduleClassName }
|
|
283
|
+
});
|
|
284
|
+
}
|
|
285
|
+
else if (!FsUtil.exists(path.resolve(rootPath, StringUtil.toPascalCase(childName) + this._routeOpts.fileEndsWith + ".ts"))) { // 파일없는 디렉토리
|
|
286
|
+
result.push({
|
|
287
|
+
path: childName,
|
|
288
|
+
children: await this._getGenNgRoutingModuleDefChildrenAsync(path.resolve(rootPath, childName))
|
|
289
|
+
});
|
|
290
|
+
}
|
|
291
|
+
}
|
|
292
|
+
return result;
|
|
293
|
+
}
|
|
294
|
+
_getGenNgRoutingModuleFiles(defs) {
|
|
295
|
+
const result = [];
|
|
296
|
+
for (const def of defs) {
|
|
297
|
+
const fn = (children) => {
|
|
298
|
+
let fnResult = "[\n";
|
|
299
|
+
for (const child of children) {
|
|
300
|
+
fnResult += " {\n";
|
|
301
|
+
fnResult += ` path: "${child.path}",\n`;
|
|
302
|
+
if ("target" in child) {
|
|
303
|
+
fnResult += ` loadChildren: async () => await import("${this._getImportModuleName(def.filePath, child.target.filePath)}").then((m) => m.${child.target.name})\n`;
|
|
304
|
+
}
|
|
305
|
+
else {
|
|
306
|
+
fnResult += ` children: ${fn(child.children).replace(/\n/g, "\n ")}\n`;
|
|
307
|
+
}
|
|
308
|
+
fnResult += " },\n";
|
|
309
|
+
}
|
|
310
|
+
fnResult = fnResult.slice(0, -2) + "\n";
|
|
311
|
+
fnResult += "]";
|
|
312
|
+
return fnResult;
|
|
313
|
+
};
|
|
314
|
+
const content = "component" in def ? `
|
|
315
|
+
import { NgModule } from "@angular/core";
|
|
316
|
+
import { RouterModule } from "@angular/router";
|
|
317
|
+
import { SdCanDeactivateGuard } from "@simplysm/sd-angular";
|
|
318
|
+
import { ${def.component.name} } from "${this._getImportModuleName(def.filePath, def.component.filePath)}";
|
|
319
|
+
|
|
320
|
+
@NgModule({
|
|
321
|
+
imports: [
|
|
322
|
+
RouterModule.forChild([
|
|
323
|
+
{
|
|
324
|
+
path: "",
|
|
325
|
+
component: ${def.component.name},
|
|
326
|
+
canDeactivate: [SdCanDeactivateGuard]${def.children ? `,
|
|
327
|
+
children: ${fn(def.children).replace(/\n/g, "\n ")}` : ""}
|
|
328
|
+
}
|
|
329
|
+
])
|
|
330
|
+
],
|
|
331
|
+
exports: [RouterModule]
|
|
332
|
+
})
|
|
333
|
+
export class ${def.name} {
|
|
334
|
+
}`.trim() : `
|
|
335
|
+
import { Routes } from "@angular/router";
|
|
336
|
+
|
|
337
|
+
export const routes: Routes = ${fn(def.children)};
|
|
338
|
+
`.trim();
|
|
339
|
+
result.push({ filePath: def.filePath + ".ts", content });
|
|
340
|
+
}
|
|
341
|
+
return result;
|
|
342
|
+
}
|
|
343
|
+
_getGenNgModuleFiles(mods) {
|
|
344
|
+
const result = [];
|
|
345
|
+
for (const mod of mods) {
|
|
346
|
+
const importMap = [...mod.imports, ...mod.exports, ...mod.providers]
|
|
347
|
+
.map((item) => ({
|
|
348
|
+
moduleName: "moduleName" in item ? item.moduleName : this._getImportModuleName(mod.filePath, item.filePath),
|
|
349
|
+
name: item.name
|
|
350
|
+
}))
|
|
351
|
+
.groupBy((item) => item.moduleName)
|
|
352
|
+
.toMap((item) => item.key, (item) => item.values.map((v) => v.name));
|
|
353
|
+
importMap.getOrCreate("@angular/core", []).push("NgModule");
|
|
354
|
+
const importTexts = [];
|
|
355
|
+
for (const moduleName of Array.from(importMap.keys()).orderBy()) {
|
|
356
|
+
const targetNames = importMap.get(moduleName).distinct();
|
|
357
|
+
if (targetNames.length === 0)
|
|
358
|
+
continue;
|
|
359
|
+
importTexts.push(`import { ${targetNames.join(", ")} } from "${moduleName}";`);
|
|
360
|
+
}
|
|
361
|
+
const moduleImportNames = mod.imports.map((item) => item.name);
|
|
362
|
+
if (this._routeOpts !== undefined
|
|
363
|
+
&& mod.filePath.endsWith(this._routeOpts.fileEndsWith + "Module")
|
|
364
|
+
&& mod.name !== this._routeOpts.rootClassName + "Module") {
|
|
365
|
+
const routingModuleName = mod.name.replace(/Module$/, "RoutingModule");
|
|
366
|
+
importTexts.push(`import { ${routingModuleName} } from "./${routingModuleName}";`);
|
|
367
|
+
moduleImportNames.push(routingModuleName);
|
|
368
|
+
}
|
|
369
|
+
const content = `
|
|
370
|
+
${importTexts.join(os.EOL)}
|
|
371
|
+
|
|
372
|
+
@NgModule({
|
|
373
|
+
imports: [${moduleImportNames.orderBy().join(", ")}],
|
|
374
|
+
declarations: [${mod.exports.map((item) => item.name).distinct().orderBy().join(", ")}],
|
|
375
|
+
exports: [${mod.exports.map((item) => item.name).distinct().orderBy().join(", ")}],
|
|
376
|
+
providers: [${mod.providers.map((item) => item.name).distinct().orderBy().join(", ")}]
|
|
377
|
+
})
|
|
378
|
+
export class ${mod.name} {
|
|
379
|
+
}`.trim();
|
|
380
|
+
result.push({ filePath: mod.filePath + ".ts", content });
|
|
381
|
+
}
|
|
382
|
+
return result;
|
|
383
|
+
}
|
|
384
|
+
async _writeFilesAsync(files) {
|
|
385
|
+
for (const file of files) {
|
|
386
|
+
if (this._fileWriterCache.get(file.filePath) !== file.content) {
|
|
387
|
+
await FsUtil.writeFileAsync(file.filePath, file.content);
|
|
388
|
+
this._fileWriterCache.set(file.filePath, file.content);
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
const glob = await FsUtil.globAsync(path.resolve(this._modulesPath, "**", "*"));
|
|
392
|
+
for (const currFilePath of glob) {
|
|
393
|
+
if (!files.some((item) => item.filePath.startsWith(currFilePath))) {
|
|
394
|
+
await FsUtil.removeAsync(currFilePath);
|
|
395
|
+
this._fileWriterCache.delete(currFilePath);
|
|
396
|
+
}
|
|
397
|
+
}
|
|
398
|
+
}
|
|
399
|
+
_getImportModuleName(mainFilePath, importFilePath) {
|
|
400
|
+
const filePath = PathUtil.posix(path.relative(path.dirname(mainFilePath), importFilePath).replace(/\.ts$/, ""));
|
|
401
|
+
return filePath.startsWith(".") ? filePath : "./" + filePath;
|
|
402
|
+
}
|
|
403
|
+
}
|
|
404
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlOZ01vZHVsZUdlbmVyYXRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9uZy10b29scy9TZENsaU5nTW9kdWxlR2VuZXJhdG9yLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxtQkFBbUIsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3ZFLE9BQU8sRUFBRSxtQkFBbUIsRUFBb0IsTUFBTSw2QkFBNkIsQ0FBQztBQUNwRixPQUFPLEVBQUUsb0JBQW9CLEVBQUUscUJBQXFCLEVBQUUsTUFBTSw4QkFBOEIsQ0FBQztBQUMzRixPQUFPLEVBQ0wsMEJBQTBCLEVBQzFCLDBCQUEwQixFQUMxQix1QkFBdUIsRUFDdkIscUJBQXFCLEVBQ3RCLE1BQU0sNEJBQTRCLENBQUM7QUFDcEMsT0FBTyxFQUFFLGVBQWUsRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUV2RSxPQUFPLEVBQUUsMkJBQTJCLEVBQUUsTUFBTSxrQ0FBa0MsQ0FBQztBQUMvRSxPQUFPLElBQUksTUFBTSxNQUFNLENBQUM7QUFDeEIsT0FBTyxFQUFFLEtBQUssRUFBRSxNQUFNLE9BQU8sQ0FBQztBQUM5QixPQUFPLEVBQUUsTUFBTSxFQUFFLFFBQVEsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBQzFELE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUVwQixrQkFBa0I7QUFDbEIsa0NBQWtDO0FBQ2xDLE1BQU0sT0FBTyxzQkFBc0I7SUFTakMsWUFBbUIsV0FBbUIsRUFDRixlQUF5QixFQUN6QixVQUlKO1FBTEksb0JBQWUsR0FBZixlQUFlLENBQVU7UUFDekIsZUFBVSxHQUFWLFVBQVUsQ0FJZDtRQVJmLHFCQUFnQixHQUFHLElBQUksR0FBRyxFQUFrQixDQUFDO1FBUzVELElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxXQUFXLEVBQUUsS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxDQUFDLFlB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
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import { Declaration, Expression, File, PatternLike, SpreadElement, Statement } from "@babel/types";
|
|
2
|
+
import { ParseResult } from "@babel/parser";
|
|
3
|
+
import { TSdCliBbMetadata } from "./SdCliBbRootMetadata";
|
|
4
|
+
import { SdCliBbObjectMetadata } from "./TSdCliBbTypeMetadata";
|
|
5
|
+
export declare class SdCliBbFileMetadata {
|
|
6
|
+
readonly filePath: string;
|
|
7
|
+
readonly ast: ParseResult<File>;
|
|
8
|
+
readonly rawMetas: Statement[];
|
|
9
|
+
constructor(filePath: string);
|
|
10
|
+
private _exportsCache?;
|
|
11
|
+
get exports(): {
|
|
12
|
+
exportedName: string;
|
|
13
|
+
target: TSdCliBbMetadata;
|
|
14
|
+
}[];
|
|
15
|
+
private readonly _findMetaFromOutsideCache;
|
|
16
|
+
findMetaFromOutside(name: string): TSdCliBbMetadata | undefined;
|
|
17
|
+
private readonly _findMetaFromInsideCache;
|
|
18
|
+
private _findMetaFromInside;
|
|
19
|
+
getMetaFromRaw(rawMeta: Declaration | Expression | PatternLike | SpreadElement): TSdCliBbMetadata;
|
|
20
|
+
private readonly _getNgDecoArgCache;
|
|
21
|
+
getNgDecoArg(className: string): SdCliBbObjectMetadata;
|
|
22
|
+
getNgDecoPropValue(className: string, decoName: string, propName: string): TSdCliBbMetadata | undefined;
|
|
23
|
+
}
|