@bayajidalam/apollo-cli 1.0.2 → 1.0.3
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/dist/app/modules/User/user.constant.js +6 -0
- package/dist/app/modules/User/user.controller.js +6 -0
- package/dist/app/modules/User/user.interface.js +2 -0
- package/dist/app/modules/User/user.route.js +9 -0
- package/dist/app/modules/User/user.service.js +6 -0
- package/dist/app/modules/User/user.validation.js +7 -0
- package/dist/bin/index.js +8 -1
- package/dist/commands/init.js +121 -28
- package/package.json +2 -2
|
@@ -0,0 +1,9 @@
|
|
|
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
|
+
exports.UserRoutes = void 0;
|
|
7
|
+
const express_1 = __importDefault(require("express"));
|
|
8
|
+
const router = express_1.default.Router();
|
|
9
|
+
exports.UserRoutes = router;
|
package/dist/bin/index.js
CHANGED
|
@@ -1,5 +1,8 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
"use strict";
|
|
3
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
4
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
5
|
+
};
|
|
3
6
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
7
|
const commander_1 = require("commander");
|
|
5
8
|
const generate_1 = require("../commands/generate");
|
|
@@ -7,8 +10,12 @@ const build_1 = require("../commands/build");
|
|
|
7
10
|
const prisma_1 = require("../commands/prisma");
|
|
8
11
|
const init_1 = require("../commands/init");
|
|
9
12
|
const program = new commander_1.Command();
|
|
13
|
+
const fs_1 = __importDefault(require("fs"));
|
|
14
|
+
const path_1 = __importDefault(require("path"));
|
|
15
|
+
const packageJsonPath = path_1.default.join(__dirname, '../../package.json');
|
|
16
|
+
const packageJson = JSON.parse(fs_1.default.readFileSync(packageJsonPath, 'utf-8'));
|
|
10
17
|
program
|
|
11
|
-
.version(
|
|
18
|
+
.version(packageJson.version)
|
|
12
19
|
.description('Apollo CLI Tool');
|
|
13
20
|
program.addCommand(generate_1.generateCommand);
|
|
14
21
|
program.addCommand(build_1.buildCommand);
|
package/dist/commands/init.js
CHANGED
|
@@ -10,6 +10,59 @@ const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
|
10
10
|
const path_1 = __importDefault(require("path"));
|
|
11
11
|
const chalk_1 = __importDefault(require("chalk"));
|
|
12
12
|
const child_process_1 = require("child_process");
|
|
13
|
+
// Helper function to get the latest version of a package from npm
|
|
14
|
+
async function getLatestVersion(packageName) {
|
|
15
|
+
try {
|
|
16
|
+
const version = (0, child_process_1.execSync)(`npm view ${packageName} version`, {
|
|
17
|
+
encoding: 'utf-8',
|
|
18
|
+
stdio: ['pipe', 'pipe', 'pipe']
|
|
19
|
+
}).trim();
|
|
20
|
+
return `^${version}`;
|
|
21
|
+
}
|
|
22
|
+
catch (error) {
|
|
23
|
+
console.warn(chalk_1.default.yellow(`⚠️ Could not fetch latest version for ${packageName}, using fallback`));
|
|
24
|
+
return 'latest';
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Fetch latest versions for all dependencies
|
|
28
|
+
async function getLatestDependencies() {
|
|
29
|
+
console.log(chalk_1.default.blue('📦 Fetching latest package versions...'));
|
|
30
|
+
const deps = ['express', 'cors', 'dotenv', 'http-status', '@prisma/client'];
|
|
31
|
+
const devDeps = ['typescript', 'ts-node-dev', '@types/node', '@types/express', '@types/cors', 'prisma', 'eslint', 'prettier'];
|
|
32
|
+
const [dependencies, devDependencies] = await Promise.all([
|
|
33
|
+
Promise.all(deps.map(async (dep) => [dep, await getLatestVersion(dep)])),
|
|
34
|
+
Promise.all(devDeps.map(async (dep) => [dep, await getLatestVersion(dep)]))
|
|
35
|
+
]);
|
|
36
|
+
return {
|
|
37
|
+
dependencies: Object.fromEntries(dependencies),
|
|
38
|
+
devDependencies: Object.fromEntries(devDependencies)
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
// Detect available package managers
|
|
42
|
+
function detectPackageManagers() {
|
|
43
|
+
const all = ['npm', 'pnpm', 'yarn'];
|
|
44
|
+
const available = [];
|
|
45
|
+
all.forEach(pm => {
|
|
46
|
+
try {
|
|
47
|
+
(0, child_process_1.execSync)(`${pm} --version`, { stdio: 'ignore' });
|
|
48
|
+
available.push(pm);
|
|
49
|
+
}
|
|
50
|
+
catch {
|
|
51
|
+
// Package manager not available
|
|
52
|
+
}
|
|
53
|
+
});
|
|
54
|
+
return { available, all };
|
|
55
|
+
}
|
|
56
|
+
// Check if a package manager is installed
|
|
57
|
+
function isPackageManagerInstalled(pm) {
|
|
58
|
+
try {
|
|
59
|
+
(0, child_process_1.execSync)(`${pm} --version`, { stdio: 'ignore' });
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch {
|
|
63
|
+
return false;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
13
66
|
exports.initCommand = new commander_1.Command('init')
|
|
14
67
|
.description('Initialize a new Apollo Gears project')
|
|
15
68
|
.argument('[projectName]', 'Name of the project directory')
|
|
@@ -36,7 +89,9 @@ exports.initCommand = new commander_1.Command('init')
|
|
|
36
89
|
try {
|
|
37
90
|
// 2. Create Directory
|
|
38
91
|
await fs_extra_1.default.ensureDir(projectRoot);
|
|
39
|
-
// 3.
|
|
92
|
+
// 3. Fetch latest versions
|
|
93
|
+
const { dependencies, devDependencies } = await getLatestDependencies();
|
|
94
|
+
// 4. Create Package.json
|
|
40
95
|
const packageJson = {
|
|
41
96
|
name: projectName,
|
|
42
97
|
version: "1.0.0",
|
|
@@ -53,26 +108,11 @@ exports.initCommand = new commander_1.Command('init')
|
|
|
53
108
|
keywords: ["express", "prisma", "typescript", "apollo-gears"],
|
|
54
109
|
author: "",
|
|
55
110
|
license: "ISC",
|
|
56
|
-
dependencies
|
|
57
|
-
|
|
58
|
-
"cors": "^2.8.5",
|
|
59
|
-
"dotenv": "^16.3.1",
|
|
60
|
-
"http-status": "^1.7.3",
|
|
61
|
-
"@prisma/client": "^5.7.1"
|
|
62
|
-
},
|
|
63
|
-
devDependencies: {
|
|
64
|
-
"typescript": "^5.3.3",
|
|
65
|
-
"ts-node-dev": "^2.0.0",
|
|
66
|
-
"@types/node": "^20.10.4",
|
|
67
|
-
"@types/express": "^4.17.21",
|
|
68
|
-
"@types/cors": "^2.8.17",
|
|
69
|
-
"prisma": "^5.7.1",
|
|
70
|
-
"eslint": "^8.55.0",
|
|
71
|
-
"prettier": "^3.1.1"
|
|
72
|
-
}
|
|
111
|
+
dependencies,
|
|
112
|
+
devDependencies
|
|
73
113
|
};
|
|
74
114
|
await fs_extra_1.default.writeJson(path_1.default.join(projectRoot, 'package.json'), packageJson, { spaces: 2 });
|
|
75
|
-
//
|
|
115
|
+
// 5. Create tsconfig.json
|
|
76
116
|
const tsconfig = {
|
|
77
117
|
"compilerOptions": {
|
|
78
118
|
"target": "ES2021",
|
|
@@ -89,19 +129,20 @@ exports.initCommand = new commander_1.Command('init')
|
|
|
89
129
|
"exclude": ["node_modules"]
|
|
90
130
|
};
|
|
91
131
|
await fs_extra_1.default.writeJson(path_1.default.join(projectRoot, 'tsconfig.json'), tsconfig, { spaces: 2 });
|
|
92
|
-
//
|
|
132
|
+
// 6. Create Scaffolding Folders
|
|
93
133
|
const folders = [
|
|
94
134
|
'src/app/modules',
|
|
95
135
|
'src/app/middlewares',
|
|
96
136
|
'src/app/routes',
|
|
97
137
|
'src/app/utils',
|
|
98
138
|
'src/app/errors',
|
|
99
|
-
'src/app/config'
|
|
139
|
+
'src/app/config',
|
|
140
|
+
'prisma'
|
|
100
141
|
];
|
|
101
142
|
for (const folder of folders) {
|
|
102
143
|
await fs_extra_1.default.ensureDir(path_1.default.join(projectRoot, folder));
|
|
103
144
|
}
|
|
104
|
-
//
|
|
145
|
+
// 7. Create Essential Files
|
|
105
146
|
// src/server.ts
|
|
106
147
|
const serverContent = `import app from './app';
|
|
107
148
|
import config from './app/config';
|
|
@@ -152,14 +193,44 @@ export default {
|
|
|
152
193
|
const envContent = `PORT=5000
|
|
153
194
|
DATABASE_URL="postgresql://johndoe:randompassword@localhost:5432/mydb?schema=public"`;
|
|
154
195
|
await fs_extra_1.default.writeFile(path_1.default.join(projectRoot, '.env'), envContent);
|
|
196
|
+
// prisma/schema.prisma
|
|
197
|
+
const prismaSchemaContent = `generator client {
|
|
198
|
+
provider = "prisma-client-js"
|
|
199
|
+
}
|
|
200
|
+
|
|
201
|
+
datasource db {
|
|
202
|
+
provider = "postgresql"
|
|
203
|
+
url = env("DATABASE_URL")
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
model User {
|
|
207
|
+
id String @id @default(uuid())
|
|
208
|
+
email String @unique
|
|
209
|
+
name String?
|
|
210
|
+
createdAt DateTime @default(now())
|
|
211
|
+
updatedAt DateTime @updatedAt
|
|
212
|
+
}`;
|
|
213
|
+
await fs_extra_1.default.writeFile(path_1.default.join(projectRoot, 'prisma/schema.prisma'), prismaSchemaContent);
|
|
155
214
|
// .gitignore
|
|
156
215
|
const gitignoreContent = `node_modules
|
|
157
216
|
dist
|
|
158
217
|
.env`;
|
|
159
218
|
await fs_extra_1.default.writeFile(path_1.default.join(projectRoot, '.gitignore'), gitignoreContent);
|
|
160
219
|
console.log(chalk_1.default.green('\n✅ Project structure created successfully!'));
|
|
161
|
-
//
|
|
162
|
-
const {
|
|
220
|
+
// 8. Package Manager & Install Dependencies Prompt
|
|
221
|
+
const { available, all } = detectPackageManagers();
|
|
222
|
+
const pmChoices = all.map(pm => ({
|
|
223
|
+
name: available.includes(pm) ? `${pm} ✓` : `${pm} (not installed)`,
|
|
224
|
+
value: pm
|
|
225
|
+
}));
|
|
226
|
+
const answers = await inquirer_1.default.prompt([
|
|
227
|
+
{
|
|
228
|
+
type: 'list',
|
|
229
|
+
name: 'packageManager',
|
|
230
|
+
message: 'Which package manager would you like to use?',
|
|
231
|
+
choices: pmChoices,
|
|
232
|
+
default: available[0] || 'npm'
|
|
233
|
+
},
|
|
163
234
|
{
|
|
164
235
|
type: 'confirm',
|
|
165
236
|
name: 'install',
|
|
@@ -167,12 +238,34 @@ dist
|
|
|
167
238
|
default: true
|
|
168
239
|
}
|
|
169
240
|
]);
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
241
|
+
const packageManager = answers.packageManager;
|
|
242
|
+
const { install } = answers;
|
|
243
|
+
// Check if selected package manager is installed
|
|
244
|
+
if (install && !isPackageManagerInstalled(packageManager)) {
|
|
245
|
+
console.log(chalk_1.default.yellow(`\n⚠️ ${packageManager} is not installed on your system.`));
|
|
246
|
+
console.log(chalk_1.default.cyan(`Install it with: npm install -g ${packageManager}`));
|
|
247
|
+
console.log(chalk_1.default.cyan(`Falling back to npm...\n`));
|
|
248
|
+
const installCmd = 'npm install';
|
|
249
|
+
(0, child_process_1.execSync)(installCmd, { cwd: projectRoot, stdio: 'inherit' });
|
|
173
250
|
console.log(chalk_1.default.green('\n✅ Dependencies installed!'));
|
|
251
|
+
const devCmd = 'npm run dev';
|
|
252
|
+
console.log(chalk_1.default.cyan(`\nTo get started:\n cd ${projectName}\n ${devCmd}\n`));
|
|
253
|
+
}
|
|
254
|
+
else if (install) {
|
|
255
|
+
console.log(chalk_1.default.yellow(`\n📦 Installing dependencies with ${packageManager}...`));
|
|
256
|
+
const installCmd = packageManager === 'yarn' ? 'yarn' : `${packageManager} install`;
|
|
257
|
+
(0, child_process_1.execSync)(installCmd, { cwd: projectRoot, stdio: 'inherit' });
|
|
258
|
+
console.log(chalk_1.default.green('\n✅ Dependencies installed!'));
|
|
259
|
+
const devCmd = packageManager === 'npm' ? 'npm run dev' :
|
|
260
|
+
packageManager === 'yarn' ? 'yarn dev' : 'pnpm dev';
|
|
261
|
+
console.log(chalk_1.default.cyan(`\nTo get started:\n cd ${projectName}\n ${devCmd}\n`));
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
const devCmd = packageManager === 'npm' ? 'npm run dev' :
|
|
265
|
+
packageManager === 'yarn' ? 'yarn dev' : 'pnpm dev';
|
|
266
|
+
const installCmd = packageManager === 'yarn' ? 'yarn' : `${packageManager} install`;
|
|
267
|
+
console.log(chalk_1.default.cyan(`\nTo get started:\n cd ${projectName}\n ${installCmd} && ${devCmd}\n`));
|
|
174
268
|
}
|
|
175
|
-
console.log(chalk_1.default.cyan(`\nTo get started:\n cd ${projectName}\n ${install ? 'npm run dev' : 'npm install && npm run dev'}\n`));
|
|
176
269
|
}
|
|
177
270
|
catch (error) {
|
|
178
271
|
console.error(chalk_1.default.red('❌ Initialization failed:'), error);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@bayajidalam/apollo-cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.3",
|
|
4
4
|
"description": "CLI tool for speed up backend projects",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -23,7 +23,7 @@
|
|
|
23
23
|
],
|
|
24
24
|
"author": "Bayajid Alam Joyel",
|
|
25
25
|
"repository": {
|
|
26
|
-
"url": "https://github.com/BayajidAlam/apollo-cli"
|
|
26
|
+
"url": "git+https://github.com/BayajidAlam/apollo-cli.git"
|
|
27
27
|
},
|
|
28
28
|
"license": "ISC",
|
|
29
29
|
"publishConfig": {
|