UNPKG

@repka-kit/ts

Version:

Next generation build tools for monorepo: lint, bundle and package your TypeScript projects

137 lines (133 loc) 18.4 kB
import { i as isTruthy } from './chunk.PjcLlUr0.js'; import { g as includesAnyOf, a as spawnWithSpawnParameters, d as cliArgsPipe, e as setScript, r as removeLogLevelOption, f as setDefaultArgs, l as logger, s as spawnToPromise } from './chunk.2EX25_CG.js'; import { b as binPath } from './chunk.gqGVJwT_.js'; import { c as configFilePath } from './chunk.1WcKPfKf.js'; function createFilter(filters) { if (filters.length === 0) { return void 0; } const filterFns = filters.map((filter) => { if ("text" in filter) { return (data) => data === filter.text ? filter.replaceWith : data; } else if ("regExp" in filter && "extractGroup" in filter) { return (data) => { const array = filter.regExp.exec(data); if (!array) { return data; } return array[filter.extractGroup] || void 0; }; } else if ("regExp" in filter && typeof filter.replaceWith === "undefined") { return (data) => { const array = filter.regExp.exec(data); if (!array) { return data; } return filter.replaceWith; }; } else if ("regExp" in filter && typeof filter.replaceWith === "string") { return (data) => { return data.replaceAll(filter.regExp, filter.replaceWith); }; } else { throw new Error("Invalid filter"); } }); const combinedFilter = (data) => { for (const filter of filterFns) { const result = filter(data); if (result !== data) { return result; } } return data; }; return combinedFilter; } function read(readable, filter, destination) { readable.setEncoding("utf-8"); const onData = filter ? (data) => { const result = filter(data); if (typeof result === "string") { destination(result); } } : destination; readable.addListener("data", onData); } function filterAndPrint(childProcess, filters) { const { stdout, stderr } = childProcess; if (!stdout && !stderr) { throw new Error( '.stdout or .stderr should be defined, does your child process have stdio: "pipe" option?' ); } const filter = createFilter(filters); const writeLog = (data) => { process.stdout.write(data); }; const writeErr = (data) => { process.stderr.write(data); }; stdout && read(stdout, filter, writeLog); stderr && read(stderr, filter, writeErr); return childProcess; } const jestPath = () => binPath({ binName: "jest", binScriptPath: "jest/bin/jest.js" }); const jest = async (args, spawnOpts) => { const canUseStdioPipeToFilterOutput = !includesAnyOf(args, [ "--watch", "--help" ]); const { child } = spawnWithSpawnParameters([ process.execPath, cliArgsPipe( [ setScript(await jestPath()), removeLogLevelOption(), // when stdio is "pipe" pass --color option: canUseStdioPipeToFilterOutput && setDefaultArgs( [`--color`, "--colors"], [], (state) => !includesAnyOf(state.inputArgs, ["--no-color", "--noColor"]) && !process.env["CI"] ) ].filter(isTruthy), args ), { ...spawnOpts, stdio: canUseStdioPipeToFilterOutput ? "pipe" : "inherit", cwd: process.cwd(), env: { ...process.env, ...spawnOpts.env, NODE_OPTIONS: `--experimental-vm-modules`, LOG_LEVEL: logger.logLevel } } ]); if (canUseStdioPipeToFilterOutput) { filterAndPrint(child, [ { regExp: /\(node:\d+\) ExperimentalWarning: VM Modules is an experimental feature\. This feature could change at any time\s+\(Use `node --trace-warnings ...` to show where the warning was created\)\n/gm, replaceWith: "" }, { regExp: /\(node:\d+\) ExperimentalWarning: VM Modules is an experimental feature and might change at any time\s+\(Use `node --trace-warnings ...` to show where the warning was created\)\n/gm, replaceWith: "" } ]); } await spawnToPromise(child, spawnOpts); }; const jestUnitTestConfigPath = () => configFilePath("./jest/jestConfigUnit.mjs"); const jestArgsPipe = (configFilePath2, args) => cliArgsPipe([setDefaultArgs(["-c", "--config"], [configFilePath2])], args); const jestUnitTests = async (args) => jest(jestArgsPipe(jestUnitTestConfigPath(), args), { exitCodes: "inherit" }); const jestIntegrationTestConfigPath = () => configFilePath("./jest/jestConfigIntegration.mjs"); const jestIntegrationTests = async (args) => jest(jestArgsPipe(jestIntegrationTestConfigPath(), args), { exitCodes: "inherit" }); export { jestIntegrationTests as a, jestUnitTests as b, createFilter as c, filterAndPrint as f, jest as j }; //# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2h1bmsuZ1NnbHNrNFouanMiLCJzb3VyY2VzIjpbIi4uL3NyYy9jaGlsZC1wcm9jZXNzL2ZpbHRlckFuZFByaW50LnRzIiwiLi4vc3JjL2plc3QvamVzdC50cyJdLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgdHlwZSB7IENoaWxkUHJvY2VzcyB9IGZyb20gJ2NoaWxkX3Byb2Nlc3MnO1xuaW1wb3J0IHR5cGUgeyBSZWFkYWJsZSB9IGZyb20gJ3N0cmVhbSc7XG5cbmV4cG9ydCB0eXBlIFRleHRGaWx0ZXIgPVxuICB8IHtcbiAgICAgIHRleHQ6IHN0cmluZztcbiAgICAgIHJlcGxhY2VXaXRoPzogc3RyaW5nO1xuICAgIH1cbiAgfCB7XG4gICAgICByZWdFeHA6IFJlZ0V4cDtcbiAgICAgIGV4dHJhY3RHcm91cDogbnVtYmVyO1xuICAgIH1cbiAgfCB7XG4gICAgICByZWdFeHA6IFJlZ0V4cDtcbiAgICAgIHJlcGxhY2VXaXRoPzogc3RyaW5nO1xuICAgIH07XG5cbmV4cG9ydCB0eXBlIFRleHRGaWx0ZXJzID0gVGV4dEZpbHRlcltdO1xuXG5leHBvcnQgZnVuY3Rpb24gY3JlYXRlRmlsdGVyKGZpbHRlcnM6IFRleHRGaWx0ZXJzKSB7XG4gIGlmIChmaWx0ZXJzLmxlbmd0aCA9PT0gMCkge1xuICAgIHJldHVybiB1bmRlZmluZWQ7XG4gIH1cbiAgY29uc3QgZmlsdGVyRm5zID0gZmlsdGVycy5tYXAoKGZpbHRlcikgPT4ge1xuICAgIGlmICgndGV4dCcgaW4gZmlsdGVyKSB7XG4gICAgICByZXR1cm4gKGRhdGE6IHN0cmluZykgPT5cbiAgICAgICAgZGF0YSA9PT0gZmlsdGVyLnRleHQgPyBmaWx0ZXIucmVwbGFjZVdpdGggOiBkYXRhO1xuICAgIH0gZWxzZSBpZiAoJ3JlZ0V4cCcgaW4gZmlsdGVyICYmICdleHRyYWN0R3JvdXAnIGluIGZpbHRlcikge1xuICAgICAgcmV0dXJuIChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSBmaWx0ZXIucmVnRXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgIGlmICghYXJyYXkpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gYXJyYXlbZmlsdGVyLmV4dHJhY3RHcm91cF0gfHwgdW5kZWZpbmVkO1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKFxuICAgICAgJ3JlZ0V4cCcgaW4gZmlsdGVyICYmXG4gICAgICB0eXBlb2YgZmlsdGVyLnJlcGxhY2VXaXRoID09PSAndW5kZWZpbmVkJ1xuICAgICkge1xuICAgICAgcmV0dXJuIChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICAgICAgY29uc3QgYXJyYXkgPSBmaWx0ZXIucmVnRXhwLmV4ZWMoZGF0YSk7XG4gICAgICAgIGlmICghYXJyYXkpIHtcbiAgICAgICAgICByZXR1cm4gZGF0YTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gZmlsdGVyLnJlcGxhY2VXaXRoO1xuICAgICAgfTtcbiAgICB9IGVsc2UgaWYgKCdyZWdFeHAnIGluIGZpbHRlciAmJiB0eXBlb2YgZmlsdGVyLnJlcGxhY2VXaXRoID09PSAnc3RyaW5nJykge1xuICAgICAgcmV0dXJuIChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICAgICAgcmV0dXJuIGRhdGEucmVwbGFjZUFsbChmaWx0ZXIucmVnRXhwLCBmaWx0ZXIucmVwbGFjZVdpdGggYXMgc3RyaW5nKTtcbiAgICAgIH07XG4gICAgfSBlbHNlIHtcbiAgICAgIHRocm93IG5ldyBFcnJvcignSW52YWxpZCBmaWx0ZXInKTtcbiAgICB9XG4gIH0pO1xuXG4gIGNvbnN0IGNvbWJpbmVkRmlsdGVyID0gKGRhdGE6IHN0cmluZykgPT4ge1xuICAgIGZvciAoY29uc3QgZmlsdGVyIG9mIGZpbHRlckZucykge1xuICAgICAgY29uc3QgcmVzdWx0ID0gZmlsdGVyKGRhdGEpO1xuICAgICAgaWYgKHJlc3VsdCAhPT0gZGF0YSkge1xuICAgICAgICByZXR1cm4gcmVzdWx0O1xuICAgICAgfVxuICAgIH1cbiAgICByZXR1cm4gZGF0YTtcbiAgfTtcblxuICByZXR1cm4gY29tYmluZWRGaWx0ZXI7XG59XG5cbmZ1bmN0aW9uIHJlYWQoXG4gIHJlYWRhYmxlOiBSZWFkYWJsZSxcbiAgZmlsdGVyOiB1bmRlZmluZWQgfCAoKGRhdGE6IHN0cmluZykgPT4gc3RyaW5nIHwgdW5kZWZpbmVkKSxcbiAgZGVzdGluYXRpb246IChkYXRhOiBzdHJpbmcpID0+IHZvaWRcbikge1xuICByZWFkYWJsZS5zZXRFbmNvZGluZygndXRmLTgnKTtcbiAgY29uc3Qgb25EYXRhID0gZmlsdGVyXG4gICAgPyAoZGF0YTogc3RyaW5nKSA9PiB7XG4gICAgICAgIGNvbnN0IHJlc3VsdCA9IGZpbHRlcihkYXRhKTtcbiAgICAgICAgaWYgKHR5cGVvZiByZXN1bHQgPT09ICdzdHJpbmcnKSB7XG4gICAgICAgICAgZGVzdGluYXRpb24ocmVzdWx0KTtcbiAgICAgICAgfVxuICAgICAgfVxuICAgIDogZGVzdGluYXRpb247XG4gIHJlYWRhYmxlLmFkZExpc3RlbmVyKCdkYXRhJywgb25EYXRhKTtcbn1cblxuZXhwb3J0IGZ1bmN0aW9uIGZpbHRlckFuZFByaW50KFxuICBjaGlsZFByb2Nlc3M6IENoaWxkUHJvY2VzcyxcbiAgZmlsdGVyczogVGV4dEZpbHRlcnNcbikge1xuICBjb25zdCB7IHN0ZG91dCwgc3RkZXJyIH0gPSBjaGlsZFByb2Nlc3M7XG4gIGlmICghc3Rkb3V0ICYmICFzdGRlcnIpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoXG4gICAgICAnLnN0ZG91dCBvciAuc3RkZXJyIHNob3VsZCBiZSBkZWZpbmVkLCBkb2VzIHlvdXIgY2hpbGQgcHJvY2VzcyBoYXZlIHN0ZGlvOiBcInBpcGVcIiBvcHRpb24/J1xuICAgICk7XG4gIH1cbiAgY29uc3QgZmlsdGVyID0gY3JlYXRlRmlsdGVyKGZpbHRlcnMpO1xuICBjb25zdCB3cml0ZUxvZyA9IChkYXRhOiBzdHJpbmcpID0+IHtcbiAgICBwcm9jZXNzLnN0ZG91dC53cml0ZShkYXRhKTtcbiAgfTtcbiAgY29uc3Qgd3JpdGVFcnIgPSAoZGF0YTogc3RyaW5nKSA9PiB7XG4gICAgcHJvY2Vzcy5zdGRlcnIud3JpdGUoZGF0YSk7XG4gIH07XG4gIHN0ZG91dCAmJiByZWFkKHN0ZG91dCwgZmlsdGVyLCB3cml0ZUxvZyk7XG4gIHN0ZGVyciAmJiByZWFkKHN0ZGVyciwgZmlsdGVyLCB3cml0ZUVycik7XG4gIHJldHVybiBjaGlsZFByb2Nlc3M7XG59XG4iLCJpbXBvcnQgeyBpc1RydXRoeSB9IGZyb20gJ0B1dGlscy90cyc7XG5cbmltcG9ydCB7IGZpbHRlckFuZFByaW50IH0gZnJvbSAnLi4vY2hpbGQtcHJvY2Vzcy9maWx0ZXJBbmRQcmludCc7XG5pbXBvcnQgdHlwZSB7XG4gIFNwYXduT3B0aW9uc1dpdGhFeHRyYSxcbiAgU3Bhd25Ub1Byb21pc2VPcHRzLFxufSBmcm9tICcuLi9jaGlsZC1wcm9jZXNzL3NwYXduVG9Qcm9taXNlJztcbmltcG9ydCB7IHNwYXduV2l0aFNwYXduUGFyYW1ldGVycyB9IGZyb20gJy4uL2NoaWxkLXByb2Nlc3Mvc3Bhd25Ub1Byb21pc2UnO1xuaW1wb3J0IHsgc3Bhd25Ub1Byb21pc2UgfSBmcm9tICcuLi9jaGlsZC1wcm9jZXNzL3NwYXduVG9Qcm9taXNlJztcbmltcG9ydCB7IGxvZ2dlciB9IGZyb20gJy4uL2xvZ2dlci9sb2dnZXInO1xuaW1wb3J0IHsgYmluUGF0aCB9IGZyb20gJy4uL3V0aWxzL2JpblBhdGgnO1xuaW1wb3J0IHtcbiAgY2xpQXJnc1BpcGUsXG4gIGluY2x1ZGVzQW55T2YsXG4gIHJlbW92ZUxvZ0xldmVsT3B0aW9uLFxuICBzZXREZWZhdWx0QXJncyxcbiAgc2V0U2NyaXB0LFxufSBmcm9tICcuLi91dGlscy9jbGlBcmdzUGlwZSc7XG5pbXBvcnQgeyBjb25maWdGaWxlUGF0aCB9IGZyb20gJy4uL3V0aWxzL2NvbmZpZ0ZpbGVQYXRoJztcblxuY29uc3QgamVzdFBhdGggPSAoKSA9PlxuICBiaW5QYXRoKHtcbiAgICBiaW5OYW1lOiAnamVzdCcsXG4gICAgYmluU2NyaXB0UGF0aDogJ2plc3QvYmluL2plc3QuanMnLFxuICB9KTtcblxuZXhwb3J0IGNvbnN0IGplc3QgPSBhc3luYyAoXG4gIGFyZ3M6IHN0cmluZ1tdLFxuICBzcGF3bk9wdHM6IFNwYXduT3B0aW9uc1dpdGhFeHRyYTxTcGF3blRvUHJvbWlzZU9wdHM+XG4pID0+IHtcbiAgY29uc3QgY2FuVXNlU3RkaW9QaXBlVG9GaWx0ZXJPdXRwdXQgPSAhaW5jbHVkZXNBbnlPZihhcmdzLCBbXG4gICAgJy0td2F0Y2gnLFxuICAgICctLWhlbHAnLFxuICBdKTtcbiAgY29uc3QgeyBjaGlsZCB9ID0gc3Bhd25XaXRoU3Bhd25QYXJhbWV0ZXJzKFtcbiAgICBwcm9jZXNzLmV4ZWNQYXRoLFxuICAgIGNsaUFyZ3NQaXBlKFxuICAgICAgW1xuICAgICAgICBzZXRTY3JpcHQoYXdhaXQgamVzdFBhdGgoKSksXG4gICAgICAgIHJlbW92ZUxvZ0xldmVsT3B0aW9uKCksXG4gICAgICAgIC8vIHdoZW4gc3RkaW8gaXMgXCJwaXBlXCIgcGFzcyAtLWNvbG9yIG9wdGlvbjpcbiAgICAgICAgY2FuVXNlU3RkaW9QaXBlVG9GaWx0ZXJPdXRwdXQgJiZcbiAgICAgICAgICBzZXREZWZhdWx0QXJncyhcbiAgICAgICAgICAgIFtgLS1jb2xvcmAsICctLWNvbG9ycyddLFxuICAgICAgICAgICAgW10sXG4gICAgICAgICAgICAoc3RhdGUpID0+XG4gICAgICAgICAgICAgICFpbmNsdWRlc0FueU9mKHN0YXRlLmlucHV0QXJncywgWyctLW5vLWNvbG9yJywgJy0tbm9Db2xvciddKSAmJlxuICAgICAgICAgICAgICAhcHJvY2Vzcy5lbnZbJ0NJJ11cbiAgICAgICAgICApLFxuICAgICAgXS5maWx0ZXIoaXNUcnV0aHkpLFxuICAgICAgYXJnc1xuICAgICksXG4gICAge1xuICAgICAgLi4uc3Bhd25PcHRzLFxuICAgICAgc3RkaW86IGNhblVzZVN0ZGlvUGlwZVRvRmlsdGVyT3V0cHV0ID8gJ3BpcGUnIDogJ2luaGVyaXQnLFxuICAgICAgY3dkOiBwcm9jZXNzLmN3ZCgpLFxuICAgICAgZW52OiB7XG4gICAgICAgIC4uLnByb2Nlc3MuZW52LFxuICAgICAgICAuLi5zcGF3bk9wdHMuZW52LFxuICAgICAgICBOT0RFX09QVElPTlM6IGAtLWV4cGVyaW1lbnRhbC12bS1tb2R1bGVzYCxcbiAgICAgICAgTE9HX0xFVkVMOiBsb2dnZXIubG9nTGV2ZWwsXG4gICAgICB9LFxuICAgIH0sXG4gIF0pO1xuICBpZiAoY2FuVXNlU3RkaW9QaXBlVG9GaWx0ZXJPdXRwdXQpIHtcbiAgICBmaWx0ZXJBbmRQcmludChjaGlsZCwgW1xuICAgICAge1xuICAgICAgICByZWdFeHA6XG4gICAgICAgICAgL1xcKG5vZGU6XFxkK1xcKSBFeHBlcmltZW50YWxXYXJuaW5nOiBWTSBNb2R1bGVzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlXFwuIFRoaXMgZmVhdHVyZSBjb3VsZCBjaGFuZ2UgYXQgYW55IHRpbWVcXHMrXFwoVXNlIGBub2RlIC0tdHJhY2Utd2FybmluZ3MgLi4uYCB0byBzaG93IHdoZXJlIHRoZSB3YXJuaW5nIHdhcyBjcmVhdGVkXFwpXFxuL2dtLFxuICAgICAgICByZXBsYWNlV2l0aDogJycsXG4gICAgICB9LFxuICAgICAge1xuICAgICAgICByZWdFeHA6XG4gICAgICAgICAgL1xcKG5vZGU6XFxkK1xcKSBFeHBlcmltZW50YWxXYXJuaW5nOiBWTSBNb2R1bGVzIGlzIGFuIGV4cGVyaW1lbnRhbCBmZWF0dXJlIGFuZCBtaWdodCBjaGFuZ2UgYXQgYW55IHRpbWVcXHMrXFwoVXNlIGBub2RlIC0tdHJhY2Utd2FybmluZ3MgLi4uYCB0byBzaG93IHdoZXJlIHRoZSB3YXJuaW5nIHdhcyBjcmVhdGVkXFwpXFxuL2dtLFxuICAgICAgICByZXBsYWNlV2l0aDogJycsXG4gICAgICB9LFxuICAgIF0pO1xuICB9XG4gIGF3YWl0IHNwYXduVG9Qcm9taXNlKGNoaWxkLCBzcGF3bk9wdHMpO1xufTtcblxuY29uc3QgamVzdFVuaXRUZXN0Q29uZmlnUGF0aCA9ICgpID0+XG4gIGNvbmZpZ0ZpbGVQYXRoKCcuL2plc3QvamVzdENvbmZpZ1VuaXQubWpzJyk7XG5cbmNvbnN0IGplc3RBcmdzUGlwZSA9IChjb25maWdGaWxlUGF0aDogc3RyaW5nLCBhcmdzOiBzdHJpbmdbXSkgPT5cbiAgY2xpQXJnc1BpcGUoW3NldERlZmF1bHRBcmdzKFsnLWMnLCAnLS1jb25maWcnXSwgW2NvbmZpZ0ZpbGVQYXRoXSldLCBhcmdzKTtcblxuZXhwb3J0IGNvbnN0IGplc3RVbml0VGVzdHMgPSBhc3luYyAoYXJnczogc3RyaW5nW10pID0+XG4gIGplc3QoamVzdEFyZ3NQaXBlKGplc3RVbml0VGVzdENvbmZpZ1BhdGgoKSwgYXJncyksIHsgZXhpdENvZGVzOiAnaW5oZXJpdCcgfSk7XG5cbmNvbnN0IGplc3RJbnRlZ3JhdGlvblRlc3RDb25maWdQYXRoID0gKCkgPT5cbiAgY29uZmlnRmlsZVBhdGgoJy4vamVzdC9qZXN0Q29uZmlnSW50ZWdyYXRpb24ubWpzJyk7XG5cbmV4cG9ydCBjb25zdCBqZXN0SW50ZWdyYXRpb25UZXN0cyA9IGFzeW5jIChhcmdzOiBzdHJpbmdbXSkgPT5cbiAgamVzdChqZXN0QXJnc1BpcGUoamVzdEludGVncmF0aW9uVGVzdENvbmZpZ1BhdGgoKSwgYXJncyksIHtcbiAgICBleGl0Q29kZXM6ICdpbmhlcml0JyxcbiAgfSk7XG4iXSwibmFtZXMiOlsiY29uZmlnRmlsZVBhdGgiXSwibWFwcGluZ3MiOiI7Ozs7O0FBbUJPLFNBQVMsYUFBYSxPQUFzQixFQUFBO0FBQ2pELEVBQUksSUFBQSxPQUFBLENBQVEsV0FBVyxDQUFHLEVBQUE7QUFDeEIsSUFBTyxPQUFBLEtBQUEsQ0FBQSxDQUFBO0FBQUEsR0FDVDtBQUNBLEVBQUEsTUFBTSxTQUFZLEdBQUEsT0FBQSxDQUFRLEdBQUksQ0FBQSxDQUFDLE1BQVcsS0FBQTtBQUN4QyxJQUFBLElBQUksVUFBVSxNQUFRLEVBQUE7QUFDcEIsTUFBQSxPQUFPLENB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