renovate 41.31.0 → 41.32.0

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.
Files changed (45) hide show
  1. package/dist/config/options/index.js +1 -1
  2. package/dist/config/options/index.js.map +1 -1
  3. package/dist/logger/cmd-serializer.js +2 -1
  4. package/dist/logger/cmd-serializer.js.map +1 -1
  5. package/dist/logger/err-serializer.js +2 -2
  6. package/dist/logger/err-serializer.js.map +1 -1
  7. package/dist/logger/pretty-stdout.js +2 -1
  8. package/dist/logger/pretty-stdout.js.map +1 -1
  9. package/dist/logger/utils.js +1 -1
  10. package/dist/logger/utils.js.map +1 -1
  11. package/dist/modules/datasource/conan/index.js +2 -1
  12. package/dist/modules/datasource/conan/index.js.map +1 -1
  13. package/dist/modules/datasource/gradle-version/index.js +2 -1
  14. package/dist/modules/datasource/gradle-version/index.js.map +1 -1
  15. package/dist/modules/datasource/hexpm-bob/index.js +2 -1
  16. package/dist/modules/datasource/hexpm-bob/index.js.map +1 -1
  17. package/dist/modules/manager/bazel/artifacts.js +2 -2
  18. package/dist/modules/manager/bazel/artifacts.js.map +1 -1
  19. package/dist/modules/manager/conan/extract.js +2 -2
  20. package/dist/modules/manager/conan/extract.js.map +1 -1
  21. package/dist/modules/manager/cpanfile/parser.js +2 -1
  22. package/dist/modules/manager/cpanfile/parser.js.map +1 -1
  23. package/dist/modules/manager/crossplane/schema.js +2 -1
  24. package/dist/modules/manager/crossplane/schema.js.map +1 -1
  25. package/dist/modules/manager/mise/upgradeable-tooling.js +8 -7
  26. package/dist/modules/manager/mise/upgradeable-tooling.js.map +1 -1
  27. package/dist/modules/manager/pip_setup/extract.js +1 -1
  28. package/dist/modules/manager/pip_setup/extract.js.map +1 -1
  29. package/dist/modules/manager/poetry/artifacts.js +1 -1
  30. package/dist/modules/manager/poetry/artifacts.js.map +1 -1
  31. package/dist/modules/manager/vendir/schema.js +3 -2
  32. package/dist/modules/manager/vendir/schema.js.map +1 -1
  33. package/dist/modules/versioning/maven/compare.js +1 -1
  34. package/dist/modules/versioning/maven/compare.js.map +1 -1
  35. package/dist/modules/versioning/perl/index.js +1 -1
  36. package/dist/modules/versioning/perl/index.js.map +1 -1
  37. package/dist/util/template/index.d.ts +1 -0
  38. package/dist/util/template/index.js +1 -0
  39. package/dist/util/template/index.js.map +1 -1
  40. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js +3 -0
  41. package/dist/workers/repository/update/branch/execute-post-upgrade-commands.js.map +1 -1
  42. package/dist/workers/repository/update/pr/body/index.js +3 -0
  43. package/dist/workers/repository/update/pr/body/index.js.map +1 -1
  44. package/package.json +2 -2
  45. package/renovate-schema.json +1 -1
@@ -1,9 +1,10 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = cmdSerializer;
4
+ const regex_1 = require("../util/regex");
4
5
  function cmdSerializer(cmd) {
5
6
  if (typeof cmd === 'string') {
6
- return cmd.replace(/https:\/\/[^@]*@/g, 'https://**redacted**@'); // TODO #12874
7
+ return cmd.replace((0, regex_1.regEx)(/https:\/\/[^@]*@/g), 'https://**redacted**@');
7
8
  }
8
9
  return cmd;
9
10
  }
@@ -1 +1 @@
1
- {"version":3,"file":"cmd-serializer.js","sourceRoot":"","sources":["../../lib/logger/cmd-serializer.ts"],"names":[],"mappings":";;AAAA,gCAOC;AAPD,SAAwB,aAAa,CACnC,GAAsB;IAEtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,mBAAmB,EAAE,uBAAuB,CAAC,CAAC,CAAC,cAAc;IAClF,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["export default function cmdSerializer(\n cmd: string | string[],\n): string | string[] {\n if (typeof cmd === 'string') {\n return cmd.replace(/https:\\/\\/[^@]*@/g, 'https://**redacted**@'); // TODO #12874\n }\n return cmd;\n}\n"]}
1
+ {"version":3,"file":"cmd-serializer.js","sourceRoot":"","sources":["../../lib/logger/cmd-serializer.ts"],"names":[],"mappings":";;AAEA,gCAOC;AATD,yCAAsC;AAEtC,SAAwB,aAAa,CACnC,GAAsB;IAEtB,IAAI,OAAO,GAAG,KAAK,QAAQ,EAAE,CAAC;QAC5B,OAAO,GAAG,CAAC,OAAO,CAAC,IAAA,aAAK,EAAC,mBAAmB,CAAC,EAAE,uBAAuB,CAAC,CAAC;IAC1E,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC","sourcesContent":["import { regEx } from '../util/regex';\n\nexport default function cmdSerializer(\n cmd: string | string[],\n): string | string[] {\n if (typeof cmd === 'string') {\n return cmd.replace(regEx(/https:\\/\\/[^@]*@/g), 'https://**redacted**@');\n }\n return cmd;\n}\n"]}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.default = errSerializer;
4
4
  const tslib_1 = require("tslib");
5
5
  const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
6
+ const regex_1 = require("../util/regex");
6
7
  const utils_1 = tslib_1.__importDefault(require("./utils"));
7
8
  Error.stackTraceLimit = 20;
8
9
  function errSerializer(err) {
@@ -12,8 +13,7 @@ function errSerializer(err) {
12
13
  for (const field of redactedFields) {
13
14
  const val = response[field];
14
15
  if (is_1.default.string(val)) {
15
- response[field] = val.replace(/https:\/\/[^@]*?@/g, // TODO #12874
16
- 'https://**redacted**@');
16
+ response[field] = val.replace((0, regex_1.regEx)(/https:\/\/[^@]*?@/g), 'https://**redacted**@');
17
17
  }
18
18
  }
19
19
  return response;
@@ -1 +1 @@
1
- {"version":3,"file":"err-serializer.js","sourceRoot":"","sources":["../../lib/logger/err-serializer.ts"],"names":[],"mappings":";;AAKA,gCAeC;;AApBD,kEAAkC;AAClC,4DAAmC;AAEnC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAE3B,SAAwB,aAAa,CAAC,GAAU;IAC9C,MAAM,QAAQ,GAA4B,IAAA,eAAY,EAAC,GAAG,CAAC,CAAC;IAE5D,oCAAoC;IACpC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,YAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAC3B,oBAAoB,EAAE,cAAc;YACpC,uBAAuB,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport prepareError from './utils';\n\nError.stackTraceLimit = 20;\n\nexport default function errSerializer(err: Error): any {\n const response: Record<string, unknown> = prepareError(err);\n\n // already done by `sanitizeValue` ?\n const redactedFields = ['message', 'stack', 'stdout', 'stderr'];\n for (const field of redactedFields) {\n const val = response[field];\n if (is.string(val)) {\n response[field] = val.replace(\n /https:\\/\\/[^@]*?@/g, // TODO #12874\n 'https://**redacted**@',\n );\n }\n }\n return response;\n}\n"]}
1
+ {"version":3,"file":"err-serializer.js","sourceRoot":"","sources":["../../lib/logger/err-serializer.ts"],"names":[],"mappings":";;AAMA,gCAeC;;AArBD,kEAAkC;AAClC,yCAAsC;AACtC,4DAAmC;AAEnC,KAAK,CAAC,eAAe,GAAG,EAAE,CAAC;AAE3B,SAAwB,aAAa,CAAC,GAAU;IAC9C,MAAM,QAAQ,GAA4B,IAAA,eAAY,EAAC,GAAG,CAAC,CAAC;IAE5D,oCAAoC;IACpC,MAAM,cAAc,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,CAAC,CAAC;IAChE,KAAK,MAAM,KAAK,IAAI,cAAc,EAAE,CAAC;QACnC,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,YAAE,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC;YACnB,QAAQ,CAAC,KAAK,CAAC,GAAG,GAAG,CAAC,OAAO,CAC3B,IAAA,aAAK,EAAC,oBAAoB,CAAC,EAC3B,uBAAuB,CACxB,CAAC;QACJ,CAAC;IACH,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../util/regex';\nimport prepareError from './utils';\n\nError.stackTraceLimit = 20;\n\nexport default function errSerializer(err: Error): any {\n const response: Record<string, unknown> = prepareError(err);\n\n // already done by `sanitizeValue` ?\n const redactedFields = ['message', 'stack', 'stdout', 'stderr'];\n for (const field of redactedFields) {\n const val = response[field];\n if (is.string(val)) {\n response[field] = val.replace(\n regEx(/https:\\/\\/[^@]*?@/g),\n 'https://**redacted**@',\n );\n }\n }\n return response;\n}\n"]}
@@ -12,6 +12,7 @@ const node_stream_1 = require("node:stream");
12
12
  const util = tslib_1.__importStar(require("node:util"));
13
13
  const chalk_1 = tslib_1.__importDefault(require("chalk"));
14
14
  const json_stringify_pretty_compact_1 = tslib_1.__importDefault(require("json-stringify-pretty-compact"));
15
+ const regex_1 = require("../util/regex");
15
16
  const bunyanFields = [
16
17
  'name',
17
18
  'hostname',
@@ -41,7 +42,7 @@ const levels = {
41
42
  };
42
43
  function indent(str, leading = false) {
43
44
  const prefix = leading ? ' ' : '';
44
- return prefix + str.split(/\r?\n/).join('\n '); // TODO #12874
45
+ return prefix + str.split((0, regex_1.regEx)(/\r?\n/)).join('\n ');
45
46
  }
46
47
  function getMeta(rec) {
47
48
  if (!rec) {
@@ -1 +1 @@
1
- {"version":3,"file":"pretty-stdout.js","sourceRoot":"","sources":["../../lib/logger/pretty-stdout.ts"],"names":[],"mappings":"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","sourcesContent":["// Code originally derived from https://github.com/hadfieldn/node-bunyan-prettystream but since heavily edited\n// Neither fork nor original repo appear to be maintained\n\nimport { Stream } from 'node:stream';\nimport * as util from 'node:util';\nimport chalk from 'chalk';\nimport stringify from 'json-stringify-pretty-compact';\nimport type { BunyanRecord } from './types';\n\nconst bunyanFields = [\n 'name',\n 'hostname',\n 'pid',\n 'level',\n 'v',\n 'time',\n 'msg',\n 'start_time',\n];\nconst metaFields = [\n 'repository',\n 'baseBranch',\n 'packageFile',\n 'depType',\n 'dependency',\n 'dependencies',\n 'branch',\n];\n\nconst levels: Record<number, string> = {\n 10: chalk.gray('TRACE'),\n 20: chalk.blue('DEBUG'),\n 30: chalk.green(' INFO'),\n 40: chalk.magenta(' WARN'),\n 50: chalk.red('ERROR'),\n 60: chalk.bgRed('FATAL'),\n};\n\nexport function indent(str: string, leading = false): string {\n const prefix = leading ? ' ' : '';\n return prefix + str.split(/\\r?\\n/).join('\\n '); // TODO #12874\n}\n\nexport function getMeta(rec: BunyanRecord): string {\n if (!rec) {\n return '';\n }\n let res = rec.module ? ` [${rec.module}]` : ``;\n const filteredMeta = metaFields.filter((elem) => rec[elem]);\n if (!filteredMeta.length) {\n return res;\n }\n const metaStr = filteredMeta\n .map((field) => `${field}=${String(rec[field])}`)\n .join(', ');\n res = ` (${metaStr})${res}`;\n return chalk.gray(res);\n}\n\nexport function getDetails(rec: BunyanRecord): string {\n if (!rec) {\n return '';\n }\n const recFiltered = { ...rec };\n delete recFiltered.module;\n Object.keys(recFiltered).forEach((key) => {\n if (\n key === 'logContext' ||\n bunyanFields.includes(key) ||\n metaFields.includes(key)\n ) {\n delete recFiltered[key];\n }\n });\n const remainingKeys = Object.keys(recFiltered);\n if (remainingKeys.length === 0) {\n return '';\n }\n return `${remainingKeys\n .map((key) => `${indent(`\"${key}\": ${stringify(recFiltered[key])}`, true)}`)\n .join(',\\n')}\\n`;\n}\n\nexport function formatRecord(rec: BunyanRecord): string {\n const level = levels[rec.level];\n const msg = `${indent(rec.msg)}`;\n const meta = getMeta(rec);\n const details = getDetails(rec);\n return util.format('%s: %s%s\\n%s', level, msg, meta, details);\n}\n\nexport class RenovateStream extends Stream {\n readable: boolean;\n\n writable: boolean;\n\n constructor() {\n super();\n this.readable = true;\n this.writable = true;\n }\n\n write(data: BunyanRecord): boolean {\n this.emit('data', formatRecord(data));\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"pretty-stdout.js","sourceRoot":"","sources":["../../lib/logger/pretty-stdout.ts"],"names":[],"mappings":"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","sourcesContent":["// Code originally derived from https://github.com/hadfieldn/node-bunyan-prettystream but since heavily edited\n// Neither fork nor original repo appear to be maintained\n\nimport { Stream } from 'node:stream';\nimport * as util from 'node:util';\nimport chalk from 'chalk';\nimport stringify from 'json-stringify-pretty-compact';\nimport { regEx } from '../util/regex';\nimport type { BunyanRecord } from './types';\n\nconst bunyanFields = [\n 'name',\n 'hostname',\n 'pid',\n 'level',\n 'v',\n 'time',\n 'msg',\n 'start_time',\n];\nconst metaFields = [\n 'repository',\n 'baseBranch',\n 'packageFile',\n 'depType',\n 'dependency',\n 'dependencies',\n 'branch',\n];\n\nconst levels: Record<number, string> = {\n 10: chalk.gray('TRACE'),\n 20: chalk.blue('DEBUG'),\n 30: chalk.green(' INFO'),\n 40: chalk.magenta(' WARN'),\n 50: chalk.red('ERROR'),\n 60: chalk.bgRed('FATAL'),\n};\n\nexport function indent(str: string, leading = false): string {\n const prefix = leading ? ' ' : '';\n return prefix + str.split(regEx(/\\r?\\n/)).join('\\n ');\n}\n\nexport function getMeta(rec: BunyanRecord): string {\n if (!rec) {\n return '';\n }\n let res = rec.module ? ` [${rec.module}]` : ``;\n const filteredMeta = metaFields.filter((elem) => rec[elem]);\n if (!filteredMeta.length) {\n return res;\n }\n const metaStr = filteredMeta\n .map((field) => `${field}=${String(rec[field])}`)\n .join(', ');\n res = ` (${metaStr})${res}`;\n return chalk.gray(res);\n}\n\nexport function getDetails(rec: BunyanRecord): string {\n if (!rec) {\n return '';\n }\n const recFiltered = { ...rec };\n delete recFiltered.module;\n Object.keys(recFiltered).forEach((key) => {\n if (\n key === 'logContext' ||\n bunyanFields.includes(key) ||\n metaFields.includes(key)\n ) {\n delete recFiltered[key];\n }\n });\n const remainingKeys = Object.keys(recFiltered);\n if (remainingKeys.length === 0) {\n return '';\n }\n return `${remainingKeys\n .map((key) => `${indent(`\"${key}\": ${stringify(recFiltered[key])}`, true)}`)\n .join(',\\n')}\\n`;\n}\n\nexport function formatRecord(rec: BunyanRecord): string {\n const level = levels[rec.level];\n const msg = `${indent(rec.msg)}`;\n const meta = getMeta(rec);\n const details = getDetails(rec);\n return util.format('%s: %s%s\\n%s', level, msg, meta, details);\n}\n\nexport class RenovateStream extends Stream {\n readable: boolean;\n\n writable: boolean;\n\n constructor() {\n super();\n this.readable = true;\n this.writable = true;\n }\n\n write(data: BunyanRecord): boolean {\n this.emit('data', formatRecord(data));\n return true;\n }\n}\n"]}
@@ -222,7 +222,7 @@ function withSanitizer(streamConfig) {
222
222
  const raw = sanitizeValue(chunk);
223
223
  const result = streamConfig.type === 'raw'
224
224
  ? raw
225
- : JSON.stringify(raw, bunyan_1.default.safeCycles()).replace(/\n?$/, '\n'); // TODO #12874
225
+ : JSON.stringify(raw, bunyan_1.default.safeCycles()).replace((0, regex_1.regEx)(/\n?$/), '\n');
226
226
  stream.write(result, enc, cb);
227
227
  };
228
228
  return {
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/logger/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Stream } from 'node:stream';\nimport is from '@sindresorhus/is';\nimport bunyan from 'bunyan';\nimport fs from 'fs-extra';\nimport { RequestError as HttpError } from 'got';\nimport { ZodError } from 'zod';\nimport { regEx } from '../util/regex';\nimport { redactedFields, sanitize } from '../util/sanitize';\nimport type { BunyanRecord, BunyanStream } from './types';\n\nconst excludeProps = ['pid', 'time', 'v', 'hostname'];\n\nexport class ProblemStream extends Stream {\n private _problems: BunyanRecord[] = [];\n\n readable: boolean;\n\n writable: boolean;\n\n constructor() {\n super();\n this.readable = false;\n this.writable = true;\n }\n\n write(data: BunyanRecord): boolean {\n const problem = { ...data };\n for (const prop of excludeProps) {\n delete problem[prop];\n }\n this._problems.push(problem);\n return true;\n }\n\n getProblems(): BunyanRecord[] {\n return this._problems;\n }\n\n clearProblems(): void {\n this._problems = [];\n }\n}\n\nconst contentFields = [\n 'content',\n 'contents',\n 'packageLockParsed',\n 'yarnLockParsed',\n];\n\ntype ZodShortenedIssue =\n | null\n | string\n | string[]\n | {\n [key: string]: ZodShortenedIssue;\n };\n\nexport function prepareZodIssues(input: unknown): ZodShortenedIssue {\n if (!is.plainObject(input)) {\n return null;\n }\n\n let err: null | string | string[] = null;\n if (is.array(input._errors, is.string)) {\n if (input._errors.length === 1) {\n err = input._errors[0];\n } else if (input._errors.length > 1) {\n err = input._errors;\n } else {\n err = null;\n }\n }\n delete input._errors;\n\n if (is.emptyObject(input)) {\n return err;\n }\n\n const output: Record<string, ZodShortenedIssue> = {};\n const entries = Object.entries(input);\n for (const [key, value] of entries.slice(0, 3)) {\n const child = prepareZodIssues(value);\n if (child !== null) {\n output[key] = child;\n }\n }\n\n if (entries.length > 3) {\n output.___ = `... ${entries.length - 3} more`;\n }\n\n return output;\n}\n\nexport function prepareZodError(err: ZodError): Record<string, unknown> {\n Object.defineProperty(err, 'message', {\n get: () => 'Schema error',\n /* v8 ignore next 3 -- TODO: drop set? */\n set: () => {\n /* intentionally empty */\n },\n });\n\n return {\n message: err.message,\n stack: err.stack,\n issues: prepareZodIssues(err.format()),\n };\n}\n\nexport default function prepareError(err: Error): Record<string, unknown> {\n if (err instanceof ZodError) {\n return prepareZodError(err);\n }\n\n const response: Record<string, unknown> = {\n ...err,\n };\n\n // Required as message is non-enumerable\n if (!response.message && err.message) {\n response.message = err.message;\n }\n\n // Required as stack is non-enumerable\n if (!response.stack && err.stack) {\n response.stack = err.stack;\n }\n\n if (err instanceof AggregateError) {\n response.errors = err.errors.map((error) => prepareError(error));\n }\n\n // handle got error\n if (err instanceof HttpError) {\n const options: Record<string, unknown> = {\n headers: structuredClone(err.options.headers),\n url: err.options.url?.toString(),\n hostType: err.options.context.hostType,\n };\n response.options = options;\n\n options.username = err.options.username;\n options.password = err.options.password;\n options.method = err.options.method;\n options.http2 = err.options.http2;\n\n if (err.response) {\n response.response = {\n statusCode: err.response.statusCode,\n statusMessage: err.response.statusMessage,\n body:\n err.name === 'TimeoutError'\n ? undefined\n : structuredClone(err.response.body),\n headers: structuredClone(err.response.headers),\n httpVersion: err.response.httpVersion,\n retryCount: err.response.retryCount,\n };\n }\n }\n\n return response;\n}\n\ntype NestedValue = unknown[] | object;\n\nfunction isNested(value: unknown): value is NestedValue {\n return is.array(value) || is.object(value);\n}\n\nexport function sanitizeValue(\n value: unknown,\n seen = new WeakMap<NestedValue, unknown>(),\n): any {\n if (is.string(value)) {\n return sanitize(sanitizeUrls(value));\n }\n\n if (is.date(value)) {\n return value;\n }\n\n if (is.function(value)) {\n return '[function]';\n }\n\n if (is.buffer(value)) {\n return '[content]';\n }\n\n if (is.error(value)) {\n const err = prepareError(value);\n return sanitizeValue(err, seen);\n }\n\n if (is.array(value)) {\n const length = value.length;\n const arrayResult = Array(length);\n seen.set(value, arrayResult);\n for (let idx = 0; idx < length; idx += 1) {\n const val = value[idx];\n arrayResult[idx] =\n isNested(val) && seen.has(val)\n ? seen.get(val)\n : sanitizeValue(val, seen);\n }\n return arrayResult;\n }\n\n if (is.object(value)) {\n const objectResult: Record<string, any> = {};\n seen.set(value, objectResult);\n for (const [key, val] of Object.entries<any>(value)) {\n let curValue: any;\n if (!val) {\n curValue = val;\n } else if (redactedFields.includes(key)) {\n // Do not mask/sanitize secrets templates\n if (is.string(val) && regEx(/^{{\\s*secrets\\..*}}$/).test(val)) {\n curValue = val;\n } else {\n curValue = '***********';\n }\n } else if (contentFields.includes(key)) {\n curValue = '[content]';\n } else if (key === 'secrets') {\n curValue = {};\n Object.keys(val).forEach((secretKey) => {\n curValue[secretKey] = '***********';\n });\n } else {\n curValue = seen.has(val) ? seen.get(val) : sanitizeValue(val, seen);\n }\n\n objectResult[key] = curValue;\n }\n\n return objectResult;\n }\n\n return value;\n}\n\nexport function withSanitizer(streamConfig: bunyan.Stream): bunyan.Stream {\n if (streamConfig.type === 'rotating-file') {\n throw new Error(\"Rotating files aren't supported\");\n }\n\n const stream = streamConfig.stream as BunyanStream;\n if (stream?.writable) {\n const write = (\n chunk: BunyanRecord,\n enc: BufferEncoding,\n cb: (err?: Error | null) => void,\n ): void => {\n const raw = sanitizeValue(chunk);\n const result =\n streamConfig.type === 'raw'\n ? raw\n : JSON.stringify(raw, bunyan.safeCycles()).replace(/\\n?$/, '\\n'); // TODO #12874\n stream.write(result, enc, cb);\n };\n\n return {\n ...streamConfig,\n type: 'raw',\n stream: { write },\n } as bunyan.Stream;\n }\n\n if (streamConfig.path) {\n const fileStream = fs.createWriteStream(streamConfig.path, {\n flags: 'a',\n encoding: 'utf8',\n });\n\n return withSanitizer({ ...streamConfig, stream: fileStream });\n }\n\n throw new Error(\"Missing 'stream' or 'path' for bunyan stream\");\n}\n\n/**\n * A function that terminates execution if the log level that was entered is\n * not a valid value for the Bunyan logger.\n * @param logLevelToCheck\n * @returns returns the logLevel when the logLevelToCheck is valid or the defaultLevel passed as argument when it is undefined. Else it stops execution.\n */\nexport function validateLogLevel(\n logLevelToCheck: string | undefined,\n defaultLevel: bunyan.LogLevelString,\n): bunyan.LogLevelString {\n const allowedValues: bunyan.LogLevelString[] = [\n 'trace',\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'fatal',\n ];\n\n if (\n is.undefined(logLevelToCheck) ||\n (is.string(logLevelToCheck) &&\n allowedValues.includes(logLevelToCheck as bunyan.LogLevelString))\n ) {\n // log level is in the allowed values or its undefined\n return (logLevelToCheck as bunyan.LogLevelString) ?? defaultLevel;\n }\n\n const logger = bunyan.createLogger({\n name: 'renovate',\n streams: [\n {\n level: 'fatal',\n stream: process.stdout,\n },\n ],\n });\n logger.fatal({ logLevel: logLevelToCheck }, 'Invalid log level');\n process.exit(1);\n}\n\n// Can't use `util/regex` because of circular reference to logger\nconst urlRe = /[a-z]{3,9}:\\/\\/[^@/]+@[a-z0-9.-]+/gi;\nconst urlCredRe = /\\/\\/[^@]+@/g;\nconst dataUriCredRe = /^(data:[0-9a-z-]+\\/[0-9a-z-]+;).+/i;\n\nexport function sanitizeUrls(text: string): string {\n return text\n .replace(urlRe, (url) => {\n return url.replace(urlCredRe, '//**redacted**@');\n })\n .replace(dataUriCredRe, '$1**redacted**');\n}\n\nexport function getEnv(key: string): string | undefined {\n return [process.env[`RENOVATE_${key}`], process.env[key]]\n .map((v) => v?.toLowerCase().trim())\n .find(is.nonEmptyStringAndNotWhitespace);\n}\n\nexport function getMessage(\n p1: string | Record<string, any>,\n p2?: string,\n): string | undefined {\n return is.string(p1) ? p1 : p2;\n}\n\nexport function toMeta(\n p1: string | Record<string, any>,\n): Record<string, unknown> {\n return is.object(p1) ? p1 : {};\n}\n"]}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../lib/logger/utils.ts"],"names":[],"mappings":"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","sourcesContent":["import { Stream } from 'node:stream';\nimport is from '@sindresorhus/is';\nimport bunyan from 'bunyan';\nimport fs from 'fs-extra';\nimport { RequestError as HttpError } from 'got';\nimport { ZodError } from 'zod';\nimport { regEx } from '../util/regex';\nimport { redactedFields, sanitize } from '../util/sanitize';\nimport type { BunyanRecord, BunyanStream } from './types';\n\nconst excludeProps = ['pid', 'time', 'v', 'hostname'];\n\nexport class ProblemStream extends Stream {\n private _problems: BunyanRecord[] = [];\n\n readable: boolean;\n\n writable: boolean;\n\n constructor() {\n super();\n this.readable = false;\n this.writable = true;\n }\n\n write(data: BunyanRecord): boolean {\n const problem = { ...data };\n for (const prop of excludeProps) {\n delete problem[prop];\n }\n this._problems.push(problem);\n return true;\n }\n\n getProblems(): BunyanRecord[] {\n return this._problems;\n }\n\n clearProblems(): void {\n this._problems = [];\n }\n}\n\nconst contentFields = [\n 'content',\n 'contents',\n 'packageLockParsed',\n 'yarnLockParsed',\n];\n\ntype ZodShortenedIssue =\n | null\n | string\n | string[]\n | {\n [key: string]: ZodShortenedIssue;\n };\n\nexport function prepareZodIssues(input: unknown): ZodShortenedIssue {\n if (!is.plainObject(input)) {\n return null;\n }\n\n let err: null | string | string[] = null;\n if (is.array(input._errors, is.string)) {\n if (input._errors.length === 1) {\n err = input._errors[0];\n } else if (input._errors.length > 1) {\n err = input._errors;\n } else {\n err = null;\n }\n }\n delete input._errors;\n\n if (is.emptyObject(input)) {\n return err;\n }\n\n const output: Record<string, ZodShortenedIssue> = {};\n const entries = Object.entries(input);\n for (const [key, value] of entries.slice(0, 3)) {\n const child = prepareZodIssues(value);\n if (child !== null) {\n output[key] = child;\n }\n }\n\n if (entries.length > 3) {\n output.___ = `... ${entries.length - 3} more`;\n }\n\n return output;\n}\n\nexport function prepareZodError(err: ZodError): Record<string, unknown> {\n Object.defineProperty(err, 'message', {\n get: () => 'Schema error',\n /* v8 ignore next 3 -- TODO: drop set? */\n set: () => {\n /* intentionally empty */\n },\n });\n\n return {\n message: err.message,\n stack: err.stack,\n issues: prepareZodIssues(err.format()),\n };\n}\n\nexport default function prepareError(err: Error): Record<string, unknown> {\n if (err instanceof ZodError) {\n return prepareZodError(err);\n }\n\n const response: Record<string, unknown> = {\n ...err,\n };\n\n // Required as message is non-enumerable\n if (!response.message && err.message) {\n response.message = err.message;\n }\n\n // Required as stack is non-enumerable\n if (!response.stack && err.stack) {\n response.stack = err.stack;\n }\n\n if (err instanceof AggregateError) {\n response.errors = err.errors.map((error) => prepareError(error));\n }\n\n // handle got error\n if (err instanceof HttpError) {\n const options: Record<string, unknown> = {\n headers: structuredClone(err.options.headers),\n url: err.options.url?.toString(),\n hostType: err.options.context.hostType,\n };\n response.options = options;\n\n options.username = err.options.username;\n options.password = err.options.password;\n options.method = err.options.method;\n options.http2 = err.options.http2;\n\n if (err.response) {\n response.response = {\n statusCode: err.response.statusCode,\n statusMessage: err.response.statusMessage,\n body:\n err.name === 'TimeoutError'\n ? undefined\n : structuredClone(err.response.body),\n headers: structuredClone(err.response.headers),\n httpVersion: err.response.httpVersion,\n retryCount: err.response.retryCount,\n };\n }\n }\n\n return response;\n}\n\ntype NestedValue = unknown[] | object;\n\nfunction isNested(value: unknown): value is NestedValue {\n return is.array(value) || is.object(value);\n}\n\nexport function sanitizeValue(\n value: unknown,\n seen = new WeakMap<NestedValue, unknown>(),\n): any {\n if (is.string(value)) {\n return sanitize(sanitizeUrls(value));\n }\n\n if (is.date(value)) {\n return value;\n }\n\n if (is.function(value)) {\n return '[function]';\n }\n\n if (is.buffer(value)) {\n return '[content]';\n }\n\n if (is.error(value)) {\n const err = prepareError(value);\n return sanitizeValue(err, seen);\n }\n\n if (is.array(value)) {\n const length = value.length;\n const arrayResult = Array(length);\n seen.set(value, arrayResult);\n for (let idx = 0; idx < length; idx += 1) {\n const val = value[idx];\n arrayResult[idx] =\n isNested(val) && seen.has(val)\n ? seen.get(val)\n : sanitizeValue(val, seen);\n }\n return arrayResult;\n }\n\n if (is.object(value)) {\n const objectResult: Record<string, any> = {};\n seen.set(value, objectResult);\n for (const [key, val] of Object.entries<any>(value)) {\n let curValue: any;\n if (!val) {\n curValue = val;\n } else if (redactedFields.includes(key)) {\n // Do not mask/sanitize secrets templates\n if (is.string(val) && regEx(/^{{\\s*secrets\\..*}}$/).test(val)) {\n curValue = val;\n } else {\n curValue = '***********';\n }\n } else if (contentFields.includes(key)) {\n curValue = '[content]';\n } else if (key === 'secrets') {\n curValue = {};\n Object.keys(val).forEach((secretKey) => {\n curValue[secretKey] = '***********';\n });\n } else {\n curValue = seen.has(val) ? seen.get(val) : sanitizeValue(val, seen);\n }\n\n objectResult[key] = curValue;\n }\n\n return objectResult;\n }\n\n return value;\n}\n\nexport function withSanitizer(streamConfig: bunyan.Stream): bunyan.Stream {\n if (streamConfig.type === 'rotating-file') {\n throw new Error(\"Rotating files aren't supported\");\n }\n\n const stream = streamConfig.stream as BunyanStream;\n if (stream?.writable) {\n const write = (\n chunk: BunyanRecord,\n enc: BufferEncoding,\n cb: (err?: Error | null) => void,\n ): void => {\n const raw = sanitizeValue(chunk);\n const result =\n streamConfig.type === 'raw'\n ? raw\n : JSON.stringify(raw, bunyan.safeCycles()).replace(\n regEx(/\\n?$/),\n '\\n',\n );\n stream.write(result, enc, cb);\n };\n\n return {\n ...streamConfig,\n type: 'raw',\n stream: { write },\n } as bunyan.Stream;\n }\n\n if (streamConfig.path) {\n const fileStream = fs.createWriteStream(streamConfig.path, {\n flags: 'a',\n encoding: 'utf8',\n });\n\n return withSanitizer({ ...streamConfig, stream: fileStream });\n }\n\n throw new Error(\"Missing 'stream' or 'path' for bunyan stream\");\n}\n\n/**\n * A function that terminates execution if the log level that was entered is\n * not a valid value for the Bunyan logger.\n * @param logLevelToCheck\n * @returns returns the logLevel when the logLevelToCheck is valid or the defaultLevel passed as argument when it is undefined. Else it stops execution.\n */\nexport function validateLogLevel(\n logLevelToCheck: string | undefined,\n defaultLevel: bunyan.LogLevelString,\n): bunyan.LogLevelString {\n const allowedValues: bunyan.LogLevelString[] = [\n 'trace',\n 'debug',\n 'info',\n 'warn',\n 'error',\n 'fatal',\n ];\n\n if (\n is.undefined(logLevelToCheck) ||\n (is.string(logLevelToCheck) &&\n allowedValues.includes(logLevelToCheck as bunyan.LogLevelString))\n ) {\n // log level is in the allowed values or its undefined\n return (logLevelToCheck as bunyan.LogLevelString) ?? defaultLevel;\n }\n\n const logger = bunyan.createLogger({\n name: 'renovate',\n streams: [\n {\n level: 'fatal',\n stream: process.stdout,\n },\n ],\n });\n logger.fatal({ logLevel: logLevelToCheck }, 'Invalid log level');\n process.exit(1);\n}\n\n// Can't use `util/regex` because of circular reference to logger\nconst urlRe = /[a-z]{3,9}:\\/\\/[^@/]+@[a-z0-9.-]+/gi;\nconst urlCredRe = /\\/\\/[^@]+@/g;\nconst dataUriCredRe = /^(data:[0-9a-z-]+\\/[0-9a-z-]+;).+/i;\n\nexport function sanitizeUrls(text: string): string {\n return text\n .replace(urlRe, (url) => {\n return url.replace(urlCredRe, '//**redacted**@');\n })\n .replace(dataUriCredRe, '$1**redacted**');\n}\n\nexport function getEnv(key: string): string | undefined {\n return [process.env[`RENOVATE_${key}`], process.env[key]]\n .map((v) => v?.toLowerCase().trim())\n .find(is.nonEmptyStringAndNotWhitespace);\n}\n\nexport function getMessage(\n p1: string | Record<string, any>,\n p2?: string,\n): string | undefined {\n return is.string(p1) ? p1 : p2;\n}\n\nexport function toMeta(\n p1: string | Record<string, any>,\n): Record<string, unknown> {\n return is.object(p1) ? p1 : {};\n}\n"]}
@@ -6,6 +6,7 @@ const is_1 = tslib_1.__importDefault(require("@sindresorhus/is"));
6
6
  const logger_1 = require("../../../logger");
7
7
  const decorator_1 = require("../../../util/cache/package/decorator");
8
8
  const github_1 = require("../../../util/http/github");
9
+ const regex_1 = require("../../../util/regex");
9
10
  const url_1 = require("../../../util/url");
10
11
  const allVersioning = tslib_1.__importStar(require("../../versioning"));
11
12
  const datasource_1 = require("../datasource");
@@ -66,7 +67,7 @@ class ConanDatasource extends datasource_1.Datasource {
66
67
  dep.releases.push(...conanJsonReleases);
67
68
  try {
68
69
  if ((0, util_1.isArtifactoryServer)(rep)) {
69
- const conanApiRegexp = /(?<host>.*)\/artifactory\/api\/conan\/(?<repo>[^/]+)/;
70
+ const conanApiRegexp = (0, regex_1.regEx)(/(?<host>.*)\/artifactory\/api\/conan\/(?<repo>[^/]+)/);
70
71
  const groups = conanApiRegexp.exec(url)?.groups;
71
72
  if (!groups) {
72
73
  return dep;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/conan/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { GithubHttp } from '../../../util/http/github';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url';\nimport * as allVersioning from '../../versioning';\nimport { Datasource } from '../datasource';\nimport type {\n DigestConfig,\n GetReleasesConfig,\n Release,\n ReleaseResult,\n} from '../types';\nimport { isArtifactoryServer } from '../util';\nimport { datasource, defaultRegistryUrl, getConanPackage } from './common';\nimport {\n ConanCenterReleases,\n ConanJSON,\n ConanLatestRevision,\n ConanProperties,\n ConanRevisionJSON,\n} from './schema';\n\nexport class ConanDatasource extends Datasource {\n static readonly id = datasource;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly caching = true;\n\n override readonly registryStrategy = 'merge';\n\n githubHttp: GithubHttp;\n\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is supported only if the package is served from the Artifactory servers. In which case we determine it from the `properties[conan.package.url]` field in the results.';\n\n constructor(id = ConanDatasource.id) {\n super(id);\n this.githubHttp = new GithubHttp(id);\n }\n\n async getConanCenterReleases(\n conanName: string,\n userAndChannel: string,\n ): Promise<ReleaseResult | null> {\n if (userAndChannel && userAndChannel !== '@_/_') {\n logger.debug(\n { conanName, userAndChannel },\n 'User/channel not supported for Conan Center lookups',\n );\n return null;\n }\n const url = `https://api.github.com/repos/conan-io/conan-center-index/contents/recipes/${conanName}/config.yml`;\n const { body: result } = await this.githubHttp.getYaml(\n url,\n { headers: { accept: 'application/vnd.github.v3.raw' } },\n ConanCenterReleases,\n );\n return result;\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: DigestConfig, newValue?: string) =>\n // TODO: types (#22198)\n `getDigest:${registryUrl!}:${packageName}:${newValue!}`,\n })\n override async getDigest(\n { registryUrl, packageName }: DigestConfig,\n newValue?: string,\n ): Promise<string | null> {\n if (is.undefined(newValue) || is.undefined(registryUrl)) {\n return null;\n }\n const url = ensureTrailingSlash(registryUrl);\n const conanPackage = getConanPackage(packageName);\n const revisionLookUp = joinUrlParts(\n url,\n 'v2/conans/',\n conanPackage.conanName,\n newValue,\n conanPackage.userAndChannel,\n '/revisions',\n );\n const { body: digest } = await this.http.getJson(\n revisionLookUp,\n ConanLatestRevision,\n );\n return digest;\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `getReleases:${registryUrl}:${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const conanPackage = getConanPackage(packageName);\n const userAndChannel = '@' + conanPackage.userAndChannel;\n if (\n is.string(registryUrl) &&\n ensureTrailingSlash(registryUrl) === defaultRegistryUrl\n ) {\n return this.getConanCenterReleases(\n conanPackage.conanName,\n userAndChannel,\n );\n }\n\n logger.trace(\n { packageName, registryUrl },\n 'Looking up conan api dependency',\n );\n\n if (registryUrl) {\n const url = ensureTrailingSlash(registryUrl);\n const lookupUrl = joinUrlParts(\n url,\n `v2/conans/search?q=${conanPackage.conanName}`,\n );\n\n try {\n const rep = await this.http.getJsonUnchecked(lookupUrl);\n const conanJson = ConanJSON.parse(rep.body);\n if (conanJson) {\n logger.trace({ lookupUrl }, 'Got conan api result');\n const dep: ReleaseResult = { releases: [] };\n\n const conanJsonReleases: Release[] = conanJson\n .filter(({ userChannel }) => userChannel === userAndChannel)\n .map(({ version }) => ({ version }));\n dep.releases.push(...conanJsonReleases);\n\n try {\n if (isArtifactoryServer(rep)) {\n const conanApiRegexp =\n /(?<host>.*)\\/artifactory\\/api\\/conan\\/(?<repo>[^/]+)/;\n const groups = conanApiRegexp.exec(url)?.groups;\n if (!groups) {\n return dep;\n }\n const semver = allVersioning.get('semver');\n\n const sortedReleases = dep.releases\n .filter((release) => semver.isVersion(release.version))\n .sort((a, b) => semver.sortVersions(a.version, b.version));\n\n const latestVersion = sortedReleases.at(-1)?.version;\n\n if (!latestVersion) {\n return dep;\n }\n logger.debug(\n `Conan package ${packageName} has latest version ${latestVersion}`,\n );\n\n const latestRevisionUrl = joinUrlParts(\n url,\n `v2/conans/${conanPackage.conanName}/${latestVersion}/${conanPackage.userAndChannel}/latest`,\n );\n const {\n body: { revision: packageRev },\n } = await this.http.getJson(latestRevisionUrl, ConanRevisionJSON);\n\n const [user, channel] = conanPackage.userAndChannel.split('/');\n const packageUrl = joinUrlParts(\n `${groups.host}/artifactory/api/storage/${groups.repo}`,\n `${user}/${conanPackage.conanName}/${latestVersion}/${channel}/${packageRev}/export/conanfile.py?properties=conan.package.url`,\n );\n const { body: conanProperties } = await this.http.getJson(\n packageUrl,\n ConanProperties,\n );\n const { sourceUrl } = conanProperties;\n if (sourceUrl) {\n dep.sourceUrl = sourceUrl;\n }\n }\n } catch (err) {\n logger.debug({ err }, \"Couldn't determine Conan package url\");\n }\n return dep;\n }\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n return null;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/conan/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { GithubHttp } from '../../../util/http/github';\nimport { regEx } from '../../../util/regex';\nimport { ensureTrailingSlash, joinUrlParts } from '../../../util/url';\nimport * as allVersioning from '../../versioning';\nimport { Datasource } from '../datasource';\nimport type {\n DigestConfig,\n GetReleasesConfig,\n Release,\n ReleaseResult,\n} from '../types';\nimport { isArtifactoryServer } from '../util';\nimport { datasource, defaultRegistryUrl, getConanPackage } from './common';\nimport {\n ConanCenterReleases,\n ConanJSON,\n ConanLatestRevision,\n ConanProperties,\n ConanRevisionJSON,\n} from './schema';\n\nexport class ConanDatasource extends Datasource {\n static readonly id = datasource;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly caching = true;\n\n override readonly registryStrategy = 'merge';\n\n githubHttp: GithubHttp;\n\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'The source URL is supported only if the package is served from the Artifactory servers. In which case we determine it from the `properties[conan.package.url]` field in the results.';\n\n constructor(id = ConanDatasource.id) {\n super(id);\n this.githubHttp = new GithubHttp(id);\n }\n\n async getConanCenterReleases(\n conanName: string,\n userAndChannel: string,\n ): Promise<ReleaseResult | null> {\n if (userAndChannel && userAndChannel !== '@_/_') {\n logger.debug(\n { conanName, userAndChannel },\n 'User/channel not supported for Conan Center lookups',\n );\n return null;\n }\n const url = `https://api.github.com/repos/conan-io/conan-center-index/contents/recipes/${conanName}/config.yml`;\n const { body: result } = await this.githubHttp.getYaml(\n url,\n { headers: { accept: 'application/vnd.github.v3.raw' } },\n ConanCenterReleases,\n );\n return result;\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: DigestConfig, newValue?: string) =>\n // TODO: types (#22198)\n `getDigest:${registryUrl!}:${packageName}:${newValue!}`,\n })\n override async getDigest(\n { registryUrl, packageName }: DigestConfig,\n newValue?: string,\n ): Promise<string | null> {\n if (is.undefined(newValue) || is.undefined(registryUrl)) {\n return null;\n }\n const url = ensureTrailingSlash(registryUrl);\n const conanPackage = getConanPackage(packageName);\n const revisionLookUp = joinUrlParts(\n url,\n 'v2/conans/',\n conanPackage.conanName,\n newValue,\n conanPackage.userAndChannel,\n '/revisions',\n );\n const { body: digest } = await this.http.getJson(\n revisionLookUp,\n ConanLatestRevision,\n );\n return digest;\n }\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n // TODO: types (#22198)\n `getReleases:${registryUrl}:${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const conanPackage = getConanPackage(packageName);\n const userAndChannel = '@' + conanPackage.userAndChannel;\n if (\n is.string(registryUrl) &&\n ensureTrailingSlash(registryUrl) === defaultRegistryUrl\n ) {\n return this.getConanCenterReleases(\n conanPackage.conanName,\n userAndChannel,\n );\n }\n\n logger.trace(\n { packageName, registryUrl },\n 'Looking up conan api dependency',\n );\n\n if (registryUrl) {\n const url = ensureTrailingSlash(registryUrl);\n const lookupUrl = joinUrlParts(\n url,\n `v2/conans/search?q=${conanPackage.conanName}`,\n );\n\n try {\n const rep = await this.http.getJsonUnchecked(lookupUrl);\n const conanJson = ConanJSON.parse(rep.body);\n if (conanJson) {\n logger.trace({ lookupUrl }, 'Got conan api result');\n const dep: ReleaseResult = { releases: [] };\n\n const conanJsonReleases: Release[] = conanJson\n .filter(({ userChannel }) => userChannel === userAndChannel)\n .map(({ version }) => ({ version }));\n dep.releases.push(...conanJsonReleases);\n\n try {\n if (isArtifactoryServer(rep)) {\n const conanApiRegexp = regEx(\n /(?<host>.*)\\/artifactory\\/api\\/conan\\/(?<repo>[^/]+)/,\n );\n const groups = conanApiRegexp.exec(url)?.groups;\n if (!groups) {\n return dep;\n }\n const semver = allVersioning.get('semver');\n\n const sortedReleases = dep.releases\n .filter((release) => semver.isVersion(release.version))\n .sort((a, b) => semver.sortVersions(a.version, b.version));\n\n const latestVersion = sortedReleases.at(-1)?.version;\n\n if (!latestVersion) {\n return dep;\n }\n logger.debug(\n `Conan package ${packageName} has latest version ${latestVersion}`,\n );\n\n const latestRevisionUrl = joinUrlParts(\n url,\n `v2/conans/${conanPackage.conanName}/${latestVersion}/${conanPackage.userAndChannel}/latest`,\n );\n const {\n body: { revision: packageRev },\n } = await this.http.getJson(latestRevisionUrl, ConanRevisionJSON);\n\n const [user, channel] = conanPackage.userAndChannel.split('/');\n const packageUrl = joinUrlParts(\n `${groups.host}/artifactory/api/storage/${groups.repo}`,\n `${user}/${conanPackage.conanName}/${latestVersion}/${channel}/${packageRev}/export/conanfile.py?properties=conan.package.url`,\n );\n const { body: conanProperties } = await this.http.getJson(\n packageUrl,\n ConanProperties,\n );\n const { sourceUrl } = conanProperties;\n if (sourceUrl) {\n dep.sourceUrl = sourceUrl;\n }\n }\n } catch (err) {\n logger.debug({ err }, \"Couldn't determine Conan package url\");\n }\n return dep;\n }\n } catch (err) {\n this.handleGenericErrors(err);\n }\n }\n\n return null;\n }\n}\n"]}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.GradleVersionDatasource = void 0;
4
4
  const tslib_1 = require("tslib");
5
5
  const decorator_1 = require("../../../util/cache/package/decorator");
6
+ const regex_1 = require("../../../util/regex");
6
7
  const timestamp_1 = require("../../../util/timestamp");
7
8
  const gradleVersioning = tslib_1.__importStar(require("../../versioning/gradle"));
8
9
  const datasource_1 = require("../datasource");
@@ -62,7 +63,7 @@ class GradleVersionDatasource extends datasource_1.Datasource {
62
63
  * - `8.2-milestone-1` -> `v8.2.0-M1`
63
64
  */
64
65
  static getGitRef(version) {
65
- const [versionPart, typePart, unstablePart] = version.split(/-([a-z]+)-/);
66
+ const [versionPart, typePart, unstablePart] = version.split((0, regex_1.regEx)(/-([a-z]+)-/));
66
67
  let suffix = '';
67
68
  if (typePart === 'rc') {
68
69
  suffix = `-RC${unstablePart}`;
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gradle-version/index.ts"],"names":[],"mappings":"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","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { asTimestamp } from '../../../util/timestamp';\nimport * as gradleVersioning from '../../versioning/gradle';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport type { GradleRelease } from './types';\n\nexport class GradleVersionDatasource extends Datasource {\n static readonly id = 'gradle-version';\n\n constructor() {\n super(GradleVersionDatasource.id);\n }\n\n override readonly defaultRegistryUrls = [\n 'https://services.gradle.org/versions/all',\n ];\n\n override readonly defaultVersioning = gradleVersioning.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildTime` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL: https://github.com/gradle/gradle.';\n\n @cache({\n namespace: `datasource-${GradleVersionDatasource.id}`,\n // TODO: types (#22198)\n key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,\n })\n async getReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n let releases: Release[];\n try {\n const response =\n await this.http.getJsonUnchecked<GradleRelease[]>(registryUrl);\n releases = response.body\n .filter((release) => !release.snapshot && !release.nightly)\n .map((release) => {\n const { version, buildTime } = release;\n\n const gitRef = GradleVersionDatasource.getGitRef(release.version);\n\n const releaseTimestamp = asTimestamp(buildTime);\n\n const result: Release = { version, gitRef, releaseTimestamp };\n\n if (release.broken) {\n result.isDeprecated = true;\n }\n\n return result;\n });\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n const res: ReleaseResult = {\n releases,\n homepage: 'https://gradle.org',\n sourceUrl: 'https://github.com/gradle/gradle',\n };\n if (res.releases.length) {\n return res;\n }\n return null;\n }\n\n /**\n * Calculate `gitTag` based on `version`:\n * - `8.1.2` -> `v8.1.2`\n * - `8.2` -> `v8.2.0`\n * - `8.2-rc-1` -> `v8.2.0-RC1`\n * - `8.2-milestone-1` -> `v8.2.0-M1`\n */\n private static getGitRef(version: string): string {\n const [versionPart, typePart, unstablePart] = version.split(/-([a-z]+)-/);\n\n let suffix = '';\n if (typePart === 'rc') {\n suffix = `-RC${unstablePart}`;\n } else if (typePart === 'milestone') {\n suffix = `-M${unstablePart}`;\n }\n\n const [major, minor, patch = '0'] = versionPart.split('.');\n return `v${major}.${minor}.${patch}${suffix}`;\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/gradle-version/index.ts"],"names":[],"mappings":";;;;AAAA,qEAA8D;AAC9D,+CAA4C;AAC5C,uDAAsD;AACtD,kFAA4D;AAC5D,8CAA2C;AAI3C,MAAa,uBAAwB,SAAQ,uBAAU;IACrD,MAAM,CAAU,EAAE,GAAG,gBAAgB,CAAC;IAEtC;QACE,KAAK,CAAC,uBAAuB,CAAC,EAAE,CAAC,CAAC;IACpC,CAAC;IAEiB,mBAAmB,GAAG;QACtC,0CAA0C;KAC3C,CAAC;IAEgB,iBAAiB,GAAG,gBAAgB,CAAC,EAAE,CAAC;IAExC,gBAAgB,GAAG,OAAO,CAAC;IAE3B,uBAAuB,GAAG,IAAI,CAAC;IAC/B,oBAAoB,GACpC,gFAAgF,CAAC;IACjE,gBAAgB,GAAG,SAAS,CAAC;IAC7B,aAAa,GAC7B,mDAAmD,CAAC;IAOhD,AAAN,KAAK,CAAC,WAAW,CAAC,EAChB,WAAW,GACO;QAClB,6CAA6C;QAC7C,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,OAAO,IAAI,CAAC;QACd,CAAC;QAED,IAAI,QAAmB,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,QAAQ,GACZ,MAAM,IAAI,CAAC,IAAI,CAAC,gBAAgB,CAAkB,WAAW,CAAC,CAAC;YACjE,QAAQ,GAAG,QAAQ,CAAC,IAAI;iBACrB,MAAM,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC;iBAC1D,GAAG,CAAC,CAAC,OAAO,EAAE,EAAE;gBACf,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC;gBAEvC,MAAM,MAAM,GAAG,uBAAuB,CAAC,SAAS,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBAElE,MAAM,gBAAgB,GAAG,IAAA,uBAAW,EAAC,SAAS,CAAC,CAAC;gBAEhD,MAAM,MAAM,GAAY,EAAE,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC;gBAE9D,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;oBACnB,MAAM,CAAC,YAAY,GAAG,IAAI,CAAC;gBAC7B,CAAC;gBAED,OAAO,MAAM,CAAC;YAChB,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,CAAC,mBAAmB,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;QAED,MAAM,GAAG,GAAkB;YACzB,QAAQ;YACR,QAAQ,EAAE,oBAAoB;YAC9B,SAAS,EAAE,kCAAkC;SAC9C,CAAC;QACF,IAAI,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;YACxB,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;;;;OAMG;IACK,MAAM,CAAC,SAAS,CAAC,OAAe;QACtC,MAAM,CAAC,WAAW,EAAE,QAAQ,EAAE,YAAY,CAAC,GAAG,OAAO,CAAC,KAAK,CACzD,IAAA,aAAK,EAAC,YAAY,CAAC,CACpB,CAAC;QAEF,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;YACtB,MAAM,GAAG,MAAM,YAAY,EAAE,CAAC;QAChC,CAAC;aAAM,IAAI,QAAQ,KAAK,WAAW,EAAE,CAAC;YACpC,MAAM,GAAG,KAAK,YAAY,EAAE,CAAC;QAC/B,CAAC;QAED,MAAM,CAAC,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,GAAG,CAAC,GAAG,WAAW,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC3D,OAAO,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,GAAG,MAAM,EAAE,CAAC;IAChD,CAAC;;AA5FH,0DA6FC;AAlEO;IALL,IAAA,iBAAK,EAAC;QACL,SAAS,EAAE,cAAc,uBAAuB,CAAC,EAAE,EAAE;QACrD,uBAAuB;QACvB,GAAG,EAAE,CAAC,EAAE,WAAW,EAAqB,EAAE,EAAE,CAAC,GAAG,WAAW,EAAE;KAC9D,CAAC;0DA2CD","sourcesContent":["import { cache } from '../../../util/cache/package/decorator';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport * as gradleVersioning from '../../versioning/gradle';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, Release, ReleaseResult } from '../types';\nimport type { GradleRelease } from './types';\n\nexport class GradleVersionDatasource extends Datasource {\n static readonly id = 'gradle-version';\n\n constructor() {\n super(GradleVersionDatasource.id);\n }\n\n override readonly defaultRegistryUrls = [\n 'https://services.gradle.org/versions/all',\n ];\n\n override readonly defaultVersioning = gradleVersioning.id;\n\n override readonly registryStrategy = 'merge';\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildTime` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL: https://github.com/gradle/gradle.';\n\n @cache({\n namespace: `datasource-${GradleVersionDatasource.id}`,\n // TODO: types (#22198)\n key: ({ registryUrl }: GetReleasesConfig) => `${registryUrl}`,\n })\n async getReleases({\n registryUrl,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n /* v8 ignore next 3 -- should never happen */\n if (!registryUrl) {\n return null;\n }\n\n let releases: Release[];\n try {\n const response =\n await this.http.getJsonUnchecked<GradleRelease[]>(registryUrl);\n releases = response.body\n .filter((release) => !release.snapshot && !release.nightly)\n .map((release) => {\n const { version, buildTime } = release;\n\n const gitRef = GradleVersionDatasource.getGitRef(release.version);\n\n const releaseTimestamp = asTimestamp(buildTime);\n\n const result: Release = { version, gitRef, releaseTimestamp };\n\n if (release.broken) {\n result.isDeprecated = true;\n }\n\n return result;\n });\n } catch (err) {\n this.handleGenericErrors(err);\n }\n\n const res: ReleaseResult = {\n releases,\n homepage: 'https://gradle.org',\n sourceUrl: 'https://github.com/gradle/gradle',\n };\n if (res.releases.length) {\n return res;\n }\n return null;\n }\n\n /**\n * Calculate `gitTag` based on `version`:\n * - `8.1.2` -> `v8.1.2`\n * - `8.2` -> `v8.2.0`\n * - `8.2-rc-1` -> `v8.2.0-RC1`\n * - `8.2-milestone-1` -> `v8.2.0-M1`\n */\n private static getGitRef(version: string): string {\n const [versionPart, typePart, unstablePart] = version.split(\n regEx(/-([a-z]+)-/),\n );\n\n let suffix = '';\n if (typePart === 'rc') {\n suffix = `-RC${unstablePart}`;\n } else if (typePart === 'milestone') {\n suffix = `-M${unstablePart}`;\n }\n\n const [major, minor, patch = '0'] = versionPart.split('.');\n return `v${major}.${minor}.${patch}${suffix}`;\n }\n}\n"]}
@@ -7,6 +7,7 @@ const logger_1 = require("../../../logger");
7
7
  const external_host_error_1 = require("../../../types/errors/external-host-error");
8
8
  const decorator_1 = require("../../../util/cache/package/decorator");
9
9
  const http_1 = require("../../../util/http");
10
+ const regex_1 = require("../../../util/regex");
10
11
  const timestamp_1 = require("../../../util/timestamp");
11
12
  const semver_1 = require("../../versioning/semver");
12
13
  const datasource_1 = require("../datasource");
@@ -79,7 +80,7 @@ class HexpmBobDatasource extends datasource_1.Datasource {
79
80
  static isStable(version, packageType) {
80
81
  switch (packageType) {
81
82
  case 'elixir':
82
- return /^v\d+\.\d+\.\d+($|-otp)/.test(version);
83
+ return (0, regex_1.regEx)(/^v\d+\.\d+\.\d+($|-otp)/).test(version);
83
84
  case 'erlang':
84
85
  return version.startsWith('OTP-');
85
86
  }
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/hexpm-bob/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { HttpError } from '../../../util/http';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { id as semverId } from '../../versioning/semver';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { datasource, defaultRegistryUrl } from './common';\nimport type { PackageType } from './types';\n\nexport class HexpmBobDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly caching = true;\n\n override readonly defaultVersioning = semverId;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildDate` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL https://github.com/elixir-lang/elixir.git for the `elixir` package and the https://github.com/erlang/otp.git URL for the `erlang` package.';\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const packageType = HexpmBobDatasource.getPackageType(packageName);\n\n if (!packageType) {\n return null;\n }\n\n logger.trace(\n { registryUrl, packageName },\n `fetching hex.pm bob ${packageName} release`,\n );\n\n const url = `${registryUrl!}/builds/${packageName}/builds.txt`;\n\n const result: ReleaseResult = {\n releases: [],\n ...HexpmBobDatasource.getPackageDetails(packageType),\n };\n try {\n const { body } = await this.http.getText(url);\n result.releases = body\n .split('\\n')\n .map((line) => line.trim())\n .filter(is.nonEmptyString)\n .map((line) => {\n const [version, gitRef, buildDate] = line.split(' ');\n\n return {\n gitRef,\n isStable: HexpmBobDatasource.isStable(version, packageType),\n releaseTimestamp: asTimestamp(buildDate),\n version: HexpmBobDatasource.cleanVersion(version, packageType),\n };\n });\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode !== 404) {\n throw new ExternalHostError(err);\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length > 0 ? result : null;\n }\n\n private static getPackageType(packageName: string): PackageType | null {\n if (packageName === 'elixir') {\n return 'elixir';\n }\n if (/^otp\\/\\w+-\\d+\\.\\d+$/.test(packageName)) {\n return 'erlang';\n }\n return null;\n }\n\n private static cleanVersion(\n version: string,\n packageType: PackageType,\n ): string {\n switch (packageType) {\n case 'elixir':\n return version.replace(/^v/, '');\n case 'erlang':\n return version.replace(/^OTP-/, '');\n }\n }\n\n private static isStable(version: string, packageType: PackageType): boolean {\n switch (packageType) {\n case 'elixir':\n return /^v\\d+\\.\\d+\\.\\d+($|-otp)/.test(version);\n case 'erlang':\n return version.startsWith('OTP-');\n }\n }\n\n private static getPackageDetails(\n packageType: PackageType,\n ): Omit<ReleaseResult, 'releases'> {\n switch (packageType) {\n case 'elixir':\n return {\n homepage: 'https://elixir-lang.org/',\n sourceUrl: 'https://github.com/elixir-lang/elixir.git',\n };\n case 'erlang':\n return {\n homepage: 'https://www.erlang.org/',\n sourceUrl: 'https://github.com/erlang/otp.git',\n };\n }\n }\n}\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/datasource/hexpm-bob/index.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport { ExternalHostError } from '../../../types/errors/external-host-error';\nimport { cache } from '../../../util/cache/package/decorator';\nimport { HttpError } from '../../../util/http';\nimport { regEx } from '../../../util/regex';\nimport { asTimestamp } from '../../../util/timestamp';\nimport { id as semverId } from '../../versioning/semver';\nimport { Datasource } from '../datasource';\nimport type { GetReleasesConfig, ReleaseResult } from '../types';\nimport { datasource, defaultRegistryUrl } from './common';\nimport type { PackageType } from './types';\n\nexport class HexpmBobDatasource extends Datasource {\n static readonly id = datasource;\n\n constructor() {\n super(datasource);\n }\n\n override readonly customRegistrySupport = true;\n\n override readonly defaultRegistryUrls = [defaultRegistryUrl];\n\n override readonly caching = true;\n\n override readonly defaultVersioning = semverId;\n\n override readonly releaseTimestampSupport = true;\n override readonly releaseTimestampNote =\n 'The release timestamp is determined from the `buildDate` field in the results.';\n override readonly sourceUrlSupport = 'package';\n override readonly sourceUrlNote =\n 'We use the URL https://github.com/elixir-lang/elixir.git for the `elixir` package and the https://github.com/erlang/otp.git URL for the `erlang` package.';\n\n @cache({\n namespace: `datasource-${datasource}`,\n key: ({ registryUrl, packageName }: GetReleasesConfig) =>\n `${registryUrl}:${packageName}`,\n })\n async getReleases({\n registryUrl,\n packageName,\n }: GetReleasesConfig): Promise<ReleaseResult | null> {\n const packageType = HexpmBobDatasource.getPackageType(packageName);\n\n if (!packageType) {\n return null;\n }\n\n logger.trace(\n { registryUrl, packageName },\n `fetching hex.pm bob ${packageName} release`,\n );\n\n const url = `${registryUrl!}/builds/${packageName}/builds.txt`;\n\n const result: ReleaseResult = {\n releases: [],\n ...HexpmBobDatasource.getPackageDetails(packageType),\n };\n try {\n const { body } = await this.http.getText(url);\n result.releases = body\n .split('\\n')\n .map((line) => line.trim())\n .filter(is.nonEmptyString)\n .map((line) => {\n const [version, gitRef, buildDate] = line.split(' ');\n\n return {\n gitRef,\n isStable: HexpmBobDatasource.isStable(version, packageType),\n releaseTimestamp: asTimestamp(buildDate),\n version: HexpmBobDatasource.cleanVersion(version, packageType),\n };\n });\n } catch (err) {\n if (err instanceof HttpError && err.response?.statusCode !== 404) {\n throw new ExternalHostError(err);\n }\n this.handleGenericErrors(err);\n }\n\n return result.releases.length > 0 ? result : null;\n }\n\n private static getPackageType(packageName: string): PackageType | null {\n if (packageName === 'elixir') {\n return 'elixir';\n }\n if (/^otp\\/\\w+-\\d+\\.\\d+$/.test(packageName)) {\n return 'erlang';\n }\n return null;\n }\n\n private static cleanVersion(\n version: string,\n packageType: PackageType,\n ): string {\n switch (packageType) {\n case 'elixir':\n return version.replace(/^v/, '');\n case 'erlang':\n return version.replace(/^OTP-/, '');\n }\n }\n\n private static isStable(version: string, packageType: PackageType): boolean {\n switch (packageType) {\n case 'elixir':\n return regEx(/^v\\d+\\.\\d+\\.\\d+($|-otp)/).test(version);\n case 'erlang':\n return version.startsWith('OTP-');\n }\n }\n\n private static getPackageDetails(\n packageType: PackageType,\n ): Omit<ReleaseResult, 'releases'> {\n switch (packageType) {\n case 'elixir':\n return {\n homepage: 'https://elixir-lang.org/',\n sourceUrl: 'https://github.com/elixir-lang/elixir.git',\n };\n case 'erlang':\n return {\n homepage: 'https://www.erlang.org/',\n sourceUrl: 'https://github.com/erlang/otp.git',\n };\n }\n }\n}\n"]}
@@ -46,8 +46,8 @@ function migrateUrl(url, upgrade) {
46
46
  // @see https://github.com/bazelbuild/rules_webtesting/releases/tag/0.3.5
47
47
  // @see https://github.com/bazelbuild/rules_webtesting/releases/tag/0.4.0
48
48
  if (url.endsWith('/rules_webtesting.tar.gz') &&
49
- !newValue?.match(/^0\.[0123]\./)) {
50
- return url.replace(/\.tar\.gz$/, `-${newValue}.tar.gz`);
49
+ !newValue?.match((0, regex_1.regEx)(/^0\.[0123]\./))) {
50
+ return url.replace((0, regex_1.regEx)(/\.tar\.gz$/), `-${newValue}.tar.gz`);
51
51
  }
52
52
  return url;
53
53
  }
@@ -1 +1 @@
1
- {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bazel/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { hashStream } from '../../../util/hash';\nimport { Http } from '../../../util/http';\nimport { map as pMap } from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport type { UpdateArtifact, UpdateArtifactsResult, Upgrade } from '../types';\nimport { findCodeFragment, patchCodeAtFragments, updateCode } from './common';\nimport type { RecordFragment, StringFragment } from './types';\n\nconst http = new Http('bazel');\n\nfunction getUrlFragments(rule: RecordFragment): StringFragment[] {\n const urls: StringFragment[] = [];\n\n const urlRecord = rule.children.url;\n if (urlRecord?.type === 'string') {\n urls.push(urlRecord);\n }\n\n const urlsRecord = rule.children.urls;\n if (urlsRecord?.type === 'array') {\n for (const urlRecord of urlsRecord.children) {\n if (urlRecord.type === 'string') {\n urls.push(urlRecord);\n }\n }\n }\n\n return urls;\n}\n\nconst urlMassages = {\n 'bazel-skylib.': 'bazel_skylib-',\n '/bazel-gazelle/releases/download/0': '/bazel-gazelle/releases/download/v0',\n '/bazel-gazelle-0': '/bazel-gazelle-v0',\n '/rules_go/releases/download/0': '/rules_go/releases/download/v0',\n '/rules_go-0': '/rules_go-v0',\n};\n\nfunction massageUrl(url: string): string {\n let result = url;\n for (const [from, to] of Object.entries(urlMassages)) {\n result = result.replace(from, to);\n }\n return result;\n}\n\nfunction migrateUrl(url: string, upgrade: Upgrade): string {\n const newValue = upgrade.newValue?.replace(regEx(/^v/), '');\n\n // @see https://github.com/bazelbuild/rules_webtesting/releases/tag/0.3.5\n // @see https://github.com/bazelbuild/rules_webtesting/releases/tag/0.4.0\n if (\n url.endsWith('/rules_webtesting.tar.gz') &&\n !newValue?.match(/^0\\.[0123]\\./)\n ) {\n return url.replace(/\\.tar\\.gz$/, `-${newValue}.tar.gz`);\n }\n\n return url;\n}\n\nfunction replaceAll(input: string, from: string, to: string): string {\n return input.split(from).join(to);\n}\n\nfunction replaceValues(\n content: string,\n from: string | null | undefined,\n to: string | null | undefined,\n): string {\n // istanbul ignore if\n if (!from || !to || from === to) {\n return content;\n }\n const massagedFrom = from.replace(regEx(/^v/), '');\n const massagedTo = to.replace(regEx(/^v/), '');\n return replaceAll(content, massagedFrom, massagedTo);\n}\n\nasync function getHashFromUrl(url: string): Promise<string | null> {\n const cacheNamespace = 'url-sha256';\n const cachedResult = await packageCache.get<string | null>(\n cacheNamespace,\n url,\n );\n /* istanbul ignore next line */\n if (cachedResult) {\n return cachedResult;\n }\n try {\n const hash = await hashStream(http.stream(url), 'sha256');\n const cacheMinutes = 3 * 24 * 60; // 3 days\n await packageCache.set(cacheNamespace, url, hash, cacheMinutes);\n return hash;\n } catch /* istanbul ignore next */ {\n return null;\n }\n}\n\nasync function getHashFromUrls(urls: string[]): Promise<string | null> {\n const hashes = (\n await pMap(urls, (url) => getHashFromUrl(massageUrl(url)))\n ).filter(is.truthy);\n if (!hashes.length) {\n logger.debug({ urls }, 'Could not calculate hash for URLs');\n return null;\n }\n\n const distinctHashes = new Set(hashes);\n // istanbul ignore if\n if (distinctHashes.size > 1) {\n logger.warn({ urls }, 'Found multiple hashes for single def');\n }\n\n return hashes[0];\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName: path, updatedDeps: upgrades } = updateArtifact;\n const oldContents = updateArtifact.newPackageFileContent;\n let newContents = oldContents;\n for (const upgrade of upgrades) {\n const { managerData } = upgrade;\n const idx = managerData?.idx as number;\n\n if (upgrade.depType === 'http_file' || upgrade.depType === 'http_archive') {\n const rule = findCodeFragment(newContents, [idx]);\n /* v8 ignore start -- used only for type narrowing */\n if (rule?.type !== 'record') {\n continue;\n } /* v8 ignore stop */\n\n const urlFragments = getUrlFragments(rule);\n if (!urlFragments?.length) {\n logger.debug(`def: ${rule.value}, urls is empty`);\n continue;\n }\n\n const updateValues = (oldUrl: string): string => {\n let url = oldUrl;\n url = replaceValues(url, upgrade.currentValue, upgrade.newValue);\n url = replaceValues(url, upgrade.currentDigest, upgrade.newDigest);\n url = migrateUrl(url, upgrade);\n return url;\n };\n\n const urls = urlFragments.map(({ value }) => updateValues(value));\n const hash = await getHashFromUrls(urls);\n if (!hash) {\n continue;\n }\n\n newContents = patchCodeAtFragments(\n newContents,\n urlFragments,\n updateValues,\n );\n newContents = updateCode(\n newContents,\n [idx, 'strip_prefix'],\n updateValues,\n );\n newContents = updateCode(newContents, [idx, 'sha256'], hash);\n }\n }\n\n if (oldContents === newContents) {\n return null;\n }\n\n return [\n {\n file: {\n type: 'addition',\n path,\n contents: newContents,\n },\n },\n ];\n}\n"]}
1
+ {"version":3,"file":"artifacts.js","sourceRoot":"","sources":["../../../../lib/modules/manager/bazel/artifacts.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { logger } from '../../../logger';\nimport * as packageCache from '../../../util/cache/package';\nimport { hashStream } from '../../../util/hash';\nimport { Http } from '../../../util/http';\nimport { map as pMap } from '../../../util/promises';\nimport { regEx } from '../../../util/regex';\nimport type { UpdateArtifact, UpdateArtifactsResult, Upgrade } from '../types';\nimport { findCodeFragment, patchCodeAtFragments, updateCode } from './common';\nimport type { RecordFragment, StringFragment } from './types';\n\nconst http = new Http('bazel');\n\nfunction getUrlFragments(rule: RecordFragment): StringFragment[] {\n const urls: StringFragment[] = [];\n\n const urlRecord = rule.children.url;\n if (urlRecord?.type === 'string') {\n urls.push(urlRecord);\n }\n\n const urlsRecord = rule.children.urls;\n if (urlsRecord?.type === 'array') {\n for (const urlRecord of urlsRecord.children) {\n if (urlRecord.type === 'string') {\n urls.push(urlRecord);\n }\n }\n }\n\n return urls;\n}\n\nconst urlMassages = {\n 'bazel-skylib.': 'bazel_skylib-',\n '/bazel-gazelle/releases/download/0': '/bazel-gazelle/releases/download/v0',\n '/bazel-gazelle-0': '/bazel-gazelle-v0',\n '/rules_go/releases/download/0': '/rules_go/releases/download/v0',\n '/rules_go-0': '/rules_go-v0',\n};\n\nfunction massageUrl(url: string): string {\n let result = url;\n for (const [from, to] of Object.entries(urlMassages)) {\n result = result.replace(from, to);\n }\n return result;\n}\n\nfunction migrateUrl(url: string, upgrade: Upgrade): string {\n const newValue = upgrade.newValue?.replace(regEx(/^v/), '');\n\n // @see https://github.com/bazelbuild/rules_webtesting/releases/tag/0.3.5\n // @see https://github.com/bazelbuild/rules_webtesting/releases/tag/0.4.0\n if (\n url.endsWith('/rules_webtesting.tar.gz') &&\n !newValue?.match(regEx(/^0\\.[0123]\\./))\n ) {\n return url.replace(regEx(/\\.tar\\.gz$/), `-${newValue}.tar.gz`);\n }\n\n return url;\n}\n\nfunction replaceAll(input: string, from: string, to: string): string {\n return input.split(from).join(to);\n}\n\nfunction replaceValues(\n content: string,\n from: string | null | undefined,\n to: string | null | undefined,\n): string {\n // istanbul ignore if\n if (!from || !to || from === to) {\n return content;\n }\n const massagedFrom = from.replace(regEx(/^v/), '');\n const massagedTo = to.replace(regEx(/^v/), '');\n return replaceAll(content, massagedFrom, massagedTo);\n}\n\nasync function getHashFromUrl(url: string): Promise<string | null> {\n const cacheNamespace = 'url-sha256';\n const cachedResult = await packageCache.get<string | null>(\n cacheNamespace,\n url,\n );\n /* istanbul ignore next line */\n if (cachedResult) {\n return cachedResult;\n }\n try {\n const hash = await hashStream(http.stream(url), 'sha256');\n const cacheMinutes = 3 * 24 * 60; // 3 days\n await packageCache.set(cacheNamespace, url, hash, cacheMinutes);\n return hash;\n } catch /* istanbul ignore next */ {\n return null;\n }\n}\n\nasync function getHashFromUrls(urls: string[]): Promise<string | null> {\n const hashes = (\n await pMap(urls, (url) => getHashFromUrl(massageUrl(url)))\n ).filter(is.truthy);\n if (!hashes.length) {\n logger.debug({ urls }, 'Could not calculate hash for URLs');\n return null;\n }\n\n const distinctHashes = new Set(hashes);\n // istanbul ignore if\n if (distinctHashes.size > 1) {\n logger.warn({ urls }, 'Found multiple hashes for single def');\n }\n\n return hashes[0];\n}\n\nexport async function updateArtifacts(\n updateArtifact: UpdateArtifact,\n): Promise<UpdateArtifactsResult[] | null> {\n const { packageFileName: path, updatedDeps: upgrades } = updateArtifact;\n const oldContents = updateArtifact.newPackageFileContent;\n let newContents = oldContents;\n for (const upgrade of upgrades) {\n const { managerData } = upgrade;\n const idx = managerData?.idx as number;\n\n if (upgrade.depType === 'http_file' || upgrade.depType === 'http_archive') {\n const rule = findCodeFragment(newContents, [idx]);\n /* v8 ignore start -- used only for type narrowing */\n if (rule?.type !== 'record') {\n continue;\n } /* v8 ignore stop */\n\n const urlFragments = getUrlFragments(rule);\n if (!urlFragments?.length) {\n logger.debug(`def: ${rule.value}, urls is empty`);\n continue;\n }\n\n const updateValues = (oldUrl: string): string => {\n let url = oldUrl;\n url = replaceValues(url, upgrade.currentValue, upgrade.newValue);\n url = replaceValues(url, upgrade.currentDigest, upgrade.newDigest);\n url = migrateUrl(url, upgrade);\n return url;\n };\n\n const urls = urlFragments.map(({ value }) => updateValues(value));\n const hash = await getHashFromUrls(urls);\n if (!hash) {\n continue;\n }\n\n newContents = patchCodeAtFragments(\n newContents,\n urlFragments,\n updateValues,\n );\n newContents = updateCode(\n newContents,\n [idx, 'strip_prefix'],\n updateValues,\n );\n newContents = updateCode(newContents, [idx, 'sha256'], hash);\n }\n }\n\n if (oldContents === newContents) {\n return null;\n }\n\n return [\n {\n file: {\n type: 'addition',\n path,\n contents: newContents,\n },\n },\n ];\n}\n"]}
@@ -21,7 +21,7 @@ function setDepType(content, originalType) {
21
21
  }
22
22
  function extractPackageFile(content) {
23
23
  // only process sections where requirements are defined
24
- const sections = content.split(/def |\n\[/).filter((part) => part.includes('python_requires') || // only matches python_requires
24
+ const sections = content.split((0, regex_1.regEx)(/def |\n\[/)).filter((part) => part.includes('python_requires') || // only matches python_requires
25
25
  part.includes('build_require') || // matches [build_requires], build_requirements(), and build_requires
26
26
  part.includes('require'));
27
27
  const deps = [];
@@ -32,7 +32,7 @@ function extractPackageFile(content) {
32
32
  if (!(0, common_1.isComment)(rawLine)) {
33
33
  depType = setDepType(rawLine, depType);
34
34
  // extract all dependencies from each line
35
- const lines = rawLine.split(/["'],/);
35
+ const lines = rawLine.split((0, regex_1.regEx)(/["'],/));
36
36
  for (const line of lines) {
37
37
  const matches = regex.exec(line.trim());
38
38
  if (matches?.groups) {
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/conan/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport { isComment } from './common';\n\nconst regex = regEx(\n `(?<name>[-_a-zA-Z0-9]+)/(?<version>[^@#\\n{*\"']+)(?<userChannel>@[-_a-zA-Z0-9]+(?:/[^#\\n.{*\"' ]+|))?#?(?<revision>[-_a-f0-9]+[^\\n{*\"'])?`,\n);\n\nfunction setDepType(content: string, originalType: string): string {\n let depType = originalType;\n if (content.includes('python_requires')) {\n depType = 'python_requires';\n } else if (content.includes('build_require')) {\n depType = 'build_requires';\n } else if (content.includes('requires')) {\n depType = 'requires';\n }\n return depType;\n}\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n // only process sections where requirements are defined\n const sections = content.split(/def |\\n\\[/).filter(\n (part) =>\n part.includes('python_requires') || // only matches python_requires\n part.includes('build_require') || // matches [build_requires], build_requirements(), and build_requires\n part.includes('require'), // matches [requires], requirements(), and requires\n );\n\n const deps: PackageDependency[] = [];\n for (const section of sections) {\n let depType = setDepType(section, 'requires');\n const rawLines = section.split('\\n').filter(is.nonEmptyString);\n\n for (const rawLine of rawLines) {\n if (!isComment(rawLine)) {\n depType = setDepType(rawLine, depType);\n // extract all dependencies from each line\n const lines = rawLine.split(/[\"'],/);\n for (const line of lines) {\n const matches = regex.exec(line.trim());\n if (matches?.groups) {\n let dep: PackageDependency = {};\n const depName = matches.groups?.name;\n const currentValue = matches.groups?.version.trim();\n\n let replaceString = `${depName}/${currentValue}`;\n // conan uses @_/_ as a placeholder for no userChannel\n let userAndChannel = '@_/_';\n\n if (matches.groups.userChannel) {\n userAndChannel = matches.groups.userChannel;\n replaceString = `${depName}/${currentValue}${userAndChannel}`;\n if (!userAndChannel.includes('/')) {\n userAndChannel = `${userAndChannel}/_`;\n }\n }\n const packageName = `${depName}/${currentValue}${userAndChannel}`;\n\n dep = {\n ...dep,\n depName,\n packageName,\n currentValue,\n replaceString,\n depType,\n };\n if (matches.groups.revision) {\n dep.currentDigest = matches.groups.revision;\n dep.autoReplaceStringTemplate = `{{depName}}/{{newValue}}${userAndChannel}{{#if newDigest}}#{{newDigest}}{{/if}}`;\n dep.replaceString = `${replaceString}#${dep.currentDigest}`;\n }\n\n deps.push(dep);\n }\n }\n }\n }\n }\n\n return deps.length ? { deps } : null;\n}\n"]}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/conan/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import is from '@sindresorhus/is';\nimport { regEx } from '../../../util/regex';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport { isComment } from './common';\n\nconst regex = regEx(\n `(?<name>[-_a-zA-Z0-9]+)/(?<version>[^@#\\n{*\"']+)(?<userChannel>@[-_a-zA-Z0-9]+(?:/[^#\\n.{*\"' ]+|))?#?(?<revision>[-_a-f0-9]+[^\\n{*\"'])?`,\n);\n\nfunction setDepType(content: string, originalType: string): string {\n let depType = originalType;\n if (content.includes('python_requires')) {\n depType = 'python_requires';\n } else if (content.includes('build_require')) {\n depType = 'build_requires';\n } else if (content.includes('requires')) {\n depType = 'requires';\n }\n return depType;\n}\n\nexport function extractPackageFile(content: string): PackageFileContent | null {\n // only process sections where requirements are defined\n const sections = content.split(regEx(/def |\\n\\[/)).filter(\n (part) =>\n part.includes('python_requires') || // only matches python_requires\n part.includes('build_require') || // matches [build_requires], build_requirements(), and build_requires\n part.includes('require'), // matches [requires], requirements(), and requires\n );\n\n const deps: PackageDependency[] = [];\n for (const section of sections) {\n let depType = setDepType(section, 'requires');\n const rawLines = section.split('\\n').filter(is.nonEmptyString);\n\n for (const rawLine of rawLines) {\n if (!isComment(rawLine)) {\n depType = setDepType(rawLine, depType);\n // extract all dependencies from each line\n const lines = rawLine.split(regEx(/[\"'],/));\n for (const line of lines) {\n const matches = regex.exec(line.trim());\n if (matches?.groups) {\n let dep: PackageDependency = {};\n const depName = matches.groups?.name;\n const currentValue = matches.groups?.version.trim();\n\n let replaceString = `${depName}/${currentValue}`;\n // conan uses @_/_ as a placeholder for no userChannel\n let userAndChannel = '@_/_';\n\n if (matches.groups.userChannel) {\n userAndChannel = matches.groups.userChannel;\n replaceString = `${depName}/${currentValue}${userAndChannel}`;\n if (!userAndChannel.includes('/')) {\n userAndChannel = `${userAndChannel}/_`;\n }\n }\n const packageName = `${depName}/${currentValue}${userAndChannel}`;\n\n dep = {\n ...dep,\n depName,\n packageName,\n currentValue,\n replaceString,\n depType,\n };\n if (matches.groups.revision) {\n dep.currentDigest = matches.groups.revision;\n dep.autoReplaceStringTemplate = `{{depName}}/{{newValue}}${userAndChannel}{{#if newDigest}}#{{newDigest}}{{/if}}`;\n dep.replaceString = `${replaceString}#${dep.currentDigest}`;\n }\n\n deps.push(dep);\n }\n }\n }\n }\n }\n\n return deps.length ? { deps } : null;\n}\n"]}
@@ -3,6 +3,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.parse = parse;
4
4
  const tslib_1 = require("tslib");
5
5
  const good_enough_parser_1 = require("good-enough-parser");
6
+ const regex_1 = require("../../../util/regex");
6
7
  const cpan_1 = require("../../datasource/cpan");
7
8
  const github_tags_1 = require("../../datasource/github-tags");
8
9
  const perlVersioning = tslib_1.__importStar(require("../../versioning/perl"));
@@ -28,7 +29,7 @@ const perlVersionMatch = good_enough_parser_1.query
28
29
  }
29
30
  return ctx;
30
31
  });
31
- const requirementMatch = good_enough_parser_1.query.sym(/^(?:requires|recommends|suggests)$/);
32
+ const requirementMatch = good_enough_parser_1.query.sym((0, regex_1.regEx)(/^(?:requires|recommends|suggests)$/));
32
33
  const phasedRequiresMatch = good_enough_parser_1.query.sym(/^(?:configure|build|test|author)_requires$/, (ctx, { value: phase }) => {
33
34
  ctx.tempPhase = phase.replace(/_requires/, '').replace(/author/, 'develop');
34
35
  return ctx;
@@ -1 +1 @@
1
- {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../lib/modules/manager/cpanfile/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { query as q } from 'good-enough-parser';\nimport { CpanDatasource } from '../../datasource/cpan';\nimport { GithubTagsDatasource } from '../../datasource/github-tags';\nimport * as perlVersioning from '../../versioning/perl';\nimport type { PackageDependency } from '../types';\nimport { cpanfile } from './language';\n\ninterface Ctx {\n deps: PackageDependency[];\n\n perlVersion?: string;\n\n phase?: string;\n tempPhase?: string;\n\n depName?: string;\n currentValue?: string;\n}\n\n// requires perl, '5.36.1';\n// requires 'perl' => 5.036001;\nconst perlVersionMatch = q\n .sym<Ctx>('requires')\n .alt(q.sym('perl'), q.str('perl'))\n .alt(q.op(','), q.op('=>'))\n .alt(\n q.num<Ctx>((ctx, { value: perlVersion }) => ({ ...ctx, perlVersion })),\n q.str<Ctx>((ctx, { value: perlVersion }) => ({ ...ctx, perlVersion })),\n )\n .op(';')\n .handler((ctx) => {\n if (ctx.perlVersion) {\n ctx.deps.push({\n depName: 'perl',\n packageName: 'Perl/perl5',\n currentValue: ctx.perlVersion,\n datasource: GithubTagsDatasource.id,\n versioning: perlVersioning.id,\n extractVersion: '^v(?<version>\\\\S+)',\n });\n }\n return ctx;\n });\n\nconst requirementMatch = q.sym<Ctx>(/^(?:requires|recommends|suggests)$/);\n\nconst phasedRequiresMatch = q.sym<Ctx>(\n /^(?:configure|build|test|author)_requires$/,\n (ctx, { value: phase }) => {\n ctx.tempPhase = phase.replace(/_requires/, '').replace(/author/, 'develop');\n return ctx;\n },\n);\n\n// requires 'Foo::Bar';\n//\n// requires 'Foo::Bar', '1.23';\n// recommends 'Foo::Bar', '1.23';\n// suggests 'Foo::Bar', '1.23';\n//\n// configure_requires 'Foo::Bar' => 1.023;\n// build_requires 'Foo::Bar' => 1.023;\n// test_requires 'Foo::Bar' => 1.023;\n// author_requires 'Foo::Bar' => 1.023;\nconst moduleMatch = q\n .alt(requirementMatch, phasedRequiresMatch)\n .str((ctx, { value: depName }) => ({ ...ctx, depName }))\n .opt(\n q.alt<Ctx>(q.op(','), q.op('=>')).alt(\n q.num<Ctx>((ctx, { value: currentValue }) => ({ ...ctx, currentValue })),\n q.str<Ctx>((ctx, { value }) => {\n const currentValue = value.replace(/^(?:\\s*(?:==|>=|>))?\\s*v?/, '');\n return { ...ctx, currentValue };\n }),\n ),\n )\n .op(';')\n .handler((ctx) => {\n const { phase, tempPhase, depName, currentValue } = ctx;\n\n delete ctx.tempPhase;\n delete ctx.depName;\n delete ctx.currentValue;\n\n if (depName) {\n const dep: PackageDependency = {\n depName,\n };\n if (currentValue) {\n dep.currentValue = currentValue;\n } else {\n dep.skipReason = 'unspecified-version';\n }\n if (phase) {\n dep.depType = phase;\n } else if (tempPhase) {\n dep.depType = tempPhase;\n }\n\n dep.datasource = CpanDatasource.id;\n ctx.deps.push(dep);\n }\n\n return ctx;\n });\n\nconst phaseRegex = /^(?:configure|build|test|runtime|develop)/;\n\nconst phaseMatch = q.alt<Ctx>(\n q.sym(phaseRegex, (ctx, { value: phase }) => ({ ...ctx, phase })),\n q.str(phaseRegex, (ctx, { value: phase }) => ({ ...ctx, phase })),\n);\n\n// on 'configure' => sub {\n// on build => sub {\n// on 'test' => sub {\n// on runtime => sub {\n// on 'develop' => sub {\nconst onMatch = q\n .sym<Ctx>('on')\n .join(phaseMatch)\n .op('=>')\n .sym('sub')\n .tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n search: moduleMatch,\n })\n .handler((ctx) => {\n delete ctx.phase;\n return ctx;\n });\n\nconst query = q.tree<Ctx>({\n type: 'root-tree',\n maxDepth: 4,\n search: q.alt<Ctx>(perlVersionMatch, moduleMatch, onMatch),\n});\n\nexport function parse(\n content: string,\n): Pick<Ctx, 'deps' | 'perlVersion'> | null {\n return cpanfile.query(content, query, {\n deps: [],\n });\n}\n"]}
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../../../../lib/modules/manager/cpanfile/parser.ts"],"names":[],"mappings":"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","sourcesContent":["import { query as q } from 'good-enough-parser';\nimport { regEx } from '../../../util/regex';\nimport { CpanDatasource } from '../../datasource/cpan';\nimport { GithubTagsDatasource } from '../../datasource/github-tags';\nimport * as perlVersioning from '../../versioning/perl';\nimport type { PackageDependency } from '../types';\nimport { cpanfile } from './language';\n\ninterface Ctx {\n deps: PackageDependency[];\n\n perlVersion?: string;\n\n phase?: string;\n tempPhase?: string;\n\n depName?: string;\n currentValue?: string;\n}\n\n// requires perl, '5.36.1';\n// requires 'perl' => 5.036001;\nconst perlVersionMatch = q\n .sym<Ctx>('requires')\n .alt(q.sym('perl'), q.str('perl'))\n .alt(q.op(','), q.op('=>'))\n .alt(\n q.num<Ctx>((ctx, { value: perlVersion }) => ({ ...ctx, perlVersion })),\n q.str<Ctx>((ctx, { value: perlVersion }) => ({ ...ctx, perlVersion })),\n )\n .op(';')\n .handler((ctx) => {\n if (ctx.perlVersion) {\n ctx.deps.push({\n depName: 'perl',\n packageName: 'Perl/perl5',\n currentValue: ctx.perlVersion,\n datasource: GithubTagsDatasource.id,\n versioning: perlVersioning.id,\n extractVersion: '^v(?<version>\\\\S+)',\n });\n }\n return ctx;\n });\n\nconst requirementMatch = q.sym<Ctx>(\n regEx(/^(?:requires|recommends|suggests)$/),\n);\n\nconst phasedRequiresMatch = q.sym<Ctx>(\n /^(?:configure|build|test|author)_requires$/,\n (ctx, { value: phase }) => {\n ctx.tempPhase = phase.replace(/_requires/, '').replace(/author/, 'develop');\n return ctx;\n },\n);\n\n// requires 'Foo::Bar';\n//\n// requires 'Foo::Bar', '1.23';\n// recommends 'Foo::Bar', '1.23';\n// suggests 'Foo::Bar', '1.23';\n//\n// configure_requires 'Foo::Bar' => 1.023;\n// build_requires 'Foo::Bar' => 1.023;\n// test_requires 'Foo::Bar' => 1.023;\n// author_requires 'Foo::Bar' => 1.023;\nconst moduleMatch = q\n .alt(requirementMatch, phasedRequiresMatch)\n .str((ctx, { value: depName }) => ({ ...ctx, depName }))\n .opt(\n q.alt<Ctx>(q.op(','), q.op('=>')).alt(\n q.num<Ctx>((ctx, { value: currentValue }) => ({ ...ctx, currentValue })),\n q.str<Ctx>((ctx, { value }) => {\n const currentValue = value.replace(/^(?:\\s*(?:==|>=|>))?\\s*v?/, '');\n return { ...ctx, currentValue };\n }),\n ),\n )\n .op(';')\n .handler((ctx) => {\n const { phase, tempPhase, depName, currentValue } = ctx;\n\n delete ctx.tempPhase;\n delete ctx.depName;\n delete ctx.currentValue;\n\n if (depName) {\n const dep: PackageDependency = {\n depName,\n };\n if (currentValue) {\n dep.currentValue = currentValue;\n } else {\n dep.skipReason = 'unspecified-version';\n }\n if (phase) {\n dep.depType = phase;\n } else if (tempPhase) {\n dep.depType = tempPhase;\n }\n\n dep.datasource = CpanDatasource.id;\n ctx.deps.push(dep);\n }\n\n return ctx;\n });\n\nconst phaseRegex = /^(?:configure|build|test|runtime|develop)/;\n\nconst phaseMatch = q.alt<Ctx>(\n q.sym(phaseRegex, (ctx, { value: phase }) => ({ ...ctx, phase })),\n q.str(phaseRegex, (ctx, { value: phase }) => ({ ...ctx, phase })),\n);\n\n// on 'configure' => sub {\n// on build => sub {\n// on 'test' => sub {\n// on runtime => sub {\n// on 'develop' => sub {\nconst onMatch = q\n .sym<Ctx>('on')\n .join(phaseMatch)\n .op('=>')\n .sym('sub')\n .tree({\n type: 'wrapped-tree',\n maxDepth: 1,\n search: moduleMatch,\n })\n .handler((ctx) => {\n delete ctx.phase;\n return ctx;\n });\n\nconst query = q.tree<Ctx>({\n type: 'root-tree',\n maxDepth: 4,\n search: q.alt<Ctx>(perlVersionMatch, moduleMatch, onMatch),\n});\n\nexport function parse(\n content: string,\n): Pick<Ctx, 'deps' | 'perlVersion'> | null {\n return cpanfile.query(content, query, {\n deps: [],\n });\n}\n"]}
@@ -2,8 +2,9 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.XPKGSchema = void 0;
4
4
  const zod_1 = require("zod");
5
+ const regex_1 = require("../../../util/regex");
5
6
  exports.XPKGSchema = zod_1.z.object({
6
- apiVersion: zod_1.z.string().regex(/^pkg\.crossplane\.io\//),
7
+ apiVersion: zod_1.z.string().regex((0, regex_1.regEx)(/^pkg\.crossplane\.io\//)),
7
8
  kind: zod_1.z.enum(['Provider', 'Configuration', 'Function']),
8
9
  spec: zod_1.z.object({
9
10
  package: zod_1.z.string(),
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/manager/crossplane/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AAEX,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,wBAAwB,CAAC;IACtD,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC;QACb,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;KACpB,CAAC;CACH,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\n\nexport const XPKGSchema = z.object({\n apiVersion: z.string().regex(/^pkg\\.crossplane\\.io\\//),\n kind: z.enum(['Provider', 'Configuration', 'Function']),\n spec: z.object({\n package: z.string(),\n }),\n});\n\nexport type XPKG = z.infer<typeof XPKGSchema>;\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/manager/crossplane/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,+CAA4C;AAE/B,QAAA,UAAU,GAAG,OAAC,CAAC,MAAM,CAAC;IACjC,UAAU,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAA,aAAK,EAAC,wBAAwB,CAAC,CAAC;IAC7D,IAAI,EAAE,OAAC,CAAC,IAAI,CAAC,CAAC,UAAU,EAAE,eAAe,EAAE,UAAU,CAAC,CAAC;IACvD,IAAI,EAAE,OAAC,CAAC,MAAM,CAAC;QACb,OAAO,EAAE,OAAC,CAAC,MAAM,EAAE;KACpB,CAAC;CACH,CAAC,CAAC","sourcesContent":["import { z } from 'zod';\nimport { regEx } from '../../../util/regex';\n\nexport const XPKGSchema = z.object({\n apiVersion: z.string().regex(regEx(/^pkg\\.crossplane\\.io\\//)),\n kind: z.enum(['Provider', 'Configuration', 'Function']),\n spec: z.object({\n package: z.string(),\n }),\n});\n\nexport type XPKG = z.infer<typeof XPKGSchema>;\n"]}