UNPKG

783 BJavaScriptView Raw
1const {escapeRegExp, size, isString} = require('lodash');
2const {SECRET_REPLACEMENT, SECRET_MIN_SIZE} = require('./definitions/constants');
3
4module.exports = (env) => {
5 const toReplace = Object.keys(env).filter((envVar) => {
6 // https://github.com/semantic-release/semantic-release/issues/1558
7 if (envVar === 'GOPRIVATE') {
8 return false;
9 }
10
11 return /token|password|credential|secret|private/i.test(envVar) && size(env[envVar].trim()) >= SECRET_MIN_SIZE;
12 });
13
14 const regexp = new RegExp(
15 toReplace.map((envVar) => `${escapeRegExp(env[envVar])}|${escapeRegExp(encodeURI(env[envVar]))}`).join('|'),
16 'g'
17 );
18 return (output) =>
19 output && isString(output) && toReplace.length > 0 ? output.toString().replace(regexp, SECRET_REPLACEMENT) : output;
20};