node/deps/npm/node_modules/@npmcli/config/lib/env-replace.js
npm CLI robot b6cfba7cfb
deps: upgrade npm to 11.6.0
PR-URL: https://github.com/nodejs/node/pull/59750
Reviewed-By: Luigi Pinca <luigipinca@gmail.com>
Reviewed-By: Jordan Harband <ljharb@gmail.com>
Reviewed-By: Michaël Zasso <targos@protonmail.com>
Reviewed-By: Rafael Gonzaga <rafael.nunu@hotmail.com>
2025-09-05 20:29:22 +00:00

16 lines
616 B
JavaScript

// replace any ${ENV} values with the appropriate environ.
// optional "?" modifier can be used like this: ${ENV?} so in case of the variable being not defined, it evaluates into empty string.
const envExpr = /(?<!\\)(\\*)\$\{([^${}?]+)(\?)?\}/g
module.exports = (f, env) => f.replace(envExpr, (orig, esc, name, modifier) => {
const fallback = modifier === '?' ? '' : `$\{${name}}`
const val = env[name] !== undefined ? env[name] : fallback
// consume the escape chars that are relevant.
if (esc.length % 2) {
return orig.slice((esc.length + 1) / 2)
}
return (esc.slice(esc.length / 2)) + val
})