nestjs-ddd-cli 2.2.0 → 3.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 +247 -408
- package/ddd.schema.json +111 -0
- package/dist/commands/aggregate-validator.d.ts +9 -0
- package/dist/commands/aggregate-validator.js +953 -0
- package/dist/commands/aggregate-validator.js.map +1 -0
- package/dist/commands/ai-assist.d.ts +8 -0
- package/dist/commands/ai-assist.js +337 -0
- package/dist/commands/ai-assist.js.map +1 -0
- package/dist/commands/api-contracts.d.ts +9 -0
- package/dist/commands/api-contracts.js +1368 -0
- package/dist/commands/api-contracts.js.map +1 -0
- package/dist/commands/api-docs.d.ts +8 -0
- package/dist/commands/api-docs.js +408 -0
- package/dist/commands/api-docs.js.map +1 -0
- package/dist/commands/api-versioning.d.ts +11 -0
- package/dist/commands/api-versioning.js +643 -0
- package/dist/commands/api-versioning.js.map +1 -0
- package/dist/commands/audit-logging.d.ts +9 -0
- package/dist/commands/audit-logging.js +1129 -0
- package/dist/commands/audit-logging.js.map +1 -0
- package/dist/commands/batch-generate.d.ts +10 -0
- package/dist/commands/batch-generate.js +405 -0
- package/dist/commands/batch-generate.js.map +1 -0
- package/dist/commands/caching-strategies.d.ts +9 -0
- package/dist/commands/caching-strategies.js +874 -0
- package/dist/commands/caching-strategies.js.map +1 -0
- package/dist/commands/code-analyzer.d.ts +42 -0
- package/dist/commands/code-analyzer.js +474 -0
- package/dist/commands/code-analyzer.js.map +1 -0
- package/dist/commands/database-seeding.d.ts +6 -0
- package/dist/commands/database-seeding.js +621 -0
- package/dist/commands/database-seeding.js.map +1 -0
- package/dist/commands/db-optimization.d.ts +7 -0
- package/dist/commands/db-optimization.js +687 -0
- package/dist/commands/db-optimization.js.map +1 -0
- package/dist/commands/dependency-graph.d.ts +6 -0
- package/dist/commands/dependency-graph.js +329 -0
- package/dist/commands/dependency-graph.js.map +1 -0
- package/dist/commands/doctor-enhanced.d.ts +22 -0
- package/dist/commands/doctor-enhanced.js +543 -0
- package/dist/commands/doctor-enhanced.js.map +1 -0
- package/dist/commands/doctor.d.ts +4 -0
- package/dist/commands/doctor.js +151 -0
- package/dist/commands/doctor.js.map +1 -0
- package/dist/commands/env-manager.d.ts +6 -0
- package/dist/commands/env-manager.js +419 -0
- package/dist/commands/env-manager.js.map +1 -0
- package/dist/commands/event-sourcing-full.d.ts +10 -0
- package/dist/commands/event-sourcing-full.js +1107 -0
- package/dist/commands/event-sourcing-full.js.map +1 -0
- package/dist/commands/feature-flags.d.ts +9 -0
- package/dist/commands/feature-flags.js +824 -0
- package/dist/commands/feature-flags.js.map +1 -0
- package/dist/commands/filter-dsl.d.ts +10 -0
- package/dist/commands/filter-dsl.js +1407 -0
- package/dist/commands/filter-dsl.js.map +1 -0
- package/dist/commands/generate-all.js +485 -32
- package/dist/commands/generate-all.js.map +1 -1
- package/dist/commands/generate-deployment.d.ts +8 -0
- package/dist/commands/generate-deployment.js +746 -0
- package/dist/commands/generate-deployment.js.map +1 -0
- package/dist/commands/generate-domain-service.d.ts +14 -0
- package/dist/commands/generate-domain-service.js +796 -0
- package/dist/commands/generate-domain-service.js.map +1 -0
- package/dist/commands/generate-entity.js +82 -24
- package/dist/commands/generate-entity.js.map +1 -1
- package/dist/commands/generate-from-schema.d.ts +56 -0
- package/dist/commands/generate-from-schema.js +222 -0
- package/dist/commands/generate-from-schema.js.map +1 -0
- package/dist/commands/generate-orchestrator.d.ts +14 -0
- package/dist/commands/generate-orchestrator.js +887 -0
- package/dist/commands/generate-orchestrator.js.map +1 -0
- package/dist/commands/generate-repository.d.ts +14 -0
- package/dist/commands/generate-repository.js +1019 -0
- package/dist/commands/generate-repository.js.map +1 -0
- package/dist/commands/generate-shared.d.ts +4 -0
- package/dist/commands/generate-shared.js +388 -0
- package/dist/commands/generate-shared.js.map +1 -0
- package/dist/commands/generate-value-object.d.ts +32 -0
- package/dist/commands/generate-value-object.js +700 -0
- package/dist/commands/generate-value-object.js.map +1 -0
- package/dist/commands/graphql-subscriptions.d.ts +6 -0
- package/dist/commands/graphql-subscriptions.js +607 -0
- package/dist/commands/graphql-subscriptions.js.map +1 -0
- package/dist/commands/graphql-types.d.ts +5 -0
- package/dist/commands/graphql-types.js +423 -0
- package/dist/commands/graphql-types.js.map +1 -0
- package/dist/commands/health-probes-advanced.d.ts +6 -0
- package/dist/commands/health-probes-advanced.js +655 -0
- package/dist/commands/health-probes-advanced.js.map +1 -0
- package/dist/commands/i18n-setup.d.ts +10 -0
- package/dist/commands/i18n-setup.js +677 -0
- package/dist/commands/i18n-setup.js.map +1 -0
- package/dist/commands/init-config.d.ts +6 -0
- package/dist/commands/init-config.js +370 -0
- package/dist/commands/init-config.js.map +1 -0
- package/dist/commands/init-project.js +56 -6
- package/dist/commands/init-project.js.map +1 -1
- package/dist/commands/interactive-scaffold.d.ts +5 -0
- package/dist/commands/interactive-scaffold.js +271 -0
- package/dist/commands/interactive-scaffold.js.map +1 -0
- package/dist/commands/metrics-prometheus.d.ts +6 -0
- package/dist/commands/metrics-prometheus.js +681 -0
- package/dist/commands/metrics-prometheus.js.map +1 -0
- package/dist/commands/migration-engine.d.ts +6 -0
- package/dist/commands/migration-engine.js +446 -0
- package/dist/commands/migration-engine.js.map +1 -0
- package/dist/commands/migration.d.ts +12 -0
- package/dist/commands/migration.js +484 -0
- package/dist/commands/migration.js.map +1 -0
- package/dist/commands/monorepo.d.ts +8 -0
- package/dist/commands/monorepo.js +483 -0
- package/dist/commands/monorepo.js.map +1 -0
- package/dist/commands/multi-database.d.ts +5 -0
- package/dist/commands/multi-database.js +439 -0
- package/dist/commands/multi-database.js.map +1 -0
- package/dist/commands/observability-tracing.d.ts +10 -0
- package/dist/commands/observability-tracing.js +740 -0
- package/dist/commands/observability-tracing.js.map +1 -0
- package/dist/commands/openapi-export.d.ts +8 -0
- package/dist/commands/openapi-export.js +359 -0
- package/dist/commands/openapi-export.js.map +1 -0
- package/dist/commands/perf-analyzer.d.ts +8 -0
- package/dist/commands/perf-analyzer.js +423 -0
- package/dist/commands/perf-analyzer.js.map +1 -0
- package/dist/commands/rate-limiting.d.ts +10 -0
- package/dist/commands/rate-limiting.js +953 -0
- package/dist/commands/rate-limiting.js.map +1 -0
- package/dist/commands/recipe-plugin.d.ts +56 -0
- package/dist/commands/recipe-plugin.js +315 -0
- package/dist/commands/recipe-plugin.js.map +1 -0
- package/dist/commands/recipe.d.ts +6 -0
- package/dist/commands/recipe.js +3941 -0
- package/dist/commands/recipe.js.map +1 -0
- package/dist/commands/recipes/elasticsearch.recipe.d.ts +1 -0
- package/dist/commands/recipes/elasticsearch.recipe.js +761 -0
- package/dist/commands/recipes/elasticsearch.recipe.js.map +1 -0
- package/dist/commands/recipes/event-sourcing.recipe.d.ts +1 -0
- package/dist/commands/recipes/event-sourcing.recipe.js +889 -0
- package/dist/commands/recipes/event-sourcing.recipe.js.map +1 -0
- package/dist/commands/recipes/index.d.ts +7 -0
- package/dist/commands/recipes/index.js +24 -0
- package/dist/commands/recipes/index.js.map +1 -0
- package/dist/commands/recipes/message-queue.recipe.d.ts +1 -0
- package/dist/commands/recipes/message-queue.recipe.js +706 -0
- package/dist/commands/recipes/message-queue.recipe.js.map +1 -0
- package/dist/commands/recipes/middleware.recipe.d.ts +1 -0
- package/dist/commands/recipes/middleware.recipe.js +383 -0
- package/dist/commands/recipes/middleware.recipe.js.map +1 -0
- package/dist/commands/recipes/multi-tenancy.recipe.d.ts +1 -0
- package/dist/commands/recipes/multi-tenancy.recipe.js +520 -0
- package/dist/commands/recipes/multi-tenancy.recipe.js.map +1 -0
- package/dist/commands/recipes/oauth2.recipe.d.ts +1 -0
- package/dist/commands/recipes/oauth2.recipe.js +472 -0
- package/dist/commands/recipes/oauth2.recipe.js.map +1 -0
- package/dist/commands/recipes/websocket.recipe.d.ts +1 -0
- package/dist/commands/recipes/websocket.recipe.js +453 -0
- package/dist/commands/recipes/websocket.recipe.js.map +1 -0
- package/dist/commands/resilience-patterns.d.ts +13 -0
- package/dist/commands/resilience-patterns.js +1029 -0
- package/dist/commands/resilience-patterns.js.map +1 -0
- package/dist/commands/security-patterns.d.ts +11 -0
- package/dist/commands/security-patterns.js +2233 -0
- package/dist/commands/security-patterns.js.map +1 -0
- package/dist/commands/template-debug.d.ts +27 -0
- package/dist/commands/template-debug.js +388 -0
- package/dist/commands/template-debug.js.map +1 -0
- package/dist/commands/test-factory-full.d.ts +9 -0
- package/dist/commands/test-factory-full.js +1570 -0
- package/dist/commands/test-factory-full.js.map +1 -0
- package/dist/commands/test-scaffold.d.ts +7 -0
- package/dist/commands/test-scaffold.js +621 -0
- package/dist/commands/test-scaffold.js.map +1 -0
- package/dist/index.js +1088 -0
- package/dist/index.js.map +1 -1
- package/dist/templates/ai-context/CLAUDE.md.hbs +158 -0
- package/dist/templates/ai-context/conventions.md.hbs +154 -0
- package/dist/templates/command/create-command.hbs +6 -14
- package/dist/templates/command/delete-command.hbs +19 -0
- package/dist/templates/command/update-command.hbs +24 -0
- package/dist/templates/controller/controller.hbs +64 -17
- package/dist/templates/dto/create-dto.hbs +29 -5
- package/dist/templates/dto/filter-dto.hbs +52 -0
- package/dist/templates/dto/filter-query.dto.hbs +148 -0
- package/dist/templates/dto/paginated-response.dto.hbs +29 -0
- package/dist/templates/dto/pagination-query.dto.hbs +30 -0
- package/dist/templates/dto/response-dto.hbs +38 -0
- package/dist/templates/dto/update-dto.hbs +11 -0
- package/dist/templates/entity/entity.hbs +32 -1
- package/dist/templates/event/domain-event.hbs +33 -7
- package/dist/templates/event/event-handler.hbs +40 -0
- package/dist/templates/exception/base-exceptions.hbs +69 -0
- package/dist/templates/exception/entity-not-found.exception.hbs +7 -0
- package/dist/templates/mapper/mapper.hbs +49 -24
- package/dist/templates/module/module.hbs +34 -10
- package/dist/templates/orm-entity/orm-entity.hbs +63 -12
- package/dist/templates/prisma/prisma-mapper.hbs +71 -0
- package/dist/templates/prisma/prisma-repository.hbs +114 -0
- package/dist/templates/prisma/prisma-schema.hbs +20 -0
- package/dist/templates/prisma/prisma-service.hbs +51 -0
- package/dist/templates/query/get-all.query.hbs +50 -0
- package/dist/templates/query/get-by-id.query.hbs +31 -0
- package/dist/templates/repository/repository.hbs +55 -13
- package/dist/templates/resolver/graphql-input.hbs +54 -0
- package/dist/templates/resolver/graphql-type.hbs +58 -0
- package/dist/templates/resolver/pagination-args.hbs +33 -0
- package/dist/templates/resolver/resolver.hbs +62 -0
- package/dist/templates/shared/prisma-query-builder.util.hbs +189 -0
- package/dist/templates/shared/query-builder.util.hbs +218 -0
- package/dist/templates/test/controller.spec.hbs +124 -0
- package/dist/templates/test/repository.spec.hbs +158 -0
- package/dist/templates/test/usecase.spec.hbs +116 -0
- package/dist/templates/usecase/create-usecase.hbs +19 -7
- package/dist/templates/usecase/delete-usecase.hbs +17 -0
- package/dist/templates/usecase/update-usecase.hbs +31 -0
- package/dist/utils/config.utils.d.ts +45 -0
- package/dist/utils/config.utils.js +211 -0
- package/dist/utils/config.utils.js.map +1 -0
- package/dist/utils/error.utils.d.ts +145 -0
- package/dist/utils/error.utils.js +422 -0
- package/dist/utils/error.utils.js.map +1 -0
- package/dist/utils/field.utils.d.ts +54 -0
- package/dist/utils/field.utils.js +389 -0
- package/dist/utils/field.utils.js.map +1 -0
- package/dist/utils/file.utils.d.ts +19 -8
- package/dist/utils/file.utils.js +135 -4
- package/dist/utils/file.utils.js.map +1 -1
- package/dist/utils/idempotency.utils.d.ts +123 -0
- package/dist/utils/idempotency.utils.js +444 -0
- package/dist/utils/idempotency.utils.js.map +1 -0
- package/dist/utils/naming.utils.js +26 -3
- package/dist/utils/naming.utils.js.map +1 -1
- package/dist/utils/performance.utils.d.ts +37 -0
- package/dist/utils/performance.utils.js +158 -0
- package/dist/utils/performance.utils.js.map +1 -0
- package/dist/utils/relation.utils.d.ts +92 -0
- package/dist/utils/relation.utils.js +388 -0
- package/dist/utils/relation.utils.js.map +1 -0
- package/dist/utils/rollback.utils.d.ts +49 -0
- package/dist/utils/rollback.utils.js +306 -0
- package/dist/utils/rollback.utils.js.map +1 -0
- package/dist/utils/schema.utils.d.ts +123 -0
- package/dist/utils/schema.utils.js +419 -0
- package/dist/utils/schema.utils.js.map +1 -0
- package/dist/utils/security.utils.d.ts +57 -0
- package/dist/utils/security.utils.js +315 -0
- package/dist/utils/security.utils.js.map +1 -0
- package/dist/utils/template-engine.utils.d.ts +80 -0
- package/dist/utils/template-engine.utils.js +463 -0
- package/dist/utils/template-engine.utils.js.map +1 -0
- package/dist/utils/validation-registry.utils.d.ts +160 -0
- package/dist/utils/validation-registry.utils.js +526 -0
- package/dist/utils/validation-registry.utils.js.map +1 -0
- package/package.json +3 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"aggregate-validator.js","sourceRoot":"","sources":["../../src/commands/aggregate-validator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface AiAssistOptions {
|
|
2
|
+
path?: string;
|
|
3
|
+
apiKey?: string;
|
|
4
|
+
model?: string;
|
|
5
|
+
provider?: 'anthropic' | 'openai';
|
|
6
|
+
}
|
|
7
|
+
export declare function aiAssist(action: string, options?: AiAssistOptions): Promise<void>;
|
|
8
|
+
export declare function configureAiAssist(basePath: string): Promise<void>;
|
|
@@ -0,0 +1,337 @@
|
|
|
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.aiAssist = aiAssist;
|
|
40
|
+
exports.configureAiAssist = configureAiAssist;
|
|
41
|
+
const path = __importStar(require("path"));
|
|
42
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
43
|
+
const file_utils_1 = require("../utils/file.utils");
|
|
44
|
+
async function aiAssist(action, options = {}) {
|
|
45
|
+
console.log(chalk_1.default.bold.blue('\n🤖 AI-Assisted Code Generation\n'));
|
|
46
|
+
// Check for API key
|
|
47
|
+
const apiKey = options.apiKey || process.env.ANTHROPIC_API_KEY || process.env.OPENAI_API_KEY;
|
|
48
|
+
if (!apiKey) {
|
|
49
|
+
console.log(chalk_1.default.yellow('⚠️ No API key found.'));
|
|
50
|
+
console.log(chalk_1.default.gray('\nSet one of the following environment variables:'));
|
|
51
|
+
console.log(chalk_1.default.gray(' ANTHROPIC_API_KEY - for Claude'));
|
|
52
|
+
console.log(chalk_1.default.gray(' OPENAI_API_KEY - for GPT-4'));
|
|
53
|
+
console.log(chalk_1.default.gray('\nOr pass --api-key=<key> to the command.'));
|
|
54
|
+
// Generate template without AI
|
|
55
|
+
await generateTemplate(action, options);
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const provider = options.provider || (process.env.ANTHROPIC_API_KEY ? 'anthropic' : 'openai');
|
|
59
|
+
console.log(chalk_1.default.cyan(`Using ${provider} API...`));
|
|
60
|
+
switch (action) {
|
|
61
|
+
case 'usecase':
|
|
62
|
+
await generateUseCase(options, apiKey, provider);
|
|
63
|
+
break;
|
|
64
|
+
case 'service':
|
|
65
|
+
await generateService(options, apiKey, provider);
|
|
66
|
+
break;
|
|
67
|
+
case 'test':
|
|
68
|
+
await generateTest(options, apiKey, provider);
|
|
69
|
+
break;
|
|
70
|
+
case 'refactor':
|
|
71
|
+
await refactorCode(options, apiKey, provider);
|
|
72
|
+
break;
|
|
73
|
+
case 'explain':
|
|
74
|
+
await explainCode(options, apiKey, provider);
|
|
75
|
+
break;
|
|
76
|
+
default:
|
|
77
|
+
console.log(chalk_1.default.yellow(`Unknown action: ${action}`));
|
|
78
|
+
console.log(chalk_1.default.gray('Available actions: usecase, service, test, refactor, explain'));
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async function generateTemplate(action, options) {
|
|
82
|
+
console.log(chalk_1.default.cyan('\nGenerating template without AI...\n'));
|
|
83
|
+
const basePath = options.path || process.cwd();
|
|
84
|
+
const templates = {
|
|
85
|
+
usecase: `import { Injectable } from '@nestjs/common';
|
|
86
|
+
import { CommandHandler, ICommandHandler } from '@nestjs/cqrs';
|
|
87
|
+
|
|
88
|
+
// TODO: Define your command
|
|
89
|
+
export class YourCommand {
|
|
90
|
+
constructor(
|
|
91
|
+
// Add command properties
|
|
92
|
+
) {}
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@CommandHandler(YourCommand)
|
|
96
|
+
export class YourCommandHandler implements ICommandHandler<YourCommand> {
|
|
97
|
+
constructor(
|
|
98
|
+
// Inject dependencies
|
|
99
|
+
) {}
|
|
100
|
+
|
|
101
|
+
async execute(command: YourCommand): Promise<void> {
|
|
102
|
+
// TODO: Implement use case logic
|
|
103
|
+
// 1. Validate input
|
|
104
|
+
// 2. Execute business logic
|
|
105
|
+
// 3. Persist changes
|
|
106
|
+
// 4. Emit domain events
|
|
107
|
+
}
|
|
108
|
+
}
|
|
109
|
+
`,
|
|
110
|
+
service: `import { Injectable, Logger } from '@nestjs/common';
|
|
111
|
+
|
|
112
|
+
@Injectable()
|
|
113
|
+
export class YourService {
|
|
114
|
+
private readonly logger = new Logger(YourService.name);
|
|
115
|
+
|
|
116
|
+
constructor(
|
|
117
|
+
// Inject dependencies
|
|
118
|
+
) {}
|
|
119
|
+
|
|
120
|
+
async yourMethod(): Promise<void> {
|
|
121
|
+
// TODO: Implement service method
|
|
122
|
+
this.logger.log('Method called');
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
`,
|
|
126
|
+
test: `import { Test, TestingModule } from '@nestjs/testing';
|
|
127
|
+
|
|
128
|
+
describe('YourService', () => {
|
|
129
|
+
let service: YourService;
|
|
130
|
+
|
|
131
|
+
beforeEach(async () => {
|
|
132
|
+
const module: TestingModule = await Test.createTestingModule({
|
|
133
|
+
providers: [
|
|
134
|
+
YourService,
|
|
135
|
+
// Add mock providers
|
|
136
|
+
],
|
|
137
|
+
}).compile();
|
|
138
|
+
|
|
139
|
+
service = module.get<YourService>(YourService);
|
|
140
|
+
});
|
|
141
|
+
|
|
142
|
+
it('should be defined', () => {
|
|
143
|
+
expect(service).toBeDefined();
|
|
144
|
+
});
|
|
145
|
+
|
|
146
|
+
// TODO: Add more tests
|
|
147
|
+
});
|
|
148
|
+
`,
|
|
149
|
+
};
|
|
150
|
+
const template = templates[action] || templates.service;
|
|
151
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
152
|
+
console.log(template);
|
|
153
|
+
console.log(chalk_1.default.gray('─'.repeat(50)));
|
|
154
|
+
console.log(chalk_1.default.yellow('\nTip: Set ANTHROPIC_API_KEY or OPENAI_API_KEY for AI-generated code.'));
|
|
155
|
+
}
|
|
156
|
+
async function generateUseCase(options, apiKey, provider) {
|
|
157
|
+
const prompt = `Generate a NestJS use case (command handler) following DDD and CQRS patterns.
|
|
158
|
+
The use case should:
|
|
159
|
+
1. Have a Command class with proper properties
|
|
160
|
+
2. Have a CommandHandler that implements ICommandHandler
|
|
161
|
+
3. Include proper validation
|
|
162
|
+
4. Emit domain events if applicable
|
|
163
|
+
5. Handle errors appropriately
|
|
164
|
+
|
|
165
|
+
Please provide a complete, production-ready implementation.`;
|
|
166
|
+
const response = await callAI(prompt, apiKey, provider, options.model);
|
|
167
|
+
console.log(chalk_1.default.green('\n✓ Generated use case:\n'));
|
|
168
|
+
console.log(response);
|
|
169
|
+
}
|
|
170
|
+
async function generateService(options, apiKey, provider) {
|
|
171
|
+
const prompt = `Generate a NestJS service following best practices:
|
|
172
|
+
1. Use dependency injection
|
|
173
|
+
2. Include proper logging with Logger
|
|
174
|
+
3. Add error handling
|
|
175
|
+
4. Include JSDoc comments
|
|
176
|
+
5. Follow single responsibility principle
|
|
177
|
+
|
|
178
|
+
Please provide a complete, production-ready implementation.`;
|
|
179
|
+
const response = await callAI(prompt, apiKey, provider, options.model);
|
|
180
|
+
console.log(chalk_1.default.green('\n✓ Generated service:\n'));
|
|
181
|
+
console.log(response);
|
|
182
|
+
}
|
|
183
|
+
async function generateTest(options, apiKey, provider) {
|
|
184
|
+
const basePath = options.path || process.cwd();
|
|
185
|
+
// Try to read an existing file to generate tests for
|
|
186
|
+
const prompt = `Generate comprehensive Jest unit tests for a NestJS service.
|
|
187
|
+
Include:
|
|
188
|
+
1. Setup with TestingModule
|
|
189
|
+
2. Mock dependencies
|
|
190
|
+
3. Test all public methods
|
|
191
|
+
4. Test edge cases and error scenarios
|
|
192
|
+
5. Use describe/it blocks appropriately
|
|
193
|
+
|
|
194
|
+
Please provide complete, runnable test code.`;
|
|
195
|
+
const response = await callAI(prompt, apiKey, provider, options.model);
|
|
196
|
+
console.log(chalk_1.default.green('\n✓ Generated tests:\n'));
|
|
197
|
+
console.log(response);
|
|
198
|
+
}
|
|
199
|
+
async function refactorCode(options, apiKey, provider) {
|
|
200
|
+
console.log(chalk_1.default.cyan('Reading code for refactoring...'));
|
|
201
|
+
const prompt = `Please analyze and refactor this code to:
|
|
202
|
+
1. Improve readability and maintainability
|
|
203
|
+
2. Follow SOLID principles
|
|
204
|
+
3. Add proper TypeScript types
|
|
205
|
+
4. Improve error handling
|
|
206
|
+
5. Add appropriate comments
|
|
207
|
+
|
|
208
|
+
Please explain the changes you made.`;
|
|
209
|
+
const response = await callAI(prompt, apiKey, provider, options.model);
|
|
210
|
+
console.log(chalk_1.default.green('\n✓ Refactoring suggestions:\n'));
|
|
211
|
+
console.log(response);
|
|
212
|
+
}
|
|
213
|
+
async function explainCode(options, apiKey, provider) {
|
|
214
|
+
console.log(chalk_1.default.cyan('Analyzing code...'));
|
|
215
|
+
const prompt = `Please explain this code:
|
|
216
|
+
1. What does it do?
|
|
217
|
+
2. What patterns/principles does it follow?
|
|
218
|
+
3. What are potential improvements?
|
|
219
|
+
4. Are there any bugs or issues?`;
|
|
220
|
+
const response = await callAI(prompt, apiKey, provider, options.model);
|
|
221
|
+
console.log(chalk_1.default.green('\n✓ Code explanation:\n'));
|
|
222
|
+
console.log(response);
|
|
223
|
+
}
|
|
224
|
+
async function callAI(prompt, apiKey, provider, model) {
|
|
225
|
+
// This is a simplified implementation
|
|
226
|
+
// In production, you would use the actual API clients
|
|
227
|
+
if (provider === 'anthropic') {
|
|
228
|
+
return callAnthropic(prompt, apiKey, model);
|
|
229
|
+
}
|
|
230
|
+
else {
|
|
231
|
+
return callOpenAI(prompt, apiKey, model);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
async function callAnthropic(prompt, apiKey, model) {
|
|
235
|
+
const selectedModel = model || 'claude-3-sonnet-20240229';
|
|
236
|
+
try {
|
|
237
|
+
const response = await fetch('https://api.anthropic.com/v1/messages', {
|
|
238
|
+
method: 'POST',
|
|
239
|
+
headers: {
|
|
240
|
+
'Content-Type': 'application/json',
|
|
241
|
+
'x-api-key': apiKey,
|
|
242
|
+
'anthropic-version': '2023-06-01',
|
|
243
|
+
},
|
|
244
|
+
body: JSON.stringify({
|
|
245
|
+
model: selectedModel,
|
|
246
|
+
max_tokens: 4096,
|
|
247
|
+
messages: [
|
|
248
|
+
{
|
|
249
|
+
role: 'user',
|
|
250
|
+
content: prompt,
|
|
251
|
+
},
|
|
252
|
+
],
|
|
253
|
+
system: 'You are an expert NestJS and TypeScript developer. Generate clean, production-ready code following best practices.',
|
|
254
|
+
}),
|
|
255
|
+
});
|
|
256
|
+
if (!response.ok) {
|
|
257
|
+
const error = await response.text();
|
|
258
|
+
throw new Error(`API error: ${error}`);
|
|
259
|
+
}
|
|
260
|
+
const data = await response.json();
|
|
261
|
+
return data.content[0].text;
|
|
262
|
+
}
|
|
263
|
+
catch (error) {
|
|
264
|
+
console.log(chalk_1.default.red(`API call failed: ${error.message}`));
|
|
265
|
+
return generateFallbackResponse(prompt);
|
|
266
|
+
}
|
|
267
|
+
}
|
|
268
|
+
async function callOpenAI(prompt, apiKey, model) {
|
|
269
|
+
const selectedModel = model || 'gpt-4-turbo-preview';
|
|
270
|
+
try {
|
|
271
|
+
const response = await fetch('https://api.openai.com/v1/chat/completions', {
|
|
272
|
+
method: 'POST',
|
|
273
|
+
headers: {
|
|
274
|
+
'Content-Type': 'application/json',
|
|
275
|
+
'Authorization': `Bearer ${apiKey}`,
|
|
276
|
+
},
|
|
277
|
+
body: JSON.stringify({
|
|
278
|
+
model: selectedModel,
|
|
279
|
+
max_tokens: 4096,
|
|
280
|
+
messages: [
|
|
281
|
+
{
|
|
282
|
+
role: 'system',
|
|
283
|
+
content: 'You are an expert NestJS and TypeScript developer. Generate clean, production-ready code following best practices.',
|
|
284
|
+
},
|
|
285
|
+
{
|
|
286
|
+
role: 'user',
|
|
287
|
+
content: prompt,
|
|
288
|
+
},
|
|
289
|
+
],
|
|
290
|
+
}),
|
|
291
|
+
});
|
|
292
|
+
if (!response.ok) {
|
|
293
|
+
const error = await response.text();
|
|
294
|
+
throw new Error(`API error: ${error}`);
|
|
295
|
+
}
|
|
296
|
+
const data = await response.json();
|
|
297
|
+
return data.choices[0].message.content;
|
|
298
|
+
}
|
|
299
|
+
catch (error) {
|
|
300
|
+
console.log(chalk_1.default.red(`API call failed: ${error.message}`));
|
|
301
|
+
return generateFallbackResponse(prompt);
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
function generateFallbackResponse(prompt) {
|
|
305
|
+
return `// AI generation failed. Here's a template to start with:
|
|
306
|
+
// Prompt was: ${prompt.substring(0, 100)}...
|
|
307
|
+
|
|
308
|
+
import { Injectable } from '@nestjs/common';
|
|
309
|
+
|
|
310
|
+
@Injectable()
|
|
311
|
+
export class GeneratedService {
|
|
312
|
+
// TODO: Implement based on requirements
|
|
313
|
+
}
|
|
314
|
+
`;
|
|
315
|
+
}
|
|
316
|
+
// Configuration for AI assist
|
|
317
|
+
async function configureAiAssist(basePath) {
|
|
318
|
+
const configPath = path.join(basePath, '.ddd');
|
|
319
|
+
await (0, file_utils_1.ensureDir)(configPath);
|
|
320
|
+
const config = {
|
|
321
|
+
ai: {
|
|
322
|
+
provider: 'anthropic',
|
|
323
|
+
model: 'claude-3-sonnet-20240229',
|
|
324
|
+
maxTokens: 4096,
|
|
325
|
+
temperature: 0.7,
|
|
326
|
+
},
|
|
327
|
+
prompts: {
|
|
328
|
+
usecase: 'Generate a use case following DDD patterns',
|
|
329
|
+
service: 'Generate a service with proper error handling',
|
|
330
|
+
test: 'Generate comprehensive unit tests',
|
|
331
|
+
},
|
|
332
|
+
};
|
|
333
|
+
await (0, file_utils_1.writeFile)(path.join(configPath, 'ai-config.json'), JSON.stringify(config, null, 2));
|
|
334
|
+
console.log(chalk_1.default.green('✓ Created .ddd/ai-config.json'));
|
|
335
|
+
console.log(chalk_1.default.gray('\nSet ANTHROPIC_API_KEY or OPENAI_API_KEY environment variable to use AI features.'));
|
|
336
|
+
}
|
|
337
|
+
//# sourceMappingURL=ai-assist.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ai-assist.js","sourceRoot":"","sources":["../../src/commands/ai-assist.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* API Contract Testing & Schema Validation Generator
|
|
3
|
+
* Generates contract testing infrastructure
|
|
4
|
+
*/
|
|
5
|
+
export interface ApiContractsOptions {
|
|
6
|
+
path?: string;
|
|
7
|
+
format?: 'openapi' | 'asyncapi';
|
|
8
|
+
}
|
|
9
|
+
export declare function setupApiContracts(basePath: string, options?: ApiContractsOptions): Promise<void>;
|