create-strapi-app 4.15.0-alpha.0 → 4.15.0

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.
@@ -1,94 +1,100 @@
1
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 node_fs_1 = require("node:fs");
7
- const node_path_1 = require("node:path");
8
- const commander_1 = __importDefault(require("commander"));
9
- const generate_new_1 = require("@strapi/generate-new");
10
- const prompt_user_1 = __importDefault(require("./utils/prompt-user"));
11
- const packageJson = JSON.parse((0, node_fs_1.readFileSync)((0, node_path_1.resolve)(__dirname, '../package.json'), 'utf8'));
12
- const command = new commander_1.default.Command(packageJson.name);
2
+ const node_fs = require("node:fs");
3
+ const node_path = require("node:path");
4
+ const commander = require("commander");
5
+ const generateNew = require("@strapi/generate-new");
6
+ const inquirer = require("inquirer");
7
+ const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
8
+ const commander__default = /* @__PURE__ */ _interopDefault(commander);
9
+ const inquirer__default = /* @__PURE__ */ _interopDefault(inquirer);
10
+ async function promptUser(projectName, program, hasDatabaseOptions) {
11
+ return inquirer__default.default.prompt([
12
+ {
13
+ type: "input",
14
+ default: "my-strapi-project",
15
+ name: "directory",
16
+ message: "What would you like to name your project?",
17
+ when: !projectName
18
+ },
19
+ {
20
+ type: "list",
21
+ name: "quick",
22
+ message: "Choose your installation type",
23
+ when: !program.quickstart && !hasDatabaseOptions,
24
+ choices: [
25
+ {
26
+ name: "Quickstart (recommended)",
27
+ value: true
28
+ },
29
+ {
30
+ name: "Custom (manual settings)",
31
+ value: false
32
+ }
33
+ ]
34
+ }
35
+ ]);
36
+ }
37
+ const packageJson = JSON.parse(node_fs.readFileSync(node_path.resolve(__dirname, "../package.json"), "utf8"));
38
+ const command = new commander__default.default.Command(packageJson.name);
13
39
  const databaseOptions = [
14
- 'dbclient',
15
- 'dbhost',
16
- 'dbport',
17
- 'dbname',
18
- 'dbusername',
19
- 'dbpassword',
20
- 'dbssl',
21
- 'dbfile',
40
+ "dbclient",
41
+ "dbhost",
42
+ "dbport",
43
+ "dbname",
44
+ "dbusername",
45
+ "dbpassword",
46
+ "dbssl",
47
+ "dbfile"
22
48
  ];
23
- command
24
- .version(packageJson.version)
25
- .arguments('[directory]')
26
- .option('--no-run', 'Do not start the application after it is created')
27
- .option('--use-npm', 'Force usage of npm instead of yarn to create the project')
28
- .option('--debug', 'Display database connection error')
29
- .option('--quickstart', 'Quickstart app creation')
30
- .option('--dbclient <dbclient>', 'Database client')
31
- .option('--dbhost <dbhost>', 'Database host')
32
- .option('--dbport <dbport>', 'Database port')
33
- .option('--dbname <dbname>', 'Database name')
34
- .option('--dbusername <dbusername>', 'Database username')
35
- .option('--dbpassword <dbpassword>', 'Database password')
36
- .option('--dbssl <dbssl>', 'Database SSL')
37
- .option('--dbfile <dbfile>', 'Database file path for sqlite')
38
- .option('--dbforce', 'Overwrite database content if any')
39
- .option('--template <templateurl>', 'Specify a Strapi template')
40
- .option('--ts, --typescript', 'Use TypeScript to generate the project')
41
- .description('create a new application')
42
- .action((directory, programArgs) => {
43
- initProject(directory, programArgs);
44
- })
45
- .parse(process.argv);
49
+ command.version(packageJson.version).arguments("[directory]").option("--no-run", "Do not start the application after it is created").option("--use-npm", "Force usage of npm instead of yarn to create the project").option("--debug", "Display database connection error").option("--quickstart", "Quickstart app creation").option("--dbclient <dbclient>", "Database client").option("--dbhost <dbhost>", "Database host").option("--dbport <dbport>", "Database port").option("--dbname <dbname>", "Database name").option("--dbusername <dbusername>", "Database username").option("--dbpassword <dbpassword>", "Database password").option("--dbssl <dbssl>", "Database SSL").option("--dbfile <dbfile>", "Database file path for sqlite").option("--dbforce", "Overwrite database content if any").option("--template <templateurl>", "Specify a Strapi template").option("--ts, --typescript", "Use TypeScript to generate the project").description("create a new application").action((directory, programArgs) => {
50
+ initProject(directory, programArgs);
51
+ }).parse(process.argv);
46
52
  function generateApp(projectName, options) {
47
- if (!projectName) {
48
- console.error('Please specify the <directory> of your project when using --quickstart');
49
- process.exit(1);
53
+ if (!projectName) {
54
+ console.error("Please specify the <directory> of your project when using --quickstart");
55
+ process.exit(1);
56
+ }
57
+ return generateNew.generateNewApp(projectName, options).then(() => {
58
+ if (process.platform === "win32") {
59
+ process.exit(0);
50
60
  }
51
- return (0, generate_new_1.generateNewApp)(projectName, options).then(() => {
52
- if (process.platform === 'win32') {
53
- process.exit(0);
54
- }
55
- });
61
+ });
56
62
  }
57
63
  async function initProject(projectName, programArgs) {
58
- if (projectName) {
59
- await (0, generate_new_1.checkInstallPath)((0, node_path_1.resolve)(projectName));
60
- }
61
- const programFlags = command
62
- .createHelp()
63
- .visibleOptions(command)
64
- .reduce((acc, { short, long }) => [...acc, short, long], [])
65
- .filter(Boolean);
66
- if (programArgs.template && programFlags.includes(programArgs.template)) {
67
- console.error(`${programArgs.template} is not a valid template`);
68
- process.exit(1);
69
- }
70
- const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);
71
- if (programArgs.quickstart && hasDatabaseOptions) {
72
- console.error(`The quickstart option is incompatible with the following options: ${databaseOptions.join(', ')}`);
73
- process.exit(1);
74
- }
75
- if (hasDatabaseOptions) {
76
- programArgs.quickstart = false; // Will disable the quickstart question because != 'undefined'
77
- }
78
- if (programArgs.quickstart) {
79
- return generateApp(projectName, programArgs);
80
- }
81
- const prompt = await (0, prompt_user_1.default)(projectName, programArgs, hasDatabaseOptions);
82
- const directory = prompt.directory || projectName;
83
- await (0, generate_new_1.checkInstallPath)((0, node_path_1.resolve)(directory));
84
- const options = {
85
- template: programArgs.template,
86
- quickstart: prompt.quick || programArgs.quickstart,
87
- };
88
- const generateStrapiAppOptions = {
89
- ...programArgs,
90
- ...options,
91
- };
92
- return generateApp(directory, generateStrapiAppOptions);
64
+ if (projectName) {
65
+ await generateNew.checkInstallPath(node_path.resolve(projectName));
66
+ }
67
+ const programFlags = command.createHelp().visibleOptions(command).reduce((acc, { short, long }) => [...acc, short, long], []).filter(Boolean);
68
+ if (programArgs.template && programFlags.includes(programArgs.template)) {
69
+ console.error(`${programArgs.template} is not a valid template`);
70
+ process.exit(1);
71
+ }
72
+ const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);
73
+ if (programArgs.quickstart && hasDatabaseOptions) {
74
+ console.error(
75
+ `The quickstart option is incompatible with the following options: ${databaseOptions.join(
76
+ ", "
77
+ )}`
78
+ );
79
+ process.exit(1);
80
+ }
81
+ if (hasDatabaseOptions) {
82
+ programArgs.quickstart = false;
83
+ }
84
+ if (programArgs.quickstart) {
85
+ return generateApp(projectName, programArgs);
86
+ }
87
+ const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);
88
+ const directory = prompt.directory || projectName;
89
+ await generateNew.checkInstallPath(node_path.resolve(directory));
90
+ const options = {
91
+ template: programArgs.template,
92
+ quickstart: prompt.quick || programArgs.quickstart
93
+ };
94
+ const generateStrapiAppOptions = {
95
+ ...programArgs,
96
+ ...options
97
+ };
98
+ return generateApp(directory, generateStrapiAppOptions);
93
99
  }
94
- //# sourceMappingURL=create-strapi-app.js.map
100
+ //# sourceMappingURL=create-strapi-app.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"create-strapi-app.js","sourceRoot":"","sources":["../src/create-strapi-app.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"create-strapi-app.js","sources":["../src/utils/prompt-user.ts","../src/create-strapi-app.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Program } from '../types';\n\ninterface Answers {\n directory: string;\n quick: boolean;\n}\n\nexport default async function promptUser(\n projectName: string,\n program: Program,\n hasDatabaseOptions: boolean\n) {\n return inquirer.prompt<Answers>([\n {\n type: 'input',\n default: 'my-strapi-project',\n name: 'directory',\n message: 'What would you like to name your project?',\n when: !projectName,\n },\n {\n type: 'list',\n name: 'quick',\n message: 'Choose your installation type',\n when: !program.quickstart && !hasDatabaseOptions,\n choices: [\n {\n name: 'Quickstart (recommended)',\n value: true,\n },\n {\n name: 'Custom (manual settings)',\n value: false,\n },\n ],\n },\n ]);\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport commander from 'commander';\nimport { checkInstallPath, generateNewApp } from '@strapi/generate-new';\nimport promptUser from './utils/prompt-user';\nimport type { Program } from './types';\n\nconst packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8'));\n\nconst command = new commander.Command(packageJson.name);\n\nconst databaseOptions: Array<keyof Program> = [\n 'dbclient',\n 'dbhost',\n 'dbport',\n 'dbname',\n 'dbusername',\n 'dbpassword',\n 'dbssl',\n 'dbfile',\n];\n\ncommand\n .version(packageJson.version)\n .arguments('[directory]')\n .option('--no-run', 'Do not start the application after it is created')\n .option('--use-npm', 'Force usage of npm instead of yarn to create the project')\n .option('--debug', 'Display database connection error')\n .option('--quickstart', 'Quickstart app creation')\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--dbforce', 'Overwrite database content if any')\n .option('--template <templateurl>', 'Specify a Strapi template')\n .option('--ts, --typescript', 'Use TypeScript to generate the project')\n .description('create a new application')\n .action((directory, programArgs) => {\n initProject(directory, programArgs);\n })\n .parse(process.argv);\n\nfunction generateApp(projectName: string, options: unknown) {\n if (!projectName) {\n console.error('Please specify the <directory> of your project when using --quickstart');\n process.exit(1);\n }\n\n return generateNewApp(projectName, options).then(() => {\n if (process.platform === 'win32') {\n process.exit(0);\n }\n });\n}\n\nasync function initProject(projectName: string, programArgs: Program) {\n if (projectName) {\n await checkInstallPath(resolve(projectName));\n }\n\n const programFlags = command\n .createHelp()\n .visibleOptions(command)\n .reduce<Array<string | undefined>>((acc, { short, long }) => [...acc, short, long], [])\n .filter(Boolean);\n\n if (programArgs.template && programFlags.includes(programArgs.template)) {\n console.error(`${programArgs.template} is not a valid template`);\n process.exit(1);\n }\n\n const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);\n\n if (programArgs.quickstart && hasDatabaseOptions) {\n console.error(\n `The quickstart option is incompatible with the following options: ${databaseOptions.join(\n ', '\n )}`\n );\n process.exit(1);\n }\n\n if (hasDatabaseOptions) {\n programArgs.quickstart = false; // Will disable the quickstart question because != 'undefined'\n }\n\n if (programArgs.quickstart) {\n return generateApp(projectName, programArgs);\n }\n\n const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);\n const directory = prompt.directory || projectName;\n await checkInstallPath(resolve(directory));\n\n const options = {\n template: programArgs.template,\n quickstart: prompt.quick || programArgs.quickstart,\n };\n\n const generateStrapiAppOptions = {\n ...programArgs,\n ...options,\n };\n\n return generateApp(directory, generateStrapiAppOptions);\n}\n"],"names":["inquirer","readFileSync","resolve","commander","generateNewApp","checkInstallPath"],"mappings":"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"}
@@ -0,0 +1,96 @@
1
+ import { readFileSync } from "node:fs";
2
+ import { resolve } from "node:path";
3
+ import commander from "commander";
4
+ import { checkInstallPath, generateNewApp } from "@strapi/generate-new";
5
+ import inquirer from "inquirer";
6
+ async function promptUser(projectName, program, hasDatabaseOptions) {
7
+ return inquirer.prompt([
8
+ {
9
+ type: "input",
10
+ default: "my-strapi-project",
11
+ name: "directory",
12
+ message: "What would you like to name your project?",
13
+ when: !projectName
14
+ },
15
+ {
16
+ type: "list",
17
+ name: "quick",
18
+ message: "Choose your installation type",
19
+ when: !program.quickstart && !hasDatabaseOptions,
20
+ choices: [
21
+ {
22
+ name: "Quickstart (recommended)",
23
+ value: true
24
+ },
25
+ {
26
+ name: "Custom (manual settings)",
27
+ value: false
28
+ }
29
+ ]
30
+ }
31
+ ]);
32
+ }
33
+ const packageJson = JSON.parse(readFileSync(resolve(__dirname, "../package.json"), "utf8"));
34
+ const command = new commander.Command(packageJson.name);
35
+ const databaseOptions = [
36
+ "dbclient",
37
+ "dbhost",
38
+ "dbport",
39
+ "dbname",
40
+ "dbusername",
41
+ "dbpassword",
42
+ "dbssl",
43
+ "dbfile"
44
+ ];
45
+ command.version(packageJson.version).arguments("[directory]").option("--no-run", "Do not start the application after it is created").option("--use-npm", "Force usage of npm instead of yarn to create the project").option("--debug", "Display database connection error").option("--quickstart", "Quickstart app creation").option("--dbclient <dbclient>", "Database client").option("--dbhost <dbhost>", "Database host").option("--dbport <dbport>", "Database port").option("--dbname <dbname>", "Database name").option("--dbusername <dbusername>", "Database username").option("--dbpassword <dbpassword>", "Database password").option("--dbssl <dbssl>", "Database SSL").option("--dbfile <dbfile>", "Database file path for sqlite").option("--dbforce", "Overwrite database content if any").option("--template <templateurl>", "Specify a Strapi template").option("--ts, --typescript", "Use TypeScript to generate the project").description("create a new application").action((directory, programArgs) => {
46
+ initProject(directory, programArgs);
47
+ }).parse(process.argv);
48
+ function generateApp(projectName, options) {
49
+ if (!projectName) {
50
+ console.error("Please specify the <directory> of your project when using --quickstart");
51
+ process.exit(1);
52
+ }
53
+ return generateNewApp(projectName, options).then(() => {
54
+ if (process.platform === "win32") {
55
+ process.exit(0);
56
+ }
57
+ });
58
+ }
59
+ async function initProject(projectName, programArgs) {
60
+ if (projectName) {
61
+ await checkInstallPath(resolve(projectName));
62
+ }
63
+ const programFlags = command.createHelp().visibleOptions(command).reduce((acc, { short, long }) => [...acc, short, long], []).filter(Boolean);
64
+ if (programArgs.template && programFlags.includes(programArgs.template)) {
65
+ console.error(`${programArgs.template} is not a valid template`);
66
+ process.exit(1);
67
+ }
68
+ const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);
69
+ if (programArgs.quickstart && hasDatabaseOptions) {
70
+ console.error(
71
+ `The quickstart option is incompatible with the following options: ${databaseOptions.join(
72
+ ", "
73
+ )}`
74
+ );
75
+ process.exit(1);
76
+ }
77
+ if (hasDatabaseOptions) {
78
+ programArgs.quickstart = false;
79
+ }
80
+ if (programArgs.quickstart) {
81
+ return generateApp(projectName, programArgs);
82
+ }
83
+ const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);
84
+ const directory = prompt.directory || projectName;
85
+ await checkInstallPath(resolve(directory));
86
+ const options = {
87
+ template: programArgs.template,
88
+ quickstart: prompt.quick || programArgs.quickstart
89
+ };
90
+ const generateStrapiAppOptions = {
91
+ ...programArgs,
92
+ ...options
93
+ };
94
+ return generateApp(directory, generateStrapiAppOptions);
95
+ }
96
+ //# sourceMappingURL=create-strapi-app.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-strapi-app.mjs","sources":["../src/utils/prompt-user.ts","../src/create-strapi-app.ts"],"sourcesContent":["import inquirer from 'inquirer';\nimport type { Program } from '../types';\n\ninterface Answers {\n directory: string;\n quick: boolean;\n}\n\nexport default async function promptUser(\n projectName: string,\n program: Program,\n hasDatabaseOptions: boolean\n) {\n return inquirer.prompt<Answers>([\n {\n type: 'input',\n default: 'my-strapi-project',\n name: 'directory',\n message: 'What would you like to name your project?',\n when: !projectName,\n },\n {\n type: 'list',\n name: 'quick',\n message: 'Choose your installation type',\n when: !program.quickstart && !hasDatabaseOptions,\n choices: [\n {\n name: 'Quickstart (recommended)',\n value: true,\n },\n {\n name: 'Custom (manual settings)',\n value: false,\n },\n ],\n },\n ]);\n}\n","import { readFileSync } from 'node:fs';\nimport { resolve } from 'node:path';\nimport commander from 'commander';\nimport { checkInstallPath, generateNewApp } from '@strapi/generate-new';\nimport promptUser from './utils/prompt-user';\nimport type { Program } from './types';\n\nconst packageJson = JSON.parse(readFileSync(resolve(__dirname, '../package.json'), 'utf8'));\n\nconst command = new commander.Command(packageJson.name);\n\nconst databaseOptions: Array<keyof Program> = [\n 'dbclient',\n 'dbhost',\n 'dbport',\n 'dbname',\n 'dbusername',\n 'dbpassword',\n 'dbssl',\n 'dbfile',\n];\n\ncommand\n .version(packageJson.version)\n .arguments('[directory]')\n .option('--no-run', 'Do not start the application after it is created')\n .option('--use-npm', 'Force usage of npm instead of yarn to create the project')\n .option('--debug', 'Display database connection error')\n .option('--quickstart', 'Quickstart app creation')\n .option('--dbclient <dbclient>', 'Database client')\n .option('--dbhost <dbhost>', 'Database host')\n .option('--dbport <dbport>', 'Database port')\n .option('--dbname <dbname>', 'Database name')\n .option('--dbusername <dbusername>', 'Database username')\n .option('--dbpassword <dbpassword>', 'Database password')\n .option('--dbssl <dbssl>', 'Database SSL')\n .option('--dbfile <dbfile>', 'Database file path for sqlite')\n .option('--dbforce', 'Overwrite database content if any')\n .option('--template <templateurl>', 'Specify a Strapi template')\n .option('--ts, --typescript', 'Use TypeScript to generate the project')\n .description('create a new application')\n .action((directory, programArgs) => {\n initProject(directory, programArgs);\n })\n .parse(process.argv);\n\nfunction generateApp(projectName: string, options: unknown) {\n if (!projectName) {\n console.error('Please specify the <directory> of your project when using --quickstart');\n process.exit(1);\n }\n\n return generateNewApp(projectName, options).then(() => {\n if (process.platform === 'win32') {\n process.exit(0);\n }\n });\n}\n\nasync function initProject(projectName: string, programArgs: Program) {\n if (projectName) {\n await checkInstallPath(resolve(projectName));\n }\n\n const programFlags = command\n .createHelp()\n .visibleOptions(command)\n .reduce<Array<string | undefined>>((acc, { short, long }) => [...acc, short, long], [])\n .filter(Boolean);\n\n if (programArgs.template && programFlags.includes(programArgs.template)) {\n console.error(`${programArgs.template} is not a valid template`);\n process.exit(1);\n }\n\n const hasDatabaseOptions = databaseOptions.some((opt) => programArgs[opt]);\n\n if (programArgs.quickstart && hasDatabaseOptions) {\n console.error(\n `The quickstart option is incompatible with the following options: ${databaseOptions.join(\n ', '\n )}`\n );\n process.exit(1);\n }\n\n if (hasDatabaseOptions) {\n programArgs.quickstart = false; // Will disable the quickstart question because != 'undefined'\n }\n\n if (programArgs.quickstart) {\n return generateApp(projectName, programArgs);\n }\n\n const prompt = await promptUser(projectName, programArgs, hasDatabaseOptions);\n const directory = prompt.directory || projectName;\n await checkInstallPath(resolve(directory));\n\n const options = {\n template: programArgs.template,\n quickstart: prompt.quick || programArgs.quickstart,\n };\n\n const generateStrapiAppOptions = {\n ...programArgs,\n ...options,\n };\n\n return generateApp(directory, generateStrapiAppOptions);\n}\n"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,12 +1,7 @@
1
1
  {
2
2
  "name": "create-strapi-app",
3
- "version": "4.15.0-alpha.0",
3
+ "version": "4.15.0",
4
4
  "description": "Generate a new Strapi application.",
5
- "dependencies": {
6
- "@strapi/generate-new": "4.15.0-alpha.0",
7
- "commander": "8.3.0",
8
- "inquirer": "8.2.5"
9
- },
10
5
  "keywords": [
11
6
  "create-strapi-app",
12
7
  "create",
@@ -35,26 +30,32 @@
35
30
  "url": "https://strapi.io"
36
31
  }
37
32
  ],
33
+ "main": "",
38
34
  "bin": "./bin/index.js",
39
35
  "files": [
40
36
  "./dist",
41
37
  "./bin"
42
38
  ],
43
39
  "scripts": {
44
- "build": "run -T tsc",
45
- "build:ts": "run -T tsc",
46
- "watch": "run -T tsc -w --preserveWatchOutput",
40
+ "build": "pack-up build",
47
41
  "clean": "run -T rimraf ./dist",
42
+ "lint": "run -T eslint .",
48
43
  "prepublishOnly": "yarn clean && yarn build",
49
- "lint": "run -T eslint ."
44
+ "watch": "pack-up watch"
45
+ },
46
+ "dependencies": {
47
+ "@strapi/generate-new": "4.15.0",
48
+ "commander": "8.3.0",
49
+ "inquirer": "8.2.5"
50
50
  },
51
51
  "devDependencies": {
52
- "eslint-config-custom": "4.15.0-alpha.0",
53
- "tsconfig": "4.15.0-alpha.0"
52
+ "@strapi/pack-up": "4.15.0",
53
+ "eslint-config-custom": "4.15.0",
54
+ "tsconfig": "4.15.0"
54
55
  },
55
56
  "engines": {
56
- "node": ">=16.0.0 <=20.x.x",
57
+ "node": ">=18.0.0 <=20.x.x",
57
58
  "npm": ">=6.0.0"
58
59
  },
59
- "gitHead": "682a070df9ef90f2aa6966666488e066d61831e2"
60
+ "gitHead": "6e44e1e68db5153e485e61bdc03f42efb0311406"
60
61
  }
@@ -1 +0,0 @@
1
- export {};
package/dist/types.d.ts DELETED
@@ -1,17 +0,0 @@
1
- export interface Program {
2
- noRun?: boolean;
3
- useNpm?: boolean;
4
- debug?: boolean;
5
- quickstart?: boolean;
6
- dbclient?: string;
7
- dbhost?: string;
8
- dbport?: string;
9
- dbname?: string;
10
- dbusername?: string;
11
- dbpassword?: string;
12
- dbssl?: string;
13
- dbfile?: string;
14
- dbforce?: boolean;
15
- template?: string;
16
- typescript?: boolean;
17
- }
package/dist/types.js DELETED
@@ -1,3 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- //# sourceMappingURL=types.js.map
package/dist/types.js.map DELETED
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":""}
@@ -1,7 +0,0 @@
1
- import type { Program } from '../types';
2
- interface Answers {
3
- directory: string;
4
- quick: boolean;
5
- }
6
- export default function promptUser(projectName: string, program: Program, hasDatabaseOptions: boolean): Promise<Answers>;
7
- export {};
@@ -1,35 +0,0 @@
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 inquirer_1 = __importDefault(require("inquirer"));
7
- async function promptUser(projectName, program, hasDatabaseOptions) {
8
- return inquirer_1.default.prompt([
9
- {
10
- type: 'input',
11
- default: 'my-strapi-project',
12
- name: 'directory',
13
- message: 'What would you like to name your project?',
14
- when: !projectName,
15
- },
16
- {
17
- type: 'list',
18
- name: 'quick',
19
- message: 'Choose your installation type',
20
- when: !program.quickstart && !hasDatabaseOptions,
21
- choices: [
22
- {
23
- name: 'Quickstart (recommended)',
24
- value: true,
25
- },
26
- {
27
- name: 'Custom (manual settings)',
28
- value: false,
29
- },
30
- ],
31
- },
32
- ]);
33
- }
34
- exports.default = promptUser;
35
- //# sourceMappingURL=prompt-user.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"prompt-user.js","sourceRoot":"","sources":["../../src/utils/prompt-user.ts"],"names":[],"mappings":";;;;;AAAA,wDAAgC;AAQjB,KAAK,UAAU,UAAU,CACtC,WAAmB,EACnB,OAAgB,EAChB,kBAA2B;IAE3B,OAAO,kBAAQ,CAAC,MAAM,CAAU;QAC9B;YACE,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,mBAAmB;YAC5B,IAAI,EAAE,WAAW;YACjB,OAAO,EAAE,2CAA2C;YACpD,IAAI,EAAE,CAAC,WAAW;SACnB;QACD;YACE,IAAI,EAAE,MAAM;YACZ,IAAI,EAAE,OAAO;YACb,OAAO,EAAE,+BAA+B;YACxC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,IAAI,CAAC,kBAAkB;YAChD,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,0BAA0B;oBAChC,KAAK,EAAE,IAAI;iBACZ;gBACD;oBACE,IAAI,EAAE,0BAA0B;oBAChC,KAAK,EAAE,KAAK;iBACb;aACF;SACF;KACF,CAAC,CAAC;AACL,CAAC;AA9BD,6BA8BC"}