@simplysm/sd-cli 7.0.24 → 7.0.38

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 (35) hide show
  1. package/dist/bin/sd-cli.mjs +2 -1
  2. package/dist/build-tool/SdCliNgCacheCompilerHost.mjs +2 -2
  3. package/dist/builder/SdCliClientBuilder.d.ts +20 -0
  4. package/dist/builder/SdCliClientBuilder.mjs +417 -0
  5. package/dist/builder/SdCliJsLibBuilder.mjs +2 -2
  6. package/dist/builder/SdCliServerBuilder.d.ts +7 -4
  7. package/dist/builder/SdCliServerBuilder.mjs +232 -92
  8. package/dist/builder/SdCliTsLibBuilder.d.ts +5 -3
  9. package/dist/builder/SdCliTsLibBuilder.mjs +17 -18
  10. package/dist/commons.d.ts +13 -1
  11. package/dist/entry-points/SdCliLocalUpdate.mjs +15 -9
  12. package/dist/entry-points/SdCliNpm.mjs +8 -4
  13. package/dist/entry-points/SdCliPrepare.mjs +3 -2
  14. package/dist/entry-points/SdCliWorkspace.d.ts +1 -0
  15. package/dist/entry-points/SdCliWorkspace.mjs +55 -23
  16. package/dist/packages/SdCliPackage.d.ts +5 -4
  17. package/dist/packages/SdCliPackage.mjs +27 -28
  18. package/dist/utils/SdCliBuildResultUtil.mjs +3 -4
  19. package/dist/utils/SdCliNpmConfigUtil.d.ts +4 -1
  20. package/dist/utils/SdCliNpmConfigUtil.mjs +12 -8
  21. package/package.json +19 -8
  22. package/src/bin/sd-cli.ts +1 -0
  23. package/src/build-tool/SdCliNgCacheCompilerHost.ts +1 -1
  24. package/src/builder/SdCliClientBuilder.ts +451 -0
  25. package/src/builder/SdCliJsLibBuilder.ts +1 -1
  26. package/src/builder/SdCliServerBuilder.ts +260 -91
  27. package/src/builder/SdCliTsLibBuilder.ts +26 -21
  28. package/src/commons.ts +10 -1
  29. package/src/entry-points/SdCliLocalUpdate.ts +14 -8
  30. package/src/entry-points/SdCliNpm.ts +7 -3
  31. package/src/entry-points/SdCliPrepare.ts +2 -1
  32. package/src/entry-points/SdCliWorkspace.ts +63 -24
  33. package/src/packages/SdCliPackage.ts +29 -34
  34. package/src/utils/SdCliBuildResultUtil.ts +2 -3
  35. package/src/utils/SdCliNpmConfigUtil.ts +11 -7
@@ -5,12 +5,11 @@ 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 webpackMerge from "webpack-merge";
9
8
  import TerserPlugin from "terser-webpack-plugin";
10
- import { StringUtil } from "@simplysm/sd-core-common";
11
- import { SdCliNpmConfigUtil } from "../utils/SdCliNpmConfigUtil";
9
+ import { ObjectUtil, StringUtil } from "@simplysm/sd-core-common";
12
10
  import ESLintWebpackPlugin from "eslint-webpack-plugin";
13
11
  import CopyWebpackPlugin from "copy-webpack-plugin";
12
+ import { LicenseWebpackPlugin } from "license-webpack-plugin";
14
13
  export class SdCliServerBuilder extends EventEmitter {
15
14
  constructor(_rootPath, _config, _workspaceRootPath) {
16
15
  super();
@@ -20,23 +19,48 @@ export class SdCliServerBuilder extends EventEmitter {
20
19
  this._logger = Logger.get(["simplysm", "sd-cli", this.constructor.name]);
21
20
  this._npmConfigMap = new Map();
22
21
  // tsconfig
23
- const tsconfigFilePath = path.resolve(this._rootPath, "tsconfig-build.json");
24
- const tsconfig = FsUtil.readJson(tsconfigFilePath);
22
+ this._tsconfigFilePath = path.resolve(this._rootPath, "tsconfig-build.json");
23
+ const tsconfig = FsUtil.readJson(this._tsconfigFilePath);
25
24
  this._parsedTsconfig = ts.parseJsonConfigFileContent(tsconfig, ts.sys, this._rootPath);
26
25
  }
27
26
  on(event, listener) {
28
27
  return super.on(event, listener);
29
28
  }
30
29
  async watchAsync() {
30
+ // DIST 비우기
31
+ await FsUtil.removeAsync(this._parsedTsconfig.options.outDir);
32
+ // 빌드 준비
33
+ const extModuleNames = this._getExternalModuleNames();
34
+ const webpackConfig = this._getWebpackConfig(true, extModuleNames);
35
+ const compiler = webpack(webpackConfig);
36
+ await new Promise((resolve, reject) => {
37
+ compiler.hooks.watchRun.tapAsync(this.constructor.name, (args, callback) => {
38
+ this.emit("change");
39
+ this._logger.debug("Webpack 빌드 수행...");
40
+ callback();
41
+ });
42
+ compiler.watch({}, async (err, stats) => {
43
+ if (err != null || stats == null) {
44
+ reject(err);
45
+ return;
46
+ }
47
+ // .config.json 파일 쓰기
48
+ await this._writeDistConfigFileAsync();
49
+ // 결과 반환
50
+ this._logger.debug("Webpack 빌드 완료");
51
+ const results = SdCliBuildResultUtil.convertFromWebpackStats(stats);
52
+ this.emit("complete", results);
53
+ resolve();
54
+ });
55
+ });
31
56
  }
32
57
  async buildAsync() {
33
58
  // DIST 비우기
34
59
  await FsUtil.removeAsync(this._parsedTsconfig.options.outDir);
35
- // 빌드 준비
36
- const extModuleNames = this._findExternalModules(false).map((item) => item.name);
37
60
  // 빌드
38
61
  this._logger.debug("Webpack 빌드 수행...");
39
- const webpackConfig = this._getWebpackBuildConfig(extModuleNames);
62
+ const extModuleNames = this._getExternalModuleNames();
63
+ const webpackConfig = this._getWebpackConfig(false, extModuleNames);
40
64
  const compiler = webpack(webpackConfig);
41
65
  const buildResults = await new Promise((resolve, reject) => {
42
66
  compiler.run((err, stats) => {
@@ -44,16 +68,101 @@ export class SdCliServerBuilder extends EventEmitter {
44
68
  reject(err);
45
69
  return;
46
70
  }
47
- // 결과 리턴
71
+ // 결과 반환
48
72
  const results = SdCliBuildResultUtil.convertFromWebpackStats(stats);
49
73
  resolve(results);
50
74
  });
51
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
+ // 마무리
52
85
  this._logger.debug("Webpack 빌드 완료");
53
86
  return buildResults;
54
87
  }
55
- 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;
56
164
  return {
165
+ mode: watch ? "development" : "production",
57
166
  devtool: false,
58
167
  target: ["node", "es2020"],
59
168
  profile: false,
@@ -72,22 +181,82 @@ export class SdCliServerBuilder extends EventEmitter {
72
181
  output: {
73
182
  clean: true,
74
183
  path: this._parsedTsconfig.options.outDir,
75
- filename: "[name].js",
76
- chunkFilename: "[name].js",
77
- assetModuleFilename: "resources/[name][ext][query]"
184
+ filename: "[name].mjs",
185
+ chunkFilename: "[name].mjs",
186
+ assetModuleFilename: "res/[name][ext][query]",
187
+ libraryTarget: "module"
188
+ },
189
+ experiments: {
190
+ outputModule: true
78
191
  },
79
192
  performance: { hints: false },
80
- node: false,
193
+ node: {
194
+ __dirname: true
195
+ },
81
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
+ },
82
233
  module: {
83
234
  strictExportPresence: true,
84
235
  rules: [
236
+ {
237
+ test: /\.m?js/,
238
+ resolve: {
239
+ fullySpecified: false
240
+ }
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
+ ] : [],
85
254
  {
86
255
  test: /\.ts$/,
87
256
  exclude: /node_modules/,
88
257
  loader: "ts-loader",
89
258
  options: {
90
- compilerOptions: this._parsedTsconfig.options,
259
+ configFile: this._tsconfigFilePath,
91
260
  errorFormatter: (msg) => {
92
261
  return SdCliBuildResultUtil.getMessage({
93
262
  filePath: msg.file,
@@ -107,6 +276,14 @@ export class SdCliServerBuilder extends EventEmitter {
107
276
  ]
108
277
  },
109
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
+ ],
110
287
  new CopyWebpackPlugin({
111
288
  patterns: ["assets/"].map((item) => ({
112
289
  context: this._rootPath,
@@ -132,6 +309,8 @@ export class SdCliServerBuilder extends EventEmitter {
132
309
  }),
133
310
  new ESLintWebpackPlugin({
134
311
  context: this._rootPath,
312
+ eslintPath: path.resolve(this._workspaceRootPath, "node_modules", "eslint"),
313
+ exclude: ["node_modules"],
135
314
  extensions: ["ts", "js", "mjs", "cjs"],
136
315
  fix: false,
137
316
  threads: false,
@@ -154,101 +333,62 @@ export class SdCliServerBuilder extends EventEmitter {
154
333
  }
155
334
  return resultMessages.join(os.EOL);
156
335
  }
157
- }),
336
+ }) /*,
158
337
  new webpack.ProgressPlugin({
159
- handler: (per, msg, ...args) => {
160
- const phaseText = msg ? ` - phase: ${msg}` : "";
161
- const argsText = args.length > 0 ? ` - args: [${args.join(", ")}]` : "";
162
- this._logger.debug(`Webpack 빌드 수행중...(${Math.round(per * 100)}%)${phaseText}${argsText}`);
163
- }
164
- })
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
+ })*/
165
344
  ]
166
345
  };
167
346
  }
168
- _getWebpackWatchConfig(extModuleNames) {
169
- const internalModuleCachePaths = FsUtil.findAllParentChildDirPaths("node_modules/!(@simplysm)", this._rootPath, this._workspaceRootPath);
170
- return webpackMerge(this._webpackCommonConfig, {
171
- mode: "development",
172
- output: {
173
- libraryTarget: "umd"
174
- },
175
- module: {
176
- rules: [
177
- {
178
- test: /\.m?js$/,
179
- enforce: "pre",
180
- loader: "source-map-loader",
181
- options: {
182
- filterSourceMappingUrl: (mapUri, resourcePath) => {
183
- return !resourcePath.includes("node_modules") || (/@simplysm[\\/]sd/).test(resourcePath);
184
- }
185
- }
186
- }
187
- ]
188
- },
189
- cache: { type: "memory", maxGenerations: 1 },
190
- snapshot: {
191
- immutablePaths: internalModuleCachePaths,
192
- managedPaths: internalModuleCachePaths
193
- },
194
- optimization: {
195
- moduleIds: "deterministic",
196
- chunkIds: "named",
197
- emitOnErrors: true
198
- },
199
- externals: extModuleNames
200
- });
201
- }
202
- _getWebpackBuildConfig(extModuleNames) {
203
- return webpackMerge(this._webpackCommonConfig, {
204
- mode: "production",
205
- output: {
206
- libraryTarget: "module"
207
- },
208
- cache: false,
209
- optimization: {
210
- minimizer: [
211
- new TerserPlugin({
212
- terserOptions: {
213
- ecma: 2020,
214
- sourceMap: false,
215
- keep_classnames: true,
216
- keep_fnames: true,
217
- ie8: false,
218
- safari10: false,
219
- module: true
220
- }
221
- })
222
- ],
223
- moduleIds: "deterministic",
224
- chunkIds: "deterministic",
225
- emitOnErrors: false
226
- },
227
- externals: extModuleNames
228
- });
229
- }
230
- _findExternalModules(all) {
347
+ _getExternalModuleNames() {
231
348
  const loadedModuleNames = [];
232
- const externalModules = [];
349
+ const resultSet = new Set();
233
350
  const fn = (currPath) => {
234
351
  const npmConfig = this._getNpmConfig(currPath);
235
352
  if (!npmConfig)
236
353
  return;
237
- for (const moduleName of SdCliNpmConfigUtil.getAllDependencies(npmConfig)) {
354
+ const moduleNames = [
355
+ ...Object.keys(npmConfig.dependencies ?? {}),
356
+ ...Object.keys(npmConfig.peerDependencies ?? {}).filter((item) => !npmConfig.peerDependenciesMeta?.[item].optional)
357
+ ];
358
+ const optModuleNames = [
359
+ ...Object.keys(npmConfig.optionalDependencies ?? {}),
360
+ ...Object.keys(npmConfig.peerDependencies ?? {}).filter((item) => npmConfig.peerDependenciesMeta?.[item].optional)
361
+ ].distinct();
362
+ for (const moduleName of moduleNames) {
238
363
  if (loadedModuleNames.includes(moduleName))
239
364
  continue;
240
365
  loadedModuleNames.push(moduleName);
241
366
  const modulePath = FsUtil.findAllParentChildDirPaths("node_modules/" + moduleName, currPath, this._workspaceRootPath).first();
242
- if (StringUtil.isNullOrEmpty(modulePath))
367
+ if (StringUtil.isNullOrEmpty(modulePath)) {
243
368
  continue;
244
- if (all || FsUtil.exists(path.resolve(modulePath, "binding.gyp"))) {
245
- externalModules.push({ path: modulePath, name: moduleName });
369
+ }
370
+ if (FsUtil.exists(path.resolve(modulePath, "binding.gyp"))) {
371
+ resultSet.add(moduleName);
246
372
  }
247
373
  fn(modulePath);
248
374
  }
375
+ for (const optModuleName of optModuleNames) {
376
+ if (loadedModuleNames.includes(optModuleName))
377
+ continue;
378
+ loadedModuleNames.push(optModuleName);
379
+ const optModulePath = FsUtil.findAllParentChildDirPaths("node_modules/" + optModuleName, currPath, this._workspaceRootPath).first();
380
+ if (StringUtil.isNullOrEmpty(optModulePath)) {
381
+ resultSet.add(optModuleName);
382
+ continue;
383
+ }
384
+ if (FsUtil.exists(path.resolve(optModulePath, "binding.gyp"))) {
385
+ resultSet.add(optModuleName);
386
+ }
387
+ fn(optModulePath);
388
+ }
249
389
  };
250
390
  fn(this._rootPath);
251
- return externalModules.distinct();
391
+ return Array.from(resultSet.values());
252
392
  }
253
393
  _getNpmConfig(pkgPath) {
254
394
  if (!this._npmConfigMap.has(pkgPath)) {
@@ -257,4 +397,4 @@ export class SdCliServerBuilder extends EventEmitter {
257
397
  return this._npmConfigMap.get(pkgPath);
258
398
  }
259
399
  }
260
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlTZXJ2ZXJCdWlsZGVyLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2J1aWxkZXIvU2RDbGlTZXJ2ZXJCdWlsZGVyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUNBLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxRQUFRLENBQUM7QUFDdEMsT0FBTyxFQUFFLE1BQU0sRUFBRSxNQUFNLEVBQUUsUUFBUSxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDbEUsT0FBTyxPQUFPLE1BQU0sU0FBUyxDQUFDO0FBQzlCLE9BQU8sSUFBSSxNQUFNLE1BQU0sQ0FBQztBQUN4QixPQUFPLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFDNUIsT0FBTyxFQUFFLG9CQUFvQixFQUFFLE1BQU0sK0JBQStCLENBQUM7QUFFckUsT0FBTyxFQUFFLE1BQU0sSUFBSSxDQUFDO0FBRXBCLE9BQU8sWUFBWSxNQUFNLGVBQWUsQ0FBQztBQUN6QyxPQUFPLFlBQVksTUFBTSx1QkFBdUIsQ0FBQztBQUNqRCxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sMEJBQTBCLENBQUM7QUFDdEQsT0FBTyxFQUFFLGtCQUFrQixFQUFFLE1BQU0sNkJBQTZCLENBQUM7QUFDakUsT0FBTyxtQkFBbUIsTUFBTSx1QkFBdUIsQ0FBQztBQUN4RCxPQUFPLGlCQUFpQixNQUFNLHFCQUFxQixDQUFDO0FBR3BELE1BQU0sT0FBTyxrQkFBbUIsU0FBUSxZQUFZO0lBTWxELFlBQW9DLFNBQWlCLEVBQ2pCLE9BQWtDLEVBQ2xDLGtCQUEwQjtRQUM1RCxLQUFLLEVBQUUsQ0FBQztRQUgwQixjQUFTLEdBQVQsU0FBUyxDQUFRO1FBQ2pCLFlBQU8sR0FBUCxPQUFPLENBQTJCO1FBQ2xDLHVCQUFrQixHQUFsQixrQkFBa0IsQ0FBUTtRQVA3QyxZQUFPLEdBQUcsTUFBTSxDQUFDLEdBQUcsQ0FBQyxDQUFDLFVBQVUsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLFdBQVcsQ0FBQyxJQUFJLENB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
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: any);
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
  // 린트
@@ -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,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2RDbGlUc0xpYkJ1aWxkZXIuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYnVpbGRlci9TZENsaVRzTGliQnVpbGRlci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFDQSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sUUFBUSxDQUFDO0FBQ3RDLE9BQU8sRUFBRSxNQUFNLFlBQVksQ0FBQztBQUM1QixPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsV0FBVyxFQUFFLE1BQU0sd0JBQXdCLENBQUM7QUFDL0UsT0FBTyxLQUFLLElBQUksTUFBTSxNQUFNLENBQUM7QUFDN0IsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLFFBQVEsQ0FBQztBQUNwQyxPQUFPLEVBQUUsb0JBQW9CLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDckQsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLGtDQUFrQyxDQUFDO0FBQ3RFLE9BQU8sRUFBRSxzQkFBc0IsRUFBRSxNQUFNLHNDQUFzQyxDQUFDO0FBQzlFLE9BQU8sRUFBRSx3QkFBd0IsRUFBRSxNQUFNLHdDQUF3QyxDQUFDO0FBRWxGLE9BQU8sRUFBRSxrQkFBa0IsRUFBRSxNQUFNLDZCQUE2QixDQUFDO0FBRWpFLE1BQU0sT0FBTyxpQkFBa0IsU0FBUSxZQUFZO0lBb0JqRCxZQUFvQyxTQUFTO1FBQzNDLEtBQUssRUFBRSxDQUFDO1FBRDBCLGNBQVMsR0FBVCxTQUFTLENBQUE7UUFuQjVCLFlBQU8sR0FBRyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFNcEUsZUFBVSxHQUFHLElBQUksR0FBRyxFQUFzQixDQUFDO1FBQzNDLG9CQUFlLEdBQUcsSUFBSSxHQUFHLEVBQWtCLENBQUM7UUFjM0QsSUFBSSxDQUFDLE9BQU8sR0FBRyxJQUFJLGtCQUFrQixDQUFDLElBQUksQ0FBQyxTQUFTLENBQUMsQ0FBQztRQUV0RCxXQUFXO1FBQ1gsSUFBSSxDQUFDLGlCQUFpQixHQUFHLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLFNBQVMsRUFBRSxxQkFBcUIsQ0FBQyxDQUFDO1FBQzdFLE1BQU0sUUFBUSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLGlCQUFpQixDQUFDLENBQUM7UUFDekQsSUFBSSxDQUFDLGVBQWUsR0FBRyxFQUFFLENBQUMsMEJBQTBCLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxHQUFHLEVBQUUsSUFBSSxDQUFDLFNBQVMsQ0FBQyxDQUFDO1FBRXZGLGVBQWU7UUFDZixJQUFJLENBQUMsVUFBVSxHQUFHLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsU0FBUyxFQUFFLGNBQWMsQ0FBQyxDQUFDLENBQUM7UUFFaEYsT0FBTztRQUNQLElBQUksQ0FBQyxVQUFVLEdBQUcsa0JBQWtCLENBQUMsZUFBZSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGVBQWUsQ0FBQyxDQUFDO0lBQzNHLENBQUM7SUFJZSxFQUFFLENBQUMsS0FBc0IsRUFBRSxRQUFrQztRQUMzRSxPQUFPLEtBQUssQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLFFBQVEsQ0FBQyxDQUFDO0lBQ25DLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVTtRQUNyQixJQUFJLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBRXBCLFdBQVc7UUFDWCxNQUFNLE1BQU0sQ0FBQyxXQUFXLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxPQUFPLENBQUMsTUFBTyxDQUFDLENBQUM7UUFFL0QsV0FBVztRQUNYLE1BQU0sU0FBUyxHQUFHLElBQUksQ0FBQyxrQkFBa0IsQ0FBQyxJQUFJLENBQUMsZUFBZSxDQUFDLENBQUM7UUFFaEUsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMxRCxNQUFNLE9BQU8sR0FBRyxXQUFXLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxDQUFDO1FBQ2hELE9BQU8sQ0FBQyxRQUFRLENBQUMsRUFBRSxFQUFFLEtBQUssRUFBRSxXQUFXLEVBQUUsRUFBRTtZQUN6QyxNQUFNLGVBQWUsR0FBRyxXQUFXLENBQUMsTUFBTSxDQUFDLENBQUMsSUFBSSxFQUFFLEVBQUUsQ0FBQyxDQUFDLEtBQUssRUFBRSxRQUFRLEVBQUUsUUFBUSxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxDQUFDO1lBQ2hJLElBQUksZUFBZSxDQUFDLE1BQU0sS0FBSyxDQUFDO2dCQUFFLE9BQU87WUFFekMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsVUFBVSxFQUFFLFdBQVcsQ0FBQyxDQUFDO1lBQzVDLElBQUksQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFcEIsUUFBUTtZQUNSLEtBQUssTUFBTSxjQUFjLElBQUksZUFBZSxFQUFFO2dCQUM1QyxJQUFJLENBQUMsVUFBVSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxDQUFDLENBQUM7YUFDeEQ7WUFFRCxLQUFLO1lBQ0wsTUFBTSxjQUFjLEdBQUcsSUFBSSxDQUFDLGtCQUFrQixDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsQ0FBQztZQUVyRSxLQUFLO1lBQ0wsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxjQUFjLENBQUMsT0FBTyxFQUFFLGNBQWMsQ0FBQyxVQUFVLENBQUMsQ0FBQztZQUN6RyxpQkFBaUIsQ0FBQyxJQUFJLENBQUMsR0FBRyxNQUFNLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO2dCQUNyRCxHQUFHLGNBQWMsQ0FBQyxtQkFBbUIsQ0FBQyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUM7Z0JBQ2xFLEdBQUcsZUFBZTthQUNuQixFQUFFLGNBQWMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1lBRTVCLE1BQU0saUJBQWlCLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztZQUMvRCxPQUFPLENBQUMsR0FBRyxDQUFDLGlCQUFpQixDQUFDLENBQUM7WUFFL0IsSUFBSSxDQUFDLElBQUksQ0FBQyxVQUFVLEVBQUUsaUJBQWlCLENBQUMsQ0FBQztRQUMzQyxDQUFDLENBQUMsQ0FBQztRQUVILEtBQUs7UUFDTCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxRixLQUFLO1FBQ0wsWUFBWSxDQUFDLElBQUksQ0FBQyxHQUFHLE1BQU0sSUFBSSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsWUFBWSxFQUFFLFNBQVMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDO1FBRXBGLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxFQUFFLFlBQVksQ0FBQyxDQUFDO0lBQ3RDLENBQUM7SUFFTSxLQUFLLENBQUMsVUFBVTtRQUNyQixXQUFXO1FBQ1gsTUFBTSxNQUFNLENBQUMsV0FBVyxDQUFDLElBQUksQ0FBQyxlQUFlLENBQUMsT0FBTyxDQUFDLE1BQU8sQ0FBQyxDQUFDO1FBRS9ELFdBQVc7UUFDWCxNQUFNLFNBQVMsR0FBRyxJQUFJLENBQUMsa0JBQWtCLENBQUMsSUFBSSxDQUFDLGVBQWUsQ0FBQyxDQUFDO1FBRWhFLEtBQUs7UUFDTCxNQUFNLFlBQVksR0FBRyxNQUFNLElBQUksQ0FBQyxnQkFBZ0IsQ0FBQyxTQUFTLENBQUMsT0FBTyxFQUFFLFNBQVMsQ0FBQyxVQUFVLENBQUMsQ0FBQztRQUUxRixLQUFLO1FBQ0wsTUFBTSxZQUFZLEdBQUcsTUFBTSxJQUFJLENBQUMsdUJBQXVCLEVBQUUsQ0FBQztRQUMxRCxZQUFZLENBQUMsSUFBSSxDQUFDLEdBQUcsTUFBTSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxZQUFZLEVBQUUsU0FBUyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUM7UUFFcEYsT0FBTyxZQUFZLENBQUM7SUFDdEIsQ0FBQztJQUVPLEtBQUssQ0FBQyx1QkFBdUI7UUFDbkMsTUFBTSxjQUFjLEdBQUcsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUMsVUFBVSxDQUFDLElBQUksRUFBRSxDQUFDLENBQUM7UUFDMUQsTUFBTSxnQkFBZ0IsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsSUFBSSxFQUFFLDBCQUEwQixDQUFDLENBQUM7UUFDeEYsTUFBTSxpQkFBaUIsR0FBRyxNQUFNLE1BQU0sQ0FBQyxTQUFTLENBQUMsZ0JBQWdCLEVBQUU7WUFDakUsTUFBTSxFQUFFO2dCQUNOLG9CQUFvQjtnQkFDcEIsWUFBWTtnQkFDWixVQUFVO2FBQ1g7U0FDRixDQUFDLENBQUM7UUFFSCxPQUFPLENBQUMsR0FBRyxjQUFjLEVBQUUsR0FBRyxpQkFBaUIsRUFBRSxJQUFJLENBQUMsT0FBTyxDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsZUFBZSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUUsQ0FBQztJQUM3RyxDQUFDO0lBRU8sS0FBSyxDQUFDLGdCQUFnQixDQUFDLE9BQW9ELEVBQUUsVUFBdUI7UUFDMUcsSUFBSTtZQUNGLE1BQU0sT0FBTyxHQUErQixFQUFFLENBQUM7WUFFL0MsTUFBTSxXQUFXLEdBQW9CLEVBQUUsQ0FBQztZQUV4QyxJQUFJLFVBQVUsRUFBRTtnQkFDZCxXQUFXLENBQUMsSUFBSSxDQUFDLEdBQUcsVUFBVSxDQUFDLG9CQUFvQixFQUFFLENBQUMsQ0FBQzthQUN4RDtZQUVELFdBQVcsQ0FBQyxJQUFJLENBQ2QsR0FBRyxPQUFPLENBQUMscUJBQXFCLEVBQUUsRUFDbEMsR0FBRyxPQUFPLENBQUMsb0JBQW9CLEVBQUUsQ0FDbEMsQ0FBQztZQUVGLElBQUksVUFBVSxFQUFFO2dCQUNkLE1BQU0sVUFBVSxDQUFDLFlBQVksRUFBRSxDQUFDO2FBQ2pDO1lBRUQsS0FBSyxNQUFNLFVBQVUsSUFBSSxPQUFPLENBQUMsY0FBYyxFQUFFLEVBQUU7Z0JBQ2pELElBQUksVUFBVSxFQUFFLG9CQUFvQixDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQUUsU0FBUztnQkFFL0QsV0FBVyxDQUFDLElBQUksQ0FDZCxHQUFHLE9BQU8sQ0FBQyx1QkFBdUIsQ0FBQyxVQUFVLENBQUMsRUFDOUMsR0FBRyxPQUFPLENBQUMsc0JBQXNCLENBQUMsVUFBVSxDQUFDLENBQzlDLENBQUM7Z0JBRUYsSUFDRSxVQUFVO29CQUNWLENBQUMsVUFBVSxDQUFDLGlCQUFpQjtvQkFDN0IsQ0FBQyxVQUFVLENBQUMsYUFBYSxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUM7b0JBQ3pDLENBQUMsVUFBVSxDQUFDLGlCQUFpQixDQUFDLGNBQWMsQ0FBQyxVQUFVLENBQUMsRUFDeEQ7b0JBQ0EsV0FBVyxDQUFDLElBQUksQ0FDZCxHQUFHLFVBQVUsQ0FBQyxxQkFBcUIsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxDQUFDLENBQ25ELENBQUM7aUJBQ0g7YUFDRjtZQUVELE9BQU8sQ0FBQyxJQUFJLENBQ1YsR0FBRyxXQUFXO2lCQUNYLE1BQU0sQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsQ0FBQyxFQUFFLENBQUMsa0JBQWtCLENBQUMsS0FBSyxFQUFFLEVBQUUsQ0FBQyxrQkFBa0IsQ0FBQyxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2lCQUN0RyxHQUFHLENBQUMsQ0FBQyxJQUFJLEVBQUUsRUFBRSxDQUFDLG9CQUFvQixDQUFDLGlCQUFpQixDQUFDLElBQUksQ0FBQyxDQUFDO2lCQUMzRCxZQUFZLEVBQUUsQ0FDbEIsQ0FBQztZQUVGLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQUksRUFBRSxFQUFFLENBQUMsSUFBSSxDQUFDLFFBQVEsS0FBSyxPQUFPLENBQUMsRUFBRTtnQkFDckQsT0FBTyxPQUFPLENBQUM7YUFDaEI7WUFFRCxNQUFNLFlBQVksR0FBRyxVQUFVLEVBQUUsV0FBVyxFQUFFLENBQUMsWUFBWSxDQUFDO1lBQzVELEtBQUssTUFBTSxVQUFVLElBQUksT0FBTyxDQUFDLGNBQWMsRUFBRSxFQUFFO2dCQUNqRCxJQUFJLFVBQVUsRUFBRSxhQUFhLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQztvQkFBRSxTQUFTO2dCQUN4RCxPQUFPLENBQUMsSUFBSSxDQUFDLFVBQVUsRUFBRSxTQUFTLEVBQUUsU0FBUyxFQUFFLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQzthQUN6RTtZQUVELE9BQU8sT0FBTyxDQUFDO1NBQ2hCO1FBQ0QsT0FBTyxHQUFHLEVBQUU7WUFDVixJQUFJLEdBQUcsWUFBWSxJQUFJLENBQUMsU0FBUyxFQUFFO2dCQUNqQyxNQUFNLE9BQU8sR0FBRyxHQUFHLENBQUMsU0FBUyxDQUFDLEtBQUssQ0FBQyxtQ0FBbUMsQ0FBRSxDQUFDO2dCQUMxRSxNQUFNLFFBQVEsR0FBRyxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsWUFBWSxFQUFFLEVBQUUsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxNQUFNLEVBQUUsSUFBSSxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQyxDQUFDO2dCQUNoSCxNQUFNLFFBQVEsR0FBRyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUM7Z0JBQzVCLE1BQU0sUUFBUSxHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQztnQkFDNUIsTUFBTSxPQUFPLEdBQUcsR0FBRyxDQUFDLFdBQVcsQ0FBQztnQkFFaEMsT0FBTyxDQUFDO3dCQUNOLFFBQVE7d0JBQ1IsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsSUFBSSxFQUFFLFNBQVM7d0JBQ2YsUUFBUSxFQUFFLE9BQU87d0JBQ2pCLE9BQU8sRUFBRSxPQUFPLFFBQVEsSUFBSSxRQUFRLE1BQU0sT0FBTyxFQUFFO3FCQUNwRCxDQUFDLENBQUM7YUFDSjtZQUVELE9BQU8sQ0FBQztvQkFDTixRQUFRLEVBQUUsU0FBUztvQkFDbkIsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsSUFBSSxFQUFFLFNBQVM7b0JBQ2YsUUFBUSxFQUFFLE9BQU87b0JBQ2pCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTztpQkFDckIsQ0FBQyxDQUFDO1NBQ0o7SUFDSCxDQUFDO0lBRU8sa0JBQWtCLENBQUMsY0FBb0M7UUFDN0QsTUFBTSxZQUFZLEdBQUcsSUFBSSxDQUFDLHdCQUF3QixDQUFDLGNBQWMsQ0FBQyxDQUFDO1FBQ25FLE1BQU0sRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLEdBQUcsSUFBSSxDQUFDLGNBQWMsQ0FBQyxjQUFjLEVBQUUsWUFBWSxDQUFDLENBQUM7UUFFbEYsSUFBSSxDQUFDLFFBQVEsR0FBRyxFQUFFLENBQUMsOENBQThDLENBQy9ELE9BQU8sRUFDUCxZQUFZLEVBQ1osSUFBSSxDQUFDLFFBQVEsQ0FDZCxDQUFDO1FBRUYsTUFBTSxxQkFBcUIsR0FBdUIsSUFBSSxHQUFHLEVBQWlCLENBQUM7UUFDM0UsT0FBTyxJQUFJLEVBQUU7WUFDWCxNQUFNLE1BQU0sR0FBRyxJQUFJLENBQUMsUUFBUSxDQUFDLHdDQUF3QyxDQUFDLFNBQVMsRUFBRSxDQUFDLFVBQVUsRUFBRSxFQUFFO2dCQUM5RixJQUFJLFVBQVUsSUFBSSxVQUFVLENBQUMsb0JBQW9CLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxJQUFJLFVBQVUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLGlCQUFpQixDQUFDLEVBQUU7b0JBQ3BILE1BQU0sV0FBVyxHQUFHLFVBQVUsQ0FBQyxRQUFRLENBQUMsS0FBSyxDQUFDLENBQUMsRUFBRSxDQUFDLEVBQUUsQ0FBQyxHQUFHLEtBQUssQ0FBQztvQkFDOUQsTUFBTSxhQUFhLEdBQUcsSUFBSSxDQUFDLFFBQVMsQ0FBQyxhQUFhLENBQUMsV0FBVyxDQUFDLENBQUM7b0JBQ2hFLElBQUksYUFBYSxFQUFFO3dCQUNqQixxQkFBcUIsQ0FBQyxHQUFHLENBQUMsYUFBYSxDQUFDLENBQUM7cUJBQzFDO29CQUVELE9BQU8sSUFBSSxDQUFDO2lCQUNiO2dCQUVELE9BQU8sS0FBSyxDQUFDO1lBQ2YsQ0FBQyxDQUFDLENBQUM7WUFDSCxJQUFJLENBQUMsTUFBTTtnQkFBRSxNQUFNO1lBRW5CLHFCQUFxQixDQUFDLEdBQUcsQ0FBQyxNQUFNLENBQUMsUUFBeUIsQ0FBQyxDQUFDO1NBQzdEO1FBRUQsT0FBTztZQUNMLE9BQU87WUFDUCxVQUFVO1lBQ1YsT0FBTyxFQUFFLElBQUksQ0FBQyxRQUFRO1lBQ3RCLG1CQUFtQixFQUFFLEtBQUssQ0FBQyxJQUFJLENBQUMscUJBQXFCLENBQUMsTUFBTSxFQUFFLENBQUM7U0FDaEUsQ0FBQztJQUNKLENBQUM7SUFFTyxjQUFjLENBQUMsY0FBb0MsRUFBRSxZQUE2QjtRQUN4RixJQUFJLElBQUksQ0FBQyxVQUFVLEVBQUU7WUFDbkIsSUFBSSxDQUFDLFVBQVUsR0FBRyxJQUFJLFlBQVksQ0FDaEMsY0FBYyxDQUFDLFNBQVMsRUFDeEIsY0FBYyxDQUFDLE9BQU8sRUFDdEIsWUFBWSxFQUNaLElBQUksQ0FBQyxVQUFVLENBQ2hCLENBQUM7WUFDRixJQUFJLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxVQUFVLENBQUMsWUFBWSxFQUFFLENBQUM7WUFFL0MsSUFBSSxDQUFDLGdDQUFnQyxDQUFDLElBQUksQ0FBQyxRQUFRLENBQUMsQ0FBQztZQUNyRCxPQUFPO2dCQUNMLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUTtnQkFDdEIsVUFBVSxFQUFFLElBQUksQ0FBQyxVQUFVLENBQUMsUUFBUTthQUNyQyxDQUFDO1NBQ0g7YUFDSTtZQUNILElBQUksQ0FBQyxRQUFRLEdBQUcsRUFBRSxDQUFDLGFBQWEsQ0FDOUIsY0FBYyxDQUFDLFNBQVMsRUFDeEIsY0FBYyxDQUFDLE9BQU8sRUFDdEIsWUFBWSxFQUNaLElBQUksQ0FBQyxRQUFRLENBQ2QsQ0FBQztZQUVGLElBQUksQ0FBQyxnQ0FBZ0MsQ0FBQyxJQUFJLENBQUMsUUFBUSxDQUFDLENBQUM7WUFFckQsT0FBTyxFQUFFLE9BQU8sRUFBRSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7U0FDbkM7SUFDSCxDQUFDO0lBRU8sZ0NBQWdDLENBQUMsT0FBbUI7UUFDMUQsTUFBTSxrQkFBa0IsR0FBRyxPQUFPLENBQUMsY0FBYyxDQUFDO1FBQ2xELE9BQU8sQ0FBQyxjQUFjLEdBQUcsVUFBVSxHQUFHLFVBQVU7WUFDOUMsTUFBTSxLQUFLLEdBQXNELGtCQUFrQixDQUFDLEdBQUcsVUFBVSxDQUFDLENBQUM7WUFFbkcsS0FBSyxNQUFNLElBQUksSUFBSSxLQUFLLEVBQUU7Z0JBQ3hCLElBQUksSUFBSSxDQUFDLE9BQU8sS0FBSyxTQUFTLEVBQUU7b0JBQzlCLElBQUksQ0FBQyxPQUFPLEdBQUcsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLE1BQU0sQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFDLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDO2lCQUNyRTthQUNGO1lBRUQsT0FBTyxLQUFLLENBQUM7UUFDZixDQUFDLENBQUM7SUFDSixDQUFDO0lBRU8sd0JBQXdCLENBQUMsY0FBb0M7UUFDbkUsSUFBSSxDQUFDLElBQUksQ0FBQyxzQkFBc0IsRUFBRTtZQUNoQyxJQUFJLENBQUMsc0JBQXNCLEdBQUcsRUFBRSxDQUFDLDJCQUEyQixDQUFDLElBQUksQ0FBQyxTQUFTLEVBQUUsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUMsRUFBRSxjQUFjLENBQUMsT0FBTyxDQUFDLENBQUM7U0FDaEg7UUFFRCxNQUFNLFlBQVksR0FBRyxzQkFBc0IsQ0FBQyxNQUFNLENBQ2hELGNBQWMsRUFDZCxJQUFJLENBQUMsc0JBQXNCLEVBQzNCLElBQUksQ0FBQyxVQUFVLEVBQ2YsSUFBSSxDQUFDLGVBQWUsQ0FDckIsQ0FBQztRQUVGLElBQUksSUFBSSxDQUFDLFVBQVUsRUFBRTtZQUNuQixPQUFPLHdCQUF3QixDQUFDLElBQUksQ0FBQyxZQUFZLEVBQUUsSUFBSSxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQ3JFO2FBQ0k7WUFDSCxPQUFPLFlBQVksQ0FBQztTQUNyQjtJQUNILENBQUM7Q0FDRiJ9