@decaf-ts/cli 0.3.5 → 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.
- package/LICENSE.md +21 -157
- package/README.md +157 -2
- package/dist/cli.cjs +143 -62
- package/dist/cli.esm.cjs +143 -62
- package/lib/CliWrapper.cjs +93 -21
- package/lib/CliWrapper.d.ts +88 -16
- package/lib/bin/cli.cjs +16 -8
- package/lib/bin/cli.d.ts +15 -7
- package/lib/constants.cjs +5 -5
- package/lib/constants.d.ts +4 -4
- package/lib/demo/cli-module.cjs +26 -18
- package/lib/demo/cli-module.d.ts +25 -17
- package/lib/esm/CliWrapper.d.ts +88 -16
- package/lib/esm/CliWrapper.js +95 -23
- package/lib/esm/bin/cli.d.ts +15 -7
- package/lib/esm/bin/cli.js +17 -9
- package/lib/esm/constants.d.ts +4 -4
- package/lib/esm/constants.js +5 -5
- package/lib/esm/demo/cli-module.d.ts +25 -17
- package/lib/esm/demo/cli-module.js +26 -18
- package/lib/esm/index.d.ts +5 -18
- package/lib/esm/index.js +7 -20
- package/lib/esm/types.d.ts +6 -3
- package/lib/esm/types.js +1 -1
- package/lib/esm/utils.d.ts +39 -18
- package/lib/esm/utils.js +42 -20
- package/lib/index.cjs +6 -19
- package/lib/index.d.ts +5 -18
- package/lib/types.cjs +1 -1
- package/lib/types.d.ts +6 -3
- package/lib/utils.cjs +42 -20
- package/lib/utils.d.ts +39 -18
- package/package.json +3 -2
package/lib/esm/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
|
|
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
|
|
17
|
-
* @summary
|
|
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.
|
|
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
|
|
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
|
|
17
|
-
* @summary
|
|
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.
|
|
36
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
22
|
+
export const VERSION = "0.3.6";
|
|
23
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0NBQTZCO0FBRTdCOzs7Ozs7Ozs7Ozs7O0dBYUc7QUFFSDs7Ozs7R0FLRztBQUNILE1BQU0sQ0FBQyxNQUFNLE9BQU8sR0FBRyxhQUFhLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgKiBmcm9tIFwiLi9DbGlXcmFwcGVyXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIERlY2FmLXRzJyBDTEkgbW9kdWxlXG4gKiBAc3VtbWFyeSBUaGlzIGZpbGUgd2lsbCBjcmF3bCB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBmb3IgZmlsZXMgY2FsbGVkIHtAbGluayBDTElfRklMRV9OQU1FfVxuICogd2l0aGluIHRoZSBAZGVjYWYtdHMgbmFtZXNwYWNlIGFuZCBsb2FkIHRoZW0gYXMgc3ViY29tbWFuZHMuIEl0IHNlcnZlcyBhcyB0aGUgbWFpbiBlbnRyeSBwb2ludFxuICogZm9yIHRoZSBDTEkgZnVuY3Rpb25hbGl0eSwgZXhwb3J0aW5nIHRoZSBDbGlXcmFwcGVyIGNsYXNzIGFuZCBWRVJTSU9OIGNvbnN0YW50LlxuICpcbiAqIEBleGFtcGxlXG4gKiBydW4gbW9kdWxlIGNvbW1hbmQgICAgIC0gJCBucHggZGVjYWYgPG1vZHVsZSBuYW1lPiA8bW9kdWxlIGNvbW1hbmQ+IC4uLjxtb2R1bGUgY29tbWFuZCBvcHRpb25zPlxuICogZ2V0IG1vZHVsZSBoZWxwICAgICAgICAtICQgbnB4IGRlY2FmIGhlbHAgPG1vZHVsZSBuYW1lPjtcbiAqIGxpc3QgaW1wb3J0ZWQgbW9kdWxlcyAgLSAkIG5weCBkZWNhZiBsaXN0O1xuICogZ2V0IGNsaSBoZWxwICAgICAgICAgICAtICQgbnB4IGRlY2FmIGhlbHA7XG4gKlxuICogQG1vZHVsZSBDTElcbiAqL1xuXG4vKipcbiAqIEBkZXNjcmlwdGlvbiBTdG9yZXMgdGhlIGN1cnJlbnQgcGFja2FnZSB2ZXJzaW9uXG4gKiBAc3VtbWFyeSBBIGNvbnN0YW50IHRoYXQgaG9sZHMgdGhlIHZlcnNpb24gc3RyaW5nIG9mIHRoZSBwYWNrYWdlLCB3aGljaCBpcyByZXBsYWNlZCBkdXJpbmcgYnVpbGRcbiAqIEBjb25zdCBWRVJTSU9OXG4gKiBAbWVtYmVyT2YgbW9kdWxlOkNMSVxuICovXG5leHBvcnQgY29uc3QgVkVSU0lPTiA9IFwiIyNWRVJTSU9OIyNcIjtcbiJdfQ==
|
package/lib/esm/types.d.ts
CHANGED
|
@@ -1,8 +1,11 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
/**
|
|
3
|
-
* @description
|
|
4
|
-
* @
|
|
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
|
-
* @
|
|
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,
|
|
2
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidHlwZXMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdHlwZXMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbW1hbmQgfSBmcm9tIFwiY29tbWFuZGVyXCI7XG4vLyBlc2xpbnQtZGlzYWJsZS1uZXh0LWxpbmUgQHR5cGVzY3JpcHQtZXNsaW50L25vLXVudXNlZC12YXJzXG5pbXBvcnQgeyBDTElfRklMRV9OQU1FIH0gZnJvbSBcIi4vY29uc3RhbnRzXCI7XG5cbi8qKlxuICogQGRlc2NyaXB0aW9uIEZ1bmN0aW9uIHR5cGUgZm9yIERlY2FmIENMSSBtb2R1bGVzXG4gKiBAc3VtbWFyeSBEZWZpbmVzIHRoZSBzaWduYXR1cmUgZm9yIENMSSBtb2R1bGUgZnVuY3Rpb25zIHRoYXQgZWFjaCBEZWNhZiBtb2R1bGUgbXVzdCBleHBvcnQgdW5kZXIgdGhlIENMSV9GSUxFX05BTUUgZmlsZVxuICogVGhlIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gYSBDb21tYW5kIG9iamVjdCBvciBhIFByb21pc2UgdGhhdCByZXNvbHZlcyB0byBhIENvbW1hbmQgb2JqZWN0XG4gKlxuICogQHR5cGVkZWYge0Z1bmN0aW9ufSBDbGlNb2R1bGVcbiAqIEByZXR1cm4ge0NvbW1hbmR8UHJvbWlzZTxDb21tYW5kPn0gQSBDb21tYW5kIG9iamVjdCBvciBQcm9taXNlIHRoYXQgcmVzb2x2ZXMgdG8gYSBDb21tYW5kIG9iamVjdFxuICogQG1lbWJlck9mIG1vZHVsZTpDTElcbiAqL1xuZXhwb3J0IHR5cGUgQ2xpTW9kdWxlID0gKCkgPT4gQ29tbWFuZCB8IFByb21pc2U8Q29tbWFuZD47XG4iXX0=
|
package/lib/esm/utils.d.ts
CHANGED
|
@@ -1,49 +1,70 @@
|
|
|
1
1
|
import { Command } from "commander";
|
|
2
2
|
import { CliModule } from "./types";
|
|
3
3
|
/**
|
|
4
|
-
* @description
|
|
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
|
|
12
|
-
* @
|
|
13
|
-
*
|
|
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
|
|
18
|
-
* @summary
|
|
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
|
-
* @
|
|
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
|
|
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
|
|
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
|
|
41
|
-
* @
|
|
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
|
|
46
|
-
* @
|
|
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
|
|
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
|
|
12
|
-
* @
|
|
13
|
-
*
|
|
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
|
|
25
|
-
* @summary
|
|
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
|
-
* @
|
|
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
|
|
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
|
|
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
|
|
64
|
-
* @
|
|
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
|
|
71
|
-
* @
|
|
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
|
-
|
|
95
|
+
const name = CLIUtils.getPackage(basePath)["name"].split("/");
|
|
96
|
+
return name[name.length - 1];
|
|
75
97
|
}
|
|
76
98
|
}
|
|
77
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
|
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
|
|
34
|
-
* @summary
|
|
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.
|
|
53
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
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
|
|
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
|
|
17
|
-
* @summary
|
|
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.
|
|
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,
|
|
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
|
|
4
|
-
* @
|
|
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
|
-
* @
|
|
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
|
|
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
|
|
51
|
-
* @
|
|
52
|
-
*
|
|
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
|
|
64
|
-
* @summary
|
|
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
|
-
* @
|
|
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
|
|
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
|
|
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
|
|
103
|
-
* @
|
|
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
|
|
110
|
-
* @
|
|
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
|
-
|
|
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,
|
|
139
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7O0FBQUEsZ0RBQXdCO0FBQ3hCLDRDQUFvQjtBQUlwQjs7Ozs7Ozs7Ozs7OztHQWFHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQVk7UUFDcEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxRQUFRLENBQUMsZUFBZSxvQkFBUSxJQUFJLHdDQUFFLENBQUM7UUFDaEQsQ0FBQztRQUFDLE9BQU8sQ0FBVSxFQUFFLENBQUM7WUFDcEIsTUFBTSxJQUFJLEtBQUssQ0FDYix1QkFBdUIsSUFBSSxLQUFLLENBQUMsWUFBWSxLQUFLLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUNyRSxDQUFDO1FBQ0osQ0FBQztJQUNILENBQUM7SUFFRDs7Ozs7Ozs7T0FRRztJQUNILE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUFJLGFBQXlCO1FBQ3ZELG1FQUFtRTtRQUNuRSxPQUFPLGFBQWEsQ0FBQyxJQUFJLENBQ3ZCLENBQUMsQ0FBVSxFQUFFLEVBQUUsQ0FBQyxDQUFFLENBQW9CLENBQUMsT0FBTyxJQUFJLENBQUMsQ0FBTSxDQUMxRCxDQUFDO0lBQ0osQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxNQUFNLENBQUMsVUFBVSxDQUFDLE9BQWdCLEVBQUUsUUFBZ0I7UUFDbEQsTUFBTSxJQUFJLEdBQUcsUUFBUSxDQUFDLFdBQVcsQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUM1QyxPQUFPO2FBQ0osSUFBSSxDQUFDLElBQUksQ0FBQzthQUNWLFdBQVcsQ0FBQyxRQUFRLElBQUksbUJBQW1CLENBQUM7YUFDNUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxjQUFjLENBQUMsUUFBUSxDQUFDLENBQUMsQ0FBQztJQUNoRCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2pDLE1BQU0sSUFBSSxHQUFJLFFBQVEsQ0FBQyxVQUFVLENBQUMsUUFBUSxDQUFDLENBQUMsTUFBTSxDQUFZLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQzFFLE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxNQUFNLEdBQUcsQ0FBQyxDQUFDLENBQUM7SUFDL0IsQ0FBQztDQUNGO0FBMUZELDRCQTBGQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgQ2xpTW9kdWxlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gVXRpbGl0eSBjbGFzcyBmb3IgQ0xJIG9wZXJhdGlvbnNcbiAqIEBzdW1tYXJ5IEEgc3RhdGljIHV0aWxpdHkgY2xhc3MgdGhhdCBwcm92aWRlcyBtZXRob2RzIGZvciBsb2FkaW5nIG1vZHVsZXMsIHJldHJpZXZpbmcgcGFja2FnZSBpbmZvcm1hdGlvbiwgYW5kIGluaXRpYWxpemluZyBDTEkgY29tbWFuZHNcbiAqIFxuICogQGV4YW1wbGVcbiAqIC8vIEluaXRpYWxpemUgYSBDb21tYW5kIG9iamVjdCB3aXRoIHBhY2thZ2UgaW5mb3JtYXRpb25cbiAqIGNvbnN0IGNvbW1hbmQgPSBuZXcgQ29tbWFuZCgpO1xuICogQ0xJVXRpbHMuaW5pdGlhbGl6ZShjb21tYW5kLCAnLi9wYXRoL3RvL3BhY2thZ2UnKTtcbiAqIFxuICogLy8gTG9hZCBhIENMSSBtb2R1bGUgZnJvbSBhIGZpbGVcbiAqIGNvbnN0IG1vZHVsZSA9IGF3YWl0IENMSVV0aWxzLmxvYWRGcm9tRmlsZSgnLi9wYXRoL3RvL2NsaS1tb2R1bGUuanMnKTtcbiAqIFxuICogQGNsYXNzIENMSVV0aWxzXG4gKi9cbmV4cG9ydCBjbGFzcyBDTElVdGlscyB7XG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gRHluYW1pY2FsbHkgaW1wb3J0cyBhIG1vZHVsZSBmaWxlXG4gICAqIEBzdW1tYXJ5IExvYWRzIGEgSmF2YVNjcmlwdCBmaWxlIGFuZCByZXR1cm5zIGl0IGFzIGEgQ2xpTW9kdWxlLCBoYW5kbGluZyBib3RoIEVTTSBhbmQgQ29tbW9uSlMgZm9ybWF0c1xuICAgKiBcbiAgICogQHBhcmFtIHtzdHJpbmd9IHBhdGggVGhlIGZpbGUgcGF0aCB0byB0aGUgbW9kdWxlIHRvIGxvYWRcbiAgICogQHJldHVybiB7UHJvbWlzZTxDbGlNb2R1bGU+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbG9hZGVkIENsaU1vZHVsZVxuICAgKi9cbiAgc3RhdGljIGFzeW5jIGxvYWRGcm9tRmlsZShwYXRoOiBzdHJpbmcpOiBQcm9taXNlPENsaU1vZHVsZT4ge1xuICAgIHRyeSB7XG4gICAgICByZXR1cm4gQ0xJVXRpbHMubm9ybWFsaXplSW1wb3J0KGltcG9ydChwYXRoKSk7XG4gICAgfSBjYXRjaCAoZTogdW5rbm93bikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFxuICAgICAgICBgRmFpbGVkIHRvIGxvYWQgZnJvbSAke3BhdGh9OiAke2UgaW5zdGFuY2VvZiBFcnJvciA/IGUubWVzc2FnZSA6IGV9YFxuICAgICAgKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIE5vcm1hbGl6ZXMgbW9kdWxlIGltcG9ydHMgdG8gaGFuZGxlIGJvdGggRVNNIGFuZCBDb21tb25KUyBmb3JtYXRzXG4gICAqIEBzdW1tYXJ5IFByb3Blcmx5IGltcG9ydHMgSmF2YVNjcmlwdCBmaWxlcyByZWdhcmRsZXNzIG9mIHRoZWlyIG1vZHVsZSBmb3JtYXQgYnkgaGFuZGxpbmcgdGhlIEVTTSB3cmFwcGVyIGZvciBDb21tb25KUyBtb2R1bGVzXG4gICAqXG4gICAqIEB0ZW1wbGF0ZSBUIFRoZSB0eXBlIG9mIHRoZSBpbXBvcnRlZCBtb2R1bGVcbiAgICogQHBhcmFtIHtQcm9taXNlPFQ+fSBpbXBvcnRQcm9taXNlIFRoZSBwcm9taXNlIHJldHVybmVkIGJ5IHRoZSBkeW5hbWljIGltcG9ydFxuICAgKiBAcmV0dXJuIHtQcm9taXNlPFQ+fSBBIHByb21pc2UgdGhhdCByZXNvbHZlcyB0byB0aGUgbm9ybWFsaXplZCBtb2R1bGVcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHN0YXRpYyBhc3luYyBub3JtYWxpemVJbXBvcnQ8VD4oaW1wb3J0UHJvbWlzZTogUHJvbWlzZTxUPik6IFByb21pc2U8VD4ge1xuICAgIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgICByZXR1cm4gaW1wb3J0UHJvbWlzZS50aGVuKFxuICAgICAgKG06IHVua25vd24pID0+ICgobSBhcyB7IGRlZmF1bHQ6IFQgfSkuZGVmYXVsdCB8fCBtKSBhcyBUXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gSW5pdGlhbGl6ZXMgYSBDb21tYW5kIG9iamVjdCB3aXRoIHBhY2thZ2UgaW5mb3JtYXRpb25cbiAgICogQHN1bW1hcnkgU2V0cyB1cCBhIENvbW1hbmRlciBDb21tYW5kIG9iamVjdCB3aXRoIHRoZSBwYWNrYWdlIG5hbWUsIGRlc2NyaXB0aW9uLCBhbmQgdmVyc2lvbiBmcm9tIHRoZSBwYWNrYWdlLmpzb24gZmlsZVxuICAgKlxuICAgKiBAcGFyYW0ge0NvbW1hbmR9IGNvbW1hbmQgVGhlIENvbW1hbmQgb2JqZWN0IHRvIGluaXRpYWxpemVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gVGhlIGJhc2UgcGF0aCB3aGVyZSB0aGUgcGFja2FnZS5qc29uIGZpbGUgaXMgbG9jYXRlZCwgZGVmYXVsdHMgdG8gdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnlcbiAgICogQHJldHVybiB7dm9pZH1cbiAgICovXG4gIHN0YXRpYyBpbml0aWFsaXplKGNvbW1hbmQ6IENvbW1hbmQsIGJhc2VQYXRoOiBzdHJpbmcpIHtcbiAgICBjb25zdCBuYW1lID0gQ0xJVXRpbHMucGFja2FnZU5hbWUoYmFzZVBhdGgpO1xuICAgIGNvbW1hbmRcbiAgICAgIC5uYW1lKG5hbWUpXG4gICAgICAuZGVzY3JpcHRpb24oYFJ1bnMgJHtuYW1lfSByZWxhdGVkIGNvbW1hbmRzYClcbiAgICAgIC52ZXJzaW9uKENMSVV0aWxzLnBhY2thZ2VWZXJzaW9uKGJhc2VQYXRoKSk7XG4gIH1cblxuICAvKipcbiAgICogQGRlc2NyaXB0aW9uIFJldHJpZXZlcyBhbmQgcGFyc2VzIHRoZSBwYWNrYWdlLmpzb24gZmlsZVxuICAgKiBAc3VtbWFyeSBSZWFkcyB0aGUgcGFja2FnZS5qc29uIGZpbGUgZnJvbSB0aGUgc3BlY2lmaWVkIHBhdGggYW5kIHBhcnNlcyBpdCBpbnRvIGEgSmF2YVNjcmlwdCBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoIFRoZSBiYXNlIHBhdGggd2hlcmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlzIGxvY2F0ZWRcbiAgICogQHJldHVybiB7UmVjb3JkPHN0cmluZywgdW5rbm93bj59IFRoZSBwYXJzZWQgcGFja2FnZS5qc29uIGNvbnRlbnQgYXMgYW4gb2JqZWN0XG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRQYWNrYWdlKGJhc2VQYXRoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKGJhc2VQYXRoLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGY4XCIpXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHJlYWQgdmVyc2lvbiBmcm9tICR7YmFzZVBhdGh9OiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXR1cm5zIHRoZSB2ZXJzaW9uIGZyb20gcGFja2FnZS5qc29uXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgdmVyc2lvbiBmaWVsZCBmcm9tIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGhcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoIFRoZSBiYXNlIHBhdGggd2hlcmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlzIGxvY2F0ZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgcGFja2FnZSB2ZXJzaW9uIHN0cmluZ1xuICAgKi9cbiAgc3RhdGljIHBhY2thZ2VWZXJzaW9uKGJhc2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBDTElVdGlscy5nZXRQYWNrYWdlKGJhc2VQYXRoKVtcInZlcnNpb25cIl0gYXMgc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBSZXR1cm5zIHRoZSBuYW1lIGZyb20gcGFja2FnZS5qc29uXG4gICAqIEBzdW1tYXJ5IFJldHJpZXZlcyB0aGUgbmFtZSBmaWVsZCBmcm9tIHRoZSBwYWNrYWdlLmpzb24gZmlsZSBhdCB0aGUgc3BlY2lmaWVkIHBhdGggYW5kIGV4dHJhY3RzIHRoZSBwYWNrYWdlIG5hbWUgd2l0aG91dCB0aGUgc2NvcGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoIFRoZSBiYXNlIHBhdGggd2hlcmUgdGhlIHBhY2thZ2UuanNvbiBmaWxlIGlzIGxvY2F0ZWRcbiAgICogQHJldHVybiB7c3RyaW5nfSBUaGUgcGFja2FnZSBuYW1lIHdpdGhvdXQgdGhlIHNjb3BlIChlLmcuLCBcImNsaVwiIGZyb20gXCJAZGVjYWYtdHMvY2xpXCIpXG4gICAqL1xuICBzdGF0aWMgcGFja2FnZU5hbWUoYmFzZVBhdGg6IHN0cmluZyk6IHN0cmluZyB7XG4gICAgY29uc3QgbmFtZSA9IChDTElVdGlscy5nZXRQYWNrYWdlKGJhc2VQYXRoKVtcIm5hbWVcIl0gYXMgc3RyaW5nKS5zcGxpdChcIi9cIik7XG4gICAgcmV0dXJuIG5hbWVbbmFtZS5sZW5ndGggLSAxXTtcbiAgfVxufVxuIl19
|