UNPKG

makit

Version:

Make in JavaScript done right!

40 lines (39 loc) 1.31 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.Prerequisites = void 0; const string_1 = require("../utils/string"); const util_1 = require("util"); const inspectSymbol = Symbol.for('nodejs.util.inspect.custom') || 'inspect'; class Prerequisites { constructor(decl) { this.dynamicDependencies = new Map(); this.decl = decl; } getPrerequisites(ctx) { const results = []; this.addRequisites(ctx, this.decl, results); return results; } addRequisites(ctx, decl, results) { if (typeof decl === 'string') { results.push(decl.match(/\$\d/) // 存在分组匹配,则从 match 数组获得匹配的分组 ? decl.replace(/\$(\d+)/g, (_, i) => ctx.match[i]) : decl); } else if (Array.isArray(decl)) { for (const item of decl) this.addRequisites(ctx, item, results); } else if (typeof decl === 'function') { this.addRequisites(ctx, decl(ctx), results); } else { throw new Error('invalid prerequisite:' + decl); } } [inspectSymbol]() { return string_1.inline(util_1.inspect(this.decl)); } } exports.Prerequisites = Prerequisites;