@solidxai/solidctl 0.1.50 → 0.1.51-beta.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +31 -0
- package/dist/commands/build.command.d.ts +3 -0
- package/dist/commands/build.command.js +39 -36
- package/dist/commands/build.command.js.map +1 -1
- package/dist/commands/seed.command.d.ts +1 -0
- package/dist/commands/seed.command.js +23 -18
- package/dist/commands/seed.command.js.map +1 -1
- package/dist/commands/setup-app/helpers.d.ts +54 -0
- package/dist/commands/setup-app/helpers.js +210 -0
- package/dist/commands/setup-app/helpers.js.map +1 -0
- package/dist/commands/setup-app/setup-app.command.d.ts +19 -0
- package/dist/commands/setup-app/setup-app.command.js +342 -0
- package/dist/commands/setup-app/setup-app.command.js.map +1 -0
- package/dist/commands/setup-app/setup-questions.d.ts +55 -0
- package/dist/commands/setup-app/setup-questions.js +60 -0
- package/dist/commands/setup-app/setup-questions.js.map +1 -0
- package/dist/commands/start.command.d.ts +62 -0
- package/dist/commands/start.command.js +12 -8
- package/dist/commands/start.command.js.map +1 -1
- package/dist/helper.js +7 -1
- package/dist/helper.js.map +1 -1
- package/dist/main.js +5 -1
- package/dist/main.js.map +1 -1
- package/dist/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,342 @@
|
|
|
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.collectExplicitDbFlags = collectExplicitDbFlags;
|
|
7
|
+
exports.registerSetupAppCommand = registerSetupAppCommand;
|
|
8
|
+
const chalk_1 = __importDefault(require("chalk"));
|
|
9
|
+
const fs_extra_1 = __importDefault(require("fs-extra"));
|
|
10
|
+
const inquirer_1 = __importDefault(require("inquirer"));
|
|
11
|
+
const ora_1 = __importDefault(require("ora"));
|
|
12
|
+
const path_1 = __importDefault(require("path"));
|
|
13
|
+
const helper_1 = require("../../helper");
|
|
14
|
+
const interactive_1 = require("../../utils/interactive");
|
|
15
|
+
const dev_ports_1 = require("../../utils/dev-ports");
|
|
16
|
+
const build_command_1 = require("../build.command");
|
|
17
|
+
const seed_command_1 = require("../seed.command");
|
|
18
|
+
const start_command_1 = require("../start.command");
|
|
19
|
+
const helpers_1 = require("../create-app/helpers");
|
|
20
|
+
const setup_questions_1 = require("../create-app/setup-questions");
|
|
21
|
+
const helpers_2 = require("./helpers");
|
|
22
|
+
const setup_questions_2 = require("./setup-questions");
|
|
23
|
+
const DB_FIELD_ANSWER_KEY = {
|
|
24
|
+
client: 'solidApiDatabaseClient',
|
|
25
|
+
host: 'solidApiDatabaseHost',
|
|
26
|
+
port: 'solidApiDatabasePort',
|
|
27
|
+
name: 'solidApiDatabaseName',
|
|
28
|
+
username: 'solidApiDatabaseUsername',
|
|
29
|
+
password: 'solidApiDatabasePassword',
|
|
30
|
+
};
|
|
31
|
+
const DB_FIELD_OPTION_KEY = {
|
|
32
|
+
client: 'dbClient',
|
|
33
|
+
host: 'dbHost',
|
|
34
|
+
port: 'dbPort',
|
|
35
|
+
name: 'dbName',
|
|
36
|
+
username: 'dbUsername',
|
|
37
|
+
password: 'dbPassword',
|
|
38
|
+
};
|
|
39
|
+
function failSetup(message) {
|
|
40
|
+
console.error(chalk_1.default.red(message));
|
|
41
|
+
process.exit(1);
|
|
42
|
+
}
|
|
43
|
+
function ensurePromptable() {
|
|
44
|
+
if (!(0, interactive_1.isInteractiveSession)()) {
|
|
45
|
+
failSetup('This step requires interactive input but no TTY was detected.\n' +
|
|
46
|
+
'Re-run with --no-interactive and the relevant --db-* flags (or accept the defaults).');
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function buildSetupAnswersFromOptions(options) {
|
|
50
|
+
const dbClient = options.dbClient ?? setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseClient;
|
|
51
|
+
if (options.dbClient !== undefined &&
|
|
52
|
+
!setup_questions_1.DATABASE_CLIENTS.includes(dbClient)) {
|
|
53
|
+
failSetup(`Invalid --db-client "${dbClient}". Must be one of: ${setup_questions_1.DATABASE_CLIENTS.join(', ')}`);
|
|
54
|
+
}
|
|
55
|
+
const dbPort = options.dbPort ?? (0, helpers_2.defaultDbPortForClient)(dbClient);
|
|
56
|
+
if (options.dbPort !== undefined && !(0, dev_ports_1.isValidPortValue)(dbPort)) {
|
|
57
|
+
failSetup(`Invalid --db-port value "${dbPort}". Must be a port number 1-65535.`);
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
solidApiDatabaseClient: dbClient,
|
|
61
|
+
solidApiDatabaseHost: options.dbHost ?? setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseHost,
|
|
62
|
+
solidApiDatabasePort: dbPort,
|
|
63
|
+
solidApiDatabaseName: options.dbName ?? setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseName,
|
|
64
|
+
solidApiDatabaseUsername: options.dbUsername ?? setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseUsername,
|
|
65
|
+
solidApiDatabasePassword: options.dbPassword ?? setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabasePassword,
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function collectExplicitDbFlags(options) {
|
|
69
|
+
const explicit = {};
|
|
70
|
+
for (const field of Object.keys(DB_FIELD_ANSWER_KEY)) {
|
|
71
|
+
const optionValue = options[DB_FIELD_OPTION_KEY[field]];
|
|
72
|
+
if (optionValue === undefined) {
|
|
73
|
+
continue;
|
|
74
|
+
}
|
|
75
|
+
if (field === 'client' &&
|
|
76
|
+
!setup_questions_1.DATABASE_CLIENTS.includes(optionValue)) {
|
|
77
|
+
failSetup(`Invalid --db-client "${optionValue}". Must be one of: ${setup_questions_1.DATABASE_CLIENTS.join(', ')}`);
|
|
78
|
+
}
|
|
79
|
+
if (field === 'port' && !(0, dev_ports_1.isValidPortValue)(optionValue)) {
|
|
80
|
+
failSetup(`Invalid --db-port value "${optionValue}". Must be a port number 1-65535.`);
|
|
81
|
+
}
|
|
82
|
+
explicit[DB_FIELD_ANSWER_KEY[field]] =
|
|
83
|
+
optionValue;
|
|
84
|
+
}
|
|
85
|
+
return explicit;
|
|
86
|
+
}
|
|
87
|
+
async function gatherDbAnswers(fields, options, isNonInteractive) {
|
|
88
|
+
const explicit = collectExplicitDbFlags(options);
|
|
89
|
+
const remaining = fields.filter((field) => explicit[DB_FIELD_ANSWER_KEY[field]] === undefined);
|
|
90
|
+
if (!remaining.length || isNonInteractive) {
|
|
91
|
+
return explicit;
|
|
92
|
+
}
|
|
93
|
+
ensurePromptable();
|
|
94
|
+
const answerKeys = new Set(remaining.map((field) => DB_FIELD_ANSWER_KEY[field]));
|
|
95
|
+
const filteredQuestions = setup_questions_2.setupDbQuestions.filter((question) => answerKeys.has(question.name));
|
|
96
|
+
const prompted = (await inquirer_1.default.prompt(filteredQuestions));
|
|
97
|
+
return { ...prompted, ...explicit };
|
|
98
|
+
}
|
|
99
|
+
function registerSetupAppCommand(program) {
|
|
100
|
+
program
|
|
101
|
+
.command('setup-app')
|
|
102
|
+
.description('Install, configure, build, and seed an already-bootstrapped SolidX project, then start it')
|
|
103
|
+
.option('--no-start', 'Skip starting the dev servers after setup')
|
|
104
|
+
.option('--no-interactive', 'Skip all prompts and use defaults (or provided flags)')
|
|
105
|
+
.option('--verbose', 'Show detailed logs during installation')
|
|
106
|
+
.option('--skip-install', 'Skip npm install for solid-api and solid-ui')
|
|
107
|
+
.option('--skip-build', 'Skip solidctl build')
|
|
108
|
+
.option('--skip-seed', 'Skip solidctl seed')
|
|
109
|
+
.option('--force-env', 'Regenerate .env files even if they already exist')
|
|
110
|
+
.option('--db-client <client>', `Database: PostgreSQL, MySQL or MSSQL (default: ${setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseClient})`)
|
|
111
|
+
.option('--db-host <host>', `Database host (default: ${setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseHost})`)
|
|
112
|
+
.option('--db-port <port>', 'Database port (default: 5432/PostgreSQL, 3306/MySQL, 1433/MSSQL)')
|
|
113
|
+
.option('--db-name <name>', `Database name (default: ${setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseName})`)
|
|
114
|
+
.option('--db-username <username>', `Database username (default: ${setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabaseUsername})`)
|
|
115
|
+
.option('--db-password <password>', `Database password (default: ${setup_questions_2.SETUP_DB_DEFAULTS.solidApiDatabasePassword})`)
|
|
116
|
+
.action(async (options) => {
|
|
117
|
+
try {
|
|
118
|
+
await runSetup(options);
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
console.error(chalk_1.default.red('Error:'), err);
|
|
122
|
+
process.exit(1);
|
|
123
|
+
}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
async function runSetup(options) {
|
|
127
|
+
const isNonInteractive = options.interactive === false;
|
|
128
|
+
(0, helper_1.validateProjectRoot)();
|
|
129
|
+
(0, helper_1.validateProjectScript)('solid-api', 'solidx:dev');
|
|
130
|
+
(0, helper_1.validateProjectScript)('solid-ui', 'solidx:dev');
|
|
131
|
+
const projectRoot = process.cwd();
|
|
132
|
+
const backendPath = path_1.default.join(projectRoot, 'solid-api');
|
|
133
|
+
const frontendPath = path_1.default.join(projectRoot, 'solid-ui');
|
|
134
|
+
const backendEnvPath = path_1.default.join(backendPath, '.env');
|
|
135
|
+
const backendEnvExamplePath = path_1.default.join(backendPath, '.env.example');
|
|
136
|
+
const frontendEnvPath = path_1.default.join(frontendPath, '.env');
|
|
137
|
+
const frontendEnvExamplePath = path_1.default.join(frontendPath, '.env.example');
|
|
138
|
+
const apiPackageJson = fs_extra_1.default.readJsonSync(path_1.default.join(backendPath, 'package.json'));
|
|
139
|
+
const uiPackageJson = fs_extra_1.default.readJsonSync(path_1.default.join(frontendPath, 'package.json'));
|
|
140
|
+
const projectName = (0, helpers_2.inferProjectName)(apiPackageJson, projectRoot);
|
|
141
|
+
const properAppName = (0, helpers_2.properAppNameFor)(projectName);
|
|
142
|
+
const uiPort = (0, helpers_2.inferUiPort)(uiPackageJson);
|
|
143
|
+
const backendEnvExists = fs_extra_1.default.existsSync(backendEnvPath);
|
|
144
|
+
const exampleContent = fs_extra_1.default.existsSync(backendEnvExamplePath)
|
|
145
|
+
? fs_extra_1.default.readFileSync(backendEnvExamplePath, 'utf8')
|
|
146
|
+
: null;
|
|
147
|
+
const apiPortSource = backendEnvExists
|
|
148
|
+
? 'solid-api/.env'
|
|
149
|
+
: exampleContent !== null
|
|
150
|
+
? 'solid-api/.env.example'
|
|
151
|
+
: null;
|
|
152
|
+
const apiPort = (backendEnvExists
|
|
153
|
+
? (0, helpers_2.parseEnvFile)(fs_extra_1.default.readFileSync(backendEnvPath, 'utf8')).PORT
|
|
154
|
+
: exampleContent !== null
|
|
155
|
+
? (0, helpers_2.parseEnvFile)(exampleContent).PORT
|
|
156
|
+
: undefined) || '3000';
|
|
157
|
+
console.log(chalk_1.default.cyan('Setting up your SolidX project...'));
|
|
158
|
+
console.log(chalk_1.default.dim(` Project name ${projectName}`));
|
|
159
|
+
console.log(chalk_1.default.dim(` API port ${apiPort}${apiPortSource ? ` (from ${apiPortSource})` : ' (default)'}`));
|
|
160
|
+
console.log(chalk_1.default.dim(` UI port ${uiPort} (from solid-ui/package.json)`));
|
|
161
|
+
const envPlan = (0, helpers_2.planEnvWrite)({
|
|
162
|
+
envExists: backendEnvExists,
|
|
163
|
+
exampleContent,
|
|
164
|
+
forceEnv: Boolean(options.forceEnv),
|
|
165
|
+
});
|
|
166
|
+
let dbAnswers;
|
|
167
|
+
let pendingSynchronizeRestore = null;
|
|
168
|
+
if (envPlan.action === 'skip-existing') {
|
|
169
|
+
console.log(chalk_1.default.dim('\nsolid-api/.env already exists — leaving it untouched (use --force-env to regenerate).'));
|
|
170
|
+
const existingEnv = (0, helpers_2.parseEnvFile)(fs_extra_1.default.readFileSync(backendEnvPath, 'utf8'));
|
|
171
|
+
dbAnswers = (0, helpers_2.resolveAnswersFromExample)(existingEnv, {});
|
|
172
|
+
}
|
|
173
|
+
else if (envPlan.action === 'from-example') {
|
|
174
|
+
console.log(chalk_1.default.dim('\nFound solid-api/.env.example — filling in the gaps.'));
|
|
175
|
+
if (envPlan.otherBlankKeys.length) {
|
|
176
|
+
console.warn(chalk_1.default.yellow(`⚠ .env.example leaves these keys blank; fill them in manually after setup: ${envPlan.otherBlankKeys.join(', ')}`));
|
|
177
|
+
}
|
|
178
|
+
const prompted = await gatherDbAnswers(envPlan.promptDbFields, options, isNonInteractive);
|
|
179
|
+
dbAnswers = (0, helpers_2.resolveAnswersFromExample)(envPlan.parsed, prompted);
|
|
180
|
+
const overrides = {
|
|
181
|
+
[helpers_2.DB_ENV_KEYS.host]: dbAnswers.solidApiDatabaseHost,
|
|
182
|
+
[helpers_2.DB_ENV_KEYS.port]: dbAnswers.solidApiDatabasePort,
|
|
183
|
+
[helpers_2.DB_ENV_KEYS.name]: dbAnswers.solidApiDatabaseName,
|
|
184
|
+
[helpers_2.DB_ENV_KEYS.username]: dbAnswers.solidApiDatabaseUsername,
|
|
185
|
+
[helpers_2.DB_ENV_KEYS.password]: dbAnswers.solidApiDatabasePassword,
|
|
186
|
+
SOLID_CORE_DB_TYPE: (0, helpers_2.toDbTypeEnvValue)(dbAnswers.solidApiDatabaseClient),
|
|
187
|
+
DATABASE_URL: (0, helpers_2.buildDatabaseUrl)(dbAnswers),
|
|
188
|
+
DEFAULT_DATABASE_SYNCHRONIZE: 'true',
|
|
189
|
+
};
|
|
190
|
+
const originalSynchronize = envPlan.parsed.DEFAULT_DATABASE_SYNCHRONIZE;
|
|
191
|
+
if (originalSynchronize !== undefined &&
|
|
192
|
+
originalSynchronize.toLowerCase() !== 'true') {
|
|
193
|
+
pendingSynchronizeRestore = originalSynchronize;
|
|
194
|
+
}
|
|
195
|
+
fs_extra_1.default.writeFileSync(backendEnvPath, (0, helpers_2.buildEnvFromExample)(exampleContent, overrides));
|
|
196
|
+
console.log(chalk_1.default.green('Generated solid-api/.env from .env.example'));
|
|
197
|
+
}
|
|
198
|
+
else {
|
|
199
|
+
console.warn(chalk_1.default.yellow(`\n⚠ ${backendEnvExists
|
|
200
|
+
? 'Regenerating solid-api/.env from the template (--force-env), discarding its current contents.'
|
|
201
|
+
: 'No solid-api/.env or .env.example found.'} Prompting for database settings — ` +
|
|
202
|
+
'other settings this project may use (RabbitMQ, OAuth, SMTP, Redis, ...) will need to be added manually.'));
|
|
203
|
+
if (isNonInteractive) {
|
|
204
|
+
dbAnswers = buildSetupAnswersFromOptions(options);
|
|
205
|
+
}
|
|
206
|
+
else {
|
|
207
|
+
ensurePromptable();
|
|
208
|
+
console.log(chalk_1.default.cyan("\nLet's configure your database connection:"));
|
|
209
|
+
dbAnswers = (await inquirer_1.default.prompt(setup_questions_2.setupDbQuestions));
|
|
210
|
+
}
|
|
211
|
+
const createAppAnswers = (0, helpers_2.toCreateAppAnswers)(dbAnswers, {
|
|
212
|
+
projectName,
|
|
213
|
+
apiPort,
|
|
214
|
+
uiPort,
|
|
215
|
+
});
|
|
216
|
+
const backendEnvConfig = (0, helpers_1.getBackendEnvConfig)(createAppAnswers, properAppName);
|
|
217
|
+
(0, helpers_1.generateEnvFileFromConfig)(backendPath, {
|
|
218
|
+
...backendEnvConfig,
|
|
219
|
+
'Default DB Configuration': {
|
|
220
|
+
...backendEnvConfig['Default DB Configuration'],
|
|
221
|
+
SOLID_CORE_DB_TYPE: (0, helpers_2.toDbTypeEnvValue)(dbAnswers.solidApiDatabaseClient),
|
|
222
|
+
DATABASE_URL: (0, helpers_2.buildDatabaseUrl)(dbAnswers),
|
|
223
|
+
},
|
|
224
|
+
});
|
|
225
|
+
console.log(chalk_1.default.green('Generated solid-api/.env'));
|
|
226
|
+
}
|
|
227
|
+
const frontendEnvExists = fs_extra_1.default.existsSync(frontendEnvPath);
|
|
228
|
+
if (frontendEnvExists && !options.forceEnv) {
|
|
229
|
+
console.log(chalk_1.default.dim('solid-ui/.env already exists — leaving it untouched (use --force-env to regenerate).'));
|
|
230
|
+
}
|
|
231
|
+
else if (fs_extra_1.default.existsSync(frontendEnvExamplePath)) {
|
|
232
|
+
fs_extra_1.default.writeFileSync(frontendEnvPath, (0, helpers_2.buildEnvFromExample)(fs_extra_1.default.readFileSync(frontendEnvExamplePath, 'utf8'), {}));
|
|
233
|
+
console.log(chalk_1.default.green('Generated solid-ui/.env from .env.example'));
|
|
234
|
+
}
|
|
235
|
+
else {
|
|
236
|
+
const createAppAnswers = (0, helpers_2.toCreateAppAnswers)(dbAnswers, {
|
|
237
|
+
projectName,
|
|
238
|
+
apiPort,
|
|
239
|
+
uiPort,
|
|
240
|
+
});
|
|
241
|
+
(0, helpers_1.generateEnvFileFromConfig)(frontendPath, (0, helpers_1.getFrontendEnvJson)(createAppAnswers, properAppName));
|
|
242
|
+
console.log(chalk_1.default.green('Generated solid-ui/.env'));
|
|
243
|
+
}
|
|
244
|
+
const portConflict = (0, dev_ports_1.validateCreateAppPorts)(apiPort, uiPort);
|
|
245
|
+
if (portConflict) {
|
|
246
|
+
failSetup(portConflict);
|
|
247
|
+
}
|
|
248
|
+
if (dbAnswers.solidApiDatabaseClient !== 'PostgreSQL') {
|
|
249
|
+
console.warn(chalk_1.default.yellow(`\n⚠ The SolidX API template only ships a PostgreSQL driver today. solid-api is likely to fail ` +
|
|
250
|
+
`to boot against ${dbAnswers.solidApiDatabaseClient} until that's addressed upstream.`));
|
|
251
|
+
}
|
|
252
|
+
const createAppAnswers = (0, helpers_2.toCreateAppAnswers)(dbAnswers, {
|
|
253
|
+
projectName,
|
|
254
|
+
apiPort,
|
|
255
|
+
uiPort,
|
|
256
|
+
});
|
|
257
|
+
const dbSpinner = (0, ora_1.default)(`Verifying database "${dbAnswers.solidApiDatabaseName}"...`).start();
|
|
258
|
+
try {
|
|
259
|
+
const exists = await (0, helpers_1.verifyDatabaseExists)(createAppAnswers);
|
|
260
|
+
if (exists) {
|
|
261
|
+
dbSpinner.succeed(`Database "${dbAnswers.solidApiDatabaseName}" verified`);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
dbSpinner.stop();
|
|
265
|
+
let shouldCreate = isNonInteractive;
|
|
266
|
+
if (!isNonInteractive) {
|
|
267
|
+
ensurePromptable();
|
|
268
|
+
({ shouldCreate } = (await inquirer_1.default.prompt([
|
|
269
|
+
{
|
|
270
|
+
type: 'confirm',
|
|
271
|
+
name: 'shouldCreate',
|
|
272
|
+
message: `Database "${dbAnswers.solidApiDatabaseName}" does not exist. Create it now?`,
|
|
273
|
+
default: true,
|
|
274
|
+
},
|
|
275
|
+
])));
|
|
276
|
+
}
|
|
277
|
+
if (!shouldCreate) {
|
|
278
|
+
failSetup('Aborted: database does not exist.');
|
|
279
|
+
}
|
|
280
|
+
const createSpinner = (0, ora_1.default)(`Creating database "${dbAnswers.solidApiDatabaseName}"...`).start();
|
|
281
|
+
await (0, helpers_1.createDatabaseIfNotExists)(createAppAnswers);
|
|
282
|
+
createSpinner.succeed(`Database "${dbAnswers.solidApiDatabaseName}" created`);
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
catch (err) {
|
|
286
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
287
|
+
dbSpinner.fail(`Could not verify/create database: ${message}`);
|
|
288
|
+
process.exit(1);
|
|
289
|
+
}
|
|
290
|
+
if (!options.skipInstall) {
|
|
291
|
+
const showLogs = Boolean(options.verbose);
|
|
292
|
+
const install = async (target, label) => {
|
|
293
|
+
const spinner = (0, ora_1.default)(`Installing ${label} dependencies...`).start();
|
|
294
|
+
try {
|
|
295
|
+
await (0, helpers_1.installFromPath)(target, showLogs, (line) => {
|
|
296
|
+
spinner.text = `Installing ${label} dependencies... ${chalk_1.default.dim('> ' + line)}`;
|
|
297
|
+
});
|
|
298
|
+
spinner.succeed(`${label} dependencies installed`);
|
|
299
|
+
}
|
|
300
|
+
catch (err) {
|
|
301
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
302
|
+
spinner.fail(`Failed to install ${label} dependencies: ${message}`);
|
|
303
|
+
process.exit(1);
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
await install(backendPath, 'solid-api');
|
|
307
|
+
await install(frontendPath, 'solid-ui');
|
|
308
|
+
}
|
|
309
|
+
if (!options.skipBuild) {
|
|
310
|
+
console.log(chalk_1.default.cyan('\nBuilding solid-api...'));
|
|
311
|
+
try {
|
|
312
|
+
(0, build_command_1.runBuild)(projectRoot, {});
|
|
313
|
+
}
|
|
314
|
+
catch (err) {
|
|
315
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
316
|
+
console.error(chalk_1.default.red(`❌ Build failed: ${message}`));
|
|
317
|
+
process.exit(1);
|
|
318
|
+
}
|
|
319
|
+
}
|
|
320
|
+
if (!options.skipSeed) {
|
|
321
|
+
console.log(chalk_1.default.cyan('\nSeeding database...'));
|
|
322
|
+
(0, seed_command_1.runSeed)(projectRoot, []);
|
|
323
|
+
}
|
|
324
|
+
if (pendingSynchronizeRestore !== null) {
|
|
325
|
+
(0, helpers_1.setEnvValue)(backendEnvPath, 'DEFAULT_DATABASE_SYNCHRONIZE', pendingSynchronizeRestore);
|
|
326
|
+
}
|
|
327
|
+
console.log(chalk_1.default.green(`\n${projectName} is set up!`));
|
|
328
|
+
console.log(chalk_1.default.yellow('\nDefault Admin Credentials:'));
|
|
329
|
+
console.log(chalk_1.default.magenta('Username:'), chalk_1.default.green('sa'));
|
|
330
|
+
console.log(chalk_1.default.magenta('Password:'), chalk_1.default.green('Admin@3214$'));
|
|
331
|
+
console.log(`\n ${chalk_1.default.dim('API ')} ${chalk_1.default.blue(`http://localhost:${apiPort}`)}`);
|
|
332
|
+
console.log(` ${chalk_1.default.dim('API Ref ')} ${chalk_1.default.blue(`http://localhost:${apiPort}/docs`)}`);
|
|
333
|
+
console.log(` ${chalk_1.default.dim('UI ')} ${chalk_1.default.blue(`http://localhost:${uiPort}`)}\n`);
|
|
334
|
+
if (options.start === false) {
|
|
335
|
+
console.log(`Next: ${chalk_1.default.magenta('solidctl start:dev')}`);
|
|
336
|
+
return;
|
|
337
|
+
}
|
|
338
|
+
console.log(chalk_1.default.cyan('Starting SolidX dev processes...\n'));
|
|
339
|
+
const supervisor = new start_command_1.StartSupervisor(projectRoot, start_command_1.DEV_SERVICE_SCRIPTS, {}, true);
|
|
340
|
+
await supervisor.start();
|
|
341
|
+
}
|
|
342
|
+
//# sourceMappingURL=setup-app.command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-app.command.js","sourceRoot":"","sources":["../../../src/commands/setup-app/setup-app.command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
export interface SetupProjectAnswers {
|
|
2
|
+
solidApiDatabaseClient: string;
|
|
3
|
+
solidApiDatabaseHost: string;
|
|
4
|
+
solidApiDatabasePort: string;
|
|
5
|
+
solidApiDatabaseName: string;
|
|
6
|
+
solidApiDatabaseUsername: string;
|
|
7
|
+
solidApiDatabasePassword: string;
|
|
8
|
+
}
|
|
9
|
+
export declare const SETUP_DB_DEFAULTS: {
|
|
10
|
+
readonly solidApiDatabaseClient: "PostgreSQL";
|
|
11
|
+
readonly solidApiDatabaseHost: "localhost";
|
|
12
|
+
readonly solidApiDatabasePortPostgres: "5432";
|
|
13
|
+
readonly solidApiDatabasePortMssql: "1433";
|
|
14
|
+
readonly solidApiDatabasePortMysql: "3306";
|
|
15
|
+
readonly solidApiDatabaseName: "solidx_app_db";
|
|
16
|
+
readonly solidApiDatabaseUsername: "solidx_app_user";
|
|
17
|
+
readonly solidApiDatabasePassword: "strongpassword";
|
|
18
|
+
};
|
|
19
|
+
export declare const setupDbQuestions: ({
|
|
20
|
+
type: string;
|
|
21
|
+
name: string;
|
|
22
|
+
message: string;
|
|
23
|
+
choices: ("PostgreSQL" | "MySQL" | "MSSQL")[];
|
|
24
|
+
default: "PostgreSQL";
|
|
25
|
+
} | {
|
|
26
|
+
type: string;
|
|
27
|
+
name: string;
|
|
28
|
+
message: string;
|
|
29
|
+
default: "localhost";
|
|
30
|
+
choices?: undefined;
|
|
31
|
+
} | {
|
|
32
|
+
type: string;
|
|
33
|
+
name: string;
|
|
34
|
+
message: string;
|
|
35
|
+
default: (answers: SetupProjectAnswers) => "5432" | "1433" | "3306";
|
|
36
|
+
choices?: undefined;
|
|
37
|
+
} | {
|
|
38
|
+
type: string;
|
|
39
|
+
name: string;
|
|
40
|
+
message: string;
|
|
41
|
+
default: "solidx_app_db";
|
|
42
|
+
choices?: undefined;
|
|
43
|
+
} | {
|
|
44
|
+
type: string;
|
|
45
|
+
name: string;
|
|
46
|
+
message: string;
|
|
47
|
+
default: "solidx_app_user";
|
|
48
|
+
choices?: undefined;
|
|
49
|
+
} | {
|
|
50
|
+
type: string;
|
|
51
|
+
name: string;
|
|
52
|
+
message: string;
|
|
53
|
+
default: "strongpassword";
|
|
54
|
+
choices?: undefined;
|
|
55
|
+
})[];
|
|
@@ -0,0 +1,60 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.setupDbQuestions = exports.SETUP_DB_DEFAULTS = void 0;
|
|
4
|
+
const setup_questions_1 = require("../create-app/setup-questions");
|
|
5
|
+
exports.SETUP_DB_DEFAULTS = {
|
|
6
|
+
solidApiDatabaseClient: 'PostgreSQL',
|
|
7
|
+
solidApiDatabaseHost: 'localhost',
|
|
8
|
+
solidApiDatabasePortPostgres: '5432',
|
|
9
|
+
solidApiDatabasePortMssql: '1433',
|
|
10
|
+
solidApiDatabasePortMysql: '3306',
|
|
11
|
+
solidApiDatabaseName: 'solidx_app_db',
|
|
12
|
+
solidApiDatabaseUsername: 'solidx_app_user',
|
|
13
|
+
solidApiDatabasePassword: 'strongpassword',
|
|
14
|
+
};
|
|
15
|
+
exports.setupDbQuestions = [
|
|
16
|
+
{
|
|
17
|
+
type: 'list',
|
|
18
|
+
name: 'solidApiDatabaseClient',
|
|
19
|
+
message: 'Select your database?',
|
|
20
|
+
choices: [...setup_questions_1.DATABASE_CLIENTS],
|
|
21
|
+
default: exports.SETUP_DB_DEFAULTS.solidApiDatabaseClient,
|
|
22
|
+
},
|
|
23
|
+
{
|
|
24
|
+
type: 'input',
|
|
25
|
+
name: 'solidApiDatabaseHost',
|
|
26
|
+
message: 'Enter your database host',
|
|
27
|
+
default: exports.SETUP_DB_DEFAULTS.solidApiDatabaseHost,
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
type: 'input',
|
|
31
|
+
name: 'solidApiDatabasePort',
|
|
32
|
+
message: 'Enter your database port',
|
|
33
|
+
default: (answers) => {
|
|
34
|
+
if (answers.solidApiDatabaseClient === 'PostgreSQL')
|
|
35
|
+
return exports.SETUP_DB_DEFAULTS.solidApiDatabasePortPostgres;
|
|
36
|
+
if (answers.solidApiDatabaseClient === 'MySQL')
|
|
37
|
+
return exports.SETUP_DB_DEFAULTS.solidApiDatabasePortMysql;
|
|
38
|
+
return exports.SETUP_DB_DEFAULTS.solidApiDatabasePortMssql;
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
type: 'input',
|
|
43
|
+
name: 'solidApiDatabaseName',
|
|
44
|
+
message: 'Enter your database name',
|
|
45
|
+
default: exports.SETUP_DB_DEFAULTS.solidApiDatabaseName,
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
type: 'input',
|
|
49
|
+
name: 'solidApiDatabaseUsername',
|
|
50
|
+
message: 'Enter your database username',
|
|
51
|
+
default: exports.SETUP_DB_DEFAULTS.solidApiDatabaseUsername,
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
type: 'password',
|
|
55
|
+
name: 'solidApiDatabasePassword',
|
|
56
|
+
message: 'Enter your database password',
|
|
57
|
+
default: exports.SETUP_DB_DEFAULTS.solidApiDatabasePassword,
|
|
58
|
+
},
|
|
59
|
+
];
|
|
60
|
+
//# sourceMappingURL=setup-questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup-questions.js","sourceRoot":"","sources":["../../../src/commands/setup-app/setup-questions.ts"],"names":[],"mappings":";;;AAAA,mEAAiE;AAYpD,QAAA,iBAAiB,GAAG;IAC/B,sBAAsB,EAAE,YAAY;IACpC,oBAAoB,EAAE,WAAW;IACjC,4BAA4B,EAAE,MAAM;IACpC,yBAAyB,EAAE,MAAM;IACjC,yBAAyB,EAAE,MAAM;IACjC,oBAAoB,EAAE,eAAe;IACrC,wBAAwB,EAAE,iBAAiB;IAC3C,wBAAwB,EAAE,gBAAgB;CAClC,CAAC;AAOE,QAAA,gBAAgB,GAAG;IAC9B;QACE,IAAI,EAAE,MAAM;QACZ,IAAI,EAAE,wBAAwB;QAC9B,OAAO,EAAE,uBAAuB;QAChC,OAAO,EAAE,CAAC,GAAG,kCAAgB,CAAC;QAC9B,OAAO,EAAE,yBAAiB,CAAC,sBAAsB;KAClD;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,yBAAiB,CAAC,oBAAoB;KAChD;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,CAAC,OAA4B,EAAE,EAAE;YACxC,IAAI,OAAO,CAAC,sBAAsB,KAAK,YAAY;gBACjD,OAAO,yBAAiB,CAAC,4BAA4B,CAAC;YACxD,IAAI,OAAO,CAAC,sBAAsB,KAAK,OAAO;gBAC5C,OAAO,yBAAiB,CAAC,yBAAyB,CAAC;YACrD,OAAO,yBAAiB,CAAC,yBAAyB,CAAC;QACrD,CAAC;KACF;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,sBAAsB;QAC5B,OAAO,EAAE,0BAA0B;QACnC,OAAO,EAAE,yBAAiB,CAAC,oBAAoB;KAChD;IACD;QACE,IAAI,EAAE,OAAO;QACb,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,8BAA8B;QACvC,OAAO,EAAE,yBAAiB,CAAC,wBAAwB;KACpD;IACD;QACE,IAAI,EAAE,UAAU;QAChB,IAAI,EAAE,0BAA0B;QAChC,OAAO,EAAE,8BAA8B;QACvC,OAAO,EAAE,yBAAiB,CAAC,wBAAwB;KACpD;CACF,CAAC"}
|
|
@@ -1,2 +1,64 @@
|
|
|
1
1
|
import { Command } from 'commander';
|
|
2
|
+
export type ScriptServiceName = 'api' | 'ui';
|
|
3
|
+
export type ServiceScripts = Record<ScriptServiceName, string>;
|
|
4
|
+
export type StartOptions = {
|
|
5
|
+
api?: boolean;
|
|
6
|
+
controls?: boolean;
|
|
7
|
+
plain?: boolean;
|
|
8
|
+
ui?: boolean;
|
|
9
|
+
mcp?: boolean;
|
|
10
|
+
};
|
|
11
|
+
export declare const DEV_SERVICE_SCRIPTS: ServiceScripts;
|
|
12
|
+
export declare const START_SERVICE_SCRIPTS: ServiceScripts;
|
|
13
|
+
export declare class StartSupervisor {
|
|
14
|
+
private readonly projectRoot;
|
|
15
|
+
private readonly activeServices;
|
|
16
|
+
private readonly apiPort;
|
|
17
|
+
private readonly uiPort;
|
|
18
|
+
private readonly serviceConfigs;
|
|
19
|
+
private readonly serviceScripts;
|
|
20
|
+
private readonly serviceStates;
|
|
21
|
+
private readonly isInteractive;
|
|
22
|
+
private readonly npmCommand;
|
|
23
|
+
private readonly supportsMcp;
|
|
24
|
+
private mcpPort;
|
|
25
|
+
private mcpLaunchConfig;
|
|
26
|
+
private shuttingDown;
|
|
27
|
+
private startupPhase;
|
|
28
|
+
private startupAbortInProgress;
|
|
29
|
+
private exitCode;
|
|
30
|
+
private stdinWasRaw;
|
|
31
|
+
constructor(projectRoot: string, serviceScripts: ServiceScripts, options: StartOptions, supportsMcp?: boolean);
|
|
32
|
+
start(): Promise<void>;
|
|
33
|
+
private validatePortAssignments;
|
|
34
|
+
private startMcpServer;
|
|
35
|
+
private createInitialState;
|
|
36
|
+
private resolveActiveServices;
|
|
37
|
+
private spawnService;
|
|
38
|
+
private handleChunk;
|
|
39
|
+
private flushBuffer;
|
|
40
|
+
private printLog;
|
|
41
|
+
private printStatus;
|
|
42
|
+
private writeWithFooter;
|
|
43
|
+
private renderFooter;
|
|
44
|
+
private truncateAnsiText;
|
|
45
|
+
private attachSignalHandlers;
|
|
46
|
+
private attachKeyboardControls;
|
|
47
|
+
private restartService;
|
|
48
|
+
private stopChild;
|
|
49
|
+
private terminateChild;
|
|
50
|
+
private scheduleForceKill;
|
|
51
|
+
private clearForceKillTimer;
|
|
52
|
+
private handleUnexpectedExit;
|
|
53
|
+
private shutdown;
|
|
54
|
+
private abortStartup;
|
|
55
|
+
private hasRunningChildren;
|
|
56
|
+
private cleanupTerminal;
|
|
57
|
+
private resolveApiPort;
|
|
58
|
+
private resolveUiPort;
|
|
59
|
+
private readEnvValue;
|
|
60
|
+
private getApiDocsUrl;
|
|
61
|
+
private getUiUrl;
|
|
62
|
+
private openUrlInBrowser;
|
|
63
|
+
}
|
|
2
64
|
export declare function registerStartCommand(program: Command): void;
|
|
@@ -3,6 +3,7 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
3
3
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
4
|
};
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.StartSupervisor = exports.START_SERVICE_SCRIPTS = exports.DEV_SERVICE_SCRIPTS = void 0;
|
|
6
7
|
exports.registerStartCommand = registerStartCommand;
|
|
7
8
|
const child_process_1 = require("child_process");
|
|
8
9
|
const chalk_1 = __importDefault(require("chalk"));
|
|
@@ -13,6 +14,14 @@ const helper_1 = require("../helper");
|
|
|
13
14
|
const agent_helper_1 = require("./agent-helper");
|
|
14
15
|
const mcp_launch_1 = require("./mcp-launch");
|
|
15
16
|
const dev_ports_1 = require("../utils/dev-ports");
|
|
17
|
+
exports.DEV_SERVICE_SCRIPTS = {
|
|
18
|
+
api: 'solidx:dev',
|
|
19
|
+
ui: 'solidx:dev',
|
|
20
|
+
};
|
|
21
|
+
exports.START_SERVICE_SCRIPTS = {
|
|
22
|
+
api: 'start',
|
|
23
|
+
ui: 'dev',
|
|
24
|
+
};
|
|
16
25
|
class StartSupervisor {
|
|
17
26
|
projectRoot;
|
|
18
27
|
activeServices;
|
|
@@ -586,6 +595,7 @@ class StartSupervisor {
|
|
|
586
595
|
this.printStatus(`Opening ${label} at ${url}`);
|
|
587
596
|
}
|
|
588
597
|
}
|
|
598
|
+
exports.StartSupervisor = StartSupervisor;
|
|
589
599
|
function registerStartCommand(program) {
|
|
590
600
|
const registerSupervisorCommand = (commandName, description, serviceScripts, supportsMcp = false) => {
|
|
591
601
|
const command = program
|
|
@@ -615,13 +625,7 @@ function registerStartCommand(program) {
|
|
|
615
625
|
await supervisor.start();
|
|
616
626
|
});
|
|
617
627
|
};
|
|
618
|
-
registerSupervisorCommand('start:dev', 'Start solid-api, solid-ui, and MCP dev processes in a single supervisor',
|
|
619
|
-
|
|
620
|
-
ui: 'solidx:dev',
|
|
621
|
-
}, true);
|
|
622
|
-
registerSupervisorCommand('start', 'Start solid-api, solid-ui, and MCP standard processes in a single supervisor', {
|
|
623
|
-
api: 'start',
|
|
624
|
-
ui: 'dev',
|
|
625
|
-
}, true);
|
|
628
|
+
registerSupervisorCommand('start:dev', 'Start solid-api, solid-ui, and MCP dev processes in a single supervisor', exports.DEV_SERVICE_SCRIPTS, true);
|
|
629
|
+
registerSupervisorCommand('start', 'Start solid-api, solid-ui, and MCP standard processes in a single supervisor', exports.START_SERVICE_SCRIPTS, true);
|
|
626
630
|
}
|
|
627
631
|
//# sourceMappingURL=start.command.js.map
|