@decaf-ts/cli 0.0.2

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/lib/utils.cjs ADDED
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ var __importDefault = (this && this.__importDefault) || function (mod) {
36
+ return (mod && mod.__esModule) ? mod : { "default": mod };
37
+ };
38
+ Object.defineProperty(exports, "__esModule", { value: true });
39
+ exports.CLIUtils = void 0;
40
+ const path_1 = __importDefault(require("path"));
41
+ const fs_1 = __importDefault(require("fs"));
42
+ /**
43
+ * @description util class to retrieve versions and other information
44
+ *
45
+ * @class CLIUtils
46
+ * @static
47
+ */
48
+ class CLIUtils {
49
+ /**
50
+ * @description Dynamically imports a cjs file into a decaf module
51
+ * @param {string} path
52
+ * @static
53
+ */
54
+ static async loadFromFile(path) {
55
+ try {
56
+ return CLIUtils.normalizeImport(Promise.resolve(`${path}`).then(s => __importStar(require(s))));
57
+ }
58
+ catch (e) {
59
+ throw new Error(`Failed to load from ${path}: ${e instanceof Error ? e.message : e}`);
60
+ }
61
+ }
62
+ /**
63
+ * @description allows safe dynamic imports
64
+ * @summary property imports JS files regardless of esm status
65
+ *
66
+ * @typeParam T
67
+ * @param {Promise} importPromise
68
+ * @private
69
+ */
70
+ static async normalizeImport(importPromise) {
71
+ // CommonJS's `module.exports` is wrapped as `default` in ESModule.
72
+ return importPromise.then((m) => (m.default || m));
73
+ }
74
+ /**
75
+ * @description initializes the Cli object
76
+ *
77
+ * @param {Command} command
78
+ * @param {string} [basePath] defaults to the current working directory
79
+ */
80
+ static initialize(command, basePath) {
81
+ const name = CLIUtils.packageName(basePath);
82
+ command
83
+ .name(name)
84
+ .description(`Runs ${name} related commands`)
85
+ .version(CLIUtils.packageVersion(basePath));
86
+ }
87
+ /**
88
+ * @description retrieves and parses the package.json file
89
+ *
90
+ * @param {string} basePath
91
+ * @private
92
+ */
93
+ static getPackage(basePath) {
94
+ try {
95
+ return JSON.parse(fs_1.default.readFileSync(path_1.default.join(basePath, "package.json"), "utf8"));
96
+ }
97
+ catch (e) {
98
+ throw new Error(`Unable to read version from ${basePath}: ${e}`);
99
+ }
100
+ }
101
+ /**
102
+ * @description returns the package version
103
+ * @param {string} [basePath] defaults to current working dir
104
+ */
105
+ static packageVersion(basePath) {
106
+ return CLIUtils.getPackage(basePath)["version"];
107
+ }
108
+ /**
109
+ * @description returns the package name
110
+ * @param {string} [basePath] defaults to current working dir
111
+ */
112
+ static packageName(basePath) {
113
+ return CLIUtils.getPackage(basePath)["name"].split("/")[1];
114
+ }
115
+ }
116
+ exports.CLIUtils = CLIUtils;
117
+
118
+ //# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNyYy91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7QUFBQSxnREFBd0I7QUFDeEIsNENBQW9CO0FBSXBCOzs7OztHQUtHO0FBQ0gsTUFBYSxRQUFRO0lBQ25COzs7O09BSUc7SUFDSCxNQUFNLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBQyxJQUFZO1FBQ3BDLElBQUksQ0FBQztZQUNILE9BQU8sUUFBUSxDQUFDLGVBQWUsb0JBQVEsSUFBSSx3Q0FBRSxDQUFDO1FBQ2hELENBQUM7UUFBQyxPQUFPLENBQVUsRUFBRSxDQUFDO1lBQ3BCLE1BQU0sSUFBSSxLQUFLLENBQ2IsdUJBQXVCLElBQUksS0FBSyxDQUFDLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FDckUsQ0FBQztRQUNKLENBQUM7SUFDSCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNLLE1BQU0sQ0FBQyxLQUFLLENBQUMsZUFBZSxDQUNsQyxhQUF5QjtRQUV6QixtRUFBbUU7UUFDbkUsT0FBTyxhQUFhLENBQUMsSUFBSSxDQUN2QixDQUFDLENBQVUsRUFBRSxFQUFFLENBQUMsQ0FBRSxDQUFvQixDQUFDLE9BQU8sSUFBSSxDQUFDLENBQU0sQ0FDMUQsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILE1BQU0sQ0FBQyxVQUFVLENBQUMsT0FBZ0IsRUFBRSxRQUFnQjtRQUNsRCxNQUFNLElBQUksR0FBRyxRQUFRLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxDQUFDO1FBQzVDLE9BQU87YUFDSixJQUFJLENBQUMsSUFBSSxDQUFDO2FBQ1YsV0FBVyxDQUFDLFFBQVEsSUFBSSxtQkFBbUIsQ0FBQzthQUM1QyxPQUFPLENBQUMsUUFBUSxDQUFDLGNBQWMsQ0FBQyxRQUFRLENBQUMsQ0FBQyxDQUFDO0lBQ2hELENBQUM7SUFFRDs7Ozs7T0FLRztJQUNLLE1BQU0sQ0FBQyxVQUFVLENBQUMsUUFBZ0I7UUFDeEMsSUFBSSxDQUFDO1lBQ0gsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUNmLFlBQUUsQ0FBQyxZQUFZLENBQUMsY0FBSSxDQUFDLElBQUksQ0FBQyxRQUFRLEVBQUUsY0FBYyxDQUFDLEVBQUUsTUFBTSxDQUFDLENBQzdELENBQUM7UUFDSixDQUFDO1FBQUMsT0FBTyxDQUFVLEVBQUUsQ0FBQztZQUNwQixNQUFNLElBQUksS0FBSyxDQUFDLCtCQUErQixRQUFRLEtBQUssQ0FBQyxFQUFFLENBQUMsQ0FBQztRQUNuRSxDQUFDO0lBQ0gsQ0FBQztJQUVEOzs7T0FHRztJQUNILE1BQU0sQ0FBQyxjQUFjLENBQUMsUUFBZ0I7UUFDcEMsT0FBTyxRQUFRLENBQUMsVUFBVSxDQUFDLFFBQVEsQ0FBQyxDQUFDLFNBQVMsQ0FBVyxDQUFDO0lBQzVELENBQUM7SUFFRDs7O09BR0c7SUFDSCxNQUFNLENBQUMsV0FBVyxDQUFDLFFBQWdCO1FBQ2pDLE9BQVEsUUFBUSxDQUFDLFVBQVUsQ0FBQyxRQUFRLENBQUMsQ0FBQyxNQUFNLENBQVksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDekUsQ0FBQztDQUNGO0FBOUVELDRCQThFQyIsImZpbGUiOiJ1dGlscy5qcyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCBwYXRoIGZyb20gXCJwYXRoXCI7XG5pbXBvcnQgZnMgZnJvbSBcImZzXCI7XG5pbXBvcnQgeyBDb21tYW5kIH0gZnJvbSBcImNvbW1hbmRlclwiO1xuaW1wb3J0IHsgQ2xpTW9kdWxlIH0gZnJvbSBcIi4vdHlwZXNcIjtcblxuLyoqXG4gKiBAZGVzY3JpcHRpb24gdXRpbCBjbGFzcyB0byByZXRyaWV2ZSB2ZXJzaW9ucyBhbmQgb3RoZXIgaW5mb3JtYXRpb25cbiAqXG4gKiBAY2xhc3MgQ0xJVXRpbHNcbiAqIEBzdGF0aWNcbiAqL1xuZXhwb3J0IGNsYXNzIENMSVV0aWxzIHtcbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiBEeW5hbWljYWxseSBpbXBvcnRzIGEgY2pzIGZpbGUgaW50byBhIGRlY2FmIG1vZHVsZVxuICAgKiBAcGFyYW0ge3N0cmluZ30gcGF0aFxuICAgKiBAc3RhdGljXG4gICAqL1xuICBzdGF0aWMgYXN5bmMgbG9hZEZyb21GaWxlKHBhdGg6IHN0cmluZyk6IFByb21pc2U8Q2xpTW9kdWxlPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBDTElVdGlscy5ub3JtYWxpemVJbXBvcnQoaW1wb3J0KHBhdGgpKTtcbiAgICB9IGNhdGNoIChlOiB1bmtub3duKSB7XG4gICAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAgIGBGYWlsZWQgdG8gbG9hZCBmcm9tICR7cGF0aH06ICR7ZSBpbnN0YW5jZW9mIEVycm9yID8gZS5tZXNzYWdlIDogZX1gXG4gICAgICApO1xuICAgIH1cbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gYWxsb3dzIHNhZmUgZHluYW1pYyBpbXBvcnRzXG4gICAqIEBzdW1tYXJ5IHByb3BlcnR5IGltcG9ydHMgSlMgZmlsZXMgcmVnYXJkbGVzcyBvZiBlc20gc3RhdHVzXG4gICAqXG4gICAqIEB0eXBlUGFyYW0gVFxuICAgKiBAcGFyYW0ge1Byb21pc2V9IGltcG9ydFByb21pc2VcbiAgICogQHByaXZhdGVcbiAgICovXG4gIHByaXZhdGUgc3RhdGljIGFzeW5jIG5vcm1hbGl6ZUltcG9ydDxUPihcbiAgICBpbXBvcnRQcm9taXNlOiBQcm9taXNlPFQ+XG4gICk6IFByb21pc2U8VD4ge1xuICAgIC8vIENvbW1vbkpTJ3MgYG1vZHVsZS5leHBvcnRzYCBpcyB3cmFwcGVkIGFzIGBkZWZhdWx0YCBpbiBFU01vZHVsZS5cbiAgICByZXR1cm4gaW1wb3J0UHJvbWlzZS50aGVuKFxuICAgICAgKG06IHVua25vd24pID0+ICgobSBhcyB7IGRlZmF1bHQ6IFQgfSkuZGVmYXVsdCB8fCBtKSBhcyBUXG4gICAgKTtcbiAgfVxuXG4gIC8qKlxuICAgKiBAZGVzY3JpcHRpb24gaW5pdGlhbGl6ZXMgdGhlIENsaSBvYmplY3RcbiAgICpcbiAgICogQHBhcmFtIHtDb21tYW5kfSBjb21tYW5kXG4gICAqIEBwYXJhbSB7c3RyaW5nfSBbYmFzZVBhdGhdIGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5XG4gICAqL1xuICBzdGF0aWMgaW5pdGlhbGl6ZShjb21tYW5kOiBDb21tYW5kLCBiYXNlUGF0aDogc3RyaW5nKSB7XG4gICAgY29uc3QgbmFtZSA9IENMSVV0aWxzLnBhY2thZ2VOYW1lKGJhc2VQYXRoKTtcbiAgICBjb21tYW5kXG4gICAgICAubmFtZShuYW1lKVxuICAgICAgLmRlc2NyaXB0aW9uKGBSdW5zICR7bmFtZX0gcmVsYXRlZCBjb21tYW5kc2ApXG4gICAgICAudmVyc2lvbihDTElVdGlscy5wYWNrYWdlVmVyc2lvbihiYXNlUGF0aCkpO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiByZXRyaWV2ZXMgYW5kIHBhcnNlcyB0aGUgcGFja2FnZS5qc29uIGZpbGVcbiAgICpcbiAgICogQHBhcmFtIHtzdHJpbmd9IGJhc2VQYXRoXG4gICAqIEBwcml2YXRlXG4gICAqL1xuICBwcml2YXRlIHN0YXRpYyBnZXRQYWNrYWdlKGJhc2VQYXRoOiBzdHJpbmcpOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB7XG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBKU09OLnBhcnNlKFxuICAgICAgICBmcy5yZWFkRmlsZVN5bmMocGF0aC5qb2luKGJhc2VQYXRoLCBcInBhY2thZ2UuanNvblwiKSwgXCJ1dGY4XCIpXG4gICAgICApO1xuICAgIH0gY2F0Y2ggKGU6IHVua25vd24pIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcihgVW5hYmxlIHRvIHJlYWQgdmVyc2lvbiBmcm9tICR7YmFzZVBhdGh9OiAke2V9YCk7XG4gICAgfVxuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiByZXR1cm5zIHRoZSBwYWNrYWdlIHZlcnNpb25cbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gZGVmYXVsdHMgdG8gY3VycmVudCB3b3JraW5nIGRpclxuICAgKi9cbiAgc3RhdGljIHBhY2thZ2VWZXJzaW9uKGJhc2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiBDTElVdGlscy5nZXRQYWNrYWdlKGJhc2VQYXRoKVtcInZlcnNpb25cIl0gYXMgc3RyaW5nO1xuICB9XG5cbiAgLyoqXG4gICAqIEBkZXNjcmlwdGlvbiByZXR1cm5zIHRoZSBwYWNrYWdlIG5hbWVcbiAgICogQHBhcmFtIHtzdHJpbmd9IFtiYXNlUGF0aF0gZGVmYXVsdHMgdG8gY3VycmVudCB3b3JraW5nIGRpclxuICAgKi9cbiAgc3RhdGljIHBhY2thZ2VOYW1lKGJhc2VQYXRoOiBzdHJpbmcpOiBzdHJpbmcge1xuICAgIHJldHVybiAoQ0xJVXRpbHMuZ2V0UGFja2FnZShiYXNlUGF0aClbXCJuYW1lXCJdIGFzIHN0cmluZykuc3BsaXQoXCIvXCIpWzFdO1xuICB9XG59XG4iXX0=
package/lib/utils.d.ts ADDED
@@ -0,0 +1,49 @@
1
+ import { Command } from "commander";
2
+ import { CliModule } from "./types";
3
+ /**
4
+ * @description util class to retrieve versions and other information
5
+ *
6
+ * @class CLIUtils
7
+ * @static
8
+ */
9
+ export declare class CLIUtils {
10
+ /**
11
+ * @description Dynamically imports a cjs file into a decaf module
12
+ * @param {string} path
13
+ * @static
14
+ */
15
+ static loadFromFile(path: string): Promise<CliModule>;
16
+ /**
17
+ * @description allows safe dynamic imports
18
+ * @summary property imports JS files regardless of esm status
19
+ *
20
+ * @typeParam T
21
+ * @param {Promise} importPromise
22
+ * @private
23
+ */
24
+ private static normalizeImport;
25
+ /**
26
+ * @description initializes the Cli object
27
+ *
28
+ * @param {Command} command
29
+ * @param {string} [basePath] defaults to the current working directory
30
+ */
31
+ static initialize(command: Command, basePath: string): void;
32
+ /**
33
+ * @description retrieves and parses the package.json file
34
+ *
35
+ * @param {string} basePath
36
+ * @private
37
+ */
38
+ private static getPackage;
39
+ /**
40
+ * @description returns the package version
41
+ * @param {string} [basePath] defaults to current working dir
42
+ */
43
+ static packageVersion(basePath: string): string;
44
+ /**
45
+ * @description returns the package name
46
+ * @param {string} [basePath] defaults to current working dir
47
+ */
48
+ static packageName(basePath: string): string;
49
+ }
package/package.json ADDED
@@ -0,0 +1,109 @@
1
+ {
2
+ "name": "@decaf-ts/cli",
3
+ "version": "0.0.2",
4
+ "description": "cli for decaf-ts projects",
5
+ "type": "module",
6
+ "exports": {
7
+ "require": "./lib/index.cjs",
8
+ "import": "./lib/esm/index.js"
9
+ },
10
+ "types": "lib/index.d.ts",
11
+ "bin": "lib/cli.cjs",
12
+ "scripts": {
13
+ "do-install": "TOKEN=$(cat .token) npm install",
14
+ "flash-forward": "npx npm-check-updates -u && npm run do-install",
15
+ "reset": "rm -rf * && git checkout . && git pull && npm run do-install",
16
+ "build": "rimraf ./lib && rimraf ./dist && gulp dev",
17
+ "build:prod": "rimraf ./lib && rimraf ./dist && gulp prod",
18
+ "test": "jest --coverage --testPathPattern=\"/tests/unit\" --passWithNoTests --detectOpenHandles",
19
+ "test:integration": "jest --coverage --testPathPattern=\"/tests/(integration)\" --passWithNoTests --detectOpenHandles",
20
+ "test:all": "jest --coverage --testPathPattern=\"/tests/(unit|integration)\" --passWithNoTests",
21
+ "lint": "eslint .",
22
+ "lint-fix": "eslint --fix .",
23
+ "test:circular": "dpdm -T --no-warning --no-tree ./src/index.ts",
24
+ "prepare-release": "npm run lint-fix && npm run build:prod && npm run coverage && npm run docs",
25
+ "release": "./bin/tag-release.sh",
26
+ "clean-publish": "npx clean-publish",
27
+ "coverage": "npm run test:all && cd workdocs && jest-coverage-badges",
28
+ "drawings": "for FILE in workdocs/drawings/*.drawio; do echo \"converting $FILE to image...\" && docker run --rm -v $(pwd):/data rlespinasse/drawio-export --format png $FILE; done && cp -rf workdocs/drawings/export/* workdocs/resources/",
29
+ "uml": "cd workdocs/uml && for FILE in ./*.puml; do docker run --rm -v $(pwd):/work -w /work miy4/plantuml -DPLANTUML_LIMIT_SIZE=8192 -tpng $FILE; done && cd ../.. && cp -fr workdocs/uml/*.png workdocs/resources/",
30
+ "docs": "npx rimraf ./docs && mkdir docs && npm run do-install -- better-docs taffydb && gulp docs; npm remove better-docs taffydb"
31
+ },
32
+ "repository": {
33
+ "type": "git",
34
+ "url": "git+https://github.com/decaf-ts/ts-workspace.git"
35
+ },
36
+ "engines": {
37
+ "node": ">=20.0.0",
38
+ "npm": ">=10.0.0"
39
+ },
40
+ "files": [
41
+ "lib",
42
+ "dist"
43
+ ],
44
+ "keywords": [
45
+ "plantuml",
46
+ "mermaid",
47
+ "uml",
48
+ "drawio",
49
+ "mddocs",
50
+ "md",
51
+ "jsdoc",
52
+ "doc",
53
+ "docs",
54
+ "documentation",
55
+ "ci/cd",
56
+ "ci",
57
+ "cd",
58
+ "template",
59
+ "typescript",
60
+ "ts"
61
+ ],
62
+ "author": "Tiago Venceslau",
63
+ "license": "MIT",
64
+ "bugs": {
65
+ "url": "https://github.com/decaf-ts/ts-workspace/issues"
66
+ },
67
+ "homepage": "https://github.com/decaf-ts/ts-workspace#readme",
68
+ "devDependencies": {
69
+ "@eslint/js": "^9.19.0",
70
+ "@stylistic/eslint-plugin": "^3.0.1",
71
+ "@types/jest": "^29.5.14",
72
+ "clean-publish": "^5.1.0",
73
+ "dpdm": "^3.14.0",
74
+ "eslint": "^9.19.0",
75
+ "eslint-config-prettier": "^10.0.1",
76
+ "eslint-plugin-prettier": "^5.2.3",
77
+ "globals": "^15.14.0",
78
+ "gulp": "^5.0.0",
79
+ "gulp-if": "^3.0.0",
80
+ "gulp-rename": "^2.0.0",
81
+ "gulp-replace": "^1.1.4",
82
+ "gulp-run-command": "^0.0.10",
83
+ "gulp-sourcemaps": "^2.6.5",
84
+ "gulp-typescript": "^6.0.0-alpha.1",
85
+ "gulp-uglify": "^3.0.2",
86
+ "jest": "^29.7.0",
87
+ "jest-coverage-badges": "^1.0.0",
88
+ "jest-junit": "^16.0.0",
89
+ "jsdoc": "^4.0.4",
90
+ "jsdoc-mermaid": "^1.0.0",
91
+ "markdown-include": "^0.4.3",
92
+ "merge-stream": "^2.0.0",
93
+ "minimist": "^1.2.8",
94
+ "nodemon": "^3.1.9",
95
+ "npm-check-updates": "^17.1.14",
96
+ "prettier": "3.4.2",
97
+ "rimraf": "^6.0.1",
98
+ "ts-jest": "^29.2.5",
99
+ "ts-loader": "^9.5.2",
100
+ "ts-node": "^10.9.2",
101
+ "typescript": "^5.7.3",
102
+ "typescript-eslint": "^8.22.0",
103
+ "vinyl-named": "^1.1.0",
104
+ "webpack-stream": "^7.0.0"
105
+ },
106
+ "dependencies": {
107
+ "commander": "^13.1.0"
108
+ }
109
+ }