UNPKG

projen

Version:

CDK for software projects

40 lines 4.82 kB
"use strict"; /** * Compatibility shims for older Node.js runtimes. * * dax's bundled `which` resolves executables by loading `node:fs` through * `process.getBuiltinModule()`, an API that only exists since Node 22.3.0 / * 20.16.0 (and in no 18.x or older release). On older runtimes every stat * call inside `which` throws, the error is treated as "file does not exist", * and every task command fails with `dax: <cmd>: command not found` * regardless of PATH (https://github.com/projen/projen/issues/4846). * * projen declares `engines: node >= 16`, so polyfill the API with `require()` * on runtimes that lack it. `src/util/dax.ts` - the only module allowed to * import dax - installs the polyfill before dax can resolve any command. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.polyfillGetBuiltinModule = polyfillGetBuiltinModule; const module_1 = require("module"); /** * Installs a `process.getBuiltinModule()` polyfill on the given process * object if it does not already provide one. * * Mirrors the real API: returns the builtin module for both `"fs"` and * `"node:fs"` style ids, and `undefined` for anything that is not a builtin * (the real API never resolves userland modules). */ function polyfillGetBuiltinModule(proc = process) { if (typeof proc.getBuiltinModule === "function") { return; } proc.getBuiltinModule = (id) => { const bare = id.startsWith("node:") ? id.slice("node:".length) : id; if (!module_1.builtinModules.includes(bare)) { return undefined; } // eslint-disable-next-line @typescript-eslint/no-require-imports return require(`node:${bare}`); }; } //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm9kZS1jb21wYXQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvdXRpbC9ub2RlLWNvbXBhdC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7Ozs7Ozs7Ozs7R0FhRzs7QUFZSCw0REFZQztBQXRCRCxtQ0FBd0M7QUFFeEM7Ozs7Ozs7R0FPRztBQUNILFNBQWdCLHdCQUF3QixDQUFDLE9BQXVCLE9BQU87SUFDckUsSUFBSSxPQUFRLElBQVksQ0FBQyxnQkFBZ0IsS0FBSyxVQUFVLEVBQUUsQ0FBQztRQUN6RCxPQUFPO0lBQ1QsQ0FBQztJQUNBLElBQVksQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLEVBQVUsRUFBRSxFQUFFO1FBQzlDLE1BQU0sSUFBSSxHQUFHLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7UUFDcEUsSUFBSSxDQUFDLHVCQUFjLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxFQUFFLENBQUM7WUFDbkMsT0FBTyxTQUFTLENBQUM7UUFDbkIsQ0FBQztRQUNELGlFQUFpRTtRQUNqRSxPQUFPLE9BQU8sQ0FBQyxRQUFRLElBQUksRUFBRSxDQUFDLENBQUM7SUFDakMsQ0FBQyxDQUFDO0FBQ0osQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogQ29tcGF0aWJpbGl0eSBzaGltcyBmb3Igb2xkZXIgTm9kZS5qcyBydW50aW1lcy5cbiAqXG4gKiBkYXgncyBidW5kbGVkIGB3aGljaGAgcmVzb2x2ZXMgZXhlY3V0YWJsZXMgYnkgbG9hZGluZyBgbm9kZTpmc2AgdGhyb3VnaFxuICogYHByb2Nlc3MuZ2V0QnVpbHRpbk1vZHVsZSgpYCwgYW4gQVBJIHRoYXQgb25seSBleGlzdHMgc2luY2UgTm9kZSAyMi4zLjAgL1xuICogMjAuMTYuMCAoYW5kIGluIG5vIDE4Lnggb3Igb2xkZXIgcmVsZWFzZSkuIE9uIG9sZGVyIHJ1bnRpbWVzIGV2ZXJ5IHN0YXRcbiAqIGNhbGwgaW5zaWRlIGB3aGljaGAgdGhyb3dzLCB0aGUgZXJyb3IgaXMgdHJlYXRlZCBhcyBcImZpbGUgZG9lcyBub3QgZXhpc3RcIixcbiAqIGFuZCBldmVyeSB0YXNrIGNvbW1hbmQgZmFpbHMgd2l0aCBgZGF4OiA8Y21kPjogY29tbWFuZCBub3QgZm91bmRgXG4gKiByZWdhcmRsZXNzIG9mIFBBVEggKGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9qZW4vcHJvamVuL2lzc3Vlcy80ODQ2KS5cbiAqXG4gKiBwcm9qZW4gZGVjbGFyZXMgYGVuZ2luZXM6IG5vZGUgPj0gMTZgLCBzbyBwb2x5ZmlsbCB0aGUgQVBJIHdpdGggYHJlcXVpcmUoKWBcbiAqIG9uIHJ1bnRpbWVzIHRoYXQgbGFjayBpdC4gYHNyYy91dGlsL2RheC50c2AgLSB0aGUgb25seSBtb2R1bGUgYWxsb3dlZCB0b1xuICogaW1wb3J0IGRheCAtIGluc3RhbGxzIHRoZSBwb2x5ZmlsbCBiZWZvcmUgZGF4IGNhbiByZXNvbHZlIGFueSBjb21tYW5kLlxuICovXG5cbmltcG9ydCB7IGJ1aWx0aW5Nb2R1bGVzIH0gZnJvbSBcIm1vZHVsZVwiO1xuXG4vKipcbiAqIEluc3RhbGxzIGEgYHByb2Nlc3MuZ2V0QnVpbHRpbk1vZHVsZSgpYCBwb2x5ZmlsbCBvbiB0aGUgZ2l2ZW4gcHJvY2Vzc1xuICogb2JqZWN0IGlmIGl0IGRvZXMgbm90IGFscmVhZHkgcHJvdmlkZSBvbmUuXG4gKlxuICogTWlycm9ycyB0aGUgcmVhbCBBUEk6IHJldHVybnMgdGhlIGJ1aWx0aW4gbW9kdWxlIGZvciBib3RoIGBcImZzXCJgIGFuZFxuICogYFwibm9kZTpmc1wiYCBzdHlsZSBpZHMsIGFuZCBgdW5kZWZpbmVkYCBmb3IgYW55dGhpbmcgdGhhdCBpcyBub3QgYSBidWlsdGluXG4gKiAodGhlIHJlYWwgQVBJIG5ldmVyIHJlc29sdmVzIHVzZXJsYW5kIG1vZHVsZXMpLlxuICovXG5leHBvcnQgZnVuY3Rpb24gcG9seWZpbGxHZXRCdWlsdGluTW9kdWxlKHByb2M6IE5vZGVKUy5Qcm9jZXNzID0gcHJvY2Vzcyk6IHZvaWQge1xuICBpZiAodHlwZW9mIChwcm9jIGFzIGFueSkuZ2V0QnVpbHRpbk1vZHVsZSA9PT0gXCJmdW5jdGlvblwiKSB7XG4gICAgcmV0dXJuO1xuICB9XG4gIChwcm9jIGFzIGFueSkuZ2V0QnVpbHRpbk1vZHVsZSA9IChpZDogc3RyaW5nKSA9PiB7XG4gICAgY29uc3QgYmFyZSA9IGlkLnN0YXJ0c1dpdGgoXCJub2RlOlwiKSA/IGlkLnNsaWNlKFwibm9kZTpcIi5sZW5ndGgpIDogaWQ7XG4gICAgaWYgKCFidWlsdGluTW9kdWxlcy5pbmNsdWRlcyhiYXJlKSkge1xuICAgICAgcmV0dXJuIHVuZGVmaW5lZDtcbiAgICB9XG4gICAgLy8gZXNsaW50LWRpc2FibGUtbmV4dC1saW5lIEB0eXBlc2NyaXB0LWVzbGludC9uby1yZXF1aXJlLWltcG9ydHNcbiAgICByZXR1cm4gcmVxdWlyZShgbm9kZToke2JhcmV9YCk7XG4gIH07XG59XG4iXX0=