renovate 41.169.2 → 41.169.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.
Files changed (29) hide show
  1. package/dist/modules/datasource/docker/index.d.ts +1 -1
  2. package/dist/modules/datasource/docker/index.js +1 -1
  3. package/dist/modules/datasource/docker/index.js.map +1 -1
  4. package/dist/modules/manager/fingerprint.generated.js +1 -1
  5. package/dist/modules/manager/fingerprint.generated.js.map +1 -1
  6. package/dist/modules/manager/nix/artifacts.js +2 -2
  7. package/dist/modules/manager/nix/artifacts.js.map +1 -1
  8. package/dist/modules/manager/nix/extract.d.ts +2 -2
  9. package/dist/modules/manager/nix/extract.js +79 -67
  10. package/dist/modules/manager/nix/extract.js.map +1 -1
  11. package/dist/modules/manager/nix/index.d.ts +1 -0
  12. package/dist/modules/manager/nix/index.js +3 -1
  13. package/dist/modules/manager/nix/index.js.map +1 -1
  14. package/dist/modules/manager/nix/range.d.ts +3 -0
  15. package/dist/modules/manager/nix/range.js +10 -0
  16. package/dist/modules/manager/nix/range.js.map +1 -0
  17. package/dist/modules/manager/nix/schema.d.ts +14 -0
  18. package/dist/modules/manager/nix/schema.js +2 -0
  19. package/dist/modules/manager/nix/schema.js.map +1 -1
  20. package/dist/modules/manager/types.d.ts +2 -0
  21. package/dist/modules/manager/types.js.map +1 -1
  22. package/dist/modules/platform/bitbucket/index.js +2 -1
  23. package/dist/modules/platform/bitbucket/index.js.map +1 -1
  24. package/dist/workers/repository/process/lookup/filter-checks.js +2 -1
  25. package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
  26. package/dist/workers/repository/update/branch/index.js +2 -1
  27. package/dist/workers/repository/update/branch/index.js.map +1 -1
  28. package/package.json +4 -4
  29. package/renovate-schema.json +2 -2
@@ -5,40 +5,27 @@ const logger_1 = require("../../../logger");
5
5
  const fs_1 = require("../../../util/fs");
6
6
  const regex_1 = require("../../../util/regex");
7
7
  const git_refs_1 = require("../../datasource/git-refs");
8
+ const git_1 = require("../../versioning/git");
8
9
  const nixpkgs_1 = require("../../versioning/nixpkgs");
9
10
  const schema_1 = require("./schema");
10
- const nixpkgsRegex = (0, regex_1.regEx)(/"github:nixos\/nixpkgs(\/(?<ref>[a-z0-9-.]+))?"/i);
11
11
  // as documented upstream
12
12
  // https://github.com/NixOS/nix/blob/master/doc/manual/source/protocols/tarball-fetcher.md#gitea-and-forgejo-support
13
13
  const lockableHTTPTarballProtocol = (0, regex_1.regEx)('^https://(?<domain>[^/]+)/(?<owner>[^/]+)/(?<repo>[^/]+)/archive/(?<rev>.+).tar.gz$');
14
- async function extractPackageFile(content, packageFile) {
15
- const packageLockFile = (0, fs_1.getSiblingFileName)(packageFile, 'flake.lock');
16
- const lockContents = await (0, fs_1.readLocalFile)(packageLockFile, 'utf8');
17
- logger_1.logger.trace(`nix.extractPackageFile(${packageLockFile})`);
14
+ const lockableChannelOriginalUrl = (0, regex_1.regEx)('^https://(?:channels\\.nixos\\.org|nixos\\.org/channels)/(?<channel>[^/]+)/nixexprs\\.tar\\.xz$');
15
+ async function extractPackageFile(content, packageFile, config) {
16
+ const flakeLockFile = (0, fs_1.getSiblingFileName)(packageFile, 'flake.lock');
17
+ const flakeLockContents = await (0, fs_1.readLocalFile)(flakeLockFile, 'utf8');
18
+ logger_1.logger.trace(`nix.extractPackageFile(${flakeLockFile})`);
18
19
  const deps = [];
19
- const match = nixpkgsRegex.exec(content);
20
- if (match?.groups) {
21
- const { ref } = match.groups;
22
- deps.push({
23
- depName: 'nixpkgs',
24
- currentValue: ref,
25
- datasource: git_refs_1.GitRefsDatasource.id,
26
- packageName: 'https://github.com/NixOS/nixpkgs',
27
- versioning: nixpkgs_1.id,
28
- });
29
- }
30
- const flakeLockParsed = schema_1.NixFlakeLock.safeParse(lockContents);
20
+ const flakeLockParsed = schema_1.NixFlakeLock.safeParse(flakeLockContents);
31
21
  if (!flakeLockParsed.success) {
32
- logger_1.logger.debug({ packageLockFile, error: flakeLockParsed.error }, `invalid flake.lock file`);
22
+ logger_1.logger.debug({ flakeLockFile, error: flakeLockParsed.error }, `invalid flake.lock file`);
33
23
  return null;
34
24
  }
35
25
  const flakeLock = flakeLockParsed.data;
36
26
  const rootInputs = flakeLock.nodes.root.inputs;
37
27
  if (!rootInputs) {
38
- logger_1.logger.debug({ packageLockFile, error: flakeLockParsed.error }, `flake.lock is missing "root" node`);
39
- if (deps.length) {
40
- return { deps };
41
- }
28
+ logger_1.logger.debug({ flakeLockFile, error: flakeLockParsed.error }, `flake.lock is missing "root" node`);
42
29
  return null;
43
30
  }
44
31
  for (const [depName, flakeInput] of Object.entries(flakeLock.nodes)) {
@@ -50,69 +37,94 @@ async function extractPackageFile(content, packageFile) {
50
37
  if (!(depName in rootInputs)) {
51
38
  continue;
52
39
  }
40
+ // flakeLocked example: { rev: '56a49ffef2908dad1e9a8adef1f18802bc760962', type: 'github' }
53
41
  const flakeLocked = flakeInput.locked;
42
+ // flakeOriginal example: { owner: 'NuschtOS', repo: 'search', type: 'github' }
54
43
  const flakeOriginal = flakeInput.original;
55
- // istanbul ignore if: if we are not in a root node then original and locked always exist which cannot be easily expressed in the type
56
- if (flakeLocked === undefined || flakeOriginal === undefined) {
57
- logger_1.logger.debug({ packageLockFile, flakeInput }, `Found empty flake input, skipping`);
44
+ if (flakeLocked === undefined) {
45
+ logger_1.logger.debug({ flakeLockFile, flakeInput }, `input is missing locked, skipping`);
46
+ continue;
47
+ }
48
+ if (flakeOriginal === undefined) {
49
+ logger_1.logger.debug({ flakeLockFile, flakeInput }, `input is missing original, skipping`);
50
+ continue;
51
+ }
52
+ // indirect inputs cannot be reliably updated because they depend on the flake registry
53
+ if (flakeOriginal.type === 'indirect' || flakeLocked.type === 'indirect') {
54
+ logger_1.logger.debug({ flakeLockFile, flakeInput }, `input is type indirect, skipping`);
58
55
  continue;
59
56
  }
60
- // indirect inputs cannot be reliable updated because they depend on the flake registry
61
- if (flakeOriginal.type === 'indirect') {
57
+ // cannot update local path inputs
58
+ if (flakeOriginal.type === 'path' || flakeLocked.type === 'path') {
59
+ logger_1.logger.debug({ flakeLockFile, flakeInput }, `input is type path, skipping`);
62
60
  continue;
63
61
  }
62
+ // if no rev is being tracked, we cannot update this input
63
+ if (flakeLocked.rev === undefined) {
64
+ logger_1.logger.debug({ flakeLockFile, flakeInput }, `locked input is not tracking a rev, skipping`);
65
+ continue;
66
+ }
67
+ // if there's a new digest, set the corresponding digest in the lockfile so confirmations pass
68
+ const currentDigest = config?.currentDigest;
69
+ const newDigest = config?.newDigest;
70
+ if (currentDigest &&
71
+ newDigest &&
72
+ flakeOriginal.rev &&
73
+ flakeOriginal.rev === currentDigest && // currentDigest is the old digest
74
+ content.includes(newDigest) // flake.nix contains the new digest
75
+ ) {
76
+ logger_1.logger.debug({ flakeLockFile, flakeInput }, `overriding rev ${flakeOriginal.rev} with new digest ${newDigest}`);
77
+ flakeOriginal.rev = newDigest;
78
+ }
79
+ const dep = {
80
+ depName,
81
+ datasource: git_refs_1.GitRefsDatasource.id,
82
+ versioning: git_1.id,
83
+ };
84
+ // if rev is set, the flake contains a digest and can be updated directly
85
+ // otherwise set lockedVersion so it is updated during lock file maintenance
86
+ if (flakeOriginal.rev) {
87
+ dep.currentValue = flakeOriginal.ref;
88
+ dep.currentDigest = flakeOriginal.rev;
89
+ dep.replaceString = flakeOriginal.rev;
90
+ }
91
+ else {
92
+ dep.lockedVersion = flakeLocked.rev;
93
+ }
64
94
  switch (flakeLocked.type) {
65
95
  case 'github':
66
- deps.push({
67
- depName,
68
- currentValue: flakeOriginal.ref,
69
- currentDigest: flakeLocked.rev,
70
- datasource: git_refs_1.GitRefsDatasource.id,
71
- packageName: `https://${flakeOriginal.host ?? 'github.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`,
72
- });
96
+ // set to nixpkgs if it is a nixpkgs reference
97
+ if (flakeOriginal.owner?.toLowerCase() === 'nixos' &&
98
+ flakeOriginal.repo?.toLowerCase() === 'nixpkgs') {
99
+ dep.packageName = 'https://github.com/NixOS/nixpkgs';
100
+ dep.currentValue = flakeOriginal.ref;
101
+ dep.versioning = nixpkgs_1.id;
102
+ break;
103
+ }
104
+ dep.packageName = `https://${flakeOriginal.host ?? 'github.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;
73
105
  break;
74
106
  case 'gitlab':
75
- deps.push({
76
- depName,
77
- currentValue: flakeOriginal.ref,
78
- currentDigest: flakeLocked.rev,
79
- datasource: git_refs_1.GitRefsDatasource.id,
80
- packageName: `https://${flakeOriginal.host ?? 'gitlab.com'}/${decodeURIComponent(flakeOriginal.owner)}/${flakeOriginal.repo}`,
81
- });
107
+ dep.packageName = `https://${flakeOriginal.host ?? 'gitlab.com'}/${decodeURIComponent(flakeOriginal.owner)}/${flakeOriginal.repo}`;
82
108
  break;
83
109
  case 'git':
84
- deps.push({
85
- depName,
86
- currentValue: flakeOriginal.ref,
87
- currentDigest: flakeLocked.rev,
88
- datasource: git_refs_1.GitRefsDatasource.id,
89
- packageName: flakeOriginal.url,
90
- });
110
+ dep.packageName = flakeOriginal.url;
91
111
  break;
92
112
  case 'sourcehut':
93
- deps.push({
94
- depName,
95
- currentValue: flakeOriginal.ref,
96
- currentDigest: flakeLocked.rev,
97
- datasource: git_refs_1.GitRefsDatasource.id,
98
- packageName: `https://${flakeOriginal.host ?? 'git.sr.ht'}/${flakeOriginal.owner}/${flakeOriginal.repo}`,
99
- });
113
+ dep.packageName = `https://${flakeOriginal.host ?? 'git.sr.ht'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;
100
114
  break;
101
115
  case 'tarball':
102
- deps.push({
103
- depName,
104
- currentValue: flakeLocked.ref,
105
- currentDigest: flakeLocked.rev,
106
- datasource: git_refs_1.GitRefsDatasource.id,
107
- // type tarball always contains this link
108
- packageName: flakeOriginal.url.replace(lockableHTTPTarballProtocol, 'https://$<domain>/$<owner>/$<repo>'),
109
- });
110
- break;
111
- // istanbul ignore next: just a safeguard
112
- default:
113
- logger_1.logger.debug({ packageLockFile }, `Unknown flake.lock type "${flakeLocked.type}", skipping`);
116
+ // set to nixpkgs if it is a lockable channel URL
117
+ if (flakeOriginal.url &&
118
+ lockableChannelOriginalUrl.test(flakeOriginal.url)) {
119
+ dep.packageName = 'https://github.com/NixOS/nixpkgs';
120
+ dep.currentValue = flakeOriginal.url.replace(lockableChannelOriginalUrl, '$<channel>');
121
+ dep.versioning = nixpkgs_1.id;
122
+ break;
123
+ }
124
+ dep.packageName = flakeOriginal.url.replace(lockableHTTPTarballProtocol, 'https://$<domain>/$<owner>/$<repo>');
114
125
  break;
115
126
  }
127
+ deps.push(dep);
116
128
  }
117
129
  if (deps.length) {
118
130
  return { deps };
@@ -1 +1 @@
1
- {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/nix/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport { getSiblingFileName, readLocalFile } from '../../../util/fs';\nimport { regEx } from '../../../util/regex';\nimport { GitRefsDatasource } from '../../datasource/git-refs';\nimport { id as nixpkgsVersioning } from '../../versioning/nixpkgs';\nimport type { PackageDependency, PackageFileContent } from '../types';\nimport { NixFlakeLock } from './schema';\n\nconst nixpkgsRegex = regEx(/\"github:nixos\\/nixpkgs(\\/(?<ref>[a-z0-9-.]+))?\"/i);\n\n// as documented upstream\n// https://github.com/NixOS/nix/blob/master/doc/manual/source/protocols/tarball-fetcher.md#gitea-and-forgejo-support\nconst lockableHTTPTarballProtocol = regEx(\n '^https://(?<domain>[^/]+)/(?<owner>[^/]+)/(?<repo>[^/]+)/archive/(?<rev>.+).tar.gz$',\n);\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n): Promise<PackageFileContent | null> {\n const packageLockFile = getSiblingFileName(packageFile, 'flake.lock');\n const lockContents = await readLocalFile(packageLockFile, 'utf8');\n\n logger.trace(`nix.extractPackageFile(${packageLockFile})`);\n\n const deps: PackageDependency[] = [];\n\n const match = nixpkgsRegex.exec(content);\n if (match?.groups) {\n const { ref } = match.groups;\n deps.push({\n depName: 'nixpkgs',\n currentValue: ref,\n datasource: GitRefsDatasource.id,\n packageName: 'https://github.com/NixOS/nixpkgs',\n versioning: nixpkgsVersioning,\n });\n }\n\n const flakeLockParsed = NixFlakeLock.safeParse(lockContents);\n if (!flakeLockParsed.success) {\n logger.debug(\n { packageLockFile, error: flakeLockParsed.error },\n `invalid flake.lock file`,\n );\n return null;\n }\n\n const flakeLock = flakeLockParsed.data;\n const rootInputs = flakeLock.nodes.root.inputs;\n\n if (!rootInputs) {\n logger.debug(\n { packageLockFile, error: flakeLockParsed.error },\n `flake.lock is missing \"root\" node`,\n );\n\n if (deps.length) {\n return { deps };\n }\n return null;\n }\n\n for (const [depName, flakeInput] of Object.entries(flakeLock.nodes)) {\n // the root input is a magic string for the entrypoint and only references other flake inputs\n if (depName === 'root') {\n continue;\n }\n\n // skip all locked and transitivie nodes as they cannot be updated by regular means\n if (!(depName in rootInputs)) {\n continue;\n }\n\n const flakeLocked = flakeInput.locked;\n const flakeOriginal = flakeInput.original;\n\n // istanbul ignore if: if we are not in a root node then original and locked always exist which cannot be easily expressed in the type\n if (flakeLocked === undefined || flakeOriginal === undefined) {\n logger.debug(\n { packageLockFile, flakeInput },\n `Found empty flake input, skipping`,\n );\n continue;\n }\n\n // indirect inputs cannot be reliable updated because they depend on the flake registry\n if (flakeOriginal.type === 'indirect') {\n continue;\n }\n\n switch (flakeLocked.type) {\n case 'github':\n deps.push({\n depName,\n currentValue: flakeOriginal.ref,\n currentDigest: flakeLocked.rev,\n datasource: GitRefsDatasource.id,\n packageName: `https://${flakeOriginal.host ?? 'github.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`,\n });\n break;\n case 'gitlab':\n deps.push({\n depName,\n currentValue: flakeOriginal.ref,\n currentDigest: flakeLocked.rev,\n datasource: GitRefsDatasource.id,\n packageName: `https://${flakeOriginal.host ?? 'gitlab.com'}/${decodeURIComponent(flakeOriginal.owner!)}/${flakeOriginal.repo}`,\n });\n break;\n case 'git':\n deps.push({\n depName,\n currentValue: flakeOriginal.ref,\n currentDigest: flakeLocked.rev,\n datasource: GitRefsDatasource.id,\n packageName: flakeOriginal.url,\n });\n break;\n case 'sourcehut':\n deps.push({\n depName,\n currentValue: flakeOriginal.ref,\n currentDigest: flakeLocked.rev,\n datasource: GitRefsDatasource.id,\n packageName: `https://${flakeOriginal.host ?? 'git.sr.ht'}/${flakeOriginal.owner}/${flakeOriginal.repo}`,\n });\n break;\n case 'tarball':\n deps.push({\n depName,\n currentValue: flakeLocked.ref,\n currentDigest: flakeLocked.rev,\n datasource: GitRefsDatasource.id,\n // type tarball always contains this link\n packageName: flakeOriginal.url!.replace(\n lockableHTTPTarballProtocol,\n 'https://$<domain>/$<owner>/$<repo>',\n ),\n });\n break;\n // istanbul ignore next: just a safeguard\n default:\n logger.debug(\n { packageLockFile },\n `Unknown flake.lock type \"${flakeLocked.type}\", skipping`,\n );\n break;\n }\n }\n\n if (deps.length) {\n return { deps };\n }\n\n return null;\n}\n"]}
1
+ {"version":3,"file":"extract.js","sourceRoot":"","sources":["../../../../lib/modules/manager/nix/extract.ts"],"names":[],"mappings":"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","sourcesContent":["import { logger } from '../../../logger';\nimport { getSiblingFileName, readLocalFile } from '../../../util/fs';\nimport { regEx } from '../../../util/regex';\nimport { GitRefsDatasource } from '../../datasource/git-refs';\nimport { id as gitRefVersioning } from '../../versioning/git';\nimport { id as nixpkgsVersioning } from '../../versioning/nixpkgs';\nimport type {\n ExtractConfig,\n PackageDependency,\n PackageFileContent,\n} from '../types';\nimport { NixFlakeLock } from './schema';\n\n// as documented upstream\n// https://github.com/NixOS/nix/blob/master/doc/manual/source/protocols/tarball-fetcher.md#gitea-and-forgejo-support\nconst lockableHTTPTarballProtocol = regEx(\n '^https://(?<domain>[^/]+)/(?<owner>[^/]+)/(?<repo>[^/]+)/archive/(?<rev>.+).tar.gz$',\n);\n\nconst lockableChannelOriginalUrl = regEx(\n '^https://(?:channels\\\\.nixos\\\\.org|nixos\\\\.org/channels)/(?<channel>[^/]+)/nixexprs\\\\.tar\\\\.xz$',\n);\n\nexport async function extractPackageFile(\n content: string,\n packageFile: string,\n config?: ExtractConfig,\n): Promise<PackageFileContent | null> {\n const flakeLockFile = getSiblingFileName(packageFile, 'flake.lock');\n const flakeLockContents = await readLocalFile(flakeLockFile, 'utf8');\n\n logger.trace(`nix.extractPackageFile(${flakeLockFile})`);\n\n const deps: PackageDependency[] = [];\n\n const flakeLockParsed = NixFlakeLock.safeParse(flakeLockContents);\n if (!flakeLockParsed.success) {\n logger.debug(\n { flakeLockFile, error: flakeLockParsed.error },\n `invalid flake.lock file`,\n );\n return null;\n }\n\n const flakeLock = flakeLockParsed.data;\n const rootInputs = flakeLock.nodes.root.inputs;\n\n if (!rootInputs) {\n logger.debug(\n { flakeLockFile, error: flakeLockParsed.error },\n `flake.lock is missing \"root\" node`,\n );\n return null;\n }\n\n for (const [depName, flakeInput] of Object.entries(flakeLock.nodes)) {\n // the root input is a magic string for the entrypoint and only references other flake inputs\n if (depName === 'root') {\n continue;\n }\n\n // skip all locked and transitivie nodes as they cannot be updated by regular means\n if (!(depName in rootInputs)) {\n continue;\n }\n\n // flakeLocked example: { rev: '56a49ffef2908dad1e9a8adef1f18802bc760962', type: 'github' }\n const flakeLocked = flakeInput.locked;\n // flakeOriginal example: { owner: 'NuschtOS', repo: 'search', type: 'github' }\n const flakeOriginal = flakeInput.original;\n\n if (flakeLocked === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is missing locked, skipping`,\n );\n continue;\n }\n\n if (flakeOriginal === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is missing original, skipping`,\n );\n continue;\n }\n\n // indirect inputs cannot be reliably updated because they depend on the flake registry\n if (flakeOriginal.type === 'indirect' || flakeLocked.type === 'indirect') {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is type indirect, skipping`,\n );\n continue;\n }\n\n // cannot update local path inputs\n if (flakeOriginal.type === 'path' || flakeLocked.type === 'path') {\n logger.debug(\n { flakeLockFile, flakeInput },\n `input is type path, skipping`,\n );\n continue;\n }\n\n // if no rev is being tracked, we cannot update this input\n if (flakeLocked.rev === undefined) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `locked input is not tracking a rev, skipping`,\n );\n continue;\n }\n\n // if there's a new digest, set the corresponding digest in the lockfile so confirmations pass\n const currentDigest = config?.currentDigest;\n const newDigest = config?.newDigest;\n if (\n currentDigest &&\n newDigest &&\n flakeOriginal.rev &&\n flakeOriginal.rev === currentDigest && // currentDigest is the old digest\n content.includes(newDigest) // flake.nix contains the new digest\n ) {\n logger.debug(\n { flakeLockFile, flakeInput },\n `overriding rev ${flakeOriginal.rev} with new digest ${newDigest}`,\n );\n flakeOriginal.rev = newDigest;\n }\n\n const dep: PackageDependency = {\n depName,\n datasource: GitRefsDatasource.id,\n versioning: gitRefVersioning,\n };\n\n // if rev is set, the flake contains a digest and can be updated directly\n // otherwise set lockedVersion so it is updated during lock file maintenance\n if (flakeOriginal.rev) {\n dep.currentValue = flakeOriginal.ref;\n dep.currentDigest = flakeOriginal.rev;\n dep.replaceString = flakeOriginal.rev;\n } else {\n dep.lockedVersion = flakeLocked.rev;\n }\n\n switch (flakeLocked.type) {\n case 'github':\n // set to nixpkgs if it is a nixpkgs reference\n if (\n flakeOriginal.owner?.toLowerCase() === 'nixos' &&\n flakeOriginal.repo?.toLowerCase() === 'nixpkgs'\n ) {\n dep.packageName = 'https://github.com/NixOS/nixpkgs';\n dep.currentValue = flakeOriginal.ref;\n dep.versioning = nixpkgsVersioning;\n break;\n }\n\n dep.packageName = `https://${flakeOriginal.host ?? 'github.com'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;\n break;\n\n case 'gitlab':\n dep.packageName = `https://${flakeOriginal.host ?? 'gitlab.com'}/${decodeURIComponent(flakeOriginal.owner!)}/${flakeOriginal.repo}`;\n break;\n\n case 'git':\n dep.packageName = flakeOriginal.url;\n break;\n\n case 'sourcehut':\n dep.packageName = `https://${flakeOriginal.host ?? 'git.sr.ht'}/${flakeOriginal.owner}/${flakeOriginal.repo}`;\n break;\n\n case 'tarball':\n // set to nixpkgs if it is a lockable channel URL\n if (\n flakeOriginal.url &&\n lockableChannelOriginalUrl.test(flakeOriginal.url)\n ) {\n dep.packageName = 'https://github.com/NixOS/nixpkgs';\n dep.currentValue = flakeOriginal.url.replace(\n lockableChannelOriginalUrl,\n '$<channel>',\n );\n dep.versioning = nixpkgsVersioning;\n break;\n }\n\n dep.packageName = flakeOriginal.url!.replace(\n lockableHTTPTarballProtocol,\n 'https://$<domain>/$<owner>/$<repo>',\n );\n break;\n }\n\n deps.push(dep);\n }\n\n if (deps.length) {\n return { deps };\n }\n\n return null;\n}\n"]}
@@ -1,5 +1,6 @@
1
1
  export { extractPackageFile } from './extract';
2
2
  export { updateArtifacts } from './artifacts';
3
+ export { getRangeStrategy } from './range';
3
4
  export declare const supportsLockFileMaintenance = true;
4
5
  export declare const url = "https://nix.dev";
5
6
  export declare const defaultConfig: {
@@ -1,11 +1,13 @@
1
1
  "use strict";
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.supportedDatasources = exports.defaultConfig = exports.url = exports.supportsLockFileMaintenance = exports.updateArtifacts = exports.extractPackageFile = void 0;
3
+ exports.supportedDatasources = exports.defaultConfig = exports.url = exports.supportsLockFileMaintenance = exports.getRangeStrategy = exports.updateArtifacts = exports.extractPackageFile = void 0;
4
4
  const git_refs_1 = require("../../datasource/git-refs");
5
5
  var extract_1 = require("./extract");
6
6
  Object.defineProperty(exports, "extractPackageFile", { enumerable: true, get: function () { return extract_1.extractPackageFile; } });
7
7
  var artifacts_1 = require("./artifacts");
8
8
  Object.defineProperty(exports, "updateArtifacts", { enumerable: true, get: function () { return artifacts_1.updateArtifacts; } });
9
+ var range_1 = require("./range");
10
+ Object.defineProperty(exports, "getRangeStrategy", { enumerable: true, get: function () { return range_1.getRangeStrategy; } });
9
11
  exports.supportsLockFileMaintenance = true;
10
12
  exports.url = 'https://nix.dev';
11
13
  exports.defaultConfig = {
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/manager/nix/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8D;AAE9D,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA;AAC3B,yCAA8C;AAArC,4GAAA,eAAe,OAAA;AAEX,QAAA,2BAA2B,GAAG,IAAI,CAAC;AAEnC,QAAA,GAAG,GAAG,iBAAiB,CAAC;AAExB,QAAA,aAAa,GAAG;IAC3B,mBAAmB,EAAE,CAAC,qBAAqB,CAAC;IAC5C,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,iBAAiB;IACrC,OAAO,EAAE,KAAK;CACf,CAAC;AAEW,QAAA,oBAAoB,GAAG,CAAC,4BAAiB,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { GitRefsDatasource } from '../../datasource/git-refs';\n\nexport { extractPackageFile } from './extract';\nexport { updateArtifacts } from './artifacts';\n\nexport const supportsLockFileMaintenance = true;\n\nexport const url = 'https://nix.dev';\n\nexport const defaultConfig = {\n managerFilePatterns: ['/(^|/)flake\\\\.nix$/'],\n commitMessageTopic: 'nix',\n commitMessageExtra: 'to {{newValue}}',\n enabled: false,\n};\n\nexport const supportedDatasources = [GitRefsDatasource.id];\n"]}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../lib/modules/manager/nix/index.ts"],"names":[],"mappings":";;;AAAA,wDAA8D;AAE9D,qCAA+C;AAAtC,6GAAA,kBAAkB,OAAA;AAC3B,yCAA8C;AAArC,4GAAA,eAAe,OAAA;AACxB,iCAA2C;AAAlC,yGAAA,gBAAgB,OAAA;AAEZ,QAAA,2BAA2B,GAAG,IAAI,CAAC;AAEnC,QAAA,GAAG,GAAG,iBAAiB,CAAC;AAExB,QAAA,aAAa,GAAG;IAC3B,mBAAmB,EAAE,CAAC,qBAAqB,CAAC;IAC5C,kBAAkB,EAAE,KAAK;IACzB,kBAAkB,EAAE,iBAAiB;IACrC,OAAO,EAAE,KAAK;CACf,CAAC;AAEW,QAAA,oBAAoB,GAAG,CAAC,4BAAiB,CAAC,EAAE,CAAC,CAAC","sourcesContent":["import { GitRefsDatasource } from '../../datasource/git-refs';\n\nexport { extractPackageFile } from './extract';\nexport { updateArtifacts } from './artifacts';\nexport { getRangeStrategy } from './range';\n\nexport const supportsLockFileMaintenance = true;\n\nexport const url = 'https://nix.dev';\n\nexport const defaultConfig = {\n managerFilePatterns: ['/(^|/)flake\\\\.nix$/'],\n commitMessageTopic: 'nix',\n commitMessageExtra: 'to {{newValue}}',\n enabled: false,\n};\n\nexport const supportedDatasources = [GitRefsDatasource.id];\n"]}
@@ -0,0 +1,3 @@
1
+ import type { RangeStrategy } from '../../../types';
2
+ import type { RangeConfig } from '../types';
3
+ export declare function getRangeStrategy({ currentValue }: RangeConfig): RangeStrategy;
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getRangeStrategy = getRangeStrategy;
4
+ function getRangeStrategy({ currentValue }) {
5
+ if (currentValue) {
6
+ return 'replace';
7
+ }
8
+ return 'update-lockfile';
9
+ }
10
+ //# sourceMappingURL=range.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.js","sourceRoot":"","sources":["../../../../lib/modules/manager/nix/range.ts"],"names":[],"mappings":";;AAGA,4CAMC;AAND,SAAgB,gBAAgB,CAAC,EAAE,YAAY,EAAe;IAC5D,IAAI,YAAY,EAAE,CAAC;QACjB,OAAO,SAAS,CAAC;IACnB,CAAC;IAED,OAAO,iBAAiB,CAAC;AAC3B,CAAC","sourcesContent":["import type { RangeStrategy } from '../../../types';\nimport type { RangeConfig } from '../types';\n\nexport function getRangeStrategy({ currentValue }: RangeConfig): RangeStrategy {\n if (currentValue) {\n return 'replace';\n }\n\n return 'update-lockfile';\n}\n"]}
@@ -6,12 +6,15 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
6
6
  ref: z.ZodOptional<z.ZodString>;
7
7
  rev: z.ZodOptional<z.ZodString>;
8
8
  type: z.ZodEnum<["file", "git", "github", "gitlab", "indirect", "path", "sourcehut", "tarball"]>;
9
+ url: z.ZodOptional<z.ZodString>;
9
10
  }, "strip", z.ZodTypeAny, {
10
11
  type: "path" | "github" | "gitlab" | "file" | "git" | "indirect" | "sourcehut" | "tarball";
12
+ url?: string | undefined;
11
13
  ref?: string | undefined;
12
14
  rev?: string | undefined;
13
15
  }, {
14
16
  type: "path" | "github" | "gitlab" | "file" | "git" | "indirect" | "sourcehut" | "tarball";
17
+ url?: string | undefined;
15
18
  ref?: string | undefined;
16
19
  rev?: string | undefined;
17
20
  }>>;
@@ -20,6 +23,7 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
20
23
  owner: z.ZodOptional<z.ZodString>;
21
24
  repo: z.ZodOptional<z.ZodString>;
22
25
  ref: z.ZodOptional<z.ZodString>;
26
+ rev: z.ZodOptional<z.ZodString>;
23
27
  type: z.ZodEnum<["file", "git", "github", "gitlab", "indirect", "path", "sourcehut", "tarball"]>;
24
28
  url: z.ZodOptional<z.ZodString>;
25
29
  }, "strip", z.ZodTypeAny, {
@@ -28,6 +32,7 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
28
32
  repo?: string | undefined;
29
33
  url?: string | undefined;
30
34
  ref?: string | undefined;
35
+ rev?: string | undefined;
31
36
  owner?: string | undefined;
32
37
  }, {
33
38
  type: "path" | "github" | "gitlab" | "file" | "git" | "indirect" | "sourcehut" | "tarball";
@@ -35,11 +40,13 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
35
40
  repo?: string | undefined;
36
41
  url?: string | undefined;
37
42
  ref?: string | undefined;
43
+ rev?: string | undefined;
38
44
  owner?: string | undefined;
39
45
  }>>;
40
46
  }, "strip", z.ZodTypeAny, {
41
47
  locked?: {
42
48
  type: "path" | "github" | "gitlab" | "file" | "git" | "indirect" | "sourcehut" | "tarball";
49
+ url?: string | undefined;
43
50
  ref?: string | undefined;
44
51
  rev?: string | undefined;
45
52
  } | undefined;
@@ -50,11 +57,13 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
50
57
  repo?: string | undefined;
51
58
  url?: string | undefined;
52
59
  ref?: string | undefined;
60
+ rev?: string | undefined;
53
61
  owner?: string | undefined;
54
62
  } | undefined;
55
63
  }, {
56
64
  locked?: {
57
65
  type: "path" | "github" | "gitlab" | "file" | "git" | "indirect" | "sourcehut" | "tarball";
66
+ url?: string | undefined;
58
67
  ref?: string | undefined;
59
68
  rev?: string | undefined;
60
69
  } | undefined;
@@ -65,6 +74,7 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
65
74
  repo?: string | undefined;
66
75
  url?: string | undefined;
67
76
  ref?: string | undefined;
77
+ rev?: string | undefined;
68
78
  owner?: string | undefined;
69
79
  } | undefined;
70
80
  }>>;
@@ -74,6 +84,7 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
74
84
  nodes: Record<string, {
75
85
  locked?: {
76
86
  type: "path" | "github" | "gitlab" | "file" | "git" | "indirect" | "sourcehut" | "tarball";
87
+ url?: string | undefined;
77
88
  ref?: string | undefined;
78
89
  rev?: string | undefined;
79
90
  } | undefined;
@@ -84,6 +95,7 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
84
95
  repo?: string | undefined;
85
96
  url?: string | undefined;
86
97
  ref?: string | undefined;
98
+ rev?: string | undefined;
87
99
  owner?: string | undefined;
88
100
  } | undefined;
89
101
  }>;
@@ -92,6 +104,7 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
92
104
  nodes: Record<string, {
93
105
  locked?: {
94
106
  type: "path" | "github" | "gitlab" | "file" | "git" | "indirect" | "sourcehut" | "tarball";
107
+ url?: string | undefined;
95
108
  ref?: string | undefined;
96
109
  rev?: string | undefined;
97
110
  } | undefined;
@@ -102,6 +115,7 @@ export declare const NixFlakeLock: z.ZodPipeline<z.ZodEffects<z.ZodString, strin
102
115
  repo?: string | undefined;
103
116
  url?: string | undefined;
104
117
  ref?: string | undefined;
118
+ rev?: string | undefined;
105
119
  owner?: string | undefined;
106
120
  } | undefined;
107
121
  }>;
@@ -17,12 +17,14 @@ const LockedInput = zod_1.z.object({
17
17
  ref: zod_1.z.string().optional(),
18
18
  rev: zod_1.z.string().optional(),
19
19
  type: InputType,
20
+ url: zod_1.z.string().optional(),
20
21
  });
21
22
  const OriginalInput = zod_1.z.object({
22
23
  host: zod_1.z.string().optional(),
23
24
  owner: zod_1.z.string().optional(),
24
25
  repo: zod_1.z.string().optional(),
25
26
  ref: zod_1.z.string().optional(),
27
+ rev: zod_1.z.string().optional(),
26
28
  type: InputType,
27
29
  url: zod_1.z.string().optional(),
28
30
  });
@@ -1 +1 @@
1
- {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/manager/nix/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,6DAAkD;AAElD,MAAM,SAAS,GAAG,OAAC,CAAC,IAAI,CAAC;IACvB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,MAAM;IACN,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,SAAS;CAChB,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,OAAC,CAAC,MAAM,CAAC;IACxB,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3E,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,mBAAI,CAAC,IAAI,CACnC,OAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC;IACrC,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACtB,CAAC,CACH,CAAC","sourcesContent":["import { z } from 'zod';\nimport { Json } from '../../../util/schema-utils';\n\nconst InputType = z.enum([\n 'file',\n 'git',\n 'github',\n 'gitlab',\n 'indirect',\n 'path',\n 'sourcehut',\n 'tarball',\n]);\n\nconst LockedInput = z.object({\n ref: z.string().optional(),\n rev: z.string().optional(),\n type: InputType,\n});\n\nconst OriginalInput = z.object({\n host: z.string().optional(),\n owner: z.string().optional(),\n repo: z.string().optional(),\n ref: z.string().optional(),\n type: InputType,\n url: z.string().optional(),\n});\n\nconst NixInput = z.object({\n inputs: z.record(z.string(), z.string().or(z.array(z.string()))).optional(),\n locked: LockedInput.optional(),\n original: OriginalInput.optional(),\n});\n\nexport const NixFlakeLock = Json.pipe(\n z.object({\n nodes: z.record(z.string(), NixInput),\n version: z.literal(7),\n }),\n);\n\nexport type NixFlakeLock = z.infer<typeof NixFlakeLock>;\n"]}
1
+ {"version":3,"file":"schema.js","sourceRoot":"","sources":["../../../../lib/modules/manager/nix/schema.ts"],"names":[],"mappings":";;;AAAA,6BAAwB;AACxB,6DAAkD;AAElD,MAAM,SAAS,GAAG,OAAC,CAAC,IAAI,CAAC;IACvB,MAAM;IACN,KAAK;IACL,QAAQ;IACR,QAAQ;IACR,UAAU;IACV,MAAM;IACN,WAAW;IACX,SAAS;CACV,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,OAAC,CAAC,MAAM,CAAC;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,aAAa,GAAG,OAAC,CAAC,MAAM,CAAC;IAC7B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,IAAI,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,SAAS;IACf,GAAG,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC3B,CAAC,CAAC;AAEH,MAAM,QAAQ,GAAG,OAAC,CAAC,MAAM,CAAC;IACxB,MAAM,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,OAAC,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,OAAC,CAAC,KAAK,CAAC,OAAC,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IAC3E,MAAM,EAAE,WAAW,CAAC,QAAQ,EAAE;IAC9B,QAAQ,EAAE,aAAa,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEU,QAAA,YAAY,GAAG,mBAAI,CAAC,IAAI,CACnC,OAAC,CAAC,MAAM,CAAC;IACP,KAAK,EAAE,OAAC,CAAC,MAAM,CAAC,OAAC,CAAC,MAAM,EAAE,EAAE,QAAQ,CAAC;IACrC,OAAO,EAAE,OAAC,CAAC,OAAO,CAAC,CAAC,CAAC;CACtB,CAAC,CACH,CAAC","sourcesContent":["import { z } from 'zod';\nimport { Json } from '../../../util/schema-utils';\n\nconst InputType = z.enum([\n 'file',\n 'git',\n 'github',\n 'gitlab',\n 'indirect',\n 'path',\n 'sourcehut',\n 'tarball',\n]);\n\nconst LockedInput = z.object({\n ref: z.string().optional(),\n rev: z.string().optional(),\n type: InputType,\n url: z.string().optional(),\n});\n\nconst OriginalInput = z.object({\n host: z.string().optional(),\n owner: z.string().optional(),\n repo: z.string().optional(),\n ref: z.string().optional(),\n rev: z.string().optional(),\n type: InputType,\n url: z.string().optional(),\n});\n\nconst NixInput = z.object({\n inputs: z.record(z.string(), z.string().or(z.array(z.string()))).optional(),\n locked: LockedInput.optional(),\n original: OriginalInput.optional(),\n});\n\nexport const NixFlakeLock = Json.pipe(\n z.object({\n nodes: z.record(z.string(), NixInput),\n version: z.literal(7),\n }),\n);\n\nexport type NixFlakeLock = z.infer<typeof NixFlakeLock>;\n"]}
@@ -16,6 +16,8 @@ export interface ExtractConfig extends CustomExtractConfig {
16
16
  npmrcMerge?: boolean;
17
17
  skipInstalls?: boolean | null;
18
18
  repository?: string;
19
+ currentDigest?: string;
20
+ newDigest?: string;
19
21
  }
20
22
  export interface UpdateArtifactsConfig {
21
23
  isLockFileMaintenance?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/modules/manager/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReleaseType } from 'semver';\nimport type {\n MatchStringsStrategy,\n UpdateType,\n ValidationMessage,\n} from '../../config/types';\nimport type { Category } from '../../constants';\nimport type {\n MaybePromise,\n ModuleApi,\n RangeStrategy,\n SkipReason,\n StageName,\n} from '../../types';\nimport type { FileChange } from '../../util/git/types';\nimport type { MergeConfidence } from '../../util/merge-confidence/types';\nimport type { Timestamp } from '../../util/timestamp';\nimport type { RegistryStrategy } from '../datasource';\nimport type { CustomExtractConfig } from './custom/types';\n\nexport interface ManagerData<T> {\n managerData?: T;\n}\n\nexport interface ExtractConfig extends CustomExtractConfig {\n registryAliases?: Record<string, string>;\n npmrc?: string;\n npmrcMerge?: boolean;\n skipInstalls?: boolean | null;\n repository?: string;\n}\n\nexport interface UpdateArtifactsConfig {\n isLockFileMaintenance?: boolean;\n constraints?: Record<string, string>;\n composerIgnorePlatformReqs?: string[];\n goGetDirs?: string[];\n currentValue?: string;\n postUpdateOptions?: string[];\n ignorePlugins?: boolean;\n ignoreScripts?: boolean;\n updateType?: UpdateType;\n newValue?: string;\n newVersion?: string;\n newMajor?: number;\n registryAliases?: Record<string, string>;\n skipArtifactsUpdate?: boolean;\n lockFiles?: string[];\n}\n\nexport interface RangeConfig<T = Record<string, any>> extends ManagerData<T> {\n currentValue?: string;\n depName?: string;\n depType?: string;\n manager?: string;\n rangeStrategy: RangeStrategy;\n}\n\nexport interface PackageFileContent<T = Record<string, any>>\n extends ManagerData<T> {\n autoReplaceStringTemplate?: string;\n extractedConstraints?: Record<string, string>;\n datasource?: string;\n registryUrls?: string[];\n additionalRegistryUrls?: string[];\n deps: PackageDependency[];\n lockFiles?: string[];\n npmrc?: string;\n packageFileVersion?: string;\n skipInstalls?: boolean | null;\n matchStrings?: string[];\n matchStringsStrategy?: MatchStringsStrategy;\n fileFormat?: string;\n}\n\nexport interface PackageFile<T = Record<string, any>>\n extends PackageFileContent<T> {\n packageFile: string;\n}\n\nexport interface LookupUpdate {\n bucket?: string;\n branchName?: string;\n commitMessageAction?: string;\n isBump?: boolean;\n isLockfileUpdate?: boolean;\n isPin?: boolean;\n isPinDigest?: boolean;\n isRange?: boolean;\n isRollback?: boolean;\n isReplacement?: boolean;\n newDigest?: string;\n newMajor?: number;\n newMinor?: number;\n newPatch?: number;\n newName?: string;\n newValue?: string;\n semanticCommitType?: string;\n pendingChecks?: boolean;\n pendingVersions?: string[];\n newVersion?: string;\n updateType?: UpdateType;\n isBreaking?: boolean;\n mergeConfidenceLevel?: MergeConfidence | undefined;\n userStrings?: Record<string, string>;\n checksumUrl?: string;\n downloadUrl?: string;\n releaseTimestamp?: Timestamp;\n newVersionAgeInDays?: number;\n registryUrl?: string;\n libYears?: number;\n}\n\n/**\n * @property {string} depName - Display name of the package. See #16012\n * @property {string} packageName - The name of the package, used in comparisons. depName is used as fallback if this is not set. See #16012\n */\nexport interface PackageDependency<T = Record<string, any>>\n extends ManagerData<T> {\n currentValue?: string | null;\n currentDigest?: string;\n depName?: string;\n depType?: string;\n fileReplacePosition?: number;\n sharedVariableName?: string;\n lineNumber?: number;\n packageName?: string;\n target?: string;\n versioning?: string;\n dataType?: string;\n enabled?: boolean;\n bumpVersion?: ReleaseType;\n npmPackageAlias?: boolean;\n packageFileVersion?: string;\n gitRef?: boolean;\n sourceUrl?: string | null;\n pinDigests?: boolean;\n currentRawValue?: string;\n major?: { enabled?: boolean };\n prettyDepType?: string;\n newValue?: string;\n warnings?: ValidationMessage[];\n commitMessageTopic?: string;\n currentDigestShort?: string;\n datasource?: string;\n deprecationMessage?: string;\n digestOneAndOnly?: boolean;\n fixedVersion?: string;\n currentVersion?: string;\n currentVersionTimestamp?: string;\n lockedVersion?: string;\n propSource?: string;\n registryUrls?: string[] | null;\n rangeStrategy?: RangeStrategy;\n skipReason?: SkipReason;\n skipStage?: StageName;\n sourceLine?: number;\n newVersion?: string;\n updates?: LookupUpdate[];\n replaceString?: string;\n autoReplaceStringTemplate?: string;\n editFile?: string;\n separateMinorPatch?: boolean;\n extractVersion?: string;\n isInternal?: boolean;\n variableName?: string;\n indentation?: string;\n\n /**\n * override data source's default strategy.\n */\n registryStrategy?: RegistryStrategy;\n\n mostRecentTimestamp?: Timestamp;\n isAbandoned?: boolean;\n}\n\nexport interface Upgrade<T = Record<string, any>> extends PackageDependency<T> {\n workspace?: string;\n isLockfileUpdate?: boolean;\n currentRawValue?: any;\n depGroup?: string;\n lockFiles?: string[];\n manager?: string;\n name?: string;\n newDigest?: string;\n newFrom?: string;\n newMajor?: number;\n newName?: string;\n newValue?: string;\n packageFile?: string;\n rangeStrategy?: RangeStrategy;\n newVersion?: string;\n updateType?: UpdateType;\n version?: string;\n isLockFileMaintenance?: boolean;\n isRemediation?: boolean;\n isVulnerabilityAlert?: boolean;\n vulnerabilitySeverity?: string;\n registryUrls?: string[] | null;\n currentVersion?: string;\n replaceString?: string;\n replacementApproach?: 'replace' | 'alias';\n}\n\nexport interface ArtifactNotice {\n file: string;\n message: string;\n}\n\nexport interface ArtifactError {\n fileName?: string;\n lockFile?: string;\n stderr?: string;\n}\n\nexport type UpdateArtifactsResult =\n | {\n file?: FileChange;\n notice?: ArtifactNotice;\n artifactError?: undefined;\n }\n | {\n file?: undefined;\n notice?: undefined;\n artifactError?: ArtifactError;\n };\n\nexport interface UpdateArtifact<T = Record<string, unknown>> {\n packageFileName: string;\n updatedDeps: Upgrade<T>[];\n newPackageFileContent: string;\n config: UpdateArtifactsConfig;\n}\n\nexport interface UpdateDependencyConfig<T = Record<string, any>> {\n fileContent: string;\n upgrade: Upgrade<T>;\n}\n\nexport interface BumpPackageVersionResult {\n bumpedContent: string | null;\n}\n\nexport interface UpdateLockedConfig {\n packageFile: string;\n packageFileContent?: string;\n lockFile: string;\n lockFileContent?: string;\n depName: string;\n currentVersion: string;\n newVersion: string;\n allowParentUpdates?: boolean;\n allowHigherOrRemoved?: boolean;\n}\n\nexport interface UpdateLockedResult {\n status: 'unsupported' | 'updated' | 'already-updated' | 'update-failed';\n files?: Record<string, string>;\n}\n\nexport interface GlobalManagerConfig {\n npmrc?: string;\n npmrcMerge?: boolean;\n}\n\nexport interface ManagerApi extends ModuleApi {\n defaultConfig: Record<string, unknown>;\n\n categories?: Category[];\n supportsLockFileMaintenance?: boolean;\n supersedesManagers?: string[];\n supportedDatasources: string[];\n\n bumpPackageVersion?(\n content: string,\n currentValue: string,\n bumpVersion: ReleaseType,\n packageFile: string,\n ): MaybePromise<BumpPackageVersionResult>;\n\n detectGlobalConfig?(): MaybePromise<GlobalManagerConfig>;\n\n extractAllPackageFiles?(\n config: ExtractConfig,\n files: string[],\n ): MaybePromise<PackageFile[] | null>;\n\n extractPackageFile?(\n content: string,\n packageFile?: string,\n config?: ExtractConfig,\n ): MaybePromise<PackageFileContent | null>;\n\n getRangeStrategy?(config: RangeConfig): RangeStrategy;\n\n updateArtifacts?(\n updateArtifact: UpdateArtifact,\n ): MaybePromise<UpdateArtifactsResult[] | null>;\n\n updateDependency?(\n updateDependencyConfig: UpdateDependencyConfig,\n ): MaybePromise<string | null>;\n\n updateLockedDependency?(\n config: UpdateLockedConfig,\n ): MaybePromise<UpdateLockedResult>;\n}\n\n// TODO: name and properties used by npm manager\nexport interface PostUpdateConfig<T = Record<string, any>>\n extends Record<string, any>,\n ManagerData<T> {\n // TODO: remove null\n constraints?: Record<string, string> | null;\n updatedPackageFiles?: FileChange[];\n postUpdateOptions?: string[];\n skipArtifactsUpdate?: boolean;\n skipInstalls?: boolean | null;\n ignoreScripts?: boolean;\n\n packageFile?: string;\n\n upgrades: Upgrade[];\n npmLock?: string;\n yarnLock?: string;\n branchName: string;\n reuseExistingBranch?: boolean;\n\n isLockFileMaintenance?: boolean;\n}\n"]}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../lib/modules/manager/types.ts"],"names":[],"mappings":"","sourcesContent":["import type { ReleaseType } from 'semver';\nimport type {\n MatchStringsStrategy,\n UpdateType,\n ValidationMessage,\n} from '../../config/types';\nimport type { Category } from '../../constants';\nimport type {\n MaybePromise,\n ModuleApi,\n RangeStrategy,\n SkipReason,\n StageName,\n} from '../../types';\nimport type { FileChange } from '../../util/git/types';\nimport type { MergeConfidence } from '../../util/merge-confidence/types';\nimport type { Timestamp } from '../../util/timestamp';\nimport type { RegistryStrategy } from '../datasource';\nimport type { CustomExtractConfig } from './custom/types';\n\nexport interface ManagerData<T> {\n managerData?: T;\n}\n\nexport interface ExtractConfig extends CustomExtractConfig {\n registryAliases?: Record<string, string>;\n npmrc?: string;\n npmrcMerge?: boolean;\n skipInstalls?: boolean | null;\n repository?: string;\n currentDigest?: string;\n newDigest?: string;\n}\n\nexport interface UpdateArtifactsConfig {\n isLockFileMaintenance?: boolean;\n constraints?: Record<string, string>;\n composerIgnorePlatformReqs?: string[];\n goGetDirs?: string[];\n currentValue?: string;\n postUpdateOptions?: string[];\n ignorePlugins?: boolean;\n ignoreScripts?: boolean;\n updateType?: UpdateType;\n newValue?: string;\n newVersion?: string;\n newMajor?: number;\n registryAliases?: Record<string, string>;\n skipArtifactsUpdate?: boolean;\n lockFiles?: string[];\n}\n\nexport interface RangeConfig<T = Record<string, any>> extends ManagerData<T> {\n currentValue?: string;\n depName?: string;\n depType?: string;\n manager?: string;\n rangeStrategy: RangeStrategy;\n}\n\nexport interface PackageFileContent<T = Record<string, any>>\n extends ManagerData<T> {\n autoReplaceStringTemplate?: string;\n extractedConstraints?: Record<string, string>;\n datasource?: string;\n registryUrls?: string[];\n additionalRegistryUrls?: string[];\n deps: PackageDependency[];\n lockFiles?: string[];\n npmrc?: string;\n packageFileVersion?: string;\n skipInstalls?: boolean | null;\n matchStrings?: string[];\n matchStringsStrategy?: MatchStringsStrategy;\n fileFormat?: string;\n}\n\nexport interface PackageFile<T = Record<string, any>>\n extends PackageFileContent<T> {\n packageFile: string;\n}\n\nexport interface LookupUpdate {\n bucket?: string;\n branchName?: string;\n commitMessageAction?: string;\n isBump?: boolean;\n isLockfileUpdate?: boolean;\n isPin?: boolean;\n isPinDigest?: boolean;\n isRange?: boolean;\n isRollback?: boolean;\n isReplacement?: boolean;\n newDigest?: string;\n newMajor?: number;\n newMinor?: number;\n newPatch?: number;\n newName?: string;\n newValue?: string;\n semanticCommitType?: string;\n pendingChecks?: boolean;\n pendingVersions?: string[];\n newVersion?: string;\n updateType?: UpdateType;\n isBreaking?: boolean;\n mergeConfidenceLevel?: MergeConfidence | undefined;\n userStrings?: Record<string, string>;\n checksumUrl?: string;\n downloadUrl?: string;\n releaseTimestamp?: Timestamp;\n newVersionAgeInDays?: number;\n registryUrl?: string;\n libYears?: number;\n}\n\n/**\n * @property {string} depName - Display name of the package. See #16012\n * @property {string} packageName - The name of the package, used in comparisons. depName is used as fallback if this is not set. See #16012\n */\nexport interface PackageDependency<T = Record<string, any>>\n extends ManagerData<T> {\n currentValue?: string | null;\n currentDigest?: string;\n depName?: string;\n depType?: string;\n fileReplacePosition?: number;\n sharedVariableName?: string;\n lineNumber?: number;\n packageName?: string;\n target?: string;\n versioning?: string;\n dataType?: string;\n enabled?: boolean;\n bumpVersion?: ReleaseType;\n npmPackageAlias?: boolean;\n packageFileVersion?: string;\n gitRef?: boolean;\n sourceUrl?: string | null;\n pinDigests?: boolean;\n currentRawValue?: string;\n major?: { enabled?: boolean };\n prettyDepType?: string;\n newValue?: string;\n warnings?: ValidationMessage[];\n commitMessageTopic?: string;\n currentDigestShort?: string;\n datasource?: string;\n deprecationMessage?: string;\n digestOneAndOnly?: boolean;\n fixedVersion?: string;\n currentVersion?: string;\n currentVersionTimestamp?: string;\n lockedVersion?: string;\n propSource?: string;\n registryUrls?: string[] | null;\n rangeStrategy?: RangeStrategy;\n skipReason?: SkipReason;\n skipStage?: StageName;\n sourceLine?: number;\n newVersion?: string;\n updates?: LookupUpdate[];\n replaceString?: string;\n autoReplaceStringTemplate?: string;\n editFile?: string;\n separateMinorPatch?: boolean;\n extractVersion?: string;\n isInternal?: boolean;\n variableName?: string;\n indentation?: string;\n\n /**\n * override data source's default strategy.\n */\n registryStrategy?: RegistryStrategy;\n\n mostRecentTimestamp?: Timestamp;\n isAbandoned?: boolean;\n}\n\nexport interface Upgrade<T = Record<string, any>> extends PackageDependency<T> {\n workspace?: string;\n isLockfileUpdate?: boolean;\n currentRawValue?: any;\n depGroup?: string;\n lockFiles?: string[];\n manager?: string;\n name?: string;\n newDigest?: string;\n newFrom?: string;\n newMajor?: number;\n newName?: string;\n newValue?: string;\n packageFile?: string;\n rangeStrategy?: RangeStrategy;\n newVersion?: string;\n updateType?: UpdateType;\n version?: string;\n isLockFileMaintenance?: boolean;\n isRemediation?: boolean;\n isVulnerabilityAlert?: boolean;\n vulnerabilitySeverity?: string;\n registryUrls?: string[] | null;\n currentVersion?: string;\n replaceString?: string;\n replacementApproach?: 'replace' | 'alias';\n}\n\nexport interface ArtifactNotice {\n file: string;\n message: string;\n}\n\nexport interface ArtifactError {\n fileName?: string;\n lockFile?: string;\n stderr?: string;\n}\n\nexport type UpdateArtifactsResult =\n | {\n file?: FileChange;\n notice?: ArtifactNotice;\n artifactError?: undefined;\n }\n | {\n file?: undefined;\n notice?: undefined;\n artifactError?: ArtifactError;\n };\n\nexport interface UpdateArtifact<T = Record<string, unknown>> {\n packageFileName: string;\n updatedDeps: Upgrade<T>[];\n newPackageFileContent: string;\n config: UpdateArtifactsConfig;\n}\n\nexport interface UpdateDependencyConfig<T = Record<string, any>> {\n fileContent: string;\n upgrade: Upgrade<T>;\n}\n\nexport interface BumpPackageVersionResult {\n bumpedContent: string | null;\n}\n\nexport interface UpdateLockedConfig {\n packageFile: string;\n packageFileContent?: string;\n lockFile: string;\n lockFileContent?: string;\n depName: string;\n currentVersion: string;\n newVersion: string;\n allowParentUpdates?: boolean;\n allowHigherOrRemoved?: boolean;\n}\n\nexport interface UpdateLockedResult {\n status: 'unsupported' | 'updated' | 'already-updated' | 'update-failed';\n files?: Record<string, string>;\n}\n\nexport interface GlobalManagerConfig {\n npmrc?: string;\n npmrcMerge?: boolean;\n}\n\nexport interface ManagerApi extends ModuleApi {\n defaultConfig: Record<string, unknown>;\n\n categories?: Category[];\n supportsLockFileMaintenance?: boolean;\n supersedesManagers?: string[];\n supportedDatasources: string[];\n\n bumpPackageVersion?(\n content: string,\n currentValue: string,\n bumpVersion: ReleaseType,\n packageFile: string,\n ): MaybePromise<BumpPackageVersionResult>;\n\n detectGlobalConfig?(): MaybePromise<GlobalManagerConfig>;\n\n extractAllPackageFiles?(\n config: ExtractConfig,\n files: string[],\n ): MaybePromise<PackageFile[] | null>;\n\n extractPackageFile?(\n content: string,\n packageFile?: string,\n config?: ExtractConfig,\n ): MaybePromise<PackageFileContent | null>;\n\n getRangeStrategy?(config: RangeConfig): RangeStrategy;\n\n updateArtifacts?(\n updateArtifact: UpdateArtifact,\n ): MaybePromise<UpdateArtifactsResult[] | null>;\n\n updateDependency?(\n updateDependencyConfig: UpdateDependencyConfig,\n ): MaybePromise<string | null>;\n\n updateLockedDependency?(\n config: UpdateLockedConfig,\n ): MaybePromise<UpdateLockedResult>;\n}\n\n// TODO: name and properties used by npm manager\nexport interface PostUpdateConfig<T = Record<string, any>>\n extends Record<string, any>,\n ManagerData<T> {\n // TODO: remove null\n constraints?: Record<string, string> | null;\n updatedPackageFiles?: FileChange[];\n postUpdateOptions?: string[];\n skipArtifactsUpdate?: boolean;\n skipInstalls?: boolean | null;\n ignoreScripts?: boolean;\n\n packageFile?: string;\n\n upgrades: Upgrade[];\n npmLock?: string;\n yarnLock?: string;\n branchName: string;\n reuseExistingBranch?: boolean;\n\n isLockFileMaintenance?: boolean;\n}\n"]}
@@ -37,6 +37,7 @@ const common_1 = require("../../../util/common");
37
37
  const git = tslib_1.__importStar(require("../../../util/git"));
38
38
  const hostRules = tslib_1.__importStar(require("../../../util/host-rules"));
39
39
  const bitbucket_1 = require("../../../util/http/bitbucket");
40
+ const memory_http_cache_provider_1 = require("../../../util/http/cache/memory-http-cache-provider");
40
41
  const repository_http_cache_provider_1 = require("../../../util/http/cache/repository-http-cache-provider");
41
42
  const regex_1 = require("../../../util/regex");
42
43
  const sanitize_1 = require("../../../util/sanitize");
@@ -233,7 +234,7 @@ async function findPr({ branchName, prTitle, state = 'all', includeOtherAuthors,
233
234
  logger_1.logger.debug(`findPr(${branchName}, ${prTitle}, ${state})`);
234
235
  if (includeOtherAuthors) {
235
236
  // PR might have been created by anyone, so don't use the cached Renovate PR list
236
- const prs = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/pullrequests?q=source.branch.name="${branchName}"&state=open`, { cacheProvider: repository_http_cache_provider_1.aggressiveRepoCacheProvider })).body.values;
237
+ const prs = (await bitbucketHttp.getJsonUnchecked(`/2.0/repositories/${config.repository}/pullrequests?q=source.branch.name="${branchName}"&state=open`, { cacheProvider: memory_http_cache_provider_1.memCacheProvider })).body.values;
237
238
  if (prs.length === 0) {
238
239
  logger_1.logger.debug(`No PR found for branch ${branchName}`);
239
240
  return null;