create-payload-app 0.5.1 → 1.0.0-beta.0
Sign up to get free protection for your applications and to get access to all the features.
- package/dist/index.js +10 -53
- package/dist/lib/configure-payload-config.js +97 -142
- package/dist/lib/create-project.js +101 -174
- package/dist/lib/create-project.spec.js +148 -168
- package/dist/lib/generate-secret.js +12 -44
- package/dist/lib/packages.js +52 -32
- package/dist/lib/parse-project-name.js +29 -67
- package/dist/lib/parse-template.js +42 -80
- package/dist/lib/select-db.js +62 -105
- package/dist/lib/templates.js +63 -97
- package/dist/lib/write-env-file.js +51 -106
- package/dist/main.js +118 -198
- package/dist/types.js +5 -1
- package/dist/utils/log.js +40 -19
- package/dist/utils/messages.js +71 -73
- package/package.json +8 -39
- package/.vscode/launch.json +0 -13
package/dist/utils/messages.js
CHANGED
@@ -1,86 +1,84 @@
|
|
1
1
|
"use strict";
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
var
|
7
|
-
|
8
|
-
|
9
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
10
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
11
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
12
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
2
|
+
Object.defineProperty(exports, "__esModule", {
|
3
|
+
value: true
|
4
|
+
});
|
5
|
+
function _export(target, all) {
|
6
|
+
for(var name in all)Object.defineProperty(target, name, {
|
7
|
+
enumerable: true,
|
8
|
+
get: all[name]
|
13
9
|
});
|
14
|
-
}
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
function
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
switch (op[0]) {
|
25
|
-
case 0: case 1: t = op; break;
|
26
|
-
case 4: _.label++; return { value: op[1], done: false };
|
27
|
-
case 5: _.label++; y = op[1]; op = [0]; continue;
|
28
|
-
case 7: op = _.ops.pop(); _.trys.pop(); continue;
|
29
|
-
default:
|
30
|
-
if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
|
31
|
-
if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
|
32
|
-
if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
|
33
|
-
if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
|
34
|
-
if (t[2]) _.ops.pop();
|
35
|
-
_.trys.pop(); continue;
|
36
|
-
}
|
37
|
-
op = body.call(thisArg, _);
|
38
|
-
} catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
|
39
|
-
if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
|
10
|
+
}
|
11
|
+
_export(exports, {
|
12
|
+
welcomeMessage: function() {
|
13
|
+
return welcomeMessage;
|
14
|
+
},
|
15
|
+
helpMessage: function() {
|
16
|
+
return helpMessage;
|
17
|
+
},
|
18
|
+
successMessage: function() {
|
19
|
+
return successMessage;
|
40
20
|
}
|
41
|
-
};
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
}
|
55
|
-
|
56
|
-
|
21
|
+
});
|
22
|
+
const _chalk = /*#__PURE__*/ _interop_require_default(require("chalk"));
|
23
|
+
const _figures = /*#__PURE__*/ _interop_require_default(require("figures"));
|
24
|
+
const _path = /*#__PURE__*/ _interop_require_default(require("path"));
|
25
|
+
const _terminallink = /*#__PURE__*/ _interop_require_default(require("terminal-link"));
|
26
|
+
const _templates = require("../lib/templates");
|
27
|
+
function _interop_require_default(obj) {
|
28
|
+
return obj && obj.__esModule ? obj : {
|
29
|
+
default: obj
|
30
|
+
};
|
31
|
+
}
|
32
|
+
const header = (message)=>`${_chalk.default.yellow(_figures.default.star)} ${_chalk.default.bold(message)}`;
|
33
|
+
const welcomeMessage = (0, _chalk.default)`
|
34
|
+
{green Welcome to Payload. Let's create a project! }
|
35
|
+
`;
|
36
|
+
const spacer = ' '.repeat(8);
|
57
37
|
function helpMessage() {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
38
|
+
const validTemplates = (0, _templates.getValidTemplates)();
|
39
|
+
return (0, _chalk.default)`
|
40
|
+
{bold USAGE}
|
41
|
+
|
42
|
+
{dim $} {bold npx create-payload-app}
|
43
|
+
{dim $} {bold npx create-payload-app} my-project
|
44
|
+
{dim $} {bold npx create-payload-app} -n my-project -t blog
|
45
|
+
|
46
|
+
{bold OPTIONS}
|
47
|
+
|
48
|
+
-n {underline my-payload-app} Set project name
|
49
|
+
-t {underline template_name} Choose specific template
|
50
|
+
|
51
|
+
{dim Available templates: ${formatTemplates(validTemplates)}}
|
52
|
+
|
53
|
+
--use-npm Use npm to install dependencies
|
54
|
+
--use-yarn Use yarn to install dependencies
|
55
|
+
--use-pnpm Use pnpm to install dependencies
|
56
|
+
--no-deps Do not install any dependencies
|
57
|
+
-h Show help
|
58
|
+
`;
|
69
59
|
}
|
70
|
-
exports.helpMessage = helpMessage;
|
71
60
|
function formatTemplates(templates) {
|
72
|
-
return
|
73
|
-
.map(function (t) { return "".concat(t.name).concat(' '.repeat(28 - t.name.length)).concat(t.description); })
|
74
|
-
.join("\n".concat(spacer)));
|
61
|
+
return `\n\n${spacer}${templates.map((t)=>`${t.name}${' '.repeat(28 - t.name.length)}${t.description}`).join(`\n${spacer}`)}`;
|
75
62
|
}
|
76
63
|
function successMessage(projectDir, packageManager) {
|
77
|
-
return
|
64
|
+
return `
|
65
|
+
${header('Launch Application:')}
|
66
|
+
|
67
|
+
- cd ${projectDir}
|
68
|
+
- ${packageManager === 'yarn' ? 'yarn' : 'npm run'} dev or follow directions in ${createTerminalLink('README.md', `file://${_path.default.resolve(projectDir, 'README.md')}`)}
|
69
|
+
|
70
|
+
${header('Documentation:')}
|
71
|
+
|
72
|
+
- ${createTerminalLink('Getting Started', 'https://payloadcms.com/docs/getting-started/what-is-payload')}
|
73
|
+
- ${createTerminalLink('Configuration', 'https://payloadcms.com/docs/configuration/overview')}
|
74
|
+
|
75
|
+
`;
|
78
76
|
}
|
79
|
-
exports.successMessage = successMessage;
|
80
77
|
// Create terminalLink with fallback for unsupported terminals
|
81
78
|
function createTerminalLink(text, url) {
|
82
|
-
return (0,
|
83
|
-
fallback:
|
79
|
+
return (0, _terminallink.default)(text, url, {
|
80
|
+
fallback: (text, url)=>`${text}: ${url}`
|
84
81
|
});
|
85
82
|
}
|
86
|
-
|
83
|
+
|
84
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy91dGlscy9tZXNzYWdlcy50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgY2hhbGsgZnJvbSAnY2hhbGsnXG5pbXBvcnQgZmlndXJlcyBmcm9tICdmaWd1cmVzJ1xuaW1wb3J0IHBhdGggZnJvbSAncGF0aCdcbmltcG9ydCB0ZXJtaW5hbExpbmsgZnJvbSAndGVybWluYWwtbGluaydcblxuaW1wb3J0IHR5cGUgeyBQcm9qZWN0VGVtcGxhdGUgfSBmcm9tICcuLi90eXBlcydcblxuaW1wb3J0IHsgZ2V0VmFsaWRUZW1wbGF0ZXMgfSBmcm9tICcuLi9saWIvdGVtcGxhdGVzJ1xuXG5jb25zdCBoZWFkZXIgPSAobWVzc2FnZTogc3RyaW5nKTogc3RyaW5nID0+IGAke2NoYWxrLnllbGxvdyhmaWd1cmVzLnN0YXIpfSAke2NoYWxrLmJvbGQobWVzc2FnZSl9YFxuXG5leHBvcnQgY29uc3Qgd2VsY29tZU1lc3NhZ2UgPSBjaGFsa2BcbiAge2dyZWVuIFdlbGNvbWUgdG8gUGF5bG9hZC4gTGV0J3MgY3JlYXRlIGEgcHJvamVjdCEgfVxuYFxuXG5jb25zdCBzcGFjZXIgPSAnICcucmVwZWF0KDgpXG5cbmV4cG9ydCBmdW5jdGlvbiBoZWxwTWVzc2FnZSgpOiBzdHJpbmcge1xuICBjb25zdCB2YWxpZFRlbXBsYXRlcyA9IGdldFZhbGlkVGVtcGxhdGVzKClcbiAgcmV0dXJuIGNoYWxrYFxuICB7Ym9sZCBVU0FHRX1cblxuICAgICAge2RpbSAkfSB7Ym9sZCBucHggY3JlYXRlLXBheWxvYWQtYXBwfVxuICAgICAge2RpbSAkfSB7Ym9sZCBucHggY3JlYXRlLXBheWxvYWQtYXBwfSBteS1wcm9qZWN0XG4gICAgICB7ZGltICR9IHtib2xkIG5weCBjcmVhdGUtcGF5bG9hZC1hcHB9IC1uIG15LXByb2plY3QgLXQgYmxvZ1xuXG4gIHtib2xkIE9QVElPTlN9XG5cbiAgICAgIC1uICAgICB7dW5kZXJsaW5lIG15LXBheWxvYWQtYXBwfSAgICAgICAgIFNldCBwcm9qZWN0IG5hbWVcbiAgICAgIC10ICAgICB7dW5kZXJsaW5lIHRlbXBsYXRlX25hbWV9ICAgICAgICAgIENob29zZSBzcGVjaWZpYyB0ZW1wbGF0ZVxuXG4gICAgICAgIHtkaW0gQXZhaWxhYmxlIHRlbXBsYXRlczogJHtmb3JtYXRUZW1wbGF0ZXModmFsaWRUZW1wbGF0ZXMpfX1cblxuICAgICAgLS11c2UtbnBtICAgICAgICAgICAgICAgICAgICAgVXNlIG5wbSB0byBpbnN0YWxsIGRlcGVuZGVuY2llc1xuICAgICAgLS11c2UteWFybiAgICAgICAgICAgICAgICAgICAgVXNlIHlhcm4gdG8gaW5zdGFsbCBkZXBlbmRlbmNpZXNcbiAgICAgIC0tdXNlLXBucG0gICAgICAgICAgICAgICAgICAgIFVzZSBwbnBtIHRvIGluc3RhbGwgZGVwZW5kZW5jaWVzXG4gICAgICAtLW5vLWRlcHMgICAgICAgICAgICAgICAgICAgICBEbyBub3QgaW5zdGFsbCBhbnkgZGVwZW5kZW5jaWVzXG4gICAgICAtaCAgICAgICAgICAgICAgICAgICAgICAgICAgICBTaG93IGhlbHBcbmBcbn1cblxuZnVuY3Rpb24gZm9ybWF0VGVtcGxhdGVzKHRlbXBsYXRlczogUHJvamVjdFRlbXBsYXRlW10pIHtcbiAgcmV0dXJuIGBcXG5cXG4ke3NwYWNlcn0ke3RlbXBsYXRlc1xuICAgIC5tYXAoKHQpID0+IGAke3QubmFtZX0keycgJy5yZXBlYXQoMjggLSB0Lm5hbWUubGVuZ3RoKX0ke3QuZGVzY3JpcHRpb259YClcbiAgICAuam9pbihgXFxuJHtzcGFjZXJ9YCl9YFxufVxuXG5leHBvcnQgZnVuY3Rpb24gc3VjY2Vzc01lc3NhZ2UocHJvamVjdERpcjogc3RyaW5nLCBwYWNrYWdlTWFuYWdlcjogc3RyaW5nKTogc3RyaW5nIHtcbiAgcmV0dXJuIGBcbiAgJHtoZWFkZXIoJ0xhdW5jaCBBcHBsaWNhdGlvbjonKX1cblxuICAgIC0gY2QgJHtwcm9qZWN0RGlyfVxuICAgIC0gJHtcbiAgICAgIHBhY2thZ2VNYW5hZ2VyID09PSAneWFybicgPyAneWFybicgOiAnbnBtIHJ1bidcbiAgICB9IGRldiBvciBmb2xsb3cgZGlyZWN0aW9ucyBpbiAke2NyZWF0ZVRlcm1pbmFsTGluayhcbiAgICAgICdSRUFETUUubWQnLFxuICAgICAgYGZpbGU6Ly8ke3BhdGgucmVzb2x2ZShwcm9qZWN0RGlyLCAnUkVBRE1FLm1kJyl9YCxcbiAgICApfVxuXG4gICR7aGVhZGVyKCdEb2N1bWVudGF0aW9uOicpfVxuXG4gICAgLSAke2NyZWF0ZVRlcm1pbmFsTGluayhcbiAgICAgICdHZXR0aW5nIFN0YXJ0ZWQnLFxuICAgICAgJ2h0dHBzOi8vcGF5bG9hZGNtcy5jb20vZG9jcy9nZXR0aW5nLXN0YXJ0ZWQvd2hhdC1pcy1wYXlsb2FkJyxcbiAgICApfVxuICAgIC0gJHtjcmVhdGVUZXJtaW5hbExpbmsoJ0NvbmZpZ3VyYXRpb24nLCAnaHR0cHM6Ly9wYXlsb2FkY21zLmNvbS9kb2NzL2NvbmZpZ3VyYXRpb24vb3ZlcnZpZXcnKX1cblxuYFxufVxuXG4vLyBDcmVhdGUgdGVybWluYWxMaW5rIHdpdGggZmFsbGJhY2sgZm9yIHVuc3VwcG9ydGVkIHRlcm1pbmFsc1xuZnVuY3Rpb24gY3JlYXRlVGVybWluYWxMaW5rKHRleHQ6IHN0cmluZywgdXJsOiBzdHJpbmcpIHtcbiAgcmV0dXJuIHRlcm1pbmFsTGluayh0ZXh0LCB1cmwsIHtcbiAgICBmYWxsYmFjazogKHRleHQsIHVybCkgPT4gYCR7dGV4dH06ICR7dXJsfWAsXG4gIH0pXG59XG4iXSwibmFtZXMiOlsid2VsY29tZU1lc3NhZ2UiLCJoZWxwTWVzc2FnZSIsInN1Y2Nlc3NNZXNzYWdlIiwiaGVhZGVyIiwibWVzc2FnZSIsImNoYWxrIiwieWVsbG93IiwiZmlndXJlcyIsInN0YXIiLCJib2xkIiwic3BhY2VyIiwicmVwZWF0IiwidmFsaWRUZW1wbGF0ZXMiLCJnZXRWYWxpZFRlbXBsYXRlcyIsImZvcm1hdFRlbXBsYXRlcyIsInRlbXBsYXRlcyIsIm1hcCIsInQiLCJuYW1lIiwibGVuZ3RoIiwiZGVzY3JpcHRpb24iLCJqb2luIiwicHJvamVjdERpciIsInBhY2thZ2VNYW5hZ2VyIiwiY3JlYXRlVGVybWluYWxMaW5rIiwicGF0aCIsInJlc29sdmUiLCJ0ZXh0IiwidXJsIiwidGVybWluYWxMaW5rIiwiZmFsbGJhY2siXSwibWFwcGluZ3MiOiI7Ozs7Ozs7Ozs7O0lBV2FBLGNBQWM7ZUFBZEE7O0lBTUdDLFdBQVc7ZUFBWEE7O0lBOEJBQyxjQUFjO2VBQWRBOzs7OERBL0NFO2dFQUNFOzZEQUNIO3FFQUNROzJCQUlTOzs7Ozs7QUFFbEMsTUFBTUMsU0FBUyxDQUFDQyxVQUE0QixDQUFDLEVBQUVDLGNBQUssQ0FBQ0MsTUFBTSxDQUFDQyxnQkFBTyxDQUFDQyxJQUFJLEVBQUUsQ0FBQyxFQUFFSCxjQUFLLENBQUNJLElBQUksQ0FBQ0wsU0FBUyxDQUFDO0FBRTNGLE1BQU1KLGlCQUFpQkssSUFBQUEsY0FBSyxDQUFBLENBQUM7O0FBRXBDLENBQUM7QUFFRCxNQUFNSyxTQUFTLElBQUlDLE1BQU0sQ0FBQztBQUVuQixTQUFTVjtJQUNkLE1BQU1XLGlCQUFpQkMsSUFBQUEsNEJBQWlCO0lBQ3hDLE9BQU9SLElBQUFBLGNBQUssQ0FBQSxDQUFDOzs7Ozs7Ozs7Ozs7a0NBWW1CLEVBQUVTLGdCQUFnQkYsZ0JBQWdCOzs7Ozs7O0FBT3BFLENBQUM7QUFDRDtBQUVBLFNBQVNFLGdCQUFnQkMsU0FBNEI7SUFDbkQsT0FBTyxDQUFDLElBQUksRUFBRUwsT0FBTyxFQUFFSyxVQUNwQkMsR0FBRyxDQUFDLENBQUNDLElBQU0sQ0FBQyxFQUFFQSxFQUFFQyxJQUFJLENBQUMsRUFBRSxJQUFJUCxNQUFNLENBQUMsS0FBS00sRUFBRUMsSUFBSSxDQUFDQyxNQUFNLEVBQUUsRUFBRUYsRUFBRUcsV0FBVyxDQUFDLENBQUMsRUFDdkVDLElBQUksQ0FBQyxDQUFDLEVBQUUsRUFBRVgsT0FBTyxDQUFDLEVBQUUsQ0FBQztBQUMxQjtBQUVPLFNBQVNSLGVBQWVvQixVQUFrQixFQUFFQyxjQUFzQjtJQUN2RSxPQUFPLENBQUM7RUFDUixFQUFFcEIsT0FBTyx1QkFBdUI7O1NBRXpCLEVBQUVtQixXQUFXO01BQ2hCLEVBQ0FDLG1CQUFtQixTQUFTLFNBQVMsVUFDdEMsNkJBQTZCLEVBQUVDLG1CQUM5QixhQUNBLENBQUMsT0FBTyxFQUFFQyxhQUFJLENBQUNDLE9BQU8sQ0FBQ0osWUFBWSxhQUFhLENBQUMsRUFDakQ7O0VBRUosRUFBRW5CLE9BQU8sa0JBQWtCOztNQUV2QixFQUFFcUIsbUJBQ0YsbUJBQ0EsK0RBQ0E7TUFDQSxFQUFFQSxtQkFBbUIsaUJBQWlCLHNEQUFzRDs7QUFFbEcsQ0FBQztBQUNEO0FBRUEsOERBQThEO0FBQzlELFNBQVNBLG1CQUFtQkcsSUFBWSxFQUFFQyxHQUFXO0lBQ25ELE9BQU9DLElBQUFBLHFCQUFZLEVBQUNGLE1BQU1DLEtBQUs7UUFDN0JFLFVBQVUsQ0FBQ0gsTUFBTUMsTUFBUSxDQUFDLEVBQUVELEtBQUssRUFBRSxFQUFFQyxJQUFJLENBQUM7SUFDNUM7QUFDRiJ9
|
package/package.json
CHANGED
@@ -1,23 +1,10 @@
|
|
1
1
|
{
|
2
2
|
"name": "create-payload-app",
|
3
|
+
"version": "1.0.0-beta.0",
|
3
4
|
"license": "MIT",
|
4
5
|
"bin": {
|
5
6
|
"create-payload-app": "bin/cli.js"
|
6
7
|
},
|
7
|
-
"scripts": {
|
8
|
-
"build": "tsc && yarn copyfiles",
|
9
|
-
"copyfiles": "copyfiles -u 1 \"src/templates/**\" \"src/lib/common-files/**\" dist",
|
10
|
-
"clean": "rimraf dist",
|
11
|
-
"typecheck": "tsc --noEmit",
|
12
|
-
"lint": "eslint \"src/**/*.ts\"",
|
13
|
-
"lint:fix": "eslint \"src/**/*.ts\" --fix",
|
14
|
-
"lint-staged": "lint-staged --quiet",
|
15
|
-
"test": "jest",
|
16
|
-
"prepublishOnly": "yarn test && yarn clean && yarn build",
|
17
|
-
"prepare": "husky install",
|
18
|
-
"release:beta": "yarn publish --tag beta",
|
19
|
-
"release": "yarn publish"
|
20
|
-
},
|
21
8
|
"files": [
|
22
9
|
"package.json",
|
23
10
|
"dist",
|
@@ -37,7 +24,6 @@
|
|
37
24
|
"prompts": "^2.4.2",
|
38
25
|
"terminal-link": "^2.1.1"
|
39
26
|
},
|
40
|
-
"version": "0.5.1",
|
41
27
|
"devDependencies": {
|
42
28
|
"@types/command-exists": "^1.2.0",
|
43
29
|
"@types/degit": "^2.8.3",
|
@@ -45,29 +31,12 @@
|
|
45
31
|
"@types/jest": "^27.0.3",
|
46
32
|
"@types/node": "^16.6.2",
|
47
33
|
"@types/prompts": "^2.4.1",
|
48
|
-
"
|
49
|
-
"@typescript-eslint/parser": "^5.41.0",
|
50
|
-
"copyfiles": "^2.4.1",
|
51
|
-
"eslint": "^7.32.0",
|
52
|
-
"eslint-config-airbnb-base": "^14.2.1",
|
53
|
-
"eslint-config-prettier": "^8.3.0",
|
54
|
-
"eslint-plugin-prettier": "^3.4.0",
|
55
|
-
"husky": "^8.0.1",
|
56
|
-
"jest": "^27.4.5",
|
57
|
-
"lint-staged": "^13.0.3",
|
58
|
-
"prettier": "^2.3.2",
|
59
|
-
"rimraf": "^4.1.2",
|
60
|
-
"ts-jest": "^27.1.1",
|
61
|
-
"typescript": "^4.8.4"
|
34
|
+
"ts-jest": "^29.1.0"
|
62
35
|
},
|
63
|
-
"
|
64
|
-
"
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
"lint-staged": {
|
69
|
-
"*.{ts,tsx}": [
|
70
|
-
"eslint \"src/**/*.ts\" --cache --fix"
|
71
|
-
]
|
36
|
+
"scripts": {
|
37
|
+
"build": "pnpm build:swc",
|
38
|
+
"build:swc": "swc ./src -d ./dist --config-file .swcrc",
|
39
|
+
"clean": "rimraf dist",
|
40
|
+
"test": "jest"
|
72
41
|
}
|
73
|
-
}
|
42
|
+
}
|
package/.vscode/launch.json
DELETED
@@ -1,13 +0,0 @@
|
|
1
|
-
{
|
2
|
-
// Use IntelliSense to learn about possible attributes.
|
3
|
-
// Hover to view descriptions of existing attributes.
|
4
|
-
"configurations": [
|
5
|
-
{
|
6
|
-
"command": "ts-node -T ./src/index.ts -n asdf -t blank --db mongodb --no-deps",
|
7
|
-
"cwd": "${workspaceFolder}",
|
8
|
-
"name": "Debug",
|
9
|
-
"request": "launch",
|
10
|
-
"type": "node-terminal"
|
11
|
-
},
|
12
|
-
]
|
13
|
-
}
|