@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,315 @@
|
|
|
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
|
+
const core_1 = require("@oclif/core");
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const node_child_process_1 = require("node:child_process");
|
|
9
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
10
|
+
const datasourceParser_js_1 = require("../utils/datasourceParser.js");
|
|
11
|
+
const portChecker_js_1 = require("../utils/portChecker.js");
|
|
12
|
+
class Run extends core_1.Command {
|
|
13
|
+
static description = 'Run a Slingr application locally';
|
|
14
|
+
static examples = [
|
|
15
|
+
'<%= config.bin %> <%= command.id %>',
|
|
16
|
+
'<%= config.bin %> <%= command.id %> --skip-infra',
|
|
17
|
+
];
|
|
18
|
+
static flags = {
|
|
19
|
+
help: core_1.Flags.help({ char: 'h' }),
|
|
20
|
+
'skip-infra': core_1.Flags.boolean({
|
|
21
|
+
char: 'i',
|
|
22
|
+
description: 'Skip infrastructure setup and checks',
|
|
23
|
+
required: false,
|
|
24
|
+
}),
|
|
25
|
+
};
|
|
26
|
+
async run() {
|
|
27
|
+
const { flags } = await this.parse(Run);
|
|
28
|
+
try {
|
|
29
|
+
// Check if we're in a Slingr app directory
|
|
30
|
+
const packageJsonPath = node_path_1.default.join(process.cwd(), 'package.json');
|
|
31
|
+
if (!(await fs_extra_1.default.pathExists(packageJsonPath))) {
|
|
32
|
+
this.error("Not in a Slingr application directory. Please run this command from your app's root directory.");
|
|
33
|
+
}
|
|
34
|
+
const packageJson = await fs_extra_1.default.readJSON(packageJsonPath);
|
|
35
|
+
if (!packageJson.dependencies?.['slingr-framework']) {
|
|
36
|
+
this.error('This directory does not contain a Slingr application.');
|
|
37
|
+
}
|
|
38
|
+
// Check if src/index.ts exists
|
|
39
|
+
const srcIndexPath = node_path_1.default.join(process.cwd(), 'src', 'index.ts');
|
|
40
|
+
if (!(await fs_extra_1.default.pathExists(srcIndexPath))) {
|
|
41
|
+
this.error('src/index.ts not found. This does not appear to be a valid Slingr application.');
|
|
42
|
+
}
|
|
43
|
+
// Step 1: Build slingr-framework
|
|
44
|
+
await this.buildFramework();
|
|
45
|
+
// Step 2: Generate actions index
|
|
46
|
+
await this.generateActionsIndex();
|
|
47
|
+
// Step 3: Generate code
|
|
48
|
+
await this.generateCode();
|
|
49
|
+
// Step 4: Update and check infrastructure
|
|
50
|
+
if (!flags['skip-infra']) {
|
|
51
|
+
await this.checkInfrastructure();
|
|
52
|
+
}
|
|
53
|
+
// Step 4: Execute the application
|
|
54
|
+
await this.executeApp();
|
|
55
|
+
}
|
|
56
|
+
catch (error) {
|
|
57
|
+
this.error(error.message);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
async buildFramework(silent = false) {
|
|
61
|
+
const currentDir = process.cwd();
|
|
62
|
+
const nodeModulesPath = node_path_1.default.join(currentDir, 'node_modules', 'slingr-framework');
|
|
63
|
+
if (!silent) {
|
|
64
|
+
this.log(`Looking for slingr-framework in: ${nodeModulesPath}`);
|
|
65
|
+
}
|
|
66
|
+
if (!(await fs_extra_1.default.pathExists(nodeModulesPath))) {
|
|
67
|
+
this.error('slingr-framework not found in node_modules. Please run npm install first.');
|
|
68
|
+
}
|
|
69
|
+
// For linked packages, the framework should already be built
|
|
70
|
+
// Just check if it's available
|
|
71
|
+
try {
|
|
72
|
+
require.resolve('slingr-framework');
|
|
73
|
+
if (!silent) {
|
|
74
|
+
this.log('✅ slingr-framework is available');
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
this.error('slingr-framework module cannot be loaded. Please ensure it is properly installed.');
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
async checkGraphQLSetup() {
|
|
82
|
+
const schemaPath = node_path_1.default.join(process.cwd(), 'generated', 'gql', 'schema.graphql');
|
|
83
|
+
const sdkPath = node_path_1.default.join(process.cwd(), 'generated', 'gql', 'sdk.ts');
|
|
84
|
+
const indexPath = node_path_1.default.join(process.cwd(), 'generated', 'gql', 'index.ts');
|
|
85
|
+
const schemaExists = await fs_extra_1.default.pathExists(schemaPath);
|
|
86
|
+
const sdkExists = await fs_extra_1.default.pathExists(sdkPath);
|
|
87
|
+
const indexExists = await fs_extra_1.default.pathExists(indexPath);
|
|
88
|
+
if (!schemaExists || !sdkExists || !indexExists) {
|
|
89
|
+
this.log('');
|
|
90
|
+
this.log('⚠️ GraphQL schema and SDK not found!');
|
|
91
|
+
this.log('');
|
|
92
|
+
this.log('The GraphQL server requires a generated schema and SDK to run.');
|
|
93
|
+
this.log('');
|
|
94
|
+
if (!schemaExists) {
|
|
95
|
+
this.log('❌ Missing: generated/gql/schema.graphql');
|
|
96
|
+
}
|
|
97
|
+
if (!sdkExists) {
|
|
98
|
+
this.log('❌ Missing: generated/gql/sdk.ts');
|
|
99
|
+
}
|
|
100
|
+
if (!indexExists) {
|
|
101
|
+
this.log('❌ Missing: generated/gql/index.ts');
|
|
102
|
+
}
|
|
103
|
+
this.log('');
|
|
104
|
+
this.log('📋 To generate the required files, run:');
|
|
105
|
+
this.log('');
|
|
106
|
+
this.log(' 1. Generate GraphQL schema:');
|
|
107
|
+
this.log(' $ slingr gql generate-schema');
|
|
108
|
+
this.log('');
|
|
109
|
+
this.log(' 2. Generate SDK:');
|
|
110
|
+
this.log(' $ slingr gql generate-sdk');
|
|
111
|
+
this.log('');
|
|
112
|
+
this.log(' 3. Then run the server:');
|
|
113
|
+
this.log(' $ slingr run');
|
|
114
|
+
this.log('');
|
|
115
|
+
this.error('GraphQL setup incomplete. Please run the commands above.');
|
|
116
|
+
}
|
|
117
|
+
this.log('✅ GraphQL schema and SDK found');
|
|
118
|
+
}
|
|
119
|
+
async checkInfrastructure() {
|
|
120
|
+
const dataSources = await this.loadDataSources();
|
|
121
|
+
// Check if docker is installed
|
|
122
|
+
try {
|
|
123
|
+
(0, node_child_process_1.execSync)('docker --version', { stdio: 'pipe' });
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
this.error('Docker is not installed. Please install Docker to run infrastructure services.');
|
|
127
|
+
}
|
|
128
|
+
// Check if Docker Engine is running BEFORE checking ports
|
|
129
|
+
if (!(0, portChecker_js_1.isDockerRunning)()) {
|
|
130
|
+
this.error('🐳 Docker is not running. Please start Docker and try again.\n\n' +
|
|
131
|
+
'On macOS/Windows: Start Docker Desktop\n' +
|
|
132
|
+
'On Linux: Run "sudo systemctl start docker" or "sudo service docker start"');
|
|
133
|
+
}
|
|
134
|
+
// Check if docker-compose is installed
|
|
135
|
+
try {
|
|
136
|
+
(0, node_child_process_1.execSync)('docker compose version', { stdio: 'pipe' });
|
|
137
|
+
}
|
|
138
|
+
catch {
|
|
139
|
+
this.error('Docker Compose is not installed. Please install Docker Compose to run infrastructure services.');
|
|
140
|
+
}
|
|
141
|
+
// Check port availability before starting services
|
|
142
|
+
await this.checkPortAvailability();
|
|
143
|
+
// Run infra update command to ensure latest infrastructure configuration
|
|
144
|
+
await this.config.runCommand('infra:update', ['--all']);
|
|
145
|
+
// Start infrastructure services
|
|
146
|
+
this.log('Starting infrastructure services...');
|
|
147
|
+
try {
|
|
148
|
+
(0, node_child_process_1.execSync)('docker compose up -d', { stdio: 'inherit' });
|
|
149
|
+
}
|
|
150
|
+
catch {
|
|
151
|
+
this.error('Failed to start Docker services. This might be due to port conflicts or other Docker issues.');
|
|
152
|
+
}
|
|
153
|
+
// Wait for services to be healthy
|
|
154
|
+
this.log('Waiting for services to be ready...');
|
|
155
|
+
for (const ds of dataSources) {
|
|
156
|
+
const serviceName = `${ds.name}-db`;
|
|
157
|
+
this.log(`Checking ${serviceName}...`);
|
|
158
|
+
let attempts = 0;
|
|
159
|
+
const maxAttempts = 30;
|
|
160
|
+
while (attempts < maxAttempts) {
|
|
161
|
+
try {
|
|
162
|
+
const containerInfo = (0, node_child_process_1.execSync)(`docker ps -f name=${serviceName} --format '{{.Status}}'`, {
|
|
163
|
+
encoding: 'utf-8',
|
|
164
|
+
});
|
|
165
|
+
if (containerInfo.includes('healthy')) {
|
|
166
|
+
this.log(`Service ${serviceName} is healthy`);
|
|
167
|
+
break;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
catch {
|
|
171
|
+
// Continue trying
|
|
172
|
+
}
|
|
173
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
174
|
+
attempts++;
|
|
175
|
+
if (attempts === maxAttempts) {
|
|
176
|
+
this.error(`Service ${serviceName} is not healthy after ${maxAttempts} seconds`);
|
|
177
|
+
}
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
async checkPortAvailability() {
|
|
182
|
+
this.log('Checking port availability for datasources...');
|
|
183
|
+
const dataSourcePorts = await (0, datasourceParser_js_1.extractDataSourcePorts)();
|
|
184
|
+
if (dataSourcePorts.length === 0) {
|
|
185
|
+
return;
|
|
186
|
+
}
|
|
187
|
+
const ports = dataSourcePorts.map(ds => ds.port);
|
|
188
|
+
const portUsage = await (0, portChecker_js_1.checkPortsUsage)(ports);
|
|
189
|
+
const conflictingPorts = portUsage.filter(p => p.inUse && !p.isProjectDocker);
|
|
190
|
+
const dockerPorts = portUsage.filter(p => p.inUse && p.isProjectDocker);
|
|
191
|
+
// Show info about existing Docker containers
|
|
192
|
+
if (dockerPorts.length > 0) {
|
|
193
|
+
this.log('ℹ️ Found existing project containers:');
|
|
194
|
+
for (const dockerPort of dockerPorts) {
|
|
195
|
+
const dataSource = dataSourcePorts.find(ds => ds.port === dockerPort.port);
|
|
196
|
+
if (dataSource) {
|
|
197
|
+
this.log(` ✅ Port ${dockerPort.port} - ${dataSource.type} (${dockerPort.containerName})`);
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
this.log('');
|
|
201
|
+
}
|
|
202
|
+
if (conflictingPorts.length > 0) {
|
|
203
|
+
this.log('⚠️ Port conflicts detected!');
|
|
204
|
+
this.log('');
|
|
205
|
+
for (const conflictPort of conflictingPorts) {
|
|
206
|
+
const dataSource = dataSourcePorts.find(ds => ds.port === conflictPort.port);
|
|
207
|
+
if (dataSource) {
|
|
208
|
+
this.log(`❌ Port ${conflictPort.port} is already in use (required by ${dataSource.fileName})`);
|
|
209
|
+
this.log(` Database type: ${dataSource.type}`);
|
|
210
|
+
if (conflictPort.process) {
|
|
211
|
+
this.log(` Currently used by: ${conflictPort.process}`);
|
|
212
|
+
}
|
|
213
|
+
else {
|
|
214
|
+
this.log(' Currently used by: Unknown process');
|
|
215
|
+
}
|
|
216
|
+
// Suggest alternative ports
|
|
217
|
+
const alternativePort = await (0, portChecker_js_1.findAvailablePort)(conflictPort.port + 1, 10);
|
|
218
|
+
if (alternativePort) {
|
|
219
|
+
this.log(` 💡 Suggested alternative: port ${alternativePort}`);
|
|
220
|
+
this.log(` To use this port, update ${dataSource.fileName} and change the port to ${alternativePort}`);
|
|
221
|
+
}
|
|
222
|
+
this.log('');
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
this.log('💡 Solutions:');
|
|
226
|
+
this.log('1. Stop the processes using these ports');
|
|
227
|
+
this.log('2. Update your datasource files to use different ports');
|
|
228
|
+
this.log('3. Use --skip-infra flag to run without infrastructure');
|
|
229
|
+
this.log('');
|
|
230
|
+
this.error(`Cannot start infrastructure due to port conflicts. Please resolve the port conflicts above.`);
|
|
231
|
+
}
|
|
232
|
+
else {
|
|
233
|
+
this.log('✅ All required ports are available');
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
async generateActionsIndex() {
|
|
237
|
+
this.log('🔄 Generating actions index...');
|
|
238
|
+
const actionsPath = node_path_1.default.join(process.cwd(), 'src', 'actions');
|
|
239
|
+
// Check if actions directory exists
|
|
240
|
+
if (!(await fs_extra_1.default.pathExists(actionsPath))) {
|
|
241
|
+
this.log('ℹ️ No actions directory found, skipping action index generation');
|
|
242
|
+
return;
|
|
243
|
+
}
|
|
244
|
+
try {
|
|
245
|
+
// Import and call the generateActionsIndex function directly from the framework
|
|
246
|
+
const framework = await import('slingr-framework');
|
|
247
|
+
await framework.generateActionsIndex(process.cwd(), 'src/actions');
|
|
248
|
+
this.log('✅ Actions index generated successfully');
|
|
249
|
+
}
|
|
250
|
+
catch (error) {
|
|
251
|
+
this.warn(`Failed to generate actions index: ${error.message}`);
|
|
252
|
+
this.warn('Continuing anyway, but actions might not be registered correctly.');
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
async generateCode() {
|
|
256
|
+
// Compile TypeScript code
|
|
257
|
+
this.log('Compiling TypeScript code...');
|
|
258
|
+
(0, node_child_process_1.execSync)('npm run build', { stdio: 'inherit' });
|
|
259
|
+
}
|
|
260
|
+
async loadDataSources() {
|
|
261
|
+
const dataSources = [];
|
|
262
|
+
const dataSourcesPath = node_path_1.default.join(process.cwd(), 'src', 'dataSources');
|
|
263
|
+
if (await fs_extra_1.default.pathExists(dataSourcesPath)) {
|
|
264
|
+
const files = await fs_extra_1.default.readdir(dataSourcesPath);
|
|
265
|
+
for (const file of files) {
|
|
266
|
+
if (file.endsWith('.ts')) {
|
|
267
|
+
const content = await fs_extra_1.default.readFile(node_path_1.default.join(dataSourcesPath, file), 'utf8');
|
|
268
|
+
const typeMatch = content.match(/type:\s*['"]([^'"]+)['"]/);
|
|
269
|
+
if (typeMatch) {
|
|
270
|
+
let type = typeMatch[1];
|
|
271
|
+
if (type === 'postgresql') {
|
|
272
|
+
type = 'postgres';
|
|
273
|
+
}
|
|
274
|
+
dataSources.push({
|
|
275
|
+
name: file.replace('.ts', ''),
|
|
276
|
+
type,
|
|
277
|
+
});
|
|
278
|
+
}
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
}
|
|
282
|
+
return dataSources;
|
|
283
|
+
}
|
|
284
|
+
async executeApp() {
|
|
285
|
+
this.log('🚀 Starting Slingr application...');
|
|
286
|
+
// Execute using the npm run dev script which is more reliable
|
|
287
|
+
try {
|
|
288
|
+
this.log('');
|
|
289
|
+
(0, node_child_process_1.execSync)('npm run dev', {
|
|
290
|
+
stdio: 'inherit',
|
|
291
|
+
cwd: process.cwd(),
|
|
292
|
+
});
|
|
293
|
+
}
|
|
294
|
+
catch (error) {
|
|
295
|
+
// If it's Ctrl+C, exit gracefully
|
|
296
|
+
if (error.signal === 'SIGINT') {
|
|
297
|
+
this.log('\n👋 Application stopped gracefully');
|
|
298
|
+
process.exit(0);
|
|
299
|
+
}
|
|
300
|
+
// If npm run dev failed, try with the compiled version
|
|
301
|
+
this.log('🔄 npm run dev failed, trying with compiled version...');
|
|
302
|
+
try {
|
|
303
|
+
(0, node_child_process_1.execSync)('node dist/index.js', {
|
|
304
|
+
stdio: 'inherit',
|
|
305
|
+
cwd: process.cwd(),
|
|
306
|
+
});
|
|
307
|
+
}
|
|
308
|
+
catch (nodeError) {
|
|
309
|
+
this.error(`Failed to start application: ${nodeError.message}`);
|
|
310
|
+
}
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
}
|
|
314
|
+
exports.default = Run;
|
|
315
|
+
//# sourceMappingURL=run.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run.js","sourceRoot":"","sources":["../../src/commands/run.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Command } from '@oclif/core';
|
|
2
|
+
export default class Setup extends Command {
|
|
3
|
+
static description: string;
|
|
4
|
+
static examples: string[];
|
|
5
|
+
static flags: {
|
|
6
|
+
'skip-install': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
7
|
+
'skip-schema': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
8
|
+
'skip-sdk': import("@oclif/core/interfaces").BooleanFlag<boolean>;
|
|
9
|
+
help: import("@oclif/core/interfaces").BooleanFlag<void>;
|
|
10
|
+
};
|
|
11
|
+
run(): Promise<void>;
|
|
12
|
+
private installDependencies;
|
|
13
|
+
private setupFrameworkForDevelopment;
|
|
14
|
+
private generateSchema;
|
|
15
|
+
private generateSDK;
|
|
16
|
+
private finalBuild;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=setup.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.d.ts","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAK7C,MAAM,CAAC,OAAO,OAAO,KAAM,SAAQ,OAAO;IACxC,MAAM,CAAC,WAAW,SAAuF;IAEzG,MAAM,CAAC,QAAQ,WAAiF;IAEhG,MAAM,CAAC,KAAK;;;;;MAcV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAwDZ,mBAAmB;YAanB,4BAA4B;YAuE5B,cAAc;YAad,WAAW;YAaX,UAAU;CAazB"}
|
|
@@ -0,0 +1,189 @@
|
|
|
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
|
+
const core_1 = require("@oclif/core");
|
|
7
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
8
|
+
const node_path_1 = __importDefault(require("node:path"));
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
class Setup extends core_1.Command {
|
|
11
|
+
static description = 'Complete setup of a Slingr application with framework, schema, and SDK generation';
|
|
12
|
+
static examples = ['slingr setup', 'slingr setup --skip-install', 'slingr setup --skip-schema'];
|
|
13
|
+
static flags = {
|
|
14
|
+
'skip-install': core_1.Flags.boolean({
|
|
15
|
+
description: 'Skip npm install step',
|
|
16
|
+
default: false,
|
|
17
|
+
}),
|
|
18
|
+
'skip-schema': core_1.Flags.boolean({
|
|
19
|
+
description: 'Skip schema generation step',
|
|
20
|
+
default: false,
|
|
21
|
+
}),
|
|
22
|
+
'skip-sdk': core_1.Flags.boolean({
|
|
23
|
+
description: 'Skip SDK generation step',
|
|
24
|
+
default: false,
|
|
25
|
+
}),
|
|
26
|
+
help: core_1.Flags.help({ char: 'h' }),
|
|
27
|
+
};
|
|
28
|
+
async run() {
|
|
29
|
+
const { flags } = await this.parse(Setup);
|
|
30
|
+
// Verify we're in a Slingr app directory
|
|
31
|
+
const pkgPath = node_path_1.default.join(process.cwd(), 'package.json');
|
|
32
|
+
if (!(await fs_extra_1.default.pathExists(pkgPath))) {
|
|
33
|
+
this.error("Not in a Slingr application directory. Please run this command from your app's root directory.");
|
|
34
|
+
}
|
|
35
|
+
// Check if the app uses slingr-framework
|
|
36
|
+
const packageJson = await fs_extra_1.default.readJSON(pkgPath);
|
|
37
|
+
if (!packageJson.dependencies?.['slingr-framework']) {
|
|
38
|
+
this.error('This directory does not contain a Slingr application.');
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
this.log('🚀 Starting complete Slingr application setup...');
|
|
42
|
+
this.log('');
|
|
43
|
+
// Step 1: Install dependencies
|
|
44
|
+
if (!flags['skip-install']) {
|
|
45
|
+
await this.installDependencies();
|
|
46
|
+
}
|
|
47
|
+
// Step 2: Setup framework for development (if in dev environment)
|
|
48
|
+
await this.setupFrameworkForDevelopment();
|
|
49
|
+
// Step 3: Generate schema
|
|
50
|
+
if (!flags['skip-schema']) {
|
|
51
|
+
await this.generateSchema();
|
|
52
|
+
}
|
|
53
|
+
// Step 4: Generate SDK
|
|
54
|
+
if (!flags['skip-sdk']) {
|
|
55
|
+
await this.generateSDK();
|
|
56
|
+
}
|
|
57
|
+
// Step 5: Final build
|
|
58
|
+
await this.finalBuild();
|
|
59
|
+
this.log('');
|
|
60
|
+
this.log('🎉 Setup completed successfully!');
|
|
61
|
+
this.log('');
|
|
62
|
+
this.log('Your Slingr application is ready to use:');
|
|
63
|
+
this.log(' • Dependencies installed');
|
|
64
|
+
this.log(' • GraphQL schema generated');
|
|
65
|
+
this.log(' • TypeScript SDK generated');
|
|
66
|
+
this.log(' • Application compiled');
|
|
67
|
+
this.log('');
|
|
68
|
+
this.log('To start your application:');
|
|
69
|
+
this.log(' slingr run');
|
|
70
|
+
}
|
|
71
|
+
catch (error) {
|
|
72
|
+
this.error(`Setup failed: ${error.message}`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
async installDependencies() {
|
|
76
|
+
this.log('📦 Installing dependencies...');
|
|
77
|
+
try {
|
|
78
|
+
(0, child_process_1.execSync)('npm install', {
|
|
79
|
+
stdio: 'inherit',
|
|
80
|
+
cwd: process.cwd(),
|
|
81
|
+
});
|
|
82
|
+
this.log('✅ Dependencies installed successfully');
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
this.error(`Failed to install dependencies: ${error.message}`);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async setupFrameworkForDevelopment() {
|
|
89
|
+
try {
|
|
90
|
+
this.log('🔧 Setting up framework for development...');
|
|
91
|
+
// Check if we're in the framework development environment
|
|
92
|
+
const frameworkRoot = node_path_1.default.resolve(__dirname, '..', '..', '..');
|
|
93
|
+
const frameworkDistPath = node_path_1.default.join(frameworkRoot, 'framework', 'dist');
|
|
94
|
+
if (await fs_extra_1.default.pathExists(frameworkDistPath)) {
|
|
95
|
+
this.log('Detected framework development environment, setting up local framework...');
|
|
96
|
+
const nodeModulesFrameworkPath = node_path_1.default.join(process.cwd(), 'node_modules', 'slingr-framework');
|
|
97
|
+
// Remove existing framework installation
|
|
98
|
+
if (await fs_extra_1.default.pathExists(nodeModulesFrameworkPath)) {
|
|
99
|
+
await fs_extra_1.default.remove(nodeModulesFrameworkPath);
|
|
100
|
+
}
|
|
101
|
+
// Create framework structure
|
|
102
|
+
await fs_extra_1.default.ensureDir(node_path_1.default.join(nodeModulesFrameworkPath, 'framework', 'dist'));
|
|
103
|
+
// Copy compiled framework
|
|
104
|
+
await fs_extra_1.default.copy(frameworkDistPath, node_path_1.default.join(nodeModulesFrameworkPath, 'framework', 'dist'));
|
|
105
|
+
await fs_extra_1.default.copy(node_path_1.default.join(frameworkRoot, 'framework', 'package.json'), node_path_1.default.join(nodeModulesFrameworkPath, 'framework', 'package.json'));
|
|
106
|
+
// Create main package.json
|
|
107
|
+
const mainPackageJson = {
|
|
108
|
+
name: 'slingr-framework',
|
|
109
|
+
version: '1.0.0',
|
|
110
|
+
description: 'Slingr Framework',
|
|
111
|
+
main: './framework/dist/index.js',
|
|
112
|
+
types: './framework/dist/index.d.ts',
|
|
113
|
+
// Ensure GraphQL dependencies are resolved from the application
|
|
114
|
+
peerDependencies: {
|
|
115
|
+
graphql: '^16.11.0',
|
|
116
|
+
},
|
|
117
|
+
};
|
|
118
|
+
await fs_extra_1.default.writeJSON(node_path_1.default.join(nodeModulesFrameworkPath, 'package.json'), mainPackageJson, { spaces: 2 });
|
|
119
|
+
// Clean up any potential GraphQL conflicts in the copied framework
|
|
120
|
+
const frameworkGraphQLPath = node_path_1.default.join(nodeModulesFrameworkPath, 'framework', 'node_modules');
|
|
121
|
+
if (await fs_extra_1.default.pathExists(frameworkGraphQLPath)) {
|
|
122
|
+
await fs_extra_1.default.remove(frameworkGraphQLPath);
|
|
123
|
+
}
|
|
124
|
+
this.log('✅ Framework set up successfully for development');
|
|
125
|
+
// Force reinstall to resolve any GraphQL conflicts
|
|
126
|
+
this.log('🔄 Resolving GraphQL dependencies...');
|
|
127
|
+
try {
|
|
128
|
+
(0, child_process_1.execSync)('npm install --force', {
|
|
129
|
+
stdio: 'inherit',
|
|
130
|
+
cwd: process.cwd(),
|
|
131
|
+
});
|
|
132
|
+
this.log('✅ Dependencies resolved successfully');
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
this.warn('Could not force reinstall dependencies, continuing...');
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
else {
|
|
139
|
+
this.log('Using framework from npm registry');
|
|
140
|
+
}
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
this.warn(`Could not set up framework automatically: ${error.message}`);
|
|
144
|
+
this.log('Continuing with setup...');
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
async generateSchema() {
|
|
148
|
+
this.log('📋 Generating GraphQL schema...');
|
|
149
|
+
try {
|
|
150
|
+
(0, child_process_1.execSync)('npx slingr gql generate-schema', {
|
|
151
|
+
stdio: 'inherit',
|
|
152
|
+
cwd: process.cwd(),
|
|
153
|
+
});
|
|
154
|
+
this.log('✅ Schema generated successfully');
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
this.error(`Failed to generate schema: ${error.message}`);
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
async generateSDK() {
|
|
161
|
+
this.log('🔨 Generating GraphQL SDK...');
|
|
162
|
+
try {
|
|
163
|
+
(0, child_process_1.execSync)('npx slingr gql generate-sdk', {
|
|
164
|
+
stdio: 'inherit',
|
|
165
|
+
cwd: process.cwd(),
|
|
166
|
+
});
|
|
167
|
+
this.log('✅ SDK generated successfully');
|
|
168
|
+
}
|
|
169
|
+
catch (error) {
|
|
170
|
+
this.error(`Failed to generate SDK: ${error.message}`);
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
async finalBuild() {
|
|
174
|
+
this.log('🏗️ Final compilation...');
|
|
175
|
+
try {
|
|
176
|
+
(0, child_process_1.execSync)('npm run build', {
|
|
177
|
+
stdio: 'inherit',
|
|
178
|
+
cwd: process.cwd(),
|
|
179
|
+
});
|
|
180
|
+
this.log('✅ Application compiled successfully');
|
|
181
|
+
}
|
|
182
|
+
catch (error) {
|
|
183
|
+
this.warn(`Final build had issues: ${error.message}`);
|
|
184
|
+
this.log('This might be normal if there are type issues that will resolve after restart.');
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
}
|
|
188
|
+
exports.default = Setup;
|
|
189
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../../src/commands/setup.ts"],"names":[],"mappings":";;;;;AAAA,sCAA6C;AAC7C,wDAA0B;AAC1B,0DAA6B;AAC7B,iDAAyC;AAEzC,MAAqB,KAAM,SAAQ,cAAO;IACxC,MAAM,CAAC,WAAW,GAAG,mFAAmF,CAAC;IAEzG,MAAM,CAAC,QAAQ,GAAG,CAAC,cAAc,EAAE,6BAA6B,EAAE,4BAA4B,CAAC,CAAC;IAEhG,MAAM,CAAC,KAAK,GAAG;QACb,cAAc,EAAE,YAAK,CAAC,OAAO,CAAC;YAC5B,WAAW,EAAE,uBAAuB;YACpC,OAAO,EAAE,KAAK;SACf,CAAC;QACF,aAAa,EAAE,YAAK,CAAC,OAAO,CAAC;YAC3B,WAAW,EAAE,6BAA6B;YAC1C,OAAO,EAAE,KAAK;SACf,CAAC;QACF,UAAU,EAAE,YAAK,CAAC,OAAO,CAAC;YACxB,WAAW,EAAE,0BAA0B;YACvC,OAAO,EAAE,KAAK;SACf,CAAC;QACF,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;KAChC,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAE1C,yCAAyC;QACzC,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACzD,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;QAC/G,CAAC;QAED,yCAAyC;QACzC,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;QAC/C,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,kBAAkB,CAAC,EAAE,CAAC;YACpD,IAAI,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;QACtE,CAAC;QAED,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YAEb,+BAA+B;YAC/B,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,EAAE,CAAC;gBAC3B,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;YACnC,CAAC;YAED,kEAAkE;YAClE,MAAM,IAAI,CAAC,4BAA4B,EAAE,CAAC;YAE1C,0BAA0B;YAC1B,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;gBAC1B,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC;YAC9B,CAAC;YAED,uBAAuB;YACvB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,EAAE,CAAC;gBACvB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;YAC3B,CAAC;YAED,sBAAsB;YACtB,MAAM,IAAI,CAAC,UAAU,EAAE,CAAC;YAExB,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC;YAC7C,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACrD,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAC3B,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,iBAAkB,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,IAAI,CAAC,GAAG,CAAC,+BAA+B,CAAC,CAAC;QAC1C,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,aAAa,EAAE;gBACtB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;QACpD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,mCAAoC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QAC5E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,4BAA4B;QACxC,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;YAEvD,0DAA0D;YAC1D,MAAM,aAAa,GAAG,mBAAI,CAAC,OAAO,CAAC,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;YAChE,MAAM,iBAAiB,GAAG,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC;YAExE,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;gBAC3C,IAAI,CAAC,GAAG,CAAC,2EAA2E,CAAC,CAAC;gBAEtF,MAAM,wBAAwB,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,kBAAkB,CAAC,CAAC;gBAE9F,yCAAyC;gBACzC,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,wBAAwB,CAAC,EAAE,CAAC;oBAClD,MAAM,kBAAE,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;gBAC5C,CAAC;gBAED,6BAA6B;gBAC7B,MAAM,kBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;gBAE7E,0BAA0B;gBAC1B,MAAM,kBAAE,CAAC,IAAI,CAAC,iBAAiB,EAAE,mBAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,MAAM,CAAC,CAAC,CAAC;gBAC3F,MAAM,kBAAE,CAAC,IAAI,CACX,mBAAI,CAAC,IAAI,CAAC,aAAa,EAAE,WAAW,EAAE,cAAc,CAAC,EACrD,mBAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,cAAc,CAAC,CACjE,CAAC;gBAEF,2BAA2B;gBAC3B,MAAM,eAAe,GAAG;oBACtB,IAAI,EAAE,kBAAkB;oBACxB,OAAO,EAAE,OAAO;oBAChB,WAAW,EAAE,kBAAkB;oBAC/B,IAAI,EAAE,2BAA2B;oBACjC,KAAK,EAAE,6BAA6B;oBACpC,gEAAgE;oBAChE,gBAAgB,EAAE;wBAChB,OAAO,EAAE,UAAU;qBACpB;iBACF,CAAC;gBAEF,MAAM,kBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,cAAc,CAAC,EAAE,eAAe,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;gBAExG,mEAAmE;gBACnE,MAAM,oBAAoB,GAAG,mBAAI,CAAC,IAAI,CAAC,wBAAwB,EAAE,WAAW,EAAE,cAAc,CAAC,CAAC;gBAC9F,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,oBAAoB,CAAC,EAAE,CAAC;oBAC9C,MAAM,kBAAE,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;gBACxC,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;gBAE5D,mDAAmD;gBACnD,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACjD,IAAI,CAAC;oBACH,IAAA,wBAAQ,EAAC,qBAAqB,EAAE;wBAC9B,KAAK,EAAE,SAAS;wBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;qBACnB,CAAC,CAAC;oBACH,IAAI,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;gBACnD,CAAC;gBAAC,OAAO,KAAK,EAAE,CAAC;oBACf,IAAI,CAAC,IAAI,CAAC,uDAAuD,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAChD,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,6CAA8C,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACnF,IAAI,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc;QAC1B,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC5C,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,gCAAgC,EAAE;gBACzC,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;QAC9C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,8BAA+B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QACzC,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,6BAA6B,EAAE;gBACtC,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAC3C,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACpE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,UAAU;QACtB,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QACtC,IAAI,CAAC;YACH,IAAA,wBAAQ,EAAC,eAAe,EAAE;gBACxB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB,CAAC,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;QAClD,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,2BAA4B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,GAAG,CAAC,gFAAgF,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;;AAvMH,wBAwMC"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
var core_1 = require("@oclif/core");
|
|
4
|
+
Object.defineProperty(exports, "run", { enumerable: true, get: function () { return core_1.run; } });
|
|
5
|
+
if (require.main === module) {
|
|
6
|
+
console.log('Hello world!');
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAAA,oCAAkC;AAAzB,2FAAA,GAAG,OAAA;AAEZ,IAAI,OAAO,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;AAC9B,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export interface AppAnswers {
|
|
2
|
+
appType: string;
|
|
3
|
+
description: string;
|
|
4
|
+
hasBackend: boolean;
|
|
5
|
+
hasFrontend: boolean;
|
|
6
|
+
database: string;
|
|
7
|
+
includeTemplates?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function createProjectStructure(appName: string, answers: AppAnswers): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=projectStructure.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"projectStructure.d.ts","sourceRoot":"","sources":["../src/projectStructure.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAmBD,wBAAsB,sBAAsB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA8NhG"}
|