@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,340 @@
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 Gql extends core_1.Command {
11
+ static description = 'Generate GraphQL schema and SDK for your Slingr application';
12
+ static examples = ['slingr gql generate-schema', 'slingr gql generate-schema --no-exit', 'slingr gql generate-sdk'];
13
+ static args = {
14
+ action: core_1.Args.string({
15
+ description: 'Action to perform (generate-schema or generate-sdk)',
16
+ options: ['generate-schema', 'generate-sdk'],
17
+ required: true,
18
+ }),
19
+ };
20
+ static flags = {
21
+ 'no-exit': core_1.Flags.boolean({
22
+ description: 'Keep Apollo Server running after generating schema (for generate-schema only)',
23
+ default: false,
24
+ }),
25
+ };
26
+ async run() {
27
+ const { args, flags } = await this.parse(Gql);
28
+ const { action } = args;
29
+ // Verify we're in a Slingr app directory
30
+ const pkgPath = node_path_1.default.join(process.cwd(), 'package.json');
31
+ if (!(await fs_extra_1.default.pathExists(pkgPath))) {
32
+ this.error("Not in a Slingr application directory. Please run this command from your app's root directory.");
33
+ }
34
+ // Check if the app uses slingr-framework
35
+ const packageJson = await fs_extra_1.default.readJSON(pkgPath);
36
+ if (!packageJson.dependencies?.['slingr-framework']) {
37
+ this.error('This directory does not contain a Slingr application.');
38
+ }
39
+ try {
40
+ switch (action) {
41
+ case 'generate-schema':
42
+ await this.generateSchema(flags['no-exit']);
43
+ break;
44
+ case 'generate-sdk':
45
+ await this.generateSDK();
46
+ break;
47
+ default:
48
+ this.error(`Unknown action: ${action}`);
49
+ }
50
+ }
51
+ catch (error) {
52
+ this.error(`Failed to ${action}: ${error.message}`);
53
+ }
54
+ }
55
+ async prepareEnvironment() {
56
+ // Check if node_modules exists
57
+ const nodeModulesPath = node_path_1.default.join(process.cwd(), 'node_modules');
58
+ if (!(await fs_extra_1.default.pathExists(nodeModulesPath))) {
59
+ this.error('Dependencies not found. Please run "npm install" first to install the required dependencies.');
60
+ }
61
+ // Check if slingr-framework is specifically installed (including symlinks)
62
+ const frameworkPath = node_path_1.default.join(nodeModulesPath, 'slingr-framework');
63
+ try {
64
+ // Use fs.lstat to handle symlinks properly
65
+ await fs_extra_1.default.lstat(frameworkPath);
66
+ }
67
+ catch (error) {
68
+ this.error('slingr-framework not found in node_modules. Please run "npm install" to install dependencies.');
69
+ }
70
+ // Compile only what's necessary for schema generation
71
+ await this.compileForSchemaGeneration();
72
+ }
73
+ async compileForSchemaGeneration() {
74
+ try {
75
+ this.log('Compiling application for schema generation...');
76
+ // Create dist directory if it doesn't exist
77
+ const distDir = node_path_1.default.join(process.cwd(), 'dist');
78
+ await fs_extra_1.default.ensureDir(distDir);
79
+ // Try to compile the entire application with skipLibCheck to avoid @gql errors
80
+ try {
81
+ (0, child_process_1.execSync)('npx tsc --skipLibCheck', {
82
+ stdio: 'inherit',
83
+ cwd: process.cwd(),
84
+ });
85
+ this.log('✅ Application compiled successfully');
86
+ return;
87
+ }
88
+ catch (fullCompileError) {
89
+ this.log('Full compilation failed, trying targeted actions compilation...');
90
+ }
91
+ // Fallback: Compile only actions if they exist
92
+ const actionsPath = node_path_1.default.join(process.cwd(), 'src', 'actions');
93
+ if (await fs_extra_1.default.pathExists(actionsPath)) {
94
+ try {
95
+ // Ensure dist/actions directory exists
96
+ const distActionsDir = node_path_1.default.join(process.cwd(), 'dist', 'actions');
97
+ await fs_extra_1.default.ensureDir(distActionsDir);
98
+ // Compile actions directory specifically
99
+ (0, child_process_1.execSync)(`npx tsc src/actions/*.ts --outDir dist --target es2020 --module commonjs --skipLibCheck --experimentalDecorators --emitDecoratorMetadata --declaration`, {
100
+ stdio: 'pipe',
101
+ cwd: process.cwd(),
102
+ });
103
+ this.log('✅ Actions compiled successfully');
104
+ return;
105
+ }
106
+ catch (actionsError) {
107
+ this.log('Individual actions compilation failed, creating minimal action file...');
108
+ // Create minimal dist/actions/index.js if compilation fails
109
+ const distActionsDir = node_path_1.default.join(process.cwd(), 'dist', 'actions');
110
+ await fs_extra_1.default.ensureDir(distActionsDir);
111
+ const minimalActionContent = `
112
+ // Auto-generated minimal actions index
113
+ module.exports = {};
114
+ `;
115
+ await fs_extra_1.default.writeFile(node_path_1.default.join(distActionsDir, 'index.js'), minimalActionContent);
116
+ this.log('✅ Created minimal actions file');
117
+ return;
118
+ }
119
+ }
120
+ // If no actions directory exists, create minimal dist structure
121
+ const distActionsDir = node_path_1.default.join(process.cwd(), 'dist', 'actions');
122
+ await fs_extra_1.default.ensureDir(distActionsDir);
123
+ const minimalActionContent = `
124
+ // Auto-generated minimal actions index
125
+ module.exports = {};
126
+ `;
127
+ await fs_extra_1.default.writeFile(node_path_1.default.join(distActionsDir, 'index.js'), minimalActionContent);
128
+ this.log('✅ Created minimal dist structure for schema generation');
129
+ }
130
+ catch (error) {
131
+ this.warn('Compilation encountered issues, but continuing with schema generation...');
132
+ this.log('Schema generation will attempt to work with available files.');
133
+ }
134
+ }
135
+ async generateSchema(noExit = false) {
136
+ this.log('Generating GraphQL schema...');
137
+ await this.prepareEnvironment();
138
+ // Get the source script path
139
+ const sourceScriptPath = node_path_1.default.join(__dirname, '..', 'scripts', 'generate-schema.js');
140
+ // Copy script to user's project temporarily
141
+ const tempScriptPath = node_path_1.default.join(process.cwd(), 'temp-generate-schema.js');
142
+ try {
143
+ // Copy the script to the user's project
144
+ await fs_extra_1.default.copyFile(sourceScriptPath, tempScriptPath);
145
+ // Build the command with optional flags
146
+ const tsconfigPath = node_path_1.default.join(process.cwd(), 'tsconfig.json');
147
+ const baseCommand = (await fs_extra_1.default.pathExists(tsconfigPath))
148
+ ? `npx tsx --tsconfig "${tsconfigPath}" "${tempScriptPath}"`
149
+ : `npx tsx "${tempScriptPath}"`;
150
+ const finalCommand = noExit ? `${baseCommand} --no-exit` : baseCommand;
151
+ (0, child_process_1.execSync)(finalCommand, {
152
+ stdio: 'inherit',
153
+ cwd: process.cwd(),
154
+ });
155
+ }
156
+ catch (error) {
157
+ this.error(`Failed to generate schema: ${error.message}`);
158
+ }
159
+ finally {
160
+ // Clean up the temporary script
161
+ if (await fs_extra_1.default.pathExists(tempScriptPath)) {
162
+ await fs_extra_1.default.remove(tempScriptPath);
163
+ }
164
+ }
165
+ }
166
+ async generateSDK() {
167
+ this.log('Generating GraphQL SDK...');
168
+ // First ensure we have a schema
169
+ const schemaPath = node_path_1.default.join(process.cwd(), 'generated', 'gql', 'schema.graphql');
170
+ if (!(await fs_extra_1.default.pathExists(schemaPath))) {
171
+ this.log('GraphQL schema not found. Generating schema first...');
172
+ await this.generateSchema(); // Use default behavior (exit after generation)
173
+ }
174
+ // Check if graphql-codegen is installed
175
+ await this.ensureCodegenDependencies();
176
+ // Create codegen config if it doesn't exist
177
+ await this.createCodegenConfig();
178
+ // Run graphql-codegen
179
+ try {
180
+ this.log('Running GraphQL Code Generator...');
181
+ (0, child_process_1.execSync)('npx graphql-codegen --config codegen.yml', {
182
+ stdio: 'inherit',
183
+ cwd: process.cwd(),
184
+ });
185
+ const sdkPath = node_path_1.default.join(process.cwd(), 'generated', 'gql', 'sdk.ts');
186
+ this.log(`✅ GraphQL SDK generated successfully at: ${sdkPath}`);
187
+ // Create a barrel export for easier importing
188
+ await this.createBarrelExport();
189
+ // Set up module alias for @gql
190
+ await this.setupModuleAlias();
191
+ // Remove temporary type declaration file (if it exists)
192
+ await this.removeTemporaryTypeDeclaration();
193
+ this.log('\n🚀 Usage example:');
194
+ this.log('```typescript');
195
+ this.log("import gql from '@gql';");
196
+ this.log('');
197
+ this.log('const testResponse = await gql.test();');
198
+ this.log('console.log(testResponse); // "ok"');
199
+ this.log('```');
200
+ }
201
+ catch (error) {
202
+ this.error(`Failed to generate SDK: ${error.message}`);
203
+ }
204
+ }
205
+ async ensureCodegenDependencies() {
206
+ const packageJsonPath = node_path_1.default.join(process.cwd(), 'package.json');
207
+ const packageJson = await fs_extra_1.default.readJSON(packageJsonPath);
208
+ const dependencies = {
209
+ ...packageJson.dependencies,
210
+ ...packageJson.devDependencies,
211
+ };
212
+ const requiredPackages = [
213
+ '@graphql-codegen/cli',
214
+ '@graphql-codegen/typescript',
215
+ '@graphql-codegen/typescript-operations',
216
+ '@graphql-codegen/typescript-graphql-request',
217
+ ];
218
+ const missingPackages = requiredPackages.filter(pkg => !dependencies[pkg]);
219
+ if (missingPackages.length > 0) {
220
+ this.log(`Installing required GraphQL CodeGen dependencies: ${missingPackages.join(', ')}`);
221
+ try {
222
+ (0, child_process_1.execSync)(`npm install --save-dev ${missingPackages.join(' ')}`, {
223
+ stdio: 'inherit',
224
+ cwd: process.cwd(),
225
+ });
226
+ this.log('✅ Dependencies installed successfully');
227
+ }
228
+ catch (error) {
229
+ this.error(`Failed to install dependencies: ${error.message}`);
230
+ }
231
+ }
232
+ }
233
+ async createCodegenConfig() {
234
+ const configPath = node_path_1.default.join(process.cwd(), 'codegen.yml');
235
+ if (await fs_extra_1.default.pathExists(configPath)) {
236
+ this.log('GraphQL CodeGen config already exists, skipping creation...');
237
+ return;
238
+ }
239
+ // Create default operations file if it doesn't exist
240
+ const operationsPath = node_path_1.default.join(process.cwd(), 'operations.graphql');
241
+ if (!(await fs_extra_1.default.pathExists(operationsPath))) {
242
+ const operationsTemplatePath = node_path_1.default.join(__dirname, '..', 'templates', 'gql', 'operations.graphql.template');
243
+ await fs_extra_1.default.copyFile(operationsTemplatePath, operationsPath);
244
+ this.log('✅ Created operations.graphql file');
245
+ this.log('ℹ️ Edit operations.graphql to add your custom GraphQL queries and mutations');
246
+ }
247
+ const configTemplatePath = node_path_1.default.join(__dirname, '..', 'templates', 'gql', 'codegen.yml.template');
248
+ await fs_extra_1.default.copyFile(configTemplatePath, configPath);
249
+ this.log('✅ Created GraphQL CodeGen configuration');
250
+ }
251
+ async createBarrelExport() {
252
+ const generatedDir = node_path_1.default.join(process.cwd(), 'generated', 'gql');
253
+ const indexPath = node_path_1.default.join(generatedDir, 'index.ts');
254
+ const barrelTemplatePath = node_path_1.default.join(__dirname, '..', 'templates', 'gql', 'index.ts.template');
255
+ await fs_extra_1.default.copyFile(barrelTemplatePath, indexPath);
256
+ this.log('✅ Created barrel export for easier imports');
257
+ // Also ensure graphql-request is installed
258
+ const packageJsonPath = node_path_1.default.join(process.cwd(), 'package.json');
259
+ const packageJson = await fs_extra_1.default.readJSON(packageJsonPath);
260
+ const dependencies = {
261
+ ...packageJson.dependencies,
262
+ ...packageJson.devDependencies,
263
+ };
264
+ if (!dependencies['graphql-request']) {
265
+ this.log('Installing graphql-request for the SDK...');
266
+ try {
267
+ (0, child_process_1.execSync)('npm install graphql-request', {
268
+ stdio: 'inherit',
269
+ cwd: process.cwd(),
270
+ });
271
+ this.log('✅ graphql-request installed successfully');
272
+ }
273
+ catch (error) {
274
+ this.warn(`Could not install graphql-request automatically: ${error.message}`);
275
+ this.log('Please install it manually: npm install graphql-request');
276
+ }
277
+ }
278
+ }
279
+ async setupModuleAlias() {
280
+ const tsconfigPath = node_path_1.default.join(process.cwd(), 'tsconfig.json');
281
+ if (!(await fs_extra_1.default.pathExists(tsconfigPath))) {
282
+ this.log('No tsconfig.json found, skipping module alias setup...');
283
+ return;
284
+ }
285
+ try {
286
+ const tsconfig = await fs_extra_1.default.readJSON(tsconfigPath);
287
+ // Ensure compilerOptions exists
288
+ if (!tsconfig.compilerOptions) {
289
+ tsconfig.compilerOptions = {};
290
+ }
291
+ // Ensure paths exists
292
+ if (!tsconfig.compilerOptions.paths) {
293
+ tsconfig.compilerOptions.paths = {};
294
+ }
295
+ // Set up the @gql alias using relative paths (no baseUrl needed)
296
+ tsconfig.compilerOptions.paths['@gql'] = ['./generated/gql/index.ts'];
297
+ tsconfig.compilerOptions.paths['@gql/*'] = ['./generated/gql/*'];
298
+ // Remove deprecated baseUrl if it was set to "."
299
+ if (tsconfig.compilerOptions.baseUrl === '.') {
300
+ delete tsconfig.compilerOptions.baseUrl;
301
+ this.log('ℹ️ Removed deprecated baseUrl: "." from tsconfig.json');
302
+ }
303
+ await fs_extra_1.default.writeJSON(tsconfigPath, tsconfig, { spaces: 2 });
304
+ this.log('✅ Set up @gql module alias in tsconfig.json');
305
+ }
306
+ catch (error) {
307
+ this.warn(`Could not update tsconfig.json for module alias: ${error.message}`);
308
+ this.log('You can manually add this to your tsconfig.json:');
309
+ this.log('```json');
310
+ this.log('"compilerOptions": {');
311
+ this.log(' "paths": {');
312
+ this.log(' "@gql": ["./generated/gql/index.ts"],');
313
+ this.log(' "@gql/*": ["./generated/gql/*"]');
314
+ this.log(' }');
315
+ this.log('}');
316
+ this.log('```');
317
+ }
318
+ }
319
+ async removeTemporaryTypeDeclaration() {
320
+ const tempTypePath = node_path_1.default.join(process.cwd(), 'src', 'types', 'gql.d.ts');
321
+ if (await fs_extra_1.default.pathExists(tempTypePath)) {
322
+ try {
323
+ await fs_extra_1.default.remove(tempTypePath);
324
+ this.log('✅ Removed temporary @gql type declaration');
325
+ // Check if types directory is empty and remove it if so
326
+ const typesDir = node_path_1.default.join(process.cwd(), 'src', 'types');
327
+ const files = await fs_extra_1.default.readdir(typesDir);
328
+ if (files.length === 0) {
329
+ await fs_extra_1.default.remove(typesDir);
330
+ this.log('✅ Removed empty types directory');
331
+ }
332
+ }
333
+ catch (error) {
334
+ this.warn(`Could not remove temporary type declaration: ${error.message}`);
335
+ }
336
+ }
337
+ }
338
+ }
339
+ exports.default = Gql;
340
+ //# sourceMappingURL=gql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"gql.js","sourceRoot":"","sources":["../../src/commands/gql.ts"],"names":[],"mappings":";;;;;AAAA,sCAAmD;AACnD,wDAA0B;AAC1B,0DAA6B;AAC7B,iDAAyC;AAEzC,MAAqB,GAAI,SAAQ,cAAO;IACtC,MAAM,CAAC,WAAW,GAAG,6DAA6D,CAAC;IAEnF,MAAM,CAAC,QAAQ,GAAG,CAAC,4BAA4B,EAAE,sCAAsC,EAAE,yBAAyB,CAAC,CAAC;IAEpH,MAAM,CAAC,IAAI,GAAG;QACZ,MAAM,EAAE,WAAI,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,qDAAqD;YAClE,OAAO,EAAE,CAAC,iBAAiB,EAAE,cAAc,CAAC;YAC5C,QAAQ,EAAE,IAAI;SACf,CAAC;KACH,CAAC;IAEF,MAAM,CAAC,KAAK,GAAG;QACb,SAAS,EAAE,YAAK,CAAC,OAAO,CAAC;YACvB,WAAW,EAAE,+EAA+E;YAC5F,OAAO,EAAE,KAAK;SACf,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9C,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC;QAExB,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,QAAQ,MAAM,EAAE,CAAC;gBACf,KAAK,iBAAiB;oBACpB,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;oBAC5C,MAAM;gBACR,KAAK,cAAc;oBACjB,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;oBACzB,MAAM;gBACR;oBACE,IAAI,CAAC,KAAK,CAAC,mBAAmB,MAAM,EAAE,CAAC,CAAC;YAC5C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,aAAa,MAAM,KAAM,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACjE,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,+BAA+B;QAC/B,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACjE,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC,EAAE,CAAC;YAC5C,IAAI,CAAC,KAAK,CAAC,8FAA8F,CAAC,CAAC;QAC7G,CAAC;QAED,2EAA2E;QAC3E,MAAM,aAAa,GAAG,mBAAI,CAAC,IAAI,CAAC,eAAe,EAAE,kBAAkB,CAAC,CAAC;QACrE,IAAI,CAAC;YACH,2CAA2C;YAC3C,MAAM,kBAAE,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,+FAA+F,CAAC,CAAC;QAC9G,CAAC;QAED,sDAAsD;QACtD,MAAM,IAAI,CAAC,0BAA0B,EAAE,CAAC;IAC1C,CAAC;IAEO,KAAK,CAAC,0BAA0B;QACtC,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,gDAAgD,CAAC,CAAC;YAE3D,4CAA4C;YAC5C,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;YACjD,MAAM,kBAAE,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAE5B,+EAA+E;YAC/E,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,wBAAwB,EAAE;oBACjC,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;iBACnB,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;gBAChD,OAAO;YACT,CAAC;YAAC,OAAO,gBAAgB,EAAE,CAAC;gBAC1B,IAAI,CAAC,GAAG,CAAC,iEAAiE,CAAC,CAAC;YAC9E,CAAC;YAED,+CAA+C;YAC/C,MAAM,WAAW,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,SAAS,CAAC,CAAC;YAC/D,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBACrC,IAAI,CAAC;oBACH,uCAAuC;oBACvC,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;oBACnE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBAEnC,yCAAyC;oBACzC,IAAA,wBAAQ,EACN,wJAAwJ,EACxJ;wBACE,KAAK,EAAE,MAAM;wBACb,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;qBACnB,CACF,CAAC;oBACF,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;oBAC5C,OAAO;gBACT,CAAC;gBAAC,OAAO,YAAY,EAAE,CAAC;oBACtB,IAAI,CAAC,GAAG,CAAC,wEAAwE,CAAC,CAAC;oBAEnF,4DAA4D;oBAC5D,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;oBACnE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;oBACnC,MAAM,oBAAoB,GAAG;;;CAGtC,CAAC;oBACQ,MAAM,kBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,oBAAoB,CAAC,CAAC;oBAChF,IAAI,CAAC,GAAG,CAAC,gCAAgC,CAAC,CAAC;oBAC3C,OAAO;gBACT,CAAC;YACH,CAAC;YAED,gEAAgE;YAChE,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,SAAS,CAAC,CAAC;YACnE,MAAM,kBAAE,CAAC,SAAS,CAAC,cAAc,CAAC,CAAC;YACnC,MAAM,oBAAoB,GAAG;;;CAGlC,CAAC;YACI,MAAM,kBAAE,CAAC,SAAS,CAAC,mBAAI,CAAC,IAAI,CAAC,cAAc,EAAE,UAAU,CAAC,EAAE,oBAAoB,CAAC,CAAC;YAChF,IAAI,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;QACrE,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,0EAA0E,CAAC,CAAC;YACtF,IAAI,CAAC,GAAG,CAAC,8DAA8D,CAAC,CAAC;QAC3E,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,cAAc,CAAC,SAAkB,KAAK;QAClD,IAAI,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC;QAEzC,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;QAEhC,6BAA6B;QAC7B,MAAM,gBAAgB,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,SAAS,EAAE,oBAAoB,CAAC,CAAC;QAErF,4CAA4C;QAC5C,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,yBAAyB,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,wCAAwC;YACxC,MAAM,kBAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,cAAc,CAAC,CAAC;YAEpD,wCAAwC;YACxC,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;YAC/D,MAAM,WAAW,GAAG,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC;gBACrD,CAAC,CAAC,uBAAuB,YAAY,MAAM,cAAc,GAAG;gBAC5D,CAAC,CAAC,YAAY,cAAc,GAAG,CAAC;YAElC,MAAM,YAAY,GAAG,MAAM,CAAC,CAAC,CAAC,GAAG,WAAW,YAAY,CAAC,CAAC,CAAC,WAAW,CAAC;YAEvE,IAAA,wBAAQ,EAAC,YAAY,EAAE;gBACrB,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAC,8BAA+B,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;QACvE,CAAC;gBAAS,CAAC;YACT,gCAAgC;YAChC,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;gBACxC,MAAM,kBAAE,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC;YAClC,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,WAAW;QACvB,IAAI,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;QAEtC,gCAAgC;QAChC,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,gBAAgB,CAAC,CAAC;QAClF,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC,EAAE,CAAC;YACvC,IAAI,CAAC,GAAG,CAAC,sDAAsD,CAAC,CAAC;YACjE,MAAM,IAAI,CAAC,cAAc,EAAE,CAAC,CAAC,+CAA+C;QAC9E,CAAC;QAED,wCAAwC;QACxC,MAAM,IAAI,CAAC,yBAAyB,EAAE,CAAC;QAEvC,4CAA4C;QAC5C,MAAM,IAAI,CAAC,mBAAmB,EAAE,CAAC;QAEjC,sBAAsB;QACtB,IAAI,CAAC;YACH,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAC9C,IAAA,wBAAQ,EAAC,0CAA0C,EAAE;gBACnD,KAAK,EAAE,SAAS;gBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;aACnB,CAAC,CAAC;YAEH,MAAM,OAAO,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;YACvE,IAAI,CAAC,GAAG,CAAC,4CAA4C,OAAO,EAAE,CAAC,CAAC;YAEhE,8CAA8C;YAC9C,MAAM,IAAI,CAAC,kBAAkB,EAAE,CAAC;YAEhC,+BAA+B;YAC/B,MAAM,IAAI,CAAC,gBAAgB,EAAE,CAAC;YAE9B,wDAAwD;YACxD,MAAM,IAAI,CAAC,8BAA8B,EAAE,CAAC;YAE5C,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAC;YAChC,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;YAC1B,IAAI,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YACnD,IAAI,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAC;YAC/C,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,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,yBAAyB;QACrC,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEvD,MAAM,YAAY,GAAG;YACnB,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,MAAM,gBAAgB,GAAG;YACvB,sBAAsB;YACtB,6BAA6B;YAC7B,wCAAwC;YACxC,6CAA6C;SAC9C,CAAC;QAEF,MAAM,eAAe,GAAG,gBAAgB,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,CAAC;QAE3E,IAAI,eAAe,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,GAAG,CAAC,qDAAqD,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YAC5F,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,0BAA0B,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE;oBAC9D,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;iBACnB,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACpD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,KAAK,CAAC,mCAAoC,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC5E,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,mBAAmB;QAC/B,MAAM,UAAU,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,CAAC,CAAC;QAE3D,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YACpC,IAAI,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC;YACxE,OAAO;QACT,CAAC;QAED,qDAAqD;QACrD,MAAM,cAAc,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;QACtE,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,cAAc,CAAC,CAAC,EAAE,CAAC;YAC3C,MAAM,sBAAsB,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,6BAA6B,CAAC,CAAC;YAC7G,MAAM,kBAAE,CAAC,QAAQ,CAAC,sBAAsB,EAAE,cAAc,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,mCAAmC,CAAC,CAAC;YAC9C,IAAI,CAAC,GAAG,CAAC,8EAA8E,CAAC,CAAC;QAC3F,CAAC;QAED,MAAM,kBAAkB,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,sBAAsB,CAAC,CAAC;QAClG,MAAM,kBAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,UAAU,CAAC,CAAC;QAClD,IAAI,CAAC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IACtD,CAAC;IAEO,KAAK,CAAC,kBAAkB;QAC9B,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,WAAW,EAAE,KAAK,CAAC,CAAC;QAClE,MAAM,SAAS,GAAG,mBAAI,CAAC,IAAI,CAAC,YAAY,EAAE,UAAU,CAAC,CAAC;QAEtD,MAAM,kBAAkB,GAAG,mBAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,WAAW,EAAE,KAAK,EAAE,mBAAmB,CAAC,CAAC;QAC/F,MAAM,kBAAE,CAAC,QAAQ,CAAC,kBAAkB,EAAE,SAAS,CAAC,CAAC;QACjD,IAAI,CAAC,GAAG,CAAC,4CAA4C,CAAC,CAAC;QAEvD,2CAA2C;QAC3C,MAAM,eAAe,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,cAAc,CAAC,CAAC;QACjE,MAAM,WAAW,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAC;QAEvD,MAAM,YAAY,GAAG;YACnB,GAAG,WAAW,CAAC,YAAY;YAC3B,GAAG,WAAW,CAAC,eAAe;SAC/B,CAAC;QAEF,IAAI,CAAC,YAAY,CAAC,iBAAiB,CAAC,EAAE,CAAC;YACrC,IAAI,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACtD,IAAI,CAAC;gBACH,IAAA,wBAAQ,EAAC,6BAA6B,EAAE;oBACtC,KAAK,EAAE,SAAS;oBAChB,GAAG,EAAE,OAAO,CAAC,GAAG,EAAE;iBACnB,CAAC,CAAC;gBACH,IAAI,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC;YACvD,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,oDAAqD,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;gBAC1F,IAAI,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACtE,CAAC;QACH,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,gBAAgB;QAC5B,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,eAAe,CAAC,CAAC;QAE/D,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACnE,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,kBAAE,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAEjD,gCAAgC;YAChC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,CAAC;gBAC9B,QAAQ,CAAC,eAAe,GAAG,EAAE,CAAC;YAChC,CAAC;YAED,sBAAsB;YACtB,IAAI,CAAC,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,CAAC;gBACpC,QAAQ,CAAC,eAAe,CAAC,KAAK,GAAG,EAAE,CAAC;YACtC,CAAC;YAED,iEAAiE;YACjE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,0BAA0B,CAAC,CAAC;YACtE,QAAQ,CAAC,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;YAEjE,iDAAiD;YACjD,IAAI,QAAQ,CAAC,eAAe,CAAC,OAAO,KAAK,GAAG,EAAE,CAAC;gBAC7C,OAAO,QAAQ,CAAC,eAAe,CAAC,OAAO,CAAC;gBACxC,IAAI,CAAC,GAAG,CAAC,wDAAwD,CAAC,CAAC;YACrE,CAAC;YAED,MAAM,kBAAE,CAAC,SAAS,CAAC,YAAY,EAAE,QAAQ,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;YAC1D,IAAI,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;QAC1D,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,oDAAqD,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YAC1F,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;YACpB,IAAI,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACjC,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;YACzB,IAAI,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;YACtD,IAAI,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAChD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;YAChB,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YACd,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAClB,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,8BAA8B;QAC1C,MAAM,YAAY,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;QAE1E,IAAI,MAAM,kBAAE,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YACtC,IAAI,CAAC;gBACH,MAAM,kBAAE,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC9B,IAAI,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC;gBAEtD,wDAAwD;gBACxD,MAAM,QAAQ,GAAG,mBAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;gBAC1D,MAAM,KAAK,GAAG,MAAM,kBAAE,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;gBACzC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBACvB,MAAM,kBAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;oBAC1B,IAAI,CAAC,GAAG,CAAC,iCAAiC,CAAC,CAAC;gBAC9C,CAAC;YACH,CAAC;YAAC,OAAO,KAAK,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,gDAAiD,KAAe,CAAC,OAAO,EAAE,CAAC,CAAC;YACxF,CAAC;QACH,CAAC;IACH,CAAC;;AA1XH,sBA2XC"}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class InfraDown extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ help: import("@oclif/core/interfaces").BooleanFlag<void>;
7
+ volumes: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
+ };
9
+ run(): Promise<void>;
10
+ private checkDockerComposeFile;
11
+ private checkDockerInstallation;
12
+ }
13
+ //# sourceMappingURL=down.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"down.d.ts","sourceRoot":"","sources":["../../../src/commands/infra/down.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAM7C,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,OAAO;IAC5C,MAAM,CAAC,WAAW,SAAsF;IACxG,MAAM,CAAC,QAAQ,WAGb;IACF,MAAM,CAAC,KAAK;;;MAOV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YAiCZ,sBAAsB;YAUtB,uBAAuB;CAsBtC"}
@@ -0,0 +1,80 @@
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 portChecker_js_1 = require("../../utils/portChecker.js");
10
+ class InfraDown extends core_1.Command {
11
+ static description = 'Stop infrastructure services using Docker Compose (data is preserved by default)';
12
+ static examples = [
13
+ '<%= config.bin %> <%= command.id %> # Stop services, preserve data',
14
+ '<%= config.bin %> <%= command.id %> --volumes # Stop services and delete all data',
15
+ ];
16
+ static flags = {
17
+ help: core_1.Flags.help({ char: 'h' }),
18
+ volumes: core_1.Flags.boolean({
19
+ char: 'v',
20
+ default: false,
21
+ description: 'Remove volumes as well (WARNING: This will delete all data)',
22
+ }),
23
+ };
24
+ async run() {
25
+ const { flags } = await this.parse(InfraDown);
26
+ try {
27
+ // Check if docker-compose.yml exists
28
+ await this.checkDockerComposeFile();
29
+ // Check if Docker and Docker Compose are installed
30
+ await this.checkDockerInstallation();
31
+ // Stop infrastructure services
32
+ this.log('🔽 Stopping infrastructure services...');
33
+ const composeCommand = flags.volumes ? 'docker compose down -v' : 'docker compose down';
34
+ if (flags.volumes) {
35
+ this.log('⚠️ WARNING: This will remove all volumes and permanently delete all data!');
36
+ }
37
+ else {
38
+ this.log('ℹ️ Data will be preserved. Use --volumes flag to remove all data.');
39
+ }
40
+ (0, node_child_process_1.execSync)(composeCommand, { stdio: 'inherit' });
41
+ if (flags.volumes) {
42
+ this.log('✅ Infrastructure services stopped and all data removed.');
43
+ }
44
+ else {
45
+ this.log('✅ Infrastructure services stopped (data preserved).');
46
+ }
47
+ }
48
+ catch (error) {
49
+ this.error(error.message);
50
+ }
51
+ }
52
+ async checkDockerComposeFile() {
53
+ const dockerComposeFile = 'docker-compose.yml';
54
+ if (!(await fs_extra_1.default.pathExists(dockerComposeFile))) {
55
+ this.error('No docker-compose.yml file found. Please run "slingr infra update" first to generate the infrastructure configuration.');
56
+ }
57
+ }
58
+ async checkDockerInstallation() {
59
+ try {
60
+ (0, node_child_process_1.execSync)('docker --version', { stdio: 'pipe' });
61
+ }
62
+ catch {
63
+ this.error('Docker is not installed. Please install Docker to run infrastructure services.');
64
+ }
65
+ // Check if Docker daemon is running
66
+ if (!(0, portChecker_js_1.isDockerRunning)()) {
67
+ this.error('🐳 Docker is not running. Please start Docker and try again.\n\n' +
68
+ 'On macOS/Windows: Start Docker Desktop\n' +
69
+ 'On Linux: Run "sudo systemctl start docker" or "sudo service docker start"');
70
+ }
71
+ try {
72
+ (0, node_child_process_1.execSync)('docker compose version', { stdio: 'pipe' });
73
+ }
74
+ catch {
75
+ this.error('Docker Compose is not installed. Please install Docker Compose to run infrastructure services.');
76
+ }
77
+ }
78
+ }
79
+ exports.default = InfraDown;
80
+ //# sourceMappingURL=down.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"down.js","sourceRoot":"","sources":["../../../src/commands/infra/down.ts"],"names":[],"mappings":";;;;;AAAA,sCAA6C;AAC7C,wDAA0B;AAC1B,2DAA8C;AAE9C,+DAA6D;AAE7D,MAAqB,SAAU,SAAQ,cAAO;IAC5C,MAAM,CAAC,WAAW,GAAG,kFAAkF,CAAC;IACxG,MAAM,CAAC,QAAQ,GAAG;QAChB,oEAAoE;QACpE,mFAAmF;KACpF,CAAC;IACF,MAAM,CAAC,KAAK,GAAG;QACb,IAAI,EAAE,YAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAC/B,OAAO,EAAE,YAAK,CAAC,OAAO,CAAC;YACrB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,KAAK;YACd,WAAW,EAAE,6DAA6D;SAC3E,CAAC;KACH,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QAE9C,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAEpC,mDAAmD;YACnD,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAErC,+BAA+B;YAC/B,IAAI,CAAC,GAAG,CAAC,wCAAwC,CAAC,CAAC;YAEnD,MAAM,cAAc,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,wBAAwB,CAAC,CAAC,CAAC,qBAAqB,CAAC;YAExF,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,4EAA4E,CAAC,CAAC;YACzF,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,oEAAoE,CAAC,CAAC;YACjF,CAAC;YAED,IAAA,6BAAQ,EAAC,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAE/C,IAAI,KAAK,CAAC,OAAO,EAAE,CAAC;gBAClB,IAAI,CAAC,GAAG,CAAC,yDAAyD,CAAC,CAAC;YACtE,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;YAClE,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;QAE/C,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CACR,wHAAwH,CACzH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACnC,IAAI,CAAC;YACH,IAAA,6BAAQ,EAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAC/F,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,IAAA,gCAAe,GAAE,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CACR,kEAAkE;gBAChE,0CAA0C;gBAC1C,4EAA4E,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,IAAA,6BAAQ,EAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;;AA/EH,4BAgFC"}
@@ -0,0 +1,13 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class InfraUp extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ detach: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ help: import("@oclif/core/interfaces").BooleanFlag<void>;
8
+ };
9
+ run(): Promise<void>;
10
+ private checkDockerComposeFile;
11
+ private checkDockerInstallation;
12
+ }
13
+ //# sourceMappingURL=up.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.d.ts","sourceRoot":"","sources":["../../../src/commands/infra/up.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAM7C,MAAM,CAAC,OAAO,OAAO,OAAQ,SAAQ,OAAO;IAC1C,MAAM,CAAC,WAAW,SAAwD;IAC1E,MAAM,CAAC,QAAQ,WAA2F;IAC1G,MAAM,CAAC,KAAK;;;MAOV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA0BZ,sBAAsB;YAUtB,uBAAuB;CAsBtC"}
@@ -0,0 +1,69 @@
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 portChecker_js_1 = require("../../utils/portChecker.js");
10
+ class InfraUp extends core_1.Command {
11
+ static description = 'Start infrastructure services using Docker Compose';
12
+ static examples = ['<%= config.bin %> <%= command.id %>', '<%= config.bin %> <%= command.id %> --detach'];
13
+ static flags = {
14
+ detach: core_1.Flags.boolean({
15
+ char: 'd',
16
+ default: true,
17
+ description: 'Run services in detached mode (background)',
18
+ }),
19
+ help: core_1.Flags.help({ char: 'h' }),
20
+ };
21
+ async run() {
22
+ const { flags } = await this.parse(InfraUp);
23
+ try {
24
+ // Check if docker-compose.yml exists
25
+ await this.checkDockerComposeFile();
26
+ // Check if Docker and Docker Compose are installed
27
+ await this.checkDockerInstallation();
28
+ // Start infrastructure services
29
+ this.log('Starting infrastructure services...');
30
+ const composeCommand = flags.detach ? 'docker compose up -d' : 'docker compose up';
31
+ (0, node_child_process_1.execSync)(composeCommand, { stdio: 'inherit' });
32
+ if (flags.detach) {
33
+ this.log('Infrastructure services started in detached mode.');
34
+ this.log('Use "docker compose ps" to check service status.');
35
+ }
36
+ }
37
+ catch (error) {
38
+ this.error(error.message);
39
+ }
40
+ }
41
+ async checkDockerComposeFile() {
42
+ const dockerComposeFile = 'docker-compose.yml';
43
+ if (!(await fs_extra_1.default.pathExists(dockerComposeFile))) {
44
+ this.error('No docker-compose.yml file found. Please run "slingr infra update" first to generate the infrastructure configuration.');
45
+ }
46
+ }
47
+ async checkDockerInstallation() {
48
+ try {
49
+ (0, node_child_process_1.execSync)('docker --version', { stdio: 'pipe' });
50
+ }
51
+ catch {
52
+ this.error('Docker is not installed. Please install Docker to run infrastructure services.');
53
+ }
54
+ // Check if Docker daemon is running
55
+ if (!(0, portChecker_js_1.isDockerRunning)()) {
56
+ this.error('🐳 Docker is not running. Please start Docker and try again.\n\n' +
57
+ 'On macOS/Windows: Start Docker Desktop\n' +
58
+ 'On Linux: Run "sudo systemctl start docker" or "sudo service docker start"');
59
+ }
60
+ try {
61
+ (0, node_child_process_1.execSync)('docker compose version', { stdio: 'pipe' });
62
+ }
63
+ catch {
64
+ this.error('Docker Compose is not installed. Please install Docker Compose to run infrastructure services.');
65
+ }
66
+ }
67
+ }
68
+ exports.default = InfraUp;
69
+ //# sourceMappingURL=up.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"up.js","sourceRoot":"","sources":["../../../src/commands/infra/up.ts"],"names":[],"mappings":";;;;;AAAA,sCAA6C;AAC7C,wDAA0B;AAC1B,2DAA8C;AAE9C,+DAA6D;AAE7D,MAAqB,OAAQ,SAAQ,cAAO;IAC1C,MAAM,CAAC,WAAW,GAAG,oDAAoD,CAAC;IAC1E,MAAM,CAAC,QAAQ,GAAG,CAAC,qCAAqC,EAAE,8CAA8C,CAAC,CAAC;IAC1G,MAAM,CAAC,KAAK,GAAG;QACb,MAAM,EAAE,YAAK,CAAC,OAAO,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,OAAO,EAAE,IAAI;YACb,WAAW,EAAE,4CAA4C;SAC1D,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,OAAO,CAAC,CAAC;QAE5C,IAAI,CAAC;YACH,qCAAqC;YACrC,MAAM,IAAI,CAAC,sBAAsB,EAAE,CAAC;YAEpC,mDAAmD;YACnD,MAAM,IAAI,CAAC,uBAAuB,EAAE,CAAC;YAErC,gCAAgC;YAChC,IAAI,CAAC,GAAG,CAAC,qCAAqC,CAAC,CAAC;YAEhD,MAAM,cAAc,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,sBAAsB,CAAC,CAAC,CAAC,mBAAmB,CAAC;YAEnF,IAAA,6BAAQ,EAAC,cAAc,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;YAE/C,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,GAAG,CAAC,mDAAmD,CAAC,CAAC;gBAC9D,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAC;YAC/D,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,KAAK,CAAE,KAAe,CAAC,OAAO,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,sBAAsB;QAClC,MAAM,iBAAiB,GAAG,oBAAoB,CAAC;QAE/C,IAAI,CAAC,CAAC,MAAM,kBAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC;YAC9C,IAAI,CAAC,KAAK,CACR,wHAAwH,CACzH,CAAC;QACJ,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,uBAAuB;QACnC,IAAI,CAAC;YACH,IAAA,6BAAQ,EAAC,kBAAkB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,gFAAgF,CAAC,CAAC;QAC/F,CAAC;QAED,oCAAoC;QACpC,IAAI,CAAC,IAAA,gCAAe,GAAE,EAAE,CAAC;YACvB,IAAI,CAAC,KAAK,CACR,kEAAkE;gBAChE,0CAA0C;gBAC1C,4EAA4E,CAC/E,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,IAAA,6BAAQ,EAAC,wBAAwB,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;QACxD,CAAC;QAAC,MAAM,CAAC;YACP,IAAI,CAAC,KAAK,CAAC,gGAAgG,CAAC,CAAC;QAC/G,CAAC;IACH,CAAC;;AArEH,0BAsEC"}
@@ -0,0 +1,14 @@
1
+ import { Command } from '@oclif/core';
2
+ export default class InfraUpdate extends Command {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ all: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
+ file: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
+ };
9
+ run(): Promise<void>;
10
+ private checkPortsBeforeGeneration;
11
+ private generateDockerCompose;
12
+ private readDataSources;
13
+ }
14
+ //# sourceMappingURL=update.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/commands/infra/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAS,MAAM,aAAa,CAAC;AAuB7C,MAAM,CAAC,OAAO,OAAO,WAAY,SAAQ,OAAO;IAC9C,MAAM,CAAC,WAAW,SAA2D;IAC7E,MAAM,CAAC,QAAQ,WAMb;IACF,MAAM,CAAC,KAAK;;;MAWV;IAEI,GAAG,IAAI,OAAO,CAAC,IAAI,CAAC;YA8DZ,0BAA0B;YA8C1B,qBAAqB;YAoGrB,eAAe;CAkF9B"}