nestjs-ddd-cli 2.1.0 → 2.2.1
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/README.md +47 -0
- package/dist/commands/generate-all.js +6 -0
- package/dist/commands/generate-all.js.map +1 -1
- package/dist/commands/generate-module.js +6 -0
- package/dist/commands/generate-module.js.map +1 -1
- package/dist/commands/init-project.d.ts +7 -0
- package/dist/commands/init-project.js +99 -0
- package/dist/commands/init-project.js.map +1 -0
- package/dist/commands/update-cli.d.ts +4 -0
- package/dist/commands/update-cli.js +27 -0
- package/dist/commands/update-cli.js.map +1 -0
- package/dist/commands/update-deps.d.ts +5 -0
- package/dist/commands/update-deps.js +61 -0
- package/dist/commands/update-deps.js.map +1 -0
- package/dist/index.js +66 -1
- package/dist/index.js.map +1 -1
- package/dist/utils/dependency.utils.d.ts +56 -0
- package/dist/utils/dependency.utils.js +228 -0
- package/dist/utils/dependency.utils.js.map +1 -0
- package/dist/utils/naming.utils.js +4 -0
- package/dist/utils/naming.utils.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -6,6 +6,11 @@ Stop writing boilerplate. Start building business logic.
|
|
|
6
6
|
|
|
7
7
|
Generate production-ready NestJS code following proven DDD/CQRS patterns with consistent structure and immutable architecture principles.
|
|
8
8
|
|
|
9
|
+
✨ **New Features**:
|
|
10
|
+
- Initialize new NestJS projects with DDD structure
|
|
11
|
+
- Self-update functionality to keep the CLI up to date
|
|
12
|
+
- Dependency management to check and update project dependencies
|
|
13
|
+
|
|
9
14
|
## Installation
|
|
10
15
|
|
|
11
16
|
**From NPM (Recommended):**
|
|
@@ -24,6 +29,43 @@ npm link
|
|
|
24
29
|
|
|
25
30
|
## Usage
|
|
26
31
|
|
|
32
|
+
### Initialize a New NestJS Project
|
|
33
|
+
|
|
34
|
+
Create a new NestJS project with DDD structure:
|
|
35
|
+
|
|
36
|
+
```bash
|
|
37
|
+
ddd init my-project
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
Options:
|
|
41
|
+
- `-p, --path <path>` - Path where the project will be created
|
|
42
|
+
- `--skip-install` - Skip dependency installation
|
|
43
|
+
- `--skip-update` - Skip CLI update check
|
|
44
|
+
- `--with-ddd` - Set up DDD folder structure and install required dependencies (default: true)
|
|
45
|
+
|
|
46
|
+
### Update the CLI
|
|
47
|
+
|
|
48
|
+
Update the CLI to the latest version:
|
|
49
|
+
|
|
50
|
+
```bash
|
|
51
|
+
ddd update
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Options:
|
|
55
|
+
- `-f, --force` - Force update even if already on latest version
|
|
56
|
+
|
|
57
|
+
### Update Project Dependencies
|
|
58
|
+
|
|
59
|
+
Check and update project dependencies:
|
|
60
|
+
|
|
61
|
+
```bash
|
|
62
|
+
ddd update-deps
|
|
63
|
+
```
|
|
64
|
+
|
|
65
|
+
Options:
|
|
66
|
+
- `-p, --path <path>` - Path to the project (default: current directory)
|
|
67
|
+
- `-a, --all` - Update all outdated dependencies without prompting
|
|
68
|
+
|
|
27
69
|
### Generate Complete Scaffolding
|
|
28
70
|
|
|
29
71
|
Generate all files for a new entity (entity, repository, mapper, use cases, controller, etc.):
|
|
@@ -32,6 +74,11 @@ Generate all files for a new entity (entity, repository, mapper, use cases, cont
|
|
|
32
74
|
ddd scaffold Product -m inventory
|
|
33
75
|
```
|
|
34
76
|
|
|
77
|
+
Options:
|
|
78
|
+
- `-m, --module <module>` - Module name (will be created if not exists)
|
|
79
|
+
- `-p, --path <path>` - Base path for generation
|
|
80
|
+
- `--install-deps` - Install required dependencies
|
|
81
|
+
|
|
35
82
|
### Generate Individual Components
|
|
36
83
|
|
|
37
84
|
```bash
|
|
@@ -44,8 +44,14 @@ const generate_entity_1 = require("./generate-entity");
|
|
|
44
44
|
const generate_usecase_1 = require("./generate-usecase");
|
|
45
45
|
const file_utils_1 = require("../utils/file.utils");
|
|
46
46
|
const naming_utils_1 = require("../utils/naming.utils");
|
|
47
|
+
const dependency_utils_1 = require("../utils/dependency.utils");
|
|
47
48
|
async function generateAll(entityName, options) {
|
|
48
49
|
console.log(chalk_1.default.blue(`🚀 Generating complete scaffolding for: ${entityName}`));
|
|
50
|
+
// Check if we need to install dependencies
|
|
51
|
+
const requiredDeps = ['@nestjs/cqrs', 'class-validator', 'class-transformer'];
|
|
52
|
+
if (options.installDeps) {
|
|
53
|
+
await (0, dependency_utils_1.installDependencies)(options.path || process.cwd(), requiredDeps);
|
|
54
|
+
}
|
|
49
55
|
const moduleName = options.module || entityName;
|
|
50
56
|
const basePath = options.path || process.cwd();
|
|
51
57
|
const modulePath = (0, file_utils_1.getModulePath)(basePath, moduleName);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-all.js","sourceRoot":"","sources":["../../src/commands/generate-all.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generate-all.js","sourceRoot":"","sources":["../../src/commands/generate-all.ts"],"names":[],"mappings":"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"}
|
|
@@ -41,8 +41,14 @@ const path = __importStar(require("path"));
|
|
|
41
41
|
const chalk_1 = __importDefault(require("chalk"));
|
|
42
42
|
const file_utils_1 = require("../utils/file.utils");
|
|
43
43
|
const naming_utils_1 = require("../utils/naming.utils");
|
|
44
|
+
const dependency_utils_1 = require("../utils/dependency.utils");
|
|
44
45
|
async function generateModule(moduleName, options) {
|
|
45
46
|
console.log(chalk_1.default.blue(`Generating module: ${moduleName}`));
|
|
47
|
+
// Check if we need to install dependencies
|
|
48
|
+
const requiredDeps = ['@nestjs/cqrs'];
|
|
49
|
+
if (options.installDeps) {
|
|
50
|
+
await (0, dependency_utils_1.installDependencies)(options.path || process.cwd(), requiredDeps);
|
|
51
|
+
}
|
|
46
52
|
const basePath = options.path || process.cwd();
|
|
47
53
|
const modulePath = (0, file_utils_1.getModulePath)(basePath, moduleName);
|
|
48
54
|
// Create module directory structure
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate-module.js","sourceRoot":"","sources":["../../src/commands/generate-module.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"generate-module.js","sourceRoot":"","sources":["../../src/commands/generate-module.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
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.initProject = initProject;
|
|
40
|
+
const path = __importStar(require("path"));
|
|
41
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const dependency_utils_1 = require("../utils/dependency.utils");
|
|
44
|
+
async function initProject(projectName, options) {
|
|
45
|
+
try {
|
|
46
|
+
// First, check for CLI updates if not skipped
|
|
47
|
+
if (!options.skipUpdate) {
|
|
48
|
+
const { needsUpdate, latestVersion, currentVersion } = await (0, dependency_utils_1.checkForCliUpdate)();
|
|
49
|
+
if (needsUpdate) {
|
|
50
|
+
console.log(chalk_1.default.yellow(`You are using nestjs-ddd-cli version ${currentVersion}, but version ${latestVersion} is available.`));
|
|
51
|
+
const { shouldUpdate } = await inquirer_1.default.prompt([
|
|
52
|
+
{
|
|
53
|
+
type: 'confirm',
|
|
54
|
+
name: 'shouldUpdate',
|
|
55
|
+
message: 'Would you like to update the CLI before continuing?',
|
|
56
|
+
default: true,
|
|
57
|
+
},
|
|
58
|
+
]);
|
|
59
|
+
if (shouldUpdate) {
|
|
60
|
+
await (0, dependency_utils_1.updatePackageGlobally)('nestjs-ddd-cli');
|
|
61
|
+
console.log(chalk_1.default.green('CLI updated successfully! Please run your command again.'));
|
|
62
|
+
process.exit(0);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
// Determine the project directory
|
|
67
|
+
const projectDir = options.path ? path.resolve(options.path, projectName) : path.resolve(process.cwd(), projectName);
|
|
68
|
+
// Create a new NestJS project
|
|
69
|
+
await (0, dependency_utils_1.createNestJSProject)(projectName, {
|
|
70
|
+
directory: options.path,
|
|
71
|
+
skipInstall: options.skipInstall,
|
|
72
|
+
});
|
|
73
|
+
// If withDdd option is enabled, install DDD-related dependencies
|
|
74
|
+
if (options.withDdd) {
|
|
75
|
+
const dependencies = ['@nestjs/cqrs', 'class-validator', 'class-transformer'];
|
|
76
|
+
await (0, dependency_utils_1.installDependencies)(projectDir, dependencies);
|
|
77
|
+
// Create DDD folder structure
|
|
78
|
+
console.log(chalk_1.default.blue('Setting up DDD folder structure...'));
|
|
79
|
+
// We'll use the generate-module command to create the initial module structure
|
|
80
|
+
// This will be implemented in the main CLI entry point
|
|
81
|
+
console.log(chalk_1.default.green('✅ DDD folder structure set up successfully!'));
|
|
82
|
+
}
|
|
83
|
+
console.log(chalk_1.default.green(`\n✅ Project ${projectName} initialized successfully!`));
|
|
84
|
+
console.log(chalk_1.default.blue(`\nNext steps:`));
|
|
85
|
+
console.log(chalk_1.default.blue(` 1. cd ${projectName}`));
|
|
86
|
+
console.log(chalk_1.default.blue(` 2. npm run start:dev`));
|
|
87
|
+
if (options.withDdd) {
|
|
88
|
+
console.log(chalk_1.default.blue(`\nTo generate DDD components, use:`));
|
|
89
|
+
console.log(chalk_1.default.blue(` ddd generate module <module-name>`));
|
|
90
|
+
console.log(chalk_1.default.blue(` ddd generate entity <entity-name> --module <module-name>`));
|
|
91
|
+
console.log(chalk_1.default.blue(` ddd generate usecase <usecase-name> --module <module-name>`));
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
console.error(chalk_1.default.red('Error:'), error.message);
|
|
96
|
+
process.exit(1);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
//# sourceMappingURL=init-project.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init-project.js","sourceRoot":"","sources":["../../src/commands/init-project.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateCli = updateCli;
|
|
7
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
8
|
+
const dependency_utils_1 = require("../utils/dependency.utils");
|
|
9
|
+
async function updateCli(options = {}) {
|
|
10
|
+
try {
|
|
11
|
+
console.log(chalk_1.default.blue('Checking for CLI updates...'));
|
|
12
|
+
const { needsUpdate, latestVersion, currentVersion } = await (0, dependency_utils_1.checkForCliUpdate)();
|
|
13
|
+
if (needsUpdate || options.force) {
|
|
14
|
+
console.log(chalk_1.default.yellow(`You are using nestjs-ddd-cli version ${currentVersion}, updating to version ${latestVersion}...`));
|
|
15
|
+
await (0, dependency_utils_1.updatePackageGlobally)('nestjs-ddd-cli');
|
|
16
|
+
console.log(chalk_1.default.green('✅ CLI updated successfully!'));
|
|
17
|
+
}
|
|
18
|
+
else {
|
|
19
|
+
console.log(chalk_1.default.green(`✅ You are already using the latest version (${currentVersion})!`));
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.error(chalk_1.default.red('Error:'), error.message);
|
|
24
|
+
process.exit(1);
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=update-cli.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-cli.js","sourceRoot":"","sources":["../../src/commands/update-cli.ts"],"names":[],"mappings":";;;;;AAUA,8BAsBC;AAhCD,kDAA0B;AAC1B,gEAGmC;AAM5B,KAAK,UAAU,SAAS,CAAC,UAA4B,EAAE;IAC5D,IAAI,CAAC;QACH,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAEvD,MAAM,EAAE,WAAW,EAAE,aAAa,EAAE,cAAc,EAAE,GAAG,MAAM,IAAA,oCAAiB,GAAE,CAAC;QAEjF,IAAI,WAAW,IAAI,OAAO,CAAC,KAAK,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CACV,wCAAwC,cAAc,yBAAyB,aAAa,KAAK,CAClG,CACF,CAAC;YAEF,MAAM,IAAA,wCAAqB,EAAC,gBAAgB,CAAC,CAAC;YAC9C,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,+CAA+C,cAAc,IAAI,CAAC,CAAC,CAAC;QAC9F,CAAC;IACH,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.updateDeps = updateDeps;
|
|
7
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const dependency_utils_1 = require("../utils/dependency.utils");
|
|
10
|
+
async function updateDeps(options = {}) {
|
|
11
|
+
try {
|
|
12
|
+
const projectPath = options.path || process.cwd();
|
|
13
|
+
console.log(chalk_1.default.blue('Checking for outdated dependencies...'));
|
|
14
|
+
const outdatedDeps = await (0, dependency_utils_1.checkOutdatedDependencies)(projectPath);
|
|
15
|
+
const outdatedPackages = Object.keys(outdatedDeps);
|
|
16
|
+
if (outdatedPackages.length === 0) {
|
|
17
|
+
console.log(chalk_1.default.green('✅ All dependencies are up to date!'));
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
console.log(chalk_1.default.yellow(`Found ${outdatedPackages.length} outdated dependencies:`));
|
|
21
|
+
for (const pkg of outdatedPackages) {
|
|
22
|
+
const info = outdatedDeps[pkg];
|
|
23
|
+
if (info) {
|
|
24
|
+
const { current, latest, type } = info;
|
|
25
|
+
console.log(chalk_1.default.yellow(` ${pkg}: ${current} → ${latest} (${type})`));
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
let packagesToUpdate = [];
|
|
29
|
+
if (options.all) {
|
|
30
|
+
packagesToUpdate = outdatedPackages;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
const { selectedPackages } = await inquirer_1.default.prompt([
|
|
34
|
+
{
|
|
35
|
+
type: 'checkbox',
|
|
36
|
+
name: 'selectedPackages',
|
|
37
|
+
message: 'Select packages to update:',
|
|
38
|
+
choices: outdatedPackages.map(pkg => {
|
|
39
|
+
const info = outdatedDeps[pkg];
|
|
40
|
+
return {
|
|
41
|
+
name: info ? `${pkg}: ${info.current} → ${info.latest}` : pkg,
|
|
42
|
+
value: pkg,
|
|
43
|
+
checked: true,
|
|
44
|
+
};
|
|
45
|
+
}),
|
|
46
|
+
},
|
|
47
|
+
]);
|
|
48
|
+
packagesToUpdate = selectedPackages;
|
|
49
|
+
}
|
|
50
|
+
if (packagesToUpdate.length === 0) {
|
|
51
|
+
console.log(chalk_1.default.yellow('No packages selected for update.'));
|
|
52
|
+
return;
|
|
53
|
+
}
|
|
54
|
+
await (0, dependency_utils_1.updateDependencies)(projectPath, packagesToUpdate);
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
console.error(chalk_1.default.red('Error:'), error.message);
|
|
58
|
+
process.exit(1);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=update-deps.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update-deps.js","sourceRoot":"","sources":["../../src/commands/update-deps.ts"],"names":[],"mappings":";;;;;AAaA,gCA+DC;AA3ED,wDAAgC;AAChC,kDAA0B;AAC1B,gEAGmC;AAO5B,KAAK,UAAU,UAAU,CAAC,UAA6B,EAAE;IAC9D,IAAI,CAAC;QACH,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAElD,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,IAAI,CAAC,uCAAuC,CAAC,CAAC,CAAC;QAEjE,MAAM,YAAY,GAAG,MAAM,IAAA,4CAAyB,EAAC,WAAW,CAAC,CAAC;QAClE,MAAM,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;QAEnD,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,KAAK,CAAC,oCAAoC,CAAC,CAAC,CAAC;YAC/D,OAAO;QACT,CAAC;QAED,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,SAAS,gBAAgB,CAAC,MAAM,yBAAyB,CAAC,CAAC,CAAC;QAErF,KAAK,MAAM,GAAG,IAAI,gBAAgB,EAAE,CAAC;YACnC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;YAC/B,IAAI,IAAI,EAAE,CAAC;gBACT,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,GAAG,IAAI,CAAC;gBACvC,OAAO,CAAC,GAAG,CACT,eAAK,CAAC,MAAM,CAAC,KAAK,GAAG,KAAK,OAAO,MAAM,MAAM,KAAK,IAAI,GAAG,CAAC,CAC3D,CAAC;YACJ,CAAC;QACH,CAAC;QAED,IAAI,gBAAgB,GAAa,EAAE,CAAC;QAEpC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;YAChB,gBAAgB,GAAG,gBAAgB,CAAC;QACtC,CAAC;aAAM,CAAC;YACN,MAAM,EAAE,gBAAgB,EAAE,GAAG,MAAM,kBAAQ,CAAC,MAAM,CAChD;gBACE;oBACE,IAAI,EAAE,UAAU;oBAChB,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,4BAA4B;oBACrC,OAAO,EAAE,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;wBAClC,MAAM,IAAI,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;wBAC/B,OAAO;4BACL,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,GAAG,GAAG,KAAK,IAAI,CAAC,OAAO,MAAM,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,GAAG;4BAC7D,KAAK,EAAE,GAAG;4BACV,OAAO,EAAE,IAAI;yBACd,CAAC;oBACJ,CAAC,CAAC;iBACH;aACF,CACF,CAAC;YAEF,gBAAgB,GAAG,gBAAgB,CAAC;QACtC,CAAC;QAED,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,CAAC,GAAG,CAAC,eAAK,CAAC,MAAM,CAAC,kCAAkC,CAAC,CAAC,CAAC;YAC9D,OAAO;QACT,CAAC;QAED,MAAM,IAAA,qCAAkB,EAAC,WAAW,EAAE,gBAAgB,CAAC,CAAC;IAE1D,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,eAAK,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAG,KAAe,CAAC,OAAO,CAAC,CAAC;QAC7D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;AACH,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -13,11 +13,28 @@ const generate_service_1 = require("./commands/generate-service");
|
|
|
13
13
|
const generate_event_1 = require("./commands/generate-event");
|
|
14
14
|
const generate_query_1 = require("./commands/generate-query");
|
|
15
15
|
const generate_all_1 = require("./commands/generate-all");
|
|
16
|
+
const init_project_1 = require("./commands/init-project");
|
|
17
|
+
const update_cli_1 = require("./commands/update-cli");
|
|
18
|
+
const update_deps_1 = require("./commands/update-deps");
|
|
19
|
+
const dependency_utils_1 = require("./utils/dependency.utils");
|
|
16
20
|
const program = new commander_1.Command();
|
|
17
21
|
program
|
|
18
22
|
.name('ddd')
|
|
19
23
|
.description('CLI for generating NestJS DDD boilerplate code')
|
|
20
|
-
.version(
|
|
24
|
+
.version((0, dependency_utils_1.getCurrentPackageVersion)());
|
|
25
|
+
// Check for updates on every run
|
|
26
|
+
(async () => {
|
|
27
|
+
try {
|
|
28
|
+
const { needsUpdate, latestVersion, currentVersion } = await (0, dependency_utils_1.checkForCliUpdate)();
|
|
29
|
+
if (needsUpdate) {
|
|
30
|
+
console.log(chalk_1.default.yellow(`You are using nestjs-ddd-cli version ${currentVersion}, but version ${latestVersion} is available.`));
|
|
31
|
+
console.log(chalk_1.default.yellow(`Run 'ddd update' to update to the latest version.`));
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
catch (error) {
|
|
35
|
+
// Silently ignore update check errors
|
|
36
|
+
}
|
|
37
|
+
})();
|
|
21
38
|
program
|
|
22
39
|
.command('generate <type> <name>')
|
|
23
40
|
.alias('g')
|
|
@@ -29,6 +46,7 @@ program
|
|
|
29
46
|
.option('--skip-repo', 'Skip repository generation')
|
|
30
47
|
.option('--with-events', 'Include domain events')
|
|
31
48
|
.option('--with-queries', 'Include query handlers')
|
|
49
|
+
.option('--install-deps', 'Install required dependencies', false)
|
|
32
50
|
.action(async (type, name, options) => {
|
|
33
51
|
try {
|
|
34
52
|
switch (type.toLowerCase()) {
|
|
@@ -71,6 +89,7 @@ program
|
|
|
71
89
|
.description('Generate complete CRUD scaffolding for an entity')
|
|
72
90
|
.option('-m, --module <module>', 'Module name (will be created if not exists)')
|
|
73
91
|
.option('-p, --path <path>', 'Base path for generation', process.cwd())
|
|
92
|
+
.option('--install-deps', 'Install required dependencies', false)
|
|
74
93
|
.action(async (entityName, options) => {
|
|
75
94
|
try {
|
|
76
95
|
await (0, generate_all_1.generateAll)(entityName, { ...options, complete: true });
|
|
@@ -80,5 +99,51 @@ program
|
|
|
80
99
|
process.exit(1);
|
|
81
100
|
}
|
|
82
101
|
});
|
|
102
|
+
// Initialize a new NestJS project with DDD structure
|
|
103
|
+
program
|
|
104
|
+
.command('init <projectName>')
|
|
105
|
+
.description('Initialize a new NestJS project with DDD structure')
|
|
106
|
+
.option('-p, --path <path>', 'Path where the project will be created')
|
|
107
|
+
.option('--skip-install', 'Skip dependency installation')
|
|
108
|
+
.option('--skip-update', 'Skip CLI update check')
|
|
109
|
+
.option('--with-ddd', 'Set up DDD folder structure and install required dependencies', true)
|
|
110
|
+
.action(async (projectName, options) => {
|
|
111
|
+
try {
|
|
112
|
+
await (0, init_project_1.initProject)(projectName, options);
|
|
113
|
+
}
|
|
114
|
+
catch (error) {
|
|
115
|
+
console.error(chalk_1.default.red('Error:'), error.message);
|
|
116
|
+
process.exit(1);
|
|
117
|
+
}
|
|
118
|
+
});
|
|
119
|
+
// Update the CLI to the latest version
|
|
120
|
+
program
|
|
121
|
+
.command('update')
|
|
122
|
+
.description('Update the CLI to the latest version')
|
|
123
|
+
.option('-f, --force', 'Force update even if already on latest version')
|
|
124
|
+
.action(async (options) => {
|
|
125
|
+
try {
|
|
126
|
+
await (0, update_cli_1.updateCli)(options);
|
|
127
|
+
}
|
|
128
|
+
catch (error) {
|
|
129
|
+
console.error(chalk_1.default.red('Error:'), error.message);
|
|
130
|
+
process.exit(1);
|
|
131
|
+
}
|
|
132
|
+
});
|
|
133
|
+
// Update project dependencies
|
|
134
|
+
program
|
|
135
|
+
.command('update-deps')
|
|
136
|
+
.description('Check and update project dependencies')
|
|
137
|
+
.option('-p, --path <path>', 'Path to the project', process.cwd())
|
|
138
|
+
.option('-a, --all', 'Update all outdated dependencies without prompting')
|
|
139
|
+
.action(async (options) => {
|
|
140
|
+
try {
|
|
141
|
+
await (0, update_deps_1.updateDeps)(options);
|
|
142
|
+
}
|
|
143
|
+
catch (error) {
|
|
144
|
+
console.error(chalk_1.default.red('Error:'), error.message);
|
|
145
|
+
process.exit(1);
|
|
146
|
+
}
|
|
147
|
+
});
|
|
83
148
|
program.parse();
|
|
84
149
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;AAEA,yCAAoC;AACpC,kDAA0B;AAC1B,gEAA4D;AAC5D,gEAA4D;AAC5D,kEAA8D;AAC9D,kEAA8D;AAC9D,8DAA0D;AAC1D,8DAA0D;AAC1D,0DAAsD;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Check if a package is installed globally
|
|
3
|
+
*/
|
|
4
|
+
export declare function isPackageInstalledGlobally(packageName: string): Promise<boolean>;
|
|
5
|
+
/**
|
|
6
|
+
* Get the latest version of a package from npm
|
|
7
|
+
*/
|
|
8
|
+
export declare function getLatestVersion(packageName: string): Promise<string>;
|
|
9
|
+
/**
|
|
10
|
+
* Check if the current version is the latest version
|
|
11
|
+
*/
|
|
12
|
+
export declare function isLatestVersion(packageName: string, currentVersion: string): Promise<boolean>;
|
|
13
|
+
/**
|
|
14
|
+
* Update a package globally
|
|
15
|
+
*/
|
|
16
|
+
export declare function updatePackageGlobally(packageName: string): Promise<void>;
|
|
17
|
+
/**
|
|
18
|
+
* Check if NestJS CLI is installed
|
|
19
|
+
*/
|
|
20
|
+
export declare function isNestJSCliInstalled(): Promise<boolean>;
|
|
21
|
+
/**
|
|
22
|
+
* Install NestJS CLI globally
|
|
23
|
+
*/
|
|
24
|
+
export declare function installNestJSCli(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Create a new NestJS project
|
|
27
|
+
*/
|
|
28
|
+
export declare function createNestJSProject(projectName: string, options?: any): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Install dependencies in a project
|
|
31
|
+
*/
|
|
32
|
+
export declare function installDependencies(projectPath: string, dependencies: string[], dev?: boolean): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Check for outdated dependencies in a project
|
|
35
|
+
*/
|
|
36
|
+
export declare function checkOutdatedDependencies(projectPath: string): Promise<Record<string, {
|
|
37
|
+
current: string;
|
|
38
|
+
latest: string;
|
|
39
|
+
type: string;
|
|
40
|
+
}>>;
|
|
41
|
+
/**
|
|
42
|
+
* Update dependencies in a project
|
|
43
|
+
*/
|
|
44
|
+
export declare function updateDependencies(projectPath: string, dependencies: string[]): Promise<void>;
|
|
45
|
+
/**
|
|
46
|
+
* Get the current package version from package.json
|
|
47
|
+
*/
|
|
48
|
+
export declare function getCurrentPackageVersion(): string;
|
|
49
|
+
/**
|
|
50
|
+
* Check if the CLI needs to be updated
|
|
51
|
+
*/
|
|
52
|
+
export declare function checkForCliUpdate(): Promise<{
|
|
53
|
+
needsUpdate: boolean;
|
|
54
|
+
latestVersion: string;
|
|
55
|
+
currentVersion: string;
|
|
56
|
+
}>;
|
|
@@ -0,0 +1,228 @@
|
|
|
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.isPackageInstalledGlobally = isPackageInstalledGlobally;
|
|
40
|
+
exports.getLatestVersion = getLatestVersion;
|
|
41
|
+
exports.isLatestVersion = isLatestVersion;
|
|
42
|
+
exports.updatePackageGlobally = updatePackageGlobally;
|
|
43
|
+
exports.isNestJSCliInstalled = isNestJSCliInstalled;
|
|
44
|
+
exports.installNestJSCli = installNestJSCli;
|
|
45
|
+
exports.createNestJSProject = createNestJSProject;
|
|
46
|
+
exports.installDependencies = installDependencies;
|
|
47
|
+
exports.checkOutdatedDependencies = checkOutdatedDependencies;
|
|
48
|
+
exports.updateDependencies = updateDependencies;
|
|
49
|
+
exports.getCurrentPackageVersion = getCurrentPackageVersion;
|
|
50
|
+
exports.checkForCliUpdate = checkForCliUpdate;
|
|
51
|
+
const child_process_1 = require("child_process");
|
|
52
|
+
const util_1 = require("util");
|
|
53
|
+
const fs = __importStar(require("fs-extra"));
|
|
54
|
+
const path = __importStar(require("path"));
|
|
55
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
56
|
+
const execAsync = (0, util_1.promisify)(child_process_1.exec);
|
|
57
|
+
/**
|
|
58
|
+
* Check if a package is installed globally
|
|
59
|
+
*/
|
|
60
|
+
async function isPackageInstalledGlobally(packageName) {
|
|
61
|
+
try {
|
|
62
|
+
await execAsync(`npm list -g ${packageName} --depth=0`);
|
|
63
|
+
return true;
|
|
64
|
+
}
|
|
65
|
+
catch (error) {
|
|
66
|
+
return false;
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Get the latest version of a package from npm
|
|
71
|
+
*/
|
|
72
|
+
async function getLatestVersion(packageName) {
|
|
73
|
+
try {
|
|
74
|
+
const { stdout } = await execAsync(`npm view ${packageName} version`);
|
|
75
|
+
return stdout.trim();
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
throw new Error(`Failed to get latest version of ${packageName}: ${error.message}`);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Check if the current version is the latest version
|
|
83
|
+
*/
|
|
84
|
+
async function isLatestVersion(packageName, currentVersion) {
|
|
85
|
+
try {
|
|
86
|
+
const latestVersion = await getLatestVersion(packageName);
|
|
87
|
+
return currentVersion === latestVersion;
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
console.warn(chalk_1.default.yellow(`Warning: Could not check for updates: ${error.message}`));
|
|
91
|
+
return true; // Assume it's the latest version if we can't check
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Update a package globally
|
|
96
|
+
*/
|
|
97
|
+
async function updatePackageGlobally(packageName) {
|
|
98
|
+
try {
|
|
99
|
+
console.log(chalk_1.default.blue(`Updating ${packageName} globally...`));
|
|
100
|
+
await execAsync(`npm install -g ${packageName}@latest`);
|
|
101
|
+
console.log(chalk_1.default.green(`✅ ${packageName} updated successfully!`));
|
|
102
|
+
}
|
|
103
|
+
catch (error) {
|
|
104
|
+
throw new Error(`Failed to update ${packageName}: ${error.message}`);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Check if NestJS CLI is installed
|
|
109
|
+
*/
|
|
110
|
+
async function isNestJSCliInstalled() {
|
|
111
|
+
return isPackageInstalledGlobally('@nestjs/cli');
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Install NestJS CLI globally
|
|
115
|
+
*/
|
|
116
|
+
async function installNestJSCli() {
|
|
117
|
+
try {
|
|
118
|
+
console.log(chalk_1.default.blue('Installing @nestjs/cli globally...'));
|
|
119
|
+
await execAsync('npm install -g @nestjs/cli');
|
|
120
|
+
console.log(chalk_1.default.green('✅ @nestjs/cli installed successfully!'));
|
|
121
|
+
}
|
|
122
|
+
catch (error) {
|
|
123
|
+
throw new Error(`Failed to install @nestjs/cli: ${error.message}`);
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Create a new NestJS project
|
|
128
|
+
*/
|
|
129
|
+
async function createNestJSProject(projectName, options = {}) {
|
|
130
|
+
try {
|
|
131
|
+
// Check if @nestjs/cli is installed
|
|
132
|
+
const isInstalled = await isNestJSCliInstalled();
|
|
133
|
+
if (!isInstalled) {
|
|
134
|
+
await installNestJSCli();
|
|
135
|
+
}
|
|
136
|
+
console.log(chalk_1.default.blue(`Creating new NestJS project: ${projectName}...`));
|
|
137
|
+
// Build the command with options
|
|
138
|
+
let command = `nest new ${projectName} --skip-git --package-manager npm`;
|
|
139
|
+
if (options.directory) {
|
|
140
|
+
command += ` --directory ${options.directory}`;
|
|
141
|
+
}
|
|
142
|
+
if (options.skipInstall) {
|
|
143
|
+
command += ' --skip-install';
|
|
144
|
+
}
|
|
145
|
+
await execAsync(command);
|
|
146
|
+
console.log(chalk_1.default.green(`✅ NestJS project ${projectName} created successfully!`));
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
throw new Error(`Failed to create NestJS project: ${error.message}`);
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Install dependencies in a project
|
|
154
|
+
*/
|
|
155
|
+
async function installDependencies(projectPath, dependencies, dev = false) {
|
|
156
|
+
try {
|
|
157
|
+
const flag = dev ? '--save-dev' : '--save';
|
|
158
|
+
console.log(chalk_1.default.blue(`Installing ${dev ? 'dev ' : ''}dependencies: ${dependencies.join(', ')}...`));
|
|
159
|
+
await execAsync(`npm install ${flag} ${dependencies.join(' ')}`, { cwd: projectPath });
|
|
160
|
+
console.log(chalk_1.default.green('✅ Dependencies installed successfully!'));
|
|
161
|
+
}
|
|
162
|
+
catch (error) {
|
|
163
|
+
throw new Error(`Failed to install dependencies: ${error.message}`);
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
/**
|
|
167
|
+
* Check for outdated dependencies in a project
|
|
168
|
+
*/
|
|
169
|
+
async function checkOutdatedDependencies(projectPath) {
|
|
170
|
+
try {
|
|
171
|
+
const { stdout } = await execAsync('npm outdated --json', { cwd: projectPath });
|
|
172
|
+
return JSON.parse(stdout || '{}');
|
|
173
|
+
}
|
|
174
|
+
catch (error) {
|
|
175
|
+
// npm outdated returns exit code 1 if there are outdated packages
|
|
176
|
+
if (error.stdout) {
|
|
177
|
+
try {
|
|
178
|
+
return JSON.parse(error.stdout);
|
|
179
|
+
}
|
|
180
|
+
catch {
|
|
181
|
+
return {};
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
return {};
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Update dependencies in a project
|
|
189
|
+
*/
|
|
190
|
+
async function updateDependencies(projectPath, dependencies) {
|
|
191
|
+
try {
|
|
192
|
+
console.log(chalk_1.default.blue(`Updating dependencies: ${dependencies.join(', ')}...`));
|
|
193
|
+
await execAsync(`npm update ${dependencies.join(' ')}`, { cwd: projectPath });
|
|
194
|
+
console.log(chalk_1.default.green('✅ Dependencies updated successfully!'));
|
|
195
|
+
}
|
|
196
|
+
catch (error) {
|
|
197
|
+
throw new Error(`Failed to update dependencies: ${error.message}`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
/**
|
|
201
|
+
* Get the current package version from package.json
|
|
202
|
+
*/
|
|
203
|
+
function getCurrentPackageVersion() {
|
|
204
|
+
try {
|
|
205
|
+
const packageJsonPath = path.resolve(__dirname, '../../package.json');
|
|
206
|
+
const packageJson = fs.readJsonSync(packageJsonPath);
|
|
207
|
+
return packageJson.version;
|
|
208
|
+
}
|
|
209
|
+
catch (error) {
|
|
210
|
+
throw new Error(`Failed to get current package version: ${error.message}`);
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Check if the CLI needs to be updated
|
|
215
|
+
*/
|
|
216
|
+
async function checkForCliUpdate() {
|
|
217
|
+
const currentVersion = getCurrentPackageVersion();
|
|
218
|
+
try {
|
|
219
|
+
const latestVersion = await getLatestVersion('nestjs-ddd-cli');
|
|
220
|
+
const needsUpdate = currentVersion !== latestVersion;
|
|
221
|
+
return { needsUpdate, latestVersion, currentVersion };
|
|
222
|
+
}
|
|
223
|
+
catch (error) {
|
|
224
|
+
console.warn(chalk_1.default.yellow(`Warning: Could not check for CLI updates: ${error.message}`));
|
|
225
|
+
return { needsUpdate: false, latestVersion: currentVersion, currentVersion };
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
//# sourceMappingURL=dependency.utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"dependency.utils.js","sourceRoot":"","sources":["../../src/utils/dependency.utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -12,6 +12,10 @@ exports.toSingular = toSingular;
|
|
|
12
12
|
exports.toTableName = toTableName;
|
|
13
13
|
const pluralize_1 = __importDefault(require("pluralize"));
|
|
14
14
|
function toPascalCase(str) {
|
|
15
|
+
// If the string is already PascalCase (starts with uppercase and has no separators), return as-is
|
|
16
|
+
if (/^[A-Z][a-zA-Z0-9]*$/.test(str) && !/[-_ ]/.test(str)) {
|
|
17
|
+
return str;
|
|
18
|
+
}
|
|
15
19
|
return str
|
|
16
20
|
.split(/[-_ ]/)
|
|
17
21
|
.map(word => word.charAt(0).toUpperCase() + word.slice(1).toLowerCase())
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"naming.utils.js","sourceRoot":"","sources":["../../src/utils/naming.utils.ts"],"names":[],"mappings":";;;;;AAEA,
|
|
1
|
+
{"version":3,"file":"naming.utils.js","sourceRoot":"","sources":["../../src/utils/naming.utils.ts"],"names":[],"mappings":";;;;;AAEA,oCAUC;AAED,kCAGC;AAED,kCAKC;AAED,kCAKC;AAED,4BAEC;AAED,gCAEC;AAED,kCAIC;AA7CD,0DAAkC;AAElC,SAAgB,YAAY,CAAC,GAAW;IACtC,kGAAkG;IAClG,IAAI,qBAAqB,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAC1D,OAAO,GAAG,CAAC;IACb,CAAC;IAED,OAAO,GAAG;SACP,KAAK,CAAC,OAAO,CAAC;SACd,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;SACvE,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IACjC,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AAC1D,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,WAAW,CAAC,GAAW;IACrC,OAAO,GAAG;SACP,OAAO,CAAC,iBAAiB,EAAE,OAAO,CAAC;SACnC,OAAO,CAAC,SAAS,EAAE,GAAG,CAAC;SACvB,WAAW,EAAE,CAAC;AACnB,CAAC;AAED,SAAgB,QAAQ,CAAC,GAAW;IAClC,OAAO,IAAA,mBAAS,EAAC,GAAG,CAAC,CAAC;AACxB,CAAC;AAED,SAAgB,UAAU,CAAC,GAAW;IACpC,OAAO,mBAAS,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;AACjC,CAAC;AAED,SAAgB,WAAW,CAAC,UAAkB;IAC5C,MAAM,QAAQ,GAAG,UAAU,CAAC,UAAU,CAAC,CAAC;IACxC,MAAM,SAAS,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IACxC,OAAO,QAAQ,CAAC,SAAS,CAAC,CAAC;AAC7B,CAAC"}
|