Compare commits
7 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 46e4a501e1 | |||
| 2e5cc74af2 | |||
| 474769db88 | |||
| e995b4e40a | |||
| 0f3b4d7df9 | |||
| 9769eb4076 | |||
| bb368d6a10 |
@@ -1,5 +1,6 @@
|
||||
name: release
|
||||
"on":
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
- main
|
||||
@@ -18,10 +19,12 @@ jobs:
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
persist-credentials: false
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
node-version-file: .node-version
|
||||
cache: 'npm'
|
||||
|
||||
- run: npm ci
|
||||
- run: npm run build
|
||||
- uses: ./
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
name: test
|
||||
|
||||
on:
|
||||
push:
|
||||
branches:
|
||||
@@ -15,10 +16,12 @@ jobs:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- uses: actions/checkout@v4
|
||||
|
||||
- uses: actions/setup-node@v4
|
||||
with:
|
||||
node-version: 20
|
||||
cache: "npm"
|
||||
node-version-file: .node-version
|
||||
cache: 'npm'
|
||||
|
||||
- run: npm ci
|
||||
- run: npm test
|
||||
|
||||
|
||||
@@ -0,0 +1 @@
|
||||
20.9.0
|
||||
@@ -1,5 +1,7 @@
|
||||
# Create GitHub App Token
|
||||
|
||||
[](https://github.com/actions/create-github-app-token/actions/workflows/test.yml)
|
||||
|
||||
GitHub Action for creating a GitHub App installation access token.
|
||||
|
||||
## Usage
|
||||
@@ -46,7 +48,7 @@ jobs:
|
||||
# required
|
||||
app-id: ${{ vars.APP_ID }}
|
||||
private-key: ${{ secrets.PRIVATE_KEY }}
|
||||
- uses: actions/checkout@v3
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
token: ${{ steps.app-token.outputs.token }}
|
||||
ref: ${{ github.head_ref }}
|
||||
|
||||
@@ -0,0 +1,25 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="106"
|
||||
height="20" role="img" aria-label="Coverage: 100%">
|
||||
<title>Coverage: 100%</title>
|
||||
<linearGradient id="s" x2="0" y2="100%">
|
||||
<stop offset="0" stop-color="#bbb" stop-opacity=".1" />
|
||||
<stop offset="1" stop-opacity=".1" />
|
||||
</linearGradient>
|
||||
<clipPath id="r">
|
||||
<rect width="106" height="20" rx="3" fill="#fff" />
|
||||
</clipPath>
|
||||
<g clip-path="url(#r)">
|
||||
<rect width="63" height="20" fill="#555" />
|
||||
<rect x="63" width="43" height="20" fill="#4c1" />
|
||||
<rect width="106" height="20" fill="url(#s)" />
|
||||
</g>
|
||||
<g fill="#fff" text-anchor="middle" font-family="Verdana,Geneva,DejaVu Sans,sans-serif"
|
||||
text-rendering="geometricPrecision" font-size="110">
|
||||
<text aria-hidden="true" x="325" y="150" fill="#010101" fill-opacity=".3"
|
||||
transform="scale(.1)" textLength="530">Coverage</text>
|
||||
<text x="325" y="140" transform="scale(.1)" fill="#fff" textLength="530">Coverage</text>
|
||||
<text aria-hidden="true" x="835" y="150" fill="#010101" fill-opacity=".3"
|
||||
transform="scale(.1)" textLength="330">100%</text>
|
||||
<text x="835" y="140" transform="scale(.1)" fill="#fff" textLength="330">100%</text>
|
||||
</g>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 1.3 KiB |
Vendored
+412
-50
@@ -2811,8 +2811,18 @@ var require_dist_node5 = __commonJS({
|
||||
module2.exports = __toCommonJS2(dist_src_exports);
|
||||
var import_endpoint = require_dist_node2();
|
||||
var import_universal_user_agent = require_dist_node();
|
||||
var VERSION = "8.1.4";
|
||||
var import_is_plain_object = require_is_plain_object();
|
||||
var VERSION = "8.1.6";
|
||||
function isPlainObject(value) {
|
||||
if (typeof value !== "object" || value === null)
|
||||
return false;
|
||||
if (Object.prototype.toString.call(value) !== "[object Object]")
|
||||
return false;
|
||||
const proto = Object.getPrototypeOf(value);
|
||||
if (proto === null)
|
||||
return true;
|
||||
const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
|
||||
return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
|
||||
}
|
||||
var import_request_error = require_dist_node4();
|
||||
function getBufferResponse(response) {
|
||||
return response.arrayBuffer();
|
||||
@@ -2821,7 +2831,7 @@ var require_dist_node5 = __commonJS({
|
||||
var _a, _b, _c;
|
||||
const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
|
||||
const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;
|
||||
if ((0, import_is_plain_object.isPlainObject)(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||||
if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||||
requestOptions.body = JSON.stringify(requestOptions.body);
|
||||
}
|
||||
let headers = {};
|
||||
@@ -2927,7 +2937,7 @@ var require_dist_node5 = __commonJS({
|
||||
async function getResponseData(response) {
|
||||
const contentType = response.headers.get("content-type");
|
||||
if (/application\/json/.test(contentType)) {
|
||||
return response.json();
|
||||
return response.json().catch(() => response.text()).catch(() => "");
|
||||
}
|
||||
if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
|
||||
return response.text();
|
||||
@@ -7664,7 +7674,7 @@ var require_lodash = __commonJS({
|
||||
}
|
||||
var objectProto = Object.prototype;
|
||||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||||
var objectToString = objectProto.toString;
|
||||
var objectToString2 = objectProto.toString;
|
||||
var propertyIsEnumerable = objectProto.propertyIsEnumerable;
|
||||
var nativeKeys = overArg(Object.keys, Object);
|
||||
var nativeMax = Math.max;
|
||||
@@ -7708,7 +7718,7 @@ var require_lodash = __commonJS({
|
||||
return isString(collection) ? fromIndex <= length && collection.indexOf(value, fromIndex) > -1 : !!length && baseIndexOf(collection, value, fromIndex) > -1;
|
||||
}
|
||||
function isArguments(value) {
|
||||
return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString.call(value) == argsTag);
|
||||
return isArrayLikeObject(value) && hasOwnProperty.call(value, "callee") && (!propertyIsEnumerable.call(value, "callee") || objectToString2.call(value) == argsTag);
|
||||
}
|
||||
var isArray = Array.isArray;
|
||||
function isArrayLike(value) {
|
||||
@@ -7718,7 +7728,7 @@ var require_lodash = __commonJS({
|
||||
return isObjectLike(value) && isArrayLike(value);
|
||||
}
|
||||
function isFunction(value) {
|
||||
var tag = isObject(value) ? objectToString.call(value) : "";
|
||||
var tag = isObject(value) ? objectToString2.call(value) : "";
|
||||
return tag == funcTag || tag == genTag;
|
||||
}
|
||||
function isLength(value) {
|
||||
@@ -7732,10 +7742,10 @@ var require_lodash = __commonJS({
|
||||
return !!value && typeof value == "object";
|
||||
}
|
||||
function isString(value) {
|
||||
return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;
|
||||
return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString2.call(value) == stringTag;
|
||||
}
|
||||
function isSymbol(value) {
|
||||
return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
|
||||
return typeof value == "symbol" || isObjectLike(value) && objectToString2.call(value) == symbolTag;
|
||||
}
|
||||
function toFinite(value) {
|
||||
if (!value) {
|
||||
@@ -7785,9 +7795,9 @@ var require_lodash2 = __commonJS({
|
||||
"node_modules/lodash.isboolean/index.js"(exports, module2) {
|
||||
var boolTag = "[object Boolean]";
|
||||
var objectProto = Object.prototype;
|
||||
var objectToString = objectProto.toString;
|
||||
var objectToString2 = objectProto.toString;
|
||||
function isBoolean(value) {
|
||||
return value === true || value === false || isObjectLike(value) && objectToString.call(value) == boolTag;
|
||||
return value === true || value === false || isObjectLike(value) && objectToString2.call(value) == boolTag;
|
||||
}
|
||||
function isObjectLike(value) {
|
||||
return !!value && typeof value == "object";
|
||||
@@ -7809,7 +7819,7 @@ var require_lodash3 = __commonJS({
|
||||
var reIsOctal = /^0o[0-7]+$/i;
|
||||
var freeParseInt = parseInt;
|
||||
var objectProto = Object.prototype;
|
||||
var objectToString = objectProto.toString;
|
||||
var objectToString2 = objectProto.toString;
|
||||
function isInteger(value) {
|
||||
return typeof value == "number" && value == toInteger(value);
|
||||
}
|
||||
@@ -7821,7 +7831,7 @@ var require_lodash3 = __commonJS({
|
||||
return !!value && typeof value == "object";
|
||||
}
|
||||
function isSymbol(value) {
|
||||
return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
|
||||
return typeof value == "symbol" || isObjectLike(value) && objectToString2.call(value) == symbolTag;
|
||||
}
|
||||
function toFinite(value) {
|
||||
if (!value) {
|
||||
@@ -7865,12 +7875,12 @@ var require_lodash4 = __commonJS({
|
||||
"node_modules/lodash.isnumber/index.js"(exports, module2) {
|
||||
var numberTag = "[object Number]";
|
||||
var objectProto = Object.prototype;
|
||||
var objectToString = objectProto.toString;
|
||||
var objectToString2 = objectProto.toString;
|
||||
function isObjectLike(value) {
|
||||
return !!value && typeof value == "object";
|
||||
}
|
||||
function isNumber(value) {
|
||||
return typeof value == "number" || isObjectLike(value) && objectToString.call(value) == numberTag;
|
||||
return typeof value == "number" || isObjectLike(value) && objectToString2.call(value) == numberTag;
|
||||
}
|
||||
module2.exports = isNumber;
|
||||
}
|
||||
@@ -7900,13 +7910,13 @@ var require_lodash5 = __commonJS({
|
||||
var funcToString = funcProto.toString;
|
||||
var hasOwnProperty = objectProto.hasOwnProperty;
|
||||
var objectCtorString = funcToString.call(Object);
|
||||
var objectToString = objectProto.toString;
|
||||
var objectToString2 = objectProto.toString;
|
||||
var getPrototype = overArg(Object.getPrototypeOf, Object);
|
||||
function isObjectLike(value) {
|
||||
return !!value && typeof value == "object";
|
||||
}
|
||||
function isPlainObject(value) {
|
||||
if (!isObjectLike(value) || objectToString.call(value) != objectTag || isHostObject(value)) {
|
||||
if (!isObjectLike(value) || objectToString2.call(value) != objectTag || isHostObject(value)) {
|
||||
return false;
|
||||
}
|
||||
var proto = getPrototype(value);
|
||||
@@ -7925,13 +7935,13 @@ var require_lodash6 = __commonJS({
|
||||
"node_modules/lodash.isstring/index.js"(exports, module2) {
|
||||
var stringTag = "[object String]";
|
||||
var objectProto = Object.prototype;
|
||||
var objectToString = objectProto.toString;
|
||||
var objectToString2 = objectProto.toString;
|
||||
var isArray = Array.isArray;
|
||||
function isObjectLike(value) {
|
||||
return !!value && typeof value == "object";
|
||||
}
|
||||
function isString(value) {
|
||||
return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString.call(value) == stringTag;
|
||||
return typeof value == "string" || !isArray(value) && isObjectLike(value) && objectToString2.call(value) == stringTag;
|
||||
}
|
||||
module2.exports = isString;
|
||||
}
|
||||
@@ -7951,7 +7961,7 @@ var require_lodash7 = __commonJS({
|
||||
var reIsOctal = /^0o[0-7]+$/i;
|
||||
var freeParseInt = parseInt;
|
||||
var objectProto = Object.prototype;
|
||||
var objectToString = objectProto.toString;
|
||||
var objectToString2 = objectProto.toString;
|
||||
function before(n, func) {
|
||||
var result;
|
||||
if (typeof func != "function") {
|
||||
@@ -7979,7 +7989,7 @@ var require_lodash7 = __commonJS({
|
||||
return !!value && typeof value == "object";
|
||||
}
|
||||
function isSymbol(value) {
|
||||
return typeof value == "symbol" || isObjectLike(value) && objectToString.call(value) == symbolTag;
|
||||
return typeof value == "symbol" || isObjectLike(value) && objectToString2.call(value) == symbolTag;
|
||||
}
|
||||
function toFinite(value) {
|
||||
if (!value) {
|
||||
@@ -10009,10 +10019,340 @@ var require_dist_node12 = __commonJS({
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/retry/lib/retry_operation.js
|
||||
var require_retry_operation = __commonJS({
|
||||
"node_modules/retry/lib/retry_operation.js"(exports, module2) {
|
||||
function RetryOperation(timeouts, options) {
|
||||
if (typeof options === "boolean") {
|
||||
options = { forever: options };
|
||||
}
|
||||
this._originalTimeouts = JSON.parse(JSON.stringify(timeouts));
|
||||
this._timeouts = timeouts;
|
||||
this._options = options || {};
|
||||
this._maxRetryTime = options && options.maxRetryTime || Infinity;
|
||||
this._fn = null;
|
||||
this._errors = [];
|
||||
this._attempts = 1;
|
||||
this._operationTimeout = null;
|
||||
this._operationTimeoutCb = null;
|
||||
this._timeout = null;
|
||||
this._operationStart = null;
|
||||
this._timer = null;
|
||||
if (this._options.forever) {
|
||||
this._cachedTimeouts = this._timeouts.slice(0);
|
||||
}
|
||||
}
|
||||
module2.exports = RetryOperation;
|
||||
RetryOperation.prototype.reset = function() {
|
||||
this._attempts = 1;
|
||||
this._timeouts = this._originalTimeouts.slice(0);
|
||||
};
|
||||
RetryOperation.prototype.stop = function() {
|
||||
if (this._timeout) {
|
||||
clearTimeout(this._timeout);
|
||||
}
|
||||
if (this._timer) {
|
||||
clearTimeout(this._timer);
|
||||
}
|
||||
this._timeouts = [];
|
||||
this._cachedTimeouts = null;
|
||||
};
|
||||
RetryOperation.prototype.retry = function(err) {
|
||||
if (this._timeout) {
|
||||
clearTimeout(this._timeout);
|
||||
}
|
||||
if (!err) {
|
||||
return false;
|
||||
}
|
||||
var currentTime = (/* @__PURE__ */ new Date()).getTime();
|
||||
if (err && currentTime - this._operationStart >= this._maxRetryTime) {
|
||||
this._errors.push(err);
|
||||
this._errors.unshift(new Error("RetryOperation timeout occurred"));
|
||||
return false;
|
||||
}
|
||||
this._errors.push(err);
|
||||
var timeout = this._timeouts.shift();
|
||||
if (timeout === void 0) {
|
||||
if (this._cachedTimeouts) {
|
||||
this._errors.splice(0, this._errors.length - 1);
|
||||
timeout = this._cachedTimeouts.slice(-1);
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
var self = this;
|
||||
this._timer = setTimeout(function() {
|
||||
self._attempts++;
|
||||
if (self._operationTimeoutCb) {
|
||||
self._timeout = setTimeout(function() {
|
||||
self._operationTimeoutCb(self._attempts);
|
||||
}, self._operationTimeout);
|
||||
if (self._options.unref) {
|
||||
self._timeout.unref();
|
||||
}
|
||||
}
|
||||
self._fn(self._attempts);
|
||||
}, timeout);
|
||||
if (this._options.unref) {
|
||||
this._timer.unref();
|
||||
}
|
||||
return true;
|
||||
};
|
||||
RetryOperation.prototype.attempt = function(fn, timeoutOps) {
|
||||
this._fn = fn;
|
||||
if (timeoutOps) {
|
||||
if (timeoutOps.timeout) {
|
||||
this._operationTimeout = timeoutOps.timeout;
|
||||
}
|
||||
if (timeoutOps.cb) {
|
||||
this._operationTimeoutCb = timeoutOps.cb;
|
||||
}
|
||||
}
|
||||
var self = this;
|
||||
if (this._operationTimeoutCb) {
|
||||
this._timeout = setTimeout(function() {
|
||||
self._operationTimeoutCb();
|
||||
}, self._operationTimeout);
|
||||
}
|
||||
this._operationStart = (/* @__PURE__ */ new Date()).getTime();
|
||||
this._fn(this._attempts);
|
||||
};
|
||||
RetryOperation.prototype.try = function(fn) {
|
||||
console.log("Using RetryOperation.try() is deprecated");
|
||||
this.attempt(fn);
|
||||
};
|
||||
RetryOperation.prototype.start = function(fn) {
|
||||
console.log("Using RetryOperation.start() is deprecated");
|
||||
this.attempt(fn);
|
||||
};
|
||||
RetryOperation.prototype.start = RetryOperation.prototype.try;
|
||||
RetryOperation.prototype.errors = function() {
|
||||
return this._errors;
|
||||
};
|
||||
RetryOperation.prototype.attempts = function() {
|
||||
return this._attempts;
|
||||
};
|
||||
RetryOperation.prototype.mainError = function() {
|
||||
if (this._errors.length === 0) {
|
||||
return null;
|
||||
}
|
||||
var counts = {};
|
||||
var mainError = null;
|
||||
var mainErrorCount = 0;
|
||||
for (var i = 0; i < this._errors.length; i++) {
|
||||
var error = this._errors[i];
|
||||
var message = error.message;
|
||||
var count = (counts[message] || 0) + 1;
|
||||
counts[message] = count;
|
||||
if (count >= mainErrorCount) {
|
||||
mainError = error;
|
||||
mainErrorCount = count;
|
||||
}
|
||||
}
|
||||
return mainError;
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/retry/lib/retry.js
|
||||
var require_retry = __commonJS({
|
||||
"node_modules/retry/lib/retry.js"(exports) {
|
||||
var RetryOperation = require_retry_operation();
|
||||
exports.operation = function(options) {
|
||||
var timeouts = exports.timeouts(options);
|
||||
return new RetryOperation(timeouts, {
|
||||
forever: options && (options.forever || options.retries === Infinity),
|
||||
unref: options && options.unref,
|
||||
maxRetryTime: options && options.maxRetryTime
|
||||
});
|
||||
};
|
||||
exports.timeouts = function(options) {
|
||||
if (options instanceof Array) {
|
||||
return [].concat(options);
|
||||
}
|
||||
var opts = {
|
||||
retries: 10,
|
||||
factor: 2,
|
||||
minTimeout: 1 * 1e3,
|
||||
maxTimeout: Infinity,
|
||||
randomize: false
|
||||
};
|
||||
for (var key in options) {
|
||||
opts[key] = options[key];
|
||||
}
|
||||
if (opts.minTimeout > opts.maxTimeout) {
|
||||
throw new Error("minTimeout is greater than maxTimeout");
|
||||
}
|
||||
var timeouts = [];
|
||||
for (var i = 0; i < opts.retries; i++) {
|
||||
timeouts.push(this.createTimeout(i, opts));
|
||||
}
|
||||
if (options && options.forever && !timeouts.length) {
|
||||
timeouts.push(this.createTimeout(i, opts));
|
||||
}
|
||||
timeouts.sort(function(a, b) {
|
||||
return a - b;
|
||||
});
|
||||
return timeouts;
|
||||
};
|
||||
exports.createTimeout = function(attempt, opts) {
|
||||
var random = opts.randomize ? Math.random() + 1 : 1;
|
||||
var timeout = Math.round(random * Math.max(opts.minTimeout, 1) * Math.pow(opts.factor, attempt));
|
||||
timeout = Math.min(timeout, opts.maxTimeout);
|
||||
return timeout;
|
||||
};
|
||||
exports.wrap = function(obj, options, methods) {
|
||||
if (options instanceof Array) {
|
||||
methods = options;
|
||||
options = null;
|
||||
}
|
||||
if (!methods) {
|
||||
methods = [];
|
||||
for (var key in obj) {
|
||||
if (typeof obj[key] === "function") {
|
||||
methods.push(key);
|
||||
}
|
||||
}
|
||||
}
|
||||
for (var i = 0; i < methods.length; i++) {
|
||||
var method = methods[i];
|
||||
var original = obj[method];
|
||||
obj[method] = function retryWrapper(original2) {
|
||||
var op = exports.operation(options);
|
||||
var args = Array.prototype.slice.call(arguments, 1);
|
||||
var callback = args.pop();
|
||||
args.push(function(err) {
|
||||
if (op.retry(err)) {
|
||||
return;
|
||||
}
|
||||
if (err) {
|
||||
arguments[0] = op.mainError();
|
||||
}
|
||||
callback.apply(this, arguments);
|
||||
});
|
||||
op.attempt(function() {
|
||||
original2.apply(obj, args);
|
||||
});
|
||||
}.bind(obj, original);
|
||||
obj[method].options = options;
|
||||
}
|
||||
};
|
||||
}
|
||||
});
|
||||
|
||||
// node_modules/retry/index.js
|
||||
var require_retry2 = __commonJS({
|
||||
"node_modules/retry/index.js"(exports, module2) {
|
||||
module2.exports = require_retry();
|
||||
}
|
||||
});
|
||||
|
||||
// main.js
|
||||
var import_core = __toESM(require_core(), 1);
|
||||
var import_auth_app = __toESM(require_dist_node12(), 1);
|
||||
|
||||
// node_modules/p-retry/index.js
|
||||
var import_retry = __toESM(require_retry2(), 1);
|
||||
|
||||
// node_modules/is-network-error/index.js
|
||||
var objectToString = Object.prototype.toString;
|
||||
var isError = (value) => objectToString.call(value) === "[object Error]";
|
||||
var errorMessages = /* @__PURE__ */ new Set([
|
||||
"Failed to fetch",
|
||||
// Chrome
|
||||
"NetworkError when attempting to fetch resource.",
|
||||
// Firefox
|
||||
"The Internet connection appears to be offline.",
|
||||
// Safari 16
|
||||
"Load failed",
|
||||
// Safari 17+
|
||||
"Network request failed",
|
||||
// `cross-fetch`
|
||||
"fetch failed"
|
||||
// Undici (Node.js)
|
||||
]);
|
||||
function isNetworkError(error) {
|
||||
const isValid = error && isError(error) && error.name === "TypeError" && typeof error.message === "string";
|
||||
if (!isValid) {
|
||||
return false;
|
||||
}
|
||||
if (error.message === "Load failed") {
|
||||
return error.stack === void 0;
|
||||
}
|
||||
return errorMessages.has(error.message);
|
||||
}
|
||||
|
||||
// node_modules/p-retry/index.js
|
||||
var AbortError = class extends Error {
|
||||
constructor(message) {
|
||||
super();
|
||||
if (message instanceof Error) {
|
||||
this.originalError = message;
|
||||
({ message } = message);
|
||||
} else {
|
||||
this.originalError = new Error(message);
|
||||
this.originalError.stack = this.stack;
|
||||
}
|
||||
this.name = "AbortError";
|
||||
this.message = message;
|
||||
}
|
||||
};
|
||||
var decorateErrorWithCounts = (error, attemptNumber, options) => {
|
||||
const retriesLeft = options.retries - (attemptNumber - 1);
|
||||
error.attemptNumber = attemptNumber;
|
||||
error.retriesLeft = retriesLeft;
|
||||
return error;
|
||||
};
|
||||
async function pRetry(input, options) {
|
||||
return new Promise((resolve, reject) => {
|
||||
options = {
|
||||
onFailedAttempt() {
|
||||
},
|
||||
retries: 10,
|
||||
...options
|
||||
};
|
||||
const operation = import_retry.default.operation(options);
|
||||
const abortHandler = () => {
|
||||
operation.stop();
|
||||
reject(options.signal?.reason);
|
||||
};
|
||||
if (options.signal && !options.signal.aborted) {
|
||||
options.signal.addEventListener("abort", abortHandler, { once: true });
|
||||
}
|
||||
const cleanUp = () => {
|
||||
options.signal?.removeEventListener("abort", abortHandler);
|
||||
operation.stop();
|
||||
};
|
||||
operation.attempt(async (attemptNumber) => {
|
||||
try {
|
||||
const result = await input(attemptNumber);
|
||||
cleanUp();
|
||||
resolve(result);
|
||||
} catch (error) {
|
||||
try {
|
||||
if (!(error instanceof Error)) {
|
||||
throw new TypeError(`Non-error was thrown: "${error}". You should only throw errors.`);
|
||||
}
|
||||
if (error instanceof AbortError) {
|
||||
throw error.originalError;
|
||||
}
|
||||
if (error instanceof TypeError && !isNetworkError(error)) {
|
||||
throw error;
|
||||
}
|
||||
await options.onFailedAttempt(decorateErrorWithCounts(error, attemptNumber, options));
|
||||
if (!operation.retry(error)) {
|
||||
throw operation.mainError();
|
||||
}
|
||||
} catch (finalError) {
|
||||
decorateErrorWithCounts(finalError, attemptNumber, options);
|
||||
cleanUp();
|
||||
reject(finalError);
|
||||
}
|
||||
}
|
||||
});
|
||||
});
|
||||
}
|
||||
|
||||
// lib/main.js
|
||||
async function main(appId2, privateKey2, owner2, repositories2, core2, createAppAuth2, request2, skipTokenRevoke2) {
|
||||
let parsedOwner = "";
|
||||
@@ -10055,37 +10395,22 @@ async function main(appId2, privateKey2, owner2, repositories2, core2, createApp
|
||||
});
|
||||
let authentication;
|
||||
if (parsedRepositoryNames) {
|
||||
const response = await request2("GET /repos/{owner}/{repo}/installation", {
|
||||
owner: parsedOwner,
|
||||
repo: parsedRepositoryNames.split(",")[0],
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`
|
||||
}
|
||||
});
|
||||
authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id,
|
||||
repositoryNames: parsedRepositoryNames.split(",")
|
||||
authentication = await pRetry(() => getTokenFromRepository(request2, auth, parsedOwner, appAuthentication, parsedRepositoryNames), {
|
||||
onFailedAttempt: (error) => {
|
||||
core2.info(
|
||||
`Failed to create token for "${parsedRepositoryNames}" (attempt ${error.attemptNumber}): ${error.message}`
|
||||
);
|
||||
},
|
||||
retries: 3
|
||||
});
|
||||
} else {
|
||||
const response = await request2("GET /orgs/{org}/installation", {
|
||||
org: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`
|
||||
}
|
||||
}).catch((error) => {
|
||||
if (error.status !== 404)
|
||||
throw error;
|
||||
return request2("GET /users/{username}/installation", {
|
||||
username: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`
|
||||
}
|
||||
});
|
||||
});
|
||||
authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id
|
||||
authentication = await pRetry(() => getTokenFromOwner(request2, auth, appAuthentication, parsedOwner), {
|
||||
onFailedAttempt: (error) => {
|
||||
core2.info(
|
||||
`Failed to create token for "${parsedOwner}" (attempt ${error.attemptNumber}): ${error.message}`
|
||||
);
|
||||
},
|
||||
retries: 3
|
||||
});
|
||||
}
|
||||
core2.setSecret(authentication.token);
|
||||
@@ -10094,6 +10419,43 @@ async function main(appId2, privateKey2, owner2, repositories2, core2, createApp
|
||||
core2.saveState("token", authentication.token);
|
||||
}
|
||||
}
|
||||
async function getTokenFromOwner(request2, auth, appAuthentication, parsedOwner) {
|
||||
const response = await request2("GET /orgs/{org}/installation", {
|
||||
org: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`
|
||||
}
|
||||
}).catch((error) => {
|
||||
if (error.status !== 404)
|
||||
throw error;
|
||||
return request2("GET /users/{username}/installation", {
|
||||
username: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`
|
||||
}
|
||||
});
|
||||
});
|
||||
const authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id
|
||||
});
|
||||
return authentication;
|
||||
}
|
||||
async function getTokenFromRepository(request2, auth, parsedOwner, appAuthentication, parsedRepositoryNames) {
|
||||
const response = await request2("GET /repos/{owner}/{repo}/installation", {
|
||||
owner: parsedOwner,
|
||||
repo: parsedRepositoryNames.split(",")[0],
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`
|
||||
}
|
||||
});
|
||||
const authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id,
|
||||
repositoryNames: parsedRepositoryNames.split(",")
|
||||
});
|
||||
return authentication;
|
||||
}
|
||||
|
||||
// lib/request.js
|
||||
var import_request = __toESM(require_dist_node5(), 1);
|
||||
|
||||
Vendored
+14
-4
@@ -2811,8 +2811,18 @@ var require_dist_node5 = __commonJS({
|
||||
module2.exports = __toCommonJS2(dist_src_exports);
|
||||
var import_endpoint = require_dist_node2();
|
||||
var import_universal_user_agent = require_dist_node();
|
||||
var VERSION = "8.1.4";
|
||||
var import_is_plain_object = require_is_plain_object();
|
||||
var VERSION = "8.1.6";
|
||||
function isPlainObject(value) {
|
||||
if (typeof value !== "object" || value === null)
|
||||
return false;
|
||||
if (Object.prototype.toString.call(value) !== "[object Object]")
|
||||
return false;
|
||||
const proto = Object.getPrototypeOf(value);
|
||||
if (proto === null)
|
||||
return true;
|
||||
const Ctor = Object.prototype.hasOwnProperty.call(proto, "constructor") && proto.constructor;
|
||||
return typeof Ctor === "function" && Ctor instanceof Ctor && Function.prototype.call(Ctor) === Function.prototype.call(value);
|
||||
}
|
||||
var import_request_error = require_dist_node4();
|
||||
function getBufferResponse(response) {
|
||||
return response.arrayBuffer();
|
||||
@@ -2821,7 +2831,7 @@ var require_dist_node5 = __commonJS({
|
||||
var _a, _b, _c;
|
||||
const log = requestOptions.request && requestOptions.request.log ? requestOptions.request.log : console;
|
||||
const parseSuccessResponseBody = ((_a = requestOptions.request) == null ? void 0 : _a.parseSuccessResponseBody) !== false;
|
||||
if ((0, import_is_plain_object.isPlainObject)(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||||
if (isPlainObject(requestOptions.body) || Array.isArray(requestOptions.body)) {
|
||||
requestOptions.body = JSON.stringify(requestOptions.body);
|
||||
}
|
||||
let headers = {};
|
||||
@@ -2927,7 +2937,7 @@ var require_dist_node5 = __commonJS({
|
||||
async function getResponseData(response) {
|
||||
const contentType = response.headers.get("content-type");
|
||||
if (/application\/json/.test(contentType)) {
|
||||
return response.json();
|
||||
return response.json().catch(() => response.text()).catch(() => "");
|
||||
}
|
||||
if (!contentType || /^text\/|charset=utf-8$/.test(contentType)) {
|
||||
return response.text();
|
||||
|
||||
+62
-34
@@ -1,3 +1,4 @@
|
||||
import pRetry from "p-retry";
|
||||
// @ts-check
|
||||
|
||||
/**
|
||||
@@ -75,47 +76,26 @@ export async function main(
|
||||
|
||||
let authentication;
|
||||
// If at least one repository is set, get installation ID from that repository
|
||||
// https://docs.github.com/rest/apps/apps?apiVersion=2022-11-28#get-a-repository-installation-for-the-authenticated-app
|
||||
|
||||
if (parsedRepositoryNames) {
|
||||
const response = await request("GET /repos/{owner}/{repo}/installation", {
|
||||
owner: parsedOwner,
|
||||
repo: parsedRepositoryNames.split(",")[0],
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`,
|
||||
authentication = await pRetry(() => getTokenFromRepository(request, auth, parsedOwner,appAuthentication, parsedRepositoryNames), {
|
||||
onFailedAttempt: (error) => {
|
||||
core.info(
|
||||
`Failed to create token for "${parsedRepositoryNames}" (attempt ${error.attemptNumber}): ${error.message}`
|
||||
);
|
||||
},
|
||||
retries: 3,
|
||||
});
|
||||
|
||||
// Get token for given repositories
|
||||
authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id,
|
||||
repositoryNames: parsedRepositoryNames.split(","),
|
||||
});
|
||||
} else {
|
||||
// Otherwise get the installation for the owner, which can either be an organization or a user account
|
||||
// https://docs.github.com/rest/apps/apps?apiVersion=2022-11-28#get-a-repository-installation-for-the-authenticated-app
|
||||
const response = await request("GET /orgs/{org}/installation", {
|
||||
org: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`,
|
||||
authentication = await pRetry(() => getTokenFromOwner(request, auth, appAuthentication, parsedOwner), {
|
||||
onFailedAttempt: (error) => {
|
||||
core.info(
|
||||
`Failed to create token for "${parsedOwner}" (attempt ${error.attemptNumber}): ${error.message}`
|
||||
);
|
||||
},
|
||||
}).catch((error) => {
|
||||
/* c8 ignore next */
|
||||
if (error.status !== 404) throw error;
|
||||
|
||||
// https://docs.github.com/rest/apps/apps?apiVersion=2022-11-28#get-a-user-installation-for-the-authenticated-app
|
||||
return request("GET /users/{username}/installation", {
|
||||
username: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
// Get token for for all repositories of the given installation
|
||||
authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id,
|
||||
retries: 3,
|
||||
});
|
||||
}
|
||||
|
||||
@@ -129,3 +109,51 @@ export async function main(
|
||||
core.saveState("token", authentication.token);
|
||||
}
|
||||
}
|
||||
|
||||
async function getTokenFromOwner(request, auth, appAuthentication, parsedOwner) {
|
||||
// https://docs.github.com/en/rest/apps/apps?apiVersion=2022-11-28#get-an-organization-installation-for-the-authenticated-app
|
||||
const response = await request("GET /orgs/{org}/installation", {
|
||||
org: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`,
|
||||
},
|
||||
}).catch((error) => {
|
||||
/* c8 ignore next */
|
||||
if (error.status !== 404) throw error;
|
||||
|
||||
// https://docs.github.com/rest/apps/apps?apiVersion=2022-11-28#get-a-user-installation-for-the-authenticated-app
|
||||
return request("GET /users/{username}/installation", {
|
||||
username: parsedOwner,
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`,
|
||||
},
|
||||
});
|
||||
});
|
||||
|
||||
// Get token for for all repositories of the given installation
|
||||
const authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id,
|
||||
});
|
||||
return authentication;
|
||||
}
|
||||
|
||||
async function getTokenFromRepository(request, auth, parsedOwner,appAuthentication, parsedRepositoryNames) {
|
||||
// https://docs.github.com/rest/apps/apps?apiVersion=2022-11-28#get-a-repository-installation-for-the-authenticated-app
|
||||
const response = await request("GET /repos/{owner}/{repo}/installation", {
|
||||
owner: parsedOwner,
|
||||
repo: parsedRepositoryNames.split(",")[0],
|
||||
headers: {
|
||||
authorization: `bearer ${appAuthentication.token}`,
|
||||
},
|
||||
});
|
||||
|
||||
// Get token for given repositories
|
||||
const authentication = await auth({
|
||||
type: "installation",
|
||||
installationId: response.data.id,
|
||||
repositoryNames: parsedRepositoryNames.split(","),
|
||||
});
|
||||
|
||||
return authentication;
|
||||
}
|
||||
Generated
+147
-107
@@ -1,27 +1,28 @@
|
||||
{
|
||||
"name": "create-github-app-token",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"lockfileVersion": 3,
|
||||
"requires": true,
|
||||
"packages": {
|
||||
"": {
|
||||
"name": "create-github-app-token",
|
||||
"version": "1.5.0",
|
||||
"version": "1.6.0",
|
||||
"license": "MIT",
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.1",
|
||||
"@octokit/auth-app": "^6.0.1",
|
||||
"@octokit/request": "^8.1.4"
|
||||
"@octokit/request": "^8.1.6",
|
||||
"p-retry": "^6.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "^5.3.1",
|
||||
"c8": "^8.0.1",
|
||||
"dotenv": "^16.3.1",
|
||||
"esbuild": "^0.19.5",
|
||||
"esbuild": "^0.19.8",
|
||||
"execa": "^8.0.1",
|
||||
"open-cli": "^7.2.0",
|
||||
"undici": "^5.27.0",
|
||||
"yaml": "^2.3.3"
|
||||
"undici": "^5.28.2",
|
||||
"yaml": "^2.3.4"
|
||||
}
|
||||
},
|
||||
"node_modules/@actions/core": {
|
||||
@@ -226,9 +227,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@esbuild/android-arm": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.5.tgz",
|
||||
"integrity": "sha512-bhvbzWFF3CwMs5tbjf3ObfGqbl/17ict2/uwOSfr3wmxDE6VdS2GqY/FuzIPe0q0bdhj65zQsvqfArI9MY6+AA==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.8.tgz",
|
||||
"integrity": "sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -242,9 +243,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-arm64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.5.tgz",
|
||||
"integrity": "sha512-5d1OkoJxnYQfmC+Zd8NBFjkhyCNYwM4n9ODrycTFY6Jk1IGiZ+tjVJDDSwDt77nK+tfpGP4T50iMtVi4dEGzhQ==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.8.tgz",
|
||||
"integrity": "sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -258,9 +259,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/android-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-9t+28jHGL7uBdkBjL90QFxe7DVA+KGqWlHCF8ChTKyaKO//VLuoBricQCgwhOjA1/qOczsw843Fy4cbs4H3DVA==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -274,9 +275,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-arm64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.5.tgz",
|
||||
"integrity": "sha512-mvXGcKqqIqyKoxq26qEDPHJuBYUA5KizJncKOAf9eJQez+L9O+KfvNFu6nl7SCZ/gFb2QPaRqqmG0doSWlgkqw==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.8.tgz",
|
||||
"integrity": "sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -290,9 +291,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/darwin-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-Ly8cn6fGLNet19s0X4unjcniX24I0RqjPv+kurpXabZYSXGM4Pwpmf85WHJN3lAgB8GSth7s5A0r856S+4DyiA==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -306,9 +307,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-arm64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.5.tgz",
|
||||
"integrity": "sha512-GGDNnPWTmWE+DMchq1W8Sd0mUkL+APvJg3b11klSGUDvRXh70JqLAO56tubmq1s2cgpVCSKYywEiKBfju8JztQ==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.8.tgz",
|
||||
"integrity": "sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -322,9 +323,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/freebsd-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-1CCwDHnSSoA0HNwdfoNY0jLfJpd7ygaLAp5EHFos3VWJCRX9DMwWODf96s9TSse39Br7oOTLryRVmBoFwXbuuQ==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -338,9 +339,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.5.tgz",
|
||||
"integrity": "sha512-lrWXLY/vJBzCPC51QN0HM71uWgIEpGSjSZZADQhq7DKhPcI6NH1IdzjfHkDQws2oNpJKpR13kv7/pFHBbDQDwQ==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.8.tgz",
|
||||
"integrity": "sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==",
|
||||
"cpu": [
|
||||
"arm"
|
||||
],
|
||||
@@ -354,9 +355,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-arm64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.5.tgz",
|
||||
"integrity": "sha512-o3vYippBmSrjjQUCEEiTZ2l+4yC0pVJD/Dl57WfPwwlvFkrxoSO7rmBZFii6kQB3Wrn/6GwJUPLU5t52eq2meA==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.8.tgz",
|
||||
"integrity": "sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -370,9 +371,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ia32": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.5.tgz",
|
||||
"integrity": "sha512-MkjHXS03AXAkNp1KKkhSKPOCYztRtK+KXDNkBa6P78F8Bw0ynknCSClO/ztGszILZtyO/lVKpa7MolbBZ6oJtQ==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.8.tgz",
|
||||
"integrity": "sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -386,9 +387,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-loong64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.5.tgz",
|
||||
"integrity": "sha512-42GwZMm5oYOD/JHqHska3Jg0r+XFb/fdZRX+WjADm3nLWLcIsN27YKtqxzQmGNJgu0AyXg4HtcSK9HuOk3v1Dw==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.8.tgz",
|
||||
"integrity": "sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==",
|
||||
"cpu": [
|
||||
"loong64"
|
||||
],
|
||||
@@ -402,9 +403,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-mips64el": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.5.tgz",
|
||||
"integrity": "sha512-kcjndCSMitUuPJobWCnwQ9lLjiLZUR3QLQmlgaBfMX23UEa7ZOrtufnRds+6WZtIS9HdTXqND4yH8NLoVVIkcg==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.8.tgz",
|
||||
"integrity": "sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==",
|
||||
"cpu": [
|
||||
"mips64el"
|
||||
],
|
||||
@@ -418,9 +419,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-ppc64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.5.tgz",
|
||||
"integrity": "sha512-yJAxJfHVm0ZbsiljbtFFP1BQKLc8kUF6+17tjQ78QjqjAQDnhULWiTA6u0FCDmYT1oOKS9PzZ2z0aBI+Mcyj7Q==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.8.tgz",
|
||||
"integrity": "sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==",
|
||||
"cpu": [
|
||||
"ppc64"
|
||||
],
|
||||
@@ -434,9 +435,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-riscv64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.5.tgz",
|
||||
"integrity": "sha512-5u8cIR/t3gaD6ad3wNt1MNRstAZO+aNyBxu2We8X31bA8XUNyamTVQwLDA1SLoPCUehNCymhBhK3Qim1433Zag==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.8.tgz",
|
||||
"integrity": "sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==",
|
||||
"cpu": [
|
||||
"riscv64"
|
||||
],
|
||||
@@ -450,9 +451,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-s390x": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.5.tgz",
|
||||
"integrity": "sha512-Z6JrMyEw/EmZBD/OFEFpb+gao9xJ59ATsoTNlj39jVBbXqoZm4Xntu6wVmGPB/OATi1uk/DB+yeDPv2E8PqZGw==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.8.tgz",
|
||||
"integrity": "sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==",
|
||||
"cpu": [
|
||||
"s390x"
|
||||
],
|
||||
@@ -466,9 +467,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/linux-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-psagl+2RlK1z8zWZOmVdImisMtrUxvwereIdyJTmtmHahJTKb64pAcqoPlx6CewPdvGvUKe2Jw+0Z/0qhSbG1A==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -482,9 +483,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/netbsd-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-kL2l+xScnAy/E/3119OggX8SrWyBEcqAh8aOY1gr4gPvw76la2GlD4Ymf832UCVbmuWeTf2adkZDK+h0Z/fB4g==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -498,9 +499,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/openbsd-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-sPOfhtzFufQfTBgRnE1DIJjzsXukKSvZxloZbkJDG383q0awVAq600pc1nfqBcl0ice/WN9p4qLc39WhBShRTA==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -514,9 +515,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/sunos-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-dGZkBXaafuKLpDSjKcB0ax0FL36YXCvJNnztjKV+6CO82tTYVDSH2lifitJ29jxRMoUhgkg9a+VA/B03WK5lcg==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -530,9 +531,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-arm64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.5.tgz",
|
||||
"integrity": "sha512-dWVjD9y03ilhdRQ6Xig1NWNgfLtf2o/STKTS+eZuF90fI2BhbwD6WlaiCGKptlqXlURVB5AUOxUj09LuwKGDTg==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.8.tgz",
|
||||
"integrity": "sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==",
|
||||
"cpu": [
|
||||
"arm64"
|
||||
],
|
||||
@@ -546,9 +547,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-ia32": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.5.tgz",
|
||||
"integrity": "sha512-4liggWIA4oDgUxqpZwrDhmEfAH4d0iljanDOK7AnVU89T6CzHon/ony8C5LeOdfgx60x5cnQJFZwEydVlYx4iw==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.8.tgz",
|
||||
"integrity": "sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==",
|
||||
"cpu": [
|
||||
"ia32"
|
||||
],
|
||||
@@ -562,9 +563,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/@esbuild/win32-x64": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.5.tgz",
|
||||
"integrity": "sha512-czTrygUsB/jlM8qEW5MD8bgYU2Xg14lo6kBDXW6HdxKjh8M5PzETGiSHaz9MtbXBYDloHNUAUW2tMiKW4KM9Mw==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.8.tgz",
|
||||
"integrity": "sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==",
|
||||
"cpu": [
|
||||
"x64"
|
||||
],
|
||||
@@ -776,14 +777,13 @@
|
||||
"integrity": "sha512-PclQ6JGMTE9iUStpzMkwLCISFn/wDeRjkZFIKALpvJQNBGwDoYYi2fFvuHwssoQ1rXI5mfh6jgTgWuddeUzfWw=="
|
||||
},
|
||||
"node_modules/@octokit/request": {
|
||||
"version": "8.1.4",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.4.tgz",
|
||||
"integrity": "sha512-M0aaFfpGPEKrg7XoA/gwgRvc9MSXHRO2Ioki1qrPDbl1e9YhjIwVoHE7HIKmv/m3idzldj//xBujcFNqGX6ENA==",
|
||||
"version": "8.1.6",
|
||||
"resolved": "https://registry.npmjs.org/@octokit/request/-/request-8.1.6.tgz",
|
||||
"integrity": "sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==",
|
||||
"dependencies": {
|
||||
"@octokit/endpoint": "^9.0.0",
|
||||
"@octokit/request-error": "^5.0.0",
|
||||
"@octokit/types": "^12.0.0",
|
||||
"is-plain-object": "^5.0.0",
|
||||
"universal-user-agent": "^6.0.0"
|
||||
},
|
||||
"engines": {
|
||||
@@ -853,6 +853,11 @@
|
||||
"integrity": "sha512-lqa4UEhhv/2sjjIQgjX8B+RBjj47eo0mzGasklVJ78UKGQY1r0VpB9XHDaZZO9qzEFDdy4MrXLuEaSmPrPSe/A==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/@types/retry": {
|
||||
"version": "0.12.2",
|
||||
"resolved": "https://registry.npmjs.org/@types/retry/-/retry-0.12.2.tgz",
|
||||
"integrity": "sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow=="
|
||||
},
|
||||
"node_modules/acorn": {
|
||||
"version": "8.10.0",
|
||||
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz",
|
||||
@@ -1841,9 +1846,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/esbuild": {
|
||||
"version": "0.19.5",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.5.tgz",
|
||||
"integrity": "sha512-bUxalY7b1g8vNhQKdB24QDmHeY4V4tw/s6Ak5z+jJX9laP5MoQseTOMemAr0gxssjNcH0MCViG8ONI2kksvfFQ==",
|
||||
"version": "0.19.8",
|
||||
"resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.8.tgz",
|
||||
"integrity": "sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==",
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"bin": {
|
||||
@@ -1853,28 +1858,28 @@
|
||||
"node": ">=12"
|
||||
},
|
||||
"optionalDependencies": {
|
||||
"@esbuild/android-arm": "0.19.5",
|
||||
"@esbuild/android-arm64": "0.19.5",
|
||||
"@esbuild/android-x64": "0.19.5",
|
||||
"@esbuild/darwin-arm64": "0.19.5",
|
||||
"@esbuild/darwin-x64": "0.19.5",
|
||||
"@esbuild/freebsd-arm64": "0.19.5",
|
||||
"@esbuild/freebsd-x64": "0.19.5",
|
||||
"@esbuild/linux-arm": "0.19.5",
|
||||
"@esbuild/linux-arm64": "0.19.5",
|
||||
"@esbuild/linux-ia32": "0.19.5",
|
||||
"@esbuild/linux-loong64": "0.19.5",
|
||||
"@esbuild/linux-mips64el": "0.19.5",
|
||||
"@esbuild/linux-ppc64": "0.19.5",
|
||||
"@esbuild/linux-riscv64": "0.19.5",
|
||||
"@esbuild/linux-s390x": "0.19.5",
|
||||
"@esbuild/linux-x64": "0.19.5",
|
||||
"@esbuild/netbsd-x64": "0.19.5",
|
||||
"@esbuild/openbsd-x64": "0.19.5",
|
||||
"@esbuild/sunos-x64": "0.19.5",
|
||||
"@esbuild/win32-arm64": "0.19.5",
|
||||
"@esbuild/win32-ia32": "0.19.5",
|
||||
"@esbuild/win32-x64": "0.19.5"
|
||||
"@esbuild/android-arm": "0.19.8",
|
||||
"@esbuild/android-arm64": "0.19.8",
|
||||
"@esbuild/android-x64": "0.19.8",
|
||||
"@esbuild/darwin-arm64": "0.19.8",
|
||||
"@esbuild/darwin-x64": "0.19.8",
|
||||
"@esbuild/freebsd-arm64": "0.19.8",
|
||||
"@esbuild/freebsd-x64": "0.19.8",
|
||||
"@esbuild/linux-arm": "0.19.8",
|
||||
"@esbuild/linux-arm64": "0.19.8",
|
||||
"@esbuild/linux-ia32": "0.19.8",
|
||||
"@esbuild/linux-loong64": "0.19.8",
|
||||
"@esbuild/linux-mips64el": "0.19.8",
|
||||
"@esbuild/linux-ppc64": "0.19.8",
|
||||
"@esbuild/linux-riscv64": "0.19.8",
|
||||
"@esbuild/linux-s390x": "0.19.8",
|
||||
"@esbuild/linux-x64": "0.19.8",
|
||||
"@esbuild/netbsd-x64": "0.19.8",
|
||||
"@esbuild/openbsd-x64": "0.19.8",
|
||||
"@esbuild/sunos-x64": "0.19.8",
|
||||
"@esbuild/win32-arm64": "0.19.8",
|
||||
"@esbuild/win32-ia32": "0.19.8",
|
||||
"@esbuild/win32-x64": "0.19.8"
|
||||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
@@ -2407,6 +2412,17 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-network-error": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-network-error/-/is-network-error-1.0.0.tgz",
|
||||
"integrity": "sha512-P3fxi10Aji2FZmHTrMPSNFbNC6nnp4U5juPAIjXPHkUNubi4+qK7vvdsaNpAUwXslhYm9oyjEYTxs1xd/+Ph0w==",
|
||||
"engines": {
|
||||
"node": ">=16"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/is-number": {
|
||||
"version": "7.0.0",
|
||||
"resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz",
|
||||
@@ -3098,6 +3114,22 @@
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/p-retry": {
|
||||
"version": "6.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-retry/-/p-retry-6.1.0.tgz",
|
||||
"integrity": "sha512-fJLEQ2KqYBJRuaA/8cKMnqhulqNM+bpcjYtXNex2t3mOXKRYPitAJt9NacSf8XAFzcYahSAbKpobiWDSqHSh2g==",
|
||||
"dependencies": {
|
||||
"@types/retry": "0.12.2",
|
||||
"is-network-error": "^1.0.0",
|
||||
"retry": "^0.13.1"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=16.17"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://github.com/sponsors/sindresorhus"
|
||||
}
|
||||
},
|
||||
"node_modules/p-timeout": {
|
||||
"version": "5.1.0",
|
||||
"resolved": "https://registry.npmjs.org/p-timeout/-/p-timeout-5.1.0.tgz",
|
||||
@@ -3465,6 +3497,14 @@
|
||||
"node": ">=8"
|
||||
}
|
||||
},
|
||||
"node_modules/retry": {
|
||||
"version": "0.13.1",
|
||||
"resolved": "https://registry.npmjs.org/retry/-/retry-0.13.1.tgz",
|
||||
"integrity": "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==",
|
||||
"engines": {
|
||||
"node": ">= 4"
|
||||
}
|
||||
},
|
||||
"node_modules/reusify": {
|
||||
"version": "1.0.4",
|
||||
"resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz",
|
||||
@@ -4062,9 +4102,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "5.27.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.27.0.tgz",
|
||||
"integrity": "sha512-l3ydWhlhOJzMVOYkymLykcRRXqbUaQriERtR70B9LzNkZ4bX52Fc8wbTDneMiwo8T+AemZXvXaTx+9o5ROxrXg==",
|
||||
"version": "5.28.2",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-5.28.2.tgz",
|
||||
"integrity": "sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"@fastify/busboy": "^2.0.0"
|
||||
@@ -4288,9 +4328,9 @@
|
||||
"integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A=="
|
||||
},
|
||||
"node_modules/yaml": {
|
||||
"version": "2.3.3",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz",
|
||||
"integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==",
|
||||
"version": "2.3.4",
|
||||
"resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz",
|
||||
"integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">= 14"
|
||||
|
||||
+7
-6
@@ -2,10 +2,10 @@
|
||||
"name": "create-github-app-token",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"version": "1.5.1",
|
||||
"version": "1.6.1",
|
||||
"description": "GitHub Action for creating a GitHub App Installation Access Token",
|
||||
"scripts": {
|
||||
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --target=node16.16",
|
||||
"build": "esbuild main.js post.js --bundle --outdir=dist --out-extension:.js=.cjs --platform=node --target=node20.0.0",
|
||||
"test": "c8 --100 ava tests/index.js",
|
||||
"coverage": "c8 report --reporter html",
|
||||
"postcoverage": "open-cli coverage/index.html"
|
||||
@@ -14,17 +14,18 @@
|
||||
"dependencies": {
|
||||
"@actions/core": "^1.10.1",
|
||||
"@octokit/auth-app": "^6.0.1",
|
||||
"@octokit/request": "^8.1.4"
|
||||
"@octokit/request": "^8.1.6",
|
||||
"p-retry": "^6.1.0"
|
||||
},
|
||||
"devDependencies": {
|
||||
"ava": "^5.3.1",
|
||||
"c8": "^8.0.1",
|
||||
"dotenv": "^16.3.1",
|
||||
"esbuild": "^0.19.5",
|
||||
"esbuild": "^0.19.8",
|
||||
"execa": "^8.0.1",
|
||||
"open-cli": "^7.2.0",
|
||||
"undici": "^5.27.0",
|
||||
"yaml": "^2.3.3"
|
||||
"undici": "^5.28.2",
|
||||
"yaml": "^2.3.4"
|
||||
},
|
||||
"release": {
|
||||
"branches": [
|
||||
|
||||
@@ -0,0 +1,39 @@
|
||||
import { test } from "./main.js";
|
||||
|
||||
// Verify `main` retry when the GitHub API returns a 500 error.
|
||||
await test((mockPool) => {
|
||||
process.env.INPUT_OWNER = 'actions'
|
||||
process.env.INPUT_REPOSITORIES = 'failed-repo';
|
||||
const owner = process.env.INPUT_OWNER
|
||||
const repo = process.env.INPUT_REPOSITORIES
|
||||
const mockInstallationId = "123456";
|
||||
|
||||
mockPool
|
||||
.intercept({
|
||||
path: `/repos/${owner}/${repo}/installation`,
|
||||
method: "GET",
|
||||
headers: {
|
||||
accept: "application/vnd.github.v3+json",
|
||||
"user-agent": "actions/create-github-app-token",
|
||||
// Intentionally omitting the `authorization` header, since JWT creation is not idempotent.
|
||||
},
|
||||
})
|
||||
.reply(500, 'GitHub API not available')
|
||||
|
||||
mockPool
|
||||
.intercept({
|
||||
path: `/repos/${owner}/${repo}/installation`,
|
||||
method: "GET",
|
||||
headers: {
|
||||
accept: "application/vnd.github.v3+json",
|
||||
"user-agent": "actions/create-github-app-token",
|
||||
// Intentionally omitting the `authorization` header, since JWT creation is not idempotent.
|
||||
},
|
||||
})
|
||||
.reply(
|
||||
200,
|
||||
{ id: mockInstallationId },
|
||||
{ headers: { "content-type": "application/json" } }
|
||||
);
|
||||
|
||||
});
|
||||
@@ -0,0 +1,36 @@
|
||||
import { test } from "./main.js";
|
||||
|
||||
// Verify `main` successfully obtains a token when the `owner` input is set (to a user), but the `repositories` input isn’t set.
|
||||
await test((mockPool) => {
|
||||
process.env.INPUT_OWNER = "smockle";
|
||||
delete process.env.INPUT_REPOSITORIES;
|
||||
|
||||
// Mock installation id request
|
||||
const mockInstallationId = "123456";
|
||||
mockPool
|
||||
.intercept({
|
||||
path: `/orgs/${process.env.INPUT_OWNER}/installation`,
|
||||
method: "GET",
|
||||
headers: {
|
||||
accept: "application/vnd.github.v3+json",
|
||||
"user-agent": "actions/create-github-app-token",
|
||||
// Intentionally omitting the `authorization` header, since JWT creation is not idempotent.
|
||||
},
|
||||
})
|
||||
.reply(500, 'GitHub API not available')
|
||||
mockPool
|
||||
.intercept({
|
||||
path: `/orgs/${process.env.INPUT_OWNER}/installation`,
|
||||
method: "GET",
|
||||
headers: {
|
||||
accept: "application/vnd.github.v3+json",
|
||||
"user-agent": "actions/create-github-app-token",
|
||||
// Intentionally omitting the `authorization` header, since JWT creation is not idempotent.
|
||||
},
|
||||
})
|
||||
.reply(
|
||||
200,
|
||||
{ id: mockInstallationId },
|
||||
{ headers: { "content-type": "application/json" } }
|
||||
);
|
||||
});
|
||||
@@ -56,6 +56,21 @@ Generated by [AVA](https://avajs.dev).
|
||||
|
||||
''
|
||||
|
||||
## main-token-get-owner-set-repo-fail-response.test.js
|
||||
|
||||
> stderr
|
||||
|
||||
''
|
||||
|
||||
> stdout
|
||||
|
||||
`owner and repositories set, creating token for repositories "failed-repo" owned by "actions"␊
|
||||
Failed to create token for "failed-repo" (attempt 1): GitHub API not available␊
|
||||
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a␊
|
||||
␊
|
||||
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a␊
|
||||
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a`
|
||||
|
||||
## main-token-get-owner-set-repo-set-to-many.test.js
|
||||
|
||||
> stderr
|
||||
@@ -98,6 +113,21 @@ Generated by [AVA](https://avajs.dev).
|
||||
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a␊
|
||||
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a`
|
||||
|
||||
## main-token-get-owner-set-to-user-fail-response.test.js
|
||||
|
||||
> stderr
|
||||
|
||||
''
|
||||
|
||||
> stdout
|
||||
|
||||
`repositories not set, creating token for all repositories for given owner "smockle"␊
|
||||
Failed to create token for "smockle" (attempt 1): GitHub API not available␊
|
||||
::add-mask::ghs_16C7e42F292c6912E7710c838347Ae178B4a␊
|
||||
␊
|
||||
::set-output name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a␊
|
||||
::save-state name=token::ghs_16C7e42F292c6912E7710c838347Ae178B4a`
|
||||
|
||||
## main-token-get-owner-set-to-user-repo-unset.test.js
|
||||
|
||||
> stderr
|
||||
|
||||
Binary file not shown.
Reference in New Issue
Block a user