express-api-creator
Version:
Scaffold an Express.js boilerplate project. You can generate express.js boilerplate code with a single command.
109 lines (97 loc) • 2.69 kB
JavaScript
import inquirer from "inquirer";
import { toCamelCase } from "./helpers.js";
import { DEFAULT_PROJECT_NAME, JAVASCRIPT, TYPESCRIPT } from "./constant.js";
export const createProjectQuestions = async () => {
const questions = [
{
type: "input",
name: "projectName",
message: "Project name?",
default: DEFAULT_PROJECT_NAME,
validate: (value) => {
if (!value.trim()) return true;
if (value.length < 3)
return "Project name must be at least 3 characters long.";
if (!/^[a-zA-Z0-9-_]+$/.test(value))
return "Project name can only contain letters, numbers, dashes, and underscores.";
return true;
},
},
{
type: "list",
name: "language",
default: TYPESCRIPT,
message: "Choose language?",
choices: [TYPESCRIPT, JAVASCRIPT],
},
];
try {
const answers = await inquirer.prompt(questions);
return answers;
} catch (error) {
console.error("Error asking questions:", error);
}
};
export const createModuleQuestions = async () => {
const questions = [
{
type: "list",
name: "language",
default: TYPESCRIPT,
message: "Choose language?",
choices: [TYPESCRIPT, JAVASCRIPT],
},
{
type: "input",
name: "modelName",
message: "Model name?",
filter(value) {
return toCamelCase(value);
},
validate: function (value) {
if (!value.trim()) return "Please enter model name.";
if (value.length < 3)
return "Model name must be at least 3 characters long.";
return true;
},
},
{
type: "input",
name: "fields",
message: "Enter fields (e.g., name description price):",
filter(value) {
return value
.split(" ")
.map((item) => item.trim())
.filter((item) => item !== "");
},
},
{
default: true,
type: "confirm",
name: "isProtected",
message: ({ modelName }) =>
`Do you want to protect ${modelName} routes with AUTH?`,
},
];
try {
const answers = await inquirer.prompt(questions);
return answers;
} catch (error) {
console.error("Error asking questions:", error);
}
};
export const confirmBeforeProceed = async () => {
try {
return await inquirer.prompt([
{
default: true,
type: "confirm",
name: "proceed",
message: "Do you want to proceed?",
},
]);
} catch (error) {
console.error("Error asking questions:", error);
}
};