@decaf-ts/cli 0.4.11 → 0.4.13

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.
@@ -13,7 +13,20 @@ const logging_1 = require("@decaf-ts/logging");
13
13
  const banners_1 = require("./banners.cjs");
14
14
  const slogans_1 = require("./slogans.cjs");
15
15
  const environment_1 = require("./environment.cjs");
16
+ const cli_module_1 = __importDefault(require("./build-module/cli-module.cjs"));
17
+ const cli_module_2 = __importDefault(require("./release-module/cli-module.cjs"));
18
+ const cli_module_3 = __importDefault(require("./utils-module/cli-module.cjs"));
16
19
  const MIN_BANNER_WIDTH = 92;
20
+ const DEFAULT_LOG_LEVEL = logging_1.LogLevel.info;
21
+ const LOG_FORMAT = environment_1.DecafCLieEnvironment.format.includes("{pId}")
22
+ ? environment_1.DecafCLieEnvironment.format
23
+ : `{pId}|${environment_1.DecafCLieEnvironment.format}`;
24
+ const CLI_PACKAGE_NAME = "@decaf-ts/cli";
25
+ const INCLUDED_MODULE_FACTORIES = [
26
+ cli_module_1.default,
27
+ cli_module_2.default,
28
+ cli_module_3.default,
29
+ ];
17
30
  const pIdDescriptor = {
18
31
  key: "pId",
19
32
  render(payload) {
@@ -37,9 +50,8 @@ catch {
37
50
  }
38
51
  }
39
52
  logging_1.Logging.setConfig({
40
- format: environment_1.DecafCLieEnvironment.format.includes("{pId}")
41
- ? environment_1.DecafCLieEnvironment.format
42
- : `{pId}|${environment_1.DecafCLieEnvironment.format}`,
53
+ level: DEFAULT_LOG_LEVEL,
54
+ format: LOG_FORMAT,
43
55
  });
44
56
  /**
45
57
  * @description Utility class to handle CLI functionality from all Decaf modules
@@ -65,8 +77,10 @@ class CliWrapper extends logging_1.LoggedClass {
65
77
  this.basePath = basePath;
66
78
  this.crawlLevels = crawlLevels;
67
79
  this.modules = {};
80
+ this.includedModuleNames = new Set();
68
81
  this.moduleSlogans = {};
69
82
  this.globalSlogans = [];
83
+ this.logLevelAttached = new WeakSet();
70
84
  this.rootPath = path_1.default.resolve(__dirname, "..");
71
85
  }
72
86
  /**
@@ -121,13 +135,24 @@ class CliWrapper extends logging_1.LoggedClass {
121
135
  module = await module;
122
136
  if (!this.isCommandInstance(module))
123
137
  throw new Error(`You should export the instantiated Commands class as default.`);
124
- this.modules[name] = module;
138
+ this.ensureLogLevelSupport(module);
139
+ const moduleRoot = this.findModuleRoot(path_1.default.dirname(filePath));
140
+ const packageName = this.getPackageNameFromRoot(moduleRoot);
141
+ if (packageName === CLI_PACKAGE_NAME &&
142
+ this.includedModuleNames.has(name)) {
143
+ log.verbose(`skipping included module ${name} at ${filePath} (already loaded)`);
144
+ return undefined;
145
+ }
146
+ this.registerModule(name, module, moduleRoot, log);
125
147
  }
126
148
  catch (e) {
127
149
  throw new Error(`failed to load module under ${filePath}: ${e instanceof Error ? e.message : e}`);
128
150
  }
151
+ return name;
152
+ }
153
+ registerModule(name, module, moduleRoot, log) {
154
+ this.modules[name] = module;
129
155
  try {
130
- const moduleRoot = this.findModuleRoot(path_1.default.dirname(filePath));
131
156
  const records = (0, slogans_1.readSlogans)(log, moduleRoot);
132
157
  const strings = this.extractSloganStrings(records);
133
158
  if (strings.length) {
@@ -137,7 +162,6 @@ class CliWrapper extends logging_1.LoggedClass {
137
162
  catch (e) {
138
163
  console.error(`Failed to load slogans for ${name}: ${e}`);
139
164
  }
140
- return name;
141
165
  }
142
166
  /**
143
167
  * @description Finds and loads all CLI modules in the basePath
@@ -170,20 +194,73 @@ class CliWrapper extends logging_1.LoggedClass {
170
194
  */
171
195
  async boot() {
172
196
  const log = this.log.for(this.boot);
173
- const basePath = path_1.default.resolve(this.rootPath, this.basePath);
197
+ this.ensureLogLevelSupport(this.command);
198
+ this.loadIncludedModules();
199
+ const basePath = this.getHostPath();
200
+ const seen = new Set();
201
+ await this.loadModulesFromPath(basePath, seen, log);
202
+ const scopePaths = this.getScopePackageRoots();
203
+ for (const scopePath of scopePaths) {
204
+ await this.loadModulesFromPath(scopePath, seen, log);
205
+ }
206
+ log.debug(`loaded modules:\n${Object.keys(this.modules)
207
+ .map((k) => `- ${k}`)
208
+ .join("\n")}`);
209
+ }
210
+ loadIncludedModules() {
211
+ const log = this.log.for(this.loadIncludedModules);
212
+ for (const factory of INCLUDED_MODULE_FACTORIES) {
213
+ try {
214
+ const moduleName = factory.name;
215
+ if (!moduleName || this.includedModuleNames.has(moduleName)) {
216
+ continue;
217
+ }
218
+ const command = factory();
219
+ if (!this.isCommandInstance(command)) {
220
+ continue;
221
+ }
222
+ this.ensureLogLevelSupport(command);
223
+ this.includedModuleNames.add(moduleName);
224
+ this.registerModule(moduleName, command, this.rootPath, log);
225
+ if (!this.command.commands.some((cmd) => cmd.name() === moduleName)) {
226
+ this.command.addCommand(command);
227
+ }
228
+ }
229
+ catch (error) {
230
+ console.error(`failed to load included module ${factory.name}: ${error instanceof Error ? error.message : error}`);
231
+ }
232
+ }
233
+ }
234
+ async loadModulesFromPath(basePath, seen, log) {
235
+ if (!fs_1.default.existsSync(basePath)) {
236
+ return;
237
+ }
238
+ try {
239
+ if (!fs_1.default.statSync(basePath).isDirectory()) {
240
+ return;
241
+ }
242
+ }
243
+ catch {
244
+ return;
245
+ }
174
246
  const modules = this.crawl(basePath, this.crawlLevels);
175
247
  for (const module of modules) {
176
- if (module.includes("@decaf-ts/cli")) {
248
+ const resolved = path_1.default.resolve(module);
249
+ if (seen.has(resolved)) {
177
250
  continue;
178
251
  }
252
+ seen.add(resolved);
179
253
  let name;
180
254
  try {
181
- name = await this.load(module);
255
+ name = await this.load(resolved);
182
256
  }
183
257
  catch (e) {
184
258
  console.error(e);
185
259
  continue;
186
260
  }
261
+ if (!name) {
262
+ continue;
263
+ }
187
264
  const alreadyRegistered = this.command.commands.some((cmd) => cmd.name() === name);
188
265
  if (alreadyRegistered) {
189
266
  log.verbose(`Command ${name} already registered; skipping duplicate`);
@@ -196,9 +273,83 @@ class CliWrapper extends logging_1.LoggedClass {
196
273
  console.error(e);
197
274
  }
198
275
  }
199
- log.debug(`loaded modules:\n${Object.keys(this.modules)
200
- .map((k) => `- ${k}`)
201
- .join("\n")}`);
276
+ }
277
+ getScopePackageRoots() {
278
+ const scopeRoots = new Set();
279
+ const candidates = [this.rootPath];
280
+ const hostPath = this.getHostPath();
281
+ if (hostPath !== this.rootPath) {
282
+ candidates.push(hostPath);
283
+ }
284
+ for (const candidate of candidates) {
285
+ const scopeDir = path_1.default.join(candidate, "node_modules", "@decaf-ts");
286
+ try {
287
+ if (!fs_1.default.existsSync(scopeDir) || !fs_1.default.statSync(scopeDir).isDirectory()) {
288
+ continue;
289
+ }
290
+ const entries = fs_1.default.readdirSync(scopeDir, { withFileTypes: true });
291
+ for (const entry of entries) {
292
+ if (!entry.isDirectory())
293
+ continue;
294
+ scopeRoots.add(path_1.default.join(scopeDir, entry.name));
295
+ }
296
+ }
297
+ catch {
298
+ // ignore inaccessible nodes
299
+ }
300
+ }
301
+ return Array.from(scopeRoots);
302
+ }
303
+ getHostPath() {
304
+ return path_1.default.resolve(this.rootPath, this.basePath);
305
+ }
306
+ getPackageNameFromRoot(root) {
307
+ try {
308
+ const pkgPath = path_1.default.join(root, "package.json");
309
+ if (!fs_1.default.existsSync(pkgPath)) {
310
+ return undefined;
311
+ }
312
+ const pkg = JSON.parse(fs_1.default.readFileSync(pkgPath, "utf8"));
313
+ return typeof pkg.name === "string" ? pkg.name : undefined;
314
+ }
315
+ catch {
316
+ return undefined;
317
+ }
318
+ }
319
+ ensureLogLevelSupport(command) {
320
+ if (this.logLevelAttached.has(command)) {
321
+ return;
322
+ }
323
+ this.logLevelAttached.add(command);
324
+ const hasLogLevelOption = command.options.some((option) => option.long === "--logLevel");
325
+ if (!hasLogLevelOption) {
326
+ command.option("--logLevel <level>", "Override the CLI log level (error, warn, info, verbose, debug, trace, silly)", DEFAULT_LOG_LEVEL);
327
+ }
328
+ command.hook("preAction", (_, actionCommand) => {
329
+ const opts = actionCommand.opts();
330
+ this.updateLogLevel(opts.logLevel);
331
+ });
332
+ for (const subCommand of command.commands) {
333
+ this.ensureLogLevelSupport(subCommand);
334
+ }
335
+ }
336
+ updateLogLevel(level) {
337
+ const resolvedLevel = this.resolveLogLevel(level);
338
+ logging_1.Logging.setConfig({
339
+ level: resolvedLevel,
340
+ format: LOG_FORMAT,
341
+ });
342
+ }
343
+ resolveLogLevel(level) {
344
+ if (!level)
345
+ return DEFAULT_LOG_LEVEL;
346
+ const normalized = level.toLowerCase();
347
+ const options = Object.values(logging_1.LogLevel);
348
+ if (options.includes(normalized)) {
349
+ return normalized;
350
+ }
351
+ console.warn(`Unknown log level "${level}" provided; falling back to ${DEFAULT_LOG_LEVEL}`);
352
+ return DEFAULT_LOG_LEVEL;
202
353
  }
203
354
  /**
204
355
  * @description Recursively searches for CLI module files in the directory structure
@@ -211,12 +362,14 @@ class CliWrapper extends logging_1.LoggedClass {
211
362
  * @private
212
363
  */
213
364
  crawl(basePath, levels = 2) {
214
- if (levels <= 0)
365
+ if (levels < 0)
215
366
  return [];
216
367
  return fs_1.default.readdirSync(basePath).reduce((accum, file) => {
217
368
  file = path_1.default.join(basePath, file);
218
369
  if (fs_1.default.statSync(file).isDirectory()) {
219
- accum.push(...this.crawl(file, levels - 1));
370
+ if (levels > 0) {
371
+ accum.push(...this.crawl(file, levels - 1));
372
+ }
220
373
  }
221
374
  else if (file.match(new RegExp(`${constants_1.CLI_FILE_NAME}\\.[cm]js$`, "gm"))) {
222
375
  accum.push(file);
@@ -22,10 +22,12 @@ export declare class CliWrapper extends LoggedClass {
22
22
  private crawlLevels;
23
23
  private _command?;
24
24
  private modules;
25
+ private includedModuleNames;
25
26
  private readonly rootPath;
26
27
  private moduleSlogans;
27
28
  private globalSlogans;
28
29
  private bannerAnimation?;
30
+ private readonly logLevelAttached;
29
31
  private static env;
30
32
  constructor(basePath?: string, crawlLevels?: number);
31
33
  /**
@@ -63,6 +65,7 @@ export declare class CliWrapper extends LoggedClass {
63
65
  * CliWrapper-->>CliWrapper: Return name
64
66
  */
65
67
  private load;
68
+ private registerModule;
66
69
  /**
67
70
  * @description Finds and loads all CLI modules in the basePath
68
71
  * @summary Uses the crawl method to find all CLI modules in the specified base path,
@@ -93,6 +96,14 @@ export declare class CliWrapper extends LoggedClass {
93
96
  * CliWrapper->>Console: Log loaded modules
94
97
  */
95
98
  private boot;
99
+ private loadIncludedModules;
100
+ private loadModulesFromPath;
101
+ private getScopePackageRoots;
102
+ private getHostPath;
103
+ private getPackageNameFromRoot;
104
+ private ensureLogLevelSupport;
105
+ private updateLogLevel;
106
+ private resolveLogLevel;
96
107
  /**
97
108
  * @description Recursively searches for CLI module files in the directory structure
98
109
  * @summary Crawls the basePath up to the specified number of folder levels to find files named according to CLI_FILE_NAME
@@ -1 +1 @@
1
- {"version":3,"file":"CliWrapper.js","sourceRoot":"","sources":["../src/CliWrapper.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"CliWrapper.js","sourceRoot":"","sources":["../src/CliWrapper.ts"],"names":[],"mappings":";;;;;;AAAA,yCAAoC;AACpC,4CAAoB;AACpB,gDAAwB;AACxB,+CAA4C;AAC5C,uCAAmC;AACnC,+CAO2B;AAC3B,2CAAmD;AACnD,2CAAwC;AACxC,mDAAqD;AACrD,+EAAoD;AACpD,iFAAwD;AACxD,+EAAoD;AAEpD,MAAM,gBAAgB,GAAG,EAAE,CAAC;AAC5B,MAAM,iBAAiB,GAAG,kBAAQ,CAAC,IAAI,CAAC;AACxC,MAAM,UAAU,GAAG,kCAAoB,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC;IAC9D,CAAC,CAAC,kCAAoB,CAAC,MAAM;IAC7B,CAAC,CAAC,SAAS,kCAAoB,CAAC,MAAM,EAAE,CAAC;AAC3C,MAAM,gBAAgB,GAAG,eAAe,CAAC;AAIzC,MAAM,yBAAyB,GAAuB;IACpD,oBAAW;IACX,oBAAa;IACb,oBAAW;CACZ,CAAC;AAEF,MAAM,aAAa,GAA2B;IAC5C,GAAG,EAAE,KAAK;IACV,MAAM,CAAC,OAAO;QACZ,IAAI,OAAO,CAAC,MAAM,CAAC,QAAQ,KAAK,KAAK;YAAE,OAAO,SAAS,CAAC;QACxD,OAAO,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC;IAChC,CAAC;IACD,KAAK,CAAC,QAAQ,EAAE,OAAO;QACrB,OAAO,OAAO,CAAC,UAAU,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;IACjD,CAAC;CACF,CAAC;AAEF,IAAI,CAAC;IACH,iBAAO,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;AAClC,CAAC;AAAC,MAAM,CAAC;IACP,IAAI,CAAC;QACH,8BAAoB,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;IAC/C,CAAC;IAAC,MAAM,CAAC;QACP,uDAAuD;IACzD,CAAC;AACH,CAAC;AACD,iBAAO,CAAC,SAAS,CAAC;IAChB,KAAK,EAAE,iBAAiB;IACxB,MAAM,EAAE,UAAU;CACnB,CAAC,CAAC;AAEH;;;;;;;;;;;;;;;;GAgBG;AACH,MAAa,UAAW,SAAQ,qBAAW;aAW1B,QAAG,GAAG,kCAAoB,AAAvB,CAAwB;IAE1C,YACU,WAAmB,kCAAoB,CAAC,aAAa,EACrD,cAAc,CAAC;QAEvB,KAAK,EAAE,CAAC;QAHA,aAAQ,GAAR,QAAQ,CAA6C;QACrD,gBAAW,GAAX,WAAW,CAAI;QAbjB,YAAO,GAA4B,EAAE,CAAC;QACtC,wBAAmB,GAAgB,IAAI,GAAG,EAAE,CAAC;QAG7C,kBAAa,GAA6B,EAAE,CAAC;QAC7C,kBAAa,GAAa,EAAE,CAAC;QAEpB,qBAAgB,GAAG,IAAI,OAAO,EAAW,CAAC;QASzD,IAAI,CAAC,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;IAChD,CAAC;IAED;;;;;OAKG;IACH,IAAY,OAAO;QACjB,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;YACnB,IAAI,CAAC,QAAQ,GAAG,IAAI,mBAAO,EAAE,CAAC;YAC9B,gBAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QACpD,CAAC;QACD,OAAO,IAAI,CAAC,QAAQ,CAAC;IACvB,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;OA0BG;IACK,KAAK,CAAC,IAAI,CAAC,QAAgB;QACjC,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,IAAY,CAAC;QAEjB,IAAI,CAAC;YACH,IAAI,MAAM,GAAG,MAAM,gBAAQ,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAEnD,IAAI,GAAG,MAAM,CAAC,IAAc,CAAC;YAC7B,IAAI,MAAM,YAAY,QAAQ;gBAAE,MAAM,GAAG,MAAM,EAAS,CAAC;YACzD,IAAI,MAAM,YAAY,OAAO;gBAAE,MAAM,GAAG,MAAM,MAAM,CAAC;YAErD,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,MAAM,CAAC;gBACjC,MAAM,IAAI,KAAK,CACb,+DAA+D,CAChE,CAAC;YAEJ,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC,CAAC;YAEnC,MAAM,UAAU,GAAG,IAAI,CAAC,cAAc,CAAC,cAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,IAAI,CAAC,sBAAsB,CAAC,UAAU,CAAC,CAAC;YAC5D,IACE,WAAW,KAAK,gBAAgB;gBAChC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,IAAI,CAAC,EAClC,CAAC;gBACD,GAAG,CAAC,OAAO,CACT,4BAA4B,IAAI,OAAO,QAAQ,mBAAmB,CACnE,CAAC;gBACF,OAAO,SAAS,CAAC;YACnB,CAAC;YAED,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,UAAU,EAAE,GAAG,CAAC,CAAC;QACrD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,IAAI,KAAK,CACb,+BAA+B,QAAQ,KAAK,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,EAAE,CACjF,CAAC;QACJ,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,cAAc,CACpB,IAAY,EACZ,MAAe,EACf,UAAkB,EAClB,GAAW;QAEX,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC;QAE5B,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,qBAAW,EAAC,GAAG,EAAE,UAAU,CAAC,CAAC;YAC7C,MAAM,OAAO,GAAG,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAC;YACnD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;gBACnB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC;YACrC,CAAC;QACH,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,OAAO,CAAC,KAAK,CAAC,8BAA8B,IAAI,KAAK,CAAC,EAAE,CAAC,CAAC;QAC5D,CAAC;IACH,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA4BG;IACK,KAAK,CAAC,IAAI;QAChB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpC,IAAI,CAAC,qBAAqB,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;QAC/B,MAAM,IAAI,CAAC,mBAAmB,CAAC,QAAQ,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QAEpD,MAAM,UAAU,GAAG,IAAI,CAAC,oBAAoB,EAAE,CAAC;QAC/C,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,IAAI,CAAC,mBAAmB,CAAC,SAAS,EAAE,IAAI,EAAE,GAAG,CAAC,CAAC;QACvD,CAAC;QAED,GAAG,CAAC,KAAK,CACP,oBAAoB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC;aAC1C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC;aACpB,IAAI,CAAC,IAAI,CAAC,EAAE,CAChB,CAAC;IACJ,CAAC;IAEO,mBAAmB;QACzB,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnD,KAAK,MAAM,OAAO,IAAI,yBAAyB,EAAE,CAAC;YAChD,IAAI,CAAC;gBACH,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC;gBAChC,IAAI,CAAC,UAAU,IAAI,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,EAAE,CAAC;oBAC5D,SAAS;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,OAAO,EAAE,CAAC;gBAC1B,IAAI,CAAC,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,EAAE,CAAC;oBACrC,SAAS;gBACX,CAAC;gBACD,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;gBAEpC,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;gBACzC,IAAI,CAAC,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAE7D,IACE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,UAAU,CAAC,EAC/D,CAAC;oBACD,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;gBACnC,CAAC;YACH,CAAC;YAAC,OAAO,KAAc,EAAE,CAAC;gBACxB,OAAO,CAAC,KAAK,CACX,kCAAkC,OAAO,CAAC,IAAI,KAC5C,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,KAC3C,EAAE,CACH,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB,CAC/B,QAAgB,EAChB,IAAiB,EACjB,GAAW;QAEX,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC7B,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACzC,OAAO;YACT,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,OAAO;QACT,CAAC;QAED,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,CAAC;QAEvD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;YACtC,IAAI,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;YAEnB,IAAI,IAAwB,CAAC;YAC7B,IAAI,CAAC;gBACH,IAAI,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;YACnC,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;gBACjB,SAAS;YACX,CAAC;YACD,IAAI,CAAC,IAAI,EAAE,CAAC;gBACV,SAAS;YACX,CAAC;YAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAClD,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,KAAK,IAAI,CAC7B,CAAC;YACF,IAAI,iBAAiB,EAAE,CAAC;gBACtB,GAAG,CAAC,OAAO,CAAC,WAAW,IAAI,yCAAyC,CAAC,CAAC;gBACtE,SAAS;YACX,CAAC;YAED,IAAI,CAAC;gBACH,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;YAC9C,CAAC;YAAC,OAAO,CAAU,EAAE,CAAC;gBACpB,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;YACnB,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB;QAC1B,MAAM,UAAU,GAAG,IAAI,GAAG,EAAU,CAAC;QACrC,MAAM,UAAU,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QACnC,MAAM,QAAQ,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;QACpC,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5B,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;YACnC,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,SAAS,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;YACnE,IAAI,CAAC;gBACH,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;oBACrE,SAAS;gBACX,CAAC;gBAED,MAAM,OAAO,GAAG,YAAE,CAAC,WAAW,CAAC,QAAQ,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;gBAClE,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;oBAC5B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;wBAAE,SAAS;oBACnC,UAAU,CAAC,GAAG,CAAC,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gBAClD,CAAC;YACH,CAAC;YAAC,MAAM,CAAC;gBACP,4BAA4B;YAC9B,CAAC;QACH,CAAC;QAED,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IAChC,CAAC;IAEO,WAAW;QACjB,OAAO,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;IACpD,CAAC;IAEO,sBAAsB,CAAC,IAAY;QACzC,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,cAAI,CAAC,IAAI,CAAC,IAAI,EAAE,cAAc,CAAC,CAAC;YAChD,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC5B,OAAO,SAAS,CAAC;YACnB,CAAC;YACD,MAAM,GAAG,GAAG,IAAI,CAAC,KAAK,CAAC,YAAE,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC,CAAC;YACzD,OAAO,OAAO,GAAG,CAAC,IAAI,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC;QAC7D,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IAEO,qBAAqB,CAAC,OAAgB;QAC5C,IAAI,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;YACvC,OAAO;QACT,CAAC;QAED,IAAI,CAAC,gBAAgB,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QAEnC,MAAM,iBAAiB,GAAG,OAAO,CAAC,OAAO,CAAC,IAAI,CAC5C,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,YAAY,CACzC,CAAC;QACF,IAAI,CAAC,iBAAiB,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CACZ,oBAAoB,EACpB,8EAA8E,EAC9E,iBAAiB,CAClB,CAAC;QACJ,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,aAAa,EAAE,EAAE;YAC7C,MAAM,IAAI,GAAG,aAAa,CAAC,IAAI,EAA6B,CAAC;YAC7D,IAAI,CAAC,cAAc,CAAC,IAAI,CAAC,QAA8B,CAAC,CAAC;QAC3D,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,UAAU,IAAI,OAAO,CAAC,QAAQ,EAAE,CAAC;YAC1C,IAAI,CAAC,qBAAqB,CAAC,UAAU,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAEO,cAAc,CAAC,KAAc;QACnC,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,CAAC,KAAK,CAAC,CAAC;QAClD,iBAAO,CAAC,SAAS,CAAC;YAChB,KAAK,EAAE,aAAa;YACpB,MAAM,EAAE,UAAU;SACnB,CAAC,CAAC;IACL,CAAC;IAEO,eAAe,CAAC,KAAc;QACpC,IAAI,CAAC,KAAK;YAAE,OAAO,iBAAiB,CAAC;QACrC,MAAM,UAAU,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,kBAAQ,CAAa,CAAC;QACpD,IAAI,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,EAAE,CAAC;YACjC,OAAO,UAAsB,CAAC;QAChC,CAAC;QACD,OAAO,CAAC,IAAI,CACV,sBAAsB,KAAK,+BAA+B,iBAAiB,EAAE,CAC9E,CAAC;QACF,OAAO,iBAAiB,CAAC;IAC3B,CAAC;IAED;;;;;;;;;OASG;IACK,KAAK,CAAC,QAAgB,EAAE,SAAiB,CAAC;QAChD,IAAI,MAAM,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC1B,OAAO,YAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,CAAC,KAAe,EAAE,IAAI,EAAE,EAAE;YAC/D,IAAI,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;YACjC,IAAI,YAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACpC,IAAI,MAAM,GAAG,CAAC,EAAE,CAAC;oBACf,KAAK,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;iBAAM,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,MAAM,CAAC,GAAG,yBAAa,YAAY,EAAE,IAAI,CAAC,CAAC,EAAE,CAAC;gBACtE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACnB,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,EAAE,EAAE,CAAC,CAAC;IACT,CAAC;IAEO,cAAc,CAAC,UAAkB;QACvC,IAAI,OAAO,GAAG,UAAU,CAAC;QACzB,MAAM,IAAI,GAAG,cAAI,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;QACzC,OAAO,IAAI,EAAE,CAAC;YACZ,IAAI,YAAE,CAAC,UAAU,CAAC,cAAI,CAAC,IAAI,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC,EAAE,CAAC;gBACtD,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,IAAI,OAAO,KAAK,IAAI;gBAAE,MAAM;YAC5B,MAAM,MAAM,GAAG,cAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;YACrC,IAAI,MAAM,KAAK,OAAO;gBAAE,MAAM;YAC9B,OAAO,GAAG,MAAM,CAAC;QACnB,CAAC;QACD,OAAO,UAAU,CAAC;IACpB,CAAC;IAES,SAAS,CAAC,cAAuB;QACzC,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,cAAc;YAC7B,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,IAAI,EAAE;YAC1C,CAAC,CAAC,EAAE,CAAC;QACP,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,cAAc,CAAC,CAAC;QAEjD,IAAI,CAAC,QAAQ,CAAC,MAAM,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACvC,OAAO,oCAAoC,CAAC;QAC9C,CAAC;QAED,IAAI,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACrB,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3D,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;YACnB,OAAO,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,IAAI,GAAG,IAAI,CAAC,uBAAuB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QAC5D,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACvD,CAAC;IAEO,YAAY,CAAC,cAAuB;QAC1C,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,aAAa,CAAC;aAC/C,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC,IAAI,KAAK,cAAc,CAAC;aAC3C,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;QACrC,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC5D,OAAO,EAAE,CAAC;QACZ,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,aAAa,EAAE,GAAG,OAAO,CAAC,CAAC;IAC7C,CAAC;IAEO,uBAAuB,CAC7B,OAAiB,EACjB,SAAmB;QAEnB,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE,SAAS,CAAC,MAAM,CAAC,CAAC;QAChE,MAAM,aAAa,GAAG,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE,YAAY,CAAC,CAAC;QACjE,MAAM,eAAe,GAAG,IAAI,CAAC,cAAc,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QACrE,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC;YAC9B,MAAM,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC;QAClC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,MAAgB,EAAE,YAAoB;QAC3D,IAAI,CAAC,MAAM,CAAC,MAAM,IAAI,YAAY,IAAI,CAAC;YAAE,OAAO,EAAE,CAAC;QACnD,OAAO,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE;YACvD,OAAO,MAAM,CAAC,KAAK,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC;QACvC,CAAC,CAAC,CAAC;IACL,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO;QAC1C,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAa,EAAE,CAAC;QAE9B,MAAM,SAAS,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAClC,MAAM,QAAQ,GAAG,cAAI,CAAC,OAAO,CAAC,IAAI,CAAC,QAAQ,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC5D,IAAI,QAAQ,KAAK,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/B,SAAS,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3B,CAAC;QAED,KAAK,MAAM,SAAS,IAAI,SAAS,EAAE,CAAC;YAClC,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;YACtD,IAAI,CAAC,uBAAuB,CAAC,GAAG,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzD,CAAC;QAED,IAAI,CAAC,aAAa,GAAG,QAAQ,CAAC;IAChC,CAAC;IAEO,sBAAsB,CAC5B,GAAQ,EACR,QAAgB,EAChB,WAAqB;QAErB,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,IAAA,qBAAW,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI,CAAC,OAAO;gBAAE,OAAO;YACrB,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;gBAC5B,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC;oBACrE,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;gBACxC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,kCAAkC;QACpC,CAAC;IACH,CAAC;IAEO,uBAAuB,CAC7B,GAAQ,EACR,QAAgB,EAChB,WAAqB;QAErB,MAAM,QAAQ,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,cAAc,EAAE,WAAW,CAAC,CAAC;QAClE,IAAI,CAAC;YACH,IAAI,CAAC,YAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,YAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;gBACrE,OAAO;YACT,CAAC;YACD,MAAM,IAAI,GAAG,YAAE,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YACtC,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,MAAM,SAAS,GAAG,cAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC3C,IAAI,CAAC;oBACH,IACE,CAAC,YAAE,CAAC,UAAU,CAAC,SAAS,CAAC;wBACzB,CAAC,YAAE,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,EACrC,CAAC;wBACD,SAAS;oBACX,CAAC;oBACD,IAAI,CAAC,sBAAsB,CAAC,GAAG,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;gBAC3D,CAAC;gBAAC,MAAM,CAAC;oBACP,mCAAmC;gBACrC,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,gCAAgC;QAClC,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,OAA8B;QACzD,IAAI,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAC3C,OAAO,OAAO;aACX,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,IAAI,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;aAClE,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IACzC,CAAC;IAEO,iBAAiB,CAAC,KAAc;QACtC,IAAI,KAAK,YAAY,mBAAO;YAAE,OAAO,IAAI,CAAC;QAC1C,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,OAAO,KAAK,CAAC;QACtD,MAAM,SAAS,GAAG,KAAgB,CAAC;QACnC,OAAO,CACL,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;YAC1C,OAAO,SAAS,CAAC,UAAU,KAAK,UAAU;YAC1C,OAAO,SAAS,CAAC,IAAI,KAAK,UAAU,CACrC,CAAC;IACJ,CAAC;IAES,WAAW,CAAC,IAAe;QACnC,IAAI,OAAe,CAAC;QACpB,IAAI,CAAC;YACH,MAAM,cAAc,GAAG,IAAI,CAAC,iBAAiB,CAAC,IAAI,CAAC,CAAC;YACpD,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,GAAG,oCAAoC,CAAC;QACjD,CAAC;QAED,yCAAyC;QACzC,MAAM,cAAc,GAAG,iBAAO,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,iBAAO,CAAC,MAAM,CAAC,CAAC,CAAC;QAC3E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,uBAAa,CAAC,CAAC;QAC/C,MAAM,OAAO,GACX,uBAAa,CACX,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,CAC5D,CAAC;QAEJ,MAAM,QAAQ,GAAG,cAAc;aAC5B,KAAK,CAAC,IAAI,CAAC;aACX,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,MAAM,YAAY,GAAG,QAAQ,CAAC,MAAM,CAClC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,MAAM,CAAC,EACzC,CAAC,CACF,CAAC;QACF,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QACjD,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,gBAAgB,EAAE,YAAY,EAAE,YAAY,CAAC,CAAC;QAC3E,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC,CAAC;QAChE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC;QAE3C,MAAM,aAAa,GAAG,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAEpC,MAAM,IAAI,GAAG,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACjD,IAAI,CAAC,eAAe,GAAG,IAAI,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAEO,iBAAiB,CAAC,IAAe;QACvC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,CAAC;YAAE,OAAO,SAAS,CAAC;QAChD,MAAM,UAAU,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;QACjC,KAAK,MAAM,IAAI,IAAI,UAAU,EAAE,CAAC;YAC9B,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,SAAS;YAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC;gBAC1B,OAAO,OAAO,CAAC;YACjB,CAAC;YACD,OAAO,OAAO,CAAC;QACjB,CAAC;QACD,OAAO,SAAS,CAAC;IACnB,CAAC;IAEO,mBAAmB;QACzB,IAAI,IAAI,CAAC,eAAe,EAAE,CAAC;YACzB,IAAI,CAAC,eAAe,EAAE,CAAC;YACvB,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;IACH,CAAC;IAEO,aAAa,CAAC,KAAe,EAAE,OAAiB;QACtD,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;YAClB,OAAO,GAAG,EAAE,GAAE,CAAC,CAAC;QAClB,CAAC;QAED,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAE3B,MAAM,aAAa,GAAG,GAAG,CAAC;QAC1B,MAAM,QAAQ,GAAG,IAAI,CAAC;QACtB,MAAM,WAAW,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,CAAC,CAAC;QACrE,IAAI,cAAc,GAAG,CAAC,CAAC;QACvB,IAAI,OAAO,GAAG,KAAK,CAAC;QACpB,IAAI,KAAiC,CAAC;QAEtC,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;QAClD,MAAM,YAAY,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,EAAE,CAAC,KAAK,GAAG,aAAa,CAAC,CAAC;QACpE,MAAM,KAAK,GAAG,SAAS,CAAC;QACxB,MAAM,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;QAC5B,MAAM,MAAM,GAAG,UAAU,MAAM,GAAG,CAAC;QAEnC,MAAM,IAAI,GAAG,GAAG,EAAE;YAChB,IAAI,OAAO;gBAAE,OAAO;YACpB,OAAO,GAAG,IAAI,CAAC;YACf,IAAI,KAAK,EAAE,CAAC;gBACV,aAAa,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;QACH,CAAC,CAAC;QAEF,MAAM,WAAW,GAAG,GAAG,EAAE;YACvB,MAAM,MAAM,GAAG,cAAc,GAAG,aAAa,CAAC;YAC9C,MAAM,OAAO,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,EAAE;gBACxC,MAAM,UAAU,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC,GAAG,aAAa,CAAC;gBAClE,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC;gBACxC,OAAO,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,EAAE,CAAC;YACnC,CAAC,CAAC,CAAC;YAEH,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC7B,KAAK,MAAM,IAAI,IAAI,OAAO,EAAE,CAAC;gBAC3B,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;gBAClC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,CAAC,CAAC;YACpC,CAAC;YAED,cAAc,EAAE,CAAC;QACnB,CAAC,CAAC;QAEF,WAAW,EAAE,CAAC;QACd,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE;YACvB,IAAI,cAAc,IAAI,WAAW,EAAE,CAAC;gBAClC,IAAI,EAAE,CAAC;gBACP,OAAO;YACT,CAAC;YACD,WAAW,EAAE,CAAC;QAChB,CAAC,EAAE,aAAa,CAAC,CAAC;QAElB,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;;;;;;;;;;;;;;OAmBG;IACH,KAAK,CAAC,GAAG,CAAC,OAAiB,OAAO,CAAC,IAAI;QACrC,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QAClB,MAAM,aAAa,GAAG,kCAAoB,CAAC,MAAM;YAC/C,CAAC,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;YACxB,CAAC,CAAC,SAAS,CAAC;QACd,IAAI,CAAC;YACH,OAAO,MAAM,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QAC7C,CAAC;gBAAS,CAAC;YACT,IAAI,aAAa;gBAAE,aAAa,EAAE,CAAC;YACnC,IAAI,CAAC,eAAe,GAAG,SAAS,CAAC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,CAAC,qBAAqB,CAAC,GAAW;QACtC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,CAAQ,CAAC;IAC7C,CAAC;IAED,MAAM,CAAC,MAAM;QACX,OAAO,IAAI,CAAC,GAAG,CAAC;IAClB,CAAC;;AA/qBH,gCAgrBC"}
@@ -22,10 +22,12 @@ export declare class CliWrapper extends LoggedClass {
22
22
  private crawlLevels;
23
23
  private _command?;
24
24
  private modules;
25
+ private includedModuleNames;
25
26
  private readonly rootPath;
26
27
  private moduleSlogans;
27
28
  private globalSlogans;
28
29
  private bannerAnimation?;
30
+ private readonly logLevelAttached;
29
31
  private static env;
30
32
  constructor(basePath?: string, crawlLevels?: number);
31
33
  /**
@@ -63,6 +65,7 @@ export declare class CliWrapper extends LoggedClass {
63
65
  * CliWrapper-->>CliWrapper: Return name
64
66
  */
65
67
  private load;
68
+ private registerModule;
66
69
  /**
67
70
  * @description Finds and loads all CLI modules in the basePath
68
71
  * @summary Uses the crawl method to find all CLI modules in the specified base path,
@@ -93,6 +96,14 @@ export declare class CliWrapper extends LoggedClass {
93
96
  * CliWrapper->>Console: Log loaded modules
94
97
  */
95
98
  private boot;
99
+ private loadIncludedModules;
100
+ private loadModulesFromPath;
101
+ private getScopePackageRoots;
102
+ private getHostPath;
103
+ private getPackageNameFromRoot;
104
+ private ensureLogLevelSupport;
105
+ private updateLogLevel;
106
+ private resolveLogLevel;
96
107
  /**
97
108
  * @description Recursively searches for CLI module files in the directory structure
98
109
  * @summary Crawls the basePath up to the specified number of folder levels to find files named according to CLI_FILE_NAME
@@ -3,11 +3,24 @@ import fs from "fs";
3
3
  import path from "path";
4
4
  import { CLI_FILE_NAME } from "./constants.js";
5
5
  import { CLIUtils } from "./utils.js";
6
- import { LoggedClass, Logging, logParameterRegistry, } from "@decaf-ts/logging";
6
+ import { LoggedClass, LogLevel, Logging, logParameterRegistry, } from "@decaf-ts/logging";
7
7
  import { banners, colorPalettes } from "./banners.js";
8
8
  import { readSlogans } from "./slogans.js";
9
9
  import { DecafCLieEnvironment } from "./environment.js";
10
+ import buildModule from "./build-module/cli-module.js";
11
+ import releaseModule from "./release-module/cli-module.js";
12
+ import utilsModule from "./utils-module/cli-module.js";
10
13
  const MIN_BANNER_WIDTH = 92;
14
+ const DEFAULT_LOG_LEVEL = LogLevel.info;
15
+ const LOG_FORMAT = DecafCLieEnvironment.format.includes("{pId}")
16
+ ? DecafCLieEnvironment.format
17
+ : `{pId}|${DecafCLieEnvironment.format}`;
18
+ const CLI_PACKAGE_NAME = "@decaf-ts/cli";
19
+ const INCLUDED_MODULE_FACTORIES = [
20
+ buildModule,
21
+ releaseModule,
22
+ utilsModule,
23
+ ];
11
24
  const pIdDescriptor = {
12
25
  key: "pId",
13
26
  render(payload) {
@@ -31,9 +44,8 @@ catch {
31
44
  }
32
45
  }
33
46
  Logging.setConfig({
34
- format: DecafCLieEnvironment.format.includes("{pId}")
35
- ? DecafCLieEnvironment.format
36
- : `{pId}|${DecafCLieEnvironment.format}`,
47
+ level: DEFAULT_LOG_LEVEL,
48
+ format: LOG_FORMAT,
37
49
  });
38
50
  /**
39
51
  * @description Utility class to handle CLI functionality from all Decaf modules
@@ -59,8 +71,10 @@ export class CliWrapper extends LoggedClass {
59
71
  this.basePath = basePath;
60
72
  this.crawlLevels = crawlLevels;
61
73
  this.modules = {};
74
+ this.includedModuleNames = new Set();
62
75
  this.moduleSlogans = {};
63
76
  this.globalSlogans = [];
77
+ this.logLevelAttached = new WeakSet();
64
78
  this.rootPath = path.resolve(__dirname, "..");
65
79
  }
66
80
  /**
@@ -115,13 +129,24 @@ export class CliWrapper extends LoggedClass {
115
129
  module = await module;
116
130
  if (!this.isCommandInstance(module))
117
131
  throw new Error(`You should export the instantiated Commands class as default.`);
118
- this.modules[name] = module;
132
+ this.ensureLogLevelSupport(module);
133
+ const moduleRoot = this.findModuleRoot(path.dirname(filePath));
134
+ const packageName = this.getPackageNameFromRoot(moduleRoot);
135
+ if (packageName === CLI_PACKAGE_NAME &&
136
+ this.includedModuleNames.has(name)) {
137
+ log.verbose(`skipping included module ${name} at ${filePath} (already loaded)`);
138
+ return undefined;
139
+ }
140
+ this.registerModule(name, module, moduleRoot, log);
119
141
  }
120
142
  catch (e) {
121
143
  throw new Error(`failed to load module under ${filePath}: ${e instanceof Error ? e.message : e}`);
122
144
  }
145
+ return name;
146
+ }
147
+ registerModule(name, module, moduleRoot, log) {
148
+ this.modules[name] = module;
123
149
  try {
124
- const moduleRoot = this.findModuleRoot(path.dirname(filePath));
125
150
  const records = readSlogans(log, moduleRoot);
126
151
  const strings = this.extractSloganStrings(records);
127
152
  if (strings.length) {
@@ -131,7 +156,6 @@ export class CliWrapper extends LoggedClass {
131
156
  catch (e) {
132
157
  console.error(`Failed to load slogans for ${name}: ${e}`);
133
158
  }
134
- return name;
135
159
  }
136
160
  /**
137
161
  * @description Finds and loads all CLI modules in the basePath
@@ -164,20 +188,73 @@ export class CliWrapper extends LoggedClass {
164
188
  */
165
189
  async boot() {
166
190
  const log = this.log.for(this.boot);
167
- const basePath = path.resolve(this.rootPath, this.basePath);
191
+ this.ensureLogLevelSupport(this.command);
192
+ this.loadIncludedModules();
193
+ const basePath = this.getHostPath();
194
+ const seen = new Set();
195
+ await this.loadModulesFromPath(basePath, seen, log);
196
+ const scopePaths = this.getScopePackageRoots();
197
+ for (const scopePath of scopePaths) {
198
+ await this.loadModulesFromPath(scopePath, seen, log);
199
+ }
200
+ log.debug(`loaded modules:\n${Object.keys(this.modules)
201
+ .map((k) => `- ${k}`)
202
+ .join("\n")}`);
203
+ }
204
+ loadIncludedModules() {
205
+ const log = this.log.for(this.loadIncludedModules);
206
+ for (const factory of INCLUDED_MODULE_FACTORIES) {
207
+ try {
208
+ const moduleName = factory.name;
209
+ if (!moduleName || this.includedModuleNames.has(moduleName)) {
210
+ continue;
211
+ }
212
+ const command = factory();
213
+ if (!this.isCommandInstance(command)) {
214
+ continue;
215
+ }
216
+ this.ensureLogLevelSupport(command);
217
+ this.includedModuleNames.add(moduleName);
218
+ this.registerModule(moduleName, command, this.rootPath, log);
219
+ if (!this.command.commands.some((cmd) => cmd.name() === moduleName)) {
220
+ this.command.addCommand(command);
221
+ }
222
+ }
223
+ catch (error) {
224
+ console.error(`failed to load included module ${factory.name}: ${error instanceof Error ? error.message : error}`);
225
+ }
226
+ }
227
+ }
228
+ async loadModulesFromPath(basePath, seen, log) {
229
+ if (!fs.existsSync(basePath)) {
230
+ return;
231
+ }
232
+ try {
233
+ if (!fs.statSync(basePath).isDirectory()) {
234
+ return;
235
+ }
236
+ }
237
+ catch {
238
+ return;
239
+ }
168
240
  const modules = this.crawl(basePath, this.crawlLevels);
169
241
  for (const module of modules) {
170
- if (module.includes("@decaf-ts/cli")) {
242
+ const resolved = path.resolve(module);
243
+ if (seen.has(resolved)) {
171
244
  continue;
172
245
  }
246
+ seen.add(resolved);
173
247
  let name;
174
248
  try {
175
- name = await this.load(module);
249
+ name = await this.load(resolved);
176
250
  }
177
251
  catch (e) {
178
252
  console.error(e);
179
253
  continue;
180
254
  }
255
+ if (!name) {
256
+ continue;
257
+ }
181
258
  const alreadyRegistered = this.command.commands.some((cmd) => cmd.name() === name);
182
259
  if (alreadyRegistered) {
183
260
  log.verbose(`Command ${name} already registered; skipping duplicate`);
@@ -190,9 +267,83 @@ export class CliWrapper extends LoggedClass {
190
267
  console.error(e);
191
268
  }
192
269
  }
193
- log.debug(`loaded modules:\n${Object.keys(this.modules)
194
- .map((k) => `- ${k}`)
195
- .join("\n")}`);
270
+ }
271
+ getScopePackageRoots() {
272
+ const scopeRoots = new Set();
273
+ const candidates = [this.rootPath];
274
+ const hostPath = this.getHostPath();
275
+ if (hostPath !== this.rootPath) {
276
+ candidates.push(hostPath);
277
+ }
278
+ for (const candidate of candidates) {
279
+ const scopeDir = path.join(candidate, "node_modules", "@decaf-ts");
280
+ try {
281
+ if (!fs.existsSync(scopeDir) || !fs.statSync(scopeDir).isDirectory()) {
282
+ continue;
283
+ }
284
+ const entries = fs.readdirSync(scopeDir, { withFileTypes: true });
285
+ for (const entry of entries) {
286
+ if (!entry.isDirectory())
287
+ continue;
288
+ scopeRoots.add(path.join(scopeDir, entry.name));
289
+ }
290
+ }
291
+ catch {
292
+ // ignore inaccessible nodes
293
+ }
294
+ }
295
+ return Array.from(scopeRoots);
296
+ }
297
+ getHostPath() {
298
+ return path.resolve(this.rootPath, this.basePath);
299
+ }
300
+ getPackageNameFromRoot(root) {
301
+ try {
302
+ const pkgPath = path.join(root, "package.json");
303
+ if (!fs.existsSync(pkgPath)) {
304
+ return undefined;
305
+ }
306
+ const pkg = JSON.parse(fs.readFileSync(pkgPath, "utf8"));
307
+ return typeof pkg.name === "string" ? pkg.name : undefined;
308
+ }
309
+ catch {
310
+ return undefined;
311
+ }
312
+ }
313
+ ensureLogLevelSupport(command) {
314
+ if (this.logLevelAttached.has(command)) {
315
+ return;
316
+ }
317
+ this.logLevelAttached.add(command);
318
+ const hasLogLevelOption = command.options.some((option) => option.long === "--logLevel");
319
+ if (!hasLogLevelOption) {
320
+ command.option("--logLevel <level>", "Override the CLI log level (error, warn, info, verbose, debug, trace, silly)", DEFAULT_LOG_LEVEL);
321
+ }
322
+ command.hook("preAction", (_, actionCommand) => {
323
+ const opts = actionCommand.opts();
324
+ this.updateLogLevel(opts.logLevel);
325
+ });
326
+ for (const subCommand of command.commands) {
327
+ this.ensureLogLevelSupport(subCommand);
328
+ }
329
+ }
330
+ updateLogLevel(level) {
331
+ const resolvedLevel = this.resolveLogLevel(level);
332
+ Logging.setConfig({
333
+ level: resolvedLevel,
334
+ format: LOG_FORMAT,
335
+ });
336
+ }
337
+ resolveLogLevel(level) {
338
+ if (!level)
339
+ return DEFAULT_LOG_LEVEL;
340
+ const normalized = level.toLowerCase();
341
+ const options = Object.values(LogLevel);
342
+ if (options.includes(normalized)) {
343
+ return normalized;
344
+ }
345
+ console.warn(`Unknown log level "${level}" provided; falling back to ${DEFAULT_LOG_LEVEL}`);
346
+ return DEFAULT_LOG_LEVEL;
196
347
  }
197
348
  /**
198
349
  * @description Recursively searches for CLI module files in the directory structure
@@ -205,12 +356,14 @@ export class CliWrapper extends LoggedClass {
205
356
  * @private
206
357
  */
207
358
  crawl(basePath, levels = 2) {
208
- if (levels <= 0)
359
+ if (levels < 0)
209
360
  return [];
210
361
  return fs.readdirSync(basePath).reduce((accum, file) => {
211
362
  file = path.join(basePath, file);
212
363
  if (fs.statSync(file).isDirectory()) {
213
- accum.push(...this.crawl(file, levels - 1));
364
+ if (levels > 0) {
365
+ accum.push(...this.crawl(file, levels - 1));
366
+ }
214
367
  }
215
368
  else if (file.match(new RegExp(`${CLI_FILE_NAME}\\.[cm]js$`, "gm"))) {
216
369
  accum.push(file);