@cloudsnorkel/cdk-github-runners 0.7.5 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/.jsii +361 -97
  2. package/API.md +190 -1
  3. package/lib/lambdas/delete-runner/index.js +80 -4
  4. package/lib/lambdas/setup/index.html +4 -4
  5. package/lib/lambdas/setup/index.js +61 -2
  6. package/lib/lambdas/status/index.js +80 -4
  7. package/lib/lambdas/token-retriever/index.js +80 -4
  8. package/lib/lambdas/update-lambda/index.js +54 -19
  9. package/lib/lambdas/webhook-handler/index.js +7 -0
  10. package/lib/providers/codebuild.d.ts +7 -1
  11. package/lib/providers/codebuild.js +12 -6
  12. package/lib/providers/common.d.ts +13 -3
  13. package/lib/providers/common.js +4 -4
  14. package/lib/providers/docker-images/lambda/linux-arm64/runner.sh +3 -0
  15. package/lib/providers/docker-images/lambda/linux-x64/runner.sh +3 -0
  16. package/lib/providers/ec2.d.ts +8 -3
  17. package/lib/providers/ec2.js +74 -44
  18. package/lib/providers/fargate.d.ts +7 -1
  19. package/lib/providers/fargate.js +16 -8
  20. package/lib/providers/image-builders/ami.d.ts +7 -1
  21. package/lib/providers/image-builders/ami.js +25 -21
  22. package/lib/providers/image-builders/codebuild.js +1 -1
  23. package/lib/providers/image-builders/common.js +1 -1
  24. package/lib/providers/image-builders/container.d.ts +1 -1
  25. package/lib/providers/image-builders/container.js +11 -11
  26. package/lib/providers/image-builders/linux-components.d.ts +1 -1
  27. package/lib/providers/image-builders/linux-components.js +19 -19
  28. package/lib/providers/image-builders/static.js +6 -6
  29. package/lib/providers/image-builders/windows-components.d.ts +1 -1
  30. package/lib/providers/image-builders/windows-components.js +12 -12
  31. package/lib/providers/lambda.d.ts +7 -1
  32. package/lib/providers/lambda.js +5 -3
  33. package/lib/runner.d.ts +27 -1
  34. package/lib/runner.js +83 -6
  35. package/lib/secrets.js +1 -1
  36. package/package.json +7 -7
@@ -6992,6 +6992,11 @@ var require_lib3 = __commonJS({
6992
6992
  const dest = new URL$1(destination).hostname;
6993
6993
  return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest);
6994
6994
  };
6995
+ var isSameProtocol = function isSameProtocol2(destination, original) {
6996
+ const orig = new URL$1(original).protocol;
6997
+ const dest = new URL$1(destination).protocol;
6998
+ return orig === dest;
6999
+ };
6995
7000
  function fetch(url, opts) {
6996
7001
  if (!fetch.Promise) {
6997
7002
  throw new Error("native promise missing, set fetch.Promise to your favorite alternative");
@@ -7007,7 +7012,7 @@ var require_lib3 = __commonJS({
7007
7012
  let error = new AbortError("The user aborted a request.");
7008
7013
  reject(error);
7009
7014
  if (request.body && request.body instanceof Stream.Readable) {
7010
- request.body.destroy(error);
7015
+ destroyStream(request.body, error);
7011
7016
  }
7012
7017
  if (!response2 || !response2.body)
7013
7018
  return;
@@ -7042,8 +7047,29 @@ var require_lib3 = __commonJS({
7042
7047
  }
7043
7048
  req.on("error", function(err) {
7044
7049
  reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, "system", err));
7050
+ if (response2 && response2.body) {
7051
+ destroyStream(response2.body, err);
7052
+ }
7045
7053
  finalize();
7046
7054
  });
7055
+ fixResponseChunkedTransferBadEnding(req, function(err) {
7056
+ if (signal && signal.aborted) {
7057
+ return;
7058
+ }
7059
+ destroyStream(response2.body, err);
7060
+ });
7061
+ if (parseInt(process.version.substring(1)) < 14) {
7062
+ req.on("socket", function(s) {
7063
+ s.addListener("close", function(hadError) {
7064
+ const hasDataListener = s.listenerCount("data") > 0;
7065
+ if (response2 && hasDataListener && !hadError && !(signal && signal.aborted)) {
7066
+ const err = new Error("Premature close");
7067
+ err.code = "ERR_STREAM_PREMATURE_CLOSE";
7068
+ response2.body.emit("error", err);
7069
+ }
7070
+ });
7071
+ });
7072
+ }
7047
7073
  req.on("response", function(res) {
7048
7074
  clearTimeout(reqTimeout);
7049
7075
  const headers = createHeadersLenient(res.headers);
@@ -7094,7 +7120,7 @@ var require_lib3 = __commonJS({
7094
7120
  timeout: request.timeout,
7095
7121
  size: request.size
7096
7122
  };
7097
- if (!isDomainOrSubdomain(request.url, locationURL)) {
7123
+ if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
7098
7124
  for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) {
7099
7125
  requestOpts.headers.delete(name);
7100
7126
  }
@@ -7155,6 +7181,12 @@ var require_lib3 = __commonJS({
7155
7181
  response2 = new Response(body, response_options);
7156
7182
  resolve(response2);
7157
7183
  });
7184
+ raw.on("end", function() {
7185
+ if (!response2) {
7186
+ response2 = new Response(body, response_options);
7187
+ resolve(response2);
7188
+ }
7189
+ });
7158
7190
  return;
7159
7191
  }
7160
7192
  if (codings == "br" && typeof zlib.createBrotliDecompress === "function") {
@@ -7169,6 +7201,33 @@ var require_lib3 = __commonJS({
7169
7201
  writeToStream(req, request);
7170
7202
  });
7171
7203
  }
7204
+ function fixResponseChunkedTransferBadEnding(request, errorCallback) {
7205
+ let socket;
7206
+ request.on("socket", function(s) {
7207
+ socket = s;
7208
+ });
7209
+ request.on("response", function(response2) {
7210
+ const headers = response2.headers;
7211
+ if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) {
7212
+ response2.once("close", function(hadError) {
7213
+ const hasDataListener = socket.listenerCount("data") > 0;
7214
+ if (hasDataListener && !hadError) {
7215
+ const err = new Error("Premature close");
7216
+ err.code = "ERR_STREAM_PREMATURE_CLOSE";
7217
+ errorCallback(err);
7218
+ }
7219
+ });
7220
+ }
7221
+ });
7222
+ }
7223
+ function destroyStream(stream, err) {
7224
+ if (stream.destroy) {
7225
+ stream.destroy(err);
7226
+ } else {
7227
+ stream.emit("error", err);
7228
+ stream.end();
7229
+ }
7230
+ }
7172
7231
  fetch.isRedirect = function(code) {
7173
7232
  return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
7174
7233
  };
@@ -6849,6 +6849,11 @@ var require_lib3 = __commonJS({
6849
6849
  const dest = new URL$1(destination).hostname;
6850
6850
  return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest);
6851
6851
  };
6852
+ var isSameProtocol = function isSameProtocol2(destination, original) {
6853
+ const orig = new URL$1(original).protocol;
6854
+ const dest = new URL$1(destination).protocol;
6855
+ return orig === dest;
6856
+ };
6852
6857
  function fetch(url, opts) {
6853
6858
  if (!fetch.Promise) {
6854
6859
  throw new Error("native promise missing, set fetch.Promise to your favorite alternative");
@@ -6864,7 +6869,7 @@ var require_lib3 = __commonJS({
6864
6869
  let error = new AbortError("The user aborted a request.");
6865
6870
  reject(error);
6866
6871
  if (request.body && request.body instanceof Stream.Readable) {
6867
- request.body.destroy(error);
6872
+ destroyStream(request.body, error);
6868
6873
  }
6869
6874
  if (!response || !response.body)
6870
6875
  return;
@@ -6899,8 +6904,29 @@ var require_lib3 = __commonJS({
6899
6904
  }
6900
6905
  req.on("error", function(err) {
6901
6906
  reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, "system", err));
6907
+ if (response && response.body) {
6908
+ destroyStream(response.body, err);
6909
+ }
6902
6910
  finalize();
6903
6911
  });
6912
+ fixResponseChunkedTransferBadEnding(req, function(err) {
6913
+ if (signal && signal.aborted) {
6914
+ return;
6915
+ }
6916
+ destroyStream(response.body, err);
6917
+ });
6918
+ if (parseInt(process.version.substring(1)) < 14) {
6919
+ req.on("socket", function(s) {
6920
+ s.addListener("close", function(hadError) {
6921
+ const hasDataListener = s.listenerCount("data") > 0;
6922
+ if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
6923
+ const err = new Error("Premature close");
6924
+ err.code = "ERR_STREAM_PREMATURE_CLOSE";
6925
+ response.body.emit("error", err);
6926
+ }
6927
+ });
6928
+ });
6929
+ }
6904
6930
  req.on("response", function(res) {
6905
6931
  clearTimeout(reqTimeout);
6906
6932
  const headers = createHeadersLenient(res.headers);
@@ -6951,7 +6977,7 @@ var require_lib3 = __commonJS({
6951
6977
  timeout: request.timeout,
6952
6978
  size: request.size
6953
6979
  };
6954
- if (!isDomainOrSubdomain(request.url, locationURL)) {
6980
+ if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
6955
6981
  for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) {
6956
6982
  requestOpts.headers.delete(name);
6957
6983
  }
@@ -7012,6 +7038,12 @@ var require_lib3 = __commonJS({
7012
7038
  response = new Response(body, response_options);
7013
7039
  resolve(response);
7014
7040
  });
7041
+ raw.on("end", function() {
7042
+ if (!response) {
7043
+ response = new Response(body, response_options);
7044
+ resolve(response);
7045
+ }
7046
+ });
7015
7047
  return;
7016
7048
  }
7017
7049
  if (codings == "br" && typeof zlib.createBrotliDecompress === "function") {
@@ -7026,6 +7058,33 @@ var require_lib3 = __commonJS({
7026
7058
  writeToStream(req, request);
7027
7059
  });
7028
7060
  }
7061
+ function fixResponseChunkedTransferBadEnding(request, errorCallback) {
7062
+ let socket;
7063
+ request.on("socket", function(s) {
7064
+ socket = s;
7065
+ });
7066
+ request.on("response", function(response) {
7067
+ const headers = response.headers;
7068
+ if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) {
7069
+ response.once("close", function(hadError) {
7070
+ const hasDataListener = socket.listenerCount("data") > 0;
7071
+ if (hasDataListener && !hadError) {
7072
+ const err = new Error("Premature close");
7073
+ err.code = "ERR_STREAM_PREMATURE_CLOSE";
7074
+ errorCallback(err);
7075
+ }
7076
+ });
7077
+ }
7078
+ });
7079
+ }
7080
+ function destroyStream(stream, err) {
7081
+ if (stream.destroy) {
7082
+ stream.destroy(err);
7083
+ } else {
7084
+ stream.emit("error", err);
7085
+ stream.end();
7086
+ }
7087
+ }
7029
7088
  fetch.isRedirect = function(code) {
7030
7089
  return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
7031
7090
  };
@@ -8785,7 +8844,7 @@ var require_dist_node14 = __commonJS({
8785
8844
  var authOauthDevice = require_dist_node13();
8786
8845
  var oauthMethods = require_dist_node12();
8787
8846
  var btoa = _interopDefault(require_btoa_node());
8788
- var VERSION = "2.0.4";
8847
+ var VERSION = "2.1.0";
8789
8848
  async function getAuthentication(state) {
8790
8849
  if ("code" in state.strategyOptions) {
8791
8850
  const {
@@ -8794,6 +8853,7 @@ var require_dist_node14 = __commonJS({
8794
8853
  clientId: state.clientId,
8795
8854
  clientSecret: state.clientSecret,
8796
8855
  clientType: state.clientType,
8856
+ onTokenCreated: state.onTokenCreated,
8797
8857
  ...state.strategyOptions,
8798
8858
  request: state.request
8799
8859
  });
@@ -8807,6 +8867,7 @@ var require_dist_node14 = __commonJS({
8807
8867
  const deviceAuth = authOauthDevice.createOAuthDeviceAuth({
8808
8868
  clientType: state.clientType,
8809
8869
  clientId: state.clientId,
8870
+ onTokenCreated: state.onTokenCreated,
8810
8871
  ...state.strategyOptions,
8811
8872
  request: state.request
8812
8873
  });
@@ -8825,6 +8886,7 @@ var require_dist_node14 = __commonJS({
8825
8886
  clientId: state.clientId,
8826
8887
  clientSecret: state.clientSecret,
8827
8888
  clientType: state.clientType,
8889
+ onTokenCreated: state.onTokenCreated,
8828
8890
  ...state.strategyOptions
8829
8891
  };
8830
8892
  }
@@ -8857,12 +8919,16 @@ var require_dist_node14 = __commonJS({
8857
8919
  }
8858
8920
  }
8859
8921
  if (options.type === "refresh") {
8922
+ var _state$onTokenCreated;
8860
8923
  if (state.clientType === "oauth-app") {
8861
8924
  throw new Error("[@octokit/auth-oauth-user] OAuth Apps do not support expiring tokens");
8862
8925
  }
8863
8926
  if (!currentAuthentication.hasOwnProperty("expiresAt")) {
8864
8927
  throw new Error("[@octokit/auth-oauth-user] Refresh token missing");
8865
8928
  }
8929
+ await ((_state$onTokenCreated = state.onTokenCreated) === null || _state$onTokenCreated === void 0 ? void 0 : _state$onTokenCreated.call(state, state.authentication, {
8930
+ type: options.type
8931
+ }));
8866
8932
  }
8867
8933
  if (options.type === "check" || options.type === "reset") {
8868
8934
  const method = options.type === "check" ? oauthMethods.checkToken : oauthMethods.resetToken;
@@ -8883,6 +8949,12 @@ var require_dist_node14 = __commonJS({
8883
8949
  // @ts-expect-error TBD
8884
8950
  ...authentication
8885
8951
  };
8952
+ if (options.type === "reset") {
8953
+ var _state$onTokenCreated2;
8954
+ await ((_state$onTokenCreated2 = state.onTokenCreated) === null || _state$onTokenCreated2 === void 0 ? void 0 : _state$onTokenCreated2.call(state, state.authentication, {
8955
+ type: options.type
8956
+ }));
8957
+ }
8886
8958
  return state.authentication;
8887
8959
  } catch (error) {
8888
8960
  if (error.status === 404) {
@@ -8947,12 +9019,14 @@ var require_dist_node14 = __commonJS({
8947
9019
  "user-agent": `octokit-auth-oauth-app.js/${VERSION} ${universalUserAgent.getUserAgent()}`
8948
9020
  }
8949
9021
  }),
9022
+ onTokenCreated,
8950
9023
  ...strategyOptions
8951
9024
  }) {
8952
9025
  const state = Object.assign({
8953
9026
  clientType,
8954
9027
  clientId,
8955
9028
  clientSecret,
9029
+ onTokenCreated,
8956
9030
  strategyOptions,
8957
9031
  request: request$1
8958
9032
  });
@@ -13796,7 +13870,9 @@ var require_lodash = __commonJS({
13796
13870
  var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length;
13797
13871
  for (var key in value) {
13798
13872
  if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
13799
- (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
13873
+ (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
13874
+ isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
13875
+ isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
13800
13876
  isIndex(key, length)))) {
13801
13877
  result2.push(key);
13802
13878
  }
@@ -6849,6 +6849,11 @@ var require_lib3 = __commonJS({
6849
6849
  const dest = new URL$1(destination).hostname;
6850
6850
  return orig === dest || orig[orig.length - dest.length - 1] === "." && orig.endsWith(dest);
6851
6851
  };
6852
+ var isSameProtocol = function isSameProtocol2(destination, original) {
6853
+ const orig = new URL$1(original).protocol;
6854
+ const dest = new URL$1(destination).protocol;
6855
+ return orig === dest;
6856
+ };
6852
6857
  function fetch(url, opts) {
6853
6858
  if (!fetch.Promise) {
6854
6859
  throw new Error("native promise missing, set fetch.Promise to your favorite alternative");
@@ -6864,7 +6869,7 @@ var require_lib3 = __commonJS({
6864
6869
  let error = new AbortError("The user aborted a request.");
6865
6870
  reject(error);
6866
6871
  if (request.body && request.body instanceof Stream.Readable) {
6867
- request.body.destroy(error);
6872
+ destroyStream(request.body, error);
6868
6873
  }
6869
6874
  if (!response || !response.body)
6870
6875
  return;
@@ -6899,8 +6904,29 @@ var require_lib3 = __commonJS({
6899
6904
  }
6900
6905
  req.on("error", function(err) {
6901
6906
  reject(new FetchError(`request to ${request.url} failed, reason: ${err.message}`, "system", err));
6907
+ if (response && response.body) {
6908
+ destroyStream(response.body, err);
6909
+ }
6902
6910
  finalize();
6903
6911
  });
6912
+ fixResponseChunkedTransferBadEnding(req, function(err) {
6913
+ if (signal && signal.aborted) {
6914
+ return;
6915
+ }
6916
+ destroyStream(response.body, err);
6917
+ });
6918
+ if (parseInt(process.version.substring(1)) < 14) {
6919
+ req.on("socket", function(s) {
6920
+ s.addListener("close", function(hadError) {
6921
+ const hasDataListener = s.listenerCount("data") > 0;
6922
+ if (response && hasDataListener && !hadError && !(signal && signal.aborted)) {
6923
+ const err = new Error("Premature close");
6924
+ err.code = "ERR_STREAM_PREMATURE_CLOSE";
6925
+ response.body.emit("error", err);
6926
+ }
6927
+ });
6928
+ });
6929
+ }
6904
6930
  req.on("response", function(res) {
6905
6931
  clearTimeout(reqTimeout);
6906
6932
  const headers = createHeadersLenient(res.headers);
@@ -6951,7 +6977,7 @@ var require_lib3 = __commonJS({
6951
6977
  timeout: request.timeout,
6952
6978
  size: request.size
6953
6979
  };
6954
- if (!isDomainOrSubdomain(request.url, locationURL)) {
6980
+ if (!isDomainOrSubdomain(request.url, locationURL) || !isSameProtocol(request.url, locationURL)) {
6955
6981
  for (const name of ["authorization", "www-authenticate", "cookie", "cookie2"]) {
6956
6982
  requestOpts.headers.delete(name);
6957
6983
  }
@@ -7012,6 +7038,12 @@ var require_lib3 = __commonJS({
7012
7038
  response = new Response(body, response_options);
7013
7039
  resolve(response);
7014
7040
  });
7041
+ raw.on("end", function() {
7042
+ if (!response) {
7043
+ response = new Response(body, response_options);
7044
+ resolve(response);
7045
+ }
7046
+ });
7015
7047
  return;
7016
7048
  }
7017
7049
  if (codings == "br" && typeof zlib.createBrotliDecompress === "function") {
@@ -7026,6 +7058,33 @@ var require_lib3 = __commonJS({
7026
7058
  writeToStream(req, request);
7027
7059
  });
7028
7060
  }
7061
+ function fixResponseChunkedTransferBadEnding(request, errorCallback) {
7062
+ let socket;
7063
+ request.on("socket", function(s) {
7064
+ socket = s;
7065
+ });
7066
+ request.on("response", function(response) {
7067
+ const headers = response.headers;
7068
+ if (headers["transfer-encoding"] === "chunked" && !headers["content-length"]) {
7069
+ response.once("close", function(hadError) {
7070
+ const hasDataListener = socket.listenerCount("data") > 0;
7071
+ if (hasDataListener && !hadError) {
7072
+ const err = new Error("Premature close");
7073
+ err.code = "ERR_STREAM_PREMATURE_CLOSE";
7074
+ errorCallback(err);
7075
+ }
7076
+ });
7077
+ }
7078
+ });
7079
+ }
7080
+ function destroyStream(stream, err) {
7081
+ if (stream.destroy) {
7082
+ stream.destroy(err);
7083
+ } else {
7084
+ stream.emit("error", err);
7085
+ stream.end();
7086
+ }
7087
+ }
7029
7088
  fetch.isRedirect = function(code) {
7030
7089
  return code === 301 || code === 302 || code === 303 || code === 307 || code === 308;
7031
7090
  };
@@ -8785,7 +8844,7 @@ var require_dist_node14 = __commonJS({
8785
8844
  var authOauthDevice = require_dist_node13();
8786
8845
  var oauthMethods = require_dist_node12();
8787
8846
  var btoa = _interopDefault(require_btoa_node());
8788
- var VERSION = "2.0.4";
8847
+ var VERSION = "2.1.0";
8789
8848
  async function getAuthentication(state) {
8790
8849
  if ("code" in state.strategyOptions) {
8791
8850
  const {
@@ -8794,6 +8853,7 @@ var require_dist_node14 = __commonJS({
8794
8853
  clientId: state.clientId,
8795
8854
  clientSecret: state.clientSecret,
8796
8855
  clientType: state.clientType,
8856
+ onTokenCreated: state.onTokenCreated,
8797
8857
  ...state.strategyOptions,
8798
8858
  request: state.request
8799
8859
  });
@@ -8807,6 +8867,7 @@ var require_dist_node14 = __commonJS({
8807
8867
  const deviceAuth = authOauthDevice.createOAuthDeviceAuth({
8808
8868
  clientType: state.clientType,
8809
8869
  clientId: state.clientId,
8870
+ onTokenCreated: state.onTokenCreated,
8810
8871
  ...state.strategyOptions,
8811
8872
  request: state.request
8812
8873
  });
@@ -8825,6 +8886,7 @@ var require_dist_node14 = __commonJS({
8825
8886
  clientId: state.clientId,
8826
8887
  clientSecret: state.clientSecret,
8827
8888
  clientType: state.clientType,
8889
+ onTokenCreated: state.onTokenCreated,
8828
8890
  ...state.strategyOptions
8829
8891
  };
8830
8892
  }
@@ -8857,12 +8919,16 @@ var require_dist_node14 = __commonJS({
8857
8919
  }
8858
8920
  }
8859
8921
  if (options.type === "refresh") {
8922
+ var _state$onTokenCreated;
8860
8923
  if (state.clientType === "oauth-app") {
8861
8924
  throw new Error("[@octokit/auth-oauth-user] OAuth Apps do not support expiring tokens");
8862
8925
  }
8863
8926
  if (!currentAuthentication.hasOwnProperty("expiresAt")) {
8864
8927
  throw new Error("[@octokit/auth-oauth-user] Refresh token missing");
8865
8928
  }
8929
+ await ((_state$onTokenCreated = state.onTokenCreated) === null || _state$onTokenCreated === void 0 ? void 0 : _state$onTokenCreated.call(state, state.authentication, {
8930
+ type: options.type
8931
+ }));
8866
8932
  }
8867
8933
  if (options.type === "check" || options.type === "reset") {
8868
8934
  const method = options.type === "check" ? oauthMethods.checkToken : oauthMethods.resetToken;
@@ -8883,6 +8949,12 @@ var require_dist_node14 = __commonJS({
8883
8949
  // @ts-expect-error TBD
8884
8950
  ...authentication
8885
8951
  };
8952
+ if (options.type === "reset") {
8953
+ var _state$onTokenCreated2;
8954
+ await ((_state$onTokenCreated2 = state.onTokenCreated) === null || _state$onTokenCreated2 === void 0 ? void 0 : _state$onTokenCreated2.call(state, state.authentication, {
8955
+ type: options.type
8956
+ }));
8957
+ }
8886
8958
  return state.authentication;
8887
8959
  } catch (error) {
8888
8960
  if (error.status === 404) {
@@ -8947,12 +9019,14 @@ var require_dist_node14 = __commonJS({
8947
9019
  "user-agent": `octokit-auth-oauth-app.js/${VERSION} ${universalUserAgent.getUserAgent()}`
8948
9020
  }
8949
9021
  }),
9022
+ onTokenCreated,
8950
9023
  ...strategyOptions
8951
9024
  }) {
8952
9025
  const state = Object.assign({
8953
9026
  clientType,
8954
9027
  clientId,
8955
9028
  clientSecret,
9029
+ onTokenCreated,
8956
9030
  strategyOptions,
8957
9031
  request: request$1
8958
9032
  });
@@ -13796,7 +13870,9 @@ var require_lodash = __commonJS({
13796
13870
  var isArr = isArray(value), isArg = !isArr && isArguments(value), isBuff = !isArr && !isArg && isBuffer(value), isType = !isArr && !isArg && !isBuff && isTypedArray(value), skipIndexes = isArr || isArg || isBuff || isType, result2 = skipIndexes ? baseTimes(value.length, String2) : [], length = result2.length;
13797
13871
  for (var key in value) {
13798
13872
  if ((inherited || hasOwnProperty.call(value, key)) && !(skipIndexes && // Safari 9 has enumerable `arguments.length` in strict mode.
13799
- (key == "length" || isBuff && (key == "offset" || key == "parent") || isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
13873
+ (key == "length" || // Node.js 0.10 has enumerable non-index properties on buffers.
13874
+ isBuff && (key == "offset" || key == "parent") || // PhantomJS 2 has enumerable non-index properties on typed arrays.
13875
+ isType && (key == "buffer" || key == "byteLength" || key == "byteOffset") || // Skip index properties.
13800
13876
  isIndex(key, length)))) {
13801
13877
  result2.push(key);
13802
13878
  }