flash-builder 1.0.7 → 1.0.9
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/index.cjs +114 -81
- package/dist/index.js +115 -82
- package/package.json +1 -1
package/dist/index.cjs
CHANGED
|
@@ -91,7 +91,7 @@ var require_main = __commonJS((exports2, module2) => {
|
|
|
91
91
|
var os = require("os");
|
|
92
92
|
var crypto = require("crypto");
|
|
93
93
|
var packageJson = require_package();
|
|
94
|
-
var
|
|
94
|
+
var version2 = packageJson.version;
|
|
95
95
|
var TIPS = [
|
|
96
96
|
"\uD83D\uDD10 encrypt with Dotenvx: https://dotenvx.com",
|
|
97
97
|
"\uD83D\uDD10 prevent committing .env to code: https://dotenvx.com/precommit",
|
|
@@ -175,13 +175,13 @@ var require_main = __commonJS((exports2, module2) => {
|
|
|
175
175
|
return DotenvModule.parse(decrypted);
|
|
176
176
|
}
|
|
177
177
|
function _warn(message) {
|
|
178
|
-
console.error(`[dotenv@${
|
|
178
|
+
console.error(`[dotenv@${version2}][WARN] ${message}`);
|
|
179
179
|
}
|
|
180
180
|
function _debug(message) {
|
|
181
|
-
console.log(`[dotenv@${
|
|
181
|
+
console.log(`[dotenv@${version2}][DEBUG] ${message}`);
|
|
182
182
|
}
|
|
183
183
|
function _log(message) {
|
|
184
|
-
console.log(`[dotenv@${
|
|
184
|
+
console.log(`[dotenv@${version2}] ${message}`);
|
|
185
185
|
}
|
|
186
186
|
function _dotenvKey(options) {
|
|
187
187
|
if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {
|
|
@@ -9818,42 +9818,38 @@ var meow = (helpText, options = {}) => {
|
|
|
9818
9818
|
return result;
|
|
9819
9819
|
};
|
|
9820
9820
|
|
|
9821
|
+
// version.ts
|
|
9822
|
+
var version = "1.0.9";
|
|
9823
|
+
var version_default = version;
|
|
9824
|
+
|
|
9821
9825
|
// src/banner.ts
|
|
9822
|
-
var
|
|
9823
|
-
|
|
9826
|
+
var banner = `
|
|
9827
|
+
________ __ ____ _ __ __
|
|
9828
|
+
/ ____/ /___ ______/ /_ / __ )__ __(_) /___/ /__ _____
|
|
9829
|
+
/ /_ / / __ \`/ ___/ __ \\ / __ / / / / / / __ / _ \\/ ___/
|
|
9830
|
+
/ __/ / / /_/ (__ ) / / / / /_/ / /_/ / / / /_/ / __/ /
|
|
9831
|
+
/_/ /_/\\__,_/____/_/ /_/ /_____/\\__,_/_/_/\\__,_/\\___/_/ ${version_default}
|
|
9832
|
+
---------------------------------------------------------------------
|
|
9833
|
+
`;
|
|
9834
|
+
var banner_default = banner;
|
|
9824
9835
|
|
|
9825
9836
|
// src/environment.ts
|
|
9837
|
+
var import_fs2 = __toESM(require("fs"));
|
|
9838
|
+
var import_path2 = __toESM(require("path"));
|
|
9826
9839
|
var import_dotenv = __toESM(require_main(), 1);
|
|
9827
9840
|
import_dotenv.default.config({ path: ".env", quiet: true });
|
|
9828
|
-
var PWD = process.cwd();
|
|
9829
9841
|
var ENV = process.env;
|
|
9830
|
-
var
|
|
9831
|
-
|
|
9842
|
+
var IS_NPMJS = ENV["_"]?.includes(".bin/fbi");
|
|
9843
|
+
var PWD = IS_NPMJS ? process.cwd() : import_path2.default.join(process.cwd(), "isolate");
|
|
9844
|
+
if (!IS_NPMJS && !import_fs2.default.existsSync(PWD)) {
|
|
9845
|
+
import_fs2.default.mkdirSync(PWD, { recursive: true });
|
|
9846
|
+
}
|
|
9832
9847
|
var PROJECT_TARGET_URL = ENV.PROJECT_TARGET_URL;
|
|
9833
9848
|
var LLM_PROVIDER = ENV.LLM_PROVIDER;
|
|
9834
9849
|
var LLM_MODEL = ENV.LLM_MODEL;
|
|
9835
9850
|
var LLM_BASE_URL = ENV.LLM_BASE_URL;
|
|
9836
9851
|
var LLM_API_KEY = ENV.LLM_API_KEY || "";
|
|
9837
9852
|
|
|
9838
|
-
// src/banner.ts
|
|
9839
|
-
var packageJsonPath = FROM_NODE_MODULE ? import_path2.default.join(PWD, "node_modules", "flash-builder", "package.json") : import_path2.default.join(PWD, "package.json");
|
|
9840
|
-
var packageJson = JSON.parse(import_fs2.default.readFileSync(packageJsonPath, "utf-8"));
|
|
9841
|
-
var packageVersion = packageJson.version;
|
|
9842
|
-
console.log({
|
|
9843
|
-
packageJsonPath,
|
|
9844
|
-
packageJson,
|
|
9845
|
-
packageVersion
|
|
9846
|
-
});
|
|
9847
|
-
var banner = `
|
|
9848
|
-
________ __ ____ _ __ __
|
|
9849
|
-
/ ____/ /___ ______/ /_ / __ )__ __(_) /___/ /__ _____
|
|
9850
|
-
/ /_ / / __ \`/ ___/ __ \\ / __ / / / / / / __ / _ \\/ ___/
|
|
9851
|
-
/ __/ / / /_/ (__ ) / / / / /_/ / /_/ / / / /_/ / __/ /
|
|
9852
|
-
/_/ /_/\\__,_/____/_/ /_/ /_____/\\__,_/_/_/\\__,_/\\___/_/ ${packageVersion}
|
|
9853
|
-
---------------------------------------------------------------------
|
|
9854
|
-
`;
|
|
9855
|
-
var banner_default = banner;
|
|
9856
|
-
|
|
9857
9853
|
// src/commands/be/index.ts
|
|
9858
9854
|
var import_node_fs2 = require("fs");
|
|
9859
9855
|
var import_node_path3 = require("path");
|
|
@@ -9865,45 +9861,26 @@ function log(message, isVerbose = false, verbose = false) {
|
|
|
9865
9861
|
}
|
|
9866
9862
|
}
|
|
9867
9863
|
|
|
9868
|
-
// src/commands/be/
|
|
9869
|
-
|
|
9870
|
-
|
|
9871
|
-
|
|
9872
|
-
|
|
9873
|
-
|
|
9874
|
-
|
|
9875
|
-
|
|
9876
|
-
|
|
9877
|
-
|
|
9878
|
-
|
|
9864
|
+
// src/commands/be/files.ts
|
|
9865
|
+
var packageJson = (projectName) => ({
|
|
9866
|
+
name: projectName,
|
|
9867
|
+
version: "1.0.0",
|
|
9868
|
+
type: "module",
|
|
9869
|
+
scripts: {
|
|
9870
|
+
dev: "bun run --watch src/index.ts",
|
|
9871
|
+
start: "bun run src/index.ts",
|
|
9872
|
+
build: "bun build src/index.ts --outdir ./dist"
|
|
9873
|
+
},
|
|
9874
|
+
dependencies: {
|
|
9875
|
+
express: "^4.18.2",
|
|
9876
|
+
dotenv: "^16.3.1"
|
|
9877
|
+
},
|
|
9878
|
+
devDependencies: {
|
|
9879
|
+
"@types/express": "^4.17.21",
|
|
9880
|
+
"@types/bun": "latest"
|
|
9879
9881
|
}
|
|
9880
|
-
|
|
9881
|
-
|
|
9882
|
-
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src"), { recursive: true });
|
|
9883
|
-
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "routes"), { recursive: true });
|
|
9884
|
-
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "controllers"), { recursive: true });
|
|
9885
|
-
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "models"), { recursive: true });
|
|
9886
|
-
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "middlewares"), { recursive: true });
|
|
9887
|
-
const packageJson2 = {
|
|
9888
|
-
name: projectName,
|
|
9889
|
-
version: "1.0.0",
|
|
9890
|
-
type: "module",
|
|
9891
|
-
scripts: {
|
|
9892
|
-
dev: "bun run --watch src/index.ts",
|
|
9893
|
-
start: "bun run src/index.ts",
|
|
9894
|
-
build: "bun build src/index.ts --outdir ./dist"
|
|
9895
|
-
},
|
|
9896
|
-
dependencies: {
|
|
9897
|
-
express: "^4.18.2",
|
|
9898
|
-
dotenv: "^16.3.1"
|
|
9899
|
-
},
|
|
9900
|
-
devDependencies: {
|
|
9901
|
-
"@types/express": "^4.17.21",
|
|
9902
|
-
"@types/bun": "latest"
|
|
9903
|
-
}
|
|
9904
|
-
};
|
|
9905
|
-
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, "package.json"), JSON.stringify(packageJson2, null, 2));
|
|
9906
|
-
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, "src", "index.ts"), `import express from "express";
|
|
9882
|
+
});
|
|
9883
|
+
var indexTs = (projectName) => `import express from "express";
|
|
9907
9884
|
import dotenv from "dotenv";
|
|
9908
9885
|
|
|
9909
9886
|
dotenv.config();
|
|
@@ -9920,15 +9897,15 @@ app.get("/", (req, res) => {
|
|
|
9920
9897
|
app.listen(PORT, () => {
|
|
9921
9898
|
console.log(\`\uD83D\uDE80 Server running on http://localhost:\${PORT}\`);
|
|
9922
9899
|
});
|
|
9923
|
-
|
|
9924
|
-
|
|
9925
|
-
`);
|
|
9926
|
-
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, ".gitignore"), `node_modules/
|
|
9900
|
+
`;
|
|
9901
|
+
var gitignore = `node_modules/
|
|
9927
9902
|
dist/
|
|
9928
9903
|
.env
|
|
9929
9904
|
*.log
|
|
9930
|
-
|
|
9931
|
-
|
|
9905
|
+
bun.lock
|
|
9906
|
+
bun.lockb
|
|
9907
|
+
`;
|
|
9908
|
+
var readme = (projectName) => `# ${projectName}
|
|
9932
9909
|
|
|
9933
9910
|
Backend project created with fbi
|
|
9934
9911
|
|
|
@@ -9939,12 +9916,67 @@ cd ${projectName}
|
|
|
9939
9916
|
bun install
|
|
9940
9917
|
bun run dev
|
|
9941
9918
|
\`\`\`
|
|
9942
|
-
|
|
9943
|
-
|
|
9919
|
+
`;
|
|
9920
|
+
var envFile = `PORT=3000
|
|
9921
|
+
`;
|
|
9922
|
+
|
|
9923
|
+
// src/commands/be/index.ts
|
|
9924
|
+
function beCommand(projectName, verbose, targetPath) {
|
|
9925
|
+
if (!projectName) {
|
|
9926
|
+
console.error("\u274C Error: Project name is required");
|
|
9927
|
+
console.log("Usage: fbi be <project-name>");
|
|
9928
|
+
process.exit(1);
|
|
9929
|
+
}
|
|
9930
|
+
const isCurrentDir = targetPath === "." || targetPath?.startsWith("./");
|
|
9931
|
+
let projectPath;
|
|
9932
|
+
let actualProjectName;
|
|
9933
|
+
if (isCurrentDir && targetPath) {
|
|
9934
|
+
projectPath = targetPath === "." ? PWD : import_node_path3.join(PWD, targetPath.replace("./", ""));
|
|
9935
|
+
actualProjectName = projectName;
|
|
9936
|
+
} else {
|
|
9937
|
+
projectPath = import_node_path3.join(PWD, projectName);
|
|
9938
|
+
actualProjectName = projectName;
|
|
9939
|
+
}
|
|
9940
|
+
if (import_node_fs2.existsSync(projectPath)) {
|
|
9941
|
+
if (IS_NPMJS) {
|
|
9942
|
+
console.error(`\u274C Error: Directory '${projectName}' already exists`);
|
|
9943
|
+
process.exit(1);
|
|
9944
|
+
}
|
|
9945
|
+
}
|
|
9946
|
+
if (!IS_NPMJS) {
|
|
9947
|
+
import_node_fs2.rmSync(PWD, { recursive: true, force: true });
|
|
9948
|
+
}
|
|
9949
|
+
log(`\uD83D\uDE80 Creating new backend project: ${actualProjectName}`, false, verbose);
|
|
9950
|
+
import_node_fs2.mkdirSync(projectPath, { recursive: true });
|
|
9951
|
+
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src"), { recursive: true });
|
|
9952
|
+
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "routes"), { recursive: true });
|
|
9953
|
+
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "controllers"), { recursive: true });
|
|
9954
|
+
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "models"), { recursive: true });
|
|
9955
|
+
import_node_fs2.mkdirSync(import_node_path3.join(projectPath, "src", "middlewares"), { recursive: true });
|
|
9956
|
+
const packageJsonString = JSON.stringify(packageJson(actualProjectName), null, 2);
|
|
9957
|
+
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, "package.json"), packageJsonString);
|
|
9958
|
+
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, "src", "index.ts"), indexTs(actualProjectName));
|
|
9959
|
+
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, ".env"), envFile);
|
|
9960
|
+
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, ".gitignore"), gitignore);
|
|
9961
|
+
import_node_fs2.writeFileSync(import_node_path3.join(projectPath, "README.md"), readme(actualProjectName));
|
|
9962
|
+
log(`\u2705 Backend project '${actualProjectName}' created successfully!`, false, verbose);
|
|
9963
|
+
log(`
|
|
9964
|
+
\uD83D\uDCE6 Installing dependencies...`, false, verbose);
|
|
9965
|
+
const installProcess = Bun.spawnSync(["bun", "install"], {
|
|
9966
|
+
cwd: projectPath,
|
|
9967
|
+
stdout: "inherit",
|
|
9968
|
+
stderr: "inherit"
|
|
9969
|
+
});
|
|
9970
|
+
if (installProcess.exitCode === 0) {
|
|
9971
|
+
log(`\u2705 Dependencies installed successfully!`, false, verbose);
|
|
9972
|
+
} else {
|
|
9973
|
+
log(`\u274C Failed to install dependencies`, false, verbose);
|
|
9974
|
+
}
|
|
9944
9975
|
log(`
|
|
9945
9976
|
Next steps:`, true, verbose);
|
|
9946
|
-
|
|
9947
|
-
|
|
9977
|
+
if (!isCurrentDir) {
|
|
9978
|
+
log(` cd ${actualProjectName}`, true, verbose);
|
|
9979
|
+
}
|
|
9948
9980
|
log(` bun run dev`, true, verbose);
|
|
9949
9981
|
}
|
|
9950
9982
|
|
|
@@ -9957,7 +9989,7 @@ function mcpCommand(projectName, verbose) {
|
|
|
9957
9989
|
console.log("Usage: fbi mcp <project-name>");
|
|
9958
9990
|
process.exit(1);
|
|
9959
9991
|
}
|
|
9960
|
-
const projectPath = import_node_path4.join(
|
|
9992
|
+
const projectPath = import_node_path4.join(PWD, projectName);
|
|
9961
9993
|
if (import_node_fs3.existsSync(projectPath)) {
|
|
9962
9994
|
console.error(`\u274C Error: Directory '${projectName}' already exists`);
|
|
9963
9995
|
process.exit(1);
|
|
@@ -10042,14 +10074,14 @@ var import_node_fs4 = require("fs");
|
|
|
10042
10074
|
var import_node_path5 = require("path");
|
|
10043
10075
|
function syncCommand(verbose) {
|
|
10044
10076
|
log(`\uD83D\uDD04 Syncing backend interface with application target...`, false, verbose);
|
|
10045
|
-
const
|
|
10046
|
-
if (!import_node_fs4.existsSync(
|
|
10077
|
+
const packageJsonPath = import_node_path5.join(PWD, "package.json");
|
|
10078
|
+
if (!import_node_fs4.existsSync(packageJsonPath)) {
|
|
10047
10079
|
console.error("\u274C Error: package.json not found in current directory");
|
|
10048
10080
|
console.log("Make sure you're in a project directory");
|
|
10049
10081
|
process.exit(1);
|
|
10050
10082
|
}
|
|
10051
10083
|
try {
|
|
10052
|
-
const packageJson2 = JSON.parse(import_node_fs4.readFileSync(
|
|
10084
|
+
const packageJson2 = JSON.parse(import_node_fs4.readFileSync(packageJsonPath, "utf-8"));
|
|
10053
10085
|
log(`Project: ${packageJson2.name}`, true, verbose);
|
|
10054
10086
|
log(`Version: ${packageJson2.version}`, true, verbose);
|
|
10055
10087
|
log(`\u2705 Sync completed successfully!`, false, verbose);
|
|
@@ -10090,9 +10122,10 @@ ${banner_default}
|
|
|
10090
10122
|
}
|
|
10091
10123
|
});
|
|
10092
10124
|
var [command, ...args] = cli.input;
|
|
10125
|
+
console.log({ args });
|
|
10093
10126
|
switch (command) {
|
|
10094
10127
|
case "be":
|
|
10095
|
-
beCommand(args[0] || "", cli.flags.verbose);
|
|
10128
|
+
beCommand(args[0] || "", cli.flags.verbose, args[1]);
|
|
10096
10129
|
break;
|
|
10097
10130
|
case "mcp":
|
|
10098
10131
|
mcpCommand(args[0] || "", cli.flags.verbose);
|
package/dist/index.js
CHANGED
|
@@ -92,7 +92,7 @@ var require_main = __commonJS((exports, module) => {
|
|
|
92
92
|
var os = __require("os");
|
|
93
93
|
var crypto = __require("crypto");
|
|
94
94
|
var packageJson = require_package();
|
|
95
|
-
var
|
|
95
|
+
var version2 = packageJson.version;
|
|
96
96
|
var TIPS = [
|
|
97
97
|
"\uD83D\uDD10 encrypt with Dotenvx: https://dotenvx.com",
|
|
98
98
|
"\uD83D\uDD10 prevent committing .env to code: https://dotenvx.com/precommit",
|
|
@@ -176,13 +176,13 @@ var require_main = __commonJS((exports, module) => {
|
|
|
176
176
|
return DotenvModule.parse(decrypted);
|
|
177
177
|
}
|
|
178
178
|
function _warn(message) {
|
|
179
|
-
console.error(`[dotenv@${
|
|
179
|
+
console.error(`[dotenv@${version2}][WARN] ${message}`);
|
|
180
180
|
}
|
|
181
181
|
function _debug(message) {
|
|
182
|
-
console.log(`[dotenv@${
|
|
182
|
+
console.log(`[dotenv@${version2}][DEBUG] ${message}`);
|
|
183
183
|
}
|
|
184
184
|
function _log(message) {
|
|
185
|
-
console.log(`[dotenv@${
|
|
185
|
+
console.log(`[dotenv@${version2}] ${message}`);
|
|
186
186
|
}
|
|
187
187
|
function _dotenvKey(options) {
|
|
188
188
|
if (options && options.DOTENV_KEY && options.DOTENV_KEY.length > 0) {
|
|
@@ -9819,44 +9819,40 @@ var meow = (helpText, options = {}) => {
|
|
|
9819
9819
|
return result;
|
|
9820
9820
|
};
|
|
9821
9821
|
|
|
9822
|
+
// version.ts
|
|
9823
|
+
var version = "1.0.9";
|
|
9824
|
+
var version_default = version;
|
|
9825
|
+
|
|
9822
9826
|
// src/banner.ts
|
|
9823
|
-
|
|
9824
|
-
|
|
9827
|
+
var banner = `
|
|
9828
|
+
________ __ ____ _ __ __
|
|
9829
|
+
/ ____/ /___ ______/ /_ / __ )__ __(_) /___/ /__ _____
|
|
9830
|
+
/ /_ / / __ \`/ ___/ __ \\ / __ / / / / / / __ / _ \\/ ___/
|
|
9831
|
+
/ __/ / / /_/ (__ ) / / / / /_/ / /_/ / / / /_/ / __/ /
|
|
9832
|
+
/_/ /_/\\__,_/____/_/ /_/ /_____/\\__,_/_/_/\\__,_/\\___/_/ ${version_default}
|
|
9833
|
+
---------------------------------------------------------------------
|
|
9834
|
+
`;
|
|
9835
|
+
var banner_default = banner;
|
|
9825
9836
|
|
|
9826
9837
|
// src/environment.ts
|
|
9827
9838
|
var import_dotenv = __toESM(require_main(), 1);
|
|
9839
|
+
import fs2 from "fs";
|
|
9840
|
+
import path3 from "path";
|
|
9828
9841
|
import_dotenv.default.config({ path: ".env", quiet: true });
|
|
9829
|
-
var PWD = process.cwd();
|
|
9830
9842
|
var ENV = process.env;
|
|
9831
|
-
var
|
|
9832
|
-
|
|
9843
|
+
var IS_NPMJS = ENV["_"]?.includes(".bin/fbi");
|
|
9844
|
+
var PWD = IS_NPMJS ? process.cwd() : path3.join(process.cwd(), "isolate");
|
|
9845
|
+
if (!IS_NPMJS && !fs2.existsSync(PWD)) {
|
|
9846
|
+
fs2.mkdirSync(PWD, { recursive: true });
|
|
9847
|
+
}
|
|
9833
9848
|
var PROJECT_TARGET_URL = ENV.PROJECT_TARGET_URL;
|
|
9834
9849
|
var LLM_PROVIDER = ENV.LLM_PROVIDER;
|
|
9835
9850
|
var LLM_MODEL = ENV.LLM_MODEL;
|
|
9836
9851
|
var LLM_BASE_URL = ENV.LLM_BASE_URL;
|
|
9837
9852
|
var LLM_API_KEY = ENV.LLM_API_KEY || "";
|
|
9838
9853
|
|
|
9839
|
-
// src/banner.ts
|
|
9840
|
-
var packageJsonPath = FROM_NODE_MODULE ? path3.join(PWD, "node_modules", "flash-builder", "package.json") : path3.join(PWD, "package.json");
|
|
9841
|
-
var packageJson = JSON.parse(fs2.readFileSync(packageJsonPath, "utf-8"));
|
|
9842
|
-
var packageVersion = packageJson.version;
|
|
9843
|
-
console.log({
|
|
9844
|
-
packageJsonPath,
|
|
9845
|
-
packageJson,
|
|
9846
|
-
packageVersion
|
|
9847
|
-
});
|
|
9848
|
-
var banner = `
|
|
9849
|
-
________ __ ____ _ __ __
|
|
9850
|
-
/ ____/ /___ ______/ /_ / __ )__ __(_) /___/ /__ _____
|
|
9851
|
-
/ /_ / / __ \`/ ___/ __ \\ / __ / / / / / / __ / _ \\/ ___/
|
|
9852
|
-
/ __/ / / /_/ (__ ) / / / / /_/ / /_/ / / / /_/ / __/ /
|
|
9853
|
-
/_/ /_/\\__,_/____/_/ /_/ /_____/\\__,_/_/_/\\__,_/\\___/_/ ${packageVersion}
|
|
9854
|
-
---------------------------------------------------------------------
|
|
9855
|
-
`;
|
|
9856
|
-
var banner_default = banner;
|
|
9857
|
-
|
|
9858
9854
|
// src/commands/be/index.ts
|
|
9859
|
-
import { existsSync, mkdirSync, writeFileSync } from "fs";
|
|
9855
|
+
import { existsSync, mkdirSync, writeFileSync, rmSync } from "fs";
|
|
9860
9856
|
import { join } from "path";
|
|
9861
9857
|
|
|
9862
9858
|
// src/utils/logger.ts
|
|
@@ -9866,45 +9862,26 @@ function log(message, isVerbose = false, verbose = false) {
|
|
|
9866
9862
|
}
|
|
9867
9863
|
}
|
|
9868
9864
|
|
|
9869
|
-
// src/commands/be/
|
|
9870
|
-
|
|
9871
|
-
|
|
9872
|
-
|
|
9873
|
-
|
|
9874
|
-
|
|
9875
|
-
|
|
9876
|
-
|
|
9877
|
-
|
|
9878
|
-
|
|
9879
|
-
|
|
9865
|
+
// src/commands/be/files.ts
|
|
9866
|
+
var packageJson = (projectName) => ({
|
|
9867
|
+
name: projectName,
|
|
9868
|
+
version: "1.0.0",
|
|
9869
|
+
type: "module",
|
|
9870
|
+
scripts: {
|
|
9871
|
+
dev: "bun run --watch src/index.ts",
|
|
9872
|
+
start: "bun run src/index.ts",
|
|
9873
|
+
build: "bun build src/index.ts --outdir ./dist"
|
|
9874
|
+
},
|
|
9875
|
+
dependencies: {
|
|
9876
|
+
express: "^4.18.2",
|
|
9877
|
+
dotenv: "^16.3.1"
|
|
9878
|
+
},
|
|
9879
|
+
devDependencies: {
|
|
9880
|
+
"@types/express": "^4.17.21",
|
|
9881
|
+
"@types/bun": "latest"
|
|
9880
9882
|
}
|
|
9881
|
-
|
|
9882
|
-
|
|
9883
|
-
mkdirSync(join(projectPath, "src"), { recursive: true });
|
|
9884
|
-
mkdirSync(join(projectPath, "src", "routes"), { recursive: true });
|
|
9885
|
-
mkdirSync(join(projectPath, "src", "controllers"), { recursive: true });
|
|
9886
|
-
mkdirSync(join(projectPath, "src", "models"), { recursive: true });
|
|
9887
|
-
mkdirSync(join(projectPath, "src", "middlewares"), { recursive: true });
|
|
9888
|
-
const packageJson2 = {
|
|
9889
|
-
name: projectName,
|
|
9890
|
-
version: "1.0.0",
|
|
9891
|
-
type: "module",
|
|
9892
|
-
scripts: {
|
|
9893
|
-
dev: "bun run --watch src/index.ts",
|
|
9894
|
-
start: "bun run src/index.ts",
|
|
9895
|
-
build: "bun build src/index.ts --outdir ./dist"
|
|
9896
|
-
},
|
|
9897
|
-
dependencies: {
|
|
9898
|
-
express: "^4.18.2",
|
|
9899
|
-
dotenv: "^16.3.1"
|
|
9900
|
-
},
|
|
9901
|
-
devDependencies: {
|
|
9902
|
-
"@types/express": "^4.17.21",
|
|
9903
|
-
"@types/bun": "latest"
|
|
9904
|
-
}
|
|
9905
|
-
};
|
|
9906
|
-
writeFileSync(join(projectPath, "package.json"), JSON.stringify(packageJson2, null, 2));
|
|
9907
|
-
writeFileSync(join(projectPath, "src", "index.ts"), `import express from "express";
|
|
9883
|
+
});
|
|
9884
|
+
var indexTs = (projectName) => `import express from "express";
|
|
9908
9885
|
import dotenv from "dotenv";
|
|
9909
9886
|
|
|
9910
9887
|
dotenv.config();
|
|
@@ -9921,15 +9898,15 @@ app.get("/", (req, res) => {
|
|
|
9921
9898
|
app.listen(PORT, () => {
|
|
9922
9899
|
console.log(\`\uD83D\uDE80 Server running on http://localhost:\${PORT}\`);
|
|
9923
9900
|
});
|
|
9924
|
-
|
|
9925
|
-
|
|
9926
|
-
`);
|
|
9927
|
-
writeFileSync(join(projectPath, ".gitignore"), `node_modules/
|
|
9901
|
+
`;
|
|
9902
|
+
var gitignore = `node_modules/
|
|
9928
9903
|
dist/
|
|
9929
9904
|
.env
|
|
9930
9905
|
*.log
|
|
9931
|
-
|
|
9932
|
-
|
|
9906
|
+
bun.lock
|
|
9907
|
+
bun.lockb
|
|
9908
|
+
`;
|
|
9909
|
+
var readme = (projectName) => `# ${projectName}
|
|
9933
9910
|
|
|
9934
9911
|
Backend project created with fbi
|
|
9935
9912
|
|
|
@@ -9940,12 +9917,67 @@ cd ${projectName}
|
|
|
9940
9917
|
bun install
|
|
9941
9918
|
bun run dev
|
|
9942
9919
|
\`\`\`
|
|
9943
|
-
|
|
9944
|
-
|
|
9920
|
+
`;
|
|
9921
|
+
var envFile = `PORT=3000
|
|
9922
|
+
`;
|
|
9923
|
+
|
|
9924
|
+
// src/commands/be/index.ts
|
|
9925
|
+
function beCommand(projectName, verbose, targetPath) {
|
|
9926
|
+
if (!projectName) {
|
|
9927
|
+
console.error("\u274C Error: Project name is required");
|
|
9928
|
+
console.log("Usage: fbi be <project-name>");
|
|
9929
|
+
process.exit(1);
|
|
9930
|
+
}
|
|
9931
|
+
const isCurrentDir = targetPath === "." || targetPath?.startsWith("./");
|
|
9932
|
+
let projectPath;
|
|
9933
|
+
let actualProjectName;
|
|
9934
|
+
if (isCurrentDir && targetPath) {
|
|
9935
|
+
projectPath = targetPath === "." ? PWD : join(PWD, targetPath.replace("./", ""));
|
|
9936
|
+
actualProjectName = projectName;
|
|
9937
|
+
} else {
|
|
9938
|
+
projectPath = join(PWD, projectName);
|
|
9939
|
+
actualProjectName = projectName;
|
|
9940
|
+
}
|
|
9941
|
+
if (existsSync(projectPath)) {
|
|
9942
|
+
if (IS_NPMJS) {
|
|
9943
|
+
console.error(`\u274C Error: Directory '${projectName}' already exists`);
|
|
9944
|
+
process.exit(1);
|
|
9945
|
+
}
|
|
9946
|
+
}
|
|
9947
|
+
if (!IS_NPMJS) {
|
|
9948
|
+
rmSync(PWD, { recursive: true, force: true });
|
|
9949
|
+
}
|
|
9950
|
+
log(`\uD83D\uDE80 Creating new backend project: ${actualProjectName}`, false, verbose);
|
|
9951
|
+
mkdirSync(projectPath, { recursive: true });
|
|
9952
|
+
mkdirSync(join(projectPath, "src"), { recursive: true });
|
|
9953
|
+
mkdirSync(join(projectPath, "src", "routes"), { recursive: true });
|
|
9954
|
+
mkdirSync(join(projectPath, "src", "controllers"), { recursive: true });
|
|
9955
|
+
mkdirSync(join(projectPath, "src", "models"), { recursive: true });
|
|
9956
|
+
mkdirSync(join(projectPath, "src", "middlewares"), { recursive: true });
|
|
9957
|
+
const packageJsonString = JSON.stringify(packageJson(actualProjectName), null, 2);
|
|
9958
|
+
writeFileSync(join(projectPath, "package.json"), packageJsonString);
|
|
9959
|
+
writeFileSync(join(projectPath, "src", "index.ts"), indexTs(actualProjectName));
|
|
9960
|
+
writeFileSync(join(projectPath, ".env"), envFile);
|
|
9961
|
+
writeFileSync(join(projectPath, ".gitignore"), gitignore);
|
|
9962
|
+
writeFileSync(join(projectPath, "README.md"), readme(actualProjectName));
|
|
9963
|
+
log(`\u2705 Backend project '${actualProjectName}' created successfully!`, false, verbose);
|
|
9964
|
+
log(`
|
|
9965
|
+
\uD83D\uDCE6 Installing dependencies...`, false, verbose);
|
|
9966
|
+
const installProcess = Bun.spawnSync(["bun", "install"], {
|
|
9967
|
+
cwd: projectPath,
|
|
9968
|
+
stdout: "inherit",
|
|
9969
|
+
stderr: "inherit"
|
|
9970
|
+
});
|
|
9971
|
+
if (installProcess.exitCode === 0) {
|
|
9972
|
+
log(`\u2705 Dependencies installed successfully!`, false, verbose);
|
|
9973
|
+
} else {
|
|
9974
|
+
log(`\u274C Failed to install dependencies`, false, verbose);
|
|
9975
|
+
}
|
|
9945
9976
|
log(`
|
|
9946
9977
|
Next steps:`, true, verbose);
|
|
9947
|
-
|
|
9948
|
-
|
|
9978
|
+
if (!isCurrentDir) {
|
|
9979
|
+
log(` cd ${actualProjectName}`, true, verbose);
|
|
9980
|
+
}
|
|
9949
9981
|
log(` bun run dev`, true, verbose);
|
|
9950
9982
|
}
|
|
9951
9983
|
|
|
@@ -9958,7 +9990,7 @@ function mcpCommand(projectName, verbose) {
|
|
|
9958
9990
|
console.log("Usage: fbi mcp <project-name>");
|
|
9959
9991
|
process.exit(1);
|
|
9960
9992
|
}
|
|
9961
|
-
const projectPath = join2(
|
|
9993
|
+
const projectPath = join2(PWD, projectName);
|
|
9962
9994
|
if (existsSync2(projectPath)) {
|
|
9963
9995
|
console.error(`\u274C Error: Directory '${projectName}' already exists`);
|
|
9964
9996
|
process.exit(1);
|
|
@@ -10043,14 +10075,14 @@ import { existsSync as existsSync3, readFileSync as readFileSync2 } from "fs";
|
|
|
10043
10075
|
import { join as join3 } from "path";
|
|
10044
10076
|
function syncCommand(verbose) {
|
|
10045
10077
|
log(`\uD83D\uDD04 Syncing backend interface with application target...`, false, verbose);
|
|
10046
|
-
const
|
|
10047
|
-
if (!existsSync3(
|
|
10078
|
+
const packageJsonPath = join3(PWD, "package.json");
|
|
10079
|
+
if (!existsSync3(packageJsonPath)) {
|
|
10048
10080
|
console.error("\u274C Error: package.json not found in current directory");
|
|
10049
10081
|
console.log("Make sure you're in a project directory");
|
|
10050
10082
|
process.exit(1);
|
|
10051
10083
|
}
|
|
10052
10084
|
try {
|
|
10053
|
-
const packageJson2 = JSON.parse(readFileSync2(
|
|
10085
|
+
const packageJson2 = JSON.parse(readFileSync2(packageJsonPath, "utf-8"));
|
|
10054
10086
|
log(`Project: ${packageJson2.name}`, true, verbose);
|
|
10055
10087
|
log(`Version: ${packageJson2.version}`, true, verbose);
|
|
10056
10088
|
log(`\u2705 Sync completed successfully!`, false, verbose);
|
|
@@ -10091,9 +10123,10 @@ ${banner_default}
|
|
|
10091
10123
|
}
|
|
10092
10124
|
});
|
|
10093
10125
|
var [command, ...args] = cli.input;
|
|
10126
|
+
console.log({ args });
|
|
10094
10127
|
switch (command) {
|
|
10095
10128
|
case "be":
|
|
10096
|
-
beCommand(args[0] || "", cli.flags.verbose);
|
|
10129
|
+
beCommand(args[0] || "", cli.flags.verbose, args[1]);
|
|
10097
10130
|
break;
|
|
10098
10131
|
case "mcp":
|
|
10099
10132
|
mcpCommand(args[0] || "", cli.flags.verbose);
|