renovate 43.253.2 → 43.255.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/data/replacements.js +9 -0
- package/dist/modules/versioning/api.js +26 -24
- package/dist/modules/versioning/api.js.map +1 -1
- package/dist/modules/versioning/paket/index.js +227 -0
- package/dist/modules/versioning/paket/index.js.map +1 -0
- package/dist/modules/versioning/paket/range.js +268 -0
- package/dist/modules/versioning/paket/range.js.map +1 -0
- package/dist/modules/versioning/paket/version.js +21 -0
- package/dist/modules/versioning/paket/version.js.map +1 -0
- package/dist/versioning-list.generated.d.ts +1 -1
- package/dist/versioning-list.generated.js +1 -0
- package/dist/versioning-list.generated.js.map +1 -1
- package/package.json +1 -1
- package/renovate-schema.json +3 -2
|
@@ -229,6 +229,15 @@ var replacements_default = {
|
|
|
229
229
|
}
|
|
230
230
|
]
|
|
231
231
|
},
|
|
232
|
+
"corentinmusard-otel-cicd-action-to-dash0hq": {
|
|
233
|
+
"description": "`corentinmusard/otel-cicd-action` was transferred to `dash0hq/otel-cicd-action`.",
|
|
234
|
+
"packageRules": [{
|
|
235
|
+
"matchDatasources": ["github-releases", "github-tags"],
|
|
236
|
+
"matchPackageNames": ["corentinmusard/otel-cicd-action"],
|
|
237
|
+
"replacementName": "dash0hq/otel-cicd-action",
|
|
238
|
+
"replacementVersion": "4.0.1"
|
|
239
|
+
}]
|
|
240
|
+
},
|
|
232
241
|
"cpx-to-maintenance-fork": {
|
|
233
242
|
"description": "Maintenance fork of `cpx`",
|
|
234
243
|
"packageRules": [{
|
|
@@ -35,22 +35,23 @@ import api$34, { id as id$26 } from "./node/index.js";
|
|
|
35
35
|
import api$35, { id as id$27 } from "./lambda-node/index.js";
|
|
36
36
|
import api$36, { id as id$28 } from "./nixpkgs/index.js";
|
|
37
37
|
import api$37, { id as id$29 } from "./nuget/index.js";
|
|
38
|
-
import api$38, { id as id$30 } from "./
|
|
39
|
-
import api$39, { id as id$31 } from "./
|
|
40
|
-
import api$40 from "./
|
|
41
|
-
import api$41
|
|
42
|
-
import api$42, { id as id$33 } from "./
|
|
43
|
-
import api$43 from "./
|
|
44
|
-
import api$44 from "./
|
|
45
|
-
import api$45
|
|
46
|
-
import api$46, { id as id$35 } from "./
|
|
47
|
-
import api$47, { id as id$36 } from "./
|
|
48
|
-
import api$48, { id as id$37 } from "./
|
|
49
|
-
import api$49, { id as id$38 } from "./
|
|
50
|
-
import api$50, { id as id$39 } from "./
|
|
51
|
-
import
|
|
52
|
-
import api$52,
|
|
53
|
-
import api$53, { id as id$42 } from "./unity3d
|
|
38
|
+
import api$38, { id as id$30 } from "./paket/index.js";
|
|
39
|
+
import api$39, { id as id$31 } from "./perl/index.js";
|
|
40
|
+
import api$40, { id as id$32 } from "./poetry/index.js";
|
|
41
|
+
import api$41 from "./pvp/index.js";
|
|
42
|
+
import api$42, { id as id$33 } from "./python/index.js";
|
|
43
|
+
import api$43, { id as id$34 } from "./redhat/index.js";
|
|
44
|
+
import api$44 from "./rez/index.js";
|
|
45
|
+
import api$45 from "./rpm/index.js";
|
|
46
|
+
import api$46, { id as id$35 } from "./ruby/index.js";
|
|
47
|
+
import api$47, { id as id$36 } from "./rust-release-channel/index.js";
|
|
48
|
+
import api$48, { id as id$37 } from "./semver-coerced/index.js";
|
|
49
|
+
import api$49, { id as id$38 } from "./same-major/index.js";
|
|
50
|
+
import api$50, { id as id$39 } from "./semver-partial/index.js";
|
|
51
|
+
import api$51, { id as id$40 } from "./swift/index.js";
|
|
52
|
+
import { api as api$52, id as id$41 } from "./ubuntu/index.js";
|
|
53
|
+
import api$53, { id as id$42 } from "./unity3d/index.js";
|
|
54
|
+
import api$54, { id as id$43 } from "./unity3d-packages/index.js";
|
|
54
55
|
//#region lib/modules/versioning/api.ts
|
|
55
56
|
const api = /* @__PURE__ */ new Map();
|
|
56
57
|
api.set("apk", api$1);
|
|
@@ -87,25 +88,26 @@ api.set(id$28, api$36);
|
|
|
87
88
|
api.set(id$26, api$34);
|
|
88
89
|
api.set("npm", api$8);
|
|
89
90
|
api.set(id$29, api$37);
|
|
90
|
-
api.set(id$10, api$13);
|
|
91
91
|
api.set(id$30, api$38);
|
|
92
|
+
api.set(id$10, api$13);
|
|
92
93
|
api.set(id$31, api$39);
|
|
93
|
-
api.set(
|
|
94
|
-
api.set(
|
|
94
|
+
api.set(id$32, api$40);
|
|
95
|
+
api.set("pvp", api$41);
|
|
95
96
|
api.set(id$33, api$42);
|
|
97
|
+
api.set(id$34, api$43);
|
|
96
98
|
api.set(id, api$2);
|
|
97
|
-
api.set("rez", api$
|
|
98
|
-
api.set("rpm", api$
|
|
99
|
-
api.set(id$34, api$45);
|
|
99
|
+
api.set("rez", api$44);
|
|
100
|
+
api.set("rpm", api$45);
|
|
100
101
|
api.set(id$35, api$46);
|
|
101
|
-
api.set(id$37, api$48);
|
|
102
|
-
api.set(id$5, api$7);
|
|
103
102
|
api.set(id$36, api$47);
|
|
104
103
|
api.set(id$38, api$49);
|
|
104
|
+
api.set(id$5, api$7);
|
|
105
|
+
api.set(id$37, api$48);
|
|
105
106
|
api.set(id$39, api$50);
|
|
106
107
|
api.set(id$40, api$51);
|
|
107
108
|
api.set(id$41, api$52);
|
|
108
109
|
api.set(id$42, api$53);
|
|
110
|
+
api.set(id$43, api$54);
|
|
109
111
|
//#endregion
|
|
110
112
|
export { api as default };
|
|
111
113
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"api.js","names":["apk.api","awsEksAddon.id","awsEksAddon.api","amazonMachineImage.id","amazonMachineImage.api","azureRestApi.id","azureRestApi.api","bazelModule.id","bazelModule.api","cargo.id","cargo.api","composer.id","composer.api","conan.id","conan.api","conda.id","conda.api","deb.api","debian.id","debian.api","deno.id","deno.api","devbox.id","devbox.api","docker.id","docker.api","elm.api","exact.id","exact.api","git.api","githubActions.id","githubActions.api","glasskube.id","glasskube.api","goModDirective.id","goModDirective.api","gradle.id","gradle.api","hashicorp.id","hashicorp.api","helm.id","helm.api","hermit.id","hermit.api","hex.api","ivy.api","kubernetesApi.id","kubernetesApi.api","lambdaNode.id","lambdaNode.api","loose.id","loose.api","maven.id","maven.api","nixpkgs.id","nixpkgs.api","node.id","node.api","npm.api","nuget.id","nuget.api","pep440.id","pep440.api","perl.id","perl.api","poetry.id","poetry.api","pvp.api","python.id","python.api","redhat.id","redhat.api","regex.id","regex.api","rez.api","rpm.api","ruby.id","ruby.api","rustReleaseChannel.id","rustReleaseChannel.api","sameMajor.id","sameMajor.api","semver.id","semver.api","semverCoerced.id","semverCoerced.api","semverPartial.id","semverPartial.api","swift.id","swift.api","ubuntu.id","ubuntu.api","unity3d.id","unity3d.api","unity3dPackages.id","unity3dPackages.api"],"sources":["../../../lib/modules/versioning/api.ts"],"sourcesContent":["import * as apk from './apk/index.ts';\nimport * as awsEksAddon from './aws-eks-addon/index.ts';\nimport * as amazonMachineImage from './aws-machine-image/index.ts';\nimport * as azureRestApi from './azure-rest-api/index.ts';\nimport * as bazelModule from './bazel-module/index.ts';\nimport * as cargo from './cargo/index.ts';\nimport * as composer from './composer/index.ts';\nimport * as conan from './conan/index.ts';\nimport * as conda from './conda/index.ts';\nimport * as deb from './deb/index.ts';\nimport * as debian from './debian/index.ts';\nimport * as deno from './deno/index.ts';\nimport * as devbox from './devbox/index.ts';\nimport * as docker from './docker/index.ts';\nimport * as elm from './elm/index.ts';\nimport * as exact from './exact/index.ts';\nimport * as git from './git/index.ts';\nimport * as githubActions from './github-actions/index.ts';\nimport * as glasskube from './glasskube/index.ts';\nimport * as goModDirective from './go-mod-directive/index.ts';\nimport * as gradle from './gradle/index.ts';\nimport * as hashicorp from './hashicorp/index.ts';\nimport * as helm from './helm/index.ts';\nimport * as hermit from './hermit/index.ts';\nimport * as hex from './hex/index.ts';\nimport * as ivy from './ivy/index.ts';\nimport * as kubernetesApi from './kubernetes-api/index.ts';\nimport * as lambdaNode from './lambda-node/index.ts';\nimport * as loose from './loose/index.ts';\nimport * as maven from './maven/index.ts';\nimport * as nixpkgs from './nixpkgs/index.ts';\nimport * as node from './node/index.ts';\nimport * as npm from './npm/index.ts';\nimport * as nuget from './nuget/index.ts';\nimport * as pep440 from './pep440/index.ts';\nimport * as perl from './perl/index.ts';\nimport * as poetry from './poetry/index.ts';\nimport * as pvp from './pvp/index.ts';\nimport * as python from './python/index.ts';\nimport * as redhat from './redhat/index.ts';\nimport * as regex from './regex/index.ts';\nimport * as rez from './rez/index.ts';\nimport * as rpm from './rpm/index.ts';\nimport * as ruby from './ruby/index.ts';\nimport * as rustReleaseChannel from './rust-release-channel/index.ts';\nimport * as sameMajor from './same-major/index.ts';\nimport * as semver from './semver/index.ts';\nimport * as semverCoerced from './semver-coerced/index.ts';\nimport * as semverPartial from './semver-partial/index.ts';\nimport * as swift from './swift/index.ts';\nimport type { VersioningApi, VersioningApiConstructor } from './types.ts';\nimport * as ubuntu from './ubuntu/index.ts';\nimport * as unity3d from './unity3d/index.ts';\nimport * as unity3dPackages from './unity3d-packages/index.ts';\n\nconst api = new Map<string, VersioningApi | VersioningApiConstructor>();\nexport default api;\n\napi.set(apk.id, apk.api);\napi.set(awsEksAddon.id, awsEksAddon.api);\napi.set(amazonMachineImage.id, amazonMachineImage.api);\napi.set(azureRestApi.id, azureRestApi.api);\napi.set(bazelModule.id, bazelModule.api);\napi.set(cargo.id, cargo.api);\napi.set(composer.id, composer.api);\napi.set(conan.id, conan.api);\napi.set(conda.id, conda.api);\napi.set(deb.id, deb.api);\napi.set(debian.id, debian.api);\napi.set(deno.id, deno.api);\napi.set(devbox.id, devbox.api);\napi.set(docker.id, docker.api);\napi.set(elm.id, elm.api);\napi.set(exact.id, exact.api);\napi.set(git.id, git.api);\napi.set(githubActions.id, githubActions.api);\napi.set(glasskube.id, glasskube.api);\napi.set(goModDirective.id, goModDirective.api);\napi.set(gradle.id, gradle.api);\napi.set(hashicorp.id, hashicorp.api);\napi.set(helm.id, helm.api);\napi.set(hermit.id, hermit.api);\napi.set(hex.id, hex.api);\napi.set(ivy.id, ivy.api);\napi.set(kubernetesApi.id, kubernetesApi.api);\napi.set(lambdaNode.id, lambdaNode.api);\napi.set(loose.id, loose.api);\napi.set(maven.id, maven.api);\napi.set(nixpkgs.id, nixpkgs.api);\napi.set(node.id, node.api);\napi.set(npm.id, npm.api);\napi.set(nuget.id, nuget.api);\napi.set(pep440.id, pep440.api);\napi.set(perl.id, perl.api);\napi.set(poetry.id, poetry.api);\napi.set(pvp.id, pvp.api);\napi.set(python.id, python.api);\napi.set(redhat.id, redhat.api);\napi.set(regex.id, regex.api);\napi.set(rez.id, rez.api);\napi.set(rpm.id, rpm.api);\napi.set(ruby.id, ruby.api);\napi.set(rustReleaseChannel.id, rustReleaseChannel.api);\napi.set(sameMajor.id, sameMajor.api);\napi.set(semver.id, semver.api);\napi.set(semverCoerced.id, semverCoerced.api);\napi.set(semverPartial.id, semverPartial.api);\napi.set(swift.id, swift.api);\napi.set(ubuntu.id, ubuntu.api);\napi.set(unity3d.id, unity3d.api);\napi.set(unity3dPackages.id, unity3dPackages.api);\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"api.js","names":["apk.api","awsEksAddon.id","awsEksAddon.api","amazonMachineImage.id","amazonMachineImage.api","azureRestApi.id","azureRestApi.api","bazelModule.id","bazelModule.api","cargo.id","cargo.api","composer.id","composer.api","conan.id","conan.api","conda.id","conda.api","deb.api","debian.id","debian.api","deno.id","deno.api","devbox.id","devbox.api","docker.id","docker.api","elm.api","exact.id","exact.api","git.api","githubActions.id","githubActions.api","glasskube.id","glasskube.api","goModDirective.id","goModDirective.api","gradle.id","gradle.api","hashicorp.id","hashicorp.api","helm.id","helm.api","hermit.id","hermit.api","hex.api","ivy.api","kubernetesApi.id","kubernetesApi.api","lambdaNode.id","lambdaNode.api","loose.id","loose.api","maven.id","maven.api","nixpkgs.id","nixpkgs.api","node.id","node.api","npm.api","nuget.id","nuget.api","paket.id","paket.api","pep440.id","pep440.api","perl.id","perl.api","poetry.id","poetry.api","pvp.api","python.id","python.api","redhat.id","redhat.api","regex.id","regex.api","rez.api","rpm.api","ruby.id","ruby.api","rustReleaseChannel.id","rustReleaseChannel.api","sameMajor.id","sameMajor.api","semver.id","semver.api","semverCoerced.id","semverCoerced.api","semverPartial.id","semverPartial.api","swift.id","swift.api","ubuntu.id","ubuntu.api","unity3d.id","unity3d.api","unity3dPackages.id","unity3dPackages.api"],"sources":["../../../lib/modules/versioning/api.ts"],"sourcesContent":["import * as apk from './apk/index.ts';\nimport * as awsEksAddon from './aws-eks-addon/index.ts';\nimport * as amazonMachineImage from './aws-machine-image/index.ts';\nimport * as azureRestApi from './azure-rest-api/index.ts';\nimport * as bazelModule from './bazel-module/index.ts';\nimport * as cargo from './cargo/index.ts';\nimport * as composer from './composer/index.ts';\nimport * as conan from './conan/index.ts';\nimport * as conda from './conda/index.ts';\nimport * as deb from './deb/index.ts';\nimport * as debian from './debian/index.ts';\nimport * as deno from './deno/index.ts';\nimport * as devbox from './devbox/index.ts';\nimport * as docker from './docker/index.ts';\nimport * as elm from './elm/index.ts';\nimport * as exact from './exact/index.ts';\nimport * as git from './git/index.ts';\nimport * as githubActions from './github-actions/index.ts';\nimport * as glasskube from './glasskube/index.ts';\nimport * as goModDirective from './go-mod-directive/index.ts';\nimport * as gradle from './gradle/index.ts';\nimport * as hashicorp from './hashicorp/index.ts';\nimport * as helm from './helm/index.ts';\nimport * as hermit from './hermit/index.ts';\nimport * as hex from './hex/index.ts';\nimport * as ivy from './ivy/index.ts';\nimport * as kubernetesApi from './kubernetes-api/index.ts';\nimport * as lambdaNode from './lambda-node/index.ts';\nimport * as loose from './loose/index.ts';\nimport * as maven from './maven/index.ts';\nimport * as nixpkgs from './nixpkgs/index.ts';\nimport * as node from './node/index.ts';\nimport * as npm from './npm/index.ts';\nimport * as nuget from './nuget/index.ts';\nimport * as paket from './paket/index.ts';\nimport * as pep440 from './pep440/index.ts';\nimport * as perl from './perl/index.ts';\nimport * as poetry from './poetry/index.ts';\nimport * as pvp from './pvp/index.ts';\nimport * as python from './python/index.ts';\nimport * as redhat from './redhat/index.ts';\nimport * as regex from './regex/index.ts';\nimport * as rez from './rez/index.ts';\nimport * as rpm from './rpm/index.ts';\nimport * as ruby from './ruby/index.ts';\nimport * as rustReleaseChannel from './rust-release-channel/index.ts';\nimport * as sameMajor from './same-major/index.ts';\nimport * as semver from './semver/index.ts';\nimport * as semverCoerced from './semver-coerced/index.ts';\nimport * as semverPartial from './semver-partial/index.ts';\nimport * as swift from './swift/index.ts';\nimport type { VersioningApi, VersioningApiConstructor } from './types.ts';\nimport * as ubuntu from './ubuntu/index.ts';\nimport * as unity3d from './unity3d/index.ts';\nimport * as unity3dPackages from './unity3d-packages/index.ts';\n\nconst api = new Map<string, VersioningApi | VersioningApiConstructor>();\nexport default api;\n\napi.set(apk.id, apk.api);\napi.set(awsEksAddon.id, awsEksAddon.api);\napi.set(amazonMachineImage.id, amazonMachineImage.api);\napi.set(azureRestApi.id, azureRestApi.api);\napi.set(bazelModule.id, bazelModule.api);\napi.set(cargo.id, cargo.api);\napi.set(composer.id, composer.api);\napi.set(conan.id, conan.api);\napi.set(conda.id, conda.api);\napi.set(deb.id, deb.api);\napi.set(debian.id, debian.api);\napi.set(deno.id, deno.api);\napi.set(devbox.id, devbox.api);\napi.set(docker.id, docker.api);\napi.set(elm.id, elm.api);\napi.set(exact.id, exact.api);\napi.set(git.id, git.api);\napi.set(githubActions.id, githubActions.api);\napi.set(glasskube.id, glasskube.api);\napi.set(goModDirective.id, goModDirective.api);\napi.set(gradle.id, gradle.api);\napi.set(hashicorp.id, hashicorp.api);\napi.set(helm.id, helm.api);\napi.set(hermit.id, hermit.api);\napi.set(hex.id, hex.api);\napi.set(ivy.id, ivy.api);\napi.set(kubernetesApi.id, kubernetesApi.api);\napi.set(lambdaNode.id, lambdaNode.api);\napi.set(loose.id, loose.api);\napi.set(maven.id, maven.api);\napi.set(nixpkgs.id, nixpkgs.api);\napi.set(node.id, node.api);\napi.set(npm.id, npm.api);\napi.set(nuget.id, nuget.api);\napi.set(paket.id, paket.api);\napi.set(pep440.id, pep440.api);\napi.set(perl.id, perl.api);\napi.set(poetry.id, poetry.api);\napi.set(pvp.id, pvp.api);\napi.set(python.id, python.api);\napi.set(redhat.id, redhat.api);\napi.set(regex.id, regex.api);\napi.set(rez.id, rez.api);\napi.set(rpm.id, rpm.api);\napi.set(ruby.id, ruby.api);\napi.set(rustReleaseChannel.id, rustReleaseChannel.api);\napi.set(sameMajor.id, sameMajor.api);\napi.set(semver.id, semver.api);\napi.set(semverCoerced.id, semverCoerced.api);\napi.set(semverPartial.id, semverPartial.api);\napi.set(swift.id, swift.api);\napi.set(ubuntu.id, ubuntu.api);\napi.set(unity3d.id, unity3d.api);\napi.set(unity3dPackages.id, unity3dPackages.api);\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAwDA,MAAM,sBAAM,IAAI,IAAsD;AAGtE,IAAI,IAAI,OAAQA,KAAO;AACvB,IAAI,IAAIC,MAAgBC,KAAe;AACvC,IAAI,IAAIC,MAAuBC,KAAsB;AACrD,IAAI,IAAIC,MAAiBC,KAAgB;AACzC,IAAI,IAAIC,MAAgBC,KAAe;AACvC,IAAI,IAAIC,MAAUC,KAAS;AAC3B,IAAI,IAAIC,MAAaC,MAAY;AACjC,IAAI,IAAIC,MAAUC,MAAS;AAC3B,IAAI,IAAIC,OAAUC,MAAS;AAC3B,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAIC,OAASC,MAAQ;AACzB,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAIC,OAAUC,MAAS;AAC3B,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAIC,OAAkBC,MAAiB;AAC3C,IAAI,IAAIC,OAAcC,MAAa;AACnC,IAAI,IAAIC,OAAmBC,MAAkB;AAC7C,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAIC,OAAcC,MAAa;AACnC,IAAI,IAAIC,OAASC,MAAQ;AACzB,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAIC,OAAkBC,MAAiB;AAC3C,IAAI,IAAIC,OAAeC,MAAc;AACrC,IAAI,IAAIC,MAAUC,MAAS;AAC3B,IAAI,IAAIC,OAAUC,MAAS;AAC3B,IAAI,IAAIC,OAAYC,MAAW;AAC/B,IAAI,IAAIC,OAASC,MAAQ;AACzB,IAAI,IAAI,OAAQC,KAAO;AACvB,IAAI,IAAIC,OAAUC,MAAS;AAC3B,IAAI,IAAIC,OAAUC,MAAS;AAC3B,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAIC,OAASC,MAAQ;AACzB,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAIC,IAAUC,KAAS;AAC3B,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAI,OAAQC,MAAO;AACvB,IAAI,IAAIC,OAASC,MAAQ;AACzB,IAAI,IAAIC,OAAuBC,MAAsB;AACrD,IAAI,IAAIC,OAAcC,MAAa;AACnC,IAAI,IAAIC,MAAWC,KAAU;AAC7B,IAAI,IAAIC,OAAkBC,MAAiB;AAC3C,IAAI,IAAIC,OAAkBC,MAAiB;AAC3C,IAAI,IAAIC,OAAUC,MAAS;AAC3B,IAAI,IAAIC,OAAWC,MAAU;AAC7B,IAAI,IAAIC,OAAYC,MAAW;AAC/B,IAAI,IAAIC,OAAoBC,MAAmB"}
|
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import { parseVersion } from "../nuget/parser.js";
|
|
2
|
+
import { compare, sameReleaseParts } from "./version.js";
|
|
3
|
+
import { adaptToPrecision, bumpAtPrecision, ensurePrereleaseMatches, intervalOf, isLessThanLowerBound, matches as matches$1, parseRange, rangeToString, releaseParts, twiddle } from "./range.js";
|
|
4
|
+
//#region lib/modules/versioning/paket/index.ts
|
|
5
|
+
const id = "paket";
|
|
6
|
+
function isVersion(input) {
|
|
7
|
+
return !!input && parseVersion(input) !== null;
|
|
8
|
+
}
|
|
9
|
+
function isValid(input) {
|
|
10
|
+
return parseRange(input) !== null;
|
|
11
|
+
}
|
|
12
|
+
function isSingleVersionRange(range) {
|
|
13
|
+
if (range.constraints.length !== 1 || range.prereleaseTags.length > 0) return false;
|
|
14
|
+
const { operator } = range.constraints[0];
|
|
15
|
+
return operator === "" || operator === "=" || operator === "==";
|
|
16
|
+
}
|
|
17
|
+
function isSingleVersion(input) {
|
|
18
|
+
const range = parseRange(input);
|
|
19
|
+
return !!range && isSingleVersionRange(range);
|
|
20
|
+
}
|
|
21
|
+
function isStable(input) {
|
|
22
|
+
const version = parseVersion(input);
|
|
23
|
+
if (version) return !version.prerelease;
|
|
24
|
+
const range = parseRange(input);
|
|
25
|
+
return !!range && isSingleVersionRange(range) && !range.constraints[0].version.prerelease;
|
|
26
|
+
}
|
|
27
|
+
function isCompatible(version) {
|
|
28
|
+
return isVersion(version);
|
|
29
|
+
}
|
|
30
|
+
function getMajor(version) {
|
|
31
|
+
return parseVersion(version)?.major ?? null;
|
|
32
|
+
}
|
|
33
|
+
function getMinor(version) {
|
|
34
|
+
return parseVersion(version)?.minor ?? null;
|
|
35
|
+
}
|
|
36
|
+
function getPatch(version) {
|
|
37
|
+
return parseVersion(version)?.patch ?? null;
|
|
38
|
+
}
|
|
39
|
+
function compareVersions(version, other) {
|
|
40
|
+
const x = parseVersion(version);
|
|
41
|
+
const y = parseVersion(other);
|
|
42
|
+
return x && y ? compare(x, y) : null;
|
|
43
|
+
}
|
|
44
|
+
function equals(version, other) {
|
|
45
|
+
return compareVersions(version, other) === 0;
|
|
46
|
+
}
|
|
47
|
+
function isGreaterThan(version, other) {
|
|
48
|
+
const cmp = compareVersions(version, other);
|
|
49
|
+
return cmp !== null && cmp > 0;
|
|
50
|
+
}
|
|
51
|
+
function sortVersions(version, other) {
|
|
52
|
+
return compareVersions(version, other) ?? 0;
|
|
53
|
+
}
|
|
54
|
+
function matches(version, range) {
|
|
55
|
+
const v = parseVersion(version);
|
|
56
|
+
const r = parseRange(range);
|
|
57
|
+
return !!v && !!r && matches$1(v, r);
|
|
58
|
+
}
|
|
59
|
+
function isLessThanRange(version, range) {
|
|
60
|
+
const v = parseVersion(version);
|
|
61
|
+
const r = parseRange(range);
|
|
62
|
+
return !!v && !!r && isLessThanLowerBound(v, r);
|
|
63
|
+
}
|
|
64
|
+
function satisfyingVersions(versions, range) {
|
|
65
|
+
return versions.filter((v) => matches(v, range)).sort(sortVersions);
|
|
66
|
+
}
|
|
67
|
+
function getSatisfyingVersion(versions, range) {
|
|
68
|
+
return satisfyingVersions(versions, range).pop() ?? null;
|
|
69
|
+
}
|
|
70
|
+
function minSatisfyingVersion(versions, range) {
|
|
71
|
+
return satisfyingVersions(versions, range).shift() ?? null;
|
|
72
|
+
}
|
|
73
|
+
function getPinnedValue(newVersion) {
|
|
74
|
+
return newVersion;
|
|
75
|
+
}
|
|
76
|
+
function replaceConstraint(constraint, v) {
|
|
77
|
+
const { operator, version } = constraint;
|
|
78
|
+
switch (operator) {
|
|
79
|
+
case "":
|
|
80
|
+
case "=":
|
|
81
|
+
case "==": return {
|
|
82
|
+
operator,
|
|
83
|
+
version: v
|
|
84
|
+
};
|
|
85
|
+
case ">":
|
|
86
|
+
case ">=": return constraint;
|
|
87
|
+
case "<=": return compare(v, version) > 0 ? {
|
|
88
|
+
operator,
|
|
89
|
+
version: v
|
|
90
|
+
} : constraint;
|
|
91
|
+
case "<": return compare(v, version) >= 0 || sameReleaseParts(v, version) ? {
|
|
92
|
+
operator,
|
|
93
|
+
version: bumpAtPrecision(v, releaseParts(version).length)
|
|
94
|
+
} : constraint;
|
|
95
|
+
case "~>": {
|
|
96
|
+
const cap = twiddle(version);
|
|
97
|
+
return compare(v, cap) >= 0 || sameReleaseParts(v, cap) ? {
|
|
98
|
+
operator,
|
|
99
|
+
version: adaptToPrecision(v, releaseParts(version).length)
|
|
100
|
+
} : constraint;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Rewrite `~> band` optionally followed by a `>=`/`>` floor: the band follows
|
|
106
|
+
* the new version at its old precision, and the floor sticks to the exact new
|
|
107
|
+
* version unless it becomes redundant.
|
|
108
|
+
*/
|
|
109
|
+
function pessimisticWithFloor(range, v) {
|
|
110
|
+
const [pessimistic] = range.constraints;
|
|
111
|
+
const band = adaptToPrecision(v, releaseParts(pessimistic.version).length);
|
|
112
|
+
const constraints = compare(band, v) === 0 ? [{
|
|
113
|
+
operator: "~>",
|
|
114
|
+
version: band
|
|
115
|
+
}] : [{
|
|
116
|
+
operator: "~>",
|
|
117
|
+
version: band
|
|
118
|
+
}, {
|
|
119
|
+
operator: ">=",
|
|
120
|
+
version: v
|
|
121
|
+
}];
|
|
122
|
+
return {
|
|
123
|
+
...range,
|
|
124
|
+
constraints
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
function replaceRange(range, v) {
|
|
128
|
+
const [first, second] = range.constraints;
|
|
129
|
+
if (first.operator === "~>" && (second?.operator === ">" || second?.operator === ">=")) return pessimisticWithFloor(range, v);
|
|
130
|
+
return {
|
|
131
|
+
...range,
|
|
132
|
+
constraints: range.constraints.map((c) => replaceConstraint(c, v))
|
|
133
|
+
};
|
|
134
|
+
}
|
|
135
|
+
function bumpConstraint(constraint, v) {
|
|
136
|
+
const { operator, version } = constraint;
|
|
137
|
+
switch (operator) {
|
|
138
|
+
case ">=": return compare(v, version) > 0 ? {
|
|
139
|
+
operator,
|
|
140
|
+
version: v
|
|
141
|
+
} : constraint;
|
|
142
|
+
case ">": return {
|
|
143
|
+
operator: ">=",
|
|
144
|
+
version: v
|
|
145
|
+
};
|
|
146
|
+
case "~>": {
|
|
147
|
+
const adapted = adaptToPrecision(v, releaseParts(version).length);
|
|
148
|
+
return compare(adapted, version) > 0 ? {
|
|
149
|
+
operator,
|
|
150
|
+
version: adapted
|
|
151
|
+
} : constraint;
|
|
152
|
+
}
|
|
153
|
+
default: return replaceConstraint(constraint, v);
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
function bumpRange(range, v) {
|
|
157
|
+
const [first, second] = range.constraints;
|
|
158
|
+
if (first.operator === "~>" && second?.operator !== "<" && second?.operator !== "<=") return pessimisticWithFloor(range, v);
|
|
159
|
+
return {
|
|
160
|
+
...range,
|
|
161
|
+
constraints: range.constraints.map((c) => bumpConstraint(c, v))
|
|
162
|
+
};
|
|
163
|
+
}
|
|
164
|
+
function widenRange(range, v) {
|
|
165
|
+
const interval = intervalOf(range.constraints);
|
|
166
|
+
const [first] = range.constraints;
|
|
167
|
+
if (interval.kind !== "range" || first.operator !== "~>") return {
|
|
168
|
+
...range,
|
|
169
|
+
constraints: range.constraints.map((c) => replaceConstraint(c, v))
|
|
170
|
+
};
|
|
171
|
+
const { from, fromInclusive, to, toInclusive } = interval;
|
|
172
|
+
if (!(toInclusive ? compare(v, to) > 0 : compare(v, to) >= 0 || sameReleaseParts(v, to))) return range;
|
|
173
|
+
const lower = {
|
|
174
|
+
operator: fromInclusive ? ">=" : ">",
|
|
175
|
+
version: from
|
|
176
|
+
};
|
|
177
|
+
const upper = toInclusive ? {
|
|
178
|
+
operator: "<=",
|
|
179
|
+
version: v
|
|
180
|
+
} : {
|
|
181
|
+
operator: "<",
|
|
182
|
+
version: bumpAtPrecision(v, releaseParts(to).length)
|
|
183
|
+
};
|
|
184
|
+
return {
|
|
185
|
+
...range,
|
|
186
|
+
constraints: [lower, upper]
|
|
187
|
+
};
|
|
188
|
+
}
|
|
189
|
+
function getNewValue({ currentValue, rangeStrategy, newVersion }) {
|
|
190
|
+
const v = parseVersion(newVersion);
|
|
191
|
+
if (!v) return null;
|
|
192
|
+
if (isVersion(currentValue)) return newVersion;
|
|
193
|
+
const range = parseRange(currentValue);
|
|
194
|
+
if (!range) return null;
|
|
195
|
+
if (rangeStrategy === "pin") return `${range.strategy ?? ""}${newVersion}`;
|
|
196
|
+
if (isLessThanLowerBound(v, range)) return currentValue;
|
|
197
|
+
let result;
|
|
198
|
+
if (rangeStrategy === "bump") result = bumpRange(range, v);
|
|
199
|
+
else if (matches$1(v, range)) return currentValue;
|
|
200
|
+
else if (rangeStrategy === "widen") result = widenRange(range, v);
|
|
201
|
+
else result = replaceRange(range, v);
|
|
202
|
+
const newValue = rangeToString(ensurePrereleaseMatches(result, v));
|
|
203
|
+
return newValue === rangeToString(range) ? currentValue : newValue;
|
|
204
|
+
}
|
|
205
|
+
const api = {
|
|
206
|
+
equals,
|
|
207
|
+
getMajor,
|
|
208
|
+
getMinor,
|
|
209
|
+
getPatch,
|
|
210
|
+
getNewValue,
|
|
211
|
+
getPinnedValue,
|
|
212
|
+
getSatisfyingVersion,
|
|
213
|
+
minSatisfyingVersion,
|
|
214
|
+
isCompatible,
|
|
215
|
+
isGreaterThan,
|
|
216
|
+
isLessThanRange,
|
|
217
|
+
isSingleVersion,
|
|
218
|
+
isStable,
|
|
219
|
+
isValid,
|
|
220
|
+
isVersion,
|
|
221
|
+
matches,
|
|
222
|
+
sortVersions
|
|
223
|
+
};
|
|
224
|
+
//#endregion
|
|
225
|
+
export { api as default, id };
|
|
226
|
+
|
|
227
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","names":["matchesRange"],"sources":["../../../../lib/modules/versioning/paket/index.ts"],"sourcesContent":["import type { RangeStrategy } from '../../../types/versioning.ts';\nimport { parseVersion } from '../nuget/parser.ts';\nimport type { NugetVersion } from '../nuget/types.ts';\nimport type { NewValueConfig, VersioningApi } from '../types.ts';\nimport type { PaketConstraint, PaketRange } from './range.ts';\nimport {\n adaptToPrecision,\n bumpAtPrecision,\n ensurePrereleaseMatches,\n intervalOf,\n isLessThanLowerBound,\n matches as matchesRange,\n parseRange,\n rangeToString,\n releaseParts,\n twiddle,\n} from './range.ts';\nimport { compare, sameReleaseParts } from './version.ts';\n\nexport const id = 'paket';\nexport const displayName = 'Paket';\nexport const urls = [\n '[Paket version constraints](https://fsprojects.github.io/Paket/nuget-dependencies.html#Version-constraints)',\n '[NuGet package versioning](https://learn.microsoft.com/nuget/concepts/package-versioning)',\n];\nexport const supportsRanges = true;\nexport const supportedRangeStrategies: RangeStrategy[] = [\n 'bump',\n 'widen',\n 'replace',\n 'update-lockfile',\n];\n\nfunction isVersion(input: string | undefined | null): boolean {\n return !!input && parseVersion(input) !== null;\n}\n\nfunction isValid(input: string): boolean {\n return parseRange(input) !== null;\n}\n\nfunction isSingleVersionRange(range: PaketRange): boolean {\n if (range.constraints.length !== 1 || range.prereleaseTags.length > 0) {\n return false;\n }\n\n const { operator } = range.constraints[0];\n return operator === '' || operator === '=' || operator === '==';\n}\n\nfunction isSingleVersion(input: string): boolean {\n const range = parseRange(input);\n return !!range && isSingleVersionRange(range);\n}\n\nfunction isStable(input: string): boolean {\n const version = parseVersion(input);\n if (version) {\n return !version.prerelease;\n }\n\n const range = parseRange(input);\n return (\n !!range &&\n isSingleVersionRange(range) &&\n !range.constraints[0].version.prerelease\n );\n}\n\nfunction isCompatible(version: string): boolean {\n return isVersion(version);\n}\n\nfunction getMajor(version: string): number | null {\n return parseVersion(version)?.major ?? null;\n}\n\nfunction getMinor(version: string): number | null {\n return parseVersion(version)?.minor ?? null;\n}\n\nfunction getPatch(version: string): number | null {\n return parseVersion(version)?.patch ?? null;\n}\n\nfunction compareVersions(version: string, other: string): number | null {\n const x = parseVersion(version);\n const y = parseVersion(other);\n return x && y ? compare(x, y) : null;\n}\n\nfunction equals(version: string, other: string): boolean {\n return compareVersions(version, other) === 0;\n}\n\nfunction isGreaterThan(version: string, other: string): boolean {\n const cmp = compareVersions(version, other);\n return cmp !== null && cmp > 0;\n}\n\nfunction sortVersions(version: string, other: string): number {\n return compareVersions(version, other) ?? 0;\n}\n\nfunction matches(version: string, range: string): boolean {\n const v = parseVersion(version);\n const r = parseRange(range);\n return !!v && !!r && matchesRange(v, r);\n}\n\nfunction isLessThanRange(version: string, range: string): boolean {\n const v = parseVersion(version);\n const r = parseRange(range);\n return !!v && !!r && isLessThanLowerBound(v, r);\n}\n\nfunction satisfyingVersions(versions: string[], range: string): string[] {\n return versions.filter((v) => matches(v, range)).sort(sortVersions);\n}\n\nfunction getSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return satisfyingVersions(versions, range).pop() ?? null;\n}\n\nfunction minSatisfyingVersion(\n versions: string[],\n range: string,\n): string | null {\n return satisfyingVersions(versions, range).shift() ?? null;\n}\n\nfunction getPinnedValue(newVersion: string): string {\n return newVersion;\n}\n\nfunction replaceConstraint(\n constraint: PaketConstraint,\n v: NugetVersion,\n): PaketConstraint {\n const { operator, version } = constraint;\n switch (operator) {\n case '':\n case '=':\n case '==':\n return { operator, version: v };\n case '>':\n case '>=':\n return constraint;\n case '<=':\n return compare(v, version) > 0 ? { operator, version: v } : constraint;\n case '<':\n return compare(v, version) >= 0 || sameReleaseParts(v, version)\n ? {\n operator,\n version: bumpAtPrecision(v, releaseParts(version).length),\n }\n : constraint;\n case '~>': {\n const cap = twiddle(version);\n return compare(v, cap) >= 0 || sameReleaseParts(v, cap)\n ? {\n operator,\n version: adaptToPrecision(v, releaseParts(version).length),\n }\n : constraint;\n }\n }\n}\n\n/**\n * Rewrite `~> band` optionally followed by a `>=`/`>` floor: the band follows\n * the new version at its old precision, and the floor sticks to the exact new\n * version unless it becomes redundant.\n */\nfunction pessimisticWithFloor(range: PaketRange, v: NugetVersion): PaketRange {\n const [pessimistic] = range.constraints;\n const band = adaptToPrecision(v, releaseParts(pessimistic.version).length);\n const constraints: PaketConstraint[] =\n compare(band, v) === 0\n ? [{ operator: '~>', version: band }]\n : [\n { operator: '~>', version: band },\n { operator: '>=', version: v },\n ];\n return { ...range, constraints };\n}\n\nfunction replaceRange(range: PaketRange, v: NugetVersion): PaketRange {\n const [first, second] = range.constraints;\n if (\n first.operator === '~>' &&\n (second?.operator === '>' || second?.operator === '>=')\n ) {\n return pessimisticWithFloor(range, v);\n }\n\n return {\n ...range,\n constraints: range.constraints.map((c) => replaceConstraint(c, v)),\n };\n}\n\nfunction bumpConstraint(\n constraint: PaketConstraint,\n v: NugetVersion,\n): PaketConstraint {\n const { operator, version } = constraint;\n switch (operator) {\n case '>=':\n return compare(v, version) > 0 ? { operator, version: v } : constraint;\n case '>':\n // the lower bound guard in `getNewValue` ensures `v` is above `version`\n return { operator: '>=', version: v };\n case '~>': {\n const adapted = adaptToPrecision(v, releaseParts(version).length);\n return compare(adapted, version) > 0\n ? { operator, version: adapted }\n : constraint;\n }\n default:\n return replaceConstraint(constraint, v);\n }\n}\n\nfunction bumpRange(range: PaketRange, v: NugetVersion): PaketRange {\n const [first, second] = range.constraints;\n if (\n first.operator === '~>' &&\n second?.operator !== '<' &&\n second?.operator !== '<='\n ) {\n return pessimisticWithFloor(range, v);\n }\n\n return {\n ...range,\n constraints: range.constraints.map((c) => bumpConstraint(c, v)),\n };\n}\n\nfunction widenRange(range: PaketRange, v: NugetVersion): PaketRange {\n const interval = intervalOf(range.constraints);\n const [first] = range.constraints;\n\n if (interval.kind !== 'range' || first.operator !== '~>') {\n return {\n ...range,\n constraints: range.constraints.map((c) => replaceConstraint(c, v)),\n };\n }\n\n const { from, fromInclusive, to, toInclusive } = interval;\n const upperViolated = toInclusive\n ? compare(v, to) > 0\n : compare(v, to) >= 0 || sameReleaseParts(v, to);\n if (!upperViolated) {\n return range;\n }\n\n // The pessimistic operator acts as both bounds, so decompose it into\n // explicit bounds to widen upwards while keeping the lower bound.\n const lower: PaketConstraint = {\n operator: fromInclusive ? '>=' : '>',\n version: from,\n };\n const upper: PaketConstraint = toInclusive\n ? { operator: '<=', version: v }\n : { operator: '<', version: bumpAtPrecision(v, releaseParts(to).length) };\n return { ...range, constraints: [lower, upper] };\n}\n\nfunction getNewValue({\n currentValue,\n rangeStrategy,\n newVersion,\n}: NewValueConfig): string | null {\n const v = parseVersion(newVersion);\n if (!v) {\n return null;\n }\n\n if (isVersion(currentValue)) {\n return newVersion;\n }\n\n const range = parseRange(currentValue);\n if (!range) {\n return null;\n }\n\n if (rangeStrategy === 'pin') {\n return `${range.strategy ?? ''}${newVersion}`;\n }\n\n if (isLessThanLowerBound(v, range)) {\n return currentValue;\n }\n\n let result: PaketRange;\n if (rangeStrategy === 'bump') {\n result = bumpRange(range, v);\n } else if (matchesRange(v, range)) {\n return currentValue;\n } else if (rangeStrategy === 'widen') {\n result = widenRange(range, v);\n } else {\n result = replaceRange(range, v);\n }\n\n const newValue = rangeToString(ensurePrereleaseMatches(result, v));\n return newValue === rangeToString(range) ? currentValue : newValue;\n}\n\nexport const api: VersioningApi = {\n equals,\n getMajor,\n getMinor,\n getPatch,\n getNewValue,\n getPinnedValue,\n getSatisfyingVersion,\n minSatisfyingVersion,\n isCompatible,\n isGreaterThan,\n isLessThanRange,\n isSingleVersion,\n isStable,\n isValid,\n isVersion,\n matches,\n sortVersions,\n};\n\nexport default api;\n"],"mappings":"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"}
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { regEx } from "../../../util/regex.js";
|
|
2
|
+
import { isNotNullOrUndefined } from "../../../util/array.js";
|
|
3
|
+
import { parseVersion } from "../nuget/parser.js";
|
|
4
|
+
import { versionToString } from "../nuget/version.js";
|
|
5
|
+
import { compare, sameReleaseParts } from "./version.js";
|
|
6
|
+
//#region lib/modules/versioning/paket/range.ts
|
|
7
|
+
const constraintOperators = [
|
|
8
|
+
"=",
|
|
9
|
+
"==",
|
|
10
|
+
">",
|
|
11
|
+
">=",
|
|
12
|
+
"<",
|
|
13
|
+
"<=",
|
|
14
|
+
"~>"
|
|
15
|
+
];
|
|
16
|
+
const prereleaseTagRegex = regEx(/^[a-zA-Z][a-zA-Z0-9-]*$/);
|
|
17
|
+
/**
|
|
18
|
+
* Paket only accepts these operator combinations for two-part constraints.
|
|
19
|
+
*/
|
|
20
|
+
function isValidPair(first, second) {
|
|
21
|
+
if (first === "~>") return second === ">" || second === ">=" || second === "<" || second === "<=";
|
|
22
|
+
if (first === ">" || first === ">=") return second === "<" || second === "<=";
|
|
23
|
+
return false;
|
|
24
|
+
}
|
|
25
|
+
function parseRange(input) {
|
|
26
|
+
if (!input?.trim()) return null;
|
|
27
|
+
let text = input.trim();
|
|
28
|
+
let strategy = null;
|
|
29
|
+
if (text.startsWith("!") || text.startsWith("@")) {
|
|
30
|
+
strategy = text[0];
|
|
31
|
+
text = text.slice(1).trim();
|
|
32
|
+
}
|
|
33
|
+
const tokens = text.split(regEx(/\s+/));
|
|
34
|
+
const constraints = [];
|
|
35
|
+
let idx = 0;
|
|
36
|
+
while (idx < tokens.length && constraints.length < 2 && constraintOperators.includes(tokens[idx])) {
|
|
37
|
+
const operator = tokens[idx];
|
|
38
|
+
const versionToken = tokens[idx + 1];
|
|
39
|
+
const version = versionToken ? parseVersion(versionToken) : null;
|
|
40
|
+
if (!version) return null;
|
|
41
|
+
constraints.push({
|
|
42
|
+
operator,
|
|
43
|
+
version
|
|
44
|
+
});
|
|
45
|
+
idx += 2;
|
|
46
|
+
}
|
|
47
|
+
if (constraints.length === 0) {
|
|
48
|
+
const version = parseVersion(tokens[0]);
|
|
49
|
+
if (!version) return null;
|
|
50
|
+
constraints.push({
|
|
51
|
+
operator: "",
|
|
52
|
+
version
|
|
53
|
+
});
|
|
54
|
+
idx = 1;
|
|
55
|
+
}
|
|
56
|
+
if (constraints.length === 2 && !isValidPair(constraints[0].operator, constraints[1].operator)) return null;
|
|
57
|
+
const prereleaseTags = [];
|
|
58
|
+
for (const token of tokens.slice(idx)) {
|
|
59
|
+
if (!prereleaseTagRegex.test(token)) return null;
|
|
60
|
+
if (!prereleaseTags.includes(token)) prereleaseTags.push(token);
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
strategy,
|
|
64
|
+
constraints,
|
|
65
|
+
prereleaseTags
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
function rangeToString(range) {
|
|
69
|
+
const parts = [];
|
|
70
|
+
for (const { operator, version } of range.constraints) {
|
|
71
|
+
const versionStr = versionToString(version);
|
|
72
|
+
parts.push(operator === "" ? versionStr : `${operator} ${versionStr}`);
|
|
73
|
+
}
|
|
74
|
+
parts.push(...range.prereleaseTags);
|
|
75
|
+
return `${range.strategy ?? ""}${parts.join(" ")}`;
|
|
76
|
+
}
|
|
77
|
+
function releaseParts(version) {
|
|
78
|
+
const { major, minor, patch, revision } = version;
|
|
79
|
+
return [
|
|
80
|
+
major,
|
|
81
|
+
minor,
|
|
82
|
+
patch,
|
|
83
|
+
revision
|
|
84
|
+
].filter(isNotNullOrUndefined);
|
|
85
|
+
}
|
|
86
|
+
function versionFromParts(parts) {
|
|
87
|
+
const [major, minor, patch, revision] = parts;
|
|
88
|
+
const result = {
|
|
89
|
+
type: "nuget-version",
|
|
90
|
+
major
|
|
91
|
+
};
|
|
92
|
+
if (minor !== void 0) result.minor = minor;
|
|
93
|
+
if (patch !== void 0) result.patch = patch;
|
|
94
|
+
if (revision !== void 0) result.revision = revision;
|
|
95
|
+
return result;
|
|
96
|
+
}
|
|
97
|
+
function adaptToPrecision(version, precision) {
|
|
98
|
+
const parts = releaseParts(version).slice(0, precision);
|
|
99
|
+
while (parts.length < precision) parts.push(0);
|
|
100
|
+
return versionFromParts(parts);
|
|
101
|
+
}
|
|
102
|
+
function bumpAtPrecision(version, precision) {
|
|
103
|
+
const parts = releaseParts(adaptToPrecision(version, precision));
|
|
104
|
+
parts[precision - 1] += 1;
|
|
105
|
+
return versionFromParts(parts);
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Upper bound of the pessimistic operator: chop off the last release part and
|
|
109
|
+
* increment the remaining last number, so `~> 1.2.3` allows `< 1.3` and
|
|
110
|
+
* `~> 1.2` allows `< 2`.
|
|
111
|
+
*/
|
|
112
|
+
function twiddle(version) {
|
|
113
|
+
return bumpAtPrecision(version, Math.max(releaseParts(version).length - 1, 1));
|
|
114
|
+
}
|
|
115
|
+
function intervalOfPair(first, second) {
|
|
116
|
+
if (first.operator === "~>") {
|
|
117
|
+
const cap = twiddle(first.version);
|
|
118
|
+
if (second.operator === ">" || second.operator === ">=") return {
|
|
119
|
+
kind: "range",
|
|
120
|
+
from: second.version,
|
|
121
|
+
fromInclusive: second.operator === ">=",
|
|
122
|
+
to: cap,
|
|
123
|
+
toInclusive: false
|
|
124
|
+
};
|
|
125
|
+
const to = compare(second.version, cap) < 0 ? second.version : cap;
|
|
126
|
+
return {
|
|
127
|
+
kind: "range",
|
|
128
|
+
from: first.version,
|
|
129
|
+
fromInclusive: true,
|
|
130
|
+
to,
|
|
131
|
+
toInclusive: second.operator === "<="
|
|
132
|
+
};
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
kind: "range",
|
|
136
|
+
from: first.version,
|
|
137
|
+
fromInclusive: first.operator === ">=",
|
|
138
|
+
to: second.version,
|
|
139
|
+
toInclusive: second.operator === "<="
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
const singleOperatorKind = {
|
|
143
|
+
"": "specific",
|
|
144
|
+
"=": "specific",
|
|
145
|
+
"==": "override",
|
|
146
|
+
">=": "minimum",
|
|
147
|
+
">": "greater-than",
|
|
148
|
+
"<=": "maximum",
|
|
149
|
+
"<": "less-than"
|
|
150
|
+
};
|
|
151
|
+
function intervalOf(constraints) {
|
|
152
|
+
if (constraints.length === 2) return intervalOfPair(constraints[0], constraints[1]);
|
|
153
|
+
const [{ operator, version }] = constraints;
|
|
154
|
+
if (operator === "~>") return {
|
|
155
|
+
kind: "range",
|
|
156
|
+
from: version,
|
|
157
|
+
fromInclusive: true,
|
|
158
|
+
to: twiddle(version),
|
|
159
|
+
toInclusive: false
|
|
160
|
+
};
|
|
161
|
+
return {
|
|
162
|
+
kind: singleOperatorKind[operator],
|
|
163
|
+
version
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
const numericSegmentRegex = regEx(/^\d+$/);
|
|
167
|
+
const channelPrefixRegex = regEx(/^[a-zA-Z]+(?:-[a-zA-Z]+)*/);
|
|
168
|
+
function channelFromSegments(segments) {
|
|
169
|
+
const [first, second] = segments;
|
|
170
|
+
if (first && !numericSegmentRegex.test(first)) return first;
|
|
171
|
+
if (second && !numericSegmentRegex.test(second)) return second;
|
|
172
|
+
return "";
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* The channel name of a prerelease suffix, e.g. `alpha` for `alpha001` or
|
|
176
|
+
* `beta` for `beta.2`.
|
|
177
|
+
*/
|
|
178
|
+
function prereleaseChannel(prerelease) {
|
|
179
|
+
const segments = prerelease.split(".");
|
|
180
|
+
if (segments.length > 1) return channelFromSegments(segments);
|
|
181
|
+
const prefix = channelPrefixRegex.exec(prerelease);
|
|
182
|
+
if (prefix) return prefix[0];
|
|
183
|
+
return channelFromSegments(prerelease.split("-").filter((segment) => segment !== ""));
|
|
184
|
+
}
|
|
185
|
+
function prereleaseStatusOf(range, interval) {
|
|
186
|
+
const { prereleaseTags } = range;
|
|
187
|
+
if (prereleaseTags.length === 1 && prereleaseTags[0].toLowerCase() === "prerelease") return "all";
|
|
188
|
+
if (prereleaseTags.length > 0) return prereleaseTags;
|
|
189
|
+
const bounds = interval.kind === "range" ? [interval.from, interval.to] : [interval.version];
|
|
190
|
+
const channels = [];
|
|
191
|
+
for (const bound of bounds) {
|
|
192
|
+
if (!bound.prerelease) continue;
|
|
193
|
+
const channel = prereleaseChannel(bound.prerelease);
|
|
194
|
+
if (!channels.includes(channel)) channels.push(channel);
|
|
195
|
+
}
|
|
196
|
+
return channels.length > 0 ? channels : "none";
|
|
197
|
+
}
|
|
198
|
+
function isPrereleaseAllowed(version, status) {
|
|
199
|
+
if (status === "all") return true;
|
|
200
|
+
if (status === "none") return !version.prerelease;
|
|
201
|
+
if (!version.prerelease) return true;
|
|
202
|
+
return status.includes(prereleaseChannel(version.prerelease));
|
|
203
|
+
}
|
|
204
|
+
/**
|
|
205
|
+
* Paket rule: a prerelease of a stable bound version counts as being in range
|
|
206
|
+
* when its channel is allowed, e.g. `1.2.3-alpha1` satisfies `= 1.2.3 alpha`.
|
|
207
|
+
*/
|
|
208
|
+
function isPrereleaseOfBound(version, bound, status) {
|
|
209
|
+
return status !== "none" && !bound.prerelease && sameReleaseParts(version, bound) && isPrereleaseAllowed(version, status);
|
|
210
|
+
}
|
|
211
|
+
function matches(version, range) {
|
|
212
|
+
const interval = intervalOf(range.constraints);
|
|
213
|
+
const status = prereleaseStatusOf(range, interval);
|
|
214
|
+
switch (interval.kind) {
|
|
215
|
+
case "specific": return compare(version, interval.version) === 0 || isPrereleaseOfBound(version, interval.version, status);
|
|
216
|
+
case "override": return compare(version, interval.version) === 0;
|
|
217
|
+
case "minimum": {
|
|
218
|
+
const cmp = compare(version, interval.version);
|
|
219
|
+
return cmp === 0 || cmp > 0 && isPrereleaseAllowed(version, status) || isPrereleaseOfBound(version, interval.version, status);
|
|
220
|
+
}
|
|
221
|
+
case "greater-than": return compare(version, interval.version) > 0 && isPrereleaseAllowed(version, status);
|
|
222
|
+
case "maximum": {
|
|
223
|
+
const cmp = compare(version, interval.version);
|
|
224
|
+
return cmp === 0 || cmp < 0 && isPrereleaseAllowed(version, status);
|
|
225
|
+
}
|
|
226
|
+
case "less-than": return compare(version, interval.version) < 0 && isPrereleaseAllowed(version, status) && !isPrereleaseOfBound(version, interval.version, status);
|
|
227
|
+
case "range": {
|
|
228
|
+
const { from, fromInclusive, to, toInclusive } = interval;
|
|
229
|
+
const lowerCmp = compare(version, from);
|
|
230
|
+
const upperCmp = compare(version, to);
|
|
231
|
+
const inLower = fromInclusive ? lowerCmp >= 0 : lowerCmp > 0;
|
|
232
|
+
const inUpper = toInclusive ? upperCmp <= 0 : upperCmp < 0 && !isPrereleaseOfBound(version, to, status);
|
|
233
|
+
return inLower && inUpper && isPrereleaseAllowed(version, status) || isPrereleaseOfBound(version, from, status);
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
function isLessThanLowerBound(version, range) {
|
|
238
|
+
const interval = intervalOf(range.constraints);
|
|
239
|
+
switch (interval.kind) {
|
|
240
|
+
case "specific":
|
|
241
|
+
case "override":
|
|
242
|
+
case "minimum": return compare(version, interval.version) < 0;
|
|
243
|
+
case "greater-than": return compare(version, interval.version) <= 0;
|
|
244
|
+
case "maximum":
|
|
245
|
+
case "less-than": return false;
|
|
246
|
+
case "range": return interval.fromInclusive ? compare(version, interval.from) < 0 : compare(version, interval.from) <= 0;
|
|
247
|
+
}
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* A rewritten range admits the new version numerically, but its prerelease
|
|
251
|
+
* channel may still be blocked, so allow the channel with an explicit tag.
|
|
252
|
+
*/
|
|
253
|
+
function ensurePrereleaseMatches(range, version) {
|
|
254
|
+
if (!version.prerelease || matches(version, range)) return range;
|
|
255
|
+
const channel = prereleaseChannel(version.prerelease);
|
|
256
|
+
if (prereleaseTagRegex.test(channel)) return {
|
|
257
|
+
...range,
|
|
258
|
+
prereleaseTags: [...range.prereleaseTags, channel]
|
|
259
|
+
};
|
|
260
|
+
return {
|
|
261
|
+
...range,
|
|
262
|
+
prereleaseTags: ["prerelease"]
|
|
263
|
+
};
|
|
264
|
+
}
|
|
265
|
+
//#endregion
|
|
266
|
+
export { adaptToPrecision, bumpAtPrecision, ensurePrereleaseMatches, intervalOf, isLessThanLowerBound, matches, parseRange, rangeToString, releaseParts, twiddle };
|
|
267
|
+
|
|
268
|
+
//# sourceMappingURL=range.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"range.js","names":[],"sources":["../../../../lib/modules/versioning/paket/range.ts"],"sourcesContent":["import { isNotNullOrUndefined } from '../../../util/array.ts';\nimport { regEx } from '../../../util/regex.ts';\nimport { parseVersion } from '../nuget/parser.ts';\nimport type { NugetVersion } from '../nuget/types.ts';\nimport { versionToString } from '../nuget/version.ts';\nimport { compare, sameReleaseParts } from './version.ts';\n\nexport type PaketOperator = '' | '=' | '==' | '>' | '>=' | '<' | '<=' | '~>';\n\nexport interface PaketConstraint {\n operator: PaketOperator;\n version: NugetVersion;\n}\n\nexport interface PaketRange {\n strategy: '!' | '@' | null;\n constraints: PaketConstraint[];\n prereleaseTags: string[];\n}\n\nconst constraintOperators: readonly string[] = [\n '=',\n '==',\n '>',\n '>=',\n '<',\n '<=',\n '~>',\n];\n\nconst prereleaseTagRegex = regEx(/^[a-zA-Z][a-zA-Z0-9-]*$/);\n\n/**\n * Paket only accepts these operator combinations for two-part constraints.\n */\nfunction isValidPair(first: PaketOperator, second: PaketOperator): boolean {\n if (first === '~>') {\n return (\n second === '>' || second === '>=' || second === '<' || second === '<='\n );\n }\n\n if (first === '>' || first === '>=') {\n return second === '<' || second === '<=';\n }\n\n return false;\n}\n\nexport function parseRange(input: string): PaketRange | null {\n if (!input?.trim()) {\n return null;\n }\n\n let text = input.trim();\n let strategy: PaketRange['strategy'] = null;\n if (text.startsWith('!') || text.startsWith('@')) {\n strategy = text[0] as '!' | '@';\n text = text.slice(1).trim();\n }\n\n const tokens = text.split(regEx(/\\s+/));\n const constraints: PaketConstraint[] = [];\n let idx = 0;\n\n while (\n idx < tokens.length &&\n constraints.length < 2 &&\n constraintOperators.includes(tokens[idx])\n ) {\n const operator = tokens[idx] as PaketOperator;\n const versionToken = tokens[idx + 1];\n const version = versionToken ? parseVersion(versionToken) : null;\n if (!version) {\n return null;\n }\n constraints.push({ operator, version });\n idx += 2;\n }\n\n if (constraints.length === 0) {\n const version = parseVersion(tokens[0]);\n if (!version) {\n return null;\n }\n constraints.push({ operator: '', version });\n idx = 1;\n }\n\n if (\n constraints.length === 2 &&\n !isValidPair(constraints[0].operator, constraints[1].operator)\n ) {\n return null;\n }\n\n const prereleaseTags: string[] = [];\n for (const token of tokens.slice(idx)) {\n if (!prereleaseTagRegex.test(token)) {\n return null;\n }\n if (!prereleaseTags.includes(token)) {\n prereleaseTags.push(token);\n }\n }\n\n return { strategy, constraints, prereleaseTags };\n}\n\nexport function rangeToString(range: PaketRange): string {\n const parts: string[] = [];\n for (const { operator, version } of range.constraints) {\n const versionStr = versionToString(version);\n parts.push(operator === '' ? versionStr : `${operator} ${versionStr}`);\n }\n parts.push(...range.prereleaseTags);\n return `${range.strategy ?? ''}${parts.join(' ')}`;\n}\n\nexport function releaseParts(version: NugetVersion): number[] {\n const { major, minor, patch, revision } = version;\n return [major, minor, patch, revision].filter(isNotNullOrUndefined);\n}\n\nfunction versionFromParts(parts: number[]): NugetVersion {\n const [major, minor, patch, revision] = parts;\n const result: NugetVersion = { type: 'nuget-version', major };\n if (minor !== undefined) {\n result.minor = minor;\n }\n if (patch !== undefined) {\n result.patch = patch;\n }\n if (revision !== undefined) {\n result.revision = revision;\n }\n return result;\n}\n\nexport function adaptToPrecision(\n version: NugetVersion,\n precision: number,\n): NugetVersion {\n const parts = releaseParts(version).slice(0, precision);\n while (parts.length < precision) {\n parts.push(0);\n }\n return versionFromParts(parts);\n}\n\nexport function bumpAtPrecision(\n version: NugetVersion,\n precision: number,\n): NugetVersion {\n const parts = releaseParts(adaptToPrecision(version, precision));\n parts[precision - 1] += 1;\n return versionFromParts(parts);\n}\n\n/**\n * Upper bound of the pessimistic operator: chop off the last release part and\n * increment the remaining last number, so `~> 1.2.3` allows `< 1.3` and\n * `~> 1.2` allows `< 2`.\n */\nexport function twiddle(version: NugetVersion): NugetVersion {\n const precision = Math.max(releaseParts(version).length - 1, 1);\n return bumpAtPrecision(version, precision);\n}\n\nexport type PaketInterval =\n | {\n kind:\n | 'specific'\n | 'override'\n | 'minimum'\n | 'greater-than'\n | 'maximum'\n | 'less-than';\n version: NugetVersion;\n }\n | {\n kind: 'range';\n from: NugetVersion;\n fromInclusive: boolean;\n to: NugetVersion;\n toInclusive: boolean;\n };\n\nfunction intervalOfPair(\n first: PaketConstraint,\n second: PaketConstraint,\n): PaketInterval {\n if (first.operator === '~>') {\n const cap = twiddle(first.version);\n\n if (second.operator === '>' || second.operator === '>=') {\n return {\n kind: 'range',\n from: second.version,\n fromInclusive: second.operator === '>=',\n to: cap,\n toInclusive: false,\n };\n }\n\n const to = compare(second.version, cap) < 0 ? second.version : cap;\n return {\n kind: 'range',\n from: first.version,\n fromInclusive: true,\n to,\n toInclusive: second.operator === '<=',\n };\n }\n\n return {\n kind: 'range',\n from: first.version,\n fromInclusive: first.operator === '>=',\n to: second.version,\n toInclusive: second.operator === '<=',\n };\n}\n\nconst singleOperatorKind = {\n '': 'specific',\n '=': 'specific',\n '==': 'override',\n '>=': 'minimum',\n '>': 'greater-than',\n '<=': 'maximum',\n '<': 'less-than',\n} as const;\n\nexport function intervalOf(constraints: PaketConstraint[]): PaketInterval {\n if (constraints.length === 2) {\n return intervalOfPair(constraints[0], constraints[1]);\n }\n\n const [{ operator, version }] = constraints;\n if (operator === '~>') {\n return {\n kind: 'range',\n from: version,\n fromInclusive: true,\n to: twiddle(version),\n toInclusive: false,\n };\n }\n return { kind: singleOperatorKind[operator], version };\n}\n\nconst numericSegmentRegex = regEx(/^\\d+$/);\nconst channelPrefixRegex = regEx(/^[a-zA-Z]+(?:-[a-zA-Z]+)*/);\n\nfunction channelFromSegments(segments: string[]): string {\n const [first, second] = segments;\n if (first && !numericSegmentRegex.test(first)) {\n return first;\n }\n if (second && !numericSegmentRegex.test(second)) {\n return second;\n }\n return '';\n}\n\n/**\n * The channel name of a prerelease suffix, e.g. `alpha` for `alpha001` or\n * `beta` for `beta.2`.\n */\nexport function prereleaseChannel(prerelease: string): string {\n const segments = prerelease.split('.');\n if (segments.length > 1) {\n return channelFromSegments(segments);\n }\n\n const prefix = channelPrefixRegex.exec(prerelease);\n if (prefix) {\n return prefix[0];\n }\n\n return channelFromSegments(\n prerelease.split('-').filter((segment) => segment !== ''),\n );\n}\n\ntype PrereleaseStatus = 'none' | 'all' | string[];\n\nfunction prereleaseStatusOf(\n range: PaketRange,\n interval: PaketInterval,\n): PrereleaseStatus {\n const { prereleaseTags } = range;\n if (\n prereleaseTags.length === 1 &&\n prereleaseTags[0].toLowerCase() === 'prerelease'\n ) {\n return 'all';\n }\n if (prereleaseTags.length > 0) {\n return prereleaseTags;\n }\n\n // Without explicit tags, prerelease versions used in the constraint itself\n // allow their own channels, e.g. `~> 1.2.3-alpha001` allows `alpha` versions.\n const bounds =\n interval.kind === 'range'\n ? [interval.from, interval.to]\n : [interval.version];\n const channels: string[] = [];\n for (const bound of bounds) {\n if (!bound.prerelease) {\n continue;\n }\n const channel = prereleaseChannel(bound.prerelease);\n if (!channels.includes(channel)) {\n channels.push(channel);\n }\n }\n return channels.length > 0 ? channels : 'none';\n}\n\nfunction isPrereleaseAllowed(\n version: NugetVersion,\n status: PrereleaseStatus,\n): boolean {\n if (status === 'all') {\n return true;\n }\n if (status === 'none') {\n return !version.prerelease;\n }\n if (!version.prerelease) {\n return true;\n }\n return status.includes(prereleaseChannel(version.prerelease));\n}\n\n/**\n * Paket rule: a prerelease of a stable bound version counts as being in range\n * when its channel is allowed, e.g. `1.2.3-alpha1` satisfies `= 1.2.3 alpha`.\n */\nfunction isPrereleaseOfBound(\n version: NugetVersion,\n bound: NugetVersion,\n status: PrereleaseStatus,\n): boolean {\n return (\n status !== 'none' &&\n !bound.prerelease &&\n sameReleaseParts(version, bound) &&\n isPrereleaseAllowed(version, status)\n );\n}\n\nexport function matches(version: NugetVersion, range: PaketRange): boolean {\n const interval = intervalOf(range.constraints);\n const status = prereleaseStatusOf(range, interval);\n\n switch (interval.kind) {\n case 'specific':\n return (\n compare(version, interval.version) === 0 ||\n isPrereleaseOfBound(version, interval.version, status)\n );\n case 'override':\n return compare(version, interval.version) === 0;\n case 'minimum': {\n const cmp = compare(version, interval.version);\n return (\n cmp === 0 ||\n (cmp > 0 && isPrereleaseAllowed(version, status)) ||\n isPrereleaseOfBound(version, interval.version, status)\n );\n }\n case 'greater-than':\n return (\n compare(version, interval.version) > 0 &&\n isPrereleaseAllowed(version, status)\n );\n case 'maximum': {\n const cmp = compare(version, interval.version);\n return cmp === 0 || (cmp < 0 && isPrereleaseAllowed(version, status));\n }\n case 'less-than':\n return (\n compare(version, interval.version) < 0 &&\n isPrereleaseAllowed(version, status) &&\n !isPrereleaseOfBound(version, interval.version, status)\n );\n case 'range': {\n const { from, fromInclusive, to, toInclusive } = interval;\n const lowerCmp = compare(version, from);\n const upperCmp = compare(version, to);\n const inLower = fromInclusive ? lowerCmp >= 0 : lowerCmp > 0;\n const inUpper = toInclusive\n ? upperCmp <= 0\n : upperCmp < 0 && !isPrereleaseOfBound(version, to, status);\n return (\n (inLower && inUpper && isPrereleaseAllowed(version, status)) ||\n isPrereleaseOfBound(version, from, status)\n );\n }\n }\n}\n\nexport function isLessThanLowerBound(\n version: NugetVersion,\n range: PaketRange,\n): boolean {\n const interval = intervalOf(range.constraints);\n switch (interval.kind) {\n case 'specific':\n case 'override':\n case 'minimum':\n return compare(version, interval.version) < 0;\n case 'greater-than':\n return compare(version, interval.version) <= 0;\n case 'maximum':\n case 'less-than':\n return false;\n case 'range':\n return interval.fromInclusive\n ? compare(version, interval.from) < 0\n : compare(version, interval.from) <= 0;\n }\n}\n\n/**\n * A rewritten range admits the new version numerically, but its prerelease\n * channel may still be blocked, so allow the channel with an explicit tag.\n */\nexport function ensurePrereleaseMatches(\n range: PaketRange,\n version: NugetVersion,\n): PaketRange {\n if (!version.prerelease || matches(version, range)) {\n return range;\n }\n\n const channel = prereleaseChannel(version.prerelease);\n if (prereleaseTagRegex.test(channel)) {\n return { ...range, prereleaseTags: [...range.prereleaseTags, channel] };\n }\n return { ...range, prereleaseTags: ['prerelease'] };\n}\n"],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import { compare as compare$1 } from "../nuget/version.js";
|
|
2
|
+
//#region lib/modules/versioning/paket/version.ts
|
|
3
|
+
function sameReleaseParts(x, y) {
|
|
4
|
+
return x.major === y.major && (x.minor ?? 0) === (y.minor ?? 0) && (x.patch ?? 0) === (y.patch ?? 0) && (x.revision ?? 0) === (y.revision ?? 0);
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* NuGet ordering, plus the Paket rule that the literal `prerelease` suffix
|
|
8
|
+
* sorts below any other prerelease of the same release version, so that
|
|
9
|
+
* `1.2.3-prerelease` acts as an "any prerelease of 1.2.3" floor.
|
|
10
|
+
*/
|
|
11
|
+
function compare(x, y) {
|
|
12
|
+
if (x.prerelease && y.prerelease && sameReleaseParts(x, y)) {
|
|
13
|
+
const xSentinel = x.prerelease === "prerelease";
|
|
14
|
+
if (xSentinel !== (y.prerelease === "prerelease")) return xSentinel ? -1 : 1;
|
|
15
|
+
}
|
|
16
|
+
return compare$1(x, y);
|
|
17
|
+
}
|
|
18
|
+
//#endregion
|
|
19
|
+
export { compare, sameReleaseParts };
|
|
20
|
+
|
|
21
|
+
//# sourceMappingURL=version.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.js","names":["compareNuget"],"sources":["../../../../lib/modules/versioning/paket/version.ts"],"sourcesContent":["import type { NugetVersion } from '../nuget/types.ts';\nimport { compare as compareNuget } from '../nuget/version.ts';\n\nexport function sameReleaseParts(x: NugetVersion, y: NugetVersion): boolean {\n return (\n x.major === y.major &&\n (x.minor ?? 0) === (y.minor ?? 0) &&\n (x.patch ?? 0) === (y.patch ?? 0) &&\n (x.revision ?? 0) === (y.revision ?? 0)\n );\n}\n\n/**\n * NuGet ordering, plus the Paket rule that the literal `prerelease` suffix\n * sorts below any other prerelease of the same release version, so that\n * `1.2.3-prerelease` acts as an \"any prerelease of 1.2.3\" floor.\n */\nexport function compare(x: NugetVersion, y: NugetVersion): number {\n if (x.prerelease && y.prerelease && sameReleaseParts(x, y)) {\n const xSentinel = x.prerelease === 'prerelease';\n const ySentinel = y.prerelease === 'prerelease';\n if (xSentinel !== ySentinel) {\n return xSentinel ? -1 : 1;\n }\n }\n return compareNuget(x, y);\n}\n"],"mappings":";;AAGA,SAAgB,iBAAiB,GAAiB,GAA0B;CAC1E,OACE,EAAE,UAAU,EAAE,UACb,EAAE,SAAS,QAAQ,EAAE,SAAS,OAC9B,EAAE,SAAS,QAAQ,EAAE,SAAS,OAC9B,EAAE,YAAY,QAAQ,EAAE,YAAY;AAEzC;;;;;;AAOA,SAAgB,QAAQ,GAAiB,GAAyB;CAChE,IAAI,EAAE,cAAc,EAAE,cAAc,iBAAiB,GAAG,CAAC,GAAG;EAC1D,MAAM,YAAY,EAAE,eAAe;EAEnC,IAAI,eADc,EAAE,eAAe,eAEjC,OAAO,YAAY,KAAK;CAE5B;CACA,OAAOA,UAAa,GAAG,CAAC;AAC1B"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
//#region lib/versioning-list.generated.d.ts
|
|
2
|
-
declare const AllVersioningsListLiteral: readonly ["apk", "aws-eks-addon", "aws-machine-image", "azure-rest-api", "bazel-module", "cargo", "composer", "conan", "conda", "deb", "debian", "deno", "devbox", "docker", "elm", "exact", "git", "github-actions", "glasskube", "go-mod-directive", "gradle", "hashicorp", "helm", "hermit", "hex", "ivy", "kubernetes-api", "lambda-node", "loose", "maven", "nixpkgs", "node", "npm", "nuget", "pep440", "perl", "poetry", "pvp", "python", "redhat", "regex", "rez", "rpm", "ruby", "rust-release-channel", "same-major", "semver", "semver-coerced", "semver-partial", "swift", "ubuntu", "unity3d", "unity3d-packages"];
|
|
2
|
+
declare const AllVersioningsListLiteral: readonly ["apk", "aws-eks-addon", "aws-machine-image", "azure-rest-api", "bazel-module", "cargo", "composer", "conan", "conda", "deb", "debian", "deno", "devbox", "docker", "elm", "exact", "git", "github-actions", "glasskube", "go-mod-directive", "gradle", "hashicorp", "helm", "hermit", "hex", "ivy", "kubernetes-api", "lambda-node", "loose", "maven", "nixpkgs", "node", "npm", "nuget", "paket", "pep440", "perl", "poetry", "pvp", "python", "redhat", "regex", "rez", "rpm", "ruby", "rust-release-channel", "same-major", "semver", "semver-coerced", "semver-partial", "swift", "ubuntu", "unity3d", "unity3d-packages"];
|
|
3
3
|
type VersioningName = typeof AllVersioningsListLiteral[number];
|
|
4
4
|
//#endregion
|
|
5
5
|
export { VersioningName };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"versioning-list.generated.js","names":[],"sources":["../lib/versioning-list.generated.ts"],"sourcesContent":["\nexport const AllVersioningsListLiteral = [\"apk\",\"aws-eks-addon\",\"aws-machine-image\",\"azure-rest-api\",\"bazel-module\",\"cargo\",\"composer\",\"conan\",\"conda\",\"deb\",\"debian\",\"deno\",\"devbox\",\"docker\",\"elm\",\"exact\",\"git\",\"github-actions\",\"glasskube\",\"go-mod-directive\",\"gradle\",\"hashicorp\",\"helm\",\"hermit\",\"hex\",\"ivy\",\"kubernetes-api\",\"lambda-node\",\"loose\",\"maven\",\"nixpkgs\",\"node\",\"npm\",\"nuget\",\"pep440\",\"perl\",\"poetry\",\"pvp\",\"python\",\"redhat\",\"regex\",\"rez\",\"rpm\",\"ruby\",\"rust-release-channel\",\"same-major\",\"semver\",\"semver-coerced\",\"semver-partial\",\"swift\",\"ubuntu\",\"unity3d\",\"unity3d-packages\"] as const;\nexport type VersioningName = typeof AllVersioningsListLiteral[number];\n"],"mappings":";AACA,MAAa,4BAA4B;CAAC;CAAM;CAAgB;CAAoB;CAAiB;CAAe;CAAQ;CAAW;CAAQ;CAAQ;CAAM;CAAS;CAAO;CAAS;CAAS;CAAM;CAAQ;CAAM;CAAiB;CAAY;CAAmB;CAAS;CAAY;CAAO;CAAS;CAAM;CAAM;CAAiB;CAAc;CAAQ;CAAQ;CAAU;CAAO;CAAM;CAAQ;CAAS;CAAO;CAAS;CAAM;CAAS;CAAS;CAAQ;CAAM;CAAM;CAAO;CAAuB;CAAa;CAAS;CAAiB;CAAiB;CAAQ;CAAS;CAAU;AAAkB"}
|
|
1
|
+
{"version":3,"file":"versioning-list.generated.js","names":[],"sources":["../lib/versioning-list.generated.ts"],"sourcesContent":["\nexport const AllVersioningsListLiteral = [\"apk\",\"aws-eks-addon\",\"aws-machine-image\",\"azure-rest-api\",\"bazel-module\",\"cargo\",\"composer\",\"conan\",\"conda\",\"deb\",\"debian\",\"deno\",\"devbox\",\"docker\",\"elm\",\"exact\",\"git\",\"github-actions\",\"glasskube\",\"go-mod-directive\",\"gradle\",\"hashicorp\",\"helm\",\"hermit\",\"hex\",\"ivy\",\"kubernetes-api\",\"lambda-node\",\"loose\",\"maven\",\"nixpkgs\",\"node\",\"npm\",\"nuget\",\"paket\",\"pep440\",\"perl\",\"poetry\",\"pvp\",\"python\",\"redhat\",\"regex\",\"rez\",\"rpm\",\"ruby\",\"rust-release-channel\",\"same-major\",\"semver\",\"semver-coerced\",\"semver-partial\",\"swift\",\"ubuntu\",\"unity3d\",\"unity3d-packages\"] as const;\nexport type VersioningName = typeof AllVersioningsListLiteral[number];\n"],"mappings":";AACA,MAAa,4BAA4B;CAAC;CAAM;CAAgB;CAAoB;CAAiB;CAAe;CAAQ;CAAW;CAAQ;CAAQ;CAAM;CAAS;CAAO;CAAS;CAAS;CAAM;CAAQ;CAAM;CAAiB;CAAY;CAAmB;CAAS;CAAY;CAAO;CAAS;CAAM;CAAM;CAAiB;CAAc;CAAQ;CAAQ;CAAU;CAAO;CAAM;CAAQ;CAAQ;CAAS;CAAO;CAAS;CAAM;CAAS;CAAS;CAAQ;CAAM;CAAM;CAAO;CAAuB;CAAa;CAAS;CAAiB;CAAiB;CAAQ;CAAS;CAAU;AAAkB"}
|
package/package.json
CHANGED
package/renovate-schema.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$id": "https://docs.renovatebot.com/renovate-schema.json",
|
|
3
|
-
"title": "JSON schema for Renovate 43.
|
|
3
|
+
"title": "JSON schema for Renovate 43.255.0 config files (https://renovatebot.com/)",
|
|
4
4
|
"$schema": "http://json-schema.org/draft-07/schema#",
|
|
5
|
-
"x-renovate-version": "43.
|
|
5
|
+
"x-renovate-version": "43.255.0",
|
|
6
6
|
"allowComments": true,
|
|
7
7
|
"type": "object",
|
|
8
8
|
"definitions": {
|
|
@@ -8226,6 +8226,7 @@
|
|
|
8226
8226
|
"node",
|
|
8227
8227
|
"npm",
|
|
8228
8228
|
"nuget",
|
|
8229
|
+
"paket",
|
|
8229
8230
|
"pep440",
|
|
8230
8231
|
"perl",
|
|
8231
8232
|
"poetry",
|