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.
- package/dist/modules/datasource/docker/index.d.ts +1 -1
- package/dist/modules/datasource/docker/index.js +1 -1
- package/dist/modules/datasource/docker/index.js.map +1 -1
- package/dist/modules/manager/fingerprint.generated.js +1 -1
- package/dist/modules/manager/fingerprint.generated.js.map +1 -1
- package/dist/modules/manager/nix/artifacts.js +2 -2
- package/dist/modules/manager/nix/artifacts.js.map +1 -1
- package/dist/modules/manager/nix/extract.d.ts +2 -2
- package/dist/modules/manager/nix/extract.js +79 -67
- package/dist/modules/manager/nix/extract.js.map +1 -1
- package/dist/modules/manager/nix/index.d.ts +1 -0
- package/dist/modules/manager/nix/index.js +3 -1
- package/dist/modules/manager/nix/index.js.map +1 -1
- package/dist/modules/manager/nix/range.d.ts +3 -0
- package/dist/modules/manager/nix/range.js +10 -0
- package/dist/modules/manager/nix/range.js.map +1 -0
- package/dist/modules/manager/nix/schema.d.ts +14 -0
- package/dist/modules/manager/nix/schema.js +2 -0
- package/dist/modules/manager/nix/schema.js.map +1 -1
- package/dist/modules/manager/types.d.ts +2 -0
- package/dist/modules/manager/types.js.map +1 -1
- package/dist/modules/platform/bitbucket/index.js +2 -1
- package/dist/modules/platform/bitbucket/index.js.map +1 -1
- package/dist/workers/repository/process/lookup/filter-checks.js +2 -1
- package/dist/workers/repository/process/lookup/filter-checks.js.map +1 -1
- package/dist/workers/repository/update/branch/index.js +2 -1
- package/dist/workers/repository/update/branch/index.js.map +1 -1
- package/package.json +4 -4
- 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
|
-
|
|
15
|
-
|
|
16
|
-
const
|
|
17
|
-
|
|
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
|
|
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({
|
|
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({
|
|
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
|
-
|
|
56
|
-
|
|
57
|
-
|
|
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
|
-
//
|
|
61
|
-
if (flakeOriginal.type === '
|
|
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
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
}
|
|
110
|
-
|
|
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;
|
|
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,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;
|
|
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:
|
|
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;
|