@decaf-ts/cli 0.3.2 → 0.3.6

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.
@@ -2,7 +2,8 @@ export * from "./CliWrapper";
2
2
  /**
3
3
  * @description Decaf-ts' CLI module
4
4
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
5
- * within the @decaf-ts namespace and load then as subcommands
5
+ * within the @decaf-ts namespace and load them as subcommands. It serves as the main entry point
6
+ * for the CLI functionality, exporting the CliWrapper class and VERSION constant.
6
7
  *
7
8
  * @example
8
9
  * run module command - $ npx decaf <module name> <module command> ...<module command options>
@@ -13,23 +14,9 @@ export * from "./CliWrapper";
13
14
  * @module CLI
14
15
  */
15
16
  /**
16
- * @description Decaf-ts' CLI namespace
17
- * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
18
- * within the @decaf-ts namespace and load then as subcommands
19
- *
20
- * @example
21
- * run module command - $ npx decaf <module name> <module command> ...<module command options>
22
- * get module help - $ npx decaf help <module name>;
23
- * list imported modules - $ npx decaf list;
24
- * get cli help - $ npx decaf help;
25
- *
26
- * @namespace cli
27
- * @memberOf module:CLI
28
- */
29
- /**
30
- * @summary stores the current package version
31
- * @description this is how you should document a constant
17
+ * @description Stores the current package version
18
+ * @summary A constant that holds the version string of the package, which is replaced during build
32
19
  * @const VERSION
33
20
  * @memberOf module:CLI
34
21
  */
35
- export declare const VERSION = "0.3.1";
22
+ export declare const VERSION = "0.3.6";
package/lib/esm/index.js CHANGED
@@ -1,8 +1,9 @@
1
- export * from "./CliWrapper";
1
+ export * from "./CliWrapper.js";
2
2
  /**
3
3
  * @description Decaf-ts' CLI module
4
4
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
5
- * within the @decaf-ts namespace and load then as subcommands
5
+ * within the @decaf-ts namespace and load them as subcommands. It serves as the main entry point
6
+ * for the CLI functionality, exporting the CliWrapper class and VERSION constant.
6
7
  *
7
8
  * @example
8
9
  * run module command - $ npx decaf <module name> <module command> ...<module command options>
@@ -13,24 +14,10 @@ export * from "./CliWrapper";
13
14
  * @module CLI
14
15
  */
15
16
  /**
16
- * @description Decaf-ts' CLI namespace
17
- * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
18
- * within the @decaf-ts namespace and load then as subcommands
19
- *
20
- * @example
21
- * run module command - $ npx decaf <module name> <module command> ...<module command options>
22
- * get module help - $ npx decaf help <module name>;
23
- * list imported modules - $ npx decaf list;
24
- * get cli help - $ npx decaf help;
25
- *
26
- * @namespace cli
27
- * @memberOf module:CLI
28
- */
29
- /**
30
- * @summary stores the current package version
31
- * @description this is how you should document a constant
17
+ * @description Stores the current package version
18
+ * @summary A constant that holds the version string of the package, which is replaced during build
32
19
  * @const VERSION
33
20
  * @memberOf module:CLI
34
21
  */
35
- export const VERSION = "0.3.1";
36
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsY0FBYyxjQUFjLENBQUM7QUFFN0I7Ozs7Ozs7Ozs7OztHQVlHO0FBRUg7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVIOzs7OztHQUtHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sT0FBTyxHQUFHLGFBQWEsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCAqIGZyb20gXCIuL0NsaVdyYXBwZXJcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gRGVjYWYtdHMnIENMSSBtb2R1bGVcbiAqIEBzdW1tYXJ5IFRoaXMgZmlsZSB3aWxsIGNyYXdsIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGZvciBmaWxlcyBjYWxsZWQge0BsaW5rIENMSV9GSUxFX05BTUV9XG4gKiB3aXRoaW4gdGhlIEBkZWNhZi10cyBuYW1lc3BhY2UgYW5kIGxvYWQgdGhlbiBhcyBzdWJjb21tYW5kc1xuICpcbiAqIEBleGFtcGxlXG4gKiBydW4gbW9kdWxlIGNvbW1hbmQgICAgIC0gJCBucHggZGVjYWYgPG1vZHVsZSBuYW1lPiA8bW9kdWxlIGNvbW1hbmQ+IC4uLjxtb2R1bGUgY29tbWFuZCBvcHRpb25zPlxuICogZ2V0IG1vZHVsZSBoZWxwICAgICAgICAtICQgbnB4IGRlY2FmIGhlbHAgPG1vZHVsZSBuYW1lPjtcbiAqIGxpc3QgaW1wb3J0ZWQgbW9kdWxlcyAgLSAkIG5weCBkZWNhZiBsaXN0O1xuICogZ2V0IGNsaSBoZWxwICAgICAgICAgICAtICQgbnB4IGRlY2FmIGhlbHA7XG4gKlxuICogQG1vZHVsZSBDTElcbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNhZi10cycgQ0xJIG5hbWVzcGFjZVxuICogQHN1bW1hcnkgVGhpcyBmaWxlIHdpbGwgY3Jhd2wgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZm9yIGZpbGVzIGNhbGxlZCB7QGxpbmsgQ0xJX0ZJTEVfTkFNRX1cbiAqIHdpdGhpbiB0aGUgQGRlY2FmLXRzIG5hbWVzcGFjZSBhbmQgbG9hZCB0aGVuIGFzIHN1YmNvbW1hbmRzXG4gKlxuICogQGV4YW1wbGVcbiAqIHJ1biBtb2R1bGUgY29tbWFuZCAgICAgLSAkIG5weCBkZWNhZiA8bW9kdWxlIG5hbWU+IDxtb2R1bGUgY29tbWFuZD4gLi4uPG1vZHVsZSBjb21tYW5kIG9wdGlvbnM+XG4gKiBnZXQgbW9kdWxlIGhlbHAgICAgICAgIC0gJCBucHggZGVjYWYgaGVscCA8bW9kdWxlIG5hbWU+O1xuICogbGlzdCBpbXBvcnRlZCBtb2R1bGVzICAtICQgbnB4IGRlY2FmIGxpc3Q7XG4gKiBnZXQgY2xpIGhlbHAgICAgICAgICAgIC0gJCBucHggZGVjYWYgaGVscDtcbiAqXG4gKiBAbmFtZXNwYWNlIGNsaVxuICogQG1lbWJlck9mIG1vZHVsZTpDTElcbiAqL1xuXG4vKipcbiAqIEBzdW1tYXJ5IHN0b3JlcyB0aGUgY3VycmVudCBwYWNrYWdlIHZlcnNpb25cbiAqIEBkZXNjcmlwdGlvbiB0aGlzIGlzIGhvdyB5b3Ugc2hvdWxkIGRvY3VtZW50IGEgY29uc3RhbnRcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNMSVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
22
+ export const VERSION = "0.3.6";
23
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQTZCO0FBRTdCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9DbGlXcmFwcGVyXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY2FmLXRzJyBDTEkgbW9kdWxlXG4gKiBAc3VtbWFyeSBUaGlzIGZpbGUgd2lsbCBjcmF3bCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgZmlsZXMgY2FsbGVkIHtAbGluayBDTElfRklMRV9OQU1FfVxuICogd2l0aGluIHRoZSBAZGVjYWYtdHMgbmFtZXNwYWNlIGFuZCBsb2FkIHRoZW0gYXMgc3ViY29tbWFuZHMuIEl0IHNlcnZlcyBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludFxuICogZm9yIHRoZSBDTEkgZnVuY3Rpb25hbGl0eSwgZXhwb3J0aW5nIHRoZSBDbGlXcmFwcGVyIGNsYXNzIGFuZCBWRVJTSU9OIGNvbnN0YW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiBydW4gbW9kdWxlIGNvbW1hbmQgICAgIC0gJCBucHggZGVjYWYgPG1vZHVsZSBuYW1lPiA8bW9kdWxlIGNvbW1hbmQ+IC4uLjxtb2R1bGUgY29tbWFuZCBvcHRpb25zPlxuICogZ2V0IG1vZHVsZSBoZWxwICAgICAgICAtICQgbnB4IGRlY2FmIGhlbHAgPG1vZHVsZSBuYW1lPjtcbiAqIGxpc3QgaW1wb3J0ZWQgbW9kdWxlcyAgLSAkIG5weCBkZWNhZiBsaXN0O1xuICogZ2V0IGNsaSBoZWxwICAgICAgICAgICAtICQgbnB4IGRlY2FmIGhlbHA7XG4gKlxuICogQG1vZHVsZSBDTElcbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAc3VtbWFyeSBBIGNvbnN0YW50IHRoYXQgaG9sZHMgdGhlIHZlcnNpb24gc3RyaW5nIG9mIHRoZSBwYWNrYWdlLCB3aGljaCBpcyByZXBsYWNlZCBkdXJpbmcgYnVpbGRcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNMSVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
@@ -1,8 +1,11 @@
1
1
  import { Command } from "commander";
2
2
  /**
3
- * @description describes the function type each decaf module must expose under {@link CLI_FILE_NAME}
4
- * @type CliModule
3
+ * @description Function type for Decaf CLI modules
4
+ * @summary Defines the signature for CLI module functions that each Decaf module must export under the CLI_FILE_NAME file
5
+ * The function should return a Command object or a Promise that resolves to a Command object
5
6
  *
6
- * @memberOf module.CLI.cli
7
+ * @typedef {Function} CliModule
8
+ * @return {Command|Promise<Command>} A Command object or Promise that resolves to a Command object
9
+ * @memberOf module:CLI
7
10
  */
8
11
  export type CliModule = () => Command | Promise<Command>;
package/lib/esm/types.js CHANGED
@@ -1,2 +1,2 @@
1
1
  export {};
2
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBDTElfRklMRV9OQU1FIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIGRlc2NyaWJlcyB0aGUgZnVuY3Rpb24gdHlwZSBlYWNoIGRlY2FmIG1vZHVsZSBtdXN0IGV4cG9zZSB1bmRlciB7QGxpbmsgQ0xJX0ZJTEVfTkFNRX1cbiAqIEB0eXBlIENsaU1vZHVsZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGUuQ0xJLmNsaVxuICovXG5leHBvcnQgdHlwZSBDbGlNb2R1bGUgPSAoKSA9PiBDb21tYW5kIHwgUHJvbWlzZTxDb21tYW5kPjtcbiJdfQ==
2
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBDTElfRklMRV9OQU1FIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHR5cGUgZm9yIERlY2FmIENMSSBtb2R1bGVzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzaWduYXR1cmUgZm9yIENMSSBtb2R1bGUgZnVuY3Rpb25zIHRoYXQgZWFjaCBEZWNhZiBtb2R1bGUgbXVzdCBleHBvcnQgdW5kZXIgdGhlIENMSV9GSUxFX05BTUUgZmlsZVxuICogVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBDb21tYW5kIG9iamVjdCBvciBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIENvbW1hbmQgb2JqZWN0XG4gKlxuICogQHR5cGVkZWYge0Z1bmN0aW9ufSBDbGlNb2R1bGVcbiAqIEByZXR1cm4ge0NvbW1hbmR8UHJvbWlzZTxDb21tYW5kPn0gQSBDb21tYW5kIG9iamVjdCBvciBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBDb21tYW5kIG9iamVjdFxuICogQG1lbWJlck9mIG1vZHVsZTpDTElcbiAqL1xuZXhwb3J0IHR5cGUgQ2xpTW9kdWxlID0gKCkgPT4gQ29tbWFuZCB8IFByb21pc2U8Q29tbWFuZD47XG4iXX0=
@@ -1,49 +1,70 @@
1
1
  import { Command } from "commander";
2
2
  import { CliModule } from "./types";
3
3
  /**
4
- * @description util class to retrieve versions and other information
4
+ * @description Utility class for CLI operations
5
+ * @summary A static utility class that provides methods for loading modules, retrieving package information, and initializing CLI commands
6
+ *
7
+ * @example
8
+ * // Initialize a Command object with package information
9
+ * const command = new Command();
10
+ * CLIUtils.initialize(command, './path/to/package');
11
+ *
12
+ * // Load a CLI module from a file
13
+ * const module = await CLIUtils.loadFromFile('./path/to/cli-module.js');
5
14
  *
6
15
  * @class CLIUtils
7
- * @static
8
16
  */
9
17
  export declare class CLIUtils {
10
18
  /**
11
- * @description Dynamically imports a cjs file into a decaf module
12
- * @param {string} path
13
- * @static
19
+ * @description Dynamically imports a module file
20
+ * @summary Loads a JavaScript file and returns it as a CliModule, handling both ESM and CommonJS formats
21
+ *
22
+ * @param {string} path The file path to the module to load
23
+ * @return {Promise<CliModule>} A promise that resolves to the loaded CliModule
14
24
  */
15
25
  static loadFromFile(path: string): Promise<CliModule>;
16
26
  /**
17
- * @description allows safe dynamic imports
18
- * @summary property imports JS files regardless of esm status
27
+ * @description Normalizes module imports to handle both ESM and CommonJS formats
28
+ * @summary Properly imports JavaScript files regardless of their module format by handling the ESM wrapper for CommonJS modules
19
29
  *
20
- * @typeParam T
21
- * @param {Promise} importPromise
30
+ * @template T The type of the imported module
31
+ * @param {Promise<T>} importPromise The promise returned by the dynamic import
32
+ * @return {Promise<T>} A promise that resolves to the normalized module
22
33
  * @private
23
34
  */
24
35
  static normalizeImport<T>(importPromise: Promise<T>): Promise<T>;
25
36
  /**
26
- * @description initializes the Cli object
37
+ * @description Initializes a Command object with package information
38
+ * @summary Sets up a Commander Command object with the package name, description, and version from the package.json file
27
39
  *
28
- * @param {Command} command
29
- * @param {string} [basePath] defaults to the current working directory
40
+ * @param {Command} command The Command object to initialize
41
+ * @param {string} [basePath] The base path where the package.json file is located, defaults to the current working directory
42
+ * @return {void}
30
43
  */
31
44
  static initialize(command: Command, basePath: string): void;
32
45
  /**
33
- * @description retrieves and parses the package.json file
46
+ * @description Retrieves and parses the package.json file
47
+ * @summary Reads the package.json file from the specified path and parses it into a JavaScript object
34
48
  *
35
- * @param {string} basePath
49
+ * @param {string} basePath The base path where the package.json file is located
50
+ * @return {Record<string, unknown>} The parsed package.json content as an object
36
51
  * @private
37
52
  */
38
53
  private static getPackage;
39
54
  /**
40
- * @description returns the package version
41
- * @param {string} [basePath] defaults to current working dir
55
+ * @description Returns the version from package.json
56
+ * @summary Retrieves the version field from the package.json file at the specified path
57
+ *
58
+ * @param {string} basePath The base path where the package.json file is located
59
+ * @return {string} The package version string
42
60
  */
43
61
  static packageVersion(basePath: string): string;
44
62
  /**
45
- * @description returns the package name
46
- * @param {string} [basePath] defaults to current working dir
63
+ * @description Returns the name from package.json
64
+ * @summary Retrieves the name field from the package.json file at the specified path and extracts the package name without the scope
65
+ *
66
+ * @param {string} basePath The base path where the package.json file is located
67
+ * @return {string} The package name without the scope (e.g., "cli" from "@decaf-ts/cli")
47
68
  */
48
69
  static packageName(basePath: string): string;
49
70
  }
package/lib/esm/utils.js CHANGED
@@ -1,16 +1,26 @@
1
1
  import path from "path";
2
2
  import fs from "fs";
3
3
  /**
4
- * @description util class to retrieve versions and other information
4
+ * @description Utility class for CLI operations
5
+ * @summary A static utility class that provides methods for loading modules, retrieving package information, and initializing CLI commands
6
+ *
7
+ * @example
8
+ * // Initialize a Command object with package information
9
+ * const command = new Command();
10
+ * CLIUtils.initialize(command, './path/to/package');
11
+ *
12
+ * // Load a CLI module from a file
13
+ * const module = await CLIUtils.loadFromFile('./path/to/cli-module.js');
5
14
  *
6
15
  * @class CLIUtils
7
- * @static
8
16
  */
9
17
  export class CLIUtils {
10
18
  /**
11
- * @description Dynamically imports a cjs file into a decaf module
12
- * @param {string} path
13
- * @static
19
+ * @description Dynamically imports a module file
20
+ * @summary Loads a JavaScript file and returns it as a CliModule, handling both ESM and CommonJS formats
21
+ *
22
+ * @param {string} path The file path to the module to load
23
+ * @return {Promise<CliModule>} A promise that resolves to the loaded CliModule
14
24
  */
15
25
  static async loadFromFile(path) {
16
26
  try {
@@ -21,11 +31,12 @@ export class CLIUtils {
21
31
  }
22
32
  }
23
33
  /**
24
- * @description allows safe dynamic imports
25
- * @summary property imports JS files regardless of esm status
34
+ * @description Normalizes module imports to handle both ESM and CommonJS formats
35
+ * @summary Properly imports JavaScript files regardless of their module format by handling the ESM wrapper for CommonJS modules
26
36
  *
27
- * @typeParam T
28
- * @param {Promise} importPromise
37
+ * @template T The type of the imported module
38
+ * @param {Promise<T>} importPromise The promise returned by the dynamic import
39
+ * @return {Promise<T>} A promise that resolves to the normalized module
29
40
  * @private
30
41
  */
31
42
  static async normalizeImport(importPromise) {
@@ -33,10 +44,12 @@ export class CLIUtils {
33
44
  return importPromise.then((m) => (m.default || m));
34
45
  }
35
46
  /**
36
- * @description initializes the Cli object
47
+ * @description Initializes a Command object with package information
48
+ * @summary Sets up a Commander Command object with the package name, description, and version from the package.json file
37
49
  *
38
- * @param {Command} command
39
- * @param {string} [basePath] defaults to the current working directory
50
+ * @param {Command} command The Command object to initialize
51
+ * @param {string} [basePath] The base path where the package.json file is located, defaults to the current working directory
52
+ * @return {void}
40
53
  */
41
54
  static initialize(command, basePath) {
42
55
  const name = CLIUtils.packageName(basePath);
@@ -46,9 +59,11 @@ export class CLIUtils {
46
59
  .version(CLIUtils.packageVersion(basePath));
47
60
  }
48
61
  /**
49
- * @description retrieves and parses the package.json file
62
+ * @description Retrieves and parses the package.json file
63
+ * @summary Reads the package.json file from the specified path and parses it into a JavaScript object
50
64
  *
51
- * @param {string} basePath
65
+ * @param {string} basePath The base path where the package.json file is located
66
+ * @return {Record<string, unknown>} The parsed package.json content as an object
52
67
  * @private
53
68
  */
54
69
  static getPackage(basePath) {
@@ -60,18 +75,25 @@ export class CLIUtils {
60
75
  }
61
76
  }
62
77
  /**
63
- * @description returns the package version
64
- * @param {string} [basePath] defaults to current working dir
78
+ * @description Returns the version from package.json
79
+ * @summary Retrieves the version field from the package.json file at the specified path
80
+ *
81
+ * @param {string} basePath The base path where the package.json file is located
82
+ * @return {string} The package version string
65
83
  */
66
84
  static packageVersion(basePath) {
67
85
  return CLIUtils.getPackage(basePath)["version"];
68
86
  }
69
87
  /**
70
- * @description returns the package name
71
- * @param {string} [basePath] defaults to current working dir
88
+ * @description Returns the name from package.json
89
+ * @summary Retrieves the name field from the package.json file at the specified path and extracts the package name without the scope
90
+ *
91
+ * @param {string} basePath The base path where the package.json file is located
92
+ * @return {string} The package name without the scope (e.g., "cli" from "@decaf-ts/cli")
72
93
  */
73
94
  static packageName(basePath) {
74
- return CLIUtils.getPackage(basePath)["name"].split("/")[1];
95
+ const name = CLIUtils.getPackage(basePath)["name"].split("/");
96
+ return name[name.length - 1];
75
97
  }
76
98
  }
77
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUlwQjs7Ozs7R0FLRztBQUNILE1BQU0sT0FBTyxRQUFRO0lBQ25COzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFZO1FBQ3BDLElBQUksQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLGVBQWUsQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztRQUNoRCxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUNiLHVCQUF1QixJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBSSxhQUF5QjtRQUN2RCxtRUFBbUU7UUFDbkUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBRSxDQUFvQixDQUFDLE9BQU8sSUFBSSxDQUFDLENBQU0sQ0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBZ0IsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE9BQU87YUFDSixJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsV0FBVyxDQUFDLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQzthQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2pDLE9BQVEsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBDbGlNb2R1bGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiB1dGlsIGNsYXNzIHRvIHJldHJpZXZlIHZlcnNpb25zIGFuZCBvdGhlciBpbmZvcm1hdGlvblxuICpcbiAqIEBjbGFzcyBDTElVdGlsc1xuICogQHN0YXRpY1xuICovXG5leHBvcnQgY2xhc3MgQ0xJVXRpbHMge1xuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIER5bmFtaWNhbGx5IGltcG9ydHMgYSBjanMgZmlsZSBpbnRvIGEgZGVjYWYgbW9kdWxlXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBwYXRoXG4gICAqIEBzdGF0aWNcbiAgICovXG4gIHN0YXRpYyBhc3luYyBsb2FkRnJvbUZpbGUocGF0aDogc3RyaW5nKTogUHJvbWlzZTxDbGlNb2R1bGU+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIENMSVV0aWxzLm5vcm1hbGl6ZUltcG9ydChpbXBvcnQocGF0aCkpO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICAgYEZhaWxlZCB0byBsb2FkIGZyb20gJHtwYXRofTogJHtlIGluc3RhbmNlb2YgRXJyb3IgPyBlLm1lc3NhZ2UgOiBlfWBcbiAgICAgICk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBhbGxvd3Mgc2FmZSBkeW5hbWljIGltcG9ydHNcbiAgICogQHN1bW1hcnkgcHJvcGVydHkgaW1wb3J0cyBKUyBmaWxlcyByZWdhcmRsZXNzIG9mIGVzbSBzdGF0dXNcbiAgICpcbiAgICogQHR5cGVQYXJhbSBUXG4gICAqIEBwYXJhbSB7UHJvbWlzZX0gaW1wb3J0UHJvbWlzZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIG5vcm1hbGl6ZUltcG9ydDxUPihpbXBvcnRQcm9taXNlOiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgLy8gQ29tbW9uSlMncyBgbW9kdWxlLmV4cG9ydHNgIGlzIHdyYXBwZWQgYXMgYGRlZmF1bHRgIGluIEVTTW9kdWxlLlxuICAgIHJldHVybiBpbXBvcnRQcm9taXNlLnRoZW4oXG4gICAgICAobTogdW5rbm93bikgPT4gKChtIGFzIHsgZGVmYXVsdDogVCB9KS5kZWZhdWx0IHx8IG0pIGFzIFRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBpbml0aWFsaXplcyB0aGUgQ2xpIG9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0ge0NvbW1hbmR9IGNvbW1hbmRcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICovXG4gIHN0YXRpYyBpbml0aWFsaXplKGNvbW1hbmQ6IENvbW1hbmQsIGJhc2VQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuYW1lID0gQ0xJVXRpbHMucGFja2FnZU5hbWUoYmFzZVBhdGgpO1xuICAgIGNvbW1hbmRcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oYFJ1bnMgJHtuYW1lfSByZWxhdGVkIGNvbW1hbmRzYClcbiAgICAgIC52ZXJzaW9uKENMSVV0aWxzLnBhY2thZ2VWZXJzaW9uKGJhc2VQYXRoKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHJldHJpZXZlcyBhbmQgcGFyc2VzIHRoZSBwYWNrYWdlLmpzb24gZmlsZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVBhdGhcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldFBhY2thZ2UoYmFzZVBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoXG4gICAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oYmFzZVBhdGgsIFwicGFja2FnZS5qc29uXCIpLCBcInV0ZjhcIilcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcmVhZCB2ZXJzaW9uIGZyb20gJHtiYXNlUGF0aH06ICR7ZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHJldHVybnMgdGhlIHBhY2thZ2UgdmVyc2lvblxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Jhc2VQYXRoXSBkZWZhdWx0cyB0byBjdXJyZW50IHdvcmtpbmcgZGlyXG4gICAqL1xuICBzdGF0aWMgcGFja2FnZVZlcnNpb24oYmFzZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENMSVV0aWxzLmdldFBhY2thZ2UoYmFzZVBhdGgpW1widmVyc2lvblwiXSBhcyBzdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIHJldHVybnMgdGhlIHBhY2thZ2UgbmFtZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Jhc2VQYXRoXSBkZWZhdWx0cyB0byBjdXJyZW50IHdvcmtpbmcgZGlyXG4gICAqL1xuICBzdGF0aWMgcGFja2FnZU5hbWUoYmFzZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIChDTElVdGlscy5nZXRQYWNrYWdlKGJhc2VQYXRoKVtcIm5hbWVcIl0gYXMgc3RyaW5nKS5zcGxpdChcIi9cIilbMV07XG4gIH1cbn1cbiJdfQ==
99
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxJQUFJLE1BQU0sTUFBTSxDQUFDO0FBQ3hCLE9BQU8sRUFBRSxNQUFNLElBQUksQ0FBQztBQUlwQjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBTSxPQUFPLFFBQVE7SUFDbkI7Ozs7OztPQU1HO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUM7WUFDSCxPQUFPLFFBQVEsQ0FBQyxlQUFlLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FDYix1QkFBdUIsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNyRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFJLGFBQXlCO1FBQ3ZELG1FQUFtRTtRQUNuRSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFFLENBQW9CLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBTSxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQWdCLEVBQUUsUUFBZ0I7UUFDbEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPO2FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQzthQUNWLFdBQVcsQ0FBQyxRQUFRLElBQUksbUJBQW1CLENBQUM7YUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLEVBQUUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2pDLE1BQU0sSUFBSSxHQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHBhdGggZnJvbSBcInBhdGhcIjtcbmltcG9ydCBmcyBmcm9tIFwiZnNcIjtcbmltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG5pbXBvcnQgeyBDbGlNb2R1bGUgfSBmcm9tIFwiLi90eXBlc1wiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBVdGlsaXR5IGNsYXNzIGZvciBDTEkgb3BlcmF0aW9uc1xuICogQHN1bW1hcnkgQSBzdGF0aWMgdXRpbGl0eSBjbGFzcyB0aGF0IHByb3ZpZGVzIG1ldGhvZHMgZm9yIGxvYWRpbmcgbW9kdWxlcywgcmV0cmlldmluZyBwYWNrYWdlIGluZm9ybWF0aW9uLCBhbmQgaW5pdGlhbGl6aW5nIENMSSBjb21tYW5kc1xuICogXG4gKiBAZXhhbXBsZVxuICogLy8gSW5pdGlhbGl6ZSBhIENvbW1hbmQgb2JqZWN0IHdpdGggcGFja2FnZSBpbmZvcm1hdGlvblxuICogY29uc3QgY29tbWFuZCA9IG5ldyBDb21tYW5kKCk7XG4gKiBDTElVdGlscy5pbml0aWFsaXplKGNvbW1hbmQsICcuL3BhdGgvdG8vcGFja2FnZScpO1xuICogXG4gKiAvLyBMb2FkIGEgQ0xJIG1vZHVsZSBmcm9tIGEgZmlsZVxuICogY29uc3QgbW9kdWxlID0gYXdhaXQgQ0xJVXRpbHMubG9hZEZyb21GaWxlKCcuL3BhdGgvdG8vY2xpLW1vZHVsZS5qcycpO1xuICogXG4gKiBAY2xhc3MgQ0xJVXRpbHNcbiAqL1xuZXhwb3J0IGNsYXNzIENMSVV0aWxzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEeW5hbWljYWxseSBpbXBvcnRzIGEgbW9kdWxlIGZpbGVcbiAgICogQHN1bW1hcnkgTG9hZHMgYSBKYXZhU2NyaXB0IGZpbGUgYW5kIHJldHVybnMgaXQgYXMgYSBDbGlNb2R1bGUsIGhhbmRsaW5nIGJvdGggRVNNIGFuZCBDb21tb25KUyBmb3JtYXRzXG4gICAqIFxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aCBUaGUgZmlsZSBwYXRoIHRvIHRoZSBtb2R1bGUgdG8gbG9hZFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPENsaU1vZHVsZT59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBsb2FkZWQgQ2xpTW9kdWxlXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgbG9hZEZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8Q2xpTW9kdWxlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBDTElVdGlscy5ub3JtYWxpemVJbXBvcnQoaW1wb3J0KHBhdGgpKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gbG9hZCBmcm9tICR7cGF0aH06ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gTm9ybWFsaXplcyBtb2R1bGUgaW1wb3J0cyB0byBoYW5kbGUgYm90aCBFU00gYW5kIENvbW1vbkpTIGZvcm1hdHNcbiAgICogQHN1bW1hcnkgUHJvcGVybHkgaW1wb3J0cyBKYXZhU2NyaXB0IGZpbGVzIHJlZ2FyZGxlc3Mgb2YgdGhlaXIgbW9kdWxlIGZvcm1hdCBieSBoYW5kbGluZyB0aGUgRVNNIHdyYXBwZXIgZm9yIENvbW1vbkpTIG1vZHVsZXNcbiAgICpcbiAgICogQHRlbXBsYXRlIFQgVGhlIHR5cGUgb2YgdGhlIGltcG9ydGVkIG1vZHVsZVxuICAgKiBAcGFyYW0ge1Byb21pc2U8VD59IGltcG9ydFByb21pc2UgVGhlIHByb21pc2UgcmV0dXJuZWQgYnkgdGhlIGR5bmFtaWMgaW1wb3J0XG4gICAqIEByZXR1cm4ge1Byb21pc2U8VD59IEEgcHJvbWlzZSB0aGF0IHJlc29sdmVzIHRvIHRoZSBub3JtYWxpemVkIG1vZHVsZVxuICAgKiBAcHJpdmF0ZVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIG5vcm1hbGl6ZUltcG9ydDxUPihpbXBvcnRQcm9taXNlOiBQcm9taXNlPFQ+KTogUHJvbWlzZTxUPiB7XG4gICAgLy8gQ29tbW9uSlMncyBgbW9kdWxlLmV4cG9ydHNgIGlzIHdyYXBwZWQgYXMgYGRlZmF1bHRgIGluIEVTTW9kdWxlLlxuICAgIHJldHVybiBpbXBvcnRQcm9taXNlLnRoZW4oXG4gICAgICAobTogdW5rbm93bikgPT4gKChtIGFzIHsgZGVmYXVsdDogVCB9KS5kZWZhdWx0IHx8IG0pIGFzIFRcbiAgICApO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBJbml0aWFsaXplcyBhIENvbW1hbmQgb2JqZWN0IHdpdGggcGFja2FnZSBpbmZvcm1hdGlvblxuICAgKiBAc3VtbWFyeSBTZXRzIHVwIGEgQ29tbWFuZGVyIENvbW1hbmQgb2JqZWN0IHdpdGggdGhlIHBhY2thZ2UgbmFtZSwgZGVzY3JpcHRpb24sIGFuZCB2ZXJzaW9uIGZyb20gdGhlIHBhY2thZ2UuanNvbiBmaWxlXG4gICAqXG4gICAqIEBwYXJhbSB7Q29tbWFuZH0gY29tbWFuZCBUaGUgQ29tbWFuZCBvYmplY3QgdG8gaW5pdGlhbGl6ZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gW2Jhc2VQYXRoXSBUaGUgYmFzZSBwYXRoIHdoZXJlIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBpcyBsb2NhdGVkLCBkZWZhdWx0cyB0byB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeVxuICAgKiBAcmV0dXJuIHt2b2lkfVxuICAgKi9cbiAgc3RhdGljIGluaXRpYWxpemUoY29tbWFuZDogQ29tbWFuZCwgYmFzZVBhdGg6IHN0cmluZykge1xuICAgIGNvbnN0IG5hbWUgPSBDTElVdGlscy5wYWNrYWdlTmFtZShiYXNlUGF0aCk7XG4gICAgY29tbWFuZFxuICAgICAgLm5hbWUobmFtZSlcbiAgICAgIC5kZXNjcmlwdGlvbihgUnVucyAke25hbWV9IHJlbGF0ZWQgY29tbWFuZHNgKVxuICAgICAgLnZlcnNpb24oQ0xJVXRpbHMucGFja2FnZVZlcnNpb24oYmFzZVBhdGgpKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gUmV0cmlldmVzIGFuZCBwYXJzZXMgdGhlIHBhY2thZ2UuanNvbiBmaWxlXG4gICAqIEBzdW1tYXJ5IFJlYWRzIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBmcm9tIHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgcGFyc2VzIGl0IGludG8gYSBKYXZhU2NyaXB0IG9iamVjdFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVBhdGggVGhlIGJhc2UgcGF0aCB3aGVyZSB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgbG9jYXRlZFxuICAgKiBAcmV0dXJuIHtSZWNvcmQ8c3RyaW5nLCB1bmtub3duPn0gVGhlIHBhcnNlZCBwYWNrYWdlLmpzb24gY29udGVudCBhcyBhbiBvYmplY3RcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGdldFBhY2thZ2UoYmFzZVBhdGg6IHN0cmluZyk6IFJlY29yZDxzdHJpbmcsIHVua25vd24+IHtcbiAgICB0cnkge1xuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoXG4gICAgICAgIGZzLnJlYWRGaWxlU3luYyhwYXRoLmpvaW4oYmFzZVBhdGgsIFwicGFja2FnZS5qc29uXCIpLCBcInV0ZjhcIilcbiAgICAgICk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGBVbmFibGUgdG8gcmVhZCB2ZXJzaW9uIGZyb20gJHtiYXNlUGF0aH06ICR7ZX1gKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgdGhlIHZlcnNpb24gZnJvbSBwYWNrYWdlLmpzb25cbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSB2ZXJzaW9uIGZpZWxkIGZyb20gdGhlIHBhY2thZ2UuanNvbiBmaWxlIGF0IHRoZSBzcGVjaWZpZWQgcGF0aFxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVBhdGggVGhlIGJhc2UgcGF0aCB3aGVyZSB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgbG9jYXRlZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBwYWNrYWdlIHZlcnNpb24gc3RyaW5nXG4gICAqL1xuICBzdGF0aWMgcGFja2FnZVZlcnNpb24oYmFzZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgcmV0dXJuIENMSVV0aWxzLmdldFBhY2thZ2UoYmFzZVBhdGgpW1widmVyc2lvblwiXSBhcyBzdHJpbmc7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHVybnMgdGhlIG5hbWUgZnJvbSBwYWNrYWdlLmpzb25cbiAgICogQHN1bW1hcnkgUmV0cmlldmVzIHRoZSBuYW1lIGZpZWxkIGZyb20gdGhlIHBhY2thZ2UuanNvbiBmaWxlIGF0IHRoZSBzcGVjaWZpZWQgcGF0aCBhbmQgZXh0cmFjdHMgdGhlIHBhY2thZ2UgbmFtZSB3aXRob3V0IHRoZSBzY29wZVxuICAgKlxuICAgKiBAcGFyYW0ge3N0cmluZ30gYmFzZVBhdGggVGhlIGJhc2UgcGF0aCB3aGVyZSB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgbG9jYXRlZFxuICAgKiBAcmV0dXJuIHtzdHJpbmd9IFRoZSBwYWNrYWdlIG5hbWUgd2l0aG91dCB0aGUgc2NvcGUgKGUuZy4sIFwiY2xpXCIgZnJvbSBcIkBkZWNhZi10cy9jbGlcIilcbiAgICovXG4gIHN0YXRpYyBwYWNrYWdlTmFtZShiYXNlUGF0aDogc3RyaW5nKTogc3RyaW5nIHtcbiAgICBjb25zdCBuYW1lID0gKENMSVV0aWxzLmdldFBhY2thZ2UoYmFzZVBhdGgpW1wibmFtZVwiXSBhcyBzdHJpbmcpLnNwbGl0KFwiL1wiKTtcbiAgICByZXR1cm4gbmFtZVtuYW1lLmxlbmd0aCAtIDFdO1xuICB9XG59XG4iXX0=
package/lib/index.cjs CHANGED
@@ -19,7 +19,8 @@ __exportStar(require("./CliWrapper.cjs"), exports);
19
19
  /**
20
20
  * @description Decaf-ts' CLI module
21
21
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
22
- * within the @decaf-ts namespace and load then as subcommands
22
+ * within the @decaf-ts namespace and load them as subcommands. It serves as the main entry point
23
+ * for the CLI functionality, exporting the CliWrapper class and VERSION constant.
23
24
  *
24
25
  * @example
25
26
  * run module command - $ npx decaf <module name> <module command> ...<module command options>
@@ -30,24 +31,10 @@ __exportStar(require("./CliWrapper.cjs"), exports);
30
31
  * @module CLI
31
32
  */
32
33
  /**
33
- * @description Decaf-ts' CLI namespace
34
- * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
35
- * within the @decaf-ts namespace and load then as subcommands
36
- *
37
- * @example
38
- * run module command - $ npx decaf <module name> <module command> ...<module command options>
39
- * get module help - $ npx decaf help <module name>;
40
- * list imported modules - $ npx decaf list;
41
- * get cli help - $ npx decaf help;
42
- *
43
- * @namespace cli
44
- * @memberOf module:CLI
45
- */
46
- /**
47
- * @summary stores the current package version
48
- * @description this is how you should document a constant
34
+ * @description Stores the current package version
35
+ * @summary A constant that holds the version string of the package, which is replaced during build
49
36
  * @const VERSION
50
37
  * @memberOf module:CLI
51
38
  */
52
- exports.VERSION = "0.3.1";
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSwrQ0FBNkI7QUFFN0I7Ozs7Ozs7Ozs7OztHQVlHO0FBRUg7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVIOzs7OztHQUtHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ2xpV3JhcHBlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNhZi10cycgQ0xJIG1vZHVsZVxuICogQHN1bW1hcnkgVGhpcyBmaWxlIHdpbGwgY3Jhd2wgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZm9yIGZpbGVzIGNhbGxlZCB7QGxpbmsgQ0xJX0ZJTEVfTkFNRX1cbiAqIHdpdGhpbiB0aGUgQGRlY2FmLXRzIG5hbWVzcGFjZSBhbmQgbG9hZCB0aGVuIGFzIHN1YmNvbW1hbmRzXG4gKlxuICogQGV4YW1wbGVcbiAqIHJ1biBtb2R1bGUgY29tbWFuZCAgICAgLSAkIG5weCBkZWNhZiA8bW9kdWxlIG5hbWU+IDxtb2R1bGUgY29tbWFuZD4gLi4uPG1vZHVsZSBjb21tYW5kIG9wdGlvbnM+XG4gKiBnZXQgbW9kdWxlIGhlbHAgICAgICAgIC0gJCBucHggZGVjYWYgaGVscCA8bW9kdWxlIG5hbWU+O1xuICogbGlzdCBpbXBvcnRlZCBtb2R1bGVzICAtICQgbnB4IGRlY2FmIGxpc3Q7XG4gKiBnZXQgY2xpIGhlbHAgICAgICAgICAgIC0gJCBucHggZGVjYWYgaGVscDtcbiAqXG4gKiBAbW9kdWxlIENMSVxuICovXG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY2FmLXRzJyBDTEkgbmFtZXNwYWNlXG4gKiBAc3VtbWFyeSBUaGlzIGZpbGUgd2lsbCBjcmF3bCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgZmlsZXMgY2FsbGVkIHtAbGluayBDTElfRklMRV9OQU1FfVxuICogd2l0aGluIHRoZSBAZGVjYWYtdHMgbmFtZXNwYWNlIGFuZCBsb2FkIHRoZW4gYXMgc3ViY29tbWFuZHNcbiAqXG4gKiBAZXhhbXBsZVxuICogcnVuIG1vZHVsZSBjb21tYW5kICAgICAtICQgbnB4IGRlY2FmIDxtb2R1bGUgbmFtZT4gPG1vZHVsZSBjb21tYW5kPiAuLi48bW9kdWxlIGNvbW1hbmQgb3B0aW9ucz5cbiAqIGdldCBtb2R1bGUgaGVscCAgICAgICAgLSAkIG5weCBkZWNhZiBoZWxwIDxtb2R1bGUgbmFtZT47XG4gKiBsaXN0IGltcG9ydGVkIG1vZHVsZXMgIC0gJCBucHggZGVjYWYgbGlzdDtcbiAqIGdldCBjbGkgaGVscCAgICAgICAgICAgLSAkIG5weCBkZWNhZiBoZWxwO1xuICpcbiAqIEBuYW1lc3BhY2UgY2xpXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNMSVxuICovXG5cbi8qKlxuICogQHN1bW1hcnkgc3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQGRlc2NyaXB0aW9uIHRoaXMgaXMgaG93IHlvdSBzaG91bGQgZG9jdW1lbnQgYSBjb25zdGFudFxuICogQGNvbnN0IFZFUlNJT05cbiAqIEBtZW1iZXJPZiBtb2R1bGU6Q0xJXG4gKi9cbmV4cG9ydCBjb25zdCBWRVJTSU9OID0gXCIjI1ZFUlNJT04jI1wiO1xuIl19
39
+ exports.VERSION = "0.3.6";
40
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxtREFBNkI7QUFFN0I7Ozs7Ozs7Ozs7Ozs7R0FhRztBQUVIOzs7OztHQUtHO0FBQ1UsUUFBQSxPQUFPLEdBQUcsYUFBYSxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ2xpV3JhcHBlclwiO1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBEZWNhZi10cycgQ0xJIG1vZHVsZVxuICogQHN1bW1hcnkgVGhpcyBmaWxlIHdpbGwgY3Jhd2wgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkgZm9yIGZpbGVzIGNhbGxlZCB7QGxpbmsgQ0xJX0ZJTEVfTkFNRX1cbiAqIHdpdGhpbiB0aGUgQGRlY2FmLXRzIG5hbWVzcGFjZSBhbmQgbG9hZCB0aGVtIGFzIHN1YmNvbW1hbmRzLiBJdCBzZXJ2ZXMgYXMgdGhlIG1haW4gZW50cnkgcG9pbnRcbiAqIGZvciB0aGUgQ0xJIGZ1bmN0aW9uYWxpdHksIGV4cG9ydGluZyB0aGUgQ2xpV3JhcHBlciBjbGFzcyBhbmQgVkVSU0lPTiBjb25zdGFudC5cbiAqXG4gKiBAZXhhbXBsZVxuICogcnVuIG1vZHVsZSBjb21tYW5kICAgICAtICQgbnB4IGRlY2FmIDxtb2R1bGUgbmFtZT4gPG1vZHVsZSBjb21tYW5kPiAuLi48bW9kdWxlIGNvbW1hbmQgb3B0aW9ucz5cbiAqIGdldCBtb2R1bGUgaGVscCAgICAgICAgLSAkIG5weCBkZWNhZiBoZWxwIDxtb2R1bGUgbmFtZT47XG4gKiBsaXN0IGltcG9ydGVkIG1vZHVsZXMgIC0gJCBucHggZGVjYWYgbGlzdDtcbiAqIGdldCBjbGkgaGVscCAgICAgICAgICAgLSAkIG5weCBkZWNhZiBoZWxwO1xuICpcbiAqIEBtb2R1bGUgQ0xJXG4gKi9cblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gU3RvcmVzIHRoZSBjdXJyZW50IHBhY2thZ2UgdmVyc2lvblxuICogQHN1bW1hcnkgQSBjb25zdGFudCB0aGF0IGhvbGRzIHRoZSB2ZXJzaW9uIHN0cmluZyBvZiB0aGUgcGFja2FnZSwgd2hpY2ggaXMgcmVwbGFjZWQgZHVyaW5nIGJ1aWxkXG4gKiBAY29uc3QgVkVSU0lPTlxuICogQG1lbWJlck9mIG1vZHVsZTpDTElcbiAqL1xuZXhwb3J0IGNvbnN0IFZFUlNJT04gPSBcIiMjVkVSU0lPTiMjXCI7XG4iXX0=
package/lib/index.d.ts CHANGED
@@ -2,7 +2,8 @@ export * from "./CliWrapper";
2
2
  /**
3
3
  * @description Decaf-ts' CLI module
4
4
  * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
5
- * within the @decaf-ts namespace and load then as subcommands
5
+ * within the @decaf-ts namespace and load them as subcommands. It serves as the main entry point
6
+ * for the CLI functionality, exporting the CliWrapper class and VERSION constant.
6
7
  *
7
8
  * @example
8
9
  * run module command - $ npx decaf <module name> <module command> ...<module command options>
@@ -13,23 +14,9 @@ export * from "./CliWrapper";
13
14
  * @module CLI
14
15
  */
15
16
  /**
16
- * @description Decaf-ts' CLI namespace
17
- * @summary This file will crawl the current working directory for files called {@link CLI_FILE_NAME}
18
- * within the @decaf-ts namespace and load then as subcommands
19
- *
20
- * @example
21
- * run module command - $ npx decaf <module name> <module command> ...<module command options>
22
- * get module help - $ npx decaf help <module name>;
23
- * list imported modules - $ npx decaf list;
24
- * get cli help - $ npx decaf help;
25
- *
26
- * @namespace cli
27
- * @memberOf module:CLI
28
- */
29
- /**
30
- * @summary stores the current package version
31
- * @description this is how you should document a constant
17
+ * @description Stores the current package version
18
+ * @summary A constant that holds the version string of the package, which is replaced during build
32
19
  * @const VERSION
33
20
  * @memberOf module:CLI
34
21
  */
35
- export declare const VERSION = "0.3.1";
22
+ export declare const VERSION = "0.3.6";
package/lib/types.cjs CHANGED
@@ -1,3 +1,3 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBDTElfRklMRV9OQU1FIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIGRlc2NyaWJlcyB0aGUgZnVuY3Rpb24gdHlwZSBlYWNoIGRlY2FmIG1vZHVsZSBtdXN0IGV4cG9zZSB1bmRlciB7QGxpbmsgQ0xJX0ZJTEVfTkFNRX1cbiAqIEB0eXBlIENsaU1vZHVsZVxuICpcbiAqIEBtZW1iZXJPZiBtb2R1bGUuQ0xJLmNsaVxuICovXG5leHBvcnQgdHlwZSBDbGlNb2R1bGUgPSAoKSA9PiBDb21tYW5kIHwgUHJvbWlzZTxDb21tYW5kPjtcbiJdfQ==
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBDTElfRklMRV9OQU1FIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHR5cGUgZm9yIERlY2FmIENMSSBtb2R1bGVzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzaWduYXR1cmUgZm9yIENMSSBtb2R1bGUgZnVuY3Rpb25zIHRoYXQgZWFjaCBEZWNhZiBtb2R1bGUgbXVzdCBleHBvcnQgdW5kZXIgdGhlIENMSV9GSUxFX05BTUUgZmlsZVxuICogVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBDb21tYW5kIG9iamVjdCBvciBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIENvbW1hbmQgb2JqZWN0XG4gKlxuICogQHR5cGVkZWYge0Z1bmN0aW9ufSBDbGlNb2R1bGVcbiAqIEByZXR1cm4ge0NvbW1hbmR8UHJvbWlzZTxDb21tYW5kPn0gQSBDb21tYW5kIG9iamVjdCBvciBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBDb21tYW5kIG9iamVjdFxuICogQG1lbWJlck9mIG1vZHVsZTpDTElcbiAqL1xuZXhwb3J0IHR5cGUgQ2xpTW9kdWxlID0gKCkgPT4gQ29tbWFuZCB8IFByb21pc2U8Q29tbWFuZD47XG4iXX0=
package/lib/types.d.ts CHANGED
@@ -1,8 +1,11 @@
1
1
  import { Command } from "commander";
2
2
  /**
3
- * @description describes the function type each decaf module must expose under {@link CLI_FILE_NAME}
4
- * @type CliModule
3
+ * @description Function type for Decaf CLI modules
4
+ * @summary Defines the signature for CLI module functions that each Decaf module must export under the CLI_FILE_NAME file
5
+ * The function should return a Command object or a Promise that resolves to a Command object
5
6
  *
6
- * @memberOf module.CLI.cli
7
+ * @typedef {Function} CliModule
8
+ * @return {Command|Promise<Command>} A Command object or Promise that resolves to a Command object
9
+ * @memberOf module:CLI
7
10
  */
8
11
  export type CliModule = () => Command | Promise<Command>;
package/lib/utils.cjs CHANGED
@@ -40,16 +40,26 @@ exports.CLIUtils = void 0;
40
40
  const path_1 = __importDefault(require("path"));
41
41
  const fs_1 = __importDefault(require("fs"));
42
42
  /**
43
- * @description util class to retrieve versions and other information
43
+ * @description Utility class for CLI operations
44
+ * @summary A static utility class that provides methods for loading modules, retrieving package information, and initializing CLI commands
45
+ *
46
+ * @example
47
+ * // Initialize a Command object with package information
48
+ * const command = new Command();
49
+ * CLIUtils.initialize(command, './path/to/package');
50
+ *
51
+ * // Load a CLI module from a file
52
+ * const module = await CLIUtils.loadFromFile('./path/to/cli-module.js');
44
53
  *
45
54
  * @class CLIUtils
46
- * @static
47
55
  */
48
56
  class CLIUtils {
49
57
  /**
50
- * @description Dynamically imports a cjs file into a decaf module
51
- * @param {string} path
52
- * @static
58
+ * @description Dynamically imports a module file
59
+ * @summary Loads a JavaScript file and returns it as a CliModule, handling both ESM and CommonJS formats
60
+ *
61
+ * @param {string} path The file path to the module to load
62
+ * @return {Promise<CliModule>} A promise that resolves to the loaded CliModule
53
63
  */
54
64
  static async loadFromFile(path) {
55
65
  try {
@@ -60,11 +70,12 @@ class CLIUtils {
60
70
  }
61
71
  }
62
72
  /**
63
- * @description allows safe dynamic imports
64
- * @summary property imports JS files regardless of esm status
73
+ * @description Normalizes module imports to handle both ESM and CommonJS formats
74
+ * @summary Properly imports JavaScript files regardless of their module format by handling the ESM wrapper for CommonJS modules
65
75
  *
66
- * @typeParam T
67
- * @param {Promise} importPromise
76
+ * @template T The type of the imported module
77
+ * @param {Promise<T>} importPromise The promise returned by the dynamic import
78
+ * @return {Promise<T>} A promise that resolves to the normalized module
68
79
  * @private
69
80
  */
70
81
  static async normalizeImport(importPromise) {
@@ -72,10 +83,12 @@ class CLIUtils {
72
83
  return importPromise.then((m) => (m.default || m));
73
84
  }
74
85
  /**
75
- * @description initializes the Cli object
86
+ * @description Initializes a Command object with package information
87
+ * @summary Sets up a Commander Command object with the package name, description, and version from the package.json file
76
88
  *
77
- * @param {Command} command
78
- * @param {string} [basePath] defaults to the current working directory
89
+ * @param {Command} command The Command object to initialize
90
+ * @param {string} [basePath] The base path where the package.json file is located, defaults to the current working directory
91
+ * @return {void}
79
92
  */
80
93
  static initialize(command, basePath) {
81
94
  const name = CLIUtils.packageName(basePath);
@@ -85,9 +98,11 @@ class CLIUtils {
85
98
  .version(CLIUtils.packageVersion(basePath));
86
99
  }
87
100
  /**
88
- * @description retrieves and parses the package.json file
101
+ * @description Retrieves and parses the package.json file
102
+ * @summary Reads the package.json file from the specified path and parses it into a JavaScript object
89
103
  *
90
- * @param {string} basePath
104
+ * @param {string} basePath The base path where the package.json file is located
105
+ * @return {Record<string, unknown>} The parsed package.json content as an object
91
106
  * @private
92
107
  */
93
108
  static getPackage(basePath) {
@@ -99,19 +114,26 @@ class CLIUtils {
99
114
  }
100
115
  }
101
116
  /**
102
- * @description returns the package version
103
- * @param {string} [basePath] defaults to current working dir
117
+ * @description Returns the version from package.json
118
+ * @summary Retrieves the version field from the package.json file at the specified path
119
+ *
120
+ * @param {string} basePath The base path where the package.json file is located
121
+ * @return {string} The package version string
104
122
  */
105
123
  static packageVersion(basePath) {
106
124
  return CLIUtils.getPackage(basePath)["version"];
107
125
  }
108
126
  /**
109
- * @description returns the package name
110
- * @param {string} [basePath] defaults to current working dir
127
+ * @description Returns the name from package.json
128
+ * @summary Retrieves the name field from the package.json file at the specified path and extracts the package name without the scope
129
+ *
130
+ * @param {string} basePath The base path where the package.json file is located
131
+ * @return {string} The package name without the scope (e.g., "cli" from "@decaf-ts/cli")
111
132
  */
112
133
  static packageName(basePath) {
113
- return CLIUtils.getPackage(basePath)["name"].split("/")[1];
134
+ const name = CLIUtils.getPackage(basePath)["name"].split("/");
135
+ return name[name.length - 1];
114
136
  }
115
137
  }
116
138
  exports.CLIUtils = CLIUtils;
117
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUlwQjs7Ozs7R0FLRztBQUNILE1BQWEsUUFBUTtJQUNuQjs7OztPQUlHO0lBQ0gsTUFBTSxDQUFDLEtBQUssQ0FBQyxZQUFZLENBQUMsSUFBWTtRQUNwQyxJQUFJLENBQUM7WUFDSCxPQUFPLFFBQVEsQ0FBQyxlQUFlLG9CQUFRLElBQUksd0NBQUUsQ0FBQztRQUNoRCxDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUNiLHVCQUF1QixJQUFJLEtBQUssQ0FBQyxZQUFZLEtBQUssQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUFDLE9BQU8sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQ3JFLENBQUM7UUFDSixDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLGVBQWUsQ0FBSSxhQUF5QjtRQUN2RCxtRUFBbUU7UUFDbkUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBRSxDQUFvQixDQUFDLE9BQU8sSUFBSSxDQUFDLENBQU0sQ0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBZ0IsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE9BQU87YUFDSixJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsV0FBVyxDQUFDLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQzthQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2pDLE9BQVEsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGO0FBNUVELDRCQTRFQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgQ2xpTW9kdWxlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gdXRpbCBjbGFzcyB0byByZXRyaWV2ZSB2ZXJzaW9ucyBhbmQgb3RoZXIgaW5mb3JtYXRpb25cbiAqXG4gKiBAY2xhc3MgQ0xJVXRpbHNcbiAqIEBzdGF0aWNcbiAqL1xuZXhwb3J0IGNsYXNzIENMSVV0aWxzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEeW5hbWljYWxseSBpbXBvcnRzIGEgY2pzIGZpbGUgaW50byBhIGRlY2FmIG1vZHVsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgbG9hZEZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8Q2xpTW9kdWxlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBDTElVdGlscy5ub3JtYWxpemVJbXBvcnQoaW1wb3J0KHBhdGgpKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gbG9hZCBmcm9tICR7cGF0aH06ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gYWxsb3dzIHNhZmUgZHluYW1pYyBpbXBvcnRzXG4gICAqIEBzdW1tYXJ5IHByb3BlcnR5IGltcG9ydHMgSlMgZmlsZXMgcmVnYXJkbGVzcyBvZiBlc20gc3RhdHVzXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVFxuICAgKiBAcGFyYW0ge1Byb21pc2V9IGltcG9ydFByb21pc2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0YXRpYyBhc3luYyBub3JtYWxpemVJbXBvcnQ8VD4oaW1wb3J0UHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgICByZXR1cm4gaW1wb3J0UHJvbWlzZS50aGVuKFxuICAgICAgKG06IHVua25vd24pID0+ICgobSBhcyB7IGRlZmF1bHQ6IFQgfSkuZGVmYXVsdCB8fCBtKSBhcyBUXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gaW5pdGlhbGl6ZXMgdGhlIENsaSBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIHtDb21tYW5kfSBjb21tYW5kXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYmFzZVBhdGhdIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gICAqL1xuICBzdGF0aWMgaW5pdGlhbGl6ZShjb21tYW5kOiBDb21tYW5kLCBiYXNlUGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgbmFtZSA9IENMSVV0aWxzLnBhY2thZ2VOYW1lKGJhc2VQYXRoKTtcbiAgICBjb21tYW5kXG4gICAgICAubmFtZShuYW1lKVxuICAgICAgLmRlc2NyaXB0aW9uKGBSdW5zICR7bmFtZX0gcmVsYXRlZCBjb21tYW5kc2ApXG4gICAgICAudmVyc2lvbihDTElVdGlscy5wYWNrYWdlVmVyc2lvbihiYXNlUGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiByZXRyaWV2ZXMgYW5kIHBhcnNlcyB0aGUgcGFja2FnZS5qc29uIGZpbGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRQYWNrYWdlKGJhc2VQYXRoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKGJhc2VQYXRoLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGY4XCIpXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHJlYWQgdmVyc2lvbiBmcm9tICR7YmFzZVBhdGh9OiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiByZXR1cm5zIHRoZSBwYWNrYWdlIHZlcnNpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gZGVmYXVsdHMgdG8gY3VycmVudCB3b3JraW5nIGRpclxuICAgKi9cbiAgc3RhdGljIHBhY2thZ2VWZXJzaW9uKGJhc2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBDTElVdGlscy5nZXRQYWNrYWdlKGJhc2VQYXRoKVtcInZlcnNpb25cIl0gYXMgc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiByZXR1cm5zIHRoZSBwYWNrYWdlIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gZGVmYXVsdHMgdG8gY3VycmVudCB3b3JraW5nIGRpclxuICAgKi9cbiAgc3RhdGljIHBhY2thZ2VOYW1lKGJhc2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAoQ0xJVXRpbHMuZ2V0UGFja2FnZShiYXNlUGF0aClbXCJuYW1lXCJdIGFzIHN0cmluZykuc3BsaXQoXCIvXCIpWzFdO1xuICB9XG59XG4iXX0=
139
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUlwQjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQVk7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxRQUFRLENBQUMsZUFBZSxvQkFBUSxJQUFJLHdDQUFFLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FDYix1QkFBdUIsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNyRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFJLGFBQXlCO1FBQ3ZELG1FQUFtRTtRQUNuRSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFFLENBQW9CLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBTSxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQWdCLEVBQUUsUUFBZ0I7UUFDbEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPO2FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQzthQUNWLFdBQVcsQ0FBQyxRQUFRLElBQUksbUJBQW1CLENBQUM7YUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2pDLE1BQU0sSUFBSSxHQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBMUZELDRCQTBGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgQ2xpTW9kdWxlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVXRpbGl0eSBjbGFzcyBmb3IgQ0xJIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IEEgc3RhdGljIHV0aWxpdHkgY2xhc3MgdGhhdCBwcm92aWRlcyBtZXRob2RzIGZvciBsb2FkaW5nIG1vZHVsZXMsIHJldHJpZXZpbmcgcGFja2FnZSBpbmZvcm1hdGlvbiwgYW5kIGluaXRpYWxpemluZyBDTEkgY29tbWFuZHNcbiAqIFxuICogQGV4YW1wbGVcbiAqIC8vIEluaXRpYWxpemUgYSBDb21tYW5kIG9iamVjdCB3aXRoIHBhY2thZ2UgaW5mb3JtYXRpb25cbiAqIGNvbnN0IGNvbW1hbmQgPSBuZXcgQ29tbWFuZCgpO1xuICogQ0xJVXRpbHMuaW5pdGlhbGl6ZShjb21tYW5kLCAnLi9wYXRoL3RvL3BhY2thZ2UnKTtcbiAqIFxuICogLy8gTG9hZCBhIENMSSBtb2R1bGUgZnJvbSBhIGZpbGVcbiAqIGNvbnN0IG1vZHVsZSA9IGF3YWl0IENMSVV0aWxzLmxvYWRGcm9tRmlsZSgnLi9wYXRoL3RvL2NsaS1tb2R1bGUuanMnKTtcbiAqIFxuICogQGNsYXNzIENMSVV0aWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBDTElVdGlscyB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRHluYW1pY2FsbHkgaW1wb3J0cyBhIG1vZHVsZSBmaWxlXG4gICAqIEBzdW1tYXJ5IExvYWRzIGEgSmF2YVNjcmlwdCBmaWxlIGFuZCByZXR1cm5zIGl0IGFzIGEgQ2xpTW9kdWxlLCBoYW5kbGluZyBib3RoIEVTTSBhbmQgQ29tbW9uSlMgZm9ybWF0c1xuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIGZpbGUgcGF0aCB0byB0aGUgbW9kdWxlIHRvIGxvYWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxDbGlNb2R1bGU+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIENsaU1vZHVsZVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGxvYWRGcm9tRmlsZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPENsaU1vZHVsZT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQ0xJVXRpbHMubm9ybWFsaXplSW1wb3J0KGltcG9ydChwYXRoKSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGxvYWQgZnJvbSAke3BhdGh9OiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5vcm1hbGl6ZXMgbW9kdWxlIGltcG9ydHMgdG8gaGFuZGxlIGJvdGggRVNNIGFuZCBDb21tb25KUyBmb3JtYXRzXG4gICAqIEBzdW1tYXJ5IFByb3Blcmx5IGltcG9ydHMgSmF2YVNjcmlwdCBmaWxlcyByZWdhcmRsZXNzIG9mIHRoZWlyIG1vZHVsZSBmb3JtYXQgYnkgaGFuZGxpbmcgdGhlIEVTTSB3cmFwcGVyIGZvciBDb21tb25KUyBtb2R1bGVzXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBpbXBvcnRlZCBtb2R1bGVcbiAgICogQHBhcmFtIHtQcm9taXNlPFQ+fSBpbXBvcnRQcm9taXNlIFRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBkeW5hbWljIGltcG9ydFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbm9ybWFsaXplZCBtb2R1bGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0YXRpYyBhc3luYyBub3JtYWxpemVJbXBvcnQ8VD4oaW1wb3J0UHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgICByZXR1cm4gaW1wb3J0UHJvbWlzZS50aGVuKFxuICAgICAgKG06IHVua25vd24pID0+ICgobSBhcyB7IGRlZmF1bHQ6IFQgfSkuZGVmYXVsdCB8fCBtKSBhcyBUXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgYSBDb21tYW5kIG9iamVjdCB3aXRoIHBhY2thZ2UgaW5mb3JtYXRpb25cbiAgICogQHN1bW1hcnkgU2V0cyB1cCBhIENvbW1hbmRlciBDb21tYW5kIG9iamVjdCB3aXRoIHRoZSBwYWNrYWdlIG5hbWUsIGRlc2NyaXB0aW9uLCBhbmQgdmVyc2lvbiBmcm9tIHRoZSBwYWNrYWdlLmpzb24gZmlsZVxuICAgKlxuICAgKiBAcGFyYW0ge0NvbW1hbmR9IGNvbW1hbmQgVGhlIENvbW1hbmQgb2JqZWN0IHRvIGluaXRpYWxpemVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gVGhlIGJhc2UgcGF0aCB3aGVyZSB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgbG9jYXRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBpbml0aWFsaXplKGNvbW1hbmQ6IENvbW1hbmQsIGJhc2VQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuYW1lID0gQ0xJVXRpbHMucGFja2FnZU5hbWUoYmFzZVBhdGgpO1xuICAgIGNvbW1hbmRcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oYFJ1bnMgJHtuYW1lfSByZWxhdGVkIGNvbW1hbmRzYClcbiAgICAgIC52ZXJzaW9uKENMSVV0aWxzLnBhY2thZ2VWZXJzaW9uKGJhc2VQYXRoKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhbmQgcGFyc2VzIHRoZSBwYWNrYWdlLmpzb24gZmlsZVxuICAgKiBAc3VtbWFyeSBSZWFkcyB0aGUgcGFja2FnZS5qc29uIGZpbGUgZnJvbSB0aGUgc3BlY2lmaWVkIHBhdGggYW5kIHBhcnNlcyBpdCBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoIFRoZSBiYXNlIHBhdGggd2hlcmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlzIGxvY2F0ZWRcbiAgICogQHJldHVybiB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFRoZSBwYXJzZWQgcGFja2FnZS5qc29uIGNvbnRlbnQgYXMgYW4gb2JqZWN0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRQYWNrYWdlKGJhc2VQYXRoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKGJhc2VQYXRoLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGY4XCIpXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHJlYWQgdmVyc2lvbiBmcm9tICR7YmFzZVBhdGh9OiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXR1cm5zIHRoZSB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgdmVyc2lvbiBmaWVsZCBmcm9tIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoIFRoZSBiYXNlIHBhdGggd2hlcmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlzIGxvY2F0ZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgcGFja2FnZSB2ZXJzaW9uIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIHBhY2thZ2VWZXJzaW9uKGJhc2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBDTElVdGlscy5nZXRQYWNrYWdlKGJhc2VQYXRoKVtcInZlcnNpb25cIl0gYXMgc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXR1cm5zIHRoZSBuYW1lIGZyb20gcGFja2FnZS5qc29uXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgbmFtZSBmaWVsZCBmcm9tIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGggYW5kIGV4dHJhY3RzIHRoZSBwYWNrYWdlIG5hbWUgd2l0aG91dCB0aGUgc2NvcGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoIFRoZSBiYXNlIHBhdGggd2hlcmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlzIGxvY2F0ZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgcGFja2FnZSBuYW1lIHdpdGhvdXQgdGhlIHNjb3BlIChlLmcuLCBcImNsaVwiIGZyb20gXCJAZGVjYWYtdHMvY2xpXCIpXG4gICAqL1xuICBzdGF0aWMgcGFja2FnZU5hbWUoYmFzZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IChDTElVdGlscy5nZXRQYWNrYWdlKGJhc2VQYXRoKVtcIm5hbWVcIl0gYXMgc3RyaW5nKS5zcGxpdChcIi9cIik7XG4gICAgcmV0dXJuIG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcbiAgfVxufVxuIl19