renovate 42.92.2 → 42.92.4
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/config/decrypt/bcpgp.js +2 -0
- package/dist/config/decrypt/bcpgp.js.map +1 -1
- package/dist/config/decrypt/openpgp.js +2 -0
- package/dist/config/decrypt/openpgp.js.map +1 -1
- package/dist/config/decrypt.js +1 -0
- package/dist/config/decrypt.js.map +1 -1
- package/dist/config/migration.js +2 -0
- package/dist/config/migration.js.map +1 -1
- package/dist/config/migrations/custom/custom-managers-migration.js +1 -0
- package/dist/config/migrations/custom/custom-managers-migration.js.map +1 -1
- package/dist/config/migrations/custom/datasource-migration.js +1 -0
- package/dist/config/migrations/custom/datasource-migration.js.map +1 -1
- package/dist/config/migrations/custom/file-match-migration.js +1 -0
- package/dist/config/migrations/custom/file-match-migration.js.map +1 -1
- package/dist/config/migrations/custom/host-rules-migration.js +4 -0
- package/dist/config/migrations/custom/host-rules-migration.js.map +1 -1
- package/dist/config/migrations/custom/match-datasources-migration.js +1 -0
- package/dist/config/migrations/custom/match-datasources-migration.js.map +1 -1
- package/dist/config/migrations/custom/match-strings-migration.js +1 -0
- package/dist/config/migrations/custom/match-strings-migration.js.map +1 -1
- package/dist/config/migrations/custom/node-migration.js +1 -0
- package/dist/config/migrations/custom/node-migration.js.map +1 -1
- package/dist/config/migrations/custom/package-files-migration.js +2 -0
- package/dist/config/migrations/custom/package-files-migration.js.map +1 -1
- package/dist/config/migrations/custom/package-rules-migration.js +13 -0
- package/dist/config/migrations/custom/package-rules-migration.js.map +1 -1
- package/dist/config/migrations/custom/post-update-options-migration.js +1 -0
- package/dist/config/migrations/custom/post-update-options-migration.js.map +1 -1
- package/dist/config/migrations/custom/rebase-stale-prs-migration.js +1 -0
- package/dist/config/migrations/custom/rebase-stale-prs-migration.js.map +1 -1
- package/dist/config/migrations/custom/recreate-closed-migration.js +1 -0
- package/dist/config/migrations/custom/recreate-closed-migration.js.map +1 -1
- package/dist/config/migrations/custom/require-config-migration.js +1 -0
- package/dist/config/migrations/custom/require-config-migration.js.map +1 -1
- package/dist/config/migrations/custom/stability-days-migration.js +1 -0
- package/dist/config/migrations/custom/stability-days-migration.js.map +1 -1
- package/dist/config/migrations/custom/trust-level-migration.js +1 -0
- package/dist/config/migrations/custom/trust-level-migration.js.map +1 -1
- package/dist/config/options/index.js +1 -0
- package/dist/config/options/index.js.map +1 -1
- package/dist/config/validation-helpers/utils.js +1 -0
- package/dist/config/validation-helpers/utils.js.map +1 -1
- package/dist/config/validation.js +3 -0
- package/dist/config/validation.js.map +1 -1
- package/dist/instrumentation/index.js +2 -2
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/reporting.js +1 -0
- package/dist/instrumentation/reporting.js.map +1 -1
- package/dist/logger/index.js +2 -0
- package/dist/logger/index.js.map +1 -1
- package/dist/logger/once.js +1 -0
- package/dist/logger/once.js.map +1 -1
- package/dist/logger/remap.js +2 -0
- package/dist/logger/remap.js.map +1 -1
- package/dist/logger/utils.js +5 -1
- package/dist/logger/utils.js.map +1 -1
- package/dist/util/git/span-processor.js +4 -7
- package/dist/util/git/span-processor.js.map +1 -1
- package/package.json +5 -5
- package/renovate-schema.json +2 -2
|
@@ -20,9 +20,11 @@ async function tryDecryptBcPgp(privateKey, encryptedStr) {
|
|
|
20
20
|
logger_1.logger.debug('Adding base64 padding to armored message');
|
|
21
21
|
armoredMessage += `=`.repeat(4 - (armoredMessage.length % 4));
|
|
22
22
|
}
|
|
23
|
+
// v8 ignore else -- TODO: add test #40625
|
|
23
24
|
if (!hasStartHeader) {
|
|
24
25
|
armoredMessage = `${startBlock}${armoredMessage}`;
|
|
25
26
|
}
|
|
27
|
+
// v8 ignore else -- TODO: add test #40625
|
|
26
28
|
if (!hasEndHeader) {
|
|
27
29
|
armoredMessage = `${armoredMessage}${endBlock}`;
|
|
28
30
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"bcpgp.js","sourceRoot":"","sources":["../../../lib/config/decrypt/bcpgp.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"bcpgp.js","sourceRoot":"","sources":["../../../lib/config/decrypt/bcpgp.ts"],"names":[],"mappings":";;AAMA,0CA6CC;AAlDD,0CAA+D;AAC/D,yCAAsC;AACtC,wCAAwC;AACxC,4CAAyC;AAElC,KAAK,UAAU,eAAe,CACnC,UAAkB,EAClB,YAAoB;IAEpB,IAAI,CAAC;QACH,MAAM,UAAU,GAAG,iCAAiC,CAAC;QACrD,MAAM,QAAQ,GAAG,6BAA6B,CAAC;QAC/C,IAAI,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QAEzC,MAAM,cAAc,GAAG,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,YAAY,GAAG,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEvD,IACE,CAAC,cAAc;YACf,CAAC,YAAY;YACb,CAAC,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC;YAC7B,CAAC,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC;YAC9B,cAAc,CAAC,MAAM,GAAG,CAAC,KAAK,CAAC,EAC/B,CAAC;YACD,eAAM,CAAC,KAAK,CAAC,0CAA0C,CAAC,CAAC;YACzD,cAAc,IAAI,GAAG,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC;QAChE,CAAC;QAED,0CAA0C;QAC1C,IAAI,CAAC,cAAc,EAAE,CAAC;YACpB,cAAc,GAAG,GAAG,UAAU,GAAG,cAAc,EAAE,CAAC;QACpD,CAAC;QACD,0CAA0C;QAC1C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,cAAc,GAAG,GAAG,cAAc,GAAG,QAAQ,EAAE,CAAC;QAClD,CAAC;QAED,MAAM,IAAI,GAAG,MAAM,IAAA,aAAO,EACxB,UAAU,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,0CAA0C;QACxF,cAAc,EACd;YACE,OAAO,EAAE,OAAO,EAAE;SACnB,CACF,CAAC;QACF,eAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;QAC7C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,+BAA+B,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,8DAA8D;AAC9D,qEAAqE;AACrE,SAAS,OAAO;IACd,MAAM,OAAO,GAAG,IAAA,YAAM,GAAE,CAAC,sBAAsB,CAAC;IAChD,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,IAAA,wBAAkB,EAAC,OAAO,CAAC,EAAE,CAAC;YAChC,eAAM,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,EAAE,8BAA8B,CAAC,CAAC;YAC1D,OAAO,OAAO,CAAC;QACjB,CAAC;aAAM,CAAC;YACN,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,EAAE,wCAAwC,CAAC,CAAC;QAC1E,CAAC;IACH,CAAC;IACD,eAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;IACvD,OAAO,aAAa,CAAC;AACvB,CAAC","sourcesContent":["import type { RuntimeType } from '@renovatebot/pgp';\nimport { decrypt, isSupportedRuntime } from '@renovatebot/pgp';\nimport { logger } from '../../logger';\nimport { getEnv } from '../../util/env';\nimport { regEx } from '../../util/regex';\n\nexport async function tryDecryptBcPgp(\n privateKey: string,\n encryptedStr: string,\n): Promise<string | null> {\n try {\n const startBlock = '-----BEGIN PGP MESSAGE-----\\n\\n';\n const endBlock = '\\n-----END PGP MESSAGE-----';\n let armoredMessage = encryptedStr.trim();\n\n const hasStartHeader = armoredMessage.startsWith(startBlock);\n const hasEndHeader = armoredMessage.endsWith(endBlock);\n\n if (\n !hasStartHeader &&\n !hasEndHeader &&\n !armoredMessage.includes('=') &&\n !armoredMessage.includes('\\n') &&\n armoredMessage.length % 4 !== 0\n ) {\n logger.debug('Adding base64 padding to armored message');\n armoredMessage += `=`.repeat(4 - (armoredMessage.length % 4));\n }\n\n // v8 ignore else -- TODO: add test #40625\n if (!hasStartHeader) {\n armoredMessage = `${startBlock}${armoredMessage}`;\n }\n // v8 ignore else -- TODO: add test #40625\n if (!hasEndHeader) {\n armoredMessage = `${armoredMessage}${endBlock}`;\n }\n\n const data = await decrypt(\n privateKey.replace(regEx(/\\n[ \\t]+/g), '\\n'), // little massage to help a common problem\n armoredMessage,\n {\n runtime: runtime(),\n },\n );\n logger.debug('Decrypted config using bcpgp');\n return data;\n } catch (err) {\n logger.debug({ err }, 'Could not decrypt using bcpgp');\n return null;\n }\n}\n\n// TODO: use `wasm-java` as default when we require node v24+.\n// Node v22 hungs on exit https://github.com/nodejs/node/issues/60584\nfunction runtime(): RuntimeType {\n const runtime = getEnv().RENOVATE_X_PGP_RUNTIME;\n if (runtime) {\n if (isSupportedRuntime(runtime)) {\n logger.trace({ runtime }, 'Using configured PGP runtime');\n return runtime;\n } else {\n logger.once.warn({ runtime }, 'Unknown PGP runtime, using wasm-dotnet');\n }\n }\n logger.trace('Using default PGP runtime: wasm-dotnet');\n return 'wasm-dotnet';\n}\n"]}
|
|
@@ -27,9 +27,11 @@ async function tryDecryptOpenPgp(privateKey, encryptedStr) {
|
|
|
27
27
|
const startBlock = '-----BEGIN PGP MESSAGE-----\n\n';
|
|
28
28
|
const endBlock = '\n-----END PGP MESSAGE-----';
|
|
29
29
|
let armoredMessage = encryptedStr.trim();
|
|
30
|
+
// v8 ignore else -- TODO: add test #40625
|
|
30
31
|
if (!armoredMessage.startsWith(startBlock)) {
|
|
31
32
|
armoredMessage = `${startBlock}${armoredMessage}`;
|
|
32
33
|
}
|
|
34
|
+
// v8 ignore else -- TODO: add test #40625
|
|
33
35
|
if (!armoredMessage.endsWith(endBlock)) {
|
|
34
36
|
armoredMessage = `${armoredMessage}${endBlock}`;
|
|
35
37
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openpgp.js","sourceRoot":"","sources":["../../../lib/config/decrypt/openpgp.ts"],"names":[],"mappings":";;AAMA,
|
|
1
|
+
{"version":3,"file":"openpgp.js","sourceRoot":"","sources":["../../../lib/config/decrypt/openpgp.ts"],"names":[],"mappings":";;AAMA,8CA+CC;AArDD,iDAA2C;AAC3C,yCAAsC;AACtC,4CAAyC;AAEzC,IAAI,GAAG,GAAgD,SAAS,CAAC;AAE1D,KAAK,UAAU,iBAAiB,CACrC,UAAkB,EAClB,YAAoB;IAEpB,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;QACtB,IAAI,CAAC;YACH,GAAG,GAAG,IAAA,oBAAO,GAAE,CAAC;QAClB,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,eAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,oBAAoB,CAAC,CAAC;YAC3C,GAAG,GAAG,IAAI,CAAC;QACb,CAAC;IACH,CAAC;IAED,IAAI,GAAG,KAAK,IAAI,EAAE,CAAC;QACjB,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,0CAA0C,CAAC,CAAC;QAC7D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,EAAE,GAAG,MAAM,GAAG,CAAC,cAAc,CAAC;YAClC,kBAAkB;YAClB,UAAU,EAAE,UAAU,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,WAAW,CAAC,EAAE,IAAI,CAAC,EAAE,0CAA0C;SACrG,CAAC,CAAC;QACH,MAAM,UAAU,GAAG,iCAAiC,CAAC;QACrD,MAAM,QAAQ,GAAG,6BAA6B,CAAC;QAC/C,IAAI,cAAc,GAAG,YAAY,CAAC,IAAI,EAAE,CAAC;QACzC,0CAA0C;QAC1C,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;YAC3C,cAAc,GAAG,GAAG,UAAU,GAAG,cAAc,EAAE,CAAC;QACpD,CAAC;QACD,0CAA0C;QAC1C,IAAI,CAAC,cAAc,CAAC,QAAQ,CAAC,QAAQ,CAAC,EAAE,CAAC;YACvC,cAAc,GAAG,GAAG,cAAc,GAAG,QAAQ,EAAE,CAAC;QAClD,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC;YACpC,cAAc;SACf,CAAC,CAAC;QACH,MAAM,EAAE,IAAI,EAAE,GAAG,MAAM,GAAG,CAAC,OAAO,CAAC;YACjC,OAAO;YACP,cAAc,EAAE,EAAE;SACnB,CAAC,CAAC;QACH,eAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QAC/C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,EAAE,iCAAiC,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC","sourcesContent":["import { openpgp } from '../../expose.cjs';\nimport { logger } from '../../logger';\nimport { regEx } from '../../util/regex';\n\nlet pgp: typeof import('openpgp') | null | undefined = undefined;\n\nexport async function tryDecryptOpenPgp(\n privateKey: string,\n encryptedStr: string,\n): Promise<string | null> {\n if (pgp === undefined) {\n try {\n pgp = openpgp();\n } catch (err) {\n logger.warn({ err }, 'Could load openpgp');\n pgp = null;\n }\n }\n\n if (pgp === null) {\n logger.once.warn('Cannot load openpgp, skipping decryption');\n return null;\n }\n\n try {\n const pk = await pgp.readPrivateKey({\n // prettier-ignore\n armoredKey: privateKey.replace(regEx(/\\n[ \\t]+/g), '\\n'), // little massage to help a common problem\n });\n const startBlock = '-----BEGIN PGP MESSAGE-----\\n\\n';\n const endBlock = '\\n-----END PGP MESSAGE-----';\n let armoredMessage = encryptedStr.trim();\n // v8 ignore else -- TODO: add test #40625\n if (!armoredMessage.startsWith(startBlock)) {\n armoredMessage = `${startBlock}${armoredMessage}`;\n }\n // v8 ignore else -- TODO: add test #40625\n if (!armoredMessage.endsWith(endBlock)) {\n armoredMessage = `${armoredMessage}${endBlock}`;\n }\n const message = await pgp.readMessage({\n armoredMessage,\n });\n const { data } = await pgp.decrypt({\n message,\n decryptionKeys: pk,\n });\n logger.debug('Decrypted config using openpgp');\n return data;\n } catch (err) {\n logger.debug({ err }, 'Could not decrypt using openpgp');\n return null;\n }\n}\n"]}
|
package/dist/config/decrypt.js
CHANGED
|
@@ -122,6 +122,7 @@ async function decryptConfig(config, repository, existingPath = '$') {
|
|
|
122
122
|
throw error;
|
|
123
123
|
}
|
|
124
124
|
logger_1.logger.debug(`Decrypted ${eKey} in ${path}`);
|
|
125
|
+
// v8 ignore if -- TODO: add test #40625
|
|
125
126
|
if (eKey === 'npmToken') {
|
|
126
127
|
const token = decryptedStr.replace((0, regex_1.regEx)(/\n$/), '');
|
|
127
128
|
decryptedConfig[eKey] = token;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decrypt.js","sourceRoot":"","sources":["../../lib/config/decrypt.ts"],"names":[],"mappings":";;AAqBA,wCAMC;AAED,gCAcC;AAED,wDAqFC;AAED,sCAwFC;AAED,gDAyBC;AAvPD,yCAK0B;AAC1B,gEAAgE;AAChE,sCAAmC;AACnC,qCAAqC;AACrC,yCAAsC;AACtC,+CAA0D;AAC1D,qCAAyE;AACzE,2CAAkD;AAClD,+CAAsD;AACtD,qCAAwC;AACxC,qCAA2C;AAG3C,IAAI,UAA8B,CAAC;AACnC,IAAI,aAAiC,CAAC;AAEtC,SAAgB,cAAc,CAC5B,IAAwB,EACxB,OAA2B;IAE3B,UAAU,GAAG,IAAI,CAAC;IAClB,aAAa,GAAG,OAAO,CAAC;AAC1B,CAAC;AAEM,KAAK,UAAU,UAAU,CAC9B,GAAW,EACX,YAAoB,EACpB,UAAkB;IAElB,IAAI,YAAY,GAAkB,IAAI,CAAC;IACvC,MAAM,eAAe,GACnB,IAAA,YAAM,GAAE,CAAC,sBAAsB,KAAK,MAAM;QACxC,CAAC,CAAC,MAAM,IAAA,2BAAiB,EAAC,GAAG,EAAE,YAAY,CAAC;QAC5C,CAAC,CAAC,MAAM,IAAA,uBAAe,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC;IAC/C,IAAI,eAAe,EAAE,CAAC;QACpB,YAAY,GAAG,sBAAsB,CAAC,eAAe,EAAE,UAAU,CAAC,CAAC;IACrE,CAAC;IACD,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,SAAgB,sBAAsB,CACpC,eAAuB,EACvB,UAAkB;IAElB,IAAI,CAAC;QACH,MAAM,YAAY,GAAG,wBAAe,CAAC,SAAS,CAAC,eAAe,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC7C,KAAK,CAAC,eAAe,GAAG,mCAAmC,CAAC;YAC5D,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,EAAE,CAAC,EAAE,GAAG,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,YAAY,CAAC,IAAI,CAAC;QAExD,IAAI,CAAC,IAAA,qBAAgB,EAAC,KAAK,CAAC,EAAE,CAAC;YAC7B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC7C,KAAK,CAAC,eAAe,GAAG,+CAA+C,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;QAED,IAAI,CAAC,IAAA,qBAAgB,EAAC,GAAG,CAAC,EAAE,CAAC;YAC3B,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC7C,KAAK,CAAC,eAAe,GAAG,+CAA+C,CAAC;YACxE,MAAM,KAAK,CAAC;QACd,CAAC;QAED,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,CAAC,CAAC;QAEhD,MAAM,eAAe,GAAG,kBAAkB,EAAE,CAAC;QAC7C,IAAI,IAAA,qBAAgB,EAAC,eAAe,CAAC,EAAE,CAAC;YACtC,4CAA4C;YAC5C,YAAY,CAAC,IAAI,CAAC,GAAG,eAAe,IAAI,UAAU,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;YACpE,4CAA4C;YAC5C,YAAY,CAAC,IAAI,CAAC,GAAG,eAAe,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;QAC3D,CAAC;QAED,MAAM,WAAW,GAAG,GAAG;aACpB,KAAK,CAAC,GAAG,CAAC;aACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;aACpB,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,CAAC;aAC3B,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAA,yBAAmB,EAAC,CAAC,CAAC,CAAC,CAAC;QAEtC,IAAI,IAAA,qBAAgB,EAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,MAAM,WAAW,GAAG,WAAW,CAAC,GAAG,CAAC,CAAC,SAAS,EAAE,EAAE,CAChD,GAAG,SAAS,GAAG,IAAI,EAAE,CAAC,WAAW,EAAE,CACpC,CAAC;YACF,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;gBAC9B,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,EAAE,CAAC;oBACtC,OAAO,KAAK,CAAC;gBACf,CAAC;YACH,CAAC;YAED,eAAM,CAAC,KAAK,CACV,EAAE,WAAW,EAAE,EACf,4CAA4C,CAC7C,CAAC;YACF,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;YAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC1C,KAAK,CAAC,eAAe,GAAG,0DAA0D,WAAW,IAAI,CAAC;YAClG,MAAM,KAAK,CAAC;QACd,CAAC;QAED,4BAA4B;QAC5B,MAAM,KAAK,GACT,eAAe,KAAK,SAAS;YAC3B,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,IAAA,yBAAmB,EAAC,eAAe,CAAC,CAAC,WAAW,EAAE,CAAC;QACzD,KAAK,MAAM,EAAE,IAAI,YAAY,EAAE,CAAC;YAC9B,IACE,WAAW,CAAC,IAAI,CACd,CAAC,SAAS,EAAE,EAAE,CAAC,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,SAAS,KAAK,KAAK,CAC/D,EACD,CAAC;gBACD,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;QACD,eAAM,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,EAAE,qCAAqC,CAAC,CAAC;QACrE,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC7C,MAAM,WAAW,GAAG,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC1C,KAAK,CAAC,eAAe,GAAG,mDAAmD,WAAW,IAAI,CAAC;QAC3F,MAAM,KAAK,CAAC;IACd,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,eAAM,CAAC,IAAI,CAAC,EAAE,GAAG,EAAE,EAAE,kCAAkC,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAEM,KAAK,UAAU,aAAa,CACjC,MAAS,EACT,UAAkB,EAClB,YAAY,GAAG,GAAG;IAElB,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,EAAE,GAAG,MAAM,EAAE,CAAC;IACtC,KAAK,MAAM,CAAC,GAAG,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAChD,IAAI,GAAG,KAAK,WAAW,IAAI,IAAA,aAAQ,EAAC,GAAG,CAAC,EAAE,CAAC;YACzC,MAAM,IAAI,GAAG,GAAG,YAAY,IAAI,GAAG,EAAE,CAAC;YACtC,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE,6BAA6B,IAAI,EAAE,CAAC,CAAC;YAEnE,MAAM,gBAAgB,GAAG,qBAAY,CAAC,GAAG,CAAC,kBAAkB,CAAC,CAAC;YAC9D,IAAI,IAAA,aAAQ,EAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC/B,eAAM,CAAC,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;YACrC,CAAC;YAED,IAAI,UAAU,EAAE,CAAC;gBACf,KAAK,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;oBAC/C,eAAM,CAAC,KAAK,CAAC,qBAAqB,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;oBACrD,IAAI,YAAY,GAAG,MAAM,UAAU,CAAC,UAAU,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBAClE,IAAI,aAAa,IAAI,CAAC,IAAA,qBAAgB,EAAC,YAAY,CAAC,EAAE,CAAC;wBACrD,eAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;wBACvD,YAAY,GAAG,MAAM,UAAU,CAAC,aAAa,EAAE,IAAI,EAAE,UAAU,CAAC,CAAC;oBACnE,CAAC;oBACD,IAAI,CAAC,IAAA,qBAAgB,EAAC,YAAY,CAAC,EAAE,CAAC;wBACpC,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;wBAC7C,KAAK,CAAC,eAAe,GAAG,2BAA2B,IAAI,oCAAoC,CAAC;wBAC5F,MAAM,KAAK,CAAC;oBACd,CAAC;oBACD,eAAM,CAAC,KAAK,CAAC,aAAa,IAAI,OAAO,IAAI,EAAE,CAAC,CAAC;oBAC7C,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;wBACxB,MAAM,KAAK,GAAG,YAAY,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC;wBACrD,eAAe,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;wBAC9B,IAAA,iCAAsB,EAAC,KAAK,CAAC,CAAC;oBAChC,CAAC;yBAAM,CAAC;wBACN,6CAA6C;wBAC7C,eAAe,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC;wBACrC,IAAA,iCAAsB,EAAC,YAAY,CAAC,CAAC;oBACvC,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,GAAG,IAAA,YAAM,GAAE,CAAC;gBACrB,IAAI,GAAG,CAAC,2BAA2B,KAAK,MAAM,EAAE,CAAC;oBAC/C,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC,kCAAiB,CAAC,CAAC;oBAC3C,KAAK,CAAC,gBAAgB,GAAG,QAAQ,CAAC;oBAClC,KAAK,CAAC,eAAe,GAAG,8BAA8B,CAAC;oBACvD,KAAK,CAAC,iBAAiB,GAAG,4DAA4D,GAAG,sJAAsJ,CAAC;oBAChP,IAAI,GAAG,CAAC,WAAW,KAAK,MAAM,EAAE,CAAC;wBAC/B,KAAK,CAAC,iBAAiB,GAAG;;;+FAGyD,CAAC;oBACtF,CAAC;oBACD,MAAM,KAAK,CAAC;gBACd,CAAC;qBAAM,CAAC;oBACN,eAAM,CAAC,KAAK,CAAC,wCAAwC,CAAC,CAAC;gBACzD,CAAC;YACH,CAAC;YACD,OAAO,eAAe,CAAC,SAAS,CAAC;QACnC,CAAC;aAAM,IAAI,IAAA,YAAO,EAAC,GAAG,CAAC,EAAE,CAAC;YACxB,6CAA6C;YAC7C,eAAe,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;YAC1B,KAAK,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,IAAI,GAAG,CAAC,OAAO,EAAE,EAAE,CAAC;gBAC1C,IAAI,IAAA,aAAQ,EAAC,IAAI,CAAC,IAAI,CAAC,IAAA,YAAO,EAAC,IAAI,CAAC,EAAE,CAAC;oBACrC,MAAM,IAAI,GAAG,GAAG,YAAY,IAAI,GAAG,IAAI,KAAK,GAAG,CAAC;oBAChD,6CAA6C;oBAC5C,eAAe,CAAC,GAAG,CAAsB,CAAC,IAAI,CAC7C,MAAM,aAAa,CAAC,IAAsB,EAAE,UAAU,EAAE,IAAI,CAAC,CAC9D,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,6CAA6C;oBAC5C,eAAe,CAAC,GAAG,CAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;gBACjD,CAAC;YACH,CAAC;QACH,CAAC;aAAM,IAAI,IAAA,aAAQ,EAAC,GAAG,CAAC,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YAC9C,MAAM,IAAI,GAAG,GAAG,YAAY,IAAI,GAAG,EAAE,CAAC;YACtC,6CAA6C;YAC7C,eAAe,CAAC,GAAG,CAAC,GAAG,MAAM,aAAa,CACxC,GAAqB,EACrB,UAAU,EACV,IAAI,CACL,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,eAAe,CAAC,SAAS,CAAC;IACjC,eAAM,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,iBAAiB,CAAC,CAAC;IAC7D,OAAO,eAAe,CAAC;AACzB,CAAC;AAED,SAAgB,kBAAkB;IAChC,MAAM,QAAQ,GAAG,qBAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;QACzB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,QAAQ,GAAG,qBAAY,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;IAC9C,MAAM,WAAW,GAAG,IAAA,cAAQ,EAAC,QAAQ,CAAC,CAAC;IACvC,IAAI,WAAW,KAAK,IAAI,EAAE,CAAC;QACzB,oBAAoB;QACpB,eAAM,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,EAAE,+CAA+C,CAAC,CAAC;QAC3E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,MAAM,eAAe,GAAG,IAAA,iBAAW,EAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC1D,IAAI,CAAC,IAAA,qBAAgB,EAAC,eAAe,CAAC,EAAE,CAAC;QACvC,eAAM,CAAC,KAAK,CAAC,EAAE,QAAQ,EAAE,EAAE,+CAA+C,CAAC,CAAC;QAC5E,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,IAAI,eAAe,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QACvC,sBAAsB;QACtB,OAAO,eAAe,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACtC,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC","sourcesContent":["import {\n isArray,\n isNonEmptyString,\n isObject,\n isString,\n} from '@sindresorhus/is';\nimport { CONFIG_VALIDATION } from '../constants/error-messages';\nimport { logger } from '../logger';\nimport { getEnv } from '../util/env';\nimport { regEx } from '../util/regex';\nimport { addSecretForSanitizing } from '../util/sanitize';\nimport { ensureTrailingSlash, parseUrl, trimSlashes } from '../util/url';\nimport { tryDecryptBcPgp } from './decrypt/bcpgp';\nimport { tryDecryptOpenPgp } from './decrypt/openpgp';\nimport { GlobalConfig } from './global';\nimport { DecryptedObject } from './schema';\nimport type { AllConfig, RenovateConfig } from './types';\n\nlet privateKey: string | undefined;\nlet privateKeyOld: string | undefined;\n\nexport function setPrivateKeys(\n pKey: string | undefined,\n pKeyOld: string | undefined,\n): void {\n privateKey = pKey;\n privateKeyOld = pKeyOld;\n}\n\nexport async function tryDecrypt(\n key: string,\n encryptedStr: string,\n repository: string,\n): Promise<string | null> {\n let decryptedStr: string | null = null;\n const decryptedObjStr =\n getEnv().RENOVATE_X_USE_OPENPGP === 'true'\n ? await tryDecryptOpenPgp(key, encryptedStr)\n : await tryDecryptBcPgp(key, encryptedStr);\n if (decryptedObjStr) {\n decryptedStr = validateDecryptedValue(decryptedObjStr, repository);\n }\n return decryptedStr;\n}\n\nexport function validateDecryptedValue(\n decryptedObjStr: string,\n repository: string,\n): string | null {\n try {\n const decryptedObj = DecryptedObject.safeParse(decryptedObjStr);\n if (!decryptedObj.success) {\n const error = new Error('config-validation');\n error.validationError = `Could not parse decrypted config.`;\n throw error;\n }\n\n const { o: org, r: repo, v: value } = decryptedObj.data;\n\n if (!isNonEmptyString(value)) {\n const error = new Error('config-validation');\n error.validationError = `Encrypted value in config is missing a value.`;\n throw error;\n }\n\n if (!isNonEmptyString(org)) {\n const error = new Error('config-validation');\n error.validationError = `Encrypted value in config is missing a scope.`;\n throw error;\n }\n\n const repositories = [repository.toUpperCase()];\n\n const azureCollection = getAzureCollection();\n if (isNonEmptyString(azureCollection)) {\n // used for full 'org/project/repo' matching\n repositories.push(`${azureCollection}/${repository}`.toUpperCase());\n // used for org prefix matching without repo\n repositories.push(`${azureCollection}/*/`.toUpperCase());\n }\n\n const orgPrefixes = org\n .split(',')\n .map((o) => o.trim())\n .map((o) => o.toUpperCase())\n .map((o) => ensureTrailingSlash(o));\n\n if (isNonEmptyString(repo)) {\n const scopedRepos = orgPrefixes.map((orgPrefix) =>\n `${orgPrefix}${repo}`.toUpperCase(),\n );\n for (const rp of repositories) {\n if (scopedRepos.some((r) => r === rp)) {\n return value;\n }\n }\n\n logger.debug(\n { scopedRepos },\n 'Secret is scoped to a different repository',\n );\n const error = new Error('config-validation');\n const scopeString = scopedRepos.join(',');\n error.validationError = `Encrypted secret is scoped to a different repository: \"${scopeString}\".`;\n throw error;\n }\n\n // no scoped repos, only org\n const azcol =\n azureCollection === undefined\n ? undefined\n : ensureTrailingSlash(azureCollection).toUpperCase();\n for (const rp of repositories) {\n if (\n orgPrefixes.some(\n (orgPrefix) => rp.startsWith(orgPrefix) && orgPrefix !== azcol,\n )\n ) {\n return value;\n }\n }\n logger.debug({ orgPrefixes }, 'Secret is scoped to a different org');\n const error = new Error('config-validation');\n const scopeString = orgPrefixes.join(',');\n error.validationError = `Encrypted secret is scoped to a different org: \"${scopeString}\".`;\n throw error;\n } catch (err) {\n logger.warn({ err }, 'Could not parse decrypted string');\n }\n return null;\n}\n\nexport async function decryptConfig<T extends RenovateConfig = AllConfig>(\n config: T,\n repository: string,\n existingPath = '$',\n): Promise<T> {\n logger.trace({ config }, 'decryptConfig()');\n const decryptedConfig = { ...config };\n for (const [key, val] of Object.entries(config)) {\n if (key === 'encrypted' && isObject(val)) {\n const path = `${existingPath}.${key}`;\n logger.debug({ config: val }, `Found encrypted config in ${path}`);\n\n const encryptedWarning = GlobalConfig.get('encryptedWarning');\n if (isString(encryptedWarning)) {\n logger.once.warn(encryptedWarning);\n }\n\n if (privateKey) {\n for (const [eKey, eVal] of Object.entries(val)) {\n logger.debug(`Trying to decrypt ${eKey} in ${path}`);\n let decryptedStr = await tryDecrypt(privateKey, eVal, repository);\n if (privateKeyOld && !isNonEmptyString(decryptedStr)) {\n logger.debug(`Trying to decrypt with old private key`);\n decryptedStr = await tryDecrypt(privateKeyOld, eVal, repository);\n }\n if (!isNonEmptyString(decryptedStr)) {\n const error = new Error('config-validation');\n error.validationError = `Failed to decrypt field ${eKey}. Please re-encrypt and try again.`;\n throw error;\n }\n logger.debug(`Decrypted ${eKey} in ${path}`);\n if (eKey === 'npmToken') {\n const token = decryptedStr.replace(regEx(/\\n$/), '');\n decryptedConfig[eKey] = token;\n addSecretForSanitizing(token);\n } else {\n // @ts-expect-error -- type can't be narrowed\n decryptedConfig[eKey] = decryptedStr;\n addSecretForSanitizing(decryptedStr);\n }\n }\n } else {\n const env = getEnv();\n if (env.RENOVATE_X_ENCRYPTED_STRICT === 'true') {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Encrypted config unsupported';\n error.validationMessage = `This config contains an encrypted object at location \\`$.${key}\\` but no privateKey is configured. To support encrypted config, the Renovate administrator must configure a \\`privateKey\\` in Global Configuration.`;\n if (env.MEND_HOSTED === 'true') {\n error.validationMessage = `Mend-hosted Renovate Apps no longer support the use of encrypted secrets in Renovate file config (e.g. renovate.json).\nPlease migrate all secrets to the Developer Portal using the web UI available at https://developer.mend.io/\n\nRefer to migration documents here: https://docs.renovatebot.com/mend-hosted/migrating-secrets/`;\n }\n throw error;\n } else {\n logger.error('Found encrypted data but no privateKey');\n }\n }\n delete decryptedConfig.encrypted;\n } else if (isArray(val)) {\n // @ts-expect-error -- type can't be narrowed\n decryptedConfig[key] = [];\n for (const [index, item] of val.entries()) {\n if (isObject(item) && !isArray(item)) {\n const path = `${existingPath}.${key}[${index}]`;\n // @ts-expect-error -- type can't be narrowed\n (decryptedConfig[key] as RenovateConfig[]).push(\n await decryptConfig(item as RenovateConfig, repository, path),\n );\n } else {\n // @ts-expect-error -- type can't be narrowed\n (decryptedConfig[key] as unknown[]).push(item);\n }\n }\n } else if (isObject(val) && key !== 'content') {\n const path = `${existingPath}.${key}`;\n // @ts-expect-error -- type can't be narrowed\n decryptedConfig[key] = await decryptConfig(\n val as RenovateConfig,\n repository,\n path,\n );\n }\n }\n delete decryptedConfig.encrypted;\n logger.trace({ config: decryptedConfig }, 'decryptedConfig');\n return decryptedConfig;\n}\n\nexport function getAzureCollection(): string | undefined {\n const platform = GlobalConfig.get('platform');\n if (platform !== 'azure') {\n return undefined;\n }\n\n const endpoint = GlobalConfig.get('endpoint');\n const endpointUrl = parseUrl(endpoint);\n if (endpointUrl === null) {\n // should not happen\n logger.warn({ endpoint }, 'Unable to parse endpoint for token decryption');\n return undefined;\n }\n\n const azureCollection = trimSlashes(endpointUrl.pathname);\n if (!isNonEmptyString(azureCollection)) {\n logger.debug({ endpoint }, 'Unable to find azure collection name from URL');\n return undefined;\n }\n\n if (azureCollection.startsWith('tfs/')) {\n // Azure DevOps Server\n return azureCollection.substring(4);\n }\n return azureCollection;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"decrypt.js","sourceRoot":"","sources":["../../lib/config/decrypt.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isArray,\n isNonEmptyString,\n isObject,\n isString,\n} from '@sindresorhus/is';\nimport { CONFIG_VALIDATION } from '../constants/error-messages';\nimport { logger } from '../logger';\nimport { getEnv } from '../util/env';\nimport { regEx } from '../util/regex';\nimport { addSecretForSanitizing } from '../util/sanitize';\nimport { ensureTrailingSlash, parseUrl, trimSlashes } from '../util/url';\nimport { tryDecryptBcPgp } from './decrypt/bcpgp';\nimport { tryDecryptOpenPgp } from './decrypt/openpgp';\nimport { GlobalConfig } from './global';\nimport { DecryptedObject } from './schema';\nimport type { AllConfig, RenovateConfig } from './types';\n\nlet privateKey: string | undefined;\nlet privateKeyOld: string | undefined;\n\nexport function setPrivateKeys(\n pKey: string | undefined,\n pKeyOld: string | undefined,\n): void {\n privateKey = pKey;\n privateKeyOld = pKeyOld;\n}\n\nexport async function tryDecrypt(\n key: string,\n encryptedStr: string,\n repository: string,\n): Promise<string | null> {\n let decryptedStr: string | null = null;\n const decryptedObjStr =\n getEnv().RENOVATE_X_USE_OPENPGP === 'true'\n ? await tryDecryptOpenPgp(key, encryptedStr)\n : await tryDecryptBcPgp(key, encryptedStr);\n if (decryptedObjStr) {\n decryptedStr = validateDecryptedValue(decryptedObjStr, repository);\n }\n return decryptedStr;\n}\n\nexport function validateDecryptedValue(\n decryptedObjStr: string,\n repository: string,\n): string | null {\n try {\n const decryptedObj = DecryptedObject.safeParse(decryptedObjStr);\n if (!decryptedObj.success) {\n const error = new Error('config-validation');\n error.validationError = `Could not parse decrypted config.`;\n throw error;\n }\n\n const { o: org, r: repo, v: value } = decryptedObj.data;\n\n if (!isNonEmptyString(value)) {\n const error = new Error('config-validation');\n error.validationError = `Encrypted value in config is missing a value.`;\n throw error;\n }\n\n if (!isNonEmptyString(org)) {\n const error = new Error('config-validation');\n error.validationError = `Encrypted value in config is missing a scope.`;\n throw error;\n }\n\n const repositories = [repository.toUpperCase()];\n\n const azureCollection = getAzureCollection();\n if (isNonEmptyString(azureCollection)) {\n // used for full 'org/project/repo' matching\n repositories.push(`${azureCollection}/${repository}`.toUpperCase());\n // used for org prefix matching without repo\n repositories.push(`${azureCollection}/*/`.toUpperCase());\n }\n\n const orgPrefixes = org\n .split(',')\n .map((o) => o.trim())\n .map((o) => o.toUpperCase())\n .map((o) => ensureTrailingSlash(o));\n\n if (isNonEmptyString(repo)) {\n const scopedRepos = orgPrefixes.map((orgPrefix) =>\n `${orgPrefix}${repo}`.toUpperCase(),\n );\n for (const rp of repositories) {\n if (scopedRepos.some((r) => r === rp)) {\n return value;\n }\n }\n\n logger.debug(\n { scopedRepos },\n 'Secret is scoped to a different repository',\n );\n const error = new Error('config-validation');\n const scopeString = scopedRepos.join(',');\n error.validationError = `Encrypted secret is scoped to a different repository: \"${scopeString}\".`;\n throw error;\n }\n\n // no scoped repos, only org\n const azcol =\n azureCollection === undefined\n ? undefined\n : ensureTrailingSlash(azureCollection).toUpperCase();\n for (const rp of repositories) {\n if (\n orgPrefixes.some(\n (orgPrefix) => rp.startsWith(orgPrefix) && orgPrefix !== azcol,\n )\n ) {\n return value;\n }\n }\n logger.debug({ orgPrefixes }, 'Secret is scoped to a different org');\n const error = new Error('config-validation');\n const scopeString = orgPrefixes.join(',');\n error.validationError = `Encrypted secret is scoped to a different org: \"${scopeString}\".`;\n throw error;\n } catch (err) {\n logger.warn({ err }, 'Could not parse decrypted string');\n }\n return null;\n}\n\nexport async function decryptConfig<T extends RenovateConfig = AllConfig>(\n config: T,\n repository: string,\n existingPath = '$',\n): Promise<T> {\n logger.trace({ config }, 'decryptConfig()');\n const decryptedConfig = { ...config };\n for (const [key, val] of Object.entries(config)) {\n if (key === 'encrypted' && isObject(val)) {\n const path = `${existingPath}.${key}`;\n logger.debug({ config: val }, `Found encrypted config in ${path}`);\n\n const encryptedWarning = GlobalConfig.get('encryptedWarning');\n if (isString(encryptedWarning)) {\n logger.once.warn(encryptedWarning);\n }\n\n if (privateKey) {\n for (const [eKey, eVal] of Object.entries(val)) {\n logger.debug(`Trying to decrypt ${eKey} in ${path}`);\n let decryptedStr = await tryDecrypt(privateKey, eVal, repository);\n if (privateKeyOld && !isNonEmptyString(decryptedStr)) {\n logger.debug(`Trying to decrypt with old private key`);\n decryptedStr = await tryDecrypt(privateKeyOld, eVal, repository);\n }\n if (!isNonEmptyString(decryptedStr)) {\n const error = new Error('config-validation');\n error.validationError = `Failed to decrypt field ${eKey}. Please re-encrypt and try again.`;\n throw error;\n }\n logger.debug(`Decrypted ${eKey} in ${path}`);\n // v8 ignore if -- TODO: add test #40625\n if (eKey === 'npmToken') {\n const token = decryptedStr.replace(regEx(/\\n$/), '');\n decryptedConfig[eKey] = token;\n addSecretForSanitizing(token);\n } else {\n // @ts-expect-error -- type can't be narrowed\n decryptedConfig[eKey] = decryptedStr;\n addSecretForSanitizing(decryptedStr);\n }\n }\n } else {\n const env = getEnv();\n if (env.RENOVATE_X_ENCRYPTED_STRICT === 'true') {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationError = 'Encrypted config unsupported';\n error.validationMessage = `This config contains an encrypted object at location \\`$.${key}\\` but no privateKey is configured. To support encrypted config, the Renovate administrator must configure a \\`privateKey\\` in Global Configuration.`;\n if (env.MEND_HOSTED === 'true') {\n error.validationMessage = `Mend-hosted Renovate Apps no longer support the use of encrypted secrets in Renovate file config (e.g. renovate.json).\nPlease migrate all secrets to the Developer Portal using the web UI available at https://developer.mend.io/\n\nRefer to migration documents here: https://docs.renovatebot.com/mend-hosted/migrating-secrets/`;\n }\n throw error;\n } else {\n logger.error('Found encrypted data but no privateKey');\n }\n }\n delete decryptedConfig.encrypted;\n } else if (isArray(val)) {\n // @ts-expect-error -- type can't be narrowed\n decryptedConfig[key] = [];\n for (const [index, item] of val.entries()) {\n if (isObject(item) && !isArray(item)) {\n const path = `${existingPath}.${key}[${index}]`;\n // @ts-expect-error -- type can't be narrowed\n (decryptedConfig[key] as RenovateConfig[]).push(\n await decryptConfig(item as RenovateConfig, repository, path),\n );\n } else {\n // @ts-expect-error -- type can't be narrowed\n (decryptedConfig[key] as unknown[]).push(item);\n }\n }\n } else if (isObject(val) && key !== 'content') {\n const path = `${existingPath}.${key}`;\n // @ts-expect-error -- type can't be narrowed\n decryptedConfig[key] = await decryptConfig(\n val as RenovateConfig,\n repository,\n path,\n );\n }\n }\n delete decryptedConfig.encrypted;\n logger.trace({ config: decryptedConfig }, 'decryptedConfig');\n return decryptedConfig;\n}\n\nexport function getAzureCollection(): string | undefined {\n const platform = GlobalConfig.get('platform');\n if (platform !== 'azure') {\n return undefined;\n }\n\n const endpoint = GlobalConfig.get('endpoint');\n const endpointUrl = parseUrl(endpoint);\n if (endpointUrl === null) {\n // should not happen\n logger.warn({ endpoint }, 'Unable to parse endpoint for token decryption');\n return undefined;\n }\n\n const azureCollection = trimSlashes(endpointUrl.pathname);\n if (!isNonEmptyString(azureCollection)) {\n logger.debug({ endpoint }, 'Unable to find azure collection name from URL');\n return undefined;\n }\n\n if (azureCollection.startsWith('tfs/')) {\n // Azure DevOps Server\n return azureCollection.substring(4);\n }\n return azureCollection;\n}\n"]}
|
package/dist/config/migration.js
CHANGED
|
@@ -65,6 +65,7 @@ function migrateConfig(config, parentKey) {
|
|
|
65
65
|
}
|
|
66
66
|
else if ((0, is_1.isArray)(val)) {
|
|
67
67
|
// @ts-expect-error -- TODO: fix me
|
|
68
|
+
// v8 ignore else -- TODO: add test #40625
|
|
68
69
|
if ((0, is_1.isArray)(migratedConfig?.[key])) {
|
|
69
70
|
const newArray = [];
|
|
70
71
|
// @ts-expect-error -- TODO: fix me
|
|
@@ -178,6 +179,7 @@ function migrateConfig(config, parentKey) {
|
|
|
178
179
|
// @ts-expect-error -- TODO: fix me
|
|
179
180
|
if (migratedConfig.matchManagers.includes('gradle-lite')) {
|
|
180
181
|
// @ts-expect-error -- TODO: fix me
|
|
182
|
+
// v8 ignore else -- TODO: add test #40625
|
|
181
183
|
if (!migratedConfig.matchManagers.includes('gradle')) {
|
|
182
184
|
// @ts-expect-error -- TODO: fix me
|
|
183
185
|
migratedConfig.matchManagers.push('gradle');
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../lib/config/migration.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isArray,\n isBoolean,\n isNonEmptyArray,\n isNonEmptyObject,\n isObject,\n isString,\n} from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { logger } from '../logger';\nimport { clone } from '../util/clone';\nimport { regEx } from '../util/regex';\nimport { MigrationsService } from './migrations';\nimport { getOptions } from './options';\nimport type {\n MigratedConfig,\n MigratedRenovateConfig,\n PackageRule,\n RenovateConfig,\n RenovateOptions,\n} from './types';\nimport { mergeChildConfig } from './utils';\n\nconst options = getOptions();\nexport function fixShortHours(input: string): string {\n return input.replace(regEx(/( \\d?\\d)((a|p)m)/g), '$1:00$2');\n}\n\nlet optionTypes: Record<string, RenovateOptions['type']>;\n// Returns a migrated config\nexport function migrateConfig(\n config: RenovateConfig,\n parentKey?: string,\n): MigratedConfig {\n try {\n if (!optionTypes) {\n optionTypes = {};\n options.forEach((option) => {\n optionTypes[option.name] = option.type;\n });\n }\n const newConfig = MigrationsService.run(config, parentKey);\n const migratedConfig = clone(newConfig) as MigratedRenovateConfig;\n\n for (const [key, val] of Object.entries(newConfig)) {\n if (isString(val) && val.includes('{{baseDir}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n regEx(/{{baseDir}}/g),\n '{{packageFileDir}}',\n );\n } else if (isString(val) && val.includes('{{lookupName}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n regEx(/{{lookupName}}/g),\n '{{packageName}}',\n );\n } else if (isString(val) && val.includes('{{depNameShort}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n regEx(/{{depNameShort}}/g),\n '{{depName}}',\n );\n } else if (isString(val) && val.startsWith('{{semanticPrefix}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n '{{semanticPrefix}}',\n '{{#if semanticCommitType}}{{semanticCommitType}}{{#if semanticCommitScope}}({{semanticCommitScope}}){{/if}}: {{/if}}',\n );\n } else if (optionTypes[key] === 'object' && isBoolean(val)) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = { enabled: val };\n } else if (optionTypes[key] === 'boolean') {\n if (val === 'true') {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = true;\n } else if (val === 'false') {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = false;\n }\n } else if (\n optionTypes[key] === 'string' &&\n isArray(val) &&\n val.length === 1\n ) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = String(val[0]);\n } else if (isArray(val)) {\n // @ts-expect-error -- TODO: fix me\n if (isArray(migratedConfig?.[key])) {\n const newArray = [];\n // @ts-expect-error -- TODO: fix me\n for (const item of migratedConfig[key]) {\n if (isObject(item) && !isArray(item)) {\n const arrMigrate = migrateConfig(item as RenovateConfig);\n newArray.push(arrMigrate.migratedConfig);\n } else {\n newArray.push(item);\n }\n }\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = newArray;\n }\n } else if (isObject(val)) {\n const subMigrate = migrateConfig(\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] as RenovateConfig,\n key,\n );\n if (subMigrate.isMigrated) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = subMigrate.migratedConfig;\n }\n }\n\n const migratedTemplates = {\n fromVersion: 'currentVersion',\n newValueMajor: 'newMajor',\n newValueMinor: 'newMinor',\n newVersionMajor: 'newMajor',\n newVersionMinor: 'newMinor',\n toVersion: 'newVersion',\n };\n // @ts-expect-error -- TODO: fix me\n if (isString(migratedConfig[key])) {\n for (const [from, to] of Object.entries(migratedTemplates)) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = (migratedConfig[key] as string).replace(\n regEx(from, 'g'),\n to,\n );\n }\n }\n }\n const languages = [\n 'docker',\n 'dotnet',\n 'golang',\n 'java',\n 'js',\n 'node',\n 'php',\n 'python',\n 'ruby',\n 'rust',\n ];\n for (const language of languages) {\n // @ts-expect-error -- TODO: fix me\n if (isNonEmptyObject(migratedConfig[language])) {\n migratedConfig.packageRules ??= [];\n // @ts-expect-error -- TODO: fix me\n const currentContent = migratedConfig[language] as any;\n const packageRule = {\n matchCategories: [language],\n ...currentContent,\n };\n migratedConfig.packageRules.unshift(packageRule);\n // @ts-expect-error -- TODO: fix me\n delete migratedConfig[language];\n }\n }\n // Migrate nested packageRules\n if (isNonEmptyArray(migratedConfig.packageRules)) {\n const existingRules = migratedConfig.packageRules;\n migratedConfig.packageRules = [];\n for (const packageRule of existingRules) {\n // @ts-expect-error -- TODO: fix me\n if (isArray(packageRule.packageRules)) {\n logger.debug('Flattening nested packageRules');\n // merge each subrule and add to the parent list\n // @ts-expect-error -- TODO: fix me\n for (const subrule of packageRule.packageRules) {\n // TODO: fix types #22198\n const combinedRule = mergeChildConfig(\n packageRule,\n subrule as PackageRule,\n );\n // @ts-expect-error -- TODO: fix me\n delete combinedRule.packageRules;\n migratedConfig.packageRules.push(combinedRule);\n }\n } else {\n migratedConfig.packageRules.push(packageRule);\n }\n }\n }\n if (\n // @ts-expect-error -- TODO: fix me\n isNonEmptyObject(migratedConfig['pip-compile']) &&\n // @ts-expect-error -- TODO: fix me\n isNonEmptyArray(migratedConfig['pip-compile'].managerFilePatterns)\n ) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig['pip-compile'].managerFilePatterns = migratedConfig[\n 'pip-compile'\n ].managerFilePatterns.map((filePattern) => {\n const pattern = filePattern as string;\n if (pattern.endsWith('.in')) {\n return pattern.replace(/\\.in$/, '.txt');\n }\n if (pattern.endsWith('.in/')) {\n return pattern.replace(/\\.in\\/$/, '.txt/');\n }\n return pattern.replace(/\\.in\\$\\/$/, '.txt$/');\n });\n }\n // @ts-expect-error -- TODO: fix me\n if (isNonEmptyArray(migratedConfig.matchManagers)) {\n // @ts-expect-error -- TODO: fix me\n if (migratedConfig.matchManagers.includes('gradle-lite')) {\n // @ts-expect-error -- TODO: fix me\n if (!migratedConfig.matchManagers.includes('gradle')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig.matchManagers.push('gradle');\n }\n // @ts-expect-error -- TODO: fix me\n migratedConfig.matchManagers = migratedConfig.matchManagers.filter(\n // @ts-expect-error -- TODO: fix me\n (manager) => manager !== 'gradle-lite',\n );\n }\n }\n // @ts-expect-error -- TODO: fix me\n if (isNonEmptyObject(migratedConfig['gradle-lite'])) {\n migratedConfig.gradle = mergeChildConfig(\n migratedConfig.gradle ?? {},\n // @ts-expect-error -- TODO: fix me\n migratedConfig['gradle-lite'],\n );\n }\n // @ts-expect-error -- TODO: fix me\n delete migratedConfig['gradle-lite'];\n const isMigrated = !dequal(config, migratedConfig);\n if (isMigrated) {\n // recursive call in case any migrated configs need further migrating\n return {\n isMigrated,\n migratedConfig: migrateConfig(migratedConfig).migratedConfig,\n };\n }\n return { isMigrated, migratedConfig };\n } catch (err) {\n logger.debug({ config, err }, 'migrateConfig() error');\n throw err;\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"migration.js","sourceRoot":"","sources":["../../lib/config/migration.ts"],"names":[],"mappings":"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","sourcesContent":["import {\n isArray,\n isBoolean,\n isNonEmptyArray,\n isNonEmptyObject,\n isObject,\n isString,\n} from '@sindresorhus/is';\nimport { dequal } from 'dequal';\nimport { logger } from '../logger';\nimport { clone } from '../util/clone';\nimport { regEx } from '../util/regex';\nimport { MigrationsService } from './migrations';\nimport { getOptions } from './options';\nimport type {\n MigratedConfig,\n MigratedRenovateConfig,\n PackageRule,\n RenovateConfig,\n RenovateOptions,\n} from './types';\nimport { mergeChildConfig } from './utils';\n\nconst options = getOptions();\nexport function fixShortHours(input: string): string {\n return input.replace(regEx(/( \\d?\\d)((a|p)m)/g), '$1:00$2');\n}\n\nlet optionTypes: Record<string, RenovateOptions['type']>;\n// Returns a migrated config\nexport function migrateConfig(\n config: RenovateConfig,\n parentKey?: string,\n): MigratedConfig {\n try {\n if (!optionTypes) {\n optionTypes = {};\n options.forEach((option) => {\n optionTypes[option.name] = option.type;\n });\n }\n const newConfig = MigrationsService.run(config, parentKey);\n const migratedConfig = clone(newConfig) as MigratedRenovateConfig;\n\n for (const [key, val] of Object.entries(newConfig)) {\n if (isString(val) && val.includes('{{baseDir}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n regEx(/{{baseDir}}/g),\n '{{packageFileDir}}',\n );\n } else if (isString(val) && val.includes('{{lookupName}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n regEx(/{{lookupName}}/g),\n '{{packageName}}',\n );\n } else if (isString(val) && val.includes('{{depNameShort}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n regEx(/{{depNameShort}}/g),\n '{{depName}}',\n );\n } else if (isString(val) && val.startsWith('{{semanticPrefix}}')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = val.replace(\n '{{semanticPrefix}}',\n '{{#if semanticCommitType}}{{semanticCommitType}}{{#if semanticCommitScope}}({{semanticCommitScope}}){{/if}}: {{/if}}',\n );\n } else if (optionTypes[key] === 'object' && isBoolean(val)) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = { enabled: val };\n } else if (optionTypes[key] === 'boolean') {\n if (val === 'true') {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = true;\n } else if (val === 'false') {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = false;\n }\n } else if (\n optionTypes[key] === 'string' &&\n isArray(val) &&\n val.length === 1\n ) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = String(val[0]);\n } else if (isArray(val)) {\n // @ts-expect-error -- TODO: fix me\n // v8 ignore else -- TODO: add test #40625\n if (isArray(migratedConfig?.[key])) {\n const newArray = [];\n // @ts-expect-error -- TODO: fix me\n for (const item of migratedConfig[key]) {\n if (isObject(item) && !isArray(item)) {\n const arrMigrate = migrateConfig(item as RenovateConfig);\n newArray.push(arrMigrate.migratedConfig);\n } else {\n newArray.push(item);\n }\n }\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = newArray;\n }\n } else if (isObject(val)) {\n const subMigrate = migrateConfig(\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] as RenovateConfig,\n key,\n );\n if (subMigrate.isMigrated) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = subMigrate.migratedConfig;\n }\n }\n\n const migratedTemplates = {\n fromVersion: 'currentVersion',\n newValueMajor: 'newMajor',\n newValueMinor: 'newMinor',\n newVersionMajor: 'newMajor',\n newVersionMinor: 'newMinor',\n toVersion: 'newVersion',\n };\n // @ts-expect-error -- TODO: fix me\n if (isString(migratedConfig[key])) {\n for (const [from, to] of Object.entries(migratedTemplates)) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig[key] = (migratedConfig[key] as string).replace(\n regEx(from, 'g'),\n to,\n );\n }\n }\n }\n const languages = [\n 'docker',\n 'dotnet',\n 'golang',\n 'java',\n 'js',\n 'node',\n 'php',\n 'python',\n 'ruby',\n 'rust',\n ];\n for (const language of languages) {\n // @ts-expect-error -- TODO: fix me\n if (isNonEmptyObject(migratedConfig[language])) {\n migratedConfig.packageRules ??= [];\n // @ts-expect-error -- TODO: fix me\n const currentContent = migratedConfig[language] as any;\n const packageRule = {\n matchCategories: [language],\n ...currentContent,\n };\n migratedConfig.packageRules.unshift(packageRule);\n // @ts-expect-error -- TODO: fix me\n delete migratedConfig[language];\n }\n }\n // Migrate nested packageRules\n if (isNonEmptyArray(migratedConfig.packageRules)) {\n const existingRules = migratedConfig.packageRules;\n migratedConfig.packageRules = [];\n for (const packageRule of existingRules) {\n // @ts-expect-error -- TODO: fix me\n if (isArray(packageRule.packageRules)) {\n logger.debug('Flattening nested packageRules');\n // merge each subrule and add to the parent list\n // @ts-expect-error -- TODO: fix me\n for (const subrule of packageRule.packageRules) {\n // TODO: fix types #22198\n const combinedRule = mergeChildConfig(\n packageRule,\n subrule as PackageRule,\n );\n // @ts-expect-error -- TODO: fix me\n delete combinedRule.packageRules;\n migratedConfig.packageRules.push(combinedRule);\n }\n } else {\n migratedConfig.packageRules.push(packageRule);\n }\n }\n }\n if (\n // @ts-expect-error -- TODO: fix me\n isNonEmptyObject(migratedConfig['pip-compile']) &&\n // @ts-expect-error -- TODO: fix me\n isNonEmptyArray(migratedConfig['pip-compile'].managerFilePatterns)\n ) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig['pip-compile'].managerFilePatterns = migratedConfig[\n 'pip-compile'\n ].managerFilePatterns.map((filePattern) => {\n const pattern = filePattern as string;\n if (pattern.endsWith('.in')) {\n return pattern.replace(/\\.in$/, '.txt');\n }\n if (pattern.endsWith('.in/')) {\n return pattern.replace(/\\.in\\/$/, '.txt/');\n }\n return pattern.replace(/\\.in\\$\\/$/, '.txt$/');\n });\n }\n // @ts-expect-error -- TODO: fix me\n if (isNonEmptyArray(migratedConfig.matchManagers)) {\n // @ts-expect-error -- TODO: fix me\n if (migratedConfig.matchManagers.includes('gradle-lite')) {\n // @ts-expect-error -- TODO: fix me\n // v8 ignore else -- TODO: add test #40625\n if (!migratedConfig.matchManagers.includes('gradle')) {\n // @ts-expect-error -- TODO: fix me\n migratedConfig.matchManagers.push('gradle');\n }\n // @ts-expect-error -- TODO: fix me\n migratedConfig.matchManagers = migratedConfig.matchManagers.filter(\n // @ts-expect-error -- TODO: fix me\n (manager) => manager !== 'gradle-lite',\n );\n }\n }\n // @ts-expect-error -- TODO: fix me\n if (isNonEmptyObject(migratedConfig['gradle-lite'])) {\n migratedConfig.gradle = mergeChildConfig(\n migratedConfig.gradle ?? {},\n // @ts-expect-error -- TODO: fix me\n migratedConfig['gradle-lite'],\n );\n }\n // @ts-expect-error -- TODO: fix me\n delete migratedConfig['gradle-lite'];\n const isMigrated = !dequal(config, migratedConfig);\n if (isMigrated) {\n // recursive call in case any migrated configs need further migrating\n return {\n isMigrated,\n migratedConfig: migrateConfig(migratedConfig).migratedConfig,\n };\n }\n return { isMigrated, migratedConfig };\n } catch (err) {\n logger.debug({ config, err }, 'migrateConfig() error');\n throw err;\n }\n}\n"]}
|
|
@@ -6,6 +6,7 @@ const abstract_migration_1 = require("../base/abstract-migration");
|
|
|
6
6
|
class CustomManagersMigration extends abstract_migration_1.AbstractMigration {
|
|
7
7
|
propertyName = 'customManagers';
|
|
8
8
|
run(value) {
|
|
9
|
+
// v8 ignore else -- TODO: add test #40625
|
|
9
10
|
if ((0, is_1.isNonEmptyArray)(value)) {
|
|
10
11
|
const customManagers = value.map((mgr) => {
|
|
11
12
|
if (mgr.customType) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"custom-managers-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/custom-managers-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAEnD,mEAA+D;AAE/D,MAAa,uBAAwB,SAAQ,sCAAiB;IAC1C,YAAY,GAAG,gBAAgB,CAAC;IAEzC,GAAG,CAAC,KAAc;QACzB,IAAI,IAAA,oBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAI,KAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5D,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,6EAA6E;YACnI,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"custom-managers-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/custom-managers-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAmD;AAEnD,mEAA+D;AAE/D,MAAa,uBAAwB,SAAQ,sCAAiB;IAC1C,YAAY,GAAG,gBAAgB,CAAC;IAEzC,GAAG,CAAC,KAAc;QACzB,0CAA0C;QAC1C,IAAI,IAAA,oBAAe,EAAC,KAAK,CAAC,EAAE,CAAC;YAC3B,MAAM,cAAc,GAAI,KAAyB,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;gBAC5D,IAAI,GAAG,CAAC,UAAU,EAAE,CAAC;oBACnB,OAAO,GAAG,CAAC;gBACb,CAAC;gBACD,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,UAAU,EAAE,OAAO,EAAE,EAAE,GAAG,CAAC,CAAC,CAAC,6EAA6E;YACnI,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAhBD,0DAgBC","sourcesContent":["import { isNonEmptyArray } from '@sindresorhus/is';\nimport type { CustomManager } from '../../../modules/manager/custom/types';\nimport { AbstractMigration } from '../base/abstract-migration';\n\nexport class CustomManagersMigration extends AbstractMigration {\n override readonly propertyName = 'customManagers';\n\n override run(value: unknown): void {\n // v8 ignore else -- TODO: add test #40625\n if (isNonEmptyArray(value)) {\n const customManagers = (value as CustomManager[]).map((mgr) => {\n if (mgr.customType) {\n return mgr;\n }\n return Object.assign({ customType: 'regex' }, mgr); // to make sure customType is at top, looks good when migration PR is created\n });\n\n this.rewrite(customManagers);\n }\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ const abstract_migration_1 = require("../base/abstract-migration");
|
|
|
7
7
|
class DatasourceMigration extends abstract_migration_1.AbstractMigration {
|
|
8
8
|
propertyName = 'datasource';
|
|
9
9
|
run(value) {
|
|
10
|
+
// v8 ignore else -- TODO: add test #40625
|
|
10
11
|
if ((0, is_1.isString)(value)) {
|
|
11
12
|
const newValue = migrateDatasource(value);
|
|
12
13
|
this.rewrite(newValue);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"datasource-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/datasource-migration.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"datasource-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/datasource-migration.ts"],"names":[],"mappings":";;;AAeA,8CAUC;AAzBD,yCAA4C;AAC5C,mEAA+D;AAE/D,MAAa,mBAAoB,SAAQ,sCAAiB;IACtC,YAAY,GAAG,YAAY,CAAC;IAErC,GAAG,CAAC,KAAc;QACzB,0CAA0C;QAC1C,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;YACpB,MAAM,QAAQ,GAAG,iBAAiB,CAAC,KAAK,CAAC,CAAC;YAC1C,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAVD,kDAUC;AAED,SAAgB,iBAAiB,CAAC,KAAa;IAC7C,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,eAAe;YAClB,OAAO,cAAc,CAAC;QACxB,KAAK,QAAQ;YACX,OAAO,gBAAgB,CAAC;QAC1B,KAAK,MAAM;YACT,OAAO,cAAc,CAAC;IAC1B,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC","sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { AbstractMigration } from '../base/abstract-migration';\n\nexport class DatasourceMigration extends AbstractMigration {\n override readonly propertyName = 'datasource';\n\n override run(value: unknown): void {\n // v8 ignore else -- TODO: add test #40625\n if (isString(value)) {\n const newValue = migrateDatasource(value);\n this.rewrite(newValue);\n }\n }\n}\n\nexport function migrateDatasource(value: string): string {\n switch (value) {\n case 'adoptium-java':\n return 'java-version';\n case 'dotnet':\n return 'dotnet-version';\n case 'node':\n return 'node-version';\n }\n return value;\n}\n"]}
|
|
@@ -7,6 +7,7 @@ class FileMatchMigration extends abstract_migration_1.AbstractMigration {
|
|
|
7
7
|
deprecated = true;
|
|
8
8
|
propertyName = 'fileMatch';
|
|
9
9
|
run(value) {
|
|
10
|
+
// v8 ignore else -- TODO: add test #40625
|
|
10
11
|
if ((0, is_1.isString)(value) || (0, is_1.isArray)(value, is_1.isString)) {
|
|
11
12
|
const fileMatch = (0, is_1.isArray)(value) ? value : [value];
|
|
12
13
|
let managerFilePatterns = this.get('managerFilePatterns') ?? [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-match-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/file-match-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAqD;AACrD,mEAA+D;AAE/D,MAAa,kBAAmB,SAAQ,sCAAiB;IACrC,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,WAAW,CAAC;IAEpC,GAAG,CAAC,KAAc;QACzB,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,YAAO,EAAC,KAAK,EAAE,aAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,IAAA,YAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAEnD,IAAI,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;YAChE,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAC9C,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CACvC,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"file-match-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/file-match-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAqD;AACrD,mEAA+D;AAE/D,MAAa,kBAAmB,SAAQ,sCAAiB;IACrC,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,WAAW,CAAC;IAEpC,GAAG,CAAC,KAAc;QACzB,0CAA0C;QAC1C,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,IAAI,IAAA,YAAO,EAAC,KAAK,EAAE,aAAQ,CAAC,EAAE,CAAC;YAChD,MAAM,SAAS,GAAG,IAAA,YAAO,EAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;YAEnD,IAAI,mBAAmB,GAAG,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;YAChE,mBAAmB,GAAG,mBAAmB,CAAC,MAAM,CAC9C,SAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC,CACvC,CAAC;YAEF,IAAI,CAAC,OAAO,CAAC,qBAAqB,EAAE,mBAAmB,CAAC,CAAC;QAC3D,CAAC;IACH,CAAC;CACF;AAjBD,gDAiBC","sourcesContent":["import { isArray, isString } from '@sindresorhus/is';\nimport { AbstractMigration } from '../base/abstract-migration';\n\nexport class FileMatchMigration extends AbstractMigration {\n override readonly deprecated = true;\n override readonly propertyName = 'fileMatch';\n\n override run(value: unknown): void {\n // v8 ignore else -- TODO: add test #40625\n if (isString(value) || isArray(value, isString)) {\n const fileMatch = isArray(value) ? value : [value];\n\n let managerFilePatterns = this.get('managerFilePatterns') ?? [];\n managerFilePatterns = managerFilePatterns.concat(\n fileMatch.map((match) => `/${match}/`),\n );\n\n this.setHard('managerFilePatterns', managerFilePatterns);\n }\n }\n}\n"]}
|
|
@@ -16,18 +16,21 @@ class HostRulesMigration extends abstract_migration_1.AbstractMigration {
|
|
|
16
16
|
const newRule = {};
|
|
17
17
|
for (const [key, value] of Object.entries(hostRule)) {
|
|
18
18
|
if (key === 'platform') {
|
|
19
|
+
// v8 ignore else -- TODO: add test #40625
|
|
19
20
|
if ((0, is_1.isString)(value)) {
|
|
20
21
|
newRule.hostType ??= value;
|
|
21
22
|
}
|
|
22
23
|
continue;
|
|
23
24
|
}
|
|
24
25
|
if (key === 'matchHost') {
|
|
26
|
+
// v8 ignore else -- TODO: add test #40625
|
|
25
27
|
if ((0, is_1.isString)(value)) {
|
|
26
28
|
newRule.matchHost ??= (0, url_1.massageHostUrl)(value);
|
|
27
29
|
}
|
|
28
30
|
continue;
|
|
29
31
|
}
|
|
30
32
|
if (key === 'hostType') {
|
|
33
|
+
// v8 ignore else -- TODO: add test #40625
|
|
31
34
|
if ((0, is_1.isString)(value)) {
|
|
32
35
|
newRule.hostType ??= (0, datasource_migration_1.migrateDatasource)(value);
|
|
33
36
|
}
|
|
@@ -38,6 +41,7 @@ class HostRulesMigration extends abstract_migration_1.AbstractMigration {
|
|
|
38
41
|
key === 'baseUrl' ||
|
|
39
42
|
key === 'hostName' ||
|
|
40
43
|
key === 'domainName') {
|
|
44
|
+
// v8 ignore else -- TODO: add test #40625
|
|
41
45
|
if ((0, is_1.isString)(value)) {
|
|
42
46
|
newRule.matchHost ??= (0, url_1.massageHostUrl)(value);
|
|
43
47
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-rules-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/host-rules-migration.ts"],"names":[],"mappings":";;;AAAA,yCAA4C;AAC5C,sEAAsE;AACtE,4CAAyC;AAGzC,2CAAmD;AACnD,mEAA+D;AAC/D,iEAA2D;AAE3D,MAAa,kBAAmB,SAAQ,sCAAiB;IACrC,YAAY,GAAG,WAAW,CAAC;IAEpC,GAAG,CAAC,KAAoC;QAC/C,MAAM,YAAY,GAAe,EAAE,CAAC;QACpC,KAAK,MAAM,QAAQ,IAAI,KAAK,EAAE,CAAC;YAC7B,gBAAgB,CAAC,QAAQ,CAAC,CAAC;YAC3B,MAAM,OAAO,GAAQ,EAAE,CAAC;YAExB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACpD,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvB,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,QAAQ,KAAK,KAAK,CAAC;oBAC7B,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,GAAG,KAAK,WAAW,EAAE,CAAC;oBACxB,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,SAAS,KAAK,IAAA,oBAAc,EAAC,KAAK,CAAC,CAAC;oBAC9C,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IAAI,GAAG,KAAK,UAAU,EAAE,CAAC;oBACvB,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,QAAQ,KAAK,IAAA,wCAAiB,EAAC,KAAK,CAAC,CAAC;oBAChD,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,IACE,GAAG,KAAK,UAAU;oBAClB,GAAG,KAAK,MAAM;oBACd,GAAG,KAAK,SAAS;oBACjB,GAAG,KAAK,UAAU;oBAClB,GAAG,KAAK,YAAY,EACpB,CAAC;oBACD,IAAI,IAAA,aAAQ,EAAC,KAAK,CAAC,EAAE,CAAC;wBACpB,OAAO,CAAC,SAAS,KAAK,IAAA,oBAAc,EAAC,KAAK,CAAC,CAAC;oBAC9C,CAAC;oBACD,SAAS;gBACX,CAAC;gBAED,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;YACvB,CAAC;YAED,YAAY,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC7B,CAAC;QAED,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;IAC7B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"host-rules-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/host-rules-migration.ts"],"names":[],"mappings":"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","sourcesContent":["import { isString } from '@sindresorhus/is';\nimport { CONFIG_VALIDATION } from '../../../constants/error-messages';\nimport { logger } from '../../../logger';\nimport type { HostRule } from '../../../types';\nimport type { LegacyHostRule } from '../../../util/host-rules';\nimport { massageHostUrl } from '../../../util/url';\nimport { AbstractMigration } from '../base/abstract-migration';\nimport { migrateDatasource } from './datasource-migration';\n\nexport class HostRulesMigration extends AbstractMigration {\n override readonly propertyName = 'hostRules';\n\n override run(value: (LegacyHostRule & HostRule)[]): void {\n const newHostRules: HostRule[] = [];\n for (const hostRule of value) {\n validateHostRule(hostRule);\n const newRule: any = {};\n\n for (const [key, value] of Object.entries(hostRule)) {\n if (key === 'platform') {\n // v8 ignore else -- TODO: add test #40625\n if (isString(value)) {\n newRule.hostType ??= value;\n }\n continue;\n }\n\n if (key === 'matchHost') {\n // v8 ignore else -- TODO: add test #40625\n if (isString(value)) {\n newRule.matchHost ??= massageHostUrl(value);\n }\n continue;\n }\n\n if (key === 'hostType') {\n // v8 ignore else -- TODO: add test #40625\n if (isString(value)) {\n newRule.hostType ??= migrateDatasource(value);\n }\n continue;\n }\n\n if (\n key === 'endpoint' ||\n key === 'host' ||\n key === 'baseUrl' ||\n key === 'hostName' ||\n key === 'domainName'\n ) {\n // v8 ignore else -- TODO: add test #40625\n if (isString(value)) {\n newRule.matchHost ??= massageHostUrl(value);\n }\n continue;\n }\n\n newRule[key] = value;\n }\n\n newHostRules.push(newRule);\n }\n\n this.rewrite(newHostRules);\n }\n}\n\nfunction validateHostRule(rule: LegacyHostRule & HostRule): void {\n const { matchHost, hostName, domainName, baseUrl, endpoint, host } = rule;\n const hosts: Record<string, string> = removeUndefinedFields({\n matchHost,\n hostName,\n domainName,\n baseUrl,\n endpoint,\n host,\n });\n\n if (Object.keys(hosts).length > 1) {\n const distinctHostValues = new Set(Object.values(hosts));\n // check if the host values are duplicated\n if (distinctHostValues.size > 1) {\n const error = new Error(CONFIG_VALIDATION);\n error.validationSource = 'config';\n error.validationMessage =\n '`hostRules` cannot contain more than one host-matching field - use `matchHost` only.';\n error.validationError =\n 'The renovate configuration file contains some invalid settings';\n throw error;\n } else {\n logger.warn(\n { hosts },\n 'Duplicate host values found, please only use `matchHost` to specify the host',\n );\n }\n }\n}\n\nfunction removeUndefinedFields(\n obj: Record<string, any>,\n): Record<string, string> {\n const result: Record<string, string> = {};\n for (const key of Object.keys(obj)) {\n if (isString(obj[key])) {\n result[key] = obj[key];\n }\n }\n return result;\n}\n"]}
|
|
@@ -6,6 +6,7 @@ const abstract_migration_1 = require("../base/abstract-migration");
|
|
|
6
6
|
class MatchDatasourcesMigration extends abstract_migration_1.AbstractMigration {
|
|
7
7
|
propertyName = 'matchDatasources';
|
|
8
8
|
run(value) {
|
|
9
|
+
// v8 ignore else -- TODO: add test #40625
|
|
9
10
|
if (Array.isArray(value)) {
|
|
10
11
|
const newValue = value.filter(is_1.isNonEmptyString).map((datasource) => {
|
|
11
12
|
switch (datasource) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match-datasources-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/match-datasources-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAoD;AACpD,mEAA+D;AAE/D,MAAa,yBAA0B,SAAQ,sCAAiB;IAC5C,YAAY,GAAG,kBAAkB,CAAC;IAE3C,GAAG,CAAC,KAAc;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjE,QAAQ,UAAU,EAAE,CAAC;oBACnB,KAAK,eAAe;wBAClB,OAAO,cAAc,CAAC;oBACxB,KAAK,QAAQ;wBACX,OAAO,gBAAgB,CAAC;oBAC1B,KAAK,MAAM;wBACT,OAAO,cAAc,CAAC;oBACxB;wBACE,OAAO,UAAU,CAAC;gBACtB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"match-datasources-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/match-datasources-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAoD;AACpD,mEAA+D;AAE/D,MAAa,yBAA0B,SAAQ,sCAAiB;IAC5C,YAAY,GAAG,kBAAkB,CAAC;IAE3C,GAAG,CAAC,KAAc;QACzB,0CAA0C;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAAC,qBAAgB,CAAC,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,EAAE;gBACjE,QAAQ,UAAU,EAAE,CAAC;oBACnB,KAAK,eAAe;wBAClB,OAAO,cAAc,CAAC;oBACxB,KAAK,QAAQ;wBACX,OAAO,gBAAgB,CAAC;oBAC1B,KAAK,MAAM;wBACT,OAAO,cAAc,CAAC;oBACxB;wBACE,OAAO,UAAU,CAAC;gBACtB,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAtBD,8DAsBC","sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { AbstractMigration } from '../base/abstract-migration';\n\nexport class MatchDatasourcesMigration extends AbstractMigration {\n override readonly propertyName = 'matchDatasources';\n\n override run(value: unknown): void {\n // v8 ignore else -- TODO: add test #40625\n if (Array.isArray(value)) {\n const newValue = value.filter(isNonEmptyString).map((datasource) => {\n switch (datasource) {\n case 'adoptium-java':\n return 'java-version';\n case 'dotnet':\n return 'dotnet-version';\n case 'node':\n return 'node-version';\n default:\n return datasource;\n }\n });\n\n this.rewrite(newValue);\n }\n }\n}\n"]}
|
|
@@ -7,6 +7,7 @@ const abstract_migration_1 = require("../base/abstract-migration");
|
|
|
7
7
|
class MatchStringsMigration extends abstract_migration_1.AbstractMigration {
|
|
8
8
|
propertyName = 'matchStrings';
|
|
9
9
|
run(value) {
|
|
10
|
+
// v8 ignore else -- TODO: add test #40625
|
|
10
11
|
if (Array.isArray(value)) {
|
|
11
12
|
const newValue = value
|
|
12
13
|
.filter(is_1.isNonEmptyString)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"match-strings-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/match-strings-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAoD;AACpD,+CAA4C;AAC5C,mEAA+D;AAE/D,MAAa,qBAAsB,SAAQ,sCAAiB;IACxC,YAAY,GAAG,cAAc,CAAC;IAEvC,GAAG,CAAC,KAAc;QACzB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK;iBACnB,MAAM,CAAC,qBAAgB,CAAC;iBACxB,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACnB,WAAW,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,CACnE,CAAC;YAEJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"match-strings-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/match-strings-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAoD;AACpD,+CAA4C;AAC5C,mEAA+D;AAE/D,MAAa,qBAAsB,SAAQ,sCAAiB;IACxC,YAAY,GAAG,cAAc,CAAC;IAEvC,GAAG,CAAC,KAAc;QACzB,0CAA0C;QAC1C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,QAAQ,GAAG,KAAK;iBACnB,MAAM,CAAC,qBAAgB,CAAC;iBACxB,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CACnB,WAAW,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,mBAAmB,CAAC,EAAE,iBAAiB,CAAC,CACnE,CAAC;YAEJ,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;QACzB,CAAC;IACH,CAAC;CACF;AAfD,sDAeC","sourcesContent":["import { isNonEmptyString } from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport { AbstractMigration } from '../base/abstract-migration';\n\nexport class MatchStringsMigration extends AbstractMigration {\n override readonly propertyName = 'matchStrings';\n\n override run(value: unknown): void {\n // v8 ignore else -- TODO: add test #40625\n if (Array.isArray(value)) {\n const newValue = value\n .filter(isNonEmptyString)\n .map((matchString) =>\n matchString.replace(regEx(/\\(\\?<lookupName>/g), '(?<packageName>'),\n );\n\n this.rewrite(newValue);\n }\n }\n}\n"]}
|
|
@@ -6,6 +6,7 @@ class NodeMigration extends abstract_migration_1.AbstractMigration {
|
|
|
6
6
|
propertyName = 'node';
|
|
7
7
|
run(value) {
|
|
8
8
|
const node = this.get('node');
|
|
9
|
+
// v8 ignore else -- TODO: add test #40625
|
|
9
10
|
if (value.enabled === true) {
|
|
10
11
|
// validated non-null
|
|
11
12
|
delete node.enabled;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"node-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/node-migration.ts"],"names":[],"mappings":";;;AACA,mEAA+D;AAE/D,MAAa,aAAc,SAAQ,sCAAiB;IAChC,YAAY,GAAG,MAAM,CAAC;IAE/B,GAAG,CAAC,KAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAC/B,IAAK,KAAwB,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC/C,qBAAqB;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"node-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/node-migration.ts"],"names":[],"mappings":";;;AACA,mEAA+D;AAE/D,MAAa,aAAc,SAAQ,sCAAiB;IAChC,YAAY,GAAG,MAAM,CAAC;IAE/B,GAAG,CAAC,KAAc;QACzB,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC;QAC/B,0CAA0C;QAC1C,IAAK,KAAwB,CAAC,OAAO,KAAK,IAAI,EAAE,CAAC;YAC/C,qBAAqB;YACrB,OAAO,IAAI,CAAC,OAAO,CAAC;YACpB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,CAAC,OAAO,GAAG,IAAI,CAAC;YACtB,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,CAAC;gBAC7B,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;YACrB,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;YACtB,CAAC;YACD,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;QACnC,CAAC;IACH,CAAC;CACF;AAnBD,sCAmBC","sourcesContent":["import type { RenovateConfig } from '../../types';\nimport { AbstractMigration } from '../base/abstract-migration';\n\nexport class NodeMigration extends AbstractMigration {\n override readonly propertyName = 'node';\n\n override run(value: unknown): void {\n const node = this.get('node')!;\n // v8 ignore else -- TODO: add test #40625\n if ((value as RenovateConfig).enabled === true) {\n // validated non-null\n delete node.enabled;\n const travis = this.get('travis') ?? {};\n travis.enabled = true;\n if (Object.keys(node).length) {\n this.rewrite(node);\n } else {\n this.delete('node');\n }\n this.setSafely('travis', travis);\n }\n }\n}\n"]}
|
|
@@ -8,9 +8,11 @@ class PackageFilesMigration extends abstract_migration_1.AbstractMigration {
|
|
|
8
8
|
propertyName = 'packageFiles';
|
|
9
9
|
run(value) {
|
|
10
10
|
const packageRules = this.get('packageRules') ?? [];
|
|
11
|
+
// v8 ignore else -- TODO: add test #40625
|
|
11
12
|
if ((0, is_1.isArray)(value)) {
|
|
12
13
|
const fileList = [];
|
|
13
14
|
for (const packageFile of value) {
|
|
15
|
+
// v8 ignore else -- TODO: add test #40625
|
|
14
16
|
if ((0, is_1.isNonEmptyObject)(packageFile) &&
|
|
15
17
|
'packageFile' in packageFile &&
|
|
16
18
|
(0, is_1.isString)(packageFile.packageFile)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"package-files-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/package-files-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAuE;AAEvE,mEAA+D;AAE/D,MAAa,qBAAsB,SAAQ,sCAAiB;IACxC,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,cAAc,CAAC;IAEvC,GAAG,CAAC,KAAc;QACzB,MAAM,YAAY,GAAkB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACnE,IAAI,IAAA,YAAO,EAAC,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE,CAAC;gBAChC,IACE,IAAA,qBAAgB,EAAC,WAAW,CAAC;oBAC7B,aAAa,IAAI,WAAW;oBAC5B,IAAA,aAAQ,EAAC,WAAW,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBACvC,WAAW,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAC9C,OAAO,WAAW,CAAC,WAAW,CAAC;oBAE/B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxC,YAAY,CAAC,IAAI,CAAC;4BAChB,GAAG,WAAW;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAA,YAAO,EAAC,WAAW,EAAE,aAAQ,CAAC,EAAE,CAAC;oBAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAChC,CAAC;qBAAM,IAAI,IAAA,aAAQ,EAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"package-files-migration.js","sourceRoot":"","sources":["../../../../lib/config/migrations/custom/package-files-migration.ts"],"names":[],"mappings":";;;AAAA,yCAAuE;AAEvE,mEAA+D;AAE/D,MAAa,qBAAsB,SAAQ,sCAAiB;IACxC,UAAU,GAAG,IAAI,CAAC;IAClB,YAAY,GAAG,cAAc,CAAC;IAEvC,GAAG,CAAC,KAAc;QACzB,MAAM,YAAY,GAAkB,IAAI,CAAC,GAAG,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACnE,0CAA0C;QAC1C,IAAI,IAAA,YAAO,EAAC,KAAK,CAAC,EAAE,CAAC;YACnB,MAAM,QAAQ,GAAa,EAAE,CAAC;YAC9B,KAAK,MAAM,WAAW,IAAI,KAAK,EAAE,CAAC;gBAChC,0CAA0C;gBAC1C,IACE,IAAA,qBAAgB,EAAC,WAAW,CAAC;oBAC7B,aAAa,IAAI,WAAW;oBAC5B,IAAA,aAAQ,EAAC,WAAW,CAAC,WAAW,CAAC,EACjC,CAAC;oBACD,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBACvC,WAAW,CAAC,KAAK,GAAG,CAAC,WAAW,CAAC,WAAW,CAAC,CAAC;oBAC9C,OAAO,WAAW,CAAC,WAAW,CAAC;oBAE/B,IAAI,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBACxC,YAAY,CAAC,IAAI,CAAC;4BAChB,GAAG,WAAW;yBACf,CAAC,CAAC;oBACL,CAAC;gBACH,CAAC;qBAAM,IAAI,IAAA,YAAO,EAAC,WAAW,EAAE,aAAQ,CAAC,EAAE,CAAC;oBAC1C,QAAQ,CAAC,IAAI,CAAC,GAAG,WAAW,CAAC,CAAC;gBAChC,CAAC;qBAAM,IAAI,IAAA,aAAQ,EAAC,WAAW,CAAC,EAAE,CAAC;oBACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;gBAC7B,CAAC;YACH,CAAC;YACD,IAAI,QAAQ,CAAC,MAAM,EAAE,CAAC;gBACpB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,QAAQ,CAAC,CAAC;YAC3C,CAAC;YACD,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;gBACxB,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;CACF;AAvCD,sDAuCC","sourcesContent":["import { isArray, isNonEmptyObject, isString } from '@sindresorhus/is';\nimport type { PackageRule } from '../../types';\nimport { AbstractMigration } from '../base/abstract-migration';\n\nexport class PackageFilesMigration extends AbstractMigration {\n override readonly deprecated = true;\n override readonly propertyName = 'packageFiles';\n\n override run(value: unknown): void {\n const packageRules: PackageRule[] = this.get('packageRules') ?? [];\n // v8 ignore else -- TODO: add test #40625\n if (isArray(value)) {\n const fileList: string[] = [];\n for (const packageFile of value) {\n // v8 ignore else -- TODO: add test #40625\n if (\n isNonEmptyObject(packageFile) &&\n 'packageFile' in packageFile &&\n isString(packageFile.packageFile)\n ) {\n fileList.push(packageFile.packageFile);\n packageFile.paths = [packageFile.packageFile];\n delete packageFile.packageFile;\n\n if (Object.keys(packageFile).length > 1) {\n packageRules.push({\n ...packageFile,\n });\n }\n } else if (isArray(packageFile, isString)) {\n fileList.push(...packageFile);\n } else if (isString(packageFile)) {\n fileList.push(packageFile);\n }\n }\n if (fileList.length) {\n this.setSafely('includePaths', fileList);\n }\n if (packageRules.length) {\n this.setSafely('packageRules', packageRules);\n }\n }\n }\n}\n"]}
|
|
@@ -32,6 +32,7 @@ function mergeMatchers(packageRule) {
|
|
|
32
32
|
const patterns = (0, is_1.isString)(val) ? [val] : val;
|
|
33
33
|
// depName
|
|
34
34
|
if (key === 'matchDepPrefixes') {
|
|
35
|
+
// v8 ignore else -- TODO: add test #40625
|
|
35
36
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
36
37
|
newPackageRule.matchDepNames ??= [];
|
|
37
38
|
newPackageRule.matchDepNames.push(...patterns.map((v) => `${v}{/,}**`));
|
|
@@ -40,6 +41,7 @@ function mergeMatchers(packageRule) {
|
|
|
40
41
|
delete newPackageRule.matchDepPrefixes;
|
|
41
42
|
}
|
|
42
43
|
if (key === 'matchDepPatterns') {
|
|
44
|
+
// v8 ignore else -- TODO: add test #40625
|
|
43
45
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
44
46
|
newPackageRule.matchDepNames ??= [];
|
|
45
47
|
newPackageRule.matchDepNames.push(...patterns.map((v) => `/${v}/`));
|
|
@@ -48,6 +50,7 @@ function mergeMatchers(packageRule) {
|
|
|
48
50
|
delete newPackageRule.matchDepPatterns;
|
|
49
51
|
}
|
|
50
52
|
if (key === 'excludeDepNames') {
|
|
53
|
+
// v8 ignore else -- TODO: add test #40625
|
|
51
54
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
52
55
|
newPackageRule.matchDepNames ??= [];
|
|
53
56
|
newPackageRule.matchDepNames.push(...patterns.map((v) => `!${v}`));
|
|
@@ -56,6 +59,7 @@ function mergeMatchers(packageRule) {
|
|
|
56
59
|
delete newPackageRule.excludeDepNames;
|
|
57
60
|
}
|
|
58
61
|
if (key === 'excludeDepPrefixes') {
|
|
62
|
+
// v8 ignore else -- TODO: add test #40625
|
|
59
63
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
60
64
|
newPackageRule.matchDepNames ??= [];
|
|
61
65
|
newPackageRule.matchDepNames.push(...patterns.map((v) => `!${v}{/,}**`));
|
|
@@ -64,6 +68,7 @@ function mergeMatchers(packageRule) {
|
|
|
64
68
|
delete newPackageRule.excludeDepPrefixes;
|
|
65
69
|
}
|
|
66
70
|
if (key === 'excludeDepPatterns') {
|
|
71
|
+
// v8 ignore else -- TODO: add test #40625
|
|
67
72
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
68
73
|
newPackageRule.matchDepNames ??= [];
|
|
69
74
|
newPackageRule.matchDepNames.push(...patterns.map((v) => `!/${v}/`));
|
|
@@ -73,6 +78,7 @@ function mergeMatchers(packageRule) {
|
|
|
73
78
|
}
|
|
74
79
|
// packageName
|
|
75
80
|
if (key === 'matchPackagePrefixes') {
|
|
81
|
+
// v8 ignore else -- TODO: add test #40625
|
|
76
82
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
77
83
|
newPackageRule.matchPackageNames ??= [];
|
|
78
84
|
newPackageRule.matchPackageNames.push(...patterns.map((v) => `${v}{/,}**`));
|
|
@@ -81,6 +87,7 @@ function mergeMatchers(packageRule) {
|
|
|
81
87
|
delete newPackageRule.matchPackagePrefixes;
|
|
82
88
|
}
|
|
83
89
|
if (key === 'matchPackagePatterns') {
|
|
90
|
+
// v8 ignore else -- TODO: add test #40625
|
|
84
91
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
85
92
|
newPackageRule.matchPackageNames ??= [];
|
|
86
93
|
newPackageRule.matchPackageNames.push(...patterns.map((v) => {
|
|
@@ -94,6 +101,7 @@ function mergeMatchers(packageRule) {
|
|
|
94
101
|
delete newPackageRule.matchPackagePatterns;
|
|
95
102
|
}
|
|
96
103
|
if (key === 'excludePackageNames') {
|
|
104
|
+
// v8 ignore else -- TODO: add test #40625
|
|
97
105
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
98
106
|
newPackageRule.matchPackageNames ??= [];
|
|
99
107
|
newPackageRule.matchPackageNames.push(...patterns.map((v) => `!${v}`));
|
|
@@ -102,6 +110,7 @@ function mergeMatchers(packageRule) {
|
|
|
102
110
|
delete newPackageRule.excludePackageNames;
|
|
103
111
|
}
|
|
104
112
|
if (key === 'excludePackagePrefixes') {
|
|
113
|
+
// v8 ignore else -- TODO: add test #40625
|
|
105
114
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
106
115
|
newPackageRule.matchPackageNames ??= [];
|
|
107
116
|
newPackageRule.matchPackageNames.push(...patterns.map((v) => `!${v}{/,}**`));
|
|
@@ -110,6 +119,7 @@ function mergeMatchers(packageRule) {
|
|
|
110
119
|
delete newPackageRule.excludePackagePrefixes;
|
|
111
120
|
}
|
|
112
121
|
if (key === 'excludePackagePatterns') {
|
|
122
|
+
// v8 ignore else -- TODO: add test #40625
|
|
113
123
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
114
124
|
newPackageRule.matchPackageNames ??= [];
|
|
115
125
|
newPackageRule.matchPackageNames.push(...patterns.map((v) => `!/${v}/`));
|
|
@@ -119,6 +129,7 @@ function mergeMatchers(packageRule) {
|
|
|
119
129
|
}
|
|
120
130
|
// sourceUrl
|
|
121
131
|
if (key === 'matchSourceUrlPrefixes') {
|
|
132
|
+
// v8 ignore else -- TODO: add test #40625
|
|
122
133
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
123
134
|
newPackageRule.matchSourceUrls ??= [];
|
|
124
135
|
newPackageRule.matchSourceUrls.push(...patterns.map((v) => `${v}{/,}**`));
|
|
@@ -128,6 +139,7 @@ function mergeMatchers(packageRule) {
|
|
|
128
139
|
}
|
|
129
140
|
// repository
|
|
130
141
|
if (key === 'excludeRepositories') {
|
|
142
|
+
// v8 ignore else -- TODO: add test #40625
|
|
131
143
|
if ((0, is_1.isArray)(patterns, is_1.isString)) {
|
|
132
144
|
newPackageRule.matchRepositories ??= [];
|
|
133
145
|
newPackageRule.matchRepositories.push(...patterns.map((v) => `!${v}`));
|
|
@@ -142,6 +154,7 @@ class PackageRulesMigration extends abstract_migration_1.AbstractMigration {
|
|
|
142
154
|
propertyName = 'packageRules';
|
|
143
155
|
run(value) {
|
|
144
156
|
let packageRules = this.get('packageRules');
|
|
157
|
+
// v8 ignore else -- TODO: add test #40625
|
|
145
158
|
if ((0, is_1.isNonEmptyArray)(packageRules)) {
|
|
146
159
|
packageRules = packageRules.map(renameKeys);
|
|
147
160
|
packageRules = packageRules.map(mergeMatchers);
|