@cloudsnorkel/cdk-github-runners 0.14.7 → 0.14.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (49) hide show
  1. package/.jsii +107 -73
  2. package/API.md +29 -3
  3. package/README.md +6 -0
  4. package/assets/delete-failed-runner.lambda/index.js +72 -46
  5. package/assets/idle-runner-repear.lambda/index.js +72 -46
  6. package/assets/image-builders/aws-image-builder/versioner.lambda/index.js +25 -10
  7. package/assets/setup.lambda/index.html +8 -8
  8. package/assets/status.lambda/index.js +72 -46
  9. package/assets/token-retriever.lambda/index.js +72 -46
  10. package/assets/webhook-handler.lambda/index.js +80 -49
  11. package/lib/access.js +1 -1
  12. package/lib/delete-failed-runner-function.js +2 -2
  13. package/lib/idle-runner-repear-function.js +2 -2
  14. package/lib/image-builders/api.js +1 -1
  15. package/lib/image-builders/aws-image-builder/ami.js +10 -2
  16. package/lib/image-builders/aws-image-builder/builder.js +1 -1
  17. package/lib/image-builders/aws-image-builder/container.d.ts +1 -1
  18. package/lib/image-builders/aws-image-builder/container.js +5 -2
  19. package/lib/image-builders/aws-image-builder/delete-resources-function.js +2 -2
  20. package/lib/image-builders/aws-image-builder/deprecated/ami.js +4 -4
  21. package/lib/image-builders/aws-image-builder/deprecated/container.js +1 -1
  22. package/lib/image-builders/aws-image-builder/deprecated/linux-components.js +1 -1
  23. package/lib/image-builders/aws-image-builder/deprecated/windows-components.js +1 -1
  24. package/lib/image-builders/aws-image-builder/filter-failed-builds-function.js +2 -2
  25. package/lib/image-builders/aws-image-builder/versioner-function.js +2 -2
  26. package/lib/image-builders/build-image-function.js +2 -2
  27. package/lib/image-builders/codebuild-deprecated.js +1 -1
  28. package/lib/image-builders/common.d.ts +2 -2
  29. package/lib/image-builders/common.js +1 -1
  30. package/lib/image-builders/components.js +16 -16
  31. package/lib/image-builders/static.js +1 -1
  32. package/lib/providers/ami-root-device-function.js +2 -2
  33. package/lib/providers/codebuild.js +2 -2
  34. package/lib/providers/common.d.ts +17 -1
  35. package/lib/providers/common.js +22 -6
  36. package/lib/providers/ec2.js +2 -2
  37. package/lib/providers/ecs.js +1 -1
  38. package/lib/providers/fargate.js +2 -2
  39. package/lib/providers/lambda.js +2 -2
  40. package/lib/providers/update-lambda-function.js +2 -2
  41. package/lib/runner.js +2 -2
  42. package/lib/secrets.js +1 -1
  43. package/lib/setup-function.js +2 -2
  44. package/lib/status-function.js +2 -2
  45. package/lib/token-retriever-function.js +2 -2
  46. package/lib/webhook-handler-function.js +2 -2
  47. package/lib/webhook-handler.lambda.d.ts +8 -0
  48. package/lib/webhook-handler.lambda.js +15 -5
  49. package/package.json +22 -22
package/API.md CHANGED
@@ -7984,7 +7984,7 @@ public readonly baseAmi: string;
7984
7984
  ```
7985
7985
 
7986
7986
  - *Type:* string
7987
- - *Default:* latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
7987
+ - *Default:* latest Ubuntu 22.04 AMI for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, Ubuntu 24.04 AMI for Os.LINUX_UBUNTU_2404, latest Amazon Linux 2 AMI for Os.LINUX_AMAZON_2, latest Windows Server 2022 AMI for Os.WINDOWS
7988
7988
 
7989
7989
  Base AMI from which runner AMIs will be built.
7990
7990
 
@@ -7999,7 +7999,7 @@ public readonly baseDockerImage: string;
7999
7999
  ```
8000
8000
 
8001
8001
  - *Type:* string
8002
- - *Default:* public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
8002
+ - *Default:* public.ecr.aws/lts/ubuntu:22.04 for Os.LINUX_UBUNTU and Os.LINUX_UBUNTU_2204, public.ecr.aws/lts/ubuntu:24.04 for Os.LINUX_UBUNTU_2404, public.ecr.aws/amazonlinux/amazonlinux:2 for Os.LINUX_AMAZON_2, mcr.microsoft.com/windows/servercore:ltsc2019-amd64 for Os.WINDOWS
8003
8003
 
8004
8004
  Base image from which Docker runner images will be built.
8005
8005
 
@@ -9071,13 +9071,15 @@ public readonly name: string;
9071
9071
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX_AMAZON_2">LINUX_AMAZON_2</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Amazon Linux 2. |
9072
9072
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX_AMAZON_2023">LINUX_AMAZON_2023</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Amazon Linux 2023. |
9073
9073
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX_UBUNTU">LINUX_UBUNTU</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Ubuntu Linux. |
9074
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX_UBUNTU_2204">LINUX_UBUNTU_2204</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Ubuntu Linux 22.04. |
9075
+ | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.LINUX_UBUNTU_2404">LINUX_UBUNTU_2404</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Ubuntu Linux 24.04. |
9074
9076
  | <code><a href="#@cloudsnorkel/cdk-github-runners.Os.property.WINDOWS">WINDOWS</a></code> | <code><a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a></code> | Windows. |
9075
9077
 
9076
9078
  ---
9077
9079
 
9078
9080
  ##### ~~`LINUX`~~<sup>Required</sup> <a name="LINUX" id="@cloudsnorkel/cdk-github-runners.Os.property.LINUX"></a>
9079
9081
 
9080
- - *Deprecated:* use {@link LINUX_UBUNTU } or {@link LINUX_AMAZON_2 } or {@link LINUX_AMAZON_2023 }
9082
+ - *Deprecated:* use {@link LINUX_UBUNTU }, {@link LINUX_UBUNTU_2404 }, {@link LINUX_AMAZON_2 } or {@link LINUX_AMAZON_2023 }
9081
9083
 
9082
9084
  ```typescript
9083
9085
  public readonly LINUX: Os;
@@ -9125,6 +9127,30 @@ Ubuntu Linux.
9125
9127
 
9126
9128
  ---
9127
9129
 
9130
+ ##### `LINUX_UBUNTU_2204`<sup>Required</sup> <a name="LINUX_UBUNTU_2204" id="@cloudsnorkel/cdk-github-runners.Os.property.LINUX_UBUNTU_2204"></a>
9131
+
9132
+ ```typescript
9133
+ public readonly LINUX_UBUNTU_2204: Os;
9134
+ ```
9135
+
9136
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
9137
+
9138
+ Ubuntu Linux 22.04.
9139
+
9140
+ ---
9141
+
9142
+ ##### `LINUX_UBUNTU_2404`<sup>Required</sup> <a name="LINUX_UBUNTU_2404" id="@cloudsnorkel/cdk-github-runners.Os.property.LINUX_UBUNTU_2404"></a>
9143
+
9144
+ ```typescript
9145
+ public readonly LINUX_UBUNTU_2404: Os;
9146
+ ```
9147
+
9148
+ - *Type:* <a href="#@cloudsnorkel/cdk-github-runners.Os">Os</a>
9149
+
9150
+ Ubuntu Linux 24.04.
9151
+
9152
+ ---
9153
+
9128
9154
  ##### `WINDOWS`<sup>Required</sup> <a name="WINDOWS" id="@cloudsnorkel/cdk-github-runners.Os.property.WINDOWS"></a>
9129
9155
 
9130
9156
  ```typescript
package/README.md CHANGED
@@ -296,6 +296,12 @@ new GitHubRunners(this, 'runners', {
296
296
  });
297
297
  ```
298
298
 
299
+ ## Examples
300
+
301
+ Beyond the code snippets above, the fullest example available is the [integration test](test/default.integ.ts).
302
+
303
+ If you have more to share, please open a PR adding them to the `examples` folder.
304
+
299
305
  ## Architecture
300
306
 
301
307
  ![Architecture diagram](architecture.svg)
@@ -4766,40 +4766,6 @@ var require_data_stream = __commonJS({
4766
4766
  }
4767
4767
  });
4768
4768
 
4769
- // node_modules/buffer-equal-constant-time/index.js
4770
- var require_buffer_equal_constant_time = __commonJS({
4771
- "node_modules/buffer-equal-constant-time/index.js"(exports2, module2) {
4772
- "use strict";
4773
- var Buffer2 = require("buffer").Buffer;
4774
- var SlowBuffer = require("buffer").SlowBuffer;
4775
- module2.exports = bufferEq;
4776
- function bufferEq(a, b) {
4777
- if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) {
4778
- return false;
4779
- }
4780
- if (a.length !== b.length) {
4781
- return false;
4782
- }
4783
- var c = 0;
4784
- for (var i = 0; i < a.length; i++) {
4785
- c |= a[i] ^ b[i];
4786
- }
4787
- return c === 0;
4788
- }
4789
- bufferEq.install = function() {
4790
- Buffer2.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {
4791
- return bufferEq(this, that);
4792
- };
4793
- };
4794
- var origBufEqual = Buffer2.prototype.equal;
4795
- var origSlowBufEqual = SlowBuffer.prototype.equal;
4796
- bufferEq.restore = function() {
4797
- Buffer2.prototype.equal = origBufEqual;
4798
- SlowBuffer.prototype.equal = origSlowBufEqual;
4799
- };
4800
- }
4801
- });
4802
-
4803
4769
  // node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js
4804
4770
  var require_param_bytes_for_alg = __commonJS({
4805
4771
  "node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js"(exports2, module2) {
@@ -4964,11 +4930,44 @@ var require_ecdsa_sig_formatter = __commonJS({
4964
4930
  }
4965
4931
  });
4966
4932
 
4933
+ // node_modules/buffer-equal-constant-time/index.js
4934
+ var require_buffer_equal_constant_time = __commonJS({
4935
+ "node_modules/buffer-equal-constant-time/index.js"(exports2, module2) {
4936
+ "use strict";
4937
+ var Buffer2 = require("buffer").Buffer;
4938
+ var SlowBuffer = require("buffer").SlowBuffer;
4939
+ module2.exports = bufferEq;
4940
+ function bufferEq(a, b) {
4941
+ if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) {
4942
+ return false;
4943
+ }
4944
+ if (a.length !== b.length) {
4945
+ return false;
4946
+ }
4947
+ var c = 0;
4948
+ for (var i = 0; i < a.length; i++) {
4949
+ c |= a[i] ^ b[i];
4950
+ }
4951
+ return c === 0;
4952
+ }
4953
+ bufferEq.install = function() {
4954
+ Buffer2.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {
4955
+ return bufferEq(this, that);
4956
+ };
4957
+ };
4958
+ var origBufEqual = Buffer2.prototype.equal;
4959
+ var origSlowBufEqual = SlowBuffer.prototype.equal;
4960
+ bufferEq.restore = function() {
4961
+ Buffer2.prototype.equal = origBufEqual;
4962
+ SlowBuffer.prototype.equal = origSlowBufEqual;
4963
+ };
4964
+ }
4965
+ });
4966
+
4967
4967
  // node_modules/jwa/index.js
4968
4968
  var require_jwa = __commonJS({
4969
4969
  "node_modules/jwa/index.js"(exports2, module2) {
4970
4970
  "use strict";
4971
- var bufferEqual = require_buffer_equal_constant_time();
4972
4971
  var Buffer2 = require_safe_buffer().Buffer;
4973
4972
  var crypto = require("crypto");
4974
4973
  var formatEcdsa = require_ecdsa_sig_formatter();
@@ -5072,10 +5071,22 @@ var require_jwa = __commonJS({
5072
5071
  return fromBase64(sig);
5073
5072
  };
5074
5073
  }
5074
+ var bufferEqual;
5075
+ var timingSafeEqual = "timingSafeEqual" in crypto ? function timingSafeEqual2(a, b) {
5076
+ if (a.byteLength !== b.byteLength) {
5077
+ return false;
5078
+ }
5079
+ return crypto.timingSafeEqual(a, b);
5080
+ } : function timingSafeEqual2(a, b) {
5081
+ if (!bufferEqual) {
5082
+ bufferEqual = require_buffer_equal_constant_time();
5083
+ }
5084
+ return bufferEqual(a, b);
5085
+ };
5075
5086
  function createHmacVerifier(bits) {
5076
5087
  return function verify(thing, signature, secret) {
5077
5088
  var computedSig = createHmacSigner(bits)(thing, secret);
5078
- return bufferEqual(Buffer2.from(signature), Buffer2.from(computedSig));
5089
+ return timingSafeEqual(Buffer2.from(signature), Buffer2.from(computedSig));
5079
5090
  };
5080
5091
  }
5081
5092
  function createKeySigner(bits) {
@@ -5688,6 +5699,7 @@ var require_re = __commonJS({
5688
5699
  var re = exports2.re = [];
5689
5700
  var safeRe = exports2.safeRe = [];
5690
5701
  var src = exports2.src = [];
5702
+ var safeSrc = exports2.safeSrc = [];
5691
5703
  var t = exports2.t = {};
5692
5704
  var R = 0;
5693
5705
  var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
@@ -5708,6 +5720,7 @@ var require_re = __commonJS({
5708
5720
  debug(name, index, value);
5709
5721
  t[name] = index;
5710
5722
  src[index] = value;
5723
+ safeSrc[index] = safe;
5711
5724
  re[index] = new RegExp(value, isGlobal ? "g" : void 0);
5712
5725
  safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
5713
5726
  };
@@ -5716,8 +5729,8 @@ var require_re = __commonJS({
5716
5729
  createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
5717
5730
  createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);
5718
5731
  createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);
5719
- createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`);
5720
- createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`);
5732
+ createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);
5733
+ createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);
5721
5734
  createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
5722
5735
  createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
5723
5736
  createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
@@ -5947,6 +5960,17 @@ var require_semver = __commonJS({
5947
5960
  // preminor will bump the version up to the next minor release, and immediately
5948
5961
  // down to pre-release. premajor and prepatch work the same way.
5949
5962
  inc(release, identifier, identifierBase) {
5963
+ if (release.startsWith("pre")) {
5964
+ if (!identifier && identifierBase === false) {
5965
+ throw new Error("invalid increment argument: identifier is empty");
5966
+ }
5967
+ if (identifier) {
5968
+ const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
5969
+ if (!match || match[1] !== identifier) {
5970
+ throw new Error(`invalid identifier: ${identifier}`);
5971
+ }
5972
+ }
5973
+ }
5950
5974
  switch (release) {
5951
5975
  case "premajor":
5952
5976
  this.prerelease.length = 0;
@@ -5974,6 +5998,12 @@ var require_semver = __commonJS({
5974
5998
  }
5975
5999
  this.inc("pre", identifier, identifierBase);
5976
6000
  break;
6001
+ case "release":
6002
+ if (this.prerelease.length === 0) {
6003
+ throw new Error(`version ${this.raw} is not a prerelease`);
6004
+ }
6005
+ this.prerelease.length = 0;
6006
+ break;
5977
6007
  case "major":
5978
6008
  if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
5979
6009
  this.major++;
@@ -5999,9 +6029,6 @@ var require_semver = __commonJS({
5999
6029
  // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
6000
6030
  case "pre": {
6001
6031
  const base = Number(identifierBase) ? 1 : 0;
6002
- if (!identifier && identifierBase === false) {
6003
- throw new Error("invalid increment argument: identifier is empty");
6004
- }
6005
6032
  if (this.prerelease.length === 0) {
6006
6033
  this.prerelease = [base];
6007
6034
  } else {
@@ -6141,13 +6168,12 @@ var require_diff = __commonJS({
6141
6168
  if (!lowVersion.patch && !lowVersion.minor) {
6142
6169
  return "major";
6143
6170
  }
6144
- if (highVersion.patch) {
6171
+ if (lowVersion.compareMain(highVersion) === 0) {
6172
+ if (lowVersion.minor && !lowVersion.patch) {
6173
+ return "minor";
6174
+ }
6145
6175
  return "patch";
6146
6176
  }
6147
- if (highVersion.minor) {
6148
- return "minor";
6149
- }
6150
- return "major";
6151
6177
  }
6152
6178
  const prefix = highHasPre ? "pre" : "";
6153
6179
  if (v1.major !== v2.major) {
@@ -4766,40 +4766,6 @@ var require_data_stream = __commonJS({
4766
4766
  }
4767
4767
  });
4768
4768
 
4769
- // node_modules/buffer-equal-constant-time/index.js
4770
- var require_buffer_equal_constant_time = __commonJS({
4771
- "node_modules/buffer-equal-constant-time/index.js"(exports2, module2) {
4772
- "use strict";
4773
- var Buffer2 = require("buffer").Buffer;
4774
- var SlowBuffer = require("buffer").SlowBuffer;
4775
- module2.exports = bufferEq;
4776
- function bufferEq(a, b) {
4777
- if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) {
4778
- return false;
4779
- }
4780
- if (a.length !== b.length) {
4781
- return false;
4782
- }
4783
- var c = 0;
4784
- for (var i = 0; i < a.length; i++) {
4785
- c |= a[i] ^ b[i];
4786
- }
4787
- return c === 0;
4788
- }
4789
- bufferEq.install = function() {
4790
- Buffer2.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {
4791
- return bufferEq(this, that);
4792
- };
4793
- };
4794
- var origBufEqual = Buffer2.prototype.equal;
4795
- var origSlowBufEqual = SlowBuffer.prototype.equal;
4796
- bufferEq.restore = function() {
4797
- Buffer2.prototype.equal = origBufEqual;
4798
- SlowBuffer.prototype.equal = origSlowBufEqual;
4799
- };
4800
- }
4801
- });
4802
-
4803
4769
  // node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js
4804
4770
  var require_param_bytes_for_alg = __commonJS({
4805
4771
  "node_modules/ecdsa-sig-formatter/src/param-bytes-for-alg.js"(exports2, module2) {
@@ -4964,11 +4930,44 @@ var require_ecdsa_sig_formatter = __commonJS({
4964
4930
  }
4965
4931
  });
4966
4932
 
4933
+ // node_modules/buffer-equal-constant-time/index.js
4934
+ var require_buffer_equal_constant_time = __commonJS({
4935
+ "node_modules/buffer-equal-constant-time/index.js"(exports2, module2) {
4936
+ "use strict";
4937
+ var Buffer2 = require("buffer").Buffer;
4938
+ var SlowBuffer = require("buffer").SlowBuffer;
4939
+ module2.exports = bufferEq;
4940
+ function bufferEq(a, b) {
4941
+ if (!Buffer2.isBuffer(a) || !Buffer2.isBuffer(b)) {
4942
+ return false;
4943
+ }
4944
+ if (a.length !== b.length) {
4945
+ return false;
4946
+ }
4947
+ var c = 0;
4948
+ for (var i = 0; i < a.length; i++) {
4949
+ c |= a[i] ^ b[i];
4950
+ }
4951
+ return c === 0;
4952
+ }
4953
+ bufferEq.install = function() {
4954
+ Buffer2.prototype.equal = SlowBuffer.prototype.equal = function equal(that) {
4955
+ return bufferEq(this, that);
4956
+ };
4957
+ };
4958
+ var origBufEqual = Buffer2.prototype.equal;
4959
+ var origSlowBufEqual = SlowBuffer.prototype.equal;
4960
+ bufferEq.restore = function() {
4961
+ Buffer2.prototype.equal = origBufEqual;
4962
+ SlowBuffer.prototype.equal = origSlowBufEqual;
4963
+ };
4964
+ }
4965
+ });
4966
+
4967
4967
  // node_modules/jwa/index.js
4968
4968
  var require_jwa = __commonJS({
4969
4969
  "node_modules/jwa/index.js"(exports2, module2) {
4970
4970
  "use strict";
4971
- var bufferEqual = require_buffer_equal_constant_time();
4972
4971
  var Buffer2 = require_safe_buffer().Buffer;
4973
4972
  var crypto = require("crypto");
4974
4973
  var formatEcdsa = require_ecdsa_sig_formatter();
@@ -5072,10 +5071,22 @@ var require_jwa = __commonJS({
5072
5071
  return fromBase64(sig);
5073
5072
  };
5074
5073
  }
5074
+ var bufferEqual;
5075
+ var timingSafeEqual = "timingSafeEqual" in crypto ? function timingSafeEqual2(a, b) {
5076
+ if (a.byteLength !== b.byteLength) {
5077
+ return false;
5078
+ }
5079
+ return crypto.timingSafeEqual(a, b);
5080
+ } : function timingSafeEqual2(a, b) {
5081
+ if (!bufferEqual) {
5082
+ bufferEqual = require_buffer_equal_constant_time();
5083
+ }
5084
+ return bufferEqual(a, b);
5085
+ };
5075
5086
  function createHmacVerifier(bits) {
5076
5087
  return function verify(thing, signature, secret) {
5077
5088
  var computedSig = createHmacSigner(bits)(thing, secret);
5078
- return bufferEqual(Buffer2.from(signature), Buffer2.from(computedSig));
5089
+ return timingSafeEqual(Buffer2.from(signature), Buffer2.from(computedSig));
5079
5090
  };
5080
5091
  }
5081
5092
  function createKeySigner(bits) {
@@ -5688,6 +5699,7 @@ var require_re = __commonJS({
5688
5699
  var re = exports2.re = [];
5689
5700
  var safeRe = exports2.safeRe = [];
5690
5701
  var src = exports2.src = [];
5702
+ var safeSrc = exports2.safeSrc = [];
5691
5703
  var t = exports2.t = {};
5692
5704
  var R = 0;
5693
5705
  var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
@@ -5708,6 +5720,7 @@ var require_re = __commonJS({
5708
5720
  debug(name, index, value);
5709
5721
  t[name] = index;
5710
5722
  src[index] = value;
5723
+ safeSrc[index] = safe;
5711
5724
  re[index] = new RegExp(value, isGlobal ? "g" : void 0);
5712
5725
  safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
5713
5726
  };
@@ -5716,8 +5729,8 @@ var require_re = __commonJS({
5716
5729
  createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
5717
5730
  createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);
5718
5731
  createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);
5719
- createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`);
5720
- createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`);
5732
+ createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);
5733
+ createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);
5721
5734
  createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
5722
5735
  createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
5723
5736
  createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
@@ -5947,6 +5960,17 @@ var require_semver = __commonJS({
5947
5960
  // preminor will bump the version up to the next minor release, and immediately
5948
5961
  // down to pre-release. premajor and prepatch work the same way.
5949
5962
  inc(release, identifier, identifierBase) {
5963
+ if (release.startsWith("pre")) {
5964
+ if (!identifier && identifierBase === false) {
5965
+ throw new Error("invalid increment argument: identifier is empty");
5966
+ }
5967
+ if (identifier) {
5968
+ const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
5969
+ if (!match || match[1] !== identifier) {
5970
+ throw new Error(`invalid identifier: ${identifier}`);
5971
+ }
5972
+ }
5973
+ }
5950
5974
  switch (release) {
5951
5975
  case "premajor":
5952
5976
  this.prerelease.length = 0;
@@ -5974,6 +5998,12 @@ var require_semver = __commonJS({
5974
5998
  }
5975
5999
  this.inc("pre", identifier, identifierBase);
5976
6000
  break;
6001
+ case "release":
6002
+ if (this.prerelease.length === 0) {
6003
+ throw new Error(`version ${this.raw} is not a prerelease`);
6004
+ }
6005
+ this.prerelease.length = 0;
6006
+ break;
5977
6007
  case "major":
5978
6008
  if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
5979
6009
  this.major++;
@@ -5999,9 +6029,6 @@ var require_semver = __commonJS({
5999
6029
  // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
6000
6030
  case "pre": {
6001
6031
  const base = Number(identifierBase) ? 1 : 0;
6002
- if (!identifier && identifierBase === false) {
6003
- throw new Error("invalid increment argument: identifier is empty");
6004
- }
6005
6032
  if (this.prerelease.length === 0) {
6006
6033
  this.prerelease = [base];
6007
6034
  } else {
@@ -6141,13 +6168,12 @@ var require_diff = __commonJS({
6141
6168
  if (!lowVersion.patch && !lowVersion.minor) {
6142
6169
  return "major";
6143
6170
  }
6144
- if (highVersion.patch) {
6171
+ if (lowVersion.compareMain(highVersion) === 0) {
6172
+ if (lowVersion.minor && !lowVersion.patch) {
6173
+ return "minor";
6174
+ }
6145
6175
  return "patch";
6146
6176
  }
6147
- if (highVersion.minor) {
6148
- return "minor";
6149
- }
6150
- return "major";
6151
6177
  }
6152
6178
  const prefix = highHasPre ? "pre" : "";
6153
6179
  if (v1.major !== v2.major) {
@@ -86,6 +86,7 @@ var require_re = __commonJS({
86
86
  var re = exports2.re = [];
87
87
  var safeRe = exports2.safeRe = [];
88
88
  var src = exports2.src = [];
89
+ var safeSrc = exports2.safeSrc = [];
89
90
  var t = exports2.t = {};
90
91
  var R = 0;
91
92
  var LETTERDASHNUMBER = "[a-zA-Z0-9-]";
@@ -106,6 +107,7 @@ var require_re = __commonJS({
106
107
  debug(name, index, value);
107
108
  t[name] = index;
108
109
  src[index] = value;
110
+ safeSrc[index] = safe;
109
111
  re[index] = new RegExp(value, isGlobal ? "g" : void 0);
110
112
  safeRe[index] = new RegExp(safe, isGlobal ? "g" : void 0);
111
113
  };
@@ -114,8 +116,8 @@ var require_re = __commonJS({
114
116
  createToken("NONNUMERICIDENTIFIER", `\\d*[a-zA-Z-]${LETTERDASHNUMBER}*`);
115
117
  createToken("MAINVERSION", `(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})\\.(${src[t.NUMERICIDENTIFIER]})`);
116
118
  createToken("MAINVERSIONLOOSE", `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})\\.(${src[t.NUMERICIDENTIFIERLOOSE]})`);
117
- createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NUMERICIDENTIFIER]}|${src[t.NONNUMERICIDENTIFIER]})`);
118
- createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NUMERICIDENTIFIERLOOSE]}|${src[t.NONNUMERICIDENTIFIER]})`);
119
+ createToken("PRERELEASEIDENTIFIER", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIER]})`);
120
+ createToken("PRERELEASEIDENTIFIERLOOSE", `(?:${src[t.NONNUMERICIDENTIFIER]}|${src[t.NUMERICIDENTIFIERLOOSE]})`);
119
121
  createToken("PRERELEASE", `(?:-(${src[t.PRERELEASEIDENTIFIER]}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`);
120
122
  createToken("PRERELEASELOOSE", `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE]}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`);
121
123
  createToken("BUILDIDENTIFIER", `${LETTERDASHNUMBER}+`);
@@ -345,6 +347,17 @@ var require_semver = __commonJS({
345
347
  // preminor will bump the version up to the next minor release, and immediately
346
348
  // down to pre-release. premajor and prepatch work the same way.
347
349
  inc(release, identifier, identifierBase) {
350
+ if (release.startsWith("pre")) {
351
+ if (!identifier && identifierBase === false) {
352
+ throw new Error("invalid increment argument: identifier is empty");
353
+ }
354
+ if (identifier) {
355
+ const match = `-${identifier}`.match(this.options.loose ? re[t.PRERELEASELOOSE] : re[t.PRERELEASE]);
356
+ if (!match || match[1] !== identifier) {
357
+ throw new Error(`invalid identifier: ${identifier}`);
358
+ }
359
+ }
360
+ }
348
361
  switch (release) {
349
362
  case "premajor":
350
363
  this.prerelease.length = 0;
@@ -372,6 +385,12 @@ var require_semver = __commonJS({
372
385
  }
373
386
  this.inc("pre", identifier, identifierBase);
374
387
  break;
388
+ case "release":
389
+ if (this.prerelease.length === 0) {
390
+ throw new Error(`version ${this.raw} is not a prerelease`);
391
+ }
392
+ this.prerelease.length = 0;
393
+ break;
375
394
  case "major":
376
395
  if (this.minor !== 0 || this.patch !== 0 || this.prerelease.length === 0) {
377
396
  this.major++;
@@ -397,9 +416,6 @@ var require_semver = __commonJS({
397
416
  // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction.
398
417
  case "pre": {
399
418
  const base = Number(identifierBase) ? 1 : 0;
400
- if (!identifier && identifierBase === false) {
401
- throw new Error("invalid increment argument: identifier is empty");
402
- }
403
419
  if (this.prerelease.length === 0) {
404
420
  this.prerelease = [base];
405
421
  } else {
@@ -539,13 +555,12 @@ var require_diff = __commonJS({
539
555
  if (!lowVersion.patch && !lowVersion.minor) {
540
556
  return "major";
541
557
  }
542
- if (highVersion.patch) {
558
+ if (lowVersion.compareMain(highVersion) === 0) {
559
+ if (lowVersion.minor && !lowVersion.patch) {
560
+ return "minor";
561
+ }
543
562
  return "patch";
544
563
  }
545
- if (highVersion.minor) {
546
- return "minor";
547
- }
548
- return "major";
549
564
  }
550
565
  const prefix = highHasPre ? "pre" : "";
551
566
  if (v1.major !== v2.major) {