index.js

var __importDefault = (this && this.__importDefault) || function (mod) {
    return (mod && mod.__esModule) ? mod : { "default": mod };
};
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    var desc = Object.getOwnPropertyDescriptor(m, k);
    if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
      desc = { enumerable: true, get: function() { return m[k]; } };
    }
    Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
    if (k2 === undefined) k2 = k;
    o[k2] = m[k];
}));
var __exportStar = (this && this.__exportStar) || function(m, exports) {
    for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
};
define("package", [], {
    "name": "root",
    "version": "0.0.0",
    "description": "Root library setup",
    "keywords": [
        "typescript",
        "bundle",
        "generator"
    ],
    "license": "MIT",
    "author": {
        "name": "Alexander Karamushko",
        "email": "alex.karamushko@nordclan.com",
        "url": "https://t.me/melkor_b"
    },
    "repository": {
        "type": "git",
        "url": "https://github.com/alexanderKaramushko/project-generator"
    },
    "workspaces": [
        "packages/**"
    ],
    "scripts": {
        "test": "vitest",
        "test:dev": "vitest watch",
        "publish:pg-template-starter:minor": "sh ./bump minor pg-template-starter",
        "publish:pg-template-starter:major": "sh ./bump major pg-template-starter",
        "publish:project-generator-cli-js:minor": "sh ./bump minor project-generator-cli-js",
        "publish:project-generator-cli-js:major": "sh ./bump major project-generator-cli-js",
        "publish:pg-template-structure:minor": "sh ./bump minor pg-template-structure",
        "publish:pg-template-structure:major": "sh ./bump major pg-template-structure",
        "publish:pg-template-builder:minor": "sh ./bump minor pg-template-builder",
        "publish:pg-template-builder:major": "sh ./bump major pg-template-builder",
        "publish:pg-template-esbuild:minor": "sh ./bump minor pg-template-esbuild",
        "publish:pg-template-esbuild:major": "sh ./bump major pg-template-esbuild",
        "postinstall": "chmod +x ./bump"
    },
    "devDependencies": {
        "@commitlint/cli": "17.4.2",
        "@commitlint/config-conventional": "17.4.2",
        "@typescript-eslint/eslint-plugin": "^5.46.1",
        "@typescript-eslint/parser": "^5.46.1",
        "eslint": "^7.19.0",
        "eslint-config-airbnb": "^18.1.0",
        "eslint-import-resolver-node": "^0.3.3",
        "eslint-plugin-import": "^2.20.1",
        "eslint-plugin-simple-import-sort": "^8.0.0",
        "eslint-plugin-testing-library": "^5.10.0",
        "husky": "8.0.2",
        "lint-staged": "^15.2.2",
        "vite": "^5.3.5",
        "vitest": "^2.0.4"
    },
    "lint-staged": {
        "*.{js,ts}": [
            "eslint --fix"
        ]
    },
    "alias": {
        "lib": "./lib"
    }
});
define("packages/project-generator-cli-js/lib/CLIAbstractParser", ["require", "exports", "chalk"], function (require, exports, chalk_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.CLIAbstractParser = void 0;
    chalk_1 = __importDefault(chalk_1);
    /**
     * @class
     * @namespace CLIAbstractParser
     * @description Абстрактный класс парсинга коммандной строки.
     */
    class CLIAbstractParser {
        /**
         * @typedef {Object} CLIAbstractParser
         * @property {string} dir Директория, в которой будет создано приложение.
         * @property {string} builder Билдер, который будет собирать проект.
         * @property {object} template Выбор шаблона проекта.
         */
        args = {
            builder: 'esbuild',
            dir: '',
            template: 'react-typescript',
        };
        // eslint-disable-next-line class-methods-use-this
        async parseInput() {
            throw new Error('Метод не имплементирован.');
        }
        /**
         * @memberof CLIAbstractParser
         * @description Логгирование переданных аргументов.
         * @returns {void}
         */
        logArgs() {
            console.log(chalk_1.default.green('Переданные аргументы:'));
            console.table(this.args);
            console.log('');
        }
        /**
         * @memberof CLIAbstractParser
         * @description Получение всех переданных аргументов.
         * @returns {CLIArguments}
         */
        getArgs() {
            return this.args;
        }
    }
    exports.CLIAbstractParser = CLIAbstractParser;
});
define("packages/project-generator-cli-js/lib/CLIInputParser", ["require", "exports", "chalk", "commander", "envinfo", "package", "packages/project-generator-cli-js/lib/CLIAbstractParser"], function (require, exports, chalk_2, commander_1, envinfo_1, package_json_1, CLIAbstractParser_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.CLIInputParser = void 0;
    chalk_2 = __importDefault(chalk_2);
    envinfo_1 = __importDefault(envinfo_1);
    package_json_1 = __importDefault(package_json_1);
    /**
     * @augments CLIAbstractParser
     * @namespace CLIInputParser
     * @description Класс считывания аргументов CLI as is.
     */
    class CLIInputParser extends CLIAbstractParser_1.CLIAbstractParser {
        /**
         * @memberof CLIInputParser
         * @description Парсит аргументы введеные вручную в коммандную строку.
         */
        async parseInput() {
            commander_1.program
                .name('project-generator')
                .description('Генератор шаблонов')
                .version(package_json_1.default.version);
            commander_1.program
                .arguments('<project-directory>')
                .option('-p, --template <char>', 'Шаблон приложения')
                .option('-n, --name <char>', 'Название приложения')
                .option('-v, --verbose', 'Показывать доп. логи')
                .option('--info', 'Показать информацию о хост-окружении')
                .on('--help', () => {
                console.log();
                console.log(`Версия приложения: ${chalk_2.default.bgYellow(package_json_1.default.version)}`);
                console.log(`Только ${chalk_2.default.green('<project-directory>')} является обязательной опцией.`);
                console.log(`Шаблон приложения опубликован на npm: ${chalk_2.default.blue('https://www.npmjs.com/package/pg-template')}`);
                console.log();
            });
            commander_1.program.parse();
            const options = commander_1.program.opts();
            if (options.info) {
                console.log(chalk_2.default.bold('\nИнформация об окружении:'));
                console.log(`\n  текущая версия ${package_json_1.default.name}: ${package_json_1.default.version}`);
                console.log(`Запущен из ${__dirname}`);
                envinfo_1.default
                    .run({
                    Binaries: ['Node', 'npm', 'Yarn'],
                    Browsers: [
                        'Chrome',
                        'Edge',
                        'Internet Explorer',
                        'Firefox',
                        'Safari',
                    ],
                    System: ['OS', 'CPU'],
                    npmGlobalPackages: ['create-react-app'],
                    npmPackages: ['react', 'react-dom', 'react-scripts'],
                }, {
                    duplicates: true,
                    showNotFound: true,
                })
                    .then(console.log);
                return;
            }
            // eslint-disable-next-line prefer-destructuring
            this.args.dir = commander_1.program.args[0];
            this.args.template = options.template;
        }
    }
    exports.CLIInputParser = CLIInputParser;
});
define("packages/project-generator-cli-js/lib/CLIPromtsParser", ["require", "exports", "prompts", "packages/project-generator-cli-js/lib/CLIAbstractParser"], function (require, exports, prompts_1, CLIAbstractParser_2) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.CLIPromptsParser = void 0;
    prompts_1 = __importDefault(prompts_1);
    /**
     * @namespace CLIPromptsParser
     * @description Класс считывания аргументов CLI из промпт-ов.
     */
    class CLIPromptsParser extends CLIAbstractParser_2.CLIAbstractParser {
        /**
         * @augments CLIAbstractParser
         * @memberof CLIPromptsParser
         * @description Парсит аргументы на основе выбранных промпт-ов.
         */
        async parseInput() {
            const response = await (0, prompts_1.default)([
                {
                    choices: [
                        {
                            title: 'React',
                            value: 'react',
                        },
                        {
                            title: 'React с TS',
                            value: 'react-typescript',
                        },
                        {
                            title: 'Plain JS',
                            value: 'plain-js',
                        },
                    ],
                    message: 'Выберите шаблон',
                    name: 'template',
                    type: 'select',
                },
                {
                    choices: [
                        {
                            title: 'ESBuild',
                            value: 'esbuild',
                        },
                        {
                            title: 'Parcel',
                            value: 'parcel',
                        },
                        {
                            title: 'Rollup',
                            value: 'rollup',
                        },
                    ],
                    message: 'Выберите билдер',
                    name: 'builder',
                    type: 'select',
                },
                {
                    initial: './',
                    message: 'Укажите директорию проекта',
                    name: 'dir',
                    type: 'text',
                },
            ]);
            this.args.template = response.template;
            this.args.builder = response.builder;
            this.args.dir = response.dir;
        }
    }
    exports.CLIPromptsParser = CLIPromptsParser;
});
define("packages/project-generator-cli-js/lib/template-validator/schemas/eslint", [], {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "https://json.schemastore.org/eslintrc.json",
    "definitions": {
        "stringOrStringArray": {
            "oneOf": [
                {
                    "type": "string"
                },
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                }
            ]
        },
        "rule": {
            "oneOf": [
                {
                    "description": "ESLint rule\n\n0 - turns the rule off\n1 - turn the rule on as a warning (doesn't affect exit code)\n2 - turn the rule on as an error (exit code is 1 when triggered)\n",
                    "type": "integer",
                    "minimum": 0,
                    "maximum": 2
                },
                {
                    "description": "ESLint rule\n\n\"off\" - turns the rule off\n\"warn\" - turn the rule on as a warning (doesn't affect exit code)\n\"error\" - turn the rule on as an error (exit code is 1 when triggered)\n",
                    "type": "string",
                    "enum": ["off", "warn", "error"]
                },
                {
                    "type": "array"
                }
            ]
        },
        "possibleErrors": {
            "type": "object",
            "properties": {
                "comma-dangle": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow trailing commas"
                },
                "for-direction": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce \"for\" loop update clause moving the counter in the right direction"
                },
                "getter-return": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce return statements in getters"
                },
                "no-await-in-loop": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow await inside of loops"
                },
                "no-compare-neg-zero": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow comparing against -0"
                },
                "no-cond-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow assignment operators in conditional expressions"
                },
                "no-console": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of console"
                },
                "no-constant-condition": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow constant expressions in conditions"
                },
                "no-control-regex": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow control characters in regular expressions"
                },
                "no-debugger": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of debugger"
                },
                "no-dupe-args": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow duplicate arguments in function definitions"
                },
                "no-dupe-keys": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow duplicate keys in object literals"
                },
                "no-duplicate-case": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow duplicate case labels"
                },
                "no-empty": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow empty block statements"
                },
                "no-empty-character-class": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow empty character classes in regular expressions"
                },
                "no-ex-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow reassigning exceptions in catch clauses"
                },
                "no-extra-boolean-cast": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary boolean casts"
                },
                "no-extra-parens": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary parentheses"
                },
                "no-extra-semi": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary semicolons"
                },
                "no-func-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow reassigning function declarations"
                },
                "no-inner-declarations": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow function or var declarations in nested blocks"
                },
                "no-invalid-regexp": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow invalid regular expression strings in RegExp constructors"
                },
                "no-irregular-whitespace": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow irregular whitespace outside of strings and comments"
                },
                "no-negated-in-lhs": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow negating the left operand in in expressions (deprecated)"
                },
                "no-obj-calls": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow calling global object properties as functions"
                },
                "no-prototype-builtins": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow calling some Object.prototype methods directly on objects"
                },
                "no-regex-spaces": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow multiple spaces in regular expressions"
                },
                "no-sparse-arrays": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow sparse arrays"
                },
                "no-template-curly-in-string": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow template literal placeholder syntax in regular strings"
                },
                "no-unexpected-multiline": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow confusing multiline expressions"
                },
                "no-unreachable": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unreachable code after return, throw, continue, and break statements"
                },
                "no-unsafe-finally": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow control flow statements in finally blocks"
                },
                "no-unsafe-negation": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow negating the left operand of relational operators"
                },
                "use-isnan": {
                    "$ref": "#/definitions/rule",
                    "description": "Require calls to isNaN() when checking for NaN"
                },
                "valid-jsdoc": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce valid JSDoc comments"
                },
                "valid-typeof": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce comparing typeof expressions against valid strings"
                }
            }
        },
        "bestPractices": {
            "type": "object",
            "properties": {
                "accessor-pairs": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce getter and setter pairs in objects"
                },
                "array-callback-return": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce return statements in callbacks of array methods"
                },
                "block-scoped-var": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce the use of variables within the scope they are defined"
                },
                "class-methods-use-this": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce that class methods utilize this"
                },
                "complexity": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum cyclomatic complexity allowed in a program"
                },
                "consistent-return": {
                    "$ref": "#/definitions/rule",
                    "description": "Require return statements to either always or never specify values"
                },
                "curly": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent brace style for all control statements"
                },
                "default-case": {
                    "$ref": "#/definitions/rule",
                    "description": "Require default cases in switch statements"
                },
                "dot-location": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent newlines before and after dots"
                },
                "dot-notation": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce dot notation whenever possible"
                },
                "eqeqeq": {
                    "$ref": "#/definitions/rule",
                    "description": "Require the use of === and !=="
                },
                "guard-for-in": {
                    "$ref": "#/definitions/rule",
                    "description": "Require for-in loops to include an if statement"
                },
                "no-alert": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of alert, confirm, and prompt"
                },
                "no-caller": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of arguments.caller or arguments.callee"
                },
                "no-case-declarations": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow lexical declarations in case clauses"
                },
                "no-div-regex": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow division operators explicitly at the beginning of regular expressions"
                },
                "no-else-return": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow else blocks after return statements in if statements"
                },
                "no-empty-function": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow empty functions"
                },
                "no-empty-pattern": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow empty destructuring patterns"
                },
                "no-eq-null": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow null comparisons without type-checking operators"
                },
                "no-eval": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of eval()"
                },
                "no-extend-native": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow extending native types"
                },
                "no-extra-bind": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary calls to .bind()"
                },
                "no-extra-label": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary labels"
                },
                "no-fallthrough": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow fallthrough of case statements"
                },
                "no-floating-decimal": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow leading or trailing decimal points in numeric literals"
                },
                "no-global-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow assignments to native objects or read-only global variables"
                },
                "no-implicit-coercion": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow shorthand type conversions"
                },
                "no-implicit-globals": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow var and named function declarations in the global scope"
                },
                "no-implied-eval": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of eval()-like methods"
                },
                "no-invalid-this": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow this keywords outside of classes or class-like objects"
                },
                "no-iterator": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of the __iterator__ property"
                },
                "no-labels": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow labeled statements"
                },
                "no-lone-blocks": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary nested blocks"
                },
                "no-loop-func": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow function declarations and expressions inside loop statements"
                },
                "no-magic-numbers": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow magic numbers"
                },
                "no-multi-spaces": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow multiple spaces"
                },
                "no-multi-str": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow multiline strings"
                },
                "no-native-reassign": {
                    "$ref": "#/definitions/rule"
                },
                "no-new": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow new operators outside of assignments or comparisons"
                },
                "no-new-func": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow new operators with the Function object"
                },
                "no-new-wrappers": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow new operators with the String, Number, and Boolean objects"
                },
                "no-octal": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow octal literals"
                },
                "no-octal-escape": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow octal escape sequences in string literals"
                },
                "no-param-reassign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow reassigning function parameters"
                },
                "no-proto": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of the __proto__ property"
                },
                "no-redeclare": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow var redeclaration"
                },
                "no-restricted-properties": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow certain properties on certain objects"
                },
                "no-return-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow assignment operators in return statements"
                },
                "no-return-await": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary return await"
                },
                "no-script-url": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow javascript: urls"
                },
                "no-self-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow assignments where both sides are exactly the same"
                },
                "no-self-compare": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow comparisons where both sides are exactly the same"
                },
                "no-sequences": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow comma operators"
                },
                "no-throw-literal": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow throwing literals as exceptions"
                },
                "no-unmodified-loop-condition": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unmodified loop conditions"
                },
                "no-unused-expressions": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unused expressions"
                },
                "no-unused-labels": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unused labels"
                },
                "no-useless-call": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary calls to .call() and .apply()"
                },
                "no-useless-concat": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary concatenation of literals or template literals"
                },
                "no-useless-escape": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary escape characters"
                },
                "no-useless-return": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow redundant return statements"
                },
                "no-void": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow void operators"
                },
                "no-warning-comments": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow specified warning terms in comments"
                },
                "no-with": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow with statements"
                },
                "prefer-promise-reject-errors": {
                    "$ref": "#/definitions/rule",
                    "description": "Require using Error objects as Promise rejection reasons"
                },
                "radix": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce the consistent use of the radix argument when using parseInt()"
                },
                "require-await": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow async functions which have no await expression"
                },
                "vars-on-top": {
                    "$ref": "#/definitions/rule",
                    "description": "Require var declarations be placed at the top of their containing scope"
                },
                "wrap-iife": {
                    "$ref": "#/definitions/rule",
                    "description": "Require parentheses around immediate function invocations"
                },
                "yoda": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or Disallow \"Yoda\" conditions"
                }
            }
        },
        "strictMode": {
            "type": "object",
            "properties": {
                "strict": {
                    "$ref": "#/definitions/rule",
                    "description": "require or disallow strict mode directives"
                }
            }
        },
        "variables": {
            "type": "object",
            "properties": {
                "init-declarations": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow initialization in var declarations"
                },
                "no-catch-shadow": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow catch clause parameters from shadowing variables in the outer scope"
                },
                "no-delete-var": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow deleting variables"
                },
                "no-label-var": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow labels that share a name with a variable"
                },
                "no-restricted-globals": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow specified global variables"
                },
                "no-shadow": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow var declarations from shadowing variables in the outer scope"
                },
                "no-shadow-restricted-names": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow identifiers from shadowing restricted names"
                },
                "no-undef": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of undeclared variables unless mentioned in /*global */ comments"
                },
                "no-undefined": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of undefined as an identifier"
                },
                "no-undef-init": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow initializing variables to undefined"
                },
                "no-unused-vars": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unused variables"
                },
                "no-use-before-define": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of variables before they are defined"
                }
            }
        },
        "nodeAndCommonJs": {
            "type": "object",
            "properties": {
                "callback-return": {
                    "$ref": "#/definitions/rule",
                    "description": "Require return statements after callbacks"
                },
                "global-require": {
                    "$ref": "#/definitions/rule",
                    "description": "Require require() calls to be placed at top-level module scope"
                },
                "handle-callback-err": {
                    "$ref": "#/definitions/rule",
                    "description": "Require error handling in callbacks"
                },
                "no-buffer-constructor": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow use of the Buffer() constructor"
                },
                "no-mixed-requires": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow require calls to be mixed with regular var declarations"
                },
                "no-new-require": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow new operators with calls to require"
                },
                "no-path-concat": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow string concatenation with __dirname and __filename"
                },
                "no-process-env": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of process.env"
                },
                "no-process-exit": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the use of process.exit()"
                },
                "no-restricted-modules": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow specified modules when loaded by require"
                },
                "no-sync": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow synchronous methods"
                }
            }
        },
        "stylisticIssues": {
            "type": "object",
            "properties": {
                "array-bracket-newline": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce line breaks after opening and before closing array brackets"
                },
                "array-bracket-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing inside array brackets"
                },
                "array-element-newline": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce line breaks after each array element"
                },
                "block-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing inside single-line blocks"
                },
                "brace-style": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent brace style for blocks"
                },
                "camelcase": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce camelcase naming convention"
                },
                "capitalized-comments": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce or disallow capitalization of the first letter of a comment"
                },
                "comma-dangle": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow trailing commas"
                },
                "comma-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing before and after commas"
                },
                "comma-style": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent comma style"
                },
                "computed-property-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing inside computed property brackets"
                },
                "consistent-this": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent naming when capturing the current execution context"
                },
                "eol-last": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce at least one newline at the end of files"
                },
                "func-call-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow spacing between function identifiers and their invocations"
                },
                "func-name-matching": {
                    "$ref": "#/definitions/rule",
                    "description": "Require function names to match the name of the variable or property to which they are assigned"
                },
                "func-names": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow named function expressions"
                },
                "func-style": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce the consistent use of either function declarations or expressions"
                },
                "function-call-argument-newline": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce line breaks between arguments of a function call"
                },
                "function-paren-newline": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent line breaks inside function parentheses"
                },
                "id-blacklist": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow specified identifiers"
                },
                "id-length": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce minimum and maximum identifier lengths"
                },
                "id-match": {
                    "$ref": "#/definitions/rule",
                    "description": "Require identifiers to match a specified regular expression"
                },
                "implicit-arrow-linebreak": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce the location of arrow function bodies"
                },
                "indent": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent indentation"
                },
                "indent-legacy": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent indentation (legacy, deprecated)"
                },
                "jsx-quotes": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce the consistent use of either double or single quotes in JSX attributes"
                },
                "key-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing between keys and values in object literal properties"
                },
                "keyword-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing before and after keywords"
                },
                "line-comment-position": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce position of line comments"
                },
                "lines-between-class-members": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow an empty line between class members"
                },
                "linebreak-style": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent linebreak style"
                },
                "lines-around-comment": {
                    "$ref": "#/definitions/rule",
                    "description": "Require empty lines around comments"
                },
                "lines-around-directive": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow newlines around directives"
                },
                "max-depth": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum depth that blocks can be nested"
                },
                "max-len": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum line length"
                },
                "max-lines": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum number of lines per file"
                },
                "max-nested-callbacks": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum depth that callbacks can be nested"
                },
                "max-params": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum number of parameters in function definitions"
                },
                "max-statements": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum number of statements allowed in function blocks"
                },
                "max-statements-per-line": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a maximum number of statements allowed per line"
                },
                "multiline-comment-style": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce a particular style for multiline comments"
                },
                "multiline-ternary": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce newlines between operands of ternary expressions"
                },
                "new-cap": {
                    "$ref": "#/definitions/rule",
                    "description": "Require constructor function names to begin with a capital letter"
                },
                "newline-after-var": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow an empty line after var declarations"
                },
                "newline-before-return": {
                    "$ref": "#/definitions/rule",
                    "description": "Require an empty line before return statements"
                },
                "newline-per-chained-call": {
                    "$ref": "#/definitions/rule",
                    "description": "Require a newline after each call in a method chain"
                },
                "new-parens": {
                    "$ref": "#/definitions/rule",
                    "description": "Require parentheses when invoking a constructor with no arguments"
                },
                "no-array-constructor": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow Array constructors"
                },
                "no-bitwise": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow bitwise operators"
                },
                "no-continue": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow continue statements"
                },
                "no-inline-comments": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow inline comments after code"
                },
                "no-lonely-if": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow if statements as the only statement in else blocks"
                },
                "no-mixed-operators": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow mixed binary operators"
                },
                "no-mixed-spaces-and-tabs": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow mixed spaces and tabs for indentation"
                },
                "no-multi-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow use of chained assignment expressions"
                },
                "no-multiple-empty-lines": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow multiple empty lines"
                },
                "no-negated-condition": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow negated conditions"
                },
                "no-nested-ternary": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow nested ternary expressions"
                },
                "no-new-object": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow Object constructors"
                },
                "no-plusplus": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow the unary operators ++ and --"
                },
                "no-restricted-syntax": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow specified syntax"
                },
                "no-spaced-func": {
                    "$ref": "#/definitions/rule"
                },
                "no-tabs": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow tabs in file"
                },
                "no-ternary": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow ternary operators"
                },
                "no-trailing-spaces": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow trailing whitespace at the end of lines"
                },
                "no-underscore-dangle": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow dangling underscores in identifiers"
                },
                "no-unneeded-ternary": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow ternary operators when simpler alternatives exist"
                },
                "no-whitespace-before-property": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow whitespace before properties"
                },
                "nonblock-statement-body-position": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce the location of single-line statements"
                },
                "object-curly-newline": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent line breaks inside braces"
                },
                "object-curly-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing inside braces"
                },
                "object-property-newline": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce placing object properties on separate lines"
                },
                "object-shorthand": {
                    "$ref": "#/definitions/rule"
                },
                "one-var": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce variables to be declared either together or separately in functions"
                },
                "one-var-declaration-per-line": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow newlines around var declarations"
                },
                "operator-assignment": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow assignment operator shorthand where possible"
                },
                "operator-linebreak": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent linebreak style for operators"
                },
                "padded-blocks": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow padding within blocks"
                },
                "padding-line-between-statements": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow padding lines between statements"
                },
                "quote-props": {
                    "$ref": "#/definitions/rule",
                    "description": "Require quotes around object literal property names"
                },
                "quotes": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce the consistent use of either backticks, double, or single quotes"
                },
                "require-jsdoc": {
                    "$ref": "#/definitions/rule",
                    "description": "Require JSDoc comments"
                },
                "semi": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow semicolons instead of ASI"
                },
                "semi-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing before and after semicolons"
                },
                "semi-style": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce location of semicolons"
                },
                "sort-keys": {
                    "$ref": "#/definitions/rule",
                    "description": "Requires object keys to be sorted"
                },
                "sort-vars": {
                    "$ref": "#/definitions/rule",
                    "description": "Require variables within the same declaration block to be sorted"
                },
                "space-before-blocks": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing before blocks"
                },
                "space-before-function-paren": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing before function definition opening parenthesis"
                },
                "spaced-comment": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing after the // or /* in a comment"
                },
                "space-infix-ops": {
                    "$ref": "#/definitions/rule",
                    "description": "Require spacing around operators"
                },
                "space-in-parens": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing inside parentheses"
                },
                "space-unary-ops": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing before or after unary operators"
                },
                "switch-colon-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce spacing around colons of switch statements"
                },
                "template-tag-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow spacing between template tags and their literals"
                },
                "unicode-bom": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow Unicode byte order mark (BOM)"
                },
                "wrap-regex": {
                    "$ref": "#/definitions/rule",
                    "description": "Require parenthesis around regex literals"
                }
            }
        },
        "ecmaScript6": {
            "type": "object",
            "properties": {
                "arrow-body-style": {
                    "$ref": "#/definitions/rule",
                    "description": "Require braces around arrow function bodies"
                },
                "arrow-parens": {
                    "$ref": "#/definitions/rule",
                    "description": "Require parentheses around arrow function arguments"
                },
                "arrow-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing before and after the arrow in arrow functions"
                },
                "constructor-super": {
                    "$ref": "#/definitions/rule",
                    "description": "Require super() calls in constructors"
                },
                "generator-star-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce consistent spacing around * operators in generator functions"
                },
                "no-class-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow reassigning class members"
                },
                "no-confusing-arrow": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow arrow functions where they could be confused with comparisons"
                },
                "no-const-assign": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow reassigning const variables"
                },
                "no-dupe-class-members": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow duplicate class members"
                },
                "no-duplicate-imports": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow duplicate module imports"
                },
                "no-new-symbol": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow new operators with the Symbol object"
                },
                "no-restricted-imports": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow specified modules when loaded by import"
                },
                "no-this-before-super": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow this/super before calling super() in constructors"
                },
                "no-useless-computed-key": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary computed property keys in object literals"
                },
                "no-useless-constructor": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow unnecessary constructors"
                },
                "no-useless-rename": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow renaming import, export, and destructured assignments to the same name"
                },
                "no-var": {
                    "$ref": "#/definitions/rule",
                    "description": "Require let or const instead of var"
                },
                "object-shorthand": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow method and property shorthand syntax for object literals"
                },
                "prefer-arrow-callback": {
                    "$ref": "#/definitions/rule",
                    "description": "Require arrow functions as callbacks"
                },
                "prefer-const": {
                    "$ref": "#/definitions/rule",
                    "description": "Require const declarations for variables that are never reassigned after declared"
                },
                "prefer-destructuring": {
                    "$ref": "#/definitions/rule",
                    "description": "Require destructuring from arrays and/or objects"
                },
                "prefer-numeric-literals": {
                    "$ref": "#/definitions/rule",
                    "description": "Disallow parseInt() in favor of binary, octal, and hexadecimal literals"
                },
                "prefer-reflect": {
                    "$ref": "#/definitions/rule",
                    "description": "Require Reflect methods where applicable"
                },
                "prefer-rest-params": {
                    "$ref": "#/definitions/rule",
                    "description": "Require rest parameters instead of arguments"
                },
                "prefer-spread": {
                    "$ref": "#/definitions/rule",
                    "description": "Require spread operators instead of .apply()"
                },
                "prefer-template": {
                    "$ref": "#/definitions/rule",
                    "description": "Require template literals instead of string concatenation"
                },
                "require-yield": {
                    "$ref": "#/definitions/rule",
                    "description": "Require generator functions to contain yield"
                },
                "rest-spread-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce spacing between rest and spread operators and their expressions"
                },
                "sort-imports": {
                    "$ref": "#/definitions/rule",
                    "description": "Enforce sorted import declarations within modules"
                },
                "symbol-description": {
                    "$ref": "#/definitions/rule",
                    "description": "Require symbol descriptions"
                },
                "template-curly-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow spacing around embedded expressions of template strings"
                },
                "yield-star-spacing": {
                    "$ref": "#/definitions/rule",
                    "description": "Require or disallow spacing around the * in yield* expressions"
                }
            }
        },
        "legacy": {
            "type": "object",
            "properties": {
                "max-depth": {
                    "$ref": "#/definitions/rule"
                },
                "max-len": {
                    "$ref": "#/definitions/rule"
                },
                "max-params": {
                    "$ref": "#/definitions/rule"
                },
                "max-statements": {
                    "$ref": "#/definitions/rule"
                },
                "no-bitwise": {
                    "$ref": "#/definitions/rule"
                },
                "no-plusplus": {
                    "$ref": "#/definitions/rule"
                }
            }
        }
    },
    "properties": {
        "ecmaFeatures": {
            "description": "By default, ESLint supports only ECMAScript 5 syntax. You can override that setting to enable support for ECMAScript 6 as well as JSX by using configuration settings.",
            "type": "object",
            "properties": {
                "arrowFunctions": {
                    "type": "boolean"
                },
                "binaryLiterals": {
                    "type": "boolean"
                },
                "blockBindings": {
                    "type": "boolean"
                },
                "classes": {
                    "type": "boolean"
                },
                "defaultParams": {
                    "type": "boolean"
                },
                "destructuring": {
                    "type": "boolean"
                },
                "experimentalObjectRestSpread": {
                    "type": "boolean",
                    "description": "Enables support for the experimental object rest/spread properties (IMPORTANT: This is an experimental feature that may change significantly in the future. It's recommended that you do not write rules relying on this functionality unless you are willing to incur maintenance cost when it changes.)"
                },
                "forOf": {
                    "type": "boolean"
                },
                "generators": {
                    "type": "boolean"
                },
                "globalReturn": {
                    "type": "boolean",
                    "description": "allow return statements in the global scope"
                },
                "impliedStrict": {
                    "type": "boolean",
                    "description": "enable global strict mode (if ecmaVersion is 5 or greater)"
                },
                "jsx": {
                    "type": "boolean",
                    "description": "enable JSX"
                },
                "modules": {
                    "type": "boolean"
                },
                "objectLiteralComputedProperties": {
                    "type": "boolean"
                },
                "objectLiteralDuplicateProperties": {
                    "type": "boolean"
                },
                "objectLiteralShorthandMethods": {
                    "type": "boolean"
                },
                "objectLiteralShorthandProperties": {
                    "type": "boolean"
                },
                "octalLiterals": {
                    "type": "boolean"
                },
                "regexUFlag": {
                    "type": "boolean"
                },
                "regexYFlag": {
                    "type": "boolean"
                },
                "restParams": {
                    "type": "boolean"
                },
                "spread": {
                    "type": "boolean"
                },
                "superInFunctions": {
                    "type": "boolean"
                },
                "templateStrings": {
                    "type": "boolean"
                },
                "unicodeCodePointEscapes": {
                    "type": "boolean"
                }
            }
        },
        "env": {
            "description": "An environment defines global variables that are predefined.",
            "type": "object",
            "properties": {
                "amd": {
                    "type": "boolean",
                    "description": "defines require() and define() as global variables as per the amd spec"
                },
                "applescript": {
                    "type": "boolean",
                    "description": "AppleScript global variables"
                },
                "atomtest": {
                    "type": "boolean",
                    "description": "Atom test helper globals"
                },
                "browser": {
                    "type": "boolean",
                    "description": "browser global variables"
                },
                "commonjs": {
                    "type": "boolean",
                    "description": "CommonJS global variables and CommonJS scoping (use this for browser-only code that uses Browserify/WebPack)"
                },
                "shared-node-browser": {
                    "type": "boolean",
                    "description": "Globals common to both Node and Browser"
                },
                "embertest": {
                    "type": "boolean",
                    "description": "Ember test helper globals"
                },
                "es6": {
                    "type": "boolean",
                    "description": "enable all ECMAScript 6 features except for modules"
                },
                "greasemonkey": {
                    "type": "boolean",
                    "description": "GreaseMonkey globals"
                },
                "jasmine": {
                    "type": "boolean",
                    "description": "adds all of the Jasmine testing global variables for version 1.3 and 2.0"
                },
                "jest": {
                    "type": "boolean",
                    "description": "Jest global variables"
                },
                "jquery": {
                    "type": "boolean",
                    "description": "jQuery global variables"
                },
                "meteor": {
                    "type": "boolean",
                    "description": "Meteor global variables"
                },
                "mocha": {
                    "type": "boolean",
                    "description": "adds all of the Mocha test global variables"
                },
                "mongo": {
                    "type": "boolean",
                    "description": "MongoDB global variables"
                },
                "nashorn": {
                    "type": "boolean",
                    "description": "Java 8 Nashorn global variables"
                },
                "node": {
                    "type": "boolean",
                    "description": "Node.js global variables and Node.js scoping"
                },
                "phantomjs": {
                    "type": "boolean",
                    "description": "PhantomJS global variables"
                },
                "prototypejs": {
                    "type": "boolean",
                    "description": "Prototype.js global variables"
                },
                "protractor": {
                    "type": "boolean",
                    "description": "Protractor global variables"
                },
                "qunit": {
                    "type": "boolean",
                    "description": "QUnit global variables"
                },
                "serviceworker": {
                    "type": "boolean",
                    "description": "Service Worker global variables"
                },
                "shelljs": {
                    "type": "boolean",
                    "description": "ShellJS global variables"
                },
                "webextensions": {
                    "type": "boolean",
                    "description": "WebExtensions globals"
                },
                "worker": {
                    "type": "boolean",
                    "description": "web workers global variables"
                }
            }
        },
        "extends": {
            "$ref": "#/definitions/stringOrStringArray",
            "description": "If you want to extend a specific configuration file, you can use the extends property and specify the path to the file. The path can be either relative or absolute."
        },
        "globals": {
            "description": "Set each global variable name equal to true to allow the variable to be overwritten or false to disallow overwriting.",
            "type": "object",
            "additionalProperties": {
                "oneOf": [
                    {
                        "type": "string",
                        "enum": ["readonly", "writable", "off"]
                    },
                    {
                        "description": "The values false|\"readable\" and true|\"writeable\" are deprecated, they are equivalent to \"readonly\" and \"writable\", respectively.",
                        "type": "boolean"
                    }
                ]
            }
        },
        "noInlineConfig": {
            "description": "Prevent comments from changing config or rules",
            "type": "boolean"
        },
        "reportUnusedDisableDirectives": {
            "description": "Report unused eslint-disable comments",
            "type": "boolean"
        },
        "parser": {
            "type": "string"
        },
        "parserOptions": {
            "description": "The JavaScript language options to be supported",
            "type": "object",
            "properties": {
                "ecmaFeatures": {
                    "$ref": "#/properties/ecmaFeatures"
                },
                "ecmaVersion": {
                    "enum": [
                        3,
                        5,
                        6,
                        2015,
                        7,
                        2016,
                        8,
                        2017,
                        9,
                        2018,
                        10,
                        2019,
                        11,
                        2020,
                        12,
                        2021,
                        13,
                        2022,
                        14,
                        2023,
                        15,
                        2024,
                        "latest"
                    ],
                    "default": 5,
                    "description": "Set to 3, 5 (default), 6, 7, 8, 9, 10, 11, 12, 13, 14, or 15 to specify the version of ECMAScript syntax you want to use. You can also set it to 2015 (same as 6), 2016 (same as 7), 2017 (same as 8), 2018 (same as 9), 2019 (same as 10), 2020 (same as 11), 2021 (same as 12), 2022 (same as 13), 2023 (same as 14), or 2024 (same as 15) to use the year-based naming. You can also set \"latest\" to use the most recently supported version."
                },
                "sourceType": {
                    "enum": ["script", "module", "commonjs"],
                    "default": "script",
                    "description": "set to \"script\" (default), \"commonjs\", or \"module\" if your code is in ECMAScript modules"
                }
            }
        },
        "plugins": {
            "description": "ESLint supports the use of third-party plugins. Before using the plugin, you have to install it using npm.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "root": {
            "description": "By default, ESLint will look for configuration files in all parent folders up to the root directory. This can be useful if you want all of your projects to follow a certain convention, but can sometimes lead to unexpected results. To limit ESLint to a specific project, set this to `true` in a configuration in the root of your project.",
            "type": "boolean"
        },
        "ignorePatterns": {
            "$ref": "#/definitions/stringOrStringArray",
            "description": "Tell ESLint to ignore specific files and directories. Each value uses the same pattern as the `.eslintignore` file."
        },
        "rules": {
            "description": "ESLint comes with a large number of rules. You can modify which rules your project uses either using configuration comments or configuration files.",
            "type": "object",
            "allOf": [
                {
                    "$ref": "#/definitions/possibleErrors"
                },
                {
                    "$ref": "#/definitions/bestPractices"
                },
                {
                    "$ref": "#/definitions/strictMode"
                },
                {
                    "$ref": "#/definitions/variables"
                },
                {
                    "$ref": "#/definitions/nodeAndCommonJs"
                },
                {
                    "$ref": "#/definitions/stylisticIssues"
                },
                {
                    "$ref": "#/definitions/ecmaScript6"
                },
                {
                    "$ref": "#/definitions/legacy"
                }
            ]
        },
        "settings": {
            "description": "ESLint supports adding shared settings into configuration file. You can add settings object to ESLint configuration file and it will be supplied to every rule that will be executed. This may be useful if you are adding custom rules and want them to have access to the same information and be easily configurable.",
            "type": "object"
        },
        "overrides": {
            "type": "array",
            "description": "Allows to override configuration for files and folders, specified by glob patterns",
            "items": {
                "type": "object",
                "properties": {
                    "files": {
                        "description": "Glob pattern for files to apply 'overrides' configuration, relative to the directory of the config file",
                        "oneOf": [
                            {
                                "type": "string"
                            },
                            {
                                "minItems": 1,
                                "type": "array",
                                "items": {
                                    "type": "string"
                                }
                            }
                        ]
                    },
                    "extends": {
                        "$ref": "#/definitions/stringOrStringArray",
                        "description": "If you want to extend a specific configuration file, you can use the extends property and specify the path to the file. The path can be either relative or absolute."
                    },
                    "excludedFiles": {
                        "$ref": "#/definitions/stringOrStringArray",
                        "description": "If a file matches any of the 'excludedFiles' glob patterns, the 'overrides' configuration won't apply"
                    },
                    "ecmaFeatures": {
                        "$ref": "#/properties/ecmaFeatures"
                    },
                    "env": {
                        "$ref": "#/properties/env"
                    },
                    "globals": {
                        "$ref": "#/properties/globals"
                    },
                    "parser": {
                        "$ref": "#/properties/parser"
                    },
                    "parserOptions": {
                        "$ref": "#/properties/parserOptions"
                    },
                    "plugins": {
                        "$ref": "#/properties/plugins"
                    },
                    "processor": {
                        "description": "To specify a processor, specify the plugin name and processor name joined by a forward slash",
                        "type": "string"
                    },
                    "rules": {
                        "$ref": "#/properties/rules"
                    },
                    "settings": {
                        "$ref": "#/properties/settings"
                    },
                    "overrides": {
                        "$ref": "#/properties/overrides"
                    }
                },
                "additionalProperties": false,
                "required": ["files"]
            }
        }
    },
    "title": "JSON schema for ESLint configuration files",
    "type": "object"
});
define("packages/project-generator-cli-js/lib/template-validator/schemas/packages", [], {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "https://json.schemastore.org/package.json",
    "title": "JSON schema for NPM package.json files",
    "definitions": {
        "person": {
            "description": "A person who has been involved in creating or maintaining this package.",
            "type": [
                "object",
                "string"
            ],
            "required": [
                "name"
            ],
            "properties": {
                "name": {
                    "type": "string"
                },
                "url": {
                    "type": "string",
                    "format": "uri"
                },
                "email": {
                    "type": "string",
                    "format": "email"
                }
            }
        },
        "dependency": {
            "description": "Dependencies are specified with a simple hash of package name to version range. The version range is a string which has one or more space-separated descriptors. Dependencies can also be identified with a tarball or git URL.",
            "type": "object",
            "additionalProperties": {
                "type": "string"
            }
        },
        "license": {
            "anyOf": [
                {
                    "type": "string"
                },
                {
                    "enum": [
                        "AGPL-3.0-only",
                        "Apache-2.0",
                        "BSD-2-Clause",
                        "BSD-3-Clause",
                        "BSL-1.0",
                        "CC0-1.0",
                        "CDDL-1.0",
                        "CDDL-1.1",
                        "EPL-1.0",
                        "EPL-2.0",
                        "GPL-2.0-only",
                        "GPL-3.0-only",
                        "ISC",
                        "LGPL-2.0-only",
                        "LGPL-2.1-only",
                        "LGPL-2.1-or-later",
                        "LGPL-3.0-only",
                        "LGPL-3.0-or-later",
                        "MIT",
                        "MPL-2.0",
                        "MS-PL",
                        "UNLICENSED"
                    ]
                }
            ]
        },
        "scriptsInstallAfter": {
            "description": "Run AFTER the package is installed.",
            "type": "string"
        },
        "scriptsPublishAfter": {
            "description": "Run AFTER the package is published.",
            "type": "string"
        },
        "scriptsRestart": {
            "description": "Run by the 'npm restart' command. Note: 'npm restart' will run the stop and start scripts if no restart script is provided.",
            "type": "string",
            "x-intellij-language-injection": "Shell Script"
        },
        "scriptsStart": {
            "description": "Run by the 'npm start' command.",
            "type": "string",
            "x-intellij-language-injection": "Shell Script"
        },
        "scriptsStop": {
            "description": "Run by the 'npm stop' command.",
            "type": "string",
            "x-intellij-language-injection": "Shell Script"
        },
        "scriptsTest": {
            "description": "Run by the 'npm test' command.",
            "type": "string",
            "x-intellij-language-injection": "Shell Script"
        },
        "scriptsUninstallBefore": {
            "description": "Run BEFORE the package is uninstalled.",
            "type": "string",
            "x-intellij-language-injection": "Shell Script"
        },
        "scriptsVersionBefore": {
            "description": "Run BEFORE bump the package version.",
            "type": "string",
            "x-intellij-language-injection": "Shell Script"
        },
        "packageExportsEntryPath": {
            "type": [
                "string",
                "null"
            ],
            "description": "The module path that is resolved when this specifier is imported. Set to `null` to disallow importing this module.",
            "pattern": "^\\./"
        },
        "packageExportsEntryObject": {
            "type": "object",
            "description": "Used to specify conditional exports, note that Conditional exports are unsupported in older environments, so it's recommended to use the fallback array option if support for those environments is a concern.",
            "properties": {
                "require": {
                    "$ref": "#/definitions/packageExportsEntryOrFallback",
                    "description": "The module path that is resolved when this specifier is imported as a CommonJS module using the `require(...)` function."
                },
                "import": {
                    "$ref": "#/definitions/packageExportsEntryOrFallback",
                    "description": "The module path that is resolved when this specifier is imported as an ECMAScript module using an `import` declaration or the dynamic `import(...)` function."
                },
                "node": {
                    "$ref": "#/definitions/packageExportsEntryOrFallback",
                    "description": "The module path that is resolved when this environment is Node.js."
                },
                "default": {
                    "$ref": "#/definitions/packageExportsEntryOrFallback",
                    "description": "The module path that is resolved when no other export type matches."
                },
                "types": {
                    "$ref": "#/definitions/packageExportsEntryOrFallback",
                    "description": "The module path that is resolved for TypeScript types when this specifier is imported. Should be listed before other conditions."
                }
            },
            "patternProperties": {
                "^[^.0-9]+$": {
                    "$ref": "#/definitions/packageExportsEntryOrFallback",
                    "description": "The module path that is resolved when this environment matches the property name."
                }
            },
            "additionalProperties": false
        },
        "packageExportsEntry": {
            "oneOf": [
                {
                    "$ref": "#/definitions/packageExportsEntryPath"
                },
                {
                    "$ref": "#/definitions/packageExportsEntryObject"
                }
            ]
        },
        "packageExportsFallback": {
            "type": "array",
            "description": "Used to allow fallbacks in case this environment doesn't support the preceding entries.",
            "items": {
                "$ref": "#/definitions/packageExportsEntry"
            }
        },
        "packageExportsEntryOrFallback": {
            "oneOf": [
                {
                    "$ref": "#/definitions/packageExportsEntry"
                },
                {
                    "$ref": "#/definitions/packageExportsFallback"
                }
            ]
        },
        "fundingUrl": {
            "type": "string",
            "format": "uri",
            "description": "URL to a website with details about how to fund the package."
        },
        "fundingWay": {
            "type": "object",
            "description": "Used to inform about ways to help fund development of the package.",
            "properties": {
                "url": {
                    "$ref": "#/definitions/fundingUrl"
                },
                "type": {
                    "type": "string",
                    "description": "The type of funding or the platform through which funding can be provided, e.g. patreon, opencollective, tidelift or github."
                }
            },
            "additionalProperties": false,
            "required": [
                "url"
            ]
        }
    },
    "type": "object",
    "patternProperties": {
        "^_": {
            "description": "Any property starting with _ is valid.",
            "tsType": "any"
        }
    },
    "properties": {
        "name": {
            "description": "The name of the package.",
            "type": "string",
            "maxLength": 214,
            "minLength": 1,
            "pattern": "^(?:(?:@(?:[a-z0-9-*~][a-z0-9-*._~]*)?/[a-z0-9-._~])|[a-z0-9-~])[a-z0-9-._~]*$"
        },
        "version": {
            "description": "Version must be parseable by node-semver, which is bundled with npm as a dependency.",
            "type": "string"
        },
        "description": {
            "description": "This helps people discover your package, as it's listed in 'npm search'.",
            "type": "string"
        },
        "keywords": {
            "description": "This helps people discover your package as it's listed in 'npm search'.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "homepage": {
            "description": "The url to the project homepage.",
            "type": "string"
        },
        "bugs": {
            "description": "The url to your project's issue tracker and / or the email address to which issues should be reported. These are helpful for people who encounter issues with your package.",
            "type": [
                "object",
                "string"
            ],
            "properties": {
                "url": {
                    "type": "string",
                    "description": "The url to your project's issue tracker.",
                    "format": "uri"
                },
                "email": {
                    "type": "string",
                    "description": "The email address to which issues should be reported.",
                    "format": "email"
                }
            }
        },
        "license": {
            "$ref": "#/definitions/license",
            "description": "You should specify a license for your package so that people know how they are permitted to use it, and any restrictions you're placing on it."
        },
        "licenses": {
            "description": "DEPRECATED: Instead, use SPDX expressions, like this: { \"license\": \"ISC\" } or { \"license\": \"(MIT OR Apache-2.0)\" } see: 'https://docs.npmjs.com/files/package.json#license'.",
            "type": "array",
            "items": {
                "type": "object",
                "properties": {
                    "type": {
                        "$ref": "#/definitions/license"
                    },
                    "url": {
                        "type": "string",
                        "format": "uri"
                    }
                }
            }
        },
        "author": {
            "$ref": "#/definitions/person"
        },
        "contributors": {
            "description": "A list of people who contributed to this package.",
            "type": "array",
            "items": {
                "$ref": "#/definitions/person"
            }
        },
        "maintainers": {
            "description": "A list of people who maintains this package.",
            "type": "array",
            "items": {
                "$ref": "#/definitions/person"
            }
        },
        "files": {
            "description": "The 'files' field is an array of files to include in your project. If you name a folder in the array, then it will also include the files inside that folder.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "main": {
            "description": "The main field is a module ID that is the primary entry point to your program.",
            "type": "string"
        },
        "exports": {
            "description": "The \"exports\" field is used to restrict external access to non-exported module files, also enables a module to import itself using \"name\".",
            "oneOf": [
                {
                    "$ref": "#/definitions/packageExportsEntryPath",
                    "description": "The module path that is resolved when the module specifier matches \"name\", shadows the \"main\" field."
                },
                {
                    "type": "object",
                    "properties": {
                        ".": {
                            "$ref": "#/definitions/packageExportsEntryOrFallback",
                            "description": "The module path that is resolved when the module specifier matches \"name\", shadows the \"main\" field."
                        }
                    },
                    "patternProperties": {
                        "^\\./.+": {
                            "$ref": "#/definitions/packageExportsEntryOrFallback",
                            "description": "The module path prefix that is resolved when the module specifier starts with \"name/\", set to \"./*\" to allow external modules to import any subpath."
                        }
                    },
                    "additionalProperties": false
                },
                {
                    "$ref": "#/definitions/packageExportsEntryObject",
                    "description": "The module path that is resolved when the module specifier matches \"name\", shadows the \"main\" field."
                },
                {
                    "$ref": "#/definitions/packageExportsFallback",
                    "description": "The module path that is resolved when the module specifier matches \"name\", shadows the \"main\" field."
                }
            ]
        },
        "bin": {
            "type": [
                "string",
                "object"
            ],
            "additionalProperties": {
                "type": "string"
            }
        },
        "type": {
            "description": "When set to \"module\", the type field allows a package to specify all .js files within are ES modules. If the \"type\" field is omitted or set to \"commonjs\", all .js files are treated as CommonJS.",
            "type": "string",
            "enum": [
                "commonjs",
                "module"
            ],
            "default": "commonjs"
        },
        "types": {
            "description": "Set the types property to point to your bundled declaration file.",
            "type": "string"
        },
        "typings": {
            "description": "Note that the \"typings\" field is synonymous with \"types\", and could be used as well.",
            "type": "string"
        },
        "typesVersions": {
            "description": "The \"typesVersions\" field is used since TypeScript 3.1 to support features that were only made available in newer TypeScript versions.",
            "type": "object",
            "additionalProperties": {
                "description": "Contains overrides for the TypeScript version that matches the version range matching the property key.",
                "type": "object",
                "properties": {
                    "*": {
                        "description": "Maps all file paths to the file paths specified in the array.",
                        "type": "array",
                        "items": {
                            "type": "string",
                            "pattern": "^[^*]*(?:\\*[^*]*)?$"
                        }
                    }
                },
                "patternProperties": {
                    "^[^*]+$": {
                        "description": "Maps the file path matching the property key to the file paths specified in the array.",
                        "type": "array",
                        "items": {
                            "type": "string"
                        }
                    },
                    "^[^*]*\\*[^*]*$": {
                        "description": "Maps file paths matching the pattern specified in property key to file paths specified in the array.",
                        "type": "array",
                        "items": {
                            "type": "string",
                            "pattern": "^[^*]*(?:\\*[^*]*)?$"
                        }
                    }
                },
                "additionalProperties": false
            }
        },
        "man": {
            "type": [
                "array",
                "string"
            ],
            "description": "Specify either a single file or an array of filenames to put in place for the man program to find.",
            "items": {
                "type": "string"
            }
        },
        "directories": {
            "type": "object",
            "properties": {
                "bin": {
                    "description": "If you specify a 'bin' directory, then all the files in that folder will be used as the 'bin' hash.",
                    "type": "string"
                },
                "doc": {
                    "description": "Put markdown files in here. Eventually, these will be displayed nicely, maybe, someday.",
                    "type": "string"
                },
                "example": {
                    "description": "Put example scripts in here. Someday, it might be exposed in some clever way.",
                    "type": "string"
                },
                "lib": {
                    "description": "Tell people where the bulk of your library is. Nothing special is done with the lib folder in any way, but it's useful meta info.",
                    "type": "string"
                },
                "man": {
                    "description": "A folder that is full of man pages. Sugar to generate a 'man' array by walking the folder.",
                    "type": "string"
                },
                "test": {
                    "type": "string"
                }
            }
        },
        "repository": {
            "description": "Specify the place where your code lives. This is helpful for people who want to contribute.",
            "type": [
                "object",
                "string"
            ],
            "properties": {
                "type": {
                    "type": "string"
                },
                "url": {
                    "type": "string"
                },
                "directory": {
                    "type": "string"
                }
            }
        },
        "funding": {
            "oneOf": [
                {
                    "$ref": "#/definitions/fundingUrl"
                },
                {
                    "$ref": "#/definitions/fundingWay"
                },
                {
                    "type": "array",
                    "items": {
                        "oneOf": [
                            {
                                "$ref": "#/definitions/fundingUrl"
                            },
                            {
                                "$ref": "#/definitions/fundingWay"
                            }
                        ]
                    },
                    "minItems": 1,
                    "uniqueItems": true
                }
            ]
        },
        "scripts": {
            "description": "The 'scripts' member is an object hash of script commands that are run at various times in the lifecycle of your package. The key is the lifecycle event, and the value is the command to run at that point.",
            "type": "object",
            "properties": {
                "lint": {
                    "type": "string",
                    "description": "Run code quality tools, e.g. ESLint, TSLint, etc."
                },
                "prepublish": {
                    "type": "string",
                    "description": "Run BEFORE the package is published (Also run on local npm install without any arguments)."
                },
                "prepare": {
                    "type": "string",
                    "description": "Run both BEFORE the package is packed and published, and on local npm install without any arguments. This is run AFTER prepublish, but BEFORE prepublishOnly."
                },
                "prepublishOnly": {
                    "type": "string",
                    "description": "Run BEFORE the package is prepared and packed, ONLY on npm publish."
                },
                "prepack": {
                    "type": "string",
                    "description": "run BEFORE a tarball is packed (on npm pack, npm publish, and when installing git dependencies)."
                },
                "postpack": {
                    "type": "string",
                    "description": "Run AFTER the tarball has been generated and moved to its final destination."
                },
                "publish": {
                    "type": "string",
                    "description": "Publishes a package to the registry so that it can be installed by name. See https://docs.npmjs.com/cli/v8/commands/npm-publish"
                },
                "postpublish": {
                    "$ref": "#/definitions/scriptsPublishAfter"
                },
                "preinstall": {
                    "type": "string",
                    "description": "Run BEFORE the package is installed."
                },
                "install": {
                    "$ref": "#/definitions/scriptsInstallAfter"
                },
                "postinstall": {
                    "$ref": "#/definitions/scriptsInstallAfter"
                },
                "preuninstall": {
                    "$ref": "#/definitions/scriptsUninstallBefore"
                },
                "uninstall": {
                    "$ref": "#/definitions/scriptsUninstallBefore"
                },
                "postuninstall": {
                    "type": "string",
                    "description": "Run AFTER the package is uninstalled."
                },
                "preversion": {
                    "$ref": "#/definitions/scriptsVersionBefore"
                },
                "version": {
                    "$ref": "#/definitions/scriptsVersionBefore"
                },
                "postversion": {
                    "type": "string",
                    "description": "Run AFTER bump the package version."
                },
                "pretest": {
                    "$ref": "#/definitions/scriptsTest"
                },
                "test": {
                    "$ref": "#/definitions/scriptsTest"
                },
                "posttest": {
                    "$ref": "#/definitions/scriptsTest"
                },
                "prestop": {
                    "$ref": "#/definitions/scriptsStop"
                },
                "stop": {
                    "$ref": "#/definitions/scriptsStop"
                },
                "poststop": {
                    "$ref": "#/definitions/scriptsStop"
                },
                "prestart": {
                    "$ref": "#/definitions/scriptsStart"
                },
                "start": {
                    "$ref": "#/definitions/scriptsStart"
                },
                "poststart": {
                    "$ref": "#/definitions/scriptsStart"
                },
                "prerestart": {
                    "$ref": "#/definitions/scriptsRestart"
                },
                "restart": {
                    "$ref": "#/definitions/scriptsRestart"
                },
                "postrestart": {
                    "$ref": "#/definitions/scriptsRestart"
                },
                "serve": {
                    "type": "string",
                    "description": "Start dev server to serve application files"
                }
            },
            "additionalProperties": {
                "type": "string",
                "tsType": "string | undefined",
                "x-intellij-language-injection": "Shell Script"
            }
        },
        "config": {
            "description": "A 'config' hash can be used to set configuration parameters used in package scripts that persist across upgrades.",
            "type": "object",
            "additionalProperties": true
        },
        "dependencies": {
            "$ref": "#/definitions/dependency"
        },
        "devDependencies": {
            "$ref": "#/definitions/dependency"
        },
        "optionalDependencies": {
            "$ref": "#/definitions/dependency"
        },
        "peerDependencies": {
            "$ref": "#/definitions/dependency"
        },
        "peerDependenciesMeta": {
            "description": "When a user installs your package, warnings are emitted if packages specified in \"peerDependencies\" are not already installed. The \"peerDependenciesMeta\" field serves to provide more information on how your peer dependencies are utilized. Most commonly, it allows peer dependencies to be marked as optional. Metadata for this field is specified with a simple hash of the package name to a metadata object.",
            "type": "object",
            "additionalProperties": {
                "type": "object",
                "additionalProperties": true,
                "properties": {
                    "optional": {
                        "description": "Specifies that this peer dependency is optional and should not be installed automatically.",
                        "type": "boolean"
                    }
                }
            }
        },
        "bundleDependencies": {
            "description": "Array of package names that will be bundled when publishing the package.",
            "oneOf": [
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                {
                    "type": "boolean"
                }
            ]
        },
        "bundledDependencies": {
            "description": "DEPRECATED: This field is honored, but \"bundleDependencies\" is the correct field name.",
            "oneOf": [
                {
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                {
                    "type": "boolean"
                }
            ]
        },
        "resolutions": {
            "description": "Resolutions is used to support selective version resolutions using yarn, which lets you define custom package versions or ranges inside your dependencies. For npm, use overrides instead. See: https://classic.yarnpkg.com/en/docs/selective-version-resolutions",
            "type": "object"
        },
        "overrides": {
            "description": "Overrides is used to support selective version overrides using npm, which lets you define custom package versions or ranges inside your dependencies. For yarn, use resolutions instead. See: https://docs.npmjs.com/cli/v9/configuring-npm/package-json#overrides",
            "type": "object"
        },
        "packageManager": {
            "description": "Defines which package manager is expected to be used when working on the current project. This field is currently experimental and needs to be opted-in; see https://nodejs.org/api/corepack.html",
            "type": "string",
            "pattern": "(npm|pnpm|yarn|bun)@\\d+\\.\\d+\\.\\d+(-.+)?"
        },
        "engines": {
            "type": "object",
            "properties": {
                "node": {
                    "type": "string"
                }
            },
            "additionalProperties": {
                "type": "string"
            }
        },
        "volta": {
            "description": "Defines which tools and versions are expected to be used when Volta is installed.",
            "type": "object",
            "properties": {
                "extends": {
                    "description": "The value of that entry should be a path to another JSON file which also has a \"volta\" section",
                    "type": "string"
                }
            },
            "patternProperties": {
                "(node|npm|pnpm|yarn)": {
                    "type": "string"
                }
            }
        },
        "engineStrict": {
            "type": "boolean"
        },
        "os": {
            "description": "Specify which operating systems your module will run on.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "cpu": {
            "description": "Specify that your code only runs on certain cpu architectures.",
            "type": "array",
            "items": {
                "type": "string"
            }
        },
        "preferGlobal": {
            "type": "boolean",
            "description": "DEPRECATED: This option used to trigger an npm warning, but it will no longer warn. It is purely there for informational purposes. It is now recommended that you install any binaries as local devDependencies wherever possible."
        },
        "private": {
            "description": "If set to true, then npm will refuse to publish it.",
            "oneOf": [
                {
                    "type": "boolean"
                },
                {
                    "enum": [
                        "false",
                        "true"
                    ]
                }
            ]
        },
        "publishConfig": {
            "type": "object",
            "properties": {
                "access": {
                    "type": "string",
                    "enum": [
                        "public",
                        "restricted"
                    ]
                },
                "tag": {
                    "type": "string"
                },
                "registry": {
                    "type": "string",
                    "format": "uri"
                },
                "provenance": {
                    "type": "boolean"
                }
            },
            "additionalProperties": true
        },
        "dist": {
            "type": "object",
            "properties": {
                "shasum": {
                    "type": "string"
                },
                "tarball": {
                    "type": "string"
                }
            }
        },
        "readme": {
            "type": "string"
        },
        "module": {
            "description": "An ECMAScript module ID that is the primary entry point to your program.",
            "type": "string"
        },
        "esnext": {
            "description": "A module ID with untranspiled code that is the primary entry point to your program.",
            "type": [
                "string",
                "object"
            ],
            "properties": {
                "main": {
                    "type": "string"
                },
                "browser": {
                    "type": "string"
                }
            },
            "additionalProperties": {
                "type": "string"
            }
        },
        "workspaces": {
            "description": "Allows packages within a directory to depend on one another using direct linking of local files. Additionally, dependencies within a workspace are hoisted to the workspace root when possible to reduce duplication. Note: It's also a good idea to set \"private\" to true when using this feature.",
            "anyOf": [
                {
                    "type": "array",
                    "description": "Workspace package paths. Glob patterns are supported.",
                    "items": {
                        "type": "string"
                    }
                },
                {
                    "type": "object",
                    "properties": {
                        "packages": {
                            "type": "array",
                            "description": "Workspace package paths. Glob patterns are supported.",
                            "items": {
                                "type": "string"
                            }
                        },
                        "nohoist": {
                            "type": "array",
                            "description": "Packages to block from hoisting to the workspace root. Currently only supported in Yarn only.",
                            "items": {
                                "type": "string"
                            }
                        }
                    }
                }
            ]
        }
    },
    "anyOf": [
        {
            "type": "object",
            "not": {
                "required": [
                    "bundledDependencies",
                    "bundleDependencies"
                ]
            }
        },
        {
            "type": "object",
            "not": {
                "required": [
                    "bundleDependencies"
                ]
            },
            "required": [
                "bundledDependencies"
            ]
        },
        {
            "type": "object",
            "not": {
                "required": [
                    "bundledDependencies"
                ]
            },
            "required": [
                "bundleDependencies"
            ]
        }
    ]
});
define("packages/project-generator-cli-js/lib/template-validator/schemas/template", [], {
    "$schema": "http://json-schema.org/draft-07/schema",
    "title": "Валидатор template.json",
    "description": "Валидация полей для генерации проекта",
    "type": "object",
    "properties": {
        "projects": {
            "description": "package.json-ы проекта (название может включать путь)",
            "type": "object",
            "additionalProperties": {
                "$ref": "https://json.schemastore.org/package.json"
            }
        },
        "configs": {
            "description": "Конфиги проекта (название может включать путь)",
            "type": "object",
            "oneOf": [
                {
                    "description": "Конфиг eslint",
                    "type": "array",
                    "items": {
                        "type": "string"
                    }
                },
                {
                    "description": "Конфиг typescript",
                    "$ref": "https://json.schemastore.org/tsconfig"
                }
            ]
        },
        "fileStructure": {
            "description": "Название библиотеки, из которой берется структура проекта",
            "type": "string"
        },
        "builder": {
            "description": "Название сборшика проекта",
            "type": "string",
            "pattern": "esbuild|vite"
        }
    },
    "required": ["projects", "configs"]
});
define("packages/project-generator-cli-js/lib/template-validator/schemas/typescript", [], {
    "$schema": "http://json-schema.org/draft-07/schema#",
    "$id": "https://json.schemastore.org/tsconfig",
    "allowTrailingCommas": true,
    "allOf": [
        {
            "$ref": "#/definitions/compilerOptionsDefinition"
        },
        {
            "$ref": "#/definitions/compileOnSaveDefinition"
        },
        {
            "$ref": "#/definitions/typeAcquisitionDefinition"
        },
        {
            "$ref": "#/definitions/extendsDefinition"
        },
        {
            "$ref": "#/definitions/watchOptionsDefinition"
        },
        {
            "$ref": "#/definitions/buildOptionsDefinition"
        },
        {
            "$ref": "#/definitions/tsNodeDefinition"
        },
        {
            "anyOf": [
                {
                    "$ref": "#/definitions/filesDefinition"
                },
                {
                    "$ref": "#/definitions/excludeDefinition"
                },
                {
                    "$ref": "#/definitions/includeDefinition"
                },
                {
                    "$ref": "#/definitions/referencesDefinition"
                }
            ]
        }
    ],
    "definitions": {
        "//": {
            "explainer": "https://www.typescriptlang.org/docs/handbook/tsconfig-json.html#overview",
            "reference": "https://www.typescriptlang.org/tsconfig",
            "reference metadata": "https://github.com/microsoft/TypeScript-Website/blob/v2/packages/tsconfig-reference/scripts/tsconfigRules.ts"
        },
        "filesDefinition": {
            "properties": {
                "files": {
                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                    "description": "If no 'files' or 'include' property is present in a tsconfig.json, the compiler defaults to including all files in the containing directory and subdirectories except those specified by 'exclude'. When a 'files' property is specified, only those files and those specified by 'include' are included.",
                    "type": ["array", "null"],
                    "uniqueItems": true,
                    "items": {
                        "type": ["string", "null"]
                    }
                }
            }
        },
        "excludeDefinition": {
            "properties": {
                "exclude": {
                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                    "description": "Specifies a list of files to be excluded from compilation. The 'exclude' property only affects the files included via the 'include' property and not the 'files' property. Glob patterns require TypeScript version 2.0 or later.",
                    "type": ["array", "null"],
                    "uniqueItems": true,
                    "items": {
                        "type": ["string", "null"]
                    }
                }
            }
        },
        "includeDefinition": {
            "properties": {
                "include": {
                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                    "description": "Specifies a list of glob patterns that match files to be included in compilation. If no 'files' or 'include' property is present in a tsconfig.json, the compiler defaults to including all files in the containing directory and subdirectories except those specified by 'exclude'. Requires TypeScript version 2.0 or later.",
                    "type": ["array", "null"],
                    "uniqueItems": true,
                    "items": {
                        "type": ["string", "null"]
                    }
                }
            }
        },
        "compileOnSaveDefinition": {
            "properties": {
                "compileOnSave": {
                    "description": "Enable Compile-on-Save for this project.",
                    "type": ["boolean", "null"]
                }
            }
        },
        "extendsDefinition": {
            "properties": {
                "extends": {
                    "description": "Path to base configuration file to inherit from (requires TypeScript version 2.1 or later), or array of base files, with the rightmost files having the greater priority (requires TypeScript version 5.0 or later).",
                    "oneOf": [
                        {
                            "default": "",
                            "type": "string"
                        },
                        {
                            "default": [],
                            "items": {
                                "type": "string"
                            },
                            "type": "array"
                        }
                    ]
                }
            }
        },
        "buildOptionsDefinition": {
            "properties": {
                "buildOptions": {
                    "properties": {
                        "dry": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "~",
                            "type": ["boolean", "null"],
                            "default": false
                        },
                        "force": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Build all projects, including those that appear to be up to date",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Build all projects, including those that appear to be up to date\n\nSee more: https://www.typescriptlang.org/tsconfig#force"
                        },
                        "verbose": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable verbose logging",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Enable verbose logging\n\nSee more: https://www.typescriptlang.org/tsconfig#verbose"
                        },
                        "incremental": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Save .tsbuildinfo files to allow for incremental compilation of projects.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Save .tsbuildinfo files to allow for incremental compilation of projects.\n\nSee more: https://www.typescriptlang.org/tsconfig#incremental"
                        },
                        "assumeChangesOnlyAffectDirectDependencies": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Have recompiles in projects that use `incremental` and `watch` mode assume that changes within a file will only affect files directly depending on it.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Have recompiles in projects that use `incremental` and `watch` mode assume that changes within a file will only affect files directly depending on it.\n\nSee more: https://www.typescriptlang.org/tsconfig#assumeChangesOnlyAffectDirectDependencies"
                        },
                        "traceResolution": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Log paths used during the `moduleResolution` process.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Log paths used during the `moduleResolution` process.\n\nSee more: https://www.typescriptlang.org/tsconfig#traceResolution"
                        }
                    }
                }
            }
        },
        "watchOptionsDefinition": {
            "properties": {
                "watchOptions": {
                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                    "type": ["object", "null"],
                    "description": "Settings for the watch mode in TypeScript.",
                    "properties": {
                        "force": {
                            "description": "~",
                            "type": ["string", "null"]
                        },
                        "watchFile": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify how the TypeScript watch mode works.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify how the TypeScript watch mode works.\n\nSee more: https://www.typescriptlang.org/tsconfig#watchFile"
                        },
                        "watchDirectory": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify how directories are watched on systems that lack recursive file-watching functionality.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify how directories are watched on systems that lack recursive file-watching functionality.\n\nSee more: https://www.typescriptlang.org/tsconfig#watchDirectory"
                        },
                        "fallbackPolling": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify what approach the watcher should use if the system runs out of native file watchers.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify what approach the watcher should use if the system runs out of native file watchers.\n\nSee more: https://www.typescriptlang.org/tsconfig#fallbackPolling"
                        },
                        "synchronousWatchDirectory": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Synchronously call callbacks and update the state of directory watchers on platforms that don`t support recursive watching natively.\n\nSee more: https://www.typescriptlang.org/tsconfig#synchronousWatchDirectory"
                        },
                        "excludeFiles": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Remove a list of files from the watch mode's processing.",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            },
                            "markdownDescription": "Remove a list of files from the watch mode's processing.\n\nSee more: https://www.typescriptlang.org/tsconfig#excludeFiles"
                        },
                        "excludeDirectories": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Remove a list of directories from the watch process.",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            },
                            "markdownDescription": "Remove a list of directories from the watch process.\n\nSee more: https://www.typescriptlang.org/tsconfig#excludeDirectories"
                        }
                    }
                }
            }
        },
        "compilerOptionsDefinition": {
            "properties": {
                "compilerOptions": {
                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                    "type": ["object", "null"],
                    "description": "Instructs the TypeScript compiler how to compile .ts files.",
                    "properties": {
                        "allowArbitraryExtensions": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable importing files with any extension, provided a declaration file is present.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Enable importing files with any extension, provided a declaration file is present.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowArbitraryExtensions"
                        },
                        "allowImportingTsExtensions": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Allow imports to include TypeScript file extensions. Requires '--moduleResolution bundler' and either '--noEmit' or '--emitDeclarationOnly' to be set.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowImportingTsExtensions"
                        },
                        "charset": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "No longer supported. In early versions, manually set the text encoding for reading files.",
                            "type": ["string", "null"],
                            "markdownDescription": "No longer supported. In early versions, manually set the text encoding for reading files.\n\nSee more: https://www.typescriptlang.org/tsconfig#charset"
                        },
                        "composite": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable constraints that allow a TypeScript project to be used with project references.",
                            "type": ["boolean", "null"],
                            "default": true,
                            "markdownDescription": "Enable constraints that allow a TypeScript project to be used with project references.\n\nSee more: https://www.typescriptlang.org/tsconfig#composite"
                        },
                        "customConditions": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Conditions to set in addition to the resolver-specific defaults when resolving imports.",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            },
                            "markdownDescription": "Conditions to set in addition to the resolver-specific defaults when resolving imports.\n\nSee more: https://www.typescriptlang.org/tsconfig#customConditions"
                        },
                        "declaration": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Generate .d.ts files from TypeScript and JavaScript files in your project.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Generate .d.ts files from TypeScript and JavaScript files in your project.\n\nSee more: https://www.typescriptlang.org/tsconfig#declaration"
                        },
                        "declarationDir": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the output directory for generated declaration files.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify the output directory for generated declaration files.\n\nSee more: https://www.typescriptlang.org/tsconfig#declarationDir"
                        },
                        "diagnostics": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Output compiler performance information after building.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Output compiler performance information after building.\n\nSee more: https://www.typescriptlang.org/tsconfig#diagnostics"
                        },
                        "disableReferencedProjectLoad": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Reduce the number of projects loaded automatically by TypeScript.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Reduce the number of projects loaded automatically by TypeScript.\n\nSee more: https://www.typescriptlang.org/tsconfig#disableReferencedProjectLoad"
                        },
                        "noPropertyAccessFromIndexSignature": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enforces using indexed accessors for keys declared using an indexed type",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Enforces using indexed accessors for keys declared using an indexed type\n\nSee more: https://www.typescriptlang.org/tsconfig#noPropertyAccessFromIndexSignature"
                        },
                        "emitBOM": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files.\n\nSee more: https://www.typescriptlang.org/tsconfig#emitBOM"
                        },
                        "emitDeclarationOnly": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Only output d.ts files and not JavaScript files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Only output d.ts files and not JavaScript files.\n\nSee more: https://www.typescriptlang.org/tsconfig#emitDeclarationOnly"
                        },
                        "exactOptionalPropertyTypes": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Differentiate between undefined and not present when type checking",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Differentiate between undefined and not present when type checking\n\nSee more: https://www.typescriptlang.org/tsconfig#exactOptionalPropertyTypes"
                        },
                        "incremental": {
                            "description": "Enable incremental compilation. Requires TypeScript version 3.4 or later.",
                            "type": ["boolean", "null"]
                        },
                        "tsBuildInfoFile": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the folder for .tsbuildinfo incremental compilation files.",
                            "default": ".tsbuildinfo",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify the folder for .tsbuildinfo incremental compilation files.\n\nSee more: https://www.typescriptlang.org/tsconfig#tsBuildInfoFile"
                        },
                        "inlineSourceMap": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Include sourcemap files inside the emitted JavaScript.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Include sourcemap files inside the emitted JavaScript.\n\nSee more: https://www.typescriptlang.org/tsconfig#inlineSourceMap"
                        },
                        "inlineSources": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Include source code in the sourcemaps inside the emitted JavaScript.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Include source code in the sourcemaps inside the emitted JavaScript.\n\nSee more: https://www.typescriptlang.org/tsconfig#inlineSources"
                        },
                        "jsx": {
                            "description": "Specify what JSX code is generated.",
                            "enum": [
                                "preserve",
                                "react",
                                "react-jsx",
                                "react-jsxdev",
                                "react-native"
                            ]
                        },
                        "reactNamespace": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit.",
                            "type": ["string", "null"],
                            "default": "React",
                            "markdownDescription": "Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit.\n\nSee more: https://www.typescriptlang.org/tsconfig#reactNamespace"
                        },
                        "jsxFactory": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'",
                            "type": ["string", "null"],
                            "default": "React.createElement",
                            "markdownDescription": "Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h'\n\nSee more: https://www.typescriptlang.org/tsconfig#jsxFactory"
                        },
                        "jsxFragmentFactory": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.",
                            "type": ["string", "null"],
                            "default": "React.Fragment",
                            "markdownDescription": "Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'.\n\nSee more: https://www.typescriptlang.org/tsconfig#jsxFragmentFactory"
                        },
                        "jsxImportSource": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx`.",
                            "type": ["string", "null"],
                            "default": "react",
                            "markdownDescription": "Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx`.\n\nSee more: https://www.typescriptlang.org/tsconfig#jsxImportSource"
                        },
                        "listFiles": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Print all of the files read during the compilation.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Print all of the files read during the compilation.\n\nSee more: https://www.typescriptlang.org/tsconfig#listFiles"
                        },
                        "mapRoot": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the location where debugger should locate map files instead of generated locations.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify the location where debugger should locate map files instead of generated locations.\n\nSee more: https://www.typescriptlang.org/tsconfig#mapRoot"
                        },
                        "module": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify what module code is generated.",
                            "type": ["string", "null"],
                            "anyOf": [
                                {
                                    "enum": [
                                        "CommonJS",
                                        "AMD",
                                        "System",
                                        "UMD",
                                        "ES6",
                                        "ES2015",
                                        "ES2020",
                                        "ESNext",
                                        "None",
                                        "ES2022",
                                        "Node16",
                                        "NodeNext",
                                        "Preserve"
                                    ]
                                },
                                {
                                    "pattern": "^([Cc][Oo][Mm][Mm][Oo][Nn][Jj][Ss]|[AaUu][Mm][Dd]|[Ss][Yy][Ss][Tt][Ee][Mm]|[Ee][Ss]([356]|20(1[567]|2[02])|[Nn][Ee][Xx][Tt])|[Nn][Oo][dD][Ee]16|[Nn][Oo][Dd][Ee][Nn][Ee][Xx][Tt]|[Nn][Oo][Nn][Ee]|[Pp][Rr][Ee][Ss][Ee][Rr][Vv][Ee])$"
                                }
                            ],
                            "markdownDescription": "Specify what module code is generated.\n\nSee more: https://www.typescriptlang.org/tsconfig#module"
                        },
                        "moduleResolution": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify how TypeScript looks up a file from a given module specifier.",
                            "type": ["string", "null"],
                            "anyOf": [
                                {
                                    "enum": [
                                        "classic",
                                        "node",
                                        "node10",
                                        "node16",
                                        "nodenext",
                                        "bundler"
                                    ],
                                    "markdownEnumDescriptions": [
                                        "It’s recommended to use `\"node16\"` instead",
                                        "Deprecated, use `\"node10\"` in TypeScript 5.0+ instead",
                                        "It’s recommended to use `\"node16\"` instead",
                                        "This is the recommended setting for libraries and Node.js applications",
                                        "This is the recommended setting for libraries and Node.js applications",
                                        "This is the recommended setting in TypeScript 5.0+ for applications that use a bundler"
                                    ]
                                },
                                {
                                    "pattern": "^(([Nn]ode)|([Nn]ode1[06])|([Nn]ode[Nn]ext)|([Cc]lassic)|([Bb]undler))$"
                                }
                            ],
                            "markdownDescription": "Specify how TypeScript looks up a file from a given module specifier.\n\nSee more: https://www.typescriptlang.org/tsconfig#moduleResolution"
                        },
                        "newLine": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Set the newline character for emitting files.",
                            "type": ["string", "null"],
                            "anyOf": [
                                {
                                    "enum": ["crlf", "lf"]
                                },
                                {
                                    "pattern": "^(CRLF|LF|crlf|lf)$"
                                }
                            ],
                            "markdownDescription": "Set the newline character for emitting files.\n\nSee more: https://www.typescriptlang.org/tsconfig#newLine"
                        },
                        "noEmit": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable emitting file from a compilation.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable emitting file from a compilation.\n\nSee more: https://www.typescriptlang.org/tsconfig#noEmit"
                        },
                        "noEmitHelpers": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable generating custom helper functions like `__extends` in compiled output.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable generating custom helper functions like `__extends` in compiled output.\n\nSee more: https://www.typescriptlang.org/tsconfig#noEmitHelpers"
                        },
                        "noEmitOnError": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable emitting files if any type checking errors are reported.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable emitting files if any type checking errors are reported.\n\nSee more: https://www.typescriptlang.org/tsconfig#noEmitOnError"
                        },
                        "noImplicitAny": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable error reporting for expressions and declarations with an implied `any` type..",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Enable error reporting for expressions and declarations with an implied `any` type..\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitAny"
                        },
                        "noImplicitThis": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable error reporting when `this` is given the type `any`.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Enable error reporting when `this` is given the type `any`.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitThis"
                        },
                        "noUnusedLocals": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable error reporting when a local variable isn't read.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Enable error reporting when a local variable isn't read.\n\nSee more: https://www.typescriptlang.org/tsconfig#noUnusedLocals"
                        },
                        "noUnusedParameters": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Raise an error when a function parameter isn't read",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Raise an error when a function parameter isn't read\n\nSee more: https://www.typescriptlang.org/tsconfig#noUnusedParameters"
                        },
                        "noLib": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable including any library files, including the default lib.d.ts.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable including any library files, including the default lib.d.ts.\n\nSee more: https://www.typescriptlang.org/tsconfig#noLib"
                        },
                        "noResolve": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disallow `import`s, `require`s or `<reference>`s from expanding the number of files TypeScript should add to a project.\n\nSee more: https://www.typescriptlang.org/tsconfig#noResolve"
                        },
                        "noStrictGenericChecks": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable strict checking of generic signatures in function types.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable strict checking of generic signatures in function types.\n\nSee more: https://www.typescriptlang.org/tsconfig#noStrictGenericChecks"
                        },
                        "skipDefaultLibCheck": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Skip type checking .d.ts files that are included with TypeScript.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Skip type checking .d.ts files that are included with TypeScript.\n\nSee more: https://www.typescriptlang.org/tsconfig#skipDefaultLibCheck"
                        },
                        "skipLibCheck": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Skip type checking all .d.ts files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Skip type checking all .d.ts files.\n\nSee more: https://www.typescriptlang.org/tsconfig#skipLibCheck"
                        },
                        "outFile": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output.\n\nSee more: https://www.typescriptlang.org/tsconfig#outFile"
                        },
                        "outDir": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify an output folder for all emitted files.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify an output folder for all emitted files.\n\nSee more: https://www.typescriptlang.org/tsconfig#outDir"
                        },
                        "preserveConstEnums": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable erasing `const enum` declarations in generated code.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable erasing `const enum` declarations in generated code.\n\nSee more: https://www.typescriptlang.org/tsconfig#preserveConstEnums"
                        },
                        "preserveSymlinks": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable resolving symlinks to their realpath. This correlates to the same flag in node.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable resolving symlinks to their realpath. This correlates to the same flag in node.\n\nSee more: https://www.typescriptlang.org/tsconfig#preserveSymlinks"
                        },
                        "preserveValueImports": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Preserve unused imported values in the JavaScript output that would otherwise be removed",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Preserve unused imported values in the JavaScript output that would otherwise be removed\n\nSee more: https://www.typescriptlang.org/tsconfig#preserveValueImports"
                        },
                        "preserveWatchOutput": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable wiping the console in watch mode",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Disable wiping the console in watch mode\n\nSee more: https://www.typescriptlang.org/tsconfig#preserveWatchOutput"
                        },
                        "pretty": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable color and formatting in output to make compiler errors easier to read",
                            "type": ["boolean", "null"],
                            "default": true,
                            "markdownDescription": "Enable color and formatting in output to make compiler errors easier to read\n\nSee more: https://www.typescriptlang.org/tsconfig#pretty"
                        },
                        "removeComments": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable emitting comments.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable emitting comments.\n\nSee more: https://www.typescriptlang.org/tsconfig#removeComments"
                        },
                        "rootDir": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the root folder within your source files.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify the root folder within your source files.\n\nSee more: https://www.typescriptlang.org/tsconfig#rootDir"
                        },
                        "isolatedModules": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Ensure that each file can be safely transpiled without relying on other imports.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Ensure that each file can be safely transpiled without relying on other imports.\n\nSee more: https://www.typescriptlang.org/tsconfig#isolatedModules"
                        },
                        "sourceMap": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Create source map files for emitted JavaScript files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Create source map files for emitted JavaScript files.\n\nSee more: https://www.typescriptlang.org/tsconfig#sourceMap"
                        },
                        "sourceRoot": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the root path for debuggers to find the reference source code.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify the root path for debuggers to find the reference source code.\n\nSee more: https://www.typescriptlang.org/tsconfig#sourceRoot"
                        },
                        "suppressExcessPropertyErrors": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable reporting of excess property errors during the creation of object literals.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable reporting of excess property errors during the creation of object literals.\n\nSee more: https://www.typescriptlang.org/tsconfig#suppressExcessPropertyErrors"
                        },
                        "suppressImplicitAnyIndexErrors": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Suppress `noImplicitAny` errors when indexing objects that lack index signatures.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Suppress `noImplicitAny` errors when indexing objects that lack index signatures.\n\nSee more: https://www.typescriptlang.org/tsconfig#suppressImplicitAnyIndexErrors"
                        },
                        "stripInternal": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable emitting declarations that have `@internal` in their JSDoc comments.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Disable emitting declarations that have `@internal` in their JSDoc comments.\n\nSee more: https://www.typescriptlang.org/tsconfig#stripInternal"
                        },
                        "target": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Set the JavaScript language version for emitted JavaScript and include compatible library declarations.",
                            "type": ["string", "null"],
                            "default": "ES3",
                            "anyOf": [
                                {
                                    "enum": [
                                        "ES3",
                                        "ES5",
                                        "ES6",
                                        "ES2015",
                                        "ES2016",
                                        "ES2017",
                                        "ES2018",
                                        "ES2019",
                                        "ES2020",
                                        "ES2021",
                                        "ES2022",
                                        "ES2023",
                                        "ES2024",
                                        "ESNext"
                                    ]
                                },
                                {
                                    "pattern": "^([Ee][Ss]([356]|(20(1[56789]|2[01234]))|[Nn][Ee][Xx][Tt]))$"
                                }
                            ],
                            "markdownDescription": "Set the JavaScript language version for emitted JavaScript and include compatible library declarations.\n\nSee more: https://www.typescriptlang.org/tsconfig#target"
                        },
                        "useUnknownInCatchVariables": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Default catch clause variables as `unknown` instead of `any`.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Default catch clause variables as `unknown` instead of `any`.\n\nSee more: https://www.typescriptlang.org/tsconfig#useUnknownInCatchVariables"
                        },
                        "watch": {
                            "description": "Watch input files.",
                            "type": ["boolean", "null"]
                        },
                        "fallbackPolling": {
                            "description": "Specify the polling strategy to use when the system runs out of or doesn't support native file watchers. Requires TypeScript version 3.8 or later.",
                            "enum": [
                                "fixedPollingInterval",
                                "priorityPollingInterval",
                                "dynamicPriorityPolling",
                                "fixedInterval",
                                "priorityInterval",
                                "dynamicPriority",
                                "fixedChunkSize"
                            ]
                        },
                        "watchDirectory": {
                            "description": "Specify the strategy for watching directories under systems that lack recursive file-watching functionality. Requires TypeScript version 3.8 or later.",
                            "enum": [
                                "useFsEvents",
                                "fixedPollingInterval",
                                "dynamicPriorityPolling",
                                "fixedChunkSizePolling"
                            ],
                            "default": "useFsEvents"
                        },
                        "watchFile": {
                            "description": "Specify the strategy for watching individual files. Requires TypeScript version 3.8 or later.",
                            "enum": [
                                "fixedPollingInterval",
                                "priorityPollingInterval",
                                "dynamicPriorityPolling",
                                "useFsEvents",
                                "useFsEventsOnParentDirectory",
                                "fixedChunkSizePolling"
                            ],
                            "default": "useFsEvents"
                        },
                        "experimentalDecorators": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable experimental support for TC39 stage 2 draft decorators.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Enable experimental support for TC39 stage 2 draft decorators.\n\nSee more: https://www.typescriptlang.org/tsconfig#experimentalDecorators"
                        },
                        "emitDecoratorMetadata": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Emit design-type metadata for decorated declarations in source files.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Emit design-type metadata for decorated declarations in source files.\n\nSee more: https://www.typescriptlang.org/tsconfig#emitDecoratorMetadata"
                        },
                        "allowUnusedLabels": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable error reporting for unused labels.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Disable error reporting for unused labels.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowUnusedLabels"
                        },
                        "noImplicitReturns": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable error reporting for codepaths that do not explicitly return in a function.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Enable error reporting for codepaths that do not explicitly return in a function.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitReturns"
                        },
                        "noUncheckedIndexedAccess": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Add `undefined` to a type when accessed using an index.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Add `undefined` to a type when accessed using an index.\n\nSee more: https://www.typescriptlang.org/tsconfig#noUncheckedIndexedAccess"
                        },
                        "noFallthroughCasesInSwitch": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable error reporting for fallthrough cases in switch statements.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Enable error reporting for fallthrough cases in switch statements.\n\nSee more: https://www.typescriptlang.org/tsconfig#noFallthroughCasesInSwitch"
                        },
                        "noImplicitOverride": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Ensure overriding members in derived classes are marked with an override modifier.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Ensure overriding members in derived classes are marked with an override modifier.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitOverride"
                        },
                        "allowUnreachableCode": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable error reporting for unreachable code.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Disable error reporting for unreachable code.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowUnreachableCode"
                        },
                        "forceConsistentCasingInFileNames": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Ensure that casing is correct in imports.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Ensure that casing is correct in imports.\n\nSee more: https://www.typescriptlang.org/tsconfig#forceConsistentCasingInFileNames"
                        },
                        "generateCpuProfile": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Emit a v8 CPU profile of the compiler run for debugging.",
                            "type": ["string", "null"],
                            "default": "profile.cpuprofile",
                            "markdownDescription": "Emit a v8 CPU profile of the compiler run for debugging.\n\nSee more: https://www.typescriptlang.org/tsconfig#generateCpuProfile"
                        },
                        "baseUrl": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the base directory to resolve non-relative module names.",
                            "type": ["string", "null"],
                            "markdownDescription": "Specify the base directory to resolve non-relative module names.\n\nSee more: https://www.typescriptlang.org/tsconfig#baseUrl"
                        },
                        "paths": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify a set of entries that re-map imports to additional lookup locations.",
                            "type": ["object", "null"],
                            "additionalProperties": {
                                "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                                "type": ["array", "null"],
                                "uniqueItems": true,
                                "items": {
                                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                                    "type": ["string", "null"],
                                    "description": "Path mapping to be computed relative to baseUrl option."
                                }
                            },
                            "markdownDescription": "Specify a set of entries that re-map imports to additional lookup locations.\n\nSee more: https://www.typescriptlang.org/tsconfig#paths"
                        },
                        "plugins": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify a list of language service plugins to include.",
                            "type": ["array", "null"],
                            "items": {
                                "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                                "type": ["object", "null"],
                                "properties": {
                                    "name": {
                                        "description": "Plugin name.",
                                        "type": ["string", "null"]
                                    }
                                }
                            },
                            "markdownDescription": "Specify a list of language service plugins to include.\n\nSee more: https://www.typescriptlang.org/tsconfig#plugins"
                        },
                        "rootDirs": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Allow multiple folders to be treated as one when resolving modules.",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            },
                            "markdownDescription": "Allow multiple folders to be treated as one when resolving modules.\n\nSee more: https://www.typescriptlang.org/tsconfig#rootDirs"
                        },
                        "typeRoots": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify multiple folders that act like `./node_modules/@types`.",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            },
                            "markdownDescription": "Specify multiple folders that act like `./node_modules/@types`.\n\nSee more: https://www.typescriptlang.org/tsconfig#typeRoots"
                        },
                        "types": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify type package names to be included without being referenced in a source file.",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            },
                            "markdownDescription": "Specify type package names to be included without being referenced in a source file.\n\nSee more: https://www.typescriptlang.org/tsconfig#types"
                        },
                        "traceResolution": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable tracing of the name resolution process. Requires TypeScript version 2.0 or later.",
                            "type": ["boolean", "null"],
                            "default": false
                        },
                        "allowJs": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowJs"
                        },
                        "noErrorTruncation": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable truncating types in error messages.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable truncating types in error messages.\n\nSee more: https://www.typescriptlang.org/tsconfig#noErrorTruncation"
                        },
                        "allowSyntheticDefaultImports": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Allow 'import x from y' when a module doesn't have a default export.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Allow 'import x from y' when a module doesn't have a default export.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowSyntheticDefaultImports"
                        },
                        "noImplicitUseStrict": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable adding 'use strict' directives in emitted JavaScript files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable adding 'use strict' directives in emitted JavaScript files.\n\nSee more: https://www.typescriptlang.org/tsconfig#noImplicitUseStrict"
                        },
                        "listEmittedFiles": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Print the names of emitted files after a compilation.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Print the names of emitted files after a compilation.\n\nSee more: https://www.typescriptlang.org/tsconfig#listEmittedFiles"
                        },
                        "disableSizeLimit": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Remove the 20mb cap on total source code size for JavaScript files in the TypeScript language server.\n\nSee more: https://www.typescriptlang.org/tsconfig#disableSizeLimit"
                        },
                        "lib": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify a set of bundled library declaration files that describe the target runtime environment.",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                                "type": ["string", "null"],
                                "anyOf": [
                                    {
                                        "enum": [
                                            "ES5",
                                            "ES6",
                                            "ES2015",
                                            "ES2015.Collection",
                                            "ES2015.Core",
                                            "ES2015.Generator",
                                            "ES2015.Iterable",
                                            "ES2015.Promise",
                                            "ES2015.Proxy",
                                            "ES2015.Reflect",
                                            "ES2015.Symbol.WellKnown",
                                            "ES2015.Symbol",
                                            "ES2016",
                                            "ES2016.Array.Include",
                                            "ES2017",
                                            "ES2017.Intl",
                                            "ES2017.Object",
                                            "ES2017.SharedMemory",
                                            "ES2017.String",
                                            "ES2017.TypedArrays",
                                            "ES2017.ArrayBuffer",
                                            "ES2018",
                                            "ES2018.AsyncGenerator",
                                            "ES2018.AsyncIterable",
                                            "ES2018.Intl",
                                            "ES2018.Promise",
                                            "ES2018.Regexp",
                                            "ES2019",
                                            "ES2019.Array",
                                            "ES2019.Intl",
                                            "ES2019.Object",
                                            "ES2019.String",
                                            "ES2019.Symbol",
                                            "ES2020",
                                            "ES2020.BigInt",
                                            "ES2020.Promise",
                                            "ES2020.String",
                                            "ES2020.Symbol.WellKnown",
                                            "ESNext",
                                            "ESNext.Array",
                                            "ESNext.AsyncIterable",
                                            "ESNext.BigInt",
                                            "ESNext.Collection",
                                            "ESNext.Intl",
                                            "ESNext.Object",
                                            "ESNext.Promise",
                                            "ESNext.Regexp",
                                            "ESNext.String",
                                            "ESNext.Symbol",
                                            "DOM",
                                            "DOM.AsyncIterable",
                                            "DOM.Iterable",
                                            "ScriptHost",
                                            "WebWorker",
                                            "WebWorker.AsyncIterable",
                                            "WebWorker.ImportScripts",
                                            "Webworker.Iterable",
                                            "ES7",
                                            "ES2021",
                                            "ES2020.SharedMemory",
                                            "ES2020.Intl",
                                            "ES2020.Date",
                                            "ES2020.Number",
                                            "ES2021.Promise",
                                            "ES2021.String",
                                            "ES2021.WeakRef",
                                            "ESNext.WeakRef",
                                            "ES2021.Intl",
                                            "ES2022",
                                            "ES2022.Array",
                                            "ES2022.Error",
                                            "ES2022.Intl",
                                            "ES2022.Object",
                                            "ES2022.String",
                                            "ES2022.SharedMemory",
                                            "ES2022.RegExp",
                                            "ES2023",
                                            "ES2023.Array",
                                            "ES2024",
                                            "ES2024.ArrayBuffer",
                                            "ES2024.Collection",
                                            "ES2024.Object",
                                            "ES2024.Promise",
                                            "ES2024.Regexp",
                                            "ES2024.SharedMemory",
                                            "ES2024.String",
                                            "Decorators",
                                            "Decorators.Legacy",
                                            "ES2017.Date",
                                            "ES2023.Collection",
                                            "ESNext.Decorators",
                                            "ESNext.Disposable"
                                        ]
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]5|[Ee][Ss]6|[Ee][Ss]7$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2015(\\.([Cc][Oo][Ll][Ll][Ee][Cc][Tt][Ii][Oo][Nn]|[Cc][Oo][Rr][Ee]|[Gg][Ee][Nn][Ee][Rr][Aa][Tt][Oo][Rr]|[Ii][Tt][Ee][Rr][Aa][Bb][Ll][Ee]|[Pp][Rr][Oo][Mm][Ii][Ss][Ee]|[Pp][Rr][Oo][Xx][Yy]|[Rr][Ee][Ff][Ll][Ee][Cc][Tt]|[Ss][Yy][Mm][Bb][Oo][Ll]\\.[Ww][Ee][Ll][Ll][Kk][Nn][Oo][Ww][Nn]|[Ss][Yy][Mm][Bb][Oo][Ll]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2016(\\.[Aa][Rr][Rr][Aa][Yy]\\.[Ii][Nn][Cc][Ll][Uu][Dd][Ee])?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2017(\\.([Ii][Nn][Tt][Ll]|[Oo][Bb][Jj][Ee][Cc][Tt]|[Ss][Hh][Aa][Rr][Ee][Dd][Mm][Ee][Mm][Oo][Rr][Yy]|[Ss][Tt][Rr][Ii][Nn][Gg]|[Tt][Yy][Pp][Ee][Dd][Aa][Rr][Rr][Aa][Yy][Ss]|[Dd][Aa][Tt][Ee]|[Aa][Rr][Rr][Aa][Yy][Bb][Uu][Ff][Ff][Ee][Rr]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2018(\\.([Aa][Ss][Yy][Nn][Cc][Gg][Ee][Nn][Ee][Rr][Aa][Tt][Oo][Rr]|[Aa][Ss][Yy][Nn][Cc][Ii][Tt][Ee][Rr][Aa][Bb][Ll][Ee]|[Ii][Nn][Tt][Ll]|[Pp][Rr][Oo][Mm][Ii][Ss][Ee]|[Rr][Ee][Gg][Ee][Xx][Pp]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2019(\\.([Aa][Rr][Rr][Aa][Yy]|[Ii][Nn][Tt][Ll]|[Oo][Bb][Jj][Ee][Cc][Tt]|[Ss][Tt][Rr][Ii][Nn][Gg]|[Ss][Yy][Mm][Bb][Oo][Ll]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2020(\\.([Bb][Ii][Gg][Ii][Nn][Tt]|[Pp][Rr][Oo][Mm][Ii][Ss][Ee]|[Ss][Tt][Rr][Ii][Nn][Gg]|[Ss][Yy][Mm][Bb][Oo][Ll]\\.[Ww][Ee][Ll][Ll][Kk][Nn][Oo][Ww][Nn]|[Ss][Hh][Aa][Rr][Ee][Dd][Mm][Ee][Mm][Oo][Rr][Yy]|[Ii][Nn][Tt][Ll]|[Dd][Aa][Tt][Ee]|[Nn][Uu][Mm][Bb][Ee][Rr]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2021(\\.([Ii][Nn][Tt][Ll]|[Pp][Rr][Oo][Mm][Ii][Ss][Ee]|[Ss][Tt][Rr][Ii][Nn][Gg]|[Ww][Ee][Aa][Kk][Rr][Ee][Ff]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2022(\\.([Aa][Rr][Rr][Aa][Yy]|[Ee][Rr][Rr][Oo][Rr]|[Ii][Nn][Tt][Ll]|[Oo][Bb][Jj][Ee][Cc][Tt]|[Ss][Tt][Rr][Ii][Nn][Gg]|[Ss][Hh][Aa][Rr][Ee][Dd][Mm][Ee][Mm][Oo][Rr][Yy]|[Rr][Ee][Gg][Ee][Xx][Pp]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2023(\\.([Aa][Rr][Rr][Aa][Yy]|[Cc][Oo][Ll][Ll][Ee][Cc][Tt][Ii][Oo][Nn]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss]2024(\\.([Aa][Rr][Rr][Aa][Yy][Bb][Uu][Ff][Ff][Ee][Rr]|[Cc][Oo][Ll][Ll][Ee][Cc][Tt][Ii][Oo][Nn]|[Oo][Bb][Jj][Ee][Cc][Tt]|[Pp][Rr][Oo][Mm][Ii][Ss][Ee]|[Rr][Ee][Gg][Ee][Xx][Pp]|[Ss][Hh][Aa][Rr][Ee][Dd][Mm][Ee][Mm][Oo][Rr][Yy]|[Ss][Tt][Rr][Ii][Nn][Gg]))?$"
                                    },
                                    {
                                        "pattern": "^[Ee][Ss][Nn][Ee][Xx][Tt](\\.([Aa][Rr][Rr][Aa][Yy]|[Aa][Ss][Yy][Nn][Cc][Ii][Tt][Ee][Rr][Aa][Bb][Ll][Ee]|[Bb][Ii][Gg][Ii][Nn][Tt]|[Ii][Nn][Tt][Ll]|[Pp][Rr][Oo][Mm][Ii][Ss][Ee]|[Ss][Tt][Rr][Ii][Nn][Gg]|[Ss][Yy][Mm][Bb][Oo][Ll]|[Ww][Ee][Aa][Kk][Rr][Ee][Ff]|[Dd][Ee][Cc][Oo][Rr][Aa][Tt][Oo][Rr][Ss]|[Dd][Ii][Ss][Pp][Oo][Ss][Aa][Bb][Ll][Ee]))?$"
                                    },
                                    {
                                        "pattern": "^[Dd][Oo][Mm](\\.([Aa][Ss][Yy][Nn][Cc])?[Ii][Tt][Ee][Rr][Aa][Bb][Ll][Ee])?$"
                                    },
                                    {
                                        "pattern": "^[Ss][Cc][Rr][Ii][Pp][Tt][Hh][Oo][Ss][Tt]$"
                                    },
                                    {
                                        "pattern": "^[Ww][Ee][Bb][Ww][Oo][Rr][Kk][Ee][Rr](\\.([Ii][Mm][Pp][Oo][Rr][Tt][Ss][Cc][Rr][Ii][Pp][Tt][Ss]|([Aa][Ss][Yy][Nn][Cc])?[Ii][Tt][Ee][Rr][Aa][Bb][Ll][Ee]))?$"
                                    },
                                    {
                                        "pattern": "^[Dd][Ee][Cc][Oo][Rr][Aa][Tt][Oo][Rr][Ss](\\.([Ll][Ee][Gg][Aa][Cc][Yy]))?$"
                                    }
                                ]
                            },
                            "markdownDescription": "Specify a set of bundled library declaration files that describe the target runtime environment.\n\nSee more: https://www.typescriptlang.org/tsconfig#lib"
                        },
                        "moduleDetection": {
                            "description": "Specify how TypeScript determine a file as module.",
                            "enum": ["auto", "legacy", "force"]
                        },
                        "strictNullChecks": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "When type checking, take into account `null` and `undefined`.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "When type checking, take into account `null` and `undefined`.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictNullChecks"
                        },
                        "maxNodeModuleJsDepth": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`.",
                            "type": ["number", "null"],
                            "default": 0,
                            "markdownDescription": "Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`.\n\nSee more: https://www.typescriptlang.org/tsconfig#maxNodeModuleJsDepth"
                        },
                        "importHelpers": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Allow importing helper functions from tslib once per project, instead of including them per-file.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Allow importing helper functions from tslib once per project, instead of including them per-file.\n\nSee more: https://www.typescriptlang.org/tsconfig#importHelpers"
                        },
                        "importsNotUsedAsValues": {
                            "description": "Specify emit/checking behavior for imports that are only used for types.",
                            "default": "remove",
                            "enum": ["remove", "preserve", "error"]
                        },
                        "alwaysStrict": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Ensure 'use strict' is always emitted.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Ensure 'use strict' is always emitted.\n\nSee more: https://www.typescriptlang.org/tsconfig#alwaysStrict"
                        },
                        "strict": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable all strict type checking options.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Enable all strict type checking options.\n\nSee more: https://www.typescriptlang.org/tsconfig#strict"
                        },
                        "strictBindCallApply": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Check that the arguments for `bind`, `call`, and `apply` methods match the original function.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Check that the arguments for `bind`, `call`, and `apply` methods match the original function.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictBindCallApply"
                        },
                        "downlevelIteration": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Emit more compliant, but verbose and less performant JavaScript for iteration.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Emit more compliant, but verbose and less performant JavaScript for iteration.\n\nSee more: https://www.typescriptlang.org/tsconfig#downlevelIteration"
                        },
                        "checkJs": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable error reporting in type-checked JavaScript files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Enable error reporting in type-checked JavaScript files.\n\nSee more: https://www.typescriptlang.org/tsconfig#checkJs"
                        },
                        "strictFunctionTypes": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "When assigning functions, check to ensure parameters and the return values are subtype-compatible.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "When assigning functions, check to ensure parameters and the return values are subtype-compatible.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictFunctionTypes"
                        },
                        "strictPropertyInitialization": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Check for class properties that are declared but not set in the constructor.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Check for class properties that are declared but not set in the constructor.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictPropertyInitialization"
                        },
                        "esModuleInterop": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility.\n\nSee more: https://www.typescriptlang.org/tsconfig#esModuleInterop"
                        },
                        "allowUmdGlobalAccess": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Allow accessing UMD globals from modules.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Allow accessing UMD globals from modules.\n\nSee more: https://www.typescriptlang.org/tsconfig#allowUmdGlobalAccess"
                        },
                        "keyofStringsOnly": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Make keyof only return strings instead of string, numbers or symbols. Legacy option.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Make keyof only return strings instead of string, numbers or symbols. Legacy option.\n\nSee more: https://www.typescriptlang.org/tsconfig#keyofStringsOnly"
                        },
                        "useDefineForClassFields": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Emit ECMAScript-standard-compliant class fields.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Emit ECMAScript-standard-compliant class fields.\n\nSee more: https://www.typescriptlang.org/tsconfig#useDefineForClassFields"
                        },
                        "declarationMap": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Create sourcemaps for d.ts files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Create sourcemaps for d.ts files.\n\nSee more: https://www.typescriptlang.org/tsconfig#declarationMap"
                        },
                        "resolveJsonModule": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable importing .json files",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Enable importing .json files\n\nSee more: https://www.typescriptlang.org/tsconfig#resolveJsonModule"
                        },
                        "resolvePackageJsonExports": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Use the package.json 'exports' field when resolving package imports.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Use the package.json 'exports' field when resolving package imports.\n\nSee more: https://www.typescriptlang.org/tsconfig#resolvePackageJsonExports"
                        },
                        "resolvePackageJsonImports": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Use the package.json 'imports' field when resolving imports.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Use the package.json 'imports' field when resolving imports.\n\nSee more: https://www.typescriptlang.org/tsconfig#resolvePackageJsonImports"
                        },
                        "assumeChangesOnlyAffectDirectDependencies": {
                            "description": "Have recompiles in '--incremental' and '--watch' assume that changes within a file will only affect files directly depending on it. Requires TypeScript version 3.8 or later.",
                            "type": ["boolean", "null"]
                        },
                        "extendedDiagnostics": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Output more detailed compiler performance information after building.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Output more detailed compiler performance information after building.\n\nSee more: https://www.typescriptlang.org/tsconfig#extendedDiagnostics"
                        },
                        "listFilesOnly": {
                            "description": "Print names of files that are part of the compilation and then stop processing.",
                            "type": ["boolean", "null"]
                        },
                        "disableSourceOfProjectReferenceRedirect": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable preferring source files instead of declaration files when referencing composite projects",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Disable preferring source files instead of declaration files when referencing composite projects\n\nSee more: https://www.typescriptlang.org/tsconfig#disableSourceOfProjectReferenceRedirect"
                        },
                        "disableSolutionSearching": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Opt a project out of multi-project reference checking when editing.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Opt a project out of multi-project reference checking when editing.\n\nSee more: https://www.typescriptlang.org/tsconfig#disableSolutionSearching"
                        },
                        "verbatimModuleSyntax": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.",
                            "type": ["boolean", "null"],
                            "markdownDescription": "Do not transform or elide any imports or exports not marked as type-only, ensuring they are written in the output file's format based on the 'module' setting.\n\nSee more: https://www.typescriptlang.org/tsconfig#verbatimModuleSyntax"
                        },
                        "noCheck": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Disable full type checking (only critical parse and emit errors will be reported)",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Disable full type checking (only critical parse and emit errors will be reported)\n\nSee more: https://www.typescriptlang.org/tsconfig#noCheck"
                        },
                        "isolatedDeclarations": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Require sufficient annotation on exports so other tools can trivially generate declaration files.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Require sufficient annotation on exports so other tools can trivially generate declaration files.\n\nSee more: https://www.typescriptlang.org/tsconfig#isolatedDeclarations"
                        },
                        "noUncheckedSideEffectImports": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Check side effect imports.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Check side effect imports.\n\nSee more: https://www.typescriptlang.org/tsconfig#noUncheckedSideEffectImports"
                        },
                        "strictBuiltinIteratorReturn": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'.",
                            "type": ["boolean", "null"],
                            "default": false,
                            "markdownDescription": "Built-in iterators are instantiated with a 'TReturn' type of 'undefined' instead of 'any'.\n\nSee more: https://www.typescriptlang.org/tsconfig#strictBuiltinIteratorReturn"
                        }
                    }
                }
            }
        },
        "typeAcquisitionDefinition": {
            "properties": {
                "typeAcquisition": {
                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                    "type": ["object", "null"],
                    "description": "Auto type (.d.ts) acquisition options for this project. Requires TypeScript version 2.1 or later.",
                    "properties": {
                        "enable": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Enable auto type acquisition",
                            "type": ["boolean", "null"],
                            "default": false
                        },
                        "include": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specifies a list of type declarations to be included in auto type acquisition. Ex. [\"jquery\", \"lodash\"]",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            }
                        },
                        "exclude": {
                            "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                            "description": "Specifies a list of type declarations to be excluded from auto type acquisition. Ex. [\"jquery\", \"lodash\"]",
                            "type": ["array", "null"],
                            "uniqueItems": true,
                            "items": {
                                "type": ["string", "null"]
                            }
                        }
                    }
                }
            }
        },
        "referencesDefinition": {
            "properties": {
                "references": {
                    "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                    "type": ["array", "null"],
                    "uniqueItems": true,
                    "description": "Referenced projects. Requires TypeScript version 3.0 or later.",
                    "items": {
                        "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                        "type": ["object", "null"],
                        "description": "Project reference.",
                        "properties": {
                            "path": {
                                "$comment": "The value of 'null' is UNDOCUMENTED (https://github.com/microsoft/TypeScript/pull/18058).",
                                "type": ["string", "null"],
                                "description": "Path to referenced tsconfig or to folder containing tsconfig."
                            }
                        }
                    }
                }
            }
        },
        "tsNodeModuleTypes": {
            "type": ["object", "null"]
        },
        "tsNodeDefinition": {
            "properties": {
                "ts-node": {
                    "description": "ts-node options.  See also: https://typestrong.org/ts-node/docs/configuration\n\nts-node offers TypeScript execution and REPL for node.js, with source map support.",
                    "properties": {
                        "compiler": {
                            "default": "typescript",
                            "description": "Specify a custom TypeScript compiler.",
                            "type": ["string", "null"]
                        },
                        "compilerHost": {
                            "default": false,
                            "description": "Use TypeScript's compiler host API instead of the language service API.",
                            "type": ["boolean", "null"]
                        },
                        "compilerOptions": {
                            "additionalProperties": true,
                            "allOf": [
                                {
                                    "$ref": "#/definitions/compilerOptionsDefinition/properties/compilerOptions"
                                }
                            ],
                            "description": "JSON object to merge with TypeScript `compilerOptions`.",
                            "properties": {},
                            "type": ["object", "null"]
                        },
                        "emit": {
                            "default": false,
                            "description": "Emit output files into `.ts-node` directory.",
                            "type": ["boolean", "null"]
                        },
                        "esm": {
                            "description": "Enable native ESM support.\n\nFor details, see https://typestrong.org/ts-node/docs/imports#native-ecmascript-modules",
                            "type": ["boolean", "null"]
                        },
                        "experimentalReplAwait": {
                            "description": "Allows the usage of top level await in REPL.\n\nUses node's implementation which accomplishes this with an AST syntax transformation.\n\nEnabled by default when tsconfig target is es2018 or above. Set to false to disable.\n\n**Note**: setting to `true` when tsconfig target is too low will throw an Error.  Leave as `undefined`\nto get default, automatic behavior.",
                            "type": ["boolean", "null"]
                        },
                        "experimentalResolver": {
                            "description": "Enable experimental features that re-map imports and require calls to support:\n`baseUrl`, `paths`, `rootDirs`, `.js` to `.ts` file extension mappings,\n`outDir` to `rootDir` mappings for composite projects and monorepos.\n\nFor details, see https://github.com/TypeStrong/ts-node/issues/1514",
                            "type": ["boolean", "null"]
                        },
                        "experimentalSpecifierResolution": {
                            "description": "Like node's `--experimental-specifier-resolution`, , but can also be set in your `tsconfig.json` for convenience.\n\nFor details, see https://nodejs.org/dist/latest-v18.x/docs/api/esm.html#customizing-esm-specifier-resolution-algorithm",
                            "enum": ["explicit", "node"],
                            "type": ["string", "null"]
                        },
                        "files": {
                            "default": false,
                            "description": "Load \"files\" and \"include\" from `tsconfig.json` on startup.\n\nDefault is to override `tsconfig.json` \"files\" and \"include\" to only include the entrypoint script.",
                            "type": ["boolean", "null"]
                        },
                        "ignore": {
                            "default": ["(?:^|/)node_modules/"],
                            "description": "Paths which should not be compiled.\n\nEach string in the array is converted to a regular expression via `new RegExp()` and tested against source paths prior to compilation.\n\nSource paths are normalized to posix-style separators, relative to the directory containing `tsconfig.json` or to cwd if no `tsconfig.json` is loaded.\n\nDefault is to ignore all node_modules subdirectories.",
                            "items": {
                                "type": ["string", "null"]
                            },
                            "type": ["array", "null"]
                        },
                        "ignoreDiagnostics": {
                            "description": "Ignore TypeScript warnings by diagnostic code.",
                            "items": {
                                "type": ["string", "number"]
                            },
                            "type": ["array", "null"]
                        },
                        "logError": {
                            "default": false,
                            "description": "Logs TypeScript errors to stderr instead of throwing exceptions.",
                            "type": ["boolean", "null"]
                        },
                        "moduleTypes": {
                            "$ref": "#/definitions/tsNodeModuleTypes",
                            "description": "Override certain paths to be compiled and executed as CommonJS or ECMAScript modules.\nWhen overridden, the tsconfig \"module\" and package.json \"type\" fields are overridden, and\nthe file extension is ignored.\nThis is useful if you cannot use .mts, .cts, .mjs, or .cjs file extensions;\nit achieves the same effect.\n\nEach key is a glob pattern following the same rules as tsconfig's \"include\" array.\nWhen multiple patterns match the same file, the last pattern takes precedence.\n\n`cjs` overrides matches files to compile and execute as CommonJS.\n`esm` overrides matches files to compile and execute as native ECMAScript modules.\n`package` overrides either of the above to default behavior, which obeys package.json \"type\" and\ntsconfig.json \"module\" options."
                        },
                        "preferTsExts": {
                            "default": false,
                            "description": "Re-order file extensions so that TypeScript imports are preferred.\n\nFor example, when both `index.js` and `index.ts` exist, enabling this option causes `require('./index')` to resolve to `index.ts` instead of `index.js`",
                            "type": ["boolean", "null"]
                        },
                        "pretty": {
                            "default": false,
                            "description": "Use pretty diagnostic formatter.",
                            "type": ["boolean", "null"]
                        },
                        "require": {
                            "description": "Modules to require, like node's `--require` flag.\n\nIf specified in `tsconfig.json`, the modules will be resolved relative to the `tsconfig.json` file.\n\nIf specified programmatically, each input string should be pre-resolved to an absolute path for\nbest results.",
                            "items": {
                                "type": ["string", "null"]
                            },
                            "type": ["array", "null"]
                        },
                        "scope": {
                            "default": false,
                            "description": "Scope compiler to files within `scopeDir`.",
                            "type": ["boolean", "null"]
                        },
                        "scopeDir": {
                            "default": "First of: `tsconfig.json` \"rootDir\" if specified, directory containing `tsconfig.json`, or cwd if no `tsconfig.json` is loaded.",
                            "type": ["string", "null"]
                        },
                        "skipIgnore": {
                            "default": false,
                            "description": "Skip ignore check, so that compilation will be attempted for all files with matching extensions.",
                            "type": ["boolean", "null"]
                        },
                        "swc": {
                            "description": "Transpile with swc instead of the TypeScript compiler, and skip typechecking.\n\nEquivalent to setting both `transpileOnly: true` and `transpiler: 'ts-node/transpilers/swc'`\n\nFor complete instructions: https://typestrong.org/ts-node/docs/transpilers",
                            "type": ["boolean", "null"]
                        },
                        "transpileOnly": {
                            "default": false,
                            "description": "Use TypeScript's faster `transpileModule`.",
                            "type": ["boolean", "null"]
                        },
                        "transpiler": {
                            "anyOf": [
                                {
                                    "items": [
                                        {
                                            "type": ["string", "null"]
                                        },
                                        {
                                            "additionalProperties": true,
                                            "properties": {},
                                            "type": ["object", "null"]
                                        }
                                    ],
                                    "maxItems": 2,
                                    "minItems": 2,
                                    "type": ["array", "null"]
                                },
                                {
                                    "type": ["string", "null"]
                                }
                            ],
                            "description": "Specify a custom transpiler for use with transpileOnly"
                        },
                        "typeCheck": {
                            "default": true,
                            "description": "**DEPRECATED** Specify type-check is enabled (e.g. `transpileOnly == false`).",
                            "type": ["boolean", "null"]
                        }
                    },
                    "type": ["object", "null"]
                }
            }
        }
    },
    "title": "JSON schema for the TypeScript compiler's configuration file",
    "type": "object"
});
define("packages/project-generator-cli-js/lib/template-validator/schemas/index", ["require", "exports", "packages/project-generator-cli-js/lib/template-validator/schemas/eslint", "packages/project-generator-cli-js/lib/template-validator/schemas/packages", "packages/project-generator-cli-js/lib/template-validator/schemas/template", "packages/project-generator-cli-js/lib/template-validator/schemas/typescript"], function (require, exports, eslint_json_1, packages_json_1, template_json_1, typescript_json_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.typescriptSchema = exports.templateSchema = exports.packageSchema = exports.eslintSchema = void 0;
    Object.defineProperty(exports, "eslintSchema", { enumerable: true, get: function () { return __importDefault(eslint_json_1).default; } });
    Object.defineProperty(exports, "packageSchema", { enumerable: true, get: function () { return __importDefault(packages_json_1).default; } });
    Object.defineProperty(exports, "templateSchema", { enumerable: true, get: function () { return __importDefault(template_json_1).default; } });
    Object.defineProperty(exports, "typescriptSchema", { enumerable: true, get: function () { return __importDefault(typescript_json_1).default; } });
});
define("packages/project-generator-cli-js/lib/template-validator/TemplateValidator", ["require", "exports", "ajv", "ajv-formats", "chalk", "packages/project-generator-cli-js/lib/template-validator/schemas/index"], function (require, exports, ajv_1, ajv_formats_1, chalk_3, schemas_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.TemplateValidator = void 0;
    ajv_1 = __importDefault(ajv_1);
    ajv_formats_1 = __importDefault(ajv_formats_1);
    chalk_3 = __importDefault(chalk_3);
    /**
     * @namespace TemplateValidator
     * @description Класс валидации JSON-схем.
     */
    class TemplateValidator {
        template;
        // eslint-disable-next-line no-useless-constructor, no-empty-function
        constructor(template) {
            this.template = template;
        }
        /**
         * @memberof TemplateValidator
         * @description Валидация package.json-, eslint- и typescript-схем
         * @returns {boolean}
         */
        validate() {
            const ajv = new ajv_1.default({
                strict: false,
            });
            ajv.addSchema(schemas_1.packageSchema);
            ajv.addSchema(schemas_1.eslintSchema);
            ajv.addSchema(schemas_1.typescriptSchema);
            (0, ajv_formats_1.default)(ajv);
            const valid = ajv.validate(schemas_1.templateSchema, this.template);
            if (!valid) {
                console.log(chalk_3.default.red('Схема template.json не валидная!'));
                console.table(ajv.errors?.reduce((errors, error) => {
                    if (!error.instancePath) {
                        return errors;
                    }
                    return {
                        ...errors,
                        [error.instancePath]: error.message,
                    };
                }, {}));
            }
            return valid;
        }
    }
    exports.TemplateValidator = TemplateValidator;
});
define("packages/project-generator-cli-js/lib/template-validator/index", ["require", "exports", "packages/project-generator-cli-js/lib/template-validator/TemplateValidator"], function (require, exports, TemplateValidator_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    __exportStar(TemplateValidator_1, exports);
});
define("packages/project-generator-cli-js/lib/utils/createRWFile", ["require", "exports", "child_process", "node:fs"], function (require, exports, child_process_1, node_fs_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.createRWFile = createRWFile;
    /**
     * Создает файл с заданным именем для чтения и записи.
     *
     * @param {string} src - Путь до файла c расширением, который нужно создать.
     * @param {string | string[]} content - Контент файла.
     */
    function createRWFile(src, content) {
        if ((0, node_fs_1.existsSync)(src)) {
            return;
        }
        // eslint-disable-next-line no-underscore-dangle
        let _content = '';
        if (Array.isArray(content)) {
            _content = content.join('\n');
        }
        else {
            _content = JSON.stringify(content);
        }
        (0, child_process_1.execSync)(`touch ${src}`);
        (0, child_process_1.execSync)(`chmod uo+rw ${src}`);
        (0, node_fs_1.appendFileSync)(src, _content, 'utf-8');
    }
});
define("packages/project-generator-cli-js/lib/utils/mergeJSONFile", ["require", "exports", "lodash.merge", "node:fs"], function (require, exports, lodash_merge_1, node_fs_2) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.mergeJSONFile = mergeJSONFile;
    lodash_merge_1 = __importDefault(lodash_merge_1);
    /**
     * Объединяет содержимое JSON-файла с переданными данными и записывает результат обратно в файл.
     *
     * Эта функция читает содержимое JSON-файла с заданным именем, объединяет его с
     * переданными данными, а затем записывает объединенное содержимое обратно в тот же файл.
     *
     * @param {string} name - Имя файла, который нужно объединить.
     * @param {Record<string, any>} mergedContent - Данные, которые будут объединены с содержимым файла.
     * @throws {Error} - Если файл не может быть прочитан или записан.
     */
    function mergeJSONFile(name, mergedContent) {
        const content = (0, node_fs_2.readFileSync)(name, { encoding: 'utf8' });
        (0, node_fs_2.writeFileSync)(name, JSON.stringify((0, lodash_merge_1.default)(JSON.parse(content), mergedContent), (key, value) => value, 2));
    }
});
define("packages/project-generator-cli-js/lib/utils/index", ["require", "exports", "packages/project-generator-cli-js/lib/utils/createRWFile", "packages/project-generator-cli-js/lib/utils/mergeJSONFile"], function (require, exports, createRWFile_1, mergeJSONFile_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    __exportStar(createRWFile_1, exports);
    __exportStar(mergeJSONFile_1, exports);
});
define("packages/project-generator-cli-js/lib/Core", ["require", "exports", "chalk", "child_process", "dns", "node:fs", "node:path", "yocto-spinner", "packages/project-generator-cli-js/lib/template-validator/index", "packages/project-generator-cli-js/lib/utils/index"], function (require, exports, chalk_4, child_process_2, dns_1, node_fs_3, node_path_1, yocto_spinner_1, template_validator_1, utils_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    exports.Core = void 0;
    chalk_4 = __importDefault(chalk_4);
    dns_1 = __importDefault(dns_1);
    node_path_1 = __importDefault(node_path_1);
    yocto_spinner_1 = __importDefault(yocto_spinner_1);
    function checkIfOnline() {
        return new Promise((resolve) => {
            dns_1.default.lookup('registry.yarnpkg.com', (error) => {
                resolve(error == null);
            });
        });
    }
    /**
     * @namespace Core
     * @description Класс генерации проекта из пресетов.
     *
     * @todo Перевести пакеты на type: module
     * @todo Удалить лишние артефакты из сборки пресета
     * @todo Добавить файлы логов в пакеты
     * @todo Добавить логи сборки
     * @todo Проверить сборку на прод
     */
    class Core {
        CLI;
        // eslint-disable-next-line no-useless-constructor, no-empty-function
        constructor(CLI) {
            this.CLI = CLI;
        }
        /**
         * @memberof Core
         * @description
         * 1. Скачивает и распаковывает стартовый шаблон
         * 2. Скачивает стартовую структуру и устанавливает согласно пресету
         * 3. Устанавливает зависимости
         * 4. Подготовка (линтинг, гит)
         */
        // eslint-disable-next-line @typescript-eslint/no-unused-vars, class-methods-use-this
        async createApp() {
            const { dir, template } = this.CLI.getArgs();
            const spinner = (0, yocto_spinner_1.default)().start();
            if (!(0, node_fs_3.existsSync)(dir)) {
                spinner.text = chalk_4.default.blue(`Указанной директории ${dir} нет, создаем...`);
                (0, node_fs_3.mkdirSync)(dir, { recursive: true });
            }
            if (await checkIfOnline()) {
                console.log(chalk_4.default.green('Вы в сети'));
            }
            else {
                console.log(chalk_4.default.red('Похоже, что вы отключены от сети'));
                process.exit(1);
            }
            spinner.text = chalk_4.default.blue('Скачивание стартового шаблона...');
            (0, child_process_2.execSync)('npm pack pg-template-starter -s');
            spinner.text = chalk_4.default.blue('Распаковка шаблона...');
            (0, child_process_2.execSync)(`tar -xf pg-template-starter-*.tgz -C ${dir} && rm pg-template-starter-*.tgz`);
            const packageDir = node_path_1.default.resolve(dir, 'package');
            const starterTemplateJSON = (0, node_fs_3.readFileSync)(node_path_1.default.resolve(packageDir, 'template.json'), { encoding: 'utf-8' });
            const starterTemplateData = JSON.parse(starterTemplateJSON);
            if (!Reflect.has(starterTemplateData, template)) {
                console.log(chalk_4.default.red('Не найден шаблон! Похоже, передан неверный template'));
                (0, child_process_2.execSync)(`rm -r ${dir}`);
                spinner.stop();
                return;
            }
            const pickedTemplate = starterTemplateData[template];
            const templateValidator = new template_validator_1.TemplateValidator(pickedTemplate);
            const valid = templateValidator.validate();
            if (!valid) {
                return;
            }
            spinner.text = chalk_4.default.blue('Создание конфигов...');
            Object.entries(pickedTemplate.configs).forEach(([config, content]) => {
                if (content) {
                    (0, utils_1.createRWFile)(node_path_1.default.resolve(packageDir, config), content);
                }
            });
            spinner.text = chalk_4.default.blue('Скачивание стартовой файловой структуры');
            (0, child_process_2.execSync)(`npm pack ${pickedTemplate.fileStructure} -s`);
            spinner.text = chalk_4.default.blue('Распаковка файловой структуры');
            (0, child_process_2.execSync)(`tar -xf ${pickedTemplate.fileStructure}-*.tgz -C ${dir} && rm ${pickedTemplate.fileStructure}-*.tgz`);
            const projectDir = node_path_1.default.resolve(packageDir, 'project');
            const filesPresets = node_path_1.default.resolve(packageDir, 'presets');
            const fileStructureDir = node_path_1.default.resolve(filesPresets, template);
            const structureList = (0, node_fs_3.readdirSync)(fileStructureDir);
            spinner.text = chalk_4.default.blue('Создание структуры пресета...');
            structureList.forEach((name) => {
                (0, child_process_2.execSync)(`mv -n ${node_path_1.default.resolve(filesPresets, template, name)} ${projectDir}`);
            });
            (0, child_process_2.execSync)(`rm -rf ${filesPresets}`);
            spinner.text = chalk_4.default.blue('Создание пакетов...');
            Object.entries(pickedTemplate.projects).forEach(([project, content]) => {
                if (content) {
                    (0, utils_1.mergeJSONFile)(node_path_1.default.resolve(packageDir, project), content);
                }
            });
            spinner.text = chalk_4.default.blue('Установка зависимостей...');
            // Решение проблемы со установкой пакетов шаблона
            (0, child_process_2.execSync)(`cd ${packageDir} && npm config set registry https://registry.npmjs.com/ --userconfig .npmrc`);
            (0, child_process_2.execSync)(`cd ${packageDir} && npm install --legacy-peer-deps -s`);
            // Решение проблемы со установкой пакетов шаблона
            (0, child_process_2.execSync)(`cd ${projectDir} && npm config set registry https://registry.npmjs.com/ --userconfig .npmrc`);
            (0, child_process_2.execSync)(`cd ${projectDir} && npm install --legacy-peer-deps -s`);
            spinner.text = chalk_4.default.blue('Подготовка проекта...');
            (0, child_process_2.execSync)(`cd ${packageDir} && yarn lint:fix`);
            (0, child_process_2.execSync)(`cd ${packageDir} && git init && git add . && git commit -m 'initial commit'`);
            spinner.stop(chalk_4.default.green('Готово •͡˘㇁•͡˘'));
        }
    }
    exports.Core = Core;
});
define("packages/project-generator-cli-js/lib/index", ["require", "exports", "dotenv", "packages/project-generator-cli-js/lib/CLIInputParser", "packages/project-generator-cli-js/lib/CLIPromtsParser", "packages/project-generator-cli-js/lib/Core"], function (require, exports, dotenv_1, CLIInputParser_1, CLIPromtsParser_1, Core_1) {
    "use strict";
    Object.defineProperty(exports, "__esModule", { value: true });
    dotenv_1 = __importDefault(dotenv_1);
    dotenv_1.default.config();
    __exportStar(CLIInputParser_1, exports);
    __exportStar(CLIPromtsParser_1, exports);
    __exportStar(Core_1, exports);
});