@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.
Files changed (144) hide show
  1. package/README.md +320 -0
  2. package/bin/dev.cmd +3 -0
  3. package/bin/dev.js +5 -0
  4. package/bin/run.cmd +3 -0
  5. package/bin/run.js +5 -0
  6. package/dist/commands/cli-build.d.ts +9 -0
  7. package/dist/commands/cli-build.d.ts.map +1 -0
  8. package/dist/commands/cli-build.js +36 -0
  9. package/dist/commands/cli-build.js.map +1 -0
  10. package/dist/commands/create-app.d.ts +20 -0
  11. package/dist/commands/create-app.d.ts.map +1 -0
  12. package/dist/commands/create-app.js +246 -0
  13. package/dist/commands/create-app.js.map +1 -0
  14. package/dist/commands/ds.d.ts +28 -0
  15. package/dist/commands/ds.d.ts.map +1 -0
  16. package/dist/commands/ds.js +529 -0
  17. package/dist/commands/ds.js.map +1 -0
  18. package/dist/commands/gql.d.ts +22 -0
  19. package/dist/commands/gql.d.ts.map +1 -0
  20. package/dist/commands/gql.js +340 -0
  21. package/dist/commands/gql.js.map +1 -0
  22. package/dist/commands/infra/down.d.ts +13 -0
  23. package/dist/commands/infra/down.d.ts.map +1 -0
  24. package/dist/commands/infra/down.js +80 -0
  25. package/dist/commands/infra/down.js.map +1 -0
  26. package/dist/commands/infra/up.d.ts +13 -0
  27. package/dist/commands/infra/up.d.ts.map +1 -0
  28. package/dist/commands/infra/up.js +69 -0
  29. package/dist/commands/infra/up.js.map +1 -0
  30. package/dist/commands/infra/update.d.ts +14 -0
  31. package/dist/commands/infra/update.d.ts.map +1 -0
  32. package/dist/commands/infra/update.js +321 -0
  33. package/dist/commands/infra/update.js.map +1 -0
  34. package/dist/commands/run.d.ts +19 -0
  35. package/dist/commands/run.d.ts.map +1 -0
  36. package/dist/commands/run.js +315 -0
  37. package/dist/commands/run.js.map +1 -0
  38. package/dist/commands/setup.d.ts +18 -0
  39. package/dist/commands/setup.d.ts.map +1 -0
  40. package/dist/commands/setup.js +189 -0
  41. package/dist/commands/setup.js.map +1 -0
  42. package/dist/index.d.ts +2 -0
  43. package/dist/index.d.ts.map +1 -0
  44. package/dist/index.js +8 -0
  45. package/dist/index.js.map +1 -0
  46. package/dist/projectStructure.d.ts +10 -0
  47. package/dist/projectStructure.d.ts.map +1 -0
  48. package/dist/projectStructure.js +153 -0
  49. package/dist/projectStructure.js.map +1 -0
  50. package/dist/scripts/generate-schema.d.ts +10 -0
  51. package/dist/scripts/generate-schema.d.ts.map +1 -0
  52. package/dist/scripts/generate-schema.js +130 -0
  53. package/dist/scripts/generate-schema.js.map +1 -0
  54. package/dist/scripts/generate-schema.ts +143 -0
  55. package/dist/templates/.github/copilot-instructions.md.template +17 -0
  56. package/dist/templates/config/datasource.ts.template +9 -0
  57. package/dist/templates/config/jest.config.ts +30 -0
  58. package/dist/templates/config/jest.setup.ts +1 -0
  59. package/dist/templates/config/tsconfig.json.template +30 -0
  60. package/dist/templates/dataSources/mysql.ts.template +13 -0
  61. package/dist/templates/dataSources/postgres.ts.template +13 -0
  62. package/dist/templates/dataset-generator-script.ts.template +140 -0
  63. package/dist/templates/datasets/mysql-default/Address.jsonl.template +4 -0
  64. package/dist/templates/datasets/mysql-default/App.jsonl.template +5 -0
  65. package/dist/templates/datasets/mysql-default/Company.jsonl.template +4 -0
  66. package/dist/templates/datasets/mysql-default/Person.jsonl.template +3 -0
  67. package/dist/templates/datasets/postgres-default/Address.jsonl.template +4 -0
  68. package/dist/templates/datasets/postgres-default/App.jsonl.template +5 -0
  69. package/dist/templates/datasets/postgres-default/Company.jsonl.template +4 -0
  70. package/dist/templates/datasets/postgres-default/Person.jsonl.template +3 -0
  71. package/dist/templates/docs/app-description.md.template +34 -0
  72. package/dist/templates/gql/codegen.yml.template +25 -0
  73. package/dist/templates/gql/index.ts.template +24 -0
  74. package/dist/templates/gql/operations.graphql.template +30 -0
  75. package/dist/templates/package.json.template +38 -0
  76. package/dist/templates/prompt-analysis.md.template +111 -0
  77. package/dist/templates/prompt-script-generation.md.template +259 -0
  78. package/dist/templates/src/Address.ts.template +31 -0
  79. package/dist/templates/src/App.ts.template +61 -0
  80. package/dist/templates/src/Company.ts.template +48 -0
  81. package/dist/templates/src/Models.test.ts.template +655 -0
  82. package/dist/templates/src/Person.test.ts.template +289 -0
  83. package/dist/templates/src/Person.ts.template +105 -0
  84. package/dist/templates/src/actions/index.ts.template +12 -0
  85. package/dist/templates/src/index.ts +66 -0
  86. package/dist/templates/src/types/gql.d.ts.template +18 -0
  87. package/dist/templates/vscode/extensions.json +3 -0
  88. package/dist/templates/vscode/settings.json +11 -0
  89. package/dist/utils/datasourceParser.d.ts +12 -0
  90. package/dist/utils/datasourceParser.d.ts.map +1 -0
  91. package/dist/utils/datasourceParser.js +91 -0
  92. package/dist/utils/datasourceParser.js.map +1 -0
  93. package/dist/utils/jsonlLoader.d.ts +140 -0
  94. package/dist/utils/jsonlLoader.d.ts.map +1 -0
  95. package/dist/utils/jsonlLoader.js +583 -0
  96. package/dist/utils/jsonlLoader.js.map +1 -0
  97. package/dist/utils/model-analyzer.d.ts +86 -0
  98. package/dist/utils/model-analyzer.d.ts.map +1 -0
  99. package/dist/utils/model-analyzer.js +458 -0
  100. package/dist/utils/model-analyzer.js.map +1 -0
  101. package/dist/utils/portChecker.d.ts +36 -0
  102. package/dist/utils/portChecker.d.ts.map +1 -0
  103. package/dist/utils/portChecker.js +308 -0
  104. package/dist/utils/portChecker.js.map +1 -0
  105. package/dist/utils/synthetic-data-generator.d.ts +74 -0
  106. package/dist/utils/synthetic-data-generator.d.ts.map +1 -0
  107. package/dist/utils/synthetic-data-generator.js +443 -0
  108. package/dist/utils/synthetic-data-generator.js.map +1 -0
  109. package/oclif.manifest.json +435 -0
  110. package/package.json +118 -0
  111. package/src/templates/.github/copilot-instructions.md.template +17 -0
  112. package/src/templates/config/datasource.ts.template +9 -0
  113. package/src/templates/config/jest.config.ts +30 -0
  114. package/src/templates/config/jest.setup.ts +1 -0
  115. package/src/templates/config/tsconfig.json.template +30 -0
  116. package/src/templates/dataSources/mysql.ts.template +13 -0
  117. package/src/templates/dataSources/postgres.ts.template +13 -0
  118. package/src/templates/dataset-generator-script.ts.template +140 -0
  119. package/src/templates/datasets/mysql-default/Address.jsonl.template +4 -0
  120. package/src/templates/datasets/mysql-default/App.jsonl.template +5 -0
  121. package/src/templates/datasets/mysql-default/Company.jsonl.template +4 -0
  122. package/src/templates/datasets/mysql-default/Person.jsonl.template +3 -0
  123. package/src/templates/datasets/postgres-default/Address.jsonl.template +4 -0
  124. package/src/templates/datasets/postgres-default/App.jsonl.template +5 -0
  125. package/src/templates/datasets/postgres-default/Company.jsonl.template +4 -0
  126. package/src/templates/datasets/postgres-default/Person.jsonl.template +3 -0
  127. package/src/templates/docs/app-description.md.template +34 -0
  128. package/src/templates/gql/codegen.yml.template +25 -0
  129. package/src/templates/gql/index.ts.template +24 -0
  130. package/src/templates/gql/operations.graphql.template +30 -0
  131. package/src/templates/package.json.template +38 -0
  132. package/src/templates/prompt-analysis.md.template +111 -0
  133. package/src/templates/prompt-script-generation.md.template +259 -0
  134. package/src/templates/src/Address.ts.template +31 -0
  135. package/src/templates/src/App.ts.template +61 -0
  136. package/src/templates/src/Company.ts.template +48 -0
  137. package/src/templates/src/Models.test.ts.template +655 -0
  138. package/src/templates/src/Person.test.ts.template +289 -0
  139. package/src/templates/src/Person.ts.template +105 -0
  140. package/src/templates/src/actions/index.ts.template +12 -0
  141. package/src/templates/src/index.ts +66 -0
  142. package/src/templates/src/types/gql.d.ts.template +18 -0
  143. package/src/templates/vscode/extensions.json +3 -0
  144. 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":"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"}
@@ -0,0 +1,2 @@
1
+ export { run } from '@oclif/core';
2
+ //# sourceMappingURL=index.d.ts.map
@@ -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"}