1 | const {escapeRegExp, size, isString} = require('lodash');
|
2 | const {SECRET_REPLACEMENT, SECRET_MIN_SIZE} = require('./definitions/constants');
|
3 |
|
4 | module.exports = (env) => {
|
5 | const toReplace = Object.keys(env).filter((envVar) => {
|
6 |
|
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 | };
|