projen
Version:
CDK for software projects
40 lines • 4.82 kB
JavaScript
;
/**
* 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=