PHP WebShell

Текущая директория: /opt/BitGoJS/node_modules/nx/src/command-line

Просмотр файла: format.js

"use strict";
Object.defineProperty(exports, "__esModule", { value: true });
exports.format = void 0;
const tslib_1 = require("tslib");
const child_process_1 = require("child_process");
const path = require("path");
const command_line_utils_1 = require("../utils/command-line-utils");
const fileutils_1 = require("../utils/fileutils");
const file_utils_1 = require("../project-graph/file-utils");
const prettier = require("prettier");
const object_sort_1 = require("../utils/object-sort");
const typescript_1 = require("../utils/typescript");
const project_graph_1 = require("../project-graph/project-graph");
const affected_project_graph_1 = require("../project-graph/affected/affected-project-graph");
const configuration_1 = require("../config/configuration");
const chunkify_1 = require("../utils/chunkify");
const PRETTIER_PATH = require.resolve('prettier/bin-prettier');
function format(command, args) {
    return tslib_1.__awaiter(this, void 0, void 0, function* () {
        const { nxArgs } = (0, command_line_utils_1.splitArgsIntoNxArgsAndOverrides)(args, 'affected', { printWarnings: false }, (0, configuration_1.readNxJson)());
        const patterns = (yield getPatterns(Object.assign(Object.assign({}, args), nxArgs))).map(
        // prettier removes one of the \
        // prettier-ignore
        (p) => `"${p.replace(/\$/g, "\\\$")}"`);
        // Chunkify the patterns array to prevent crashing the windows terminal
        const chunkList = (0, chunkify_1.chunkify)(patterns);
        switch (command) {
            case 'write':
                sortTsConfig();
                addRootConfigFiles(chunkList, nxArgs);
                chunkList.forEach((chunk) => write(chunk));
                break;
            case 'check':
                const pass = chunkList.reduce((pass, chunk) => check(chunk) && pass, true);
                if (!pass) {
                    process.exit(1);
                }
                break;
        }
    });
}
exports.format = format;
function getPatterns(args) {
    return tslib_1.__awaiter(this, void 0, void 0, function* () {
        const graph = yield (0, project_graph_1.createProjectGraphAsync)({ exitOnError: true });
        const allFilesPattern = ['.'];
        if (args.all) {
            return allFilesPattern;
        }
        try {
            if (args.projects && args.projects.length > 0) {
                return getPatternsFromProjects(args.projects, graph);
            }
            const p = (0, command_line_utils_1.parseFiles)(args);
            const supportedExtensions = prettier
                .getSupportInfo()
                .languages.flatMap((language) => language.extensions)
                .filter((extension) => !!extension)
                // Prettier supports ".swcrc" as a file instead of an extension
                // So we add ".swcrc" as a supported extension manually
                // which allows it to be considered for calculating "patterns"
                .concat('.swcrc');
            const patterns = p.files.filter((f) => (0, fileutils_1.fileExists)(f) && supportedExtensions.includes(path.extname(f)));
            return args.libsAndApps
                ? yield getPatternsFromApps(patterns, graph.allWorkspaceFiles, graph)
                : patterns;
        }
        catch (_a) {
            return allFilesPattern;
        }
    });
}
function getPatternsFromApps(affectedFiles, allWorkspaceFiles, projectGraph) {
    return tslib_1.__awaiter(this, void 0, void 0, function* () {
        const graph = yield (0, project_graph_1.createProjectGraphAsync)({ exitOnError: true });
        const affectedGraph = yield (0, affected_project_graph_1.filterAffected)(graph, (0, file_utils_1.calculateFileChanges)(affectedFiles, allWorkspaceFiles));
        return getPatternsFromProjects(Object.keys(affectedGraph.nodes), projectGraph);
    });
}
function addRootConfigFiles(chunkList, nxArgs) {
    if (nxArgs.all) {
        return;
    }
    const chunk = [];
    const addToChunkIfNeeded = (file) => {
        if (chunkList.every((c) => !c.includes(`"${file}"`))) {
            chunk.push(file);
        }
    };
    // if (workspaceJsonPath) {
    //   addToChunkIfNeeded(workspaceJsonPath);
    // }
    ['nx.json', (0, typescript_1.getRootTsConfigFileName)()]
        .filter(Boolean)
        .forEach(addToChunkIfNeeded);
    if (chunk.length > 0) {
        chunkList.push(chunk);
    }
}
function getPatternsFromProjects(projects, projectGraph) {
    return (0, command_line_utils_1.getProjectRoots)(projects, projectGraph);
}
function write(patterns) {
    if (patterns.length > 0) {
        const [swcrcPatterns, regularPatterns] = patterns.reduce((result, pattern) => {
            result[pattern.includes('.swcrc') ? 0 : 1].push(pattern);
            return result;
        }, [[], []]);
        (0, child_process_1.execSync)(`node "${PRETTIER_PATH}" --write --list-different ${regularPatterns.join(' ')}`, {
            stdio: [0, 1, 2],
        });
        if (swcrcPatterns.length > 0) {
            (0, child_process_1.execSync)(`node "${PRETTIER_PATH}" --write --list-different ${swcrcPatterns.join(' ')} --parser json`, {
                stdio: [0, 1, 2],
            });
        }
    }
}
function check(patterns) {
    if (patterns.length === 0) {
        return true;
    }
    try {
        (0, child_process_1.execSync)(`node "${PRETTIER_PATH}" --list-different ${patterns.join(' ')}`, {
            stdio: [0, 1, 2],
        });
        return true;
    }
    catch (_a) {
        return false;
    }
}
function sortTsConfig() {
    try {
        const tsconfigPath = (0, typescript_1.getRootTsConfigPath)();
        const tsconfig = (0, fileutils_1.readJsonFile)(tsconfigPath);
        const sortedPaths = (0, object_sort_1.sortObjectByKeys)(tsconfig.compilerOptions.paths);
        tsconfig.compilerOptions.paths = sortedPaths;
        (0, fileutils_1.writeJsonFile)(tsconfigPath, tsconfig);
    }
    catch (e) {
        // catch noop
    }
}
//# sourceMappingURL=format.js.map

Выполнить команду


Для локальной разработки. Не используйте в интернете!