@simplysm/sd-cli 7.0.26 → 7.0.40

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.
Files changed (37) hide show
  1. package/.eslintrc.cjs +2 -2
  2. package/dist/bin/sd-cli.mjs +3 -1
  3. package/dist/build-tool/SdCliNgCacheCompilerHost.mjs +3 -3
  4. package/dist/builder/SdCliClientBuilder.d.ts +20 -0
  5. package/dist/builder/SdCliClientBuilder.mjs +419 -0
  6. package/dist/builder/SdCliJsLibBuilder.mjs +2 -2
  7. package/dist/builder/SdCliServerBuilder.d.ts +6 -4
  8. package/dist/builder/SdCliServerBuilder.mjs +175 -98
  9. package/dist/builder/SdCliTsLibBuilder.d.ts +5 -3
  10. package/dist/builder/SdCliTsLibBuilder.mjs +20 -21
  11. package/dist/commons.d.ts +10 -1
  12. package/dist/entry-points/SdCliLocalUpdate.mjs +15 -9
  13. package/dist/entry-points/SdCliNpm.mjs +8 -4
  14. package/dist/entry-points/SdCliPrepare.mjs +3 -2
  15. package/dist/entry-points/SdCliWorkspace.d.ts +1 -0
  16. package/dist/entry-points/SdCliWorkspace.mjs +57 -24
  17. package/dist/packages/SdCliPackage.d.ts +4 -4
  18. package/dist/packages/SdCliPackage.mjs +17 -17
  19. package/dist/utils/SdCliBuildResultUtil.mjs +4 -4
  20. package/dist/utils/SdCliNpmConfigUtil.d.ts +7 -0
  21. package/dist/utils/SdCliNpmConfigUtil.mjs +15 -0
  22. package/package.json +19 -7
  23. package/src/bin/sd-cli.ts +2 -0
  24. package/src/build-tool/SdCliNgCacheCompilerHost.ts +3 -3
  25. package/src/builder/SdCliClientBuilder.ts +453 -0
  26. package/src/builder/SdCliJsLibBuilder.ts +2 -2
  27. package/src/builder/SdCliServerBuilder.ts +195 -98
  28. package/src/builder/SdCliTsLibBuilder.ts +29 -24
  29. package/src/commons.ts +9 -1
  30. package/src/entry-points/SdCliLocalUpdate.ts +14 -8
  31. package/src/entry-points/SdCliNpm.ts +7 -3
  32. package/src/entry-points/SdCliPrepare.ts +2 -1
  33. package/src/entry-points/SdCliWorkspace.ts +65 -26
  34. package/src/packages/SdCliPackage.ts +18 -18
  35. package/src/utils/SdCliBuildResultUtil.ts +3 -3
  36. package/src/utils/SdCliNpmConfigUtil.ts +16 -0
  37. package/tsconfig.json +1 -1
@@ -5,9 +5,8 @@ import path from "path";
5
5
  import ts from "typescript";
6
6
  import { SdCliBuildResultUtil } from "../utils/SdCliBuildResultUtil";
7
7
  import os from "os";
8
- import * as webpackMerge from "webpack-merge";
9
8
  import TerserPlugin from "terser-webpack-plugin";
10
- import { StringUtil } from "@simplysm/sd-core-common";
9
+ import { ObjectUtil, StringUtil } from "@simplysm/sd-core-common";
11
10
  import ESLintWebpackPlugin from "eslint-webpack-plugin";
12
11
  import CopyWebpackPlugin from "copy-webpack-plugin";
13
12
  import { LicenseWebpackPlugin } from "license-webpack-plugin";
@@ -31,22 +30,26 @@ export class SdCliServerBuilder extends EventEmitter {
31
30
  // DIST 비우기
32
31
  await FsUtil.removeAsync(this._parsedTsconfig.options.outDir);
33
32
  // 빌드 준비
34
- const webpackConfig = this._getWebpackWatchConfig();
33
+ const extModuleNames = this._getExternalModuleNames();
34
+ const webpackConfig = this._getWebpackConfig(true, extModuleNames);
35
35
  const compiler = webpack(webpackConfig);
36
36
  await new Promise((resolve, reject) => {
37
37
  compiler.hooks.watchRun.tapAsync(this.constructor.name, (args, callback) => {
38
38
  this.emit("change");
39
- callback();
40
39
  this._logger.debug("Webpack 빌드 수행...");
40
+ callback();
41
41
  });
42
- compiler.watch({}, (err, stats) => {
42
+ compiler.watch({}, async (err, stats) => {
43
43
  if (err != null || stats == null) {
44
44
  reject(err);
45
45
  return;
46
46
  }
47
+ // .config.json 파일 쓰기
48
+ await this._writeDistConfigFileAsync();
49
+ // 결과 반환
50
+ this._logger.debug("Webpack 빌드 완료");
47
51
  const results = SdCliBuildResultUtil.convertFromWebpackStats(stats);
48
52
  this.emit("complete", results);
49
- this._logger.debug("Webpack 빌드 완료");
50
53
  resolve();
51
54
  });
52
55
  });
@@ -56,7 +59,8 @@ export class SdCliServerBuilder extends EventEmitter {
56
59
  await FsUtil.removeAsync(this._parsedTsconfig.options.outDir);
57
60
  // 빌드
58
61
  this._logger.debug("Webpack 빌드 수행...");
59
- const webpackConfig = this._getWebpackBuildConfig();
62
+ const extModuleNames = this._getExternalModuleNames();
63
+ const webpackConfig = this._getWebpackConfig(false, extModuleNames);
60
64
  const compiler = webpack(webpackConfig);
61
65
  const buildResults = await new Promise((resolve, reject) => {
62
66
  compiler.run((err, stats) => {
@@ -64,16 +68,101 @@ export class SdCliServerBuilder extends EventEmitter {
64
68
  reject(err);
65
69
  return;
66
70
  }
67
- // 결과 리턴
71
+ // 결과 반환
68
72
  const results = SdCliBuildResultUtil.convertFromWebpackStats(stats);
69
73
  resolve(results);
70
74
  });
71
75
  });
76
+ // .config.json 파일 쓰기
77
+ await this._writeDistConfigFileAsync();
78
+ // pm2.json 파일 쓰기
79
+ await this._writeDistPm2ConfigFileAsync();
80
+ // iis 파일 쓰기
81
+ await this._writeDistIisConfigFileAsync();
82
+ // 배포용 package.json 파일 생성
83
+ await this._writeDistNpmConfigFileAsync(extModuleNames);
84
+ // 마무리
72
85
  this._logger.debug("Webpack 빌드 완료");
73
86
  return buildResults;
74
87
  }
75
- get _webpackCommonConfig() {
88
+ async _writeDistConfigFileAsync() {
89
+ const configDistPath = path.resolve(this._parsedTsconfig.options.outDir, ".config.json");
90
+ await FsUtil.writeFileAsync(configDistPath, JSON.stringify(this._config.configs ?? {}, undefined, 2));
91
+ }
92
+ async _writeDistPm2ConfigFileAsync() {
93
+ if (this._config.pm2 === undefined || this._config.pm2 === false)
94
+ return;
95
+ const npmConfig = this._getNpmConfig(this._rootPath);
96
+ const pm2DistPath = path.resolve(this._parsedTsconfig.options.outDir, "pm2.json");
97
+ await FsUtil.writeFileAsync(pm2DistPath, JSON.stringify(ObjectUtil.merge({
98
+ "name": npmConfig.name.replace(/@/g, "").replace(/\//g, "-"),
99
+ "script": path.basename(path.resolve(this._parsedTsconfig.options.outDir, "main.mjs")),
100
+ "watch": true,
101
+ "watch_delay": 2000,
102
+ "ignore_watch": [
103
+ "node_modules",
104
+ "www"
105
+ ].distinct(),
106
+ "interpreter": "node@" + process.versions.node,
107
+ "env": {
108
+ NODE_ENV: "production",
109
+ SD_VERSION: npmConfig.version,
110
+ TZ: "Asia/Seoul",
111
+ ...this._config.env ? this._config.env : {}
112
+ }
113
+ }, (typeof this._config.pm2 !== "boolean") ? this._config.pm2 : {}, {
114
+ arrayProcess: "concat"
115
+ }), undefined, 2));
116
+ }
117
+ async _writeDistIisConfigFileAsync() {
118
+ if (this._config.iis === undefined || this._config.iis === false)
119
+ return;
120
+ const iisDistPath = path.resolve(this._parsedTsconfig.options.outDir, "web.config");
121
+ const serverExeFilePath = (this._config.iis !== true && "serverExeFilePath" in this._config.iis)
122
+ ? (this._config.iis.serverExeFilePath ?? "C:\\Program Files\\nodejs\\node.exe")
123
+ : "C:\\Program Files\\nodejs\\node.exe";
124
+ await FsUtil.writeFileAsync(iisDistPath, `
125
+ <configuration>
126
+ <system.webServer>
127
+ <webSocket enabled="false" />
128
+ <handlers>
129
+ <add name="iisnode" path="main.js" verb="*" modules="iisnode" />
130
+ </handlers>
131
+ <iisnode nodeProcessCommandLine="${serverExeFilePath}"
132
+ watchedFiles="web.config;*.js"
133
+ loggingEnabled="true"
134
+ devErrorsEnabled="true" />
135
+ <rewrite>
136
+ <rules>
137
+ <rule name="main">
138
+ <action type="Rewrite" url="main.mjs" />
139
+ </rule>
140
+ </rules>
141
+ </rewrite>
142
+ <httpErrors errorMode="Detailed" />
143
+ </system.webServer>
144
+ </configuration>`.trim());
145
+ }
146
+ async _writeDistNpmConfigFileAsync(deps) {
147
+ const distNpmConfig = ObjectUtil.clone(this._getNpmConfig(this._rootPath));
148
+ distNpmConfig.dependencies = {};
149
+ for (const dep of deps) {
150
+ distNpmConfig.dependencies[dep] = "*";
151
+ }
152
+ delete distNpmConfig.optionalDependencies;
153
+ delete distNpmConfig.devDependencies;
154
+ delete distNpmConfig.peerDependencies;
155
+ if (this._config.pm2 !== undefined) {
156
+ distNpmConfig.scripts = { "start": "pm2 start pm2.json" };
157
+ }
158
+ await FsUtil.writeFileAsync(path.resolve(this._parsedTsconfig.options.outDir, "package.json"), JSON.stringify(distNpmConfig, undefined, 2));
159
+ }
160
+ _getWebpackConfig(watch, extModuleNames) {
161
+ const internalModuleCachePaths = watch
162
+ ? FsUtil.findAllParentChildDirPaths("node_modules/!(@simplysm)", this._rootPath, this._workspaceRootPath)
163
+ : undefined;
76
164
  return {
165
+ mode: watch ? "development" : "production",
77
166
  devtool: false,
78
167
  target: ["node", "es2020"],
79
168
  profile: false,
@@ -101,8 +190,46 @@ export class SdCliServerBuilder extends EventEmitter {
101
190
  outputModule: true
102
191
  },
103
192
  performance: { hints: false },
104
- node: false,
193
+ node: {
194
+ __dirname: true
195
+ },
105
196
  stats: "errors-warnings",
197
+ externals: extModuleNames,
198
+ ...watch ? {
199
+ cache: { type: "memory", maxGenerations: 1 },
200
+ snapshot: {
201
+ immutablePaths: internalModuleCachePaths,
202
+ managedPaths: internalModuleCachePaths
203
+ }
204
+ } : {
205
+ cache: false
206
+ },
207
+ optimization: {
208
+ ...watch ? {} : {
209
+ minimize: true,
210
+ minimizer: [
211
+ new TerserPlugin({
212
+ extractComments: false,
213
+ terserOptions: {
214
+ compress: true,
215
+ ecma: 2020,
216
+ sourceMap: false,
217
+ keep_classnames: true,
218
+ keep_fnames: true,
219
+ ie8: false,
220
+ safari10: false,
221
+ module: true,
222
+ format: {
223
+ comments: false
224
+ }
225
+ }
226
+ })
227
+ ]
228
+ },
229
+ moduleIds: "deterministic",
230
+ chunkIds: watch ? "named" : "deterministic",
231
+ emitOnErrors: watch
232
+ },
106
233
  module: {
107
234
  strictExportPresence: true,
108
235
  rules: [
@@ -112,6 +239,18 @@ export class SdCliServerBuilder extends EventEmitter {
112
239
  fullySpecified: false
113
240
  }
114
241
  },
242
+ ...watch ? [
243
+ {
244
+ test: /\.m?js$/,
245
+ enforce: "pre",
246
+ loader: "source-map-loader",
247
+ options: {
248
+ filterSourceMappingUrl: (mapUri, resourcePath) => {
249
+ return !resourcePath.includes("node_modules") || (/@simplysm[\\/]sd/).test(resourcePath);
250
+ }
251
+ }
252
+ }
253
+ ] : [],
115
254
  {
116
255
  test: /\.ts$/,
117
256
  exclude: /node_modules/,
@@ -137,6 +276,14 @@ export class SdCliServerBuilder extends EventEmitter {
137
276
  ]
138
277
  },
139
278
  plugins: [
279
+ ...watch ? [] : [
280
+ new LicenseWebpackPlugin({
281
+ stats: { warnings: false, errors: false },
282
+ perChunkOutput: false,
283
+ outputFilename: "3rd_party_licenses.txt",
284
+ skipChildCompilers: true
285
+ })
286
+ ],
140
287
  new CopyWebpackPlugin({
141
288
  patterns: ["assets/"].map((item) => ({
142
289
  context: this._rootPath,
@@ -162,6 +309,8 @@ export class SdCliServerBuilder extends EventEmitter {
162
309
  }),
163
310
  new ESLintWebpackPlugin({
164
311
  context: this._rootPath,
312
+ eslintPath: path.resolve(this._workspaceRootPath, "node_modules", "eslint"),
313
+ exclude: ["node_modules"],
165
314
  extensions: ["ts", "js", "mjs", "cjs"],
166
315
  fix: false,
167
316
  threads: false,
@@ -184,92 +333,20 @@ export class SdCliServerBuilder extends EventEmitter {
184
333
  }
185
334
  return resultMessages.join(os.EOL);
186
335
  }
187
- }),
336
+ }) /*,
188
337
  new webpack.ProgressPlugin({
189
- handler: (per, msg, ...args) => {
190
- const phaseText = msg ? ` - phase: ${msg}` : "";
191
- const argsText = args.length > 0 ? ` - args: [${args.join(", ")}]` : "";
192
- this._logger.debug(`Webpack 빌드 수행중...(${Math.round(per * 100)}%)${phaseText}${argsText}`);
193
- }
194
- })
338
+ handler: (per: number, msg: string, ...args: string[]) => {
339
+ const phaseText = msg ? ` - phase: ${msg}` : "";
340
+ const argsText = args.length > 0 ? ` - args: [${args.join(", ")}]` : "";
341
+ this._logger.debug(`Webpack 빌드 수행중...(${Math.round(per * 100)}%)${phaseText}${argsText}`);
342
+ }
343
+ })*/
195
344
  ]
196
345
  };
197
346
  }
198
- _getWebpackWatchConfig() {
199
- const internalModuleCachePaths = FsUtil.findAllParentChildDirPaths("node_modules/!(@simplysm)", this._rootPath, this._workspaceRootPath);
200
- const extModuleNames = this._findExternalModules(true).map((item) => item.name);
201
- return webpackMerge.merge(this._webpackCommonConfig, {
202
- mode: "development",
203
- module: {
204
- rules: [
205
- {
206
- test: /\.m?js$/,
207
- enforce: "pre",
208
- loader: "source-map-loader",
209
- options: {
210
- filterSourceMappingUrl: (mapUri, resourcePath) => {
211
- return !resourcePath.includes("node_modules") || (/@simplysm[\\/]sd/).test(resourcePath);
212
- }
213
- }
214
- }
215
- ]
216
- },
217
- cache: { type: "memory", maxGenerations: 1 },
218
- snapshot: {
219
- immutablePaths: internalModuleCachePaths,
220
- managedPaths: internalModuleCachePaths
221
- },
222
- optimization: {
223
- moduleIds: "deterministic",
224
- chunkIds: "named",
225
- emitOnErrors: true
226
- },
227
- externals: extModuleNames
228
- });
229
- }
230
- _getWebpackBuildConfig() {
231
- const extModuleNames = this._findExternalModules(false).map((item) => item.name);
232
- return webpackMerge.merge(this._webpackCommonConfig, {
233
- mode: "production",
234
- cache: false,
235
- optimization: {
236
- minimize: true,
237
- minimizer: [
238
- new TerserPlugin({
239
- extractComments: false,
240
- terserOptions: {
241
- compress: true,
242
- ecma: 2020,
243
- sourceMap: false,
244
- keep_classnames: true,
245
- keep_fnames: true,
246
- ie8: false,
247
- safari10: false,
248
- module: true,
249
- format: {
250
- comments: false
251
- }
252
- }
253
- })
254
- ],
255
- moduleIds: "deterministic",
256
- chunkIds: "deterministic",
257
- emitOnErrors: false
258
- },
259
- plugins: [
260
- new LicenseWebpackPlugin({
261
- stats: { warnings: false, errors: false },
262
- perChunkOutput: false,
263
- outputFilename: "3rd_party_licenses.txt",
264
- skipChildCompilers: true
265
- })
266
- ],
267
- externals: extModuleNames
268
- });
269
- }
270
- _findExternalModules(all) {
347
+ _getExternalModuleNames() {
271
348
  const loadedModuleNames = [];
272
- const externalModules = [];
349
+ const resultSet = new Set();
273
350
  const fn = (currPath) => {
274
351
  const npmConfig = this._getNpmConfig(currPath);
275
352
  if (!npmConfig)
@@ -290,8 +367,8 @@ export class SdCliServerBuilder extends EventEmitter {
290
367
  if (StringUtil.isNullOrEmpty(modulePath)) {
291
368
  continue;
292
369
  }
293
- if (all || FsUtil.exists(path.resolve(modulePath, "binding.gyp"))) {
294
- externalModules.push({ path: modulePath, name: moduleName });
370
+ if (FsUtil.exists(path.resolve(modulePath, "binding.gyp"))) {
371
+ resultSet.add(moduleName);
295
372
  }
296
373
  fn(modulePath);
297
374
  }
@@ -301,17 +378,17 @@ export class SdCliServerBuilder extends EventEmitter {
301
378
  loadedModuleNames.push(optModuleName);
302
379
  const optModulePath = FsUtil.findAllParentChildDirPaths("node_modules/" + optModuleName, currPath, this._workspaceRootPath).first();
303
380
  if (StringUtil.isNullOrEmpty(optModulePath)) {
304
- externalModules.push({ path: optModulePath, name: optModuleName });
381
+ resultSet.add(optModuleName);
305
382
  continue;
306
383
  }
307
- if (all || FsUtil.exists(path.resolve(optModulePath, "binding.gyp"))) {
308
- externalModules.push({ path: optModulePath, name: optModuleName });
384
+ if (FsUtil.exists(path.resolve(optModulePath, "binding.gyp"))) {
385
+ resultSet.add(optModuleName);
309
386
  }
310
387
  fn(optModulePath);
311
388
  }
312
389
  };
313
390
  fn(this._rootPath);
314
- return externalModules.distinct();
391
+ return Array.from(resultSet.values());
315
392
  }
316
393
  _getNpmConfig(pkgPath) {
317
394
  if (!this._npmConfigMap.has(pkgPath)) {
@@ -320,4 +397,4 @@ export class SdCliServerBuilder extends EventEmitter {
320
397
  return this._npmConfigMap.get(pkgPath);
321
398
  }
322
399
  }
323
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlTZXJ2ZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1aWxkZXIvU2RDbGlTZXJ2ZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFckUsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLE9BQU8sS0FBSyxZQUFZLE1BQU0sZUFBZSxDQUFDO0FBQzlDLE9BQU8sWUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSwwQkFBMEIsQ0FBQztBQUN0RCxPQUFPLG1CQUFtQixNQUFNLHVCQUF1QixDQUFDO0FBQ3hELE9BQU8saUJBQWlCLE1BQU0scUJBQXFCLENBQUM7QUFDcEQsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFHOUQsTUFBTSxPQUFPLGtCQUFtQixTQUFRLFlBQVk7SUFPbEQsWUFBb0MsU0FBaUIsRUFDakIsT0FBa0MsRUFDbEMsa0JBQTBCO1FBQzVELEtBQUssRUFBRSxDQUFDO1FBSDBCLGNBQVMsR0FBVCxTQUFTLENBQVE7UUFDakIsWUFBTyxHQUFQLE9BQU8sQ0FBMkI7UUFDbEMsdUJBQWtCLEdBQWxCLGtCQUFrQixDQUFRO1FBUjdDLFlBQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFJcEUsa0JBQWEsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQU83RCxXQUFXO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO0lBQ3pGLENBQUM7SUFJZSxFQUFFLENBQUMsS0FBc0IsRUFBRSxRQUFrQztRQUMzRSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVTtRQUNyQixXQUFXO1FBQ1gsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBRS9ELFFBQVE7UUFDUixNQUFNLGFBQWEsR0FBRyxJQUFJLENBQUMsc0JBQXNCLEVBQUUsQ0FBQztRQUNwRCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsYUFBYSxDQUFDLENBQUM7UUFDeEMsTUFBTSxJQUFJLE9BQU8sQ0FBTyxDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUMxQyxRQUFRLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLEVBQUUsQ0FBQyxJQUFJLEVBQUUsUUFBUSxFQUFFLEVBQUU7Z0JBQ3pFLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7Z0JBQ3BCLFFBQVEsRUFBRSxDQUFDO2dCQUVYLElBQUksQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDLGtCQUFrQixDQUFDLENBQUM7WUFDekMsQ0FBQyxDQUFDLENBQUM7WUFFSCxRQUFRLENBQUMsS0FBSyxDQUFDLEVBQUUsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtnQkFDaEMsSUFBSSxHQUFHLElBQUksSUFBSSxJQUFJLEtBQUssSUFBSSxJQUFJLEVBQUU7b0JBQ2hDLE1BQU0sQ0FBQyxHQUFHLENBQUMsQ0FBQztvQkFDWixPQUFPO2lCQUNSO2dCQUVELE1BQU0sT0FBTyxHQUFHLG9CQUFvQixDQUFDLHVCQUF1QixDQUFDLEtBQUssQ0FBQyxDQUFDO2dCQUNwRSxJQUFJLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxPQUFPLENBQUMsQ0FBQztnQkFFL0IsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFDLENBQUM7Z0JBQ3BDLE9BQU8sRUFBRSxDQUFDO1lBQ1osQ0FBQyxDQUFDLENBQUM7UUFDTCxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVTtRQUNyQixXQUFXO1FBQ1gsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBRS9ELEtBQUs7UUFDTCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxrQkFBa0IsQ0FBQyxDQUFDO1FBQ3ZDLE1BQU0sYUFBYSxHQUFHLElBQUksQ0FBQyxzQkFBc0IsRUFBRSxDQUFDO1FBQ3BELE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQztRQUN4QyxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksT0FBTyxDQUE2QixDQUFDLE9BQU8sRUFBRSxNQUFNLEVBQUUsRUFBRTtZQUNyRixRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsR0FBRyxFQUFFLEtBQUssRUFBRSxFQUFFO2dCQUMxQixJQUFJLEdBQUcsSUFBSSxJQUFJLElBQUksS0FBSyxJQUFJLElBQUksRUFBRTtvQkFDaEMsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDO29CQUNaLE9BQU87aUJBQ1I7Z0JBRUQsUUFBUTtnQkFDUixNQUFNLE9BQU8sR0FBRyxvQkFBb0IsQ0FBQyx1QkFBdUIsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDcEUsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDO1lBQ25CLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQyxDQUFDLENBQUM7UUFDSCxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxlQUFlLENBQUMsQ0FBQztRQUVwQyxPQUFPLFlBQVksQ0FBQztJQUN0QixDQUFDO0lBRUQsSUFBWSxvQkFBb0I7UUFDOUIsT0FBTztZQUNMLE9BQU8sRUFBRSxLQUFLO1lBQ2QsTUFBTSxFQUFFLENBQUMsTUFBTSxFQUFFLFFBQVEsQ0FBQztZQUMxQixPQUFPLEVBQUUsS0FBSztZQUNkLE9BQU8sRUFBRTtnQkFDUCxLQUFLLEVBQUUsQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDO2dCQUN2QixVQUFVLEVBQUUsQ0FBQyxLQUFLLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLENBQUM7Z0JBQzFDLFFBQVEsRUFBRSxJQUFJO2dCQUNkLFVBQVUsRUFBRSxDQUFDLFFBQVEsRUFBRSxTQUFTLEVBQUUsUUFBUSxFQUFFLE1BQU0sQ0FBQzthQUNwRDtZQUNELE9BQU8sRUFBRSxJQUFJLENBQUMsa0JBQWtCO1lBQ2hDLEtBQUssRUFBRTtnQkFDTCxJQUFJLEVBQUU7b0JBQ0osSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGFBQWEsQ0FBQztpQkFDNUM7YUFDRjtZQUNELE1BQU0sRUFBRTtnQkFDTixLQUFLLEVBQUUsSUFBSTtnQkFDWCxJQUFJLEVBQUUsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTTtnQkFDekMsUUFBUSxFQUFFLFlBQVk7Z0JBQ3RCLGFBQWEsRUFBRSxZQUFZO2dCQUMzQixtQkFBbUIsRUFBRSx3QkFBd0I7Z0JBQzdDLGFBQWEsRUFBRSxRQUFRO2FBQ3hCO1lBQ0QsV0FBVyxFQUFFO2dCQUNYLFlBQVksRUFBRSxJQUFJO2FBQ25CO1lBQ0QsV0FBVyxFQUFFLEVBQUUsS0FBSyxFQUFFLEtBQUssRUFBRTtZQUM3QixJQUFJLEVBQUUsS0FBSztZQUNYLEtBQUssRUFBRSxpQkFBaUI7WUFDeEIsTUFBTSxFQUFFO2dCQUNOLG9CQUFvQixFQUFFLElBQUk7Z0JBQzFCLEtBQUssRUFBRTtvQkFDTDt3QkFDRSxJQUFJLEVBQUUsUUFBUTt3QkFDZCxPQUFPLEVBQUU7NEJBQ1AsY0FBYyxFQUFFLEtBQUs7eUJBQ3RCO3FCQUNGO29CQUNEO3dCQUNFLElBQUksRUFBRSxPQUFPO3dCQUNiLE9BQU8sRUFBRSxjQUFjO3dCQUN2QixNQUFNLEVBQUUsV0FBVzt3QkFDbkIsT0FBTyxFQUFFOzRCQUNQLFVBQVUsRUFBRSxJQUFJLENBQUMsaUJBQWlCOzRCQUNsQyxjQUFjLEVBQUUsQ0FBQyxHQUFjLEVBQUUsRUFBRTtnQ0FDakMsT0FBTyxvQkFBb0IsQ0FBQyxVQUFVLENBQUM7b0NBQ3JDLFFBQVEsRUFBRSxHQUFHLENBQUMsSUFBSTtvQ0FDbEIsSUFBSSxFQUFFLEdBQUcsQ0FBQyxJQUFJO29DQUNkLElBQUksRUFBRSxHQUFHLENBQUMsU0FBUztvQ0FDbkIsSUFBSSxFQUFFLElBQUksR0FBRyxHQUFHLENBQUMsSUFBSSxDQUFDLFFBQVEsRUFBRTtvQ0FDaEMsUUFBUSxFQUFFLEdBQUcsQ0FBQyxRQUFRO29DQUN0QixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87aUNBQ3JCLENBQUMsQ0FBQzs0QkFDTCxDQUFDO3lCQUNGO3FCQUNGO29CQUNEO3dCQUNFLElBQUksRUFBRSxpRkFBaUY7d0JBQ3ZGLElBQUksRUFBRSxnQkFBZ0I7cUJBQ3ZCO2lCQUNGO2FBQ0Y7WUFDRCxPQUFPLEVBQUU7Z0JBQ1AsSUFBSSxpQkFBaUIsQ0FBQztvQkFDcEIsUUFBUSxFQUFFLENBQUMsU0FBUyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDO3dCQUNuQyxPQUFPLEVBQUUsSUFBSSxDQUFDLFNBQVM7d0JBQ3ZCLEVBQUUsRUFBRSxJQUFJO3dCQUNSLElBQUksRUFBRSxPQUFPLElBQUksRUFBRTt3QkFDbkIsZ0JBQWdCLEVBQUUsSUFBSTt3QkFDdEIsS0FBSyxFQUFFLElBQUk7d0JBQ1gsV0FBVyxFQUFFOzRCQUNYLEdBQUcsRUFBRSxJQUFJOzRCQUNULG1CQUFtQixFQUFFLEtBQUs7NEJBQzFCLE1BQU0sRUFBRTtnQ0FDTixVQUFVO2dDQUNWLGNBQWM7Z0NBQ2QsY0FBYzs2QkFDZixDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLENBQUMsQ0FBQyxDQUFDO3lCQUNoRDt3QkFDRCxRQUFRLEVBQUUsQ0FBQztxQkFDWixDQUFDLENBQUM7aUJBQ0osQ0FBQztnQkFDRixJQUFJLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQztvQkFDNUIsVUFBVSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBRSxDQUFDLE9BQU87b0JBQ3ZELEdBQUcsSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHO2lCQUNwQixDQUFDO2dCQUNGLElBQUksbUJBQW1CLENBQUM7b0JBQ3RCLE9BQU8sRUFBRSxJQUFJLENBQUMsU0FBUztvQkFDdkIsVUFBVSxFQUFFLENBQUMsSUFBSSxFQUFFLElBQUksRUFBRSxLQUFLLEVBQUUsS0FBSyxDQUFDO29CQUN0QyxHQUFHLEVBQUUsS0FBSztvQkFDVixPQUFPLEVBQUUsS0FBSztvQkFDZCxTQUFTLEVBQUUsQ0FBQyxPQUFxQixFQUFFLEVBQUU7d0JBQ25DLE1BQU0sY0FBYyxHQUFhLEVBQUUsQ0FBQzt3QkFDcEMsS0FBSyxNQUFNLE1BQU0sSUFBSSxPQUFPLEVBQUU7NEJBQzVCLEtBQUssTUFBTSxHQUFHLElBQUksTUFBTSxDQUFDLFFBQVEsRUFBRTtnQ0FDakMsTUFBTSxRQUFRLEdBQUcsR0FBRyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLFNBQVMsQ0FBQyxDQUFDLENBQUMsR0FBRyxDQUFDLFFBQVEsS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDO2dDQUMzRixJQUFJLFFBQVEsS0FBSyxTQUFTO29DQUFFLFNBQVM7Z0NBRXJDLGNBQWMsQ0FBQyxJQUFJLENBQUMsb0JBQW9CLENBQUMsVUFBVSxDQUFDO29DQUNsRCxRQUFRLEVBQUUsTUFBTSxDQUFDLFFBQVE7b0NBQ3pCLElBQUksRUFBRSxHQUFHLENBQUMsSUFBSTtvQ0FDZCxJQUFJLEVBQUUsR0FBRyxDQUFDLE1BQU07b0NBQ2hCLElBQUksRUFBRSxHQUFHLENBQUMsTUFBTSxFQUFFLFFBQVEsRUFBRTtvQ0FDNUIsUUFBUTtvQ0FDUixPQUFPLEVBQUUsR0FBRyxDQUFDLE9BQU87aUNBQ3JCLENBQUMsQ0FBQyxDQUFDOzZCQUNMO3lCQUNGO3dCQUNELE9BQU8sY0FBYyxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsR0FBRyxDQUFDLENBQUM7b0JBQ3JDLENBQUM7aUJBQ0YsQ0FBQztnQkFDRixJQUFJLE9BQU8sQ0FBQyxjQUFjLENBQUM7b0JBQ3pCLE9BQU8sRUFBRSxDQUFDLEdBQVcsRUFBRSxHQUFXLEVBQUUsR0FBRyxJQUFjLEVBQUUsRUFBRTt3QkFDdkQsTUFBTSxTQUFTLEdBQUcsR0FBRyxDQUFDLENBQUMsQ0FBQyxhQUFhLEdBQUcsRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7d0JBQ2hELE1BQU0sUUFBUSxHQUFHLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUMsQ0FBQyxhQUFhLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFDO3dCQUN4RSxJQUFJLENBQUMsT0FBTyxDQUFDLEtBQUssQ0FBQyxxQkFBcUIsSUFBSSxDQUFDLEtBQUssQ0FBQyxHQUFHLEdBQUcsR0FBRyxDQUFDLEtBQUssU0FBUyxHQUFHLFFBQVEsRUFBRSxDQUFDLENBQUM7b0JBQzVGLENBQUM7aUJBQ0YsQ0FBQzthQUNIO1NBQ0YsQ0FBQztJQUNKLENBQUM7SUFFTyxzQkFBc0I7UUFDNUIsTUFBTSx3QkFBd0IsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsMkJBQTJCLEVBQUUsSUFBSSxDQUFDLFNBQVMsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQztRQUV6SSxNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDaEYsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNuRCxJQUFJLEVBQUUsYUFBYTtZQUNuQixNQUFNLEVBQUU7Z0JBQ04sS0FBSyxFQUFFO29CQUNMO3dCQUNFLElBQUksRUFBRSxTQUFTO3dCQUNmLE9BQU8sRUFBRSxLQUFLO3dCQUNkLE1BQU0sRUFBRSxtQkFBbUI7d0JBQzNCLE9BQU8sRUFBRTs0QkFDUCxzQkFBc0IsRUFBRSxDQUFDLE1BQWMsRUFBRSxZQUFvQixFQUFFLEVBQUU7Z0NBQy9ELE9BQU8sQ0FBQyxZQUFZLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxJQUFJLENBQUMsWUFBWSxDQUFDLENBQUM7NEJBQzNGLENBQUM7eUJBQ0Y7cUJBQ0Y7aUJBQ0Y7YUFDRjtZQUNELEtBQUssRUFBRSxFQUFFLElBQUksRUFBRSxRQUFRLEVBQUUsY0FBYyxFQUFFLENBQUMsRUFBRTtZQUM1QyxRQUFRLEVBQUU7Z0JBQ1IsY0FBYyxFQUFFLHdCQUF3QjtnQkFDeEMsWUFBWSxFQUFFLHdCQUF3QjthQUN2QztZQUNELFlBQVksRUFBRTtnQkFDWixTQUFTLEVBQUUsZUFBZTtnQkFDMUIsUUFBUSxFQUFFLE9BQU87Z0JBQ2pCLFlBQVksRUFBRSxJQUFJO2FBQ25CO1lBQ0QsU0FBUyxFQUFFLGNBQWM7U0FDMUIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVPLHNCQUFzQjtRQUM1QixNQUFNLGNBQWMsR0FBRyxJQUFJLENBQUMsb0JBQW9CLENBQUMsS0FBSyxDQUFDLENBQUMsR0FBRyxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUM7UUFDakYsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxvQkFBb0IsRUFBRTtZQUNuRCxJQUFJLEVBQUUsWUFBWTtZQUNsQixLQUFLLEVBQUUsS0FBSztZQUNaLFlBQVksRUFBRTtnQkFDWixRQUFRLEVBQUUsSUFBSTtnQkFDZCxTQUFTLEVBQUU7b0JBQ1QsSUFBSSxZQUFZLENBQUM7d0JBQ2YsZUFBZSxFQUFFLEtBQUs7d0JBQ3RCLGFBQWEsRUFBRTs0QkFDYixRQUFRLEVBQUUsSUFBSTs0QkFDZCxJQUFJLEVBQUUsSUFBSTs0QkFDVixTQUFTLEVBQUUsS0FBSzs0QkFDaEIsZUFBZSxFQUFFLElBQUk7NEJBQ3JCLFdBQVcsRUFBRSxJQUFJOzRCQUNqQixHQUFHLEVBQUUsS0FBSzs0QkFDVixRQUFRLEVBQUUsS0FBSzs0QkFDZixNQUFNLEVBQUUsSUFBSTs0QkFDWixNQUFNLEVBQUU7Z0NBQ04sUUFBUSxFQUFFLEtBQUs7NkJBQ2hCO3lCQUNGO3FCQUNGLENBQUM7aUJBQ0g7Z0JBQ0QsU0FBUyxFQUFFLGVBQWU7Z0JBQzFCLFFBQVEsRUFBRSxlQUFlO2dCQUN6QixZQUFZLEVBQUUsS0FBSzthQUNwQjtZQUNELE9BQU8sRUFBRTtnQkFDUCxJQUFJLG9CQUFvQixDQUFDO29CQUN2QixLQUFLLEVBQUUsRUFBRSxRQUFRLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxLQUFLLEVBQUU7b0JBQ3pDLGNBQWMsRUFBRSxLQUFLO29CQUNyQixjQUFjLEVBQUUsd0JBQXdCO29CQUN4QyxrQkFBa0IsRUFBRSxJQUFJO2lCQUN6QixDQUFRO2FBQ1Y7WUFDRCxTQUFTLEVBQUUsY0FBYztTQUMxQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU8sb0JBQW9CLENBQUMsR0FBWTtRQUN2QyxNQUFNLGlCQUFpQixHQUFhLEVBQUUsQ0FBQztRQUN2QyxNQUFNLGVBQWUsR0FBc0MsRUFBRSxDQUFDO1FBRTlELE1BQU0sRUFBRSxHQUFHLENBQUMsUUFBZ0IsRUFBUSxFQUFFO1lBQ3BDLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSxDQUFDLENBQUM7WUFDL0MsSUFBSSxDQUFDLFNBQVM7Z0JBQUUsT0FBTztZQUV2QixNQUFNLFdBQVcsR0FBRztnQkFDbEIsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxZQUFZLElBQUksRUFBRSxDQUFDO2dCQUM1QyxHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLGdCQUFnQixJQUFJLEVBQUUsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxTQUFTLENBQUMsb0JBQW9CLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQyxRQUFRLENBQUM7YUFDcEgsQ0FBQztZQUNGLE1BQU0sY0FBYyxHQUFHO2dCQUNyQixHQUFHLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLG9CQUFvQixJQUFJLEVBQUUsQ0FBQztnQkFDcEQsR0FBRyxNQUFNLENBQUMsSUFBSSxDQUFDLFNBQVMsQ0FBQyxnQkFBZ0IsSUFBSSxFQUFFLENBQUMsQ0FBQyxNQUFNLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLFNBQVMsQ0FBQyxvQkFBb0IsRUFBRSxDQUFDLElBQUksQ0FBQyxDQUFDLFFBQVEsQ0FBQzthQUNuSCxDQUFDLFFBQVEsRUFBRSxDQUFDO1lBRWIsS0FBSyxNQUFNLFVBQVUsSUFBSSxXQUFXLEVBQUU7Z0JBQ3BDLElBQUksaUJBQWlCLENBQUMsUUFBUSxDQUFDLFVBQVUsQ0FBQztvQkFBRSxTQUFTO2dCQUNyRCxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLENBQUM7Z0JBRW5DLE1BQU0sVUFBVSxHQUFHLE1BQU0sQ0FBQywwQkFBMEIsQ0FBQyxlQUFlLEdBQUcsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsa0JBQWtCLENBQUMsQ0FBQyxLQUFLLEVBQUUsQ0FBQztnQkFDOUgsSUFBSSxVQUFVLENBQUMsYUFBYSxDQUFDLFVBQVUsQ0FBQyxFQUFFO29CQUN4QyxTQUFTO2lCQUNWO2dCQUVELElBQUksR0FBRyxJQUFJLE1BQU0sQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxVQUFVLEVBQUUsYUFBYSxDQUFDLENBQUMsRUFBRTtvQkFDakUsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLFVBQVUsRUFBRSxDQUFDLENBQUM7aUJBQzlEO2dCQUVELEVBQUUsQ0FBQyxVQUFVLENBQUMsQ0FBQzthQUNoQjtZQUVELEtBQUssTUFBTSxhQUFhLElBQUksY0FBYyxFQUFFO2dCQUMxQyxJQUFJLGlCQUFpQixDQUFDLFFBQVEsQ0FBQyxhQUFhLENBQUM7b0JBQUUsU0FBUztnQkFDeEQsaUJBQWlCLENBQUMsSUFBSSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2dCQUV0QyxNQUFNLGFBQWEsR0FBRyxNQUFNLENBQUMsMEJBQTBCLENBQUMsZUFBZSxHQUFHLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLGtCQUFrQixDQUFDLENBQUMsS0FBSyxFQUFFLENBQUM7Z0JBQ3BJLElBQUksVUFBVSxDQUFDLGFBQWEsQ0FBQyxhQUFhLENBQUMsRUFBRTtvQkFDM0MsZUFBZSxDQUFDLElBQUksQ0FBQyxFQUFFLElBQUksRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxDQUFDLENBQUM7b0JBQ25FLFNBQVM7aUJBQ1Y7Z0JBRUQsSUFBSSxHQUFHLElBQUksTUFBTSxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsQ0FBQyxFQUFFO29CQUNwRSxlQUFlLENBQUMsSUFBSSxDQUFDLEVBQUUsSUFBSSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsYUFBYSxFQUFFLENBQUMsQ0FBQztpQkFDcEU7Z0JBRUQsRUFBRSxDQUFDLGFBQWEsQ0FBQyxDQUFDO2FBQ25CO1FBQ0gsQ0FBQyxDQUFDO1FBRUYsRUFBRSxDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUVuQixPQUFPLGVBQWUsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUNwQyxDQUFDO0lBRU8sYUFBYSxDQUFDLE9BQWU7UUFDbkMsSUFBSSxDQUFDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFO1lBQ3BDLElBQUksQ0FBQyxhQUFhLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxNQUFNLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUMsQ0FBQztTQUN6RjtRQUNELE9BQU8sSUFBSSxDQUFDLGFBQWEsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDekMsQ0FBQztDQUNGIn0=
400
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlTZXJ2ZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1aWxkZXIvU2RDbGlTZXJ2ZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFckUsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLE9BQU8sWUFBWSxNQUFNLHVCQUF1QixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDbEUsT0FBTyxtQkFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLGlCQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxvQkFBb0IsRUFBRSxNQUFNLHdCQUF3QixDQUFDO0FBRzlELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBT2xELFlBQW9DLFNBQWlCLEVBQ2pCLE9BQWtDLEVBQ2xDLGtCQUEwQjtRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQUgwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQVI3QyxZQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBSXBFLGtC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
@@ -3,7 +3,6 @@ import { ISdCliPackageBuildResult } from "../commons";
3
3
  import { EventEmitter } from "events";
4
4
  export declare class SdCliTsLibBuilder extends EventEmitter {
5
5
  private readonly _rootPath;
6
- private readonly _isAngular;
7
6
  private readonly _logger;
8
7
  private _moduleResolutionCache?;
9
8
  private readonly _linter;
@@ -12,7 +11,11 @@ export declare class SdCliTsLibBuilder extends EventEmitter {
12
11
  private _program?;
13
12
  private _ngProgram?;
14
13
  private _builder?;
15
- constructor(_rootPath: any, _isAngular: boolean);
14
+ private readonly _tsconfigFilePath;
15
+ private readonly _parsedTsconfig;
16
+ private readonly _npmConfig;
17
+ private readonly _isAngular;
18
+ constructor(_rootPath: string);
16
19
  on(event: "change", listener: () => void): this;
17
20
  on(event: "complete", listener: (results: ISdCliPackageBuildResult[]) => void): this;
18
21
  watchAsync(): Promise<void>;
@@ -23,5 +26,4 @@ export declare class SdCliTsLibBuilder extends EventEmitter {
23
26
  private _createProgram;
24
27
  private _configProgramSourceFileVersions;
25
28
  private _createCacheCompilerHost;
26
- private _getParsedTsconfigAsync;
27
29
  }
@@ -9,30 +9,36 @@ import sass from "sass";
9
9
  import { SdCliPackageLinter } from "../build-tool/SdCliPackageLinter";
10
10
  import { SdCliCacheCompilerHost } from "../build-tool/SdCliCacheCompilerHost";
11
11
  import { SdCliNgCacheCompilerHost } from "../build-tool/SdCliNgCacheCompilerHost";
12
+ import { SdCliNpmConfigUtil } from "../utils/SdCliNpmConfigUtil";
12
13
  export class SdCliTsLibBuilder extends EventEmitter {
13
- constructor(_rootPath, _isAngular) {
14
+ constructor(_rootPath) {
14
15
  super();
15
16
  this._rootPath = _rootPath;
16
- this._isAngular = _isAngular;
17
17
  this._logger = Logger.get(["simplysm", "sd-cli", this.constructor.name]);
18
18
  this._fileCache = new Map();
19
19
  this._writeFileCache = new Map();
20
20
  this._linter = new SdCliPackageLinter(this._rootPath);
21
+ // tsconfig
22
+ this._tsconfigFilePath = path.resolve(this._rootPath, "tsconfig-build.json");
23
+ const tsconfig = FsUtil.readJson(this._tsconfigFilePath);
24
+ this._parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, this._rootPath);
25
+ // package.json
26
+ this._npmConfig = FsUtil.readJson(path.resolve(this._rootPath, "package.json"));
27
+ // else
28
+ this._isAngular = SdCliNpmConfigUtil.getDependencies(this._npmConfig).defaults.includes("@angular/core");
21
29
  }
22
30
  on(event, listener) {
23
31
  return super.on(event, listener);
24
32
  }
25
33
  async watchAsync() {
26
34
  this.emit("change");
27
- // TSCONFIG 읽기
28
- const parsedTsconfig = await this._getParsedTsconfigAsync();
29
35
  // DIST 비우기
30
- await FsUtil.removeAsync(parsedTsconfig.options.outDir);
36
+ await FsUtil.removeAsync(this._parsedTsconfig.options.outDir);
31
37
  // 프로그램 리로드
32
- const buildPack = this._createSdBuildPack(parsedTsconfig);
38
+ const buildPack = this._createSdBuildPack(this._parsedTsconfig);
33
39
  const relatedPaths = await this.getAllRelatedPathsAsync();
34
40
  const watcher = SdFsWatcher.watch(relatedPaths);
35
- watcher.onChange(async (changeInfos) => {
41
+ watcher.onChange({}, async (changeInfos) => {
36
42
  const changeFilePaths = changeInfos.filter((item) => ["add", "change", "unlink"].includes(item.event)).map((item) => item.path);
37
43
  if (changeFilePaths.length === 0)
38
44
  return;
@@ -43,7 +49,7 @@ export class SdCliTsLibBuilder extends EventEmitter {
43
49
  this._fileCache.delete(PathUtil.posix(changeFilePath));
44
50
  }
45
51
  // 빌드
46
- const watchBuildPack = this._createSdBuildPack(parsedTsconfig);
52
+ const watchBuildPack = this._createSdBuildPack(this._parsedTsconfig);
47
53
  // 린트
48
54
  const watchBuildResults = await this._runBuilderAsync(watchBuildPack.builder, watchBuildPack.ngCompiler);
49
55
  watchBuildResults.push(...await this._linter.lintAsync([
@@ -61,12 +67,10 @@ export class SdCliTsLibBuilder extends EventEmitter {
61
67
  this.emit("complete", buildResults);
62
68
  }
63
69
  async buildAsync() {
64
- // TSCONFIG 읽기
65
- const parsedTsconfig = await this._getParsedTsconfigAsync();
66
70
  // DIST 비우기
67
- await FsUtil.removeAsync(parsedTsconfig.options.outDir);
71
+ await FsUtil.removeAsync(this._parsedTsconfig.options.outDir);
68
72
  // 프로그램 리로드
69
- const buildPack = this._createSdBuildPack(parsedTsconfig);
73
+ const buildPack = this._createSdBuildPack(this._parsedTsconfig);
70
74
  // 빌드
71
75
  const buildResults = await this._runBuilderAsync(buildPack.builder, buildPack.ngCompiler);
72
76
  // 린트
@@ -125,7 +129,7 @@ export class SdCliTsLibBuilder extends EventEmitter {
125
129
  }
126
130
  catch (err) {
127
131
  if (err instanceof sass.Exception) {
128
- const matches = err.sassStack.match(/^(.*\.sd\.scss) ([0-9]*):([0-9]*)/);
132
+ const matches = (/^(.*\.sd\.scss) ([0-9]*):([0-9]*)/).exec(err.sassStack);
129
133
  const filePath = path.resolve(matches[1].replace(/\.sd\.scss/, "").replace(/^\.:/, item => item.toUpperCase()));
130
134
  const scssLine = matches[2];
131
135
  const scssChar = matches[3];
@@ -136,7 +140,7 @@ export class SdCliTsLibBuilder extends EventEmitter {
136
140
  char: undefined,
137
141
  code: undefined,
138
142
  severity: "error",
139
- message: `스타일(${scssLine}:${scssChar}): ${message}`
143
+ message: `스타일(${scssLine}:${scssChar}): ${message}\n${err.message}`
140
144
  }];
141
145
  }
142
146
  return [{
@@ -156,7 +160,7 @@ export class SdCliTsLibBuilder extends EventEmitter {
156
160
  const affectedSourceFileSet = new Set();
157
161
  while (true) {
158
162
  const result = this._builder.getSemanticDiagnosticsOfNextAffectedFile(undefined, (sourceFile) => {
159
- if (ngCompiler && ngCompiler.ignoreForDiagnostics.has(sourceFile) && sourceFile.fileName.endsWith(".ngtypecheck.ts")) {
163
+ if (ngCompiler?.ignoreForDiagnostics.has(sourceFile) && sourceFile.fileName.endsWith(".ngtypecheck.ts")) {
160
164
  const orgFileName = sourceFile.fileName.slice(0, -15) + ".ts";
161
165
  const orgSourceFile = this._builder.getSourceFile(orgFileName);
162
166
  if (orgSourceFile) {
@@ -217,10 +221,5 @@ export class SdCliTsLibBuilder extends EventEmitter {
217
221
  return compilerHost;
218
222
  }
219
223
  }
220
- async _getParsedTsconfigAsync() {
221
- const tsconfigFilePath = path.resolve(this._rootPath, "tsconfig-build.json");
222
- const tsconfig = await FsUtil.readJsonAsync(tsconfigFilePath);
223
- return ts.parseJsonConfigFileContent(tsconfig, ts.sys, this._rootPath);
224
- }
225
224
  }
226
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlUc0xpYkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9TZENsaVRzTGliQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBR2xGLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBY2pELFlBQW9DLFNBQVMsRUFDVCxVQUFtQjtRQUNyRCxLQUFLLEVBQUUsQ0FBQztRQUYwQixjQUFTLEdBQVQsU0FBUyxDQUFBO1FBQ1QsZUFBVSxHQUFWLFVBQVUsQ0FBUztRQWR0QyxZQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBTXBFLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxvQkFBZSxHQUFHLElB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
225
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlUc0xpYkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9TZENsaVRzTGliQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBb0JqRCxZQUFvQyxTQUFpQjtRQUNuRCxLQUFLLEVBQUUsQ0FBQztRQUQwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBbkJwQyxZQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO1FBTXBFLGVBQVUsR0FBRyxJQUFJLEdBQUcsRUFBc0IsQ0FBQztRQUMzQyxv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