@slingr/cli 0.0.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 +320 -0
- package/bin/dev.cmd +3 -0
- package/bin/dev.js +5 -0
- package/bin/run.cmd +3 -0
- package/bin/run.js +5 -0
- package/dist/commands/cli-build.d.ts +9 -0
- package/dist/commands/cli-build.d.ts.map +1 -0
- package/dist/commands/cli-build.js +36 -0
- package/dist/commands/cli-build.js.map +1 -0
- package/dist/commands/create-app.d.ts +20 -0
- package/dist/commands/create-app.d.ts.map +1 -0
- package/dist/commands/create-app.js +246 -0
- package/dist/commands/create-app.js.map +1 -0
- package/dist/commands/ds.d.ts +28 -0
- package/dist/commands/ds.d.ts.map +1 -0
- package/dist/commands/ds.js +529 -0
- package/dist/commands/ds.js.map +1 -0
- package/dist/commands/gql.d.ts +22 -0
- package/dist/commands/gql.d.ts.map +1 -0
- package/dist/commands/gql.js +340 -0
- package/dist/commands/gql.js.map +1 -0
- package/dist/commands/infra/down.d.ts +13 -0
- package/dist/commands/infra/down.d.ts.map +1 -0
- package/dist/commands/infra/down.js +80 -0
- package/dist/commands/infra/down.js.map +1 -0
- package/dist/commands/infra/up.d.ts +13 -0
- package/dist/commands/infra/up.d.ts.map +1 -0
- package/dist/commands/infra/up.js +69 -0
- package/dist/commands/infra/up.js.map +1 -0
- package/dist/commands/infra/update.d.ts +14 -0
- package/dist/commands/infra/update.d.ts.map +1 -0
- package/dist/commands/infra/update.js +321 -0
- package/dist/commands/infra/update.js.map +1 -0
- package/dist/commands/run.d.ts +19 -0
- package/dist/commands/run.d.ts.map +1 -0
- package/dist/commands/run.js +315 -0
- package/dist/commands/run.js.map +1 -0
- package/dist/commands/setup.d.ts +18 -0
- package/dist/commands/setup.d.ts.map +1 -0
- package/dist/commands/setup.js +189 -0
- package/dist/commands/setup.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/projectStructure.d.ts +10 -0
- package/dist/projectStructure.d.ts.map +1 -0
- package/dist/projectStructure.js +153 -0
- package/dist/projectStructure.js.map +1 -0
- package/dist/scripts/generate-schema.d.ts +10 -0
- package/dist/scripts/generate-schema.d.ts.map +1 -0
- package/dist/scripts/generate-schema.js +130 -0
- package/dist/scripts/generate-schema.js.map +1 -0
- package/dist/scripts/generate-schema.ts +143 -0
- package/dist/templates/.github/copilot-instructions.md.template +17 -0
- package/dist/templates/config/datasource.ts.template +9 -0
- package/dist/templates/config/jest.config.ts +30 -0
- package/dist/templates/config/jest.setup.ts +1 -0
- package/dist/templates/config/tsconfig.json.template +30 -0
- package/dist/templates/dataSources/mysql.ts.template +13 -0
- package/dist/templates/dataSources/postgres.ts.template +13 -0
- package/dist/templates/dataset-generator-script.ts.template +140 -0
- package/dist/templates/datasets/mysql-default/Address.jsonl.template +4 -0
- package/dist/templates/datasets/mysql-default/App.jsonl.template +5 -0
- package/dist/templates/datasets/mysql-default/Company.jsonl.template +4 -0
- package/dist/templates/datasets/mysql-default/Person.jsonl.template +3 -0
- package/dist/templates/datasets/postgres-default/Address.jsonl.template +4 -0
- package/dist/templates/datasets/postgres-default/App.jsonl.template +5 -0
- package/dist/templates/datasets/postgres-default/Company.jsonl.template +4 -0
- package/dist/templates/datasets/postgres-default/Person.jsonl.template +3 -0
- package/dist/templates/docs/app-description.md.template +34 -0
- package/dist/templates/gql/codegen.yml.template +25 -0
- package/dist/templates/gql/index.ts.template +24 -0
- package/dist/templates/gql/operations.graphql.template +30 -0
- package/dist/templates/package.json.template +38 -0
- package/dist/templates/prompt-analysis.md.template +111 -0
- package/dist/templates/prompt-script-generation.md.template +259 -0
- package/dist/templates/src/Address.ts.template +31 -0
- package/dist/templates/src/App.ts.template +61 -0
- package/dist/templates/src/Company.ts.template +48 -0
- package/dist/templates/src/Models.test.ts.template +655 -0
- package/dist/templates/src/Person.test.ts.template +289 -0
- package/dist/templates/src/Person.ts.template +105 -0
- package/dist/templates/src/actions/index.ts.template +12 -0
- package/dist/templates/src/index.ts +66 -0
- package/dist/templates/src/types/gql.d.ts.template +18 -0
- package/dist/templates/vscode/extensions.json +3 -0
- package/dist/templates/vscode/settings.json +11 -0
- package/dist/utils/datasourceParser.d.ts +12 -0
- package/dist/utils/datasourceParser.d.ts.map +1 -0
- package/dist/utils/datasourceParser.js +91 -0
- package/dist/utils/datasourceParser.js.map +1 -0
- package/dist/utils/jsonlLoader.d.ts +140 -0
- package/dist/utils/jsonlLoader.d.ts.map +1 -0
- package/dist/utils/jsonlLoader.js +583 -0
- package/dist/utils/jsonlLoader.js.map +1 -0
- package/dist/utils/model-analyzer.d.ts +86 -0
- package/dist/utils/model-analyzer.d.ts.map +1 -0
- package/dist/utils/model-analyzer.js +458 -0
- package/dist/utils/model-analyzer.js.map +1 -0
- package/dist/utils/portChecker.d.ts +36 -0
- package/dist/utils/portChecker.d.ts.map +1 -0
- package/dist/utils/portChecker.js +308 -0
- package/dist/utils/portChecker.js.map +1 -0
- package/dist/utils/synthetic-data-generator.d.ts +74 -0
- package/dist/utils/synthetic-data-generator.d.ts.map +1 -0
- package/dist/utils/synthetic-data-generator.js +443 -0
- package/dist/utils/synthetic-data-generator.js.map +1 -0
- package/oclif.manifest.json +435 -0
- package/package.json +118 -0
- package/src/templates/.github/copilot-instructions.md.template +17 -0
- package/src/templates/config/datasource.ts.template +9 -0
- package/src/templates/config/jest.config.ts +30 -0
- package/src/templates/config/jest.setup.ts +1 -0
- package/src/templates/config/tsconfig.json.template +30 -0
- package/src/templates/dataSources/mysql.ts.template +13 -0
- package/src/templates/dataSources/postgres.ts.template +13 -0
- package/src/templates/dataset-generator-script.ts.template +140 -0
- package/src/templates/datasets/mysql-default/Address.jsonl.template +4 -0
- package/src/templates/datasets/mysql-default/App.jsonl.template +5 -0
- package/src/templates/datasets/mysql-default/Company.jsonl.template +4 -0
- package/src/templates/datasets/mysql-default/Person.jsonl.template +3 -0
- package/src/templates/datasets/postgres-default/Address.jsonl.template +4 -0
- package/src/templates/datasets/postgres-default/App.jsonl.template +5 -0
- package/src/templates/datasets/postgres-default/Company.jsonl.template +4 -0
- package/src/templates/datasets/postgres-default/Person.jsonl.template +3 -0
- package/src/templates/docs/app-description.md.template +34 -0
- package/src/templates/gql/codegen.yml.template +25 -0
- package/src/templates/gql/index.ts.template +24 -0
- package/src/templates/gql/operations.graphql.template +30 -0
- package/src/templates/package.json.template +38 -0
- package/src/templates/prompt-analysis.md.template +111 -0
- package/src/templates/prompt-script-generation.md.template +259 -0
- package/src/templates/src/Address.ts.template +31 -0
- package/src/templates/src/App.ts.template +61 -0
- package/src/templates/src/Company.ts.template +48 -0
- package/src/templates/src/Models.test.ts.template +655 -0
- package/src/templates/src/Person.test.ts.template +289 -0
- package/src/templates/src/Person.ts.template +105 -0
- package/src/templates/src/actions/index.ts.template +12 -0
- package/src/templates/src/index.ts +66 -0
- package/src/templates/src/types/gql.d.ts.template +18 -0
- package/src/templates/vscode/extensions.json +3 -0
- package/src/templates/vscode/settings.json +11 -0
|
@@ -0,0 +1,308 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.isDockerRunning = isDockerRunning;
|
|
37
|
+
exports.isPortUsedByProjectDocker = isPortUsedByProjectDocker;
|
|
38
|
+
exports.isPortInUse = isPortInUse;
|
|
39
|
+
exports.getProcessUsingPort = getProcessUsingPort;
|
|
40
|
+
exports.findAvailablePort = findAvailablePort;
|
|
41
|
+
exports.checkPortsUsage = checkPortsUsage;
|
|
42
|
+
const node_child_process_1 = require("node:child_process");
|
|
43
|
+
const net = __importStar(require("node:net"));
|
|
44
|
+
const path = __importStar(require("node:path"));
|
|
45
|
+
/**
|
|
46
|
+
* Check if Docker daemon is running
|
|
47
|
+
*/
|
|
48
|
+
function isDockerRunning() {
|
|
49
|
+
try {
|
|
50
|
+
(0, node_child_process_1.execSync)('docker info', { stdio: 'pipe' });
|
|
51
|
+
return true;
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Check if a port is being used by a Docker container from the current project
|
|
59
|
+
*/
|
|
60
|
+
function isPortUsedByProjectDocker(port) {
|
|
61
|
+
try {
|
|
62
|
+
// Get current working directory name as project identifier (Windows compatible)
|
|
63
|
+
const projectName = path.basename(process.cwd()).toLowerCase();
|
|
64
|
+
// First, try to check using Docker Compose project labels
|
|
65
|
+
try {
|
|
66
|
+
const composeContainers = (0, node_child_process_1.execSync)(`docker ps --filter "label=com.docker.compose.project=${projectName}" --format "{{.Names}}\t{{.Ports}}\t{{.ID}}"`, {
|
|
67
|
+
encoding: 'utf-8',
|
|
68
|
+
stdio: 'pipe',
|
|
69
|
+
}).trim();
|
|
70
|
+
if (composeContainers) {
|
|
71
|
+
const lines = composeContainers.split('\n').filter(line => {
|
|
72
|
+
const parts = line.split('\t');
|
|
73
|
+
if (parts.length >= 2) {
|
|
74
|
+
const ports = parts[1];
|
|
75
|
+
return ports.includes(`:${port}->`) || ports.includes(`0.0.0.0:${port}->`) || ports.includes(`*:${port}->`);
|
|
76
|
+
}
|
|
77
|
+
return false;
|
|
78
|
+
});
|
|
79
|
+
if (lines.length > 0) {
|
|
80
|
+
const [containerName, ports, containerId] = lines[0].split('\t');
|
|
81
|
+
return {
|
|
82
|
+
containerId,
|
|
83
|
+
containerName,
|
|
84
|
+
isDocker: true,
|
|
85
|
+
};
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
// Continue with fallback approach
|
|
91
|
+
}
|
|
92
|
+
// Fallback: Get all running Docker containers with their ports
|
|
93
|
+
const dockerPs = (0, node_child_process_1.execSync)(`docker ps --format "{{.Names}}\t{{.Ports}}\t{{.ID}}"`, {
|
|
94
|
+
encoding: 'utf-8',
|
|
95
|
+
stdio: 'pipe',
|
|
96
|
+
});
|
|
97
|
+
// Filter lines that contain the specific port we're looking for
|
|
98
|
+
const lines = dockerPs
|
|
99
|
+
.trim()
|
|
100
|
+
.split('\n')
|
|
101
|
+
.filter(line => {
|
|
102
|
+
const parts = line.split('\t');
|
|
103
|
+
if (parts.length >= 2) {
|
|
104
|
+
const ports = parts[1];
|
|
105
|
+
// Check if this container is using our target port
|
|
106
|
+
return ports.includes(`:${port}->`) || ports.includes(`0.0.0.0:${port}->`) || ports.includes(`*:${port}->`);
|
|
107
|
+
}
|
|
108
|
+
return false;
|
|
109
|
+
});
|
|
110
|
+
for (const line of lines) {
|
|
111
|
+
const parts = line.split('\t');
|
|
112
|
+
if (parts.length < 2) {
|
|
113
|
+
continue;
|
|
114
|
+
}
|
|
115
|
+
const [containerName, ports, containerId] = parts;
|
|
116
|
+
// Enhanced project container detection - must match the EXACT project name
|
|
117
|
+
const isProjectContainer =
|
|
118
|
+
// Direct project name match - must be exact
|
|
119
|
+
containerName.toLowerCase().includes(projectName.toLowerCase()) &&
|
|
120
|
+
// Docker compose naming patterns (projectname_service_1, projectname-service-1)
|
|
121
|
+
(containerName.startsWith(`${projectName}_`) ||
|
|
122
|
+
containerName.startsWith(`${projectName}-`) ||
|
|
123
|
+
// Common Slingr app container patterns with project name
|
|
124
|
+
containerName.startsWith(`${projectName}`) ||
|
|
125
|
+
// Database service patterns WITH project name
|
|
126
|
+
(containerName.includes('-db') && containerName.includes(projectName)) ||
|
|
127
|
+
(containerName.includes('_db') && containerName.includes(projectName)));
|
|
128
|
+
if (isProjectContainer) {
|
|
129
|
+
return {
|
|
130
|
+
containerId,
|
|
131
|
+
containerName,
|
|
132
|
+
isDocker: true,
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
return { isDocker: false };
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
return { isDocker: false };
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
/**
|
|
143
|
+
* Check if a port is currently in use using system tools
|
|
144
|
+
*/
|
|
145
|
+
async function isPortInUse(port, host = 'localhost') {
|
|
146
|
+
// Detect OS for appropriate command
|
|
147
|
+
const isWindows = process.platform === 'win32';
|
|
148
|
+
try {
|
|
149
|
+
if (isWindows) {
|
|
150
|
+
// Windows: use netstat command
|
|
151
|
+
const netstatResult = (0, node_child_process_1.execSync)(`netstat -an | findstr :${port}`, {
|
|
152
|
+
encoding: 'utf-8',
|
|
153
|
+
stdio: 'pipe',
|
|
154
|
+
});
|
|
155
|
+
return netstatResult.trim().length > 0;
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
// Unix/Linux/macOS: try lsof first
|
|
159
|
+
const lsofResult = (0, node_child_process_1.execSync)(`lsof -ti:${port}`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
160
|
+
return lsofResult.trim().length > 0;
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
catch {
|
|
164
|
+
try {
|
|
165
|
+
if (!isWindows) {
|
|
166
|
+
// Fallback: try netstat for Unix systems
|
|
167
|
+
const netstatResult = (0, node_child_process_1.execSync)(`netstat -tulpn 2>/dev/null | grep :${port}`, {
|
|
168
|
+
encoding: 'utf-8',
|
|
169
|
+
stdio: 'pipe',
|
|
170
|
+
});
|
|
171
|
+
return netstatResult.trim().length > 0;
|
|
172
|
+
}
|
|
173
|
+
}
|
|
174
|
+
catch {
|
|
175
|
+
// Continue to final fallback
|
|
176
|
+
}
|
|
177
|
+
// Final fallback: try to bind to the port
|
|
178
|
+
return new Promise(resolve => {
|
|
179
|
+
const server = net.createServer();
|
|
180
|
+
server.listen(port, host, () => {
|
|
181
|
+
server.once('close', () => {
|
|
182
|
+
resolve(false); // Port is available
|
|
183
|
+
});
|
|
184
|
+
server.close();
|
|
185
|
+
});
|
|
186
|
+
server.on('error', () => {
|
|
187
|
+
resolve(true); // Port is in use
|
|
188
|
+
});
|
|
189
|
+
});
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Find what process is using a specific port
|
|
194
|
+
*/
|
|
195
|
+
function getProcessUsingPort(port) {
|
|
196
|
+
const isWindows = process.platform === 'win32';
|
|
197
|
+
try {
|
|
198
|
+
if (isWindows) {
|
|
199
|
+
// Windows: use netstat to get process info
|
|
200
|
+
const result = (0, node_child_process_1.execSync)(`netstat -ano | findstr :${port}`, {
|
|
201
|
+
encoding: 'utf-8',
|
|
202
|
+
stdio: 'pipe',
|
|
203
|
+
});
|
|
204
|
+
if (result.trim()) {
|
|
205
|
+
// Extract PID from netstat output (last column)
|
|
206
|
+
const lines = result.trim().split('\n');
|
|
207
|
+
for (const line of lines) {
|
|
208
|
+
const parts = line.trim().split(/\s+/);
|
|
209
|
+
if (parts.length >= 5) {
|
|
210
|
+
const pid = parts[parts.length - 1];
|
|
211
|
+
try {
|
|
212
|
+
// Get process name using tasklist
|
|
213
|
+
const processInfo = (0, node_child_process_1.execSync)(`tasklist /FI "PID eq ${pid}" /FO CSV /NH`, {
|
|
214
|
+
encoding: 'utf-8',
|
|
215
|
+
stdio: 'pipe',
|
|
216
|
+
});
|
|
217
|
+
if (processInfo.trim()) {
|
|
218
|
+
const processName = processInfo.split(',')[0].replace(/"/g, '');
|
|
219
|
+
return `${processName} (PID: ${pid})`;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
catch {
|
|
223
|
+
return `Process ID: ${pid}`;
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
}
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
// Unix/Linux/macOS: use lsof
|
|
231
|
+
const result = (0, node_child_process_1.execSync)(`lsof -ti:${port}`, { encoding: 'utf-8', stdio: 'pipe' });
|
|
232
|
+
const pid = result.trim();
|
|
233
|
+
if (pid) {
|
|
234
|
+
try {
|
|
235
|
+
// Get process info
|
|
236
|
+
const processInfo = (0, node_child_process_1.execSync)(`ps -p ${pid} -o pid,comm,args --no-headers`, {
|
|
237
|
+
encoding: 'utf-8',
|
|
238
|
+
stdio: 'pipe',
|
|
239
|
+
});
|
|
240
|
+
return processInfo.trim();
|
|
241
|
+
}
|
|
242
|
+
catch {
|
|
243
|
+
return `Process ID: ${pid}`;
|
|
244
|
+
}
|
|
245
|
+
}
|
|
246
|
+
}
|
|
247
|
+
}
|
|
248
|
+
catch {
|
|
249
|
+
// Commands failed, try alternative approaches
|
|
250
|
+
try {
|
|
251
|
+
if (!isWindows) {
|
|
252
|
+
// Fallback for Unix: try netstat
|
|
253
|
+
const result = (0, node_child_process_1.execSync)(`netstat -tulpn 2>/dev/null | grep :${port}`, {
|
|
254
|
+
encoding: 'utf-8',
|
|
255
|
+
stdio: 'pipe',
|
|
256
|
+
});
|
|
257
|
+
return result.trim();
|
|
258
|
+
}
|
|
259
|
+
}
|
|
260
|
+
catch {
|
|
261
|
+
// If all approaches fail, we can't determine what's using the port
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
return null;
|
|
265
|
+
}
|
|
266
|
+
/**
|
|
267
|
+
* Find an available port starting from a given port
|
|
268
|
+
*/
|
|
269
|
+
async function findAvailablePort(startingPort, maxAttempts = 10) {
|
|
270
|
+
for (let port = startingPort; port < startingPort + maxAttempts; port++) {
|
|
271
|
+
if (!(await isPortInUse(port))) {
|
|
272
|
+
return port;
|
|
273
|
+
}
|
|
274
|
+
}
|
|
275
|
+
return null;
|
|
276
|
+
}
|
|
277
|
+
/**
|
|
278
|
+
* Check multiple ports and return information about their usage
|
|
279
|
+
*/
|
|
280
|
+
async function checkPortsUsage(ports) {
|
|
281
|
+
const results = [];
|
|
282
|
+
for (const port of ports) {
|
|
283
|
+
const inUse = await isPortInUse(port);
|
|
284
|
+
const dockerInfo = isPortUsedByProjectDocker(port);
|
|
285
|
+
const result = {
|
|
286
|
+
inUse,
|
|
287
|
+
isProjectDocker: dockerInfo.isDocker,
|
|
288
|
+
port,
|
|
289
|
+
};
|
|
290
|
+
// Only add optional properties if they have values
|
|
291
|
+
if (dockerInfo.containerId) {
|
|
292
|
+
result.containerId = dockerInfo.containerId;
|
|
293
|
+
}
|
|
294
|
+
if (dockerInfo.containerName) {
|
|
295
|
+
result.containerName = dockerInfo.containerName;
|
|
296
|
+
}
|
|
297
|
+
if (inUse && !dockerInfo.isDocker) {
|
|
298
|
+
// Only get process info if it's not a project Docker container
|
|
299
|
+
const process = getProcessUsingPort(port);
|
|
300
|
+
if (process) {
|
|
301
|
+
result.process = process;
|
|
302
|
+
}
|
|
303
|
+
}
|
|
304
|
+
results.push(result);
|
|
305
|
+
}
|
|
306
|
+
return results;
|
|
307
|
+
}
|
|
308
|
+
//# sourceMappingURL=portChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"portChecker.js","sourceRoot":"","sources":["../../src/utils/portChecker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { ModelMetadata } from './model-analyzer.js';
|
|
2
|
+
export interface DataGenerationOptions {
|
|
3
|
+
count?: number;
|
|
4
|
+
locale?: string;
|
|
5
|
+
seed?: number;
|
|
6
|
+
relationships?: boolean;
|
|
7
|
+
verbose?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export interface GeneratedRecord {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export interface DatasetGenerationResult {
|
|
13
|
+
modelName: string;
|
|
14
|
+
records: GeneratedRecord[];
|
|
15
|
+
filePath: string;
|
|
16
|
+
}
|
|
17
|
+
export declare class SyntheticDataGenerator {
|
|
18
|
+
private options;
|
|
19
|
+
private generatedData;
|
|
20
|
+
constructor(options?: DataGenerationOptions);
|
|
21
|
+
/**
|
|
22
|
+
* Generate synthetic datasets for multiple models
|
|
23
|
+
*/
|
|
24
|
+
generateDatasets(models: ModelMetadata[], outputDir: string, datasetName: string): Promise<DatasetGenerationResult[]>;
|
|
25
|
+
/**
|
|
26
|
+
* Generate records for a single model using Faker
|
|
27
|
+
*/
|
|
28
|
+
private generateRecordsForModel;
|
|
29
|
+
/**
|
|
30
|
+
* Generate records using Faker
|
|
31
|
+
*/
|
|
32
|
+
private generateRecordsWithFaker;
|
|
33
|
+
/**
|
|
34
|
+
* Generate a value for a specific field using Faker
|
|
35
|
+
*/
|
|
36
|
+
private generateFieldValue;
|
|
37
|
+
/**
|
|
38
|
+
* Generate a relationship value (reference, composition, or shared composition)
|
|
39
|
+
*/
|
|
40
|
+
private generateRelationshipValue;
|
|
41
|
+
/**
|
|
42
|
+
* Generate an object dynamically based on model metadata
|
|
43
|
+
*/
|
|
44
|
+
private generateObjectFromModel;
|
|
45
|
+
/**
|
|
46
|
+
* Generate a simple field value without relationships to avoid recursion
|
|
47
|
+
*/
|
|
48
|
+
private generateSimpleFieldValue;
|
|
49
|
+
/**
|
|
50
|
+
* Generate text value respecting constraints
|
|
51
|
+
*/
|
|
52
|
+
private generateTextValue;
|
|
53
|
+
/**
|
|
54
|
+
* Generate integer value respecting constraints
|
|
55
|
+
*/
|
|
56
|
+
private generateIntegerValue;
|
|
57
|
+
/**
|
|
58
|
+
* Generate float value respecting constraints
|
|
59
|
+
*/
|
|
60
|
+
private generateFloatValue;
|
|
61
|
+
/**
|
|
62
|
+
* Evaluate required field condition
|
|
63
|
+
*/
|
|
64
|
+
private evaluateRequired;
|
|
65
|
+
/**
|
|
66
|
+
* Evaluate available field condition
|
|
67
|
+
*/
|
|
68
|
+
private evaluateAvailable;
|
|
69
|
+
/**
|
|
70
|
+
* Sort models by dependencies to handle relationships properly
|
|
71
|
+
*/
|
|
72
|
+
private sortModelsByDependencies;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=synthetic-data-generator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"synthetic-data-generator.d.ts","sourceRoot":"","sources":["../../src/utils/synthetic-data-generator.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAiB,MAAM,qBAAqB,CAAC;AAEnE,MAAM,WAAW,qBAAqB;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,eAAe;IAC9B,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,qBAAa,sBAAsB;IACjC,OAAO,CAAC,OAAO,CAAkC;IACjD,OAAO,CAAC,aAAa,CAA6C;gBAEtD,OAAO,GAAE,qBAA0B;IAa/C;;OAEG;IACG,gBAAgB,CACpB,MAAM,EAAE,aAAa,EAAE,EACvB,SAAS,EAAE,MAAM,EACjB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,uBAAuB,EAAE,CAAC;IAoCrC;;OAEG;YACW,uBAAuB;IAMrC;;OAEG;IACH,OAAO,CAAC,wBAAwB;IA+BhC;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAuE1B;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA+CjC;;OAEG;IACH,OAAO,CAAC,uBAAuB;IAwD/B;;OAEG;IACH,OAAO,CAAC,wBAAwB;IAqChC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAyDzB;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAY5B;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAU1B;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAgBxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAmBzB;;OAEG;IACH,OAAO,CAAC,wBAAwB;CA0DjC"}
|