diff --git a/build/main.js b/build/main.js index 9407692..67dac06 100644 --- a/build/main.js +++ b/build/main.js @@ -38,7 +38,8 @@ var require_utils = __commonJS({ "node_modules/@actions/core/lib/utils.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - exports.toCommandProperties = exports.toCommandValue = void 0; + exports.toCommandValue = toCommandValue; + exports.toCommandProperties = toCommandProperties; function toCommandValue(input) { if (input === null || input === void 0) { return ""; @@ -47,7 +48,6 @@ var require_utils = __commonJS({ } return JSON.stringify(input); } - exports.toCommandValue = toCommandValue; function toCommandProperties(annotationProperties) { if (!Object.keys(annotationProperties).length) { return {}; @@ -61,7 +61,6 @@ var require_utils = __commonJS({ endColumn: annotationProperties.endColumn }; } - exports.toCommandProperties = toCommandProperties; } }); @@ -87,28 +86,37 @@ var require_command = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports, "__esModule", { value: true }); - exports.issue = exports.issueCommand = void 0; + exports.issueCommand = issueCommand; + exports.issue = issue; var os = __importStar(__require("os")); var utils_1 = require_utils(); function issueCommand(command, properties, message) { const cmd = new Command(command, properties, message); process.stdout.write(cmd.toString() + os.EOL); } - exports.issueCommand = issueCommand; function issue(name, message = "") { issueCommand(name, {}, message); } - exports.issue = issue; var CMD_STRING = "::"; var Command = class { constructor(command, properties, message) { @@ -173,17 +181,28 @@ var require_file_command = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports, "__esModule", { value: true }); - exports.prepareKeyValueMessage = exports.issueFileCommand = void 0; + exports.issueFileCommand = issueFileCommand; + exports.prepareKeyValueMessage = prepareKeyValueMessage; var crypto = __importStar(__require("crypto")); var fs2 = __importStar(__require("fs")); var os = __importStar(__require("os")); @@ -200,7 +219,6 @@ var require_file_command = __commonJS({ encoding: "utf8" }); } - exports.issueFileCommand = issueFileCommand; function prepareKeyValueMessage(key, value) { const delimiter = `ghadelimiter_${crypto.randomUUID()}`; const convertedValue = (0, utils_1.toCommandValue)(value); @@ -212,7 +230,6 @@ var require_file_command = __commonJS({ } return `${key}<<${delimiter}${os.EOL}${convertedValue}${os.EOL}${delimiter}`; } - exports.prepareKeyValueMessage = prepareKeyValueMessage; } }); @@ -221,7 +238,8 @@ var require_proxy = __commonJS({ "node_modules/@actions/http-client/lib/proxy.js"(exports) { "use strict"; Object.defineProperty(exports, "__esModule", { value: true }); - exports.checkBypass = exports.getProxyUrl = void 0; + exports.getProxyUrl = getProxyUrl; + exports.checkBypass = checkBypass; function getProxyUrl(reqUrl) { const usingSsl = reqUrl.protocol === "https:"; if (checkBypass(reqUrl)) { @@ -245,7 +263,6 @@ var require_proxy = __commonJS({ return void 0; } } - exports.getProxyUrl = getProxyUrl; function checkBypass(reqUrl) { if (!reqUrl.hostname) { return false; @@ -277,7 +294,6 @@ var require_proxy = __commonJS({ } return false; } - exports.checkBypass = checkBypass; function isLoopbackAddress(host) { const hostLower = host.toLowerCase(); return hostLower === "localhost" || hostLower.startsWith("127.") || hostLower.startsWith("[::1]") || hostLower.startsWith("[0:0:0:0:0:0:0:1]"); @@ -539,67 +555,67 @@ var require_tunnel2 = __commonJS({ var require_symbols = __commonJS({ "node_modules/undici/lib/core/symbols.js"(exports, module) { module.exports = { - kClose: Symbol("close"), - kDestroy: Symbol("destroy"), - kDispatch: Symbol("dispatch"), - kUrl: Symbol("url"), - kWriting: Symbol("writing"), - kResuming: Symbol("resuming"), - kQueue: Symbol("queue"), - kConnect: Symbol("connect"), - kConnecting: Symbol("connecting"), - kHeadersList: Symbol("headers list"), - kKeepAliveDefaultTimeout: Symbol("default keep alive timeout"), - kKeepAliveMaxTimeout: Symbol("max keep alive timeout"), - kKeepAliveTimeoutThreshold: Symbol("keep alive timeout threshold"), - kKeepAliveTimeoutValue: Symbol("keep alive timeout"), - kKeepAlive: Symbol("keep alive"), - kHeadersTimeout: Symbol("headers timeout"), - kBodyTimeout: Symbol("body timeout"), - kServerName: Symbol("server name"), - kLocalAddress: Symbol("local address"), - kHost: Symbol("host"), - kNoRef: Symbol("no ref"), - kBodyUsed: Symbol("used"), - kRunning: Symbol("running"), - kBlocking: Symbol("blocking"), - kPending: Symbol("pending"), - kSize: Symbol("size"), - kBusy: Symbol("busy"), - kQueued: Symbol("queued"), - kFree: Symbol("free"), - kConnected: Symbol("connected"), - kClosed: Symbol("closed"), - kNeedDrain: Symbol("need drain"), - kReset: Symbol("reset"), - kDestroyed: Symbol.for("nodejs.stream.destroyed"), - kMaxHeadersSize: Symbol("max headers size"), - kRunningIdx: Symbol("running index"), - kPendingIdx: Symbol("pending index"), - kError: Symbol("error"), - kClients: Symbol("clients"), - kClient: Symbol("client"), - kParser: Symbol("parser"), - kOnDestroyed: Symbol("destroy callbacks"), - kPipelining: Symbol("pipelining"), - kSocket: Symbol("socket"), - kHostHeader: Symbol("host header"), - kConnector: Symbol("connector"), - kStrictContentLength: Symbol("strict content length"), - kMaxRedirections: Symbol("maxRedirections"), - kMaxRequests: Symbol("maxRequestsPerClient"), - kProxy: Symbol("proxy agent options"), - kCounter: Symbol("socket request counter"), - kInterceptors: Symbol("dispatch interceptors"), - kMaxResponseSize: Symbol("max response size"), - kHTTP2Session: Symbol("http2Session"), - kHTTP2SessionState: Symbol("http2Session state"), - kHTTP2BuildRequest: Symbol("http2 build request"), - kHTTP1BuildRequest: Symbol("http1 build request"), - kHTTP2CopyHeaders: Symbol("http2 copy headers"), - kHTTPConnVersion: Symbol("http connection version"), - kRetryHandlerDefaultRetry: Symbol("retry agent default retry"), - kConstruct: Symbol("constructable") + kClose: /* @__PURE__ */ Symbol("close"), + kDestroy: /* @__PURE__ */ Symbol("destroy"), + kDispatch: /* @__PURE__ */ Symbol("dispatch"), + kUrl: /* @__PURE__ */ Symbol("url"), + kWriting: /* @__PURE__ */ Symbol("writing"), + kResuming: /* @__PURE__ */ Symbol("resuming"), + kQueue: /* @__PURE__ */ Symbol("queue"), + kConnect: /* @__PURE__ */ Symbol("connect"), + kConnecting: /* @__PURE__ */ Symbol("connecting"), + kHeadersList: /* @__PURE__ */ Symbol("headers list"), + kKeepAliveDefaultTimeout: /* @__PURE__ */ Symbol("default keep alive timeout"), + kKeepAliveMaxTimeout: /* @__PURE__ */ Symbol("max keep alive timeout"), + kKeepAliveTimeoutThreshold: /* @__PURE__ */ Symbol("keep alive timeout threshold"), + kKeepAliveTimeoutValue: /* @__PURE__ */ Symbol("keep alive timeout"), + kKeepAlive: /* @__PURE__ */ Symbol("keep alive"), + kHeadersTimeout: /* @__PURE__ */ Symbol("headers timeout"), + kBodyTimeout: /* @__PURE__ */ Symbol("body timeout"), + kServerName: /* @__PURE__ */ Symbol("server name"), + kLocalAddress: /* @__PURE__ */ Symbol("local address"), + kHost: /* @__PURE__ */ Symbol("host"), + kNoRef: /* @__PURE__ */ Symbol("no ref"), + kBodyUsed: /* @__PURE__ */ Symbol("used"), + kRunning: /* @__PURE__ */ Symbol("running"), + kBlocking: /* @__PURE__ */ Symbol("blocking"), + kPending: /* @__PURE__ */ Symbol("pending"), + kSize: /* @__PURE__ */ Symbol("size"), + kBusy: /* @__PURE__ */ Symbol("busy"), + kQueued: /* @__PURE__ */ Symbol("queued"), + kFree: /* @__PURE__ */ Symbol("free"), + kConnected: /* @__PURE__ */ Symbol("connected"), + kClosed: /* @__PURE__ */ Symbol("closed"), + kNeedDrain: /* @__PURE__ */ Symbol("need drain"), + kReset: /* @__PURE__ */ Symbol("reset"), + kDestroyed: /* @__PURE__ */ Symbol.for("nodejs.stream.destroyed"), + kMaxHeadersSize: /* @__PURE__ */ Symbol("max headers size"), + kRunningIdx: /* @__PURE__ */ Symbol("running index"), + kPendingIdx: /* @__PURE__ */ Symbol("pending index"), + kError: /* @__PURE__ */ Symbol("error"), + kClients: /* @__PURE__ */ Symbol("clients"), + kClient: /* @__PURE__ */ Symbol("client"), + kParser: /* @__PURE__ */ Symbol("parser"), + kOnDestroyed: /* @__PURE__ */ Symbol("destroy callbacks"), + kPipelining: /* @__PURE__ */ Symbol("pipelining"), + kSocket: /* @__PURE__ */ Symbol("socket"), + kHostHeader: /* @__PURE__ */ Symbol("host header"), + kConnector: /* @__PURE__ */ Symbol("connector"), + kStrictContentLength: /* @__PURE__ */ Symbol("strict content length"), + kMaxRedirections: /* @__PURE__ */ Symbol("maxRedirections"), + kMaxRequests: /* @__PURE__ */ Symbol("maxRequestsPerClient"), + kProxy: /* @__PURE__ */ Symbol("proxy agent options"), + kCounter: /* @__PURE__ */ Symbol("socket request counter"), + kInterceptors: /* @__PURE__ */ Symbol("dispatch interceptors"), + kMaxResponseSize: /* @__PURE__ */ Symbol("max response size"), + kHTTP2Session: /* @__PURE__ */ Symbol("http2Session"), + kHTTP2SessionState: /* @__PURE__ */ Symbol("http2Session state"), + kHTTP2BuildRequest: /* @__PURE__ */ Symbol("http2 build request"), + kHTTP1BuildRequest: /* @__PURE__ */ Symbol("http1 build request"), + kHTTP2CopyHeaders: /* @__PURE__ */ Symbol("http2 copy headers"), + kHTTPConnVersion: /* @__PURE__ */ Symbol("http connection version"), + kRetryHandlerDefaultRetry: /* @__PURE__ */ Symbol("retry agent default retry"), + kConstruct: /* @__PURE__ */ Symbol("constructable") }; } }); @@ -3594,7 +3610,7 @@ var require_constants2 = __commonJS({ var require_global = __commonJS({ "node_modules/undici/lib/fetch/global.js"(exports, module) { "use strict"; - var globalOrigin = Symbol.for("undici.globalOrigin.1"); + var globalOrigin = /* @__PURE__ */ Symbol.for("undici.globalOrigin.1"); function getGlobalOrigin() { return globalThis[globalOrigin]; } @@ -4246,12 +4262,12 @@ var require_symbols2 = __commonJS({ "node_modules/undici/lib/fetch/symbols.js"(exports, module) { "use strict"; module.exports = { - kUrl: Symbol("url"), - kHeaders: Symbol("headers"), - kSignal: Symbol("signal"), - kState: Symbol("state"), - kGuard: Symbol("guard"), - kRealm: Symbol("realm") + kUrl: /* @__PURE__ */ Symbol("url"), + kHeaders: /* @__PURE__ */ Symbol("headers"), + kSignal: /* @__PURE__ */ Symbol("signal"), + kState: /* @__PURE__ */ Symbol("state"), + kGuard: /* @__PURE__ */ Symbol("guard"), + kRealm: /* @__PURE__ */ Symbol("realm") }; } }); @@ -5644,7 +5660,7 @@ var require_request = __commonJS({ var tokenRegExp = /^[\^_`a-zA-Z\-0-9!#$%&'*+.|~]+$/; var headerCharRegex = /[^\t\x20-\x7e\x80-\xff]/; var invalidPathRegex = /[^\u0021-\u00ff]/; - var kHandler = Symbol("handler"); + var kHandler = /* @__PURE__ */ Symbol("handler"); var channels = {}; var extractBody; try { @@ -6031,11 +6047,11 @@ var require_dispatcher_base = __commonJS({ InvalidArgumentError } = require_errors(); var { kDestroy, kClose, kDispatch, kInterceptors } = require_symbols(); - var kDestroyed = Symbol("destroyed"); - var kClosed = Symbol("closed"); - var kOnDestroyed = Symbol("onDestroyed"); - var kOnClosed = Symbol("onClosed"); - var kInterceptedDispatch = Symbol("Intercepted Dispatch"); + var kDestroyed = /* @__PURE__ */ Symbol("destroyed"); + var kClosed = /* @__PURE__ */ Symbol("closed"); + var kOnDestroyed = /* @__PURE__ */ Symbol("onDestroyed"); + var kOnClosed = /* @__PURE__ */ Symbol("onClosed"); + var kInterceptedDispatch = /* @__PURE__ */ Symbol("Intercepted Dispatch"); var DispatcherBase = class extends Dispatcher { constructor() { super(); @@ -6690,7 +6706,7 @@ var require_RedirectHandler = __commonJS({ var { InvalidArgumentError } = require_errors(); var EE = __require("events"); var redirectableStatusCodes = [300, 301, 302, 303, 307, 308]; - var kBody = Symbol("body"); + var kBody = /* @__PURE__ */ Symbol("body"); var BodyAsyncIterable = class { constructor(body) { this[kBody] = body; @@ -6964,7 +6980,7 @@ var require_client = __commonJS({ } = http2; var h2ExperimentalWarned = false; var FastBuffer = Buffer[Symbol.species]; - var kClosedResolve = Symbol("kClosedResolve"); + var kClosedResolve = /* @__PURE__ */ Symbol("kClosedResolve"); var channels = {}; try { const diagnosticsChannel = __require("diagnostics_channel"); @@ -8634,7 +8650,7 @@ var require_fixed_queue = __commonJS({ var require_pool_stats = __commonJS({ "node_modules/undici/lib/pool-stats.js"(exports, module) { var { kFree, kConnected, kPending, kQueued, kRunning, kSize } = require_symbols(); - var kPool = Symbol("pool"); + var kPool = /* @__PURE__ */ Symbol("pool"); var PoolStats = class { constructor(pool) { this[kPool] = pool; @@ -8670,18 +8686,18 @@ var require_pool_base = __commonJS({ var FixedQueue = require_fixed_queue(); var { kConnected, kSize, kRunning, kPending, kQueued, kBusy, kFree, kUrl, kClose, kDestroy, kDispatch } = require_symbols(); var PoolStats = require_pool_stats(); - var kClients = Symbol("clients"); - var kNeedDrain = Symbol("needDrain"); - var kQueue = Symbol("queue"); - var kClosedResolve = Symbol("closed resolve"); - var kOnDrain = Symbol("onDrain"); - var kOnConnect = Symbol("onConnect"); - var kOnDisconnect = Symbol("onDisconnect"); - var kOnConnectionError = Symbol("onConnectionError"); - var kGetDispatcher = Symbol("get dispatcher"); - var kAddClient = Symbol("add client"); - var kRemoveClient = Symbol("remove client"); - var kStats = Symbol("stats"); + var kClients = /* @__PURE__ */ Symbol("clients"); + var kNeedDrain = /* @__PURE__ */ Symbol("needDrain"); + var kQueue = /* @__PURE__ */ Symbol("queue"); + var kClosedResolve = /* @__PURE__ */ Symbol("closed resolve"); + var kOnDrain = /* @__PURE__ */ Symbol("onDrain"); + var kOnConnect = /* @__PURE__ */ Symbol("onConnect"); + var kOnDisconnect = /* @__PURE__ */ Symbol("onDisconnect"); + var kOnConnectionError = /* @__PURE__ */ Symbol("onConnectionError"); + var kGetDispatcher = /* @__PURE__ */ Symbol("get dispatcher"); + var kAddClient = /* @__PURE__ */ Symbol("add client"); + var kRemoveClient = /* @__PURE__ */ Symbol("remove client"); + var kStats = /* @__PURE__ */ Symbol("stats"); var PoolBase = class extends DispatcherBase { constructor() { super(); @@ -8835,9 +8851,9 @@ var require_pool = __commonJS({ var util = require_util(); var { kUrl, kInterceptors } = require_symbols(); var buildConnector = require_connect(); - var kOptions = Symbol("options"); - var kConnections = Symbol("connections"); - var kFactory = Symbol("factory"); + var kOptions = /* @__PURE__ */ Symbol("options"); + var kConnections = /* @__PURE__ */ Symbol("connections"); + var kFactory = /* @__PURE__ */ Symbol("factory"); function defaultFactory(origin, opts) { return new Client(origin, opts); } @@ -8926,14 +8942,14 @@ var require_balanced_pool = __commonJS({ var Pool = require_pool(); var { kUrl, kInterceptors } = require_symbols(); var { parseOrigin } = require_util(); - var kFactory = Symbol("factory"); - var kOptions = Symbol("options"); - var kGreatestCommonDivisor = Symbol("kGreatestCommonDivisor"); - var kCurrentWeight = Symbol("kCurrentWeight"); - var kIndex = Symbol("kIndex"); - var kWeight = Symbol("kWeight"); - var kMaxWeightPerServer = Symbol("kMaxWeightPerServer"); - var kErrorPenalty = Symbol("kErrorPenalty"); + var kFactory = /* @__PURE__ */ Symbol("factory"); + var kOptions = /* @__PURE__ */ Symbol("options"); + var kGreatestCommonDivisor = /* @__PURE__ */ Symbol("kGreatestCommonDivisor"); + var kCurrentWeight = /* @__PURE__ */ Symbol("kCurrentWeight"); + var kIndex = /* @__PURE__ */ Symbol("kIndex"); + var kWeight = /* @__PURE__ */ Symbol("kWeight"); + var kMaxWeightPerServer = /* @__PURE__ */ Symbol("kMaxWeightPerServer"); + var kErrorPenalty = /* @__PURE__ */ Symbol("kErrorPenalty"); function getGreatestCommonDivisor(a, b) { if (b === 0) return a; return getGreatestCommonDivisor(b, a % b); @@ -9096,14 +9112,14 @@ var require_agent = __commonJS({ var util = require_util(); var createRedirectInterceptor = require_redirectInterceptor(); var { WeakRef: WeakRef2, FinalizationRegistry } = require_dispatcher_weakref()(); - var kOnConnect = Symbol("onConnect"); - var kOnDisconnect = Symbol("onDisconnect"); - var kOnConnectionError = Symbol("onConnectionError"); - var kMaxRedirections = Symbol("maxRedirections"); - var kOnDrain = Symbol("onDrain"); - var kFactory = Symbol("factory"); - var kFinalizer = Symbol("finalizer"); - var kOptions = Symbol("options"); + var kOnConnect = /* @__PURE__ */ Symbol("onConnect"); + var kOnDisconnect = /* @__PURE__ */ Symbol("onDisconnect"); + var kOnConnectionError = /* @__PURE__ */ Symbol("onConnectionError"); + var kMaxRedirections = /* @__PURE__ */ Symbol("maxRedirections"); + var kOnDrain = /* @__PURE__ */ Symbol("onDrain"); + var kFactory = /* @__PURE__ */ Symbol("factory"); + var kFinalizer = /* @__PURE__ */ Symbol("finalizer"); + var kOptions = /* @__PURE__ */ Symbol("options"); function defaultFactory(origin, opts) { return opts && opts.connections === 1 ? new Client(origin, opts) : new Pool(origin, opts); } @@ -9212,11 +9228,11 @@ var require_readable = __commonJS({ var util = require_util(); var { ReadableStreamFrom, toUSVString } = require_util(); var Blob2; - var kConsume = Symbol("kConsume"); - var kReading = Symbol("kReading"); - var kBody = Symbol("kBody"); - var kAbort = Symbol("abort"); - var kContentType = Symbol("kContentType"); + var kConsume = /* @__PURE__ */ Symbol("kConsume"); + var kReading = /* @__PURE__ */ Symbol("kReading"); + var kBody = /* @__PURE__ */ Symbol("kBody"); + var kAbort = /* @__PURE__ */ Symbol("abort"); + var kContentType = /* @__PURE__ */ Symbol("kContentType"); var noop = () => { }; module.exports = class BodyReadable extends Readable { @@ -9502,8 +9518,8 @@ var require_abort_signal = __commonJS({ "node_modules/undici/lib/api/abort-signal.js"(exports, module) { var { addAbortListener } = require_util(); var { RequestAbortedError } = require_errors(); - var kListener = Symbol("kListener"); - var kSignal = Symbol("kSignal"); + var kListener = /* @__PURE__ */ Symbol("kListener"); + var kSignal = /* @__PURE__ */ Symbol("kSignal"); function abort(self) { if (self.abort) { self.abort(); @@ -9892,7 +9908,7 @@ var require_api_pipeline = __commonJS({ var { AsyncResource } = __require("async_hooks"); var { addSignal, removeSignal } = require_abort_signal(); var assert = __require("assert"); - var kResume = Symbol("resume"); + var kResume = /* @__PURE__ */ Symbol("resume"); var PipelineRequest = class extends Readable { constructor() { super({ autoDestroy: true }); @@ -10286,25 +10302,25 @@ var require_mock_symbols = __commonJS({ "node_modules/undici/lib/mock/mock-symbols.js"(exports, module) { "use strict"; module.exports = { - kAgent: Symbol("agent"), - kOptions: Symbol("options"), - kFactory: Symbol("factory"), - kDispatches: Symbol("dispatches"), - kDispatchKey: Symbol("dispatch key"), - kDefaultHeaders: Symbol("default headers"), - kDefaultTrailers: Symbol("default trailers"), - kContentLength: Symbol("content length"), - kMockAgent: Symbol("mock agent"), - kMockAgentSet: Symbol("mock agent set"), - kMockAgentGet: Symbol("mock agent get"), - kMockDispatch: Symbol("mock dispatch"), - kClose: Symbol("close"), - kOriginalClose: Symbol("original agent close"), - kOrigin: Symbol("origin"), - kIsMockActive: Symbol("is mock active"), - kNetConnect: Symbol("net connect"), - kGetNetConnect: Symbol("get net connect"), - kConnected: Symbol("connected") + kAgent: /* @__PURE__ */ Symbol("agent"), + kOptions: /* @__PURE__ */ Symbol("options"), + kFactory: /* @__PURE__ */ Symbol("factory"), + kDispatches: /* @__PURE__ */ Symbol("dispatches"), + kDispatchKey: /* @__PURE__ */ Symbol("dispatch key"), + kDefaultHeaders: /* @__PURE__ */ Symbol("default headers"), + kDefaultTrailers: /* @__PURE__ */ Symbol("default trailers"), + kContentLength: /* @__PURE__ */ Symbol("content length"), + kMockAgent: /* @__PURE__ */ Symbol("mock agent"), + kMockAgentSet: /* @__PURE__ */ Symbol("mock agent set"), + kMockAgentGet: /* @__PURE__ */ Symbol("mock agent get"), + kMockDispatch: /* @__PURE__ */ Symbol("mock dispatch"), + kClose: /* @__PURE__ */ Symbol("close"), + kOriginalClose: /* @__PURE__ */ Symbol("original agent close"), + kOrigin: /* @__PURE__ */ Symbol("origin"), + kIsMockActive: /* @__PURE__ */ Symbol("is mock active"), + kNetConnect: /* @__PURE__ */ Symbol("net connect"), + kGetNetConnect: /* @__PURE__ */ Symbol("get net connect"), + kConnected: /* @__PURE__ */ Symbol("connected") }; } }); @@ -11076,12 +11092,12 @@ var require_proxy_agent = __commonJS({ var DispatcherBase = require_dispatcher_base(); var { InvalidArgumentError, RequestAbortedError } = require_errors(); var buildConnector = require_connect(); - var kAgent = Symbol("proxy agent"); - var kClient = Symbol("proxy client"); - var kProxyHeaders = Symbol("proxy headers"); - var kRequestTls = Symbol("request tls settings"); - var kProxyTls = Symbol("proxy tls settings"); - var kConnectEndpoint = Symbol("connect endpoint function"); + var kAgent = /* @__PURE__ */ Symbol("proxy agent"); + var kClient = /* @__PURE__ */ Symbol("proxy client"); + var kProxyHeaders = /* @__PURE__ */ Symbol("proxy headers"); + var kRequestTls = /* @__PURE__ */ Symbol("request tls settings"); + var kProxyTls = /* @__PURE__ */ Symbol("proxy tls settings"); + var kConnectEndpoint = /* @__PURE__ */ Symbol("connect endpoint function"); function defaultProtocolPort(protocol) { return protocol === "https:" ? 443 : 80; } @@ -11488,7 +11504,7 @@ var require_RetryHandler = __commonJS({ var require_global2 = __commonJS({ "node_modules/undici/lib/global.js"(exports, module) { "use strict"; - var globalDispatcher = Symbol.for("undici.globalDispatcher.1"); + var globalDispatcher = /* @__PURE__ */ Symbol.for("undici.globalDispatcher.1"); var { InvalidArgumentError } = require_errors(); var Agent = require_agent(); if (getGlobalDispatcher() === void 0) { @@ -11563,8 +11579,8 @@ var require_headers = __commonJS({ var util = __require("util"); var { webidl } = require_webidl(); var assert = __require("assert"); - var kHeadersMap = Symbol("headers map"); - var kHeadersSortedMap = Symbol("headers map sorted"); + var kHeadersMap = /* @__PURE__ */ Symbol("headers map"); + var kHeadersSortedMap = /* @__PURE__ */ Symbol("headers map sorted"); function isHTTPWhiteSpaceCharCode(code) { return code === 10 || code === 13 || code === 9 || code === 32; } @@ -11891,7 +11907,7 @@ var require_headers = __commonJS({ callbackFn.apply(thisArg, [value, key, this]); } } - [Symbol.for("nodejs.util.inspect.custom")]() { + [/* @__PURE__ */ Symbol.for("nodejs.util.inspect.custom")]() { webidl.brandCheck(this, _Headers); return this[kHeadersList]; } @@ -12351,7 +12367,7 @@ var require_request2 = __commonJS({ var assert = __require("assert"); var { getMaxListeners, setMaxListeners, getEventListeners, defaultMaxListeners } = __require("events"); var TransformStream = globalThis.TransformStream; - var kAbortController = Symbol("abortController"); + var kAbortController = /* @__PURE__ */ Symbol("abortController"); var requestFinalizer = new FinalizationRegistry(({ signal, abort }) => { signal.removeEventListener("abort", abort); }); @@ -13997,12 +14013,12 @@ var require_symbols3 = __commonJS({ "node_modules/undici/lib/fileapi/symbols.js"(exports, module) { "use strict"; module.exports = { - kState: Symbol("FileReader state"), - kResult: Symbol("FileReader result"), - kError: Symbol("FileReader error"), - kLastProgressEventFired: Symbol("FileReader last progress event fired timestamp"), - kEvents: Symbol("FileReader events"), - kAborted: Symbol("FileReader aborted") + kState: /* @__PURE__ */ Symbol("FileReader state"), + kResult: /* @__PURE__ */ Symbol("FileReader result"), + kError: /* @__PURE__ */ Symbol("FileReader error"), + kLastProgressEventFired: /* @__PURE__ */ Symbol("FileReader last progress event fired timestamp"), + kEvents: /* @__PURE__ */ Symbol("FileReader events"), + kAborted: /* @__PURE__ */ Symbol("FileReader aborted") }; } }); @@ -14012,7 +14028,7 @@ var require_progressevent = __commonJS({ "node_modules/undici/lib/fileapi/progressevent.js"(exports, module) { "use strict"; var { webidl } = require_webidl(); - var kState = Symbol("ProgressEvent state"); + var kState = /* @__PURE__ */ Symbol("ProgressEvent state"); var ProgressEvent = class _ProgressEvent extends Event { constructor(type, eventInitDict = {}) { type = webidl.converters.DOMString(type); @@ -15962,14 +15978,14 @@ var require_symbols5 = __commonJS({ "node_modules/undici/lib/websocket/symbols.js"(exports, module) { "use strict"; module.exports = { - kWebSocketURL: Symbol("url"), - kReadyState: Symbol("ready state"), - kController: Symbol("controller"), - kResponse: Symbol("response"), - kBinaryType: Symbol("binary type"), - kSentClose: Symbol("sent close"), - kReceivedClose: Symbol("received close"), - kByteParser: Symbol("byte parser") + kWebSocketURL: /* @__PURE__ */ Symbol("url"), + kReadyState: /* @__PURE__ */ Symbol("ready state"), + kController: /* @__PURE__ */ Symbol("controller"), + kResponse: /* @__PURE__ */ Symbol("response"), + kBinaryType: /* @__PURE__ */ Symbol("binary type"), + kSentClose: /* @__PURE__ */ Symbol("sent close"), + kReceivedClose: /* @__PURE__ */ Symbol("received close"), + kByteParser: /* @__PURE__ */ Symbol("byte parser") }; } }); @@ -17314,15 +17330,25 @@ var require_lib = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -17351,7 +17377,9 @@ var require_lib = __commonJS({ }); }; Object.defineProperty(exports, "__esModule", { value: true }); - exports.HttpClient = exports.isHttps = exports.HttpClientResponse = exports.HttpClientError = exports.getProxyUrl = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; + exports.HttpClient = exports.HttpClientResponse = exports.HttpClientError = exports.MediaTypes = exports.Headers = exports.HttpCodes = void 0; + exports.getProxyUrl = getProxyUrl; + exports.isHttps = isHttps; var http = __importStar(__require("http")); var https = __importStar(__require("https")); var pm = __importStar(require_proxy()); @@ -17400,7 +17428,6 @@ var require_lib = __commonJS({ const proxyUrl = pm.getProxyUrl(new URL(serverUrl)); return proxyUrl ? proxyUrl.href : ""; } - exports.getProxyUrl = getProxyUrl; var HttpRedirectCodes = [ HttpCodes.MovedPermanently, HttpCodes.ResourceMoved, @@ -17461,7 +17488,6 @@ var require_lib = __commonJS({ const parsedUrl = new URL(requestUrl); return parsedUrl.protocol === "https:"; } - exports.isHttps = isHttps; var HttpClient = class { constructor(userAgent, handlers, requestOptions) { this._ignoreSslError = false; @@ -17472,7 +17498,7 @@ var require_lib = __commonJS({ this._maxRetries = 1; this._keepAlive = false; this._disposed = false; - this.userAgent = userAgent; + this.userAgent = this._getUserAgentWithOrchestrationId(userAgent); this.handlers = handlers || []; this.requestOptions = requestOptions; if (requestOptions) { @@ -17544,36 +17570,36 @@ var require_lib = __commonJS({ * Gets a typed object from an endpoint * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise */ - getJson(requestUrl, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { + getJson(requestUrl_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, additionalHeaders = {}) { additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); const res = yield this.get(requestUrl, additionalHeaders); return this._processResponse(res, this.requestOptions); }); } - postJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { + postJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { const data = JSON.stringify(obj, null, 2); additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); const res = yield this.post(requestUrl, data, additionalHeaders); return this._processResponse(res, this.requestOptions); }); } - putJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { + putJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { const data = JSON.stringify(obj, null, 2); additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); const res = yield this.put(requestUrl, data, additionalHeaders); return this._processResponse(res, this.requestOptions); }); } - patchJson(requestUrl, obj, additionalHeaders = {}) { - return __awaiter(this, void 0, void 0, function* () { + patchJson(requestUrl_1, obj_1) { + return __awaiter(this, arguments, void 0, function* (requestUrl, obj, additionalHeaders = {}) { const data = JSON.stringify(obj, null, 2); additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); + additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultContentTypeHeader(additionalHeaders, MediaTypes.ApplicationJson); const res = yield this.patch(requestUrl, data, additionalHeaders); return this._processResponse(res, this.requestOptions); }); @@ -17769,12 +17795,65 @@ var require_lib = __commonJS({ } return lowercaseKeys(headers || {}); } + /** + * Gets an existing header value or returns a default. + * Handles converting number header values to strings since HTTP headers must be strings. + * Note: This returns string | string[] since some headers can have multiple values. + * For headers that must always be a single string (like Content-Type), use the + * specialized _getExistingOrDefaultContentTypeHeader method instead. + */ _getExistingOrDefaultHeader(additionalHeaders, header, _default) { let clientHeader; if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; + const headerValue = lowercaseKeys(this.requestOptions.headers)[header]; + if (headerValue) { + clientHeader = typeof headerValue === "number" ? headerValue.toString() : headerValue; + } + } + const additionalValue = additionalHeaders[header]; + if (additionalValue !== void 0) { + return typeof additionalValue === "number" ? additionalValue.toString() : additionalValue; + } + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; + } + /** + * Specialized version of _getExistingOrDefaultHeader for Content-Type header. + * Always returns a single string (not an array) since Content-Type should be a single value. + * Converts arrays to comma-separated strings and numbers to strings to ensure type safety. + * This was split from _getExistingOrDefaultHeader to provide stricter typing for callers + * that assign the result to places expecting a string (e.g., additionalHeaders[Headers.ContentType]). + */ + _getExistingOrDefaultContentTypeHeader(additionalHeaders, _default) { + let clientHeader; + if (this.requestOptions && this.requestOptions.headers) { + const headerValue = lowercaseKeys(this.requestOptions.headers)[Headers.ContentType]; + if (headerValue) { + if (typeof headerValue === "number") { + clientHeader = String(headerValue); + } else if (Array.isArray(headerValue)) { + clientHeader = headerValue.join(", "); + } else { + clientHeader = headerValue; + } + } } - return additionalHeaders[header] || clientHeader || _default; + const additionalValue = additionalHeaders[Headers.ContentType]; + if (additionalValue !== void 0) { + if (typeof additionalValue === "number") { + return String(additionalValue); + } else if (Array.isArray(additionalValue)) { + return additionalValue.join(", "); + } else { + return additionalValue; + } + } + if (clientHeader !== void 0) { + return clientHeader; + } + return _default; } _getAgent(parsedUrl) { let agent; @@ -17844,6 +17923,15 @@ var require_lib = __commonJS({ } return proxyAgent; } + _getUserAgentWithOrchestrationId(userAgent) { + const baseUserAgent = userAgent || "actions/http-client"; + const orchId = process.env["ACTIONS_ORCHESTRATION_ID"]; + if (orchId) { + const sanitizedId = orchId.replace(/[^a-z0-9_.-]/gi, "_"); + return `${baseUserAgent} actions_orchestration_id/${sanitizedId}`; + } + return baseUserAgent; + } _performExponentialBackoff(retryNumber) { return __awaiter(this, void 0, void 0, function* () { retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); @@ -18074,8 +18162,8 @@ var require_oidc_utils = __commonJS({ return runtimeUrl; } static getCall(id_token_url) { - var _a; return __awaiter(this, void 0, void 0, function* () { + var _a; const httpclient = _OidcClient.createHttpClient(); const res = yield httpclient.getJson(id_token_url).catch((error3) => { throw new Error(`Failed to get ID Token. @@ -18429,30 +18517,39 @@ var require_path_utils = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports, "__esModule", { value: true }); - exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = void 0; + exports.toPosixPath = toPosixPath; + exports.toWin32Path = toWin32Path; + exports.toPlatformPath = toPlatformPath; var path2 = __importStar(__require("path")); function toPosixPath(pth) { return pth.replace(/[\\]/g, "/"); } - exports.toPosixPath = toPosixPath; function toWin32Path(pth) { return pth.replace(/[/]/g, "\\"); } - exports.toWin32Path = toWin32Path; function toPlatformPath(pth) { return pth.replace(/[/\\]/g, path2.sep); } - exports.toPlatformPath = toPlatformPath; } }); @@ -18462,9 +18559,13 @@ var require_io_util = __commonJS({ "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { - return m[k]; - } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; @@ -18474,15 +18575,25 @@ var require_io_util = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -18512,17 +18623,32 @@ var require_io_util = __commonJS({ }; var _a; Object.defineProperty(exports, "__esModule", { value: true }); - exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readlink = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; + exports.READONLY = exports.UV_FS_O_EXLOCK = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rm = exports.rename = exports.readdir = exports.open = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; + exports.readlink = readlink; + exports.exists = exists; + exports.isDirectory = isDirectory; + exports.isRooted = isRooted; + exports.tryGetExecutablePath = tryGetExecutablePath; + exports.getCmdPath = getCmdPath; var fs2 = __importStar(__require("fs")); var path2 = __importStar(__require("path")); - _a = fs2.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; + _a = fs2.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.open = _a.open, exports.readdir = _a.readdir, exports.rename = _a.rename, exports.rm = _a.rm, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; exports.IS_WINDOWS = process.platform === "win32"; + function readlink(fsPath) { + return __awaiter(this, void 0, void 0, function* () { + const result = yield fs2.promises.readlink(fsPath); + if (exports.IS_WINDOWS && !result.endsWith("\\")) { + return `${result}\\`; + } + return result; + }); + } exports.UV_FS_O_EXLOCK = 268435456; exports.READONLY = fs2.constants.O_RDONLY; function exists(fsPath) { return __awaiter(this, void 0, void 0, function* () { try { - yield exports.stat(fsPath); + yield (0, exports.stat)(fsPath); } catch (err) { if (err.code === "ENOENT") { return false; @@ -18532,14 +18658,12 @@ var require_io_util = __commonJS({ return true; }); } - exports.exists = exists; - function isDirectory(fsPath, useStat = false) { - return __awaiter(this, void 0, void 0, function* () { - const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); + function isDirectory(fsPath_1) { + return __awaiter(this, arguments, void 0, function* (fsPath, useStat = false) { + const stats = useStat ? yield (0, exports.stat)(fsPath) : yield (0, exports.lstat)(fsPath); return stats.isDirectory(); }); } - exports.isDirectory = isDirectory; function isRooted(p) { p = normalizeSeparators(p); if (!p) { @@ -18550,12 +18674,11 @@ var require_io_util = __commonJS({ } return p.startsWith("/"); } - exports.isRooted = isRooted; function tryGetExecutablePath(filePath, extensions) { return __awaiter(this, void 0, void 0, function* () { let stats = void 0; try { - stats = yield exports.stat(filePath); + stats = yield (0, exports.stat)(filePath); } catch (err) { if (err.code !== "ENOENT") { console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); @@ -18578,7 +18701,7 @@ var require_io_util = __commonJS({ filePath = originalFilePath + extension; stats = void 0; try { - stats = yield exports.stat(filePath); + stats = yield (0, exports.stat)(filePath); } catch (err) { if (err.code !== "ENOENT") { console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); @@ -18589,7 +18712,7 @@ var require_io_util = __commonJS({ try { const directory = path2.dirname(filePath); const upperName = path2.basename(filePath).toUpperCase(); - for (const actualName of yield exports.readdir(directory)) { + for (const actualName of yield (0, exports.readdir)(directory)) { if (upperName === actualName.toUpperCase()) { filePath = path2.join(directory, actualName); break; @@ -18609,7 +18732,6 @@ var require_io_util = __commonJS({ return ""; }); } - exports.tryGetExecutablePath = tryGetExecutablePath; function normalizeSeparators(p) { p = p || ""; if (exports.IS_WINDOWS) { @@ -18619,13 +18741,12 @@ var require_io_util = __commonJS({ return p.replace(/\/\/+/g, "/"); } function isUnixExecutable(stats) { - return (stats.mode & 1) > 0 || (stats.mode & 8) > 0 && stats.gid === process.getgid() || (stats.mode & 64) > 0 && stats.uid === process.getuid(); + return (stats.mode & 1) > 0 || (stats.mode & 8) > 0 && process.getgid !== void 0 && stats.gid === process.getgid() || (stats.mode & 64) > 0 && process.getuid !== void 0 && stats.uid === process.getuid(); } function getCmdPath() { var _a2; return (_a2 = process.env["COMSPEC"]) !== null && _a2 !== void 0 ? _a2 : `cmd.exe`; } - exports.getCmdPath = getCmdPath; } }); @@ -18635,9 +18756,13 @@ var require_io = __commonJS({ "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { - return m[k]; - } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; @@ -18647,15 +18772,25 @@ var require_io = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -18684,12 +18819,17 @@ var require_io = __commonJS({ }); }; Object.defineProperty(exports, "__esModule", { value: true }); - exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; + exports.cp = cp; + exports.mv = mv; + exports.rmRF = rmRF; + exports.mkdirP = mkdirP; + exports.which = which; + exports.findInPath = findInPath; var assert_1 = __require("assert"); var path2 = __importStar(__require("path")); var ioUtil = __importStar(require_io_util()); - function cp(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { + function cp(source_1, dest_1) { + return __awaiter(this, arguments, void 0, function* (source, dest, options = {}) { const { force, recursive, copySourceDirectory } = readCopyOptions(options); const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; if (destStat && destStat.isFile() && !force) { @@ -18714,9 +18854,8 @@ var require_io = __commonJS({ } }); } - exports.cp = cp; - function mv(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { + function mv(source_1, dest_1) { + return __awaiter(this, arguments, void 0, function* (source, dest, options = {}) { if (yield ioUtil.exists(dest)) { let destExists = true; if (yield ioUtil.isDirectory(dest)) { @@ -18735,7 +18874,6 @@ var require_io = __commonJS({ yield ioUtil.rename(source, dest); }); } - exports.mv = mv; function rmRF(inputPath) { return __awaiter(this, void 0, void 0, function* () { if (ioUtil.IS_WINDOWS) { @@ -18755,14 +18893,12 @@ var require_io = __commonJS({ } }); } - exports.rmRF = rmRF; function mkdirP(fsPath) { return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(fsPath, "a path argument must be provided"); + (0, assert_1.ok)(fsPath, "a path argument must be provided"); yield ioUtil.mkdir(fsPath, { recursive: true }); }); } - exports.mkdirP = mkdirP; function which(tool, check) { return __awaiter(this, void 0, void 0, function* () { if (!tool) { @@ -18786,7 +18922,6 @@ var require_io = __commonJS({ return ""; }); } - exports.which = which; function findInPath(tool) { return __awaiter(this, void 0, void 0, function* () { if (!tool) { @@ -18828,7 +18963,6 @@ var require_io = __commonJS({ return matches; }); } - exports.findInPath = findInPath; function readCopyOptions(options) { const force = options.force == null ? true : options.force; const recursive = Boolean(options.recursive); @@ -18883,9 +19017,13 @@ var require_toolrunner = __commonJS({ "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { - return m[k]; - } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; @@ -18895,15 +19033,25 @@ var require_toolrunner = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -18932,7 +19080,8 @@ var require_toolrunner = __commonJS({ }); }; Object.defineProperty(exports, "__esModule", { value: true }); - exports.argStringToArray = exports.ToolRunner = void 0; + exports.ToolRunner = void 0; + exports.argStringToArray = argStringToArray; var os = __importStar(__require("os")); var events = __importStar(__require("events")); var child = __importStar(__require("child_process")); @@ -19295,7 +19444,6 @@ var require_toolrunner = __commonJS({ } return args; } - exports.argStringToArray = argStringToArray; var ExecState = class _ExecState extends events.EventEmitter { constructor(options, toolPath) { super(); @@ -19323,7 +19471,7 @@ var require_toolrunner = __commonJS({ if (this.processClosed) { this._setResult(); } else if (this.processExited) { - this.timeout = timers_1.setTimeout(_ExecState.HandleTimeout, this.delay, this); + this.timeout = (0, timers_1.setTimeout)(_ExecState.HandleTimeout, this.delay, this); } } _debug(message) { @@ -19367,9 +19515,13 @@ var require_exec = __commonJS({ "use strict"; var __createBinding = exports && exports.__createBinding || (Object.create ? (function(o, m, k, k2) { if (k2 === void 0) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { - return m[k]; - } }); + var desc = Object.getOwnPropertyDescriptor(m, k); + if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) { + desc = { enumerable: true, get: function() { + return m[k]; + } }; + } + Object.defineProperty(o, k2, desc); }) : (function(o, m, k, k2) { if (k2 === void 0) k2 = k; o[k2] = m[k]; @@ -19379,15 +19531,25 @@ var require_exec = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -19416,7 +19578,8 @@ var require_exec = __commonJS({ }); }; Object.defineProperty(exports, "__esModule", { value: true }); - exports.getExecOutput = exports.exec = void 0; + exports.exec = exec; + exports.getExecOutput = getExecOutput; var string_decoder_1 = __require("string_decoder"); var tr = __importStar(require_toolrunner()); function exec(commandLine, args, options) { @@ -19431,10 +19594,9 @@ var require_exec = __commonJS({ return runner.exec(); }); } - exports.exec = exec; function getExecOutput(commandLine, args, options) { - var _a, _b; return __awaiter(this, void 0, void 0, function* () { + var _a, _b; let stdout = ""; let stderr = ""; const stdoutDecoder = new string_decoder_1.StringDecoder("utf8"); @@ -19464,7 +19626,6 @@ var require_exec = __commonJS({ }; }); } - exports.getExecOutput = getExecOutput; } }); @@ -19490,15 +19651,25 @@ var require_platform = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -19530,7 +19701,8 @@ var require_platform = __commonJS({ return mod && mod.__esModule ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); - exports.getDetails = exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; + exports.isLinux = exports.isMacOS = exports.isWindows = exports.arch = exports.platform = void 0; + exports.getDetails = getDetails; var os_1 = __importDefault(__require("os")); var exec = __importStar(require_exec()); var getWindowsInfo = () => __awaiter(void 0, void 0, void 0, function* () { @@ -19583,7 +19755,6 @@ var require_platform = __commonJS({ }); }); } - exports.getDetails = getDetails; } }); @@ -19609,15 +19780,25 @@ var require_core = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -19646,7 +19827,28 @@ var require_core = __commonJS({ }); }; Object.defineProperty(exports, "__esModule", { value: true }); - exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.getIDToken = exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.notice = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; + exports.platform = exports.toPlatformPath = exports.toWin32Path = exports.toPosixPath = exports.markdownSummary = exports.summary = exports.ExitCode = void 0; + exports.exportVariable = exportVariable; + exports.setSecret = setSecret; + exports.addPath = addPath; + exports.getInput = getInput3; + exports.getMultilineInput = getMultilineInput; + exports.getBooleanInput = getBooleanInput2; + exports.setOutput = setOutput; + exports.setCommandEcho = setCommandEcho; + exports.setFailed = setFailed2; + exports.isDebug = isDebug; + exports.debug = debug; + exports.error = error3; + exports.warning = warning; + exports.notice = notice; + exports.info = info7; + exports.startGroup = startGroup; + exports.endGroup = endGroup; + exports.group = group; + exports.saveState = saveState; + exports.getState = getState; + exports.getIDToken = getIDToken; var command_1 = require_command(); var file_command_1 = require_file_command(); var utils_1 = require_utils(); @@ -19667,11 +19869,9 @@ var require_core = __commonJS({ } (0, command_1.issueCommand)("set-env", { name }, convertedVal); } - exports.exportVariable = exportVariable; function setSecret(secret) { (0, command_1.issueCommand)("add-mask", {}, secret); } - exports.setSecret = setSecret; function addPath(inputPath) { const filePath = process.env["GITHUB_PATH"] || ""; if (filePath) { @@ -19681,7 +19881,6 @@ var require_core = __commonJS({ } process.env["PATH"] = `${inputPath}${path2.delimiter}${process.env["PATH"]}`; } - exports.addPath = addPath; function getInput3(name, options) { const val = process.env[`INPUT_${name.replace(/ /g, "_").toUpperCase()}`] || ""; if (options && options.required && !val) { @@ -19692,7 +19891,6 @@ var require_core = __commonJS({ } return val.trim(); } - exports.getInput = getInput3; function getMultilineInput(name, options) { const inputs = getInput3(name, options).split("\n").filter((x) => x !== ""); if (options && options.trimWhitespace === false) { @@ -19700,7 +19898,6 @@ var require_core = __commonJS({ } return inputs.map((input) => input.trim()); } - exports.getMultilineInput = getMultilineInput; function getBooleanInput2(name, options) { const trueValue = ["true", "True", "TRUE"]; const falseValue = ["false", "False", "FALSE"]; @@ -19712,7 +19909,6 @@ var require_core = __commonJS({ throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name} Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); } - exports.getBooleanInput = getBooleanInput2; function setOutput(name, value) { const filePath = process.env["GITHUB_OUTPUT"] || ""; if (filePath) { @@ -19721,48 +19917,37 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); process.stdout.write(os.EOL); (0, command_1.issueCommand)("set-output", { name }, (0, utils_1.toCommandValue)(value)); } - exports.setOutput = setOutput; function setCommandEcho(enabled) { (0, command_1.issue)("echo", enabled ? "on" : "off"); } - exports.setCommandEcho = setCommandEcho; function setFailed2(message) { process.exitCode = ExitCode.Failure; error3(message); } - exports.setFailed = setFailed2; function isDebug() { return process.env["RUNNER_DEBUG"] === "1"; } - exports.isDebug = isDebug; function debug(message) { (0, command_1.issueCommand)("debug", {}, message); } - exports.debug = debug; function error3(message, properties = {}) { (0, command_1.issueCommand)("error", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } - exports.error = error3; function warning(message, properties = {}) { (0, command_1.issueCommand)("warning", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } - exports.warning = warning; function notice(message, properties = {}) { (0, command_1.issueCommand)("notice", (0, utils_1.toCommandProperties)(properties), message instanceof Error ? message.toString() : message); } - exports.notice = notice; function info7(message) { process.stdout.write(message + os.EOL); } - exports.info = info7; function startGroup(name) { (0, command_1.issue)("group", name); } - exports.startGroup = startGroup; function endGroup() { (0, command_1.issue)("endgroup"); } - exports.endGroup = endGroup; function group(name, fn) { return __awaiter(this, void 0, void 0, function* () { startGroup(name); @@ -19775,7 +19960,6 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); return result; }); } - exports.group = group; function saveState(name, value) { const filePath = process.env["GITHUB_STATE"] || ""; if (filePath) { @@ -19783,17 +19967,14 @@ Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); } (0, command_1.issueCommand)("save-state", { name }, (0, utils_1.toCommandValue)(value)); } - exports.saveState = saveState; function getState(name) { return process.env[`STATE_${name}`] || ""; } - exports.getState = getState; function getIDToken(aud) { return __awaiter(this, void 0, void 0, function* () { return yield oidc_utils_1.OidcClient.getIDToken(aud); }); } - exports.getIDToken = getIDToken; var summary_1 = require_summary(); Object.defineProperty(exports, "summary", { enumerable: true, get: function() { return summary_1.summary; @@ -19897,15 +20078,25 @@ var require_utils3 = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); var __awaiter = exports && exports.__awaiter || function(thisArg, _arguments, P, generator) { function adopt(value) { return value instanceof P ? value : new P(function(resolve) { @@ -19934,7 +20125,11 @@ var require_utils3 = __commonJS({ }); }; Object.defineProperty(exports, "__esModule", { value: true }); - exports.getApiBaseUrl = exports.getProxyFetch = exports.getProxyAgentDispatcher = exports.getProxyAgent = exports.getAuthString = void 0; + exports.getAuthString = getAuthString; + exports.getProxyAgent = getProxyAgent; + exports.getProxyAgentDispatcher = getProxyAgentDispatcher; + exports.getProxyFetch = getProxyFetch; + exports.getApiBaseUrl = getApiBaseUrl; var httpClient = __importStar(require_lib()); var undici_1 = require_undici(); function getAuthString(token, options) { @@ -19945,17 +20140,14 @@ var require_utils3 = __commonJS({ } return typeof options.auth === "string" ? options.auth : `token ${token}`; } - exports.getAuthString = getAuthString; function getProxyAgent(destinationUrl) { const hc = new httpClient.HttpClient(); return hc.getAgent(destinationUrl); } - exports.getProxyAgent = getProxyAgent; function getProxyAgentDispatcher(destinationUrl) { const hc = new httpClient.HttpClient(); return hc.getAgentDispatcher(destinationUrl); } - exports.getProxyAgentDispatcher = getProxyAgentDispatcher; function getProxyFetch(destinationUrl) { const httpDispatcher = getProxyAgentDispatcher(destinationUrl); const proxyFetch = (url, opts) => __awaiter(this, void 0, void 0, function* () { @@ -19963,11 +20155,9 @@ var require_utils3 = __commonJS({ }); return proxyFetch; } - exports.getProxyFetch = getProxyFetch; function getApiBaseUrl() { return process.env["GITHUB_API_URL"] || "https://api.github.com"; } - exports.getApiBaseUrl = getApiBaseUrl; } }); @@ -23803,17 +23993,28 @@ var require_utils4 = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports, "__esModule", { value: true }); - exports.getOctokitOptions = exports.GitHub = exports.defaults = exports.context = void 0; + exports.GitHub = exports.defaults = exports.context = void 0; + exports.getOctokitOptions = getOctokitOptions; var Context = __importStar(require_context()); var Utils = __importStar(require_utils3()); var core_1 = require_dist_node8(); @@ -23837,7 +24038,6 @@ var require_utils4 = __commonJS({ } return opts; } - exports.getOctokitOptions = getOctokitOptions; } }); @@ -23863,17 +24063,28 @@ var require_github = __commonJS({ }) : function(o, v) { o["default"] = v; }); - var __importStar = exports && exports.__importStar || function(mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) { - for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - } - __setModuleDefault(result, mod); - return result; - }; + var __importStar = exports && exports.__importStar || /* @__PURE__ */ (function() { + var ownKeys = function(o) { + ownKeys = Object.getOwnPropertyNames || function(o2) { + var ar = []; + for (var k in o2) if (Object.prototype.hasOwnProperty.call(o2, k)) ar[ar.length] = k; + return ar; + }; + return ownKeys(o); + }; + return function(mod) { + if (mod && mod.__esModule) return mod; + var result = {}; + if (mod != null) { + for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]); + } + __setModuleDefault(result, mod); + return result; + }; + })(); Object.defineProperty(exports, "__esModule", { value: true }); - exports.getOctokit = exports.context = void 0; + exports.context = void 0; + exports.getOctokit = getOctokit2; var Context = __importStar(require_context()); var utils_1 = require_utils4(); exports.context = new Context.Context(); @@ -23881,7 +24092,6 @@ var require_github = __commonJS({ const GitHubWithPlugins = utils_1.GitHub.plugin(...additionalPlugins); return new GitHubWithPlugins((0, utils_1.getOctokitOptions)(token, options)); } - exports.getOctokit = getOctokit2; } }); @@ -24992,6 +25202,52 @@ function formatBytes(bytes) { } // src/checks/dependency-size.ts +function buildPackageGroups(packageSizes) { + const packageGroups = /* @__PURE__ */ new Map(); + for (const [pkgKey, size] of packageSizes.entries()) { + const atIndex = pkgKey.lastIndexOf("@"); + const name = pkgKey.substring(0, atIndex); + const version = pkgKey.substring(atIndex + 1); + const group = packageGroups.get(name) ?? { added: [], removed: [] }; + if (size !== null && size < 0) { + group.removed.push({ version, size }); + } else { + group.added.push({ version, size }); + } + packageGroups.set(name, group); + } + return packageGroups; +} +function createDisplayEntries(packageGroups) { + const displayEntries = []; + for (const [name, group] of packageGroups.entries()) { + if (group.added.length === 1 && group.removed.length === 1 && group.added[0].size !== null && group.removed[0].size !== null) { + const netSize = group.added[0].size + group.removed[0].size; + displayEntries.push({ + label: `${name}@${group.removed[0].version} \u2192 ${name}@${group.added[0].version}`, + size: netSize, + sortSize: netSize + }); + } else { + for (const added of group.added) { + displayEntries.push({ + label: `${name}@${added.version}`, + size: added.size, + sortSize: added.size ?? 0 + }); + } + for (const removed of group.removed) { + displayEntries.push({ + label: `${name}@${removed.version}`, + size: removed.size, + sortSize: removed.size ?? 0 + }); + } + } + } + displayEntries.sort((a, b) => Math.abs(b.sortSize) - Math.abs(a.sortSize)); + return displayEntries; +} async function removeUnsupportedOptionalDependencies(lockFile, versionInfo) { const allOptionalVersions = /* @__PURE__ */ new Map(); for (const pkg of lockFile.packages) { @@ -25064,8 +25320,10 @@ async function scanForDependencySize(messages, threshold, currentDeps, baseDeps, ); const shouldShow = threshold === -1 || sizeData !== null && sizeData.totalSize >= threshold; if (shouldShow && sizeData !== null) { - const packageRows = Array.from(sizeData.packageSizes.entries()).sort(([, a], [, b]) => (b ?? Infinity) - (a ?? Infinity)).map( - ([pkg, size]) => `| ${pkg} | ${size === null ? "_Unknown_" : formatBytes(size)} |` + const packageGroups = buildPackageGroups(sizeData.packageSizes); + const displayEntries = createDisplayEntries(packageGroups); + const packageRows = displayEntries.map( + ({ label, size }) => `| ${label} | ${size === null ? "_Unknown_" : formatBytes(size)} |` ).join("\n"); let alert = ""; if (threshold !== -1 && sizeData.totalSize >= threshold) { diff --git a/package-lock.json b/package-lock.json index 24f0e18..d987ed0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,8 +9,8 @@ "version": "0.0.1", "license": "MIT", "devDependencies": { - "@actions/core": "^2.0.1", - "@actions/github": "^6.0.1", + "@actions/core": "^2.0.2", + "@actions/github": "^7.0.0", "@eslint/js": "^9.39.2", "@types/node": "^25.0.3", "esbuild": "^0.27.2", @@ -25,25 +25,14 @@ } }, "node_modules/@actions/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.1.tgz", - "integrity": "sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.2.tgz", + "integrity": "sha512-Ast1V7yHbGAhplAsuVlnb/5J8Mtr/Zl6byPPL+Qjq3lmfIgWF1ak1iYfF/079cRERiuTALTXkSuEUdZeDCfGtA==", "dev": true, "license": "MIT", "dependencies": { "@actions/exec": "^2.0.0", - "@actions/http-client": "^3.0.0" - } - }, - "node_modules/@actions/core/node_modules/@actions/http-client": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.0.tgz", - "integrity": "sha512-1s3tXAfVMSz9a4ZEBkXXRQD4QhY3+GAsWSbaYpeknPOKEeyRiU3lH+bHiLMZdo2x/fIeQ/hscL1wCkDLVM2DZQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "tunnel": "^0.0.6", - "undici": "^5.28.5" + "@actions/http-client": "^3.0.1" } }, "node_modules/@actions/exec": { @@ -57,13 +46,13 @@ } }, "node_modules/@actions/github": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@actions/github/-/github-6.0.1.tgz", - "integrity": "sha512-xbZVcaqD4XnQAe35qSQqskb3SqIAfRyLBrHMd/8TuL7hJSz2QtbDwnNM8zWx4zO5l2fnGtseNE3MbEvD7BxVMw==", + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/@actions/github/-/github-7.0.0.tgz", + "integrity": "sha512-PyGODO938aoBTZd/IfN/+e+Pd5hUcVpyf+thm4CPESLeqhdSkq5QwMTGX9v84XHE1ifmHWBQ60KB8kIgm96opw==", "dev": true, "license": "MIT", "dependencies": { - "@actions/http-client": "^2.2.0", + "@actions/http-client": "^3.0.1", "@octokit/core": "^5.0.1", "@octokit/plugin-paginate-rest": "^9.2.2", "@octokit/plugin-rest-endpoint-methods": "^10.4.0", @@ -73,14 +62,14 @@ } }, "node_modules/@actions/http-client": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-2.2.3.tgz", - "integrity": "sha512-mx8hyJi/hjFvbPokCg4uRd4ZX78t+YyRPtnKWwIl+RzNaVuFpQHfmlGVfsKEJN8LwTCvL+DfVgAM04XaHkm6bA==", + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.1.tgz", + "integrity": "sha512-SbGS8c/vySbNO3kjFgSW77n83C4MQx/Yoe+b1hAdpuvfHxnkHzDq2pWljUpAA56Si1Gae/7zjeZsV0CYjmLo/w==", "dev": true, "license": "MIT", "dependencies": { "tunnel": "^0.0.6", - "undici": "^5.25.4" + "undici": "^5.28.5" } }, "node_modules/@actions/io": { diff --git a/package.json b/package.json index 767ada5..285ed29 100644 --- a/package.json +++ b/package.json @@ -38,8 +38,8 @@ "test": "vitest run" }, "devDependencies": { - "@actions/core": "^2.0.1", - "@actions/github": "^6.0.1", + "@actions/core": "^2.0.2", + "@actions/github": "^7.0.0", "@eslint/js": "^9.39.2", "@types/node": "^25.0.3", "esbuild": "^0.27.2", diff --git a/src/checks/dependency-size.ts b/src/checks/dependency-size.ts index 8dcec76..d41ba99 100644 --- a/src/checks/dependency-size.ts +++ b/src/checks/dependency-size.ts @@ -7,6 +7,82 @@ import { } from '../npm.js'; import {formatBytes} from '../common.js'; +interface PackageGroup { + added: Array<{version: string; size: number | null}>; + removed: Array<{version: string; size: number | null}>; +} + +interface DisplayEntry { + label: string; + size: number | null; + sortSize: number; +} + +function buildPackageGroups( + packageSizes: Map +): Map { + const packageGroups = new Map(); + + for (const [pkgKey, size] of packageSizes.entries()) { + const atIndex = pkgKey.lastIndexOf('@'); + const name = pkgKey.substring(0, atIndex); + const version = pkgKey.substring(atIndex + 1); + + const group = packageGroups.get(name) ?? {added: [], removed: []}; + + if (size !== null && size < 0) { + group.removed.push({version, size}); + } else { + group.added.push({version, size}); + } + + packageGroups.set(name, group); + } + + return packageGroups; +} + +function createDisplayEntries( + packageGroups: Map +): DisplayEntry[] { + const displayEntries: DisplayEntry[] = []; + + for (const [name, group] of packageGroups.entries()) { + if ( + group.added.length === 1 && + group.removed.length === 1 && + group.added[0].size !== null && + group.removed[0].size !== null + ) { + const netSize = group.added[0].size + group.removed[0].size; + displayEntries.push({ + label: `${name}@${group.removed[0].version} → ${name}@${group.added[0].version}`, + size: netSize, + sortSize: netSize + }); + } else { + for (const added of group.added) { + displayEntries.push({ + label: `${name}@${added.version}`, + size: added.size, + sortSize: added.size ?? 0 + }); + } + for (const removed of group.removed) { + displayEntries.push({ + label: `${name}@${removed.version}`, + size: removed.size, + sortSize: removed.size ?? 0 + }); + } + } + } + + displayEntries.sort((a, b) => Math.abs(b.sortSize) - Math.abs(a.sortSize)); + + return displayEntries; +} + async function removeUnsupportedOptionalDependencies( lockFile: ParsedLockFile, versionInfo: Array<{name: string; version: string; isNewPackage?: boolean}> @@ -118,11 +194,13 @@ export async function scanForDependencySize( (sizeData !== null && sizeData.totalSize >= threshold); if (shouldShow && sizeData !== null) { - const packageRows = Array.from(sizeData.packageSizes.entries()) - .sort(([, a], [, b]) => (b ?? Infinity) - (a ?? Infinity)) + const packageGroups = buildPackageGroups(sizeData.packageSizes); + const displayEntries = createDisplayEntries(packageGroups); + + const packageRows = displayEntries .map( - ([pkg, size]) => - `| ${pkg} | ${size === null ? '_Unknown_' : formatBytes(size)} |` + ({label, size}) => + `| ${label} | ${size === null ? '_Unknown_' : formatBytes(size)} |` ) .join('\n'); diff --git a/test/checks/__snapshots__/dependency-size_test.ts.snap b/test/checks/__snapshots__/dependency-size_test.ts.snap new file mode 100644 index 0000000..70188f1 --- /dev/null +++ b/test/checks/__snapshots__/dependency-size_test.ts.snap @@ -0,0 +1,133 @@ +// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html + +exports[`scanForDependencySize > should not report changes below the threshold 1`] = ` +{ + "debug": [], + "error": [], + "info": [ + "Found 1 new package versions", + "Found 0 removed package versions.", + "Added 27023 bytes for tinyexec@1.0.0", + "Total dependency size increase: 27 kB", + ], + "warning": [], +} +`; + +exports[`scanForDependencySize > should report negative upgrades on one line 1`] = ` +[ + "## 📊 Dependency Size Changes + +> [!NOTE] +> :tada: This PR removes 138.5 kB of dependencies. + +| 📦 Package | 📏 Size | +| --- | --- | +| chai@5.0.0 → chai@5.0.2 | -138.5 kB | + +**Total size change:** -138.5 kB", +] +`; + +exports[`scanForDependencySize > should report negative upgrades on one line 2`] = ` +{ + "debug": [], + "error": [], + "info": [ + "Found 1 new package versions", + "Found 1 removed package versions.", + "Added 368262 bytes for chai@5.0.2", + "Subtracted 506753 bytes for chai@5.0.0", + "Total dependency size increase: -138.5 kB", + ], + "warning": [], +} +`; + +exports[`scanForDependencySize > should report new dependencies exceeding the threshold 1`] = ` +[ + "## 📊 Dependency Size Changes + +> [!WARNING] +> This PR adds 23.6 MB of new dependencies, which exceeds the threshold of 1 kB. + +| 📦 Package | 📏 Size | +| --- | --- | +| typescript@5.9.3 | 23.6 MB | + +**Total size change:** 23.6 MB", +] +`; + +exports[`scanForDependencySize > should report new dependencies exceeding the threshold 2`] = ` +{ + "debug": [], + "error": [], + "info": [ + "Found 1 new package versions", + "Found 0 removed package versions.", + "Added 23625066 bytes for typescript@5.9.3", + "Total dependency size increase: 23.6 MB", + ], + "warning": [], +} +`; + +exports[`scanForDependencySize > should report removals when threshold is -1 1`] = ` +[ + "## 📊 Dependency Size Changes + +> [!NOTE] +> :tada: This PR removes 27 kB of dependencies. + +| 📦 Package | 📏 Size | +| --- | --- | +| tinyexec@1.0.0 | -27 kB | + +**Total size change:** -27 kB", +] +`; + +exports[`scanForDependencySize > should report removals when threshold is -1 2`] = ` +{ + "debug": [], + "error": [], + "info": [ + "Found 0 new package versions", + "Found 1 removed package versions.", + "Subtracted 27023 bytes for tinyexec@1.0.0", + "Total dependency size increase: -27 kB", + ], + "warning": [], +} +`; + +exports[`scanForDependencySize > should report upgrades on one line 1`] = ` +[ + "## 📊 Dependency Size Changes + +> [!WARNING] +> This PR adds 137.8 kB of new dependencies, which exceeds the threshold of 1 B. + +| 📦 Package | 📏 Size | +| --- | --- | +| chai@5.0.2 → chai@5.0.3 | 137.8 kB | + +**Total size change:** 137.8 kB", +] +`; + +exports[`scanForDependencySize > should report upgrades on one line 2`] = ` +{ + "debug": [], + "error": [], + "info": [ + "Found 1 new package versions", + "Found 1 removed package versions.", + "Added 506025 bytes for chai@5.0.3", + "Subtracted 368262 bytes for chai@5.0.2", + "Total dependency size increase: 137.8 kB", + ], + "warning": [], +} +`; diff --git a/test/checks/dependency-size_test.ts b/test/checks/dependency-size_test.ts new file mode 100644 index 0000000..ebe562c --- /dev/null +++ b/test/checks/dependency-size_test.ts @@ -0,0 +1,218 @@ +import {describe, expect, it, afterEach} from 'vitest'; +import {scanForDependencySize} from '../../src/checks/dependency-size.js'; +import {coreLogs, clearCoreLogs} from '../util.js'; +import type {ParsedLockFile} from 'lockparse'; + +function createMockObjects( + fromDependencies: Record, + toDependencies: Record +): { + currentDeps: Map>; + baseDeps: Map>; + currentLockFile: ParsedLockFile; + baseLockFile: ParsedLockFile; +} { + const baseDeps = new Map>([]); + const currentDeps = new Map>([]); + const currentLockFile: ParsedLockFile = { + type: 'npm', + packages: [], + root: { + name: 'root-package', + version: '1.0.0', + dependencies: [], + devDependencies: [], + optionalDependencies: [], + peerDependencies: [] + } + }; + const baseLockFile: ParsedLockFile = { + type: 'npm', + packages: [], + root: { + name: 'root-package', + version: '1.0.0', + dependencies: [], + devDependencies: [], + optionalDependencies: [], + peerDependencies: [] + } + }; + + for (const [depName, versions] of Object.entries(fromDependencies)) { + baseDeps.set(depName, new Set(versions)); + for (const version of versions) { + baseLockFile.packages.push({ + name: depName, + version: version, + dependencies: [], + devDependencies: [], + optionalDependencies: [], + peerDependencies: [] + }); + } + } + + for (const [depName, versions] of Object.entries(toDependencies)) { + currentDeps.set(depName, new Set(versions)); + for (const version of versions) { + currentLockFile.packages.push({ + name: depName, + version: version, + dependencies: [], + devDependencies: [], + optionalDependencies: [], + peerDependencies: [] + }); + } + } + return {currentDeps, baseDeps, currentLockFile, baseLockFile}; +} + +describe('scanForDependencySize', () => { + afterEach(() => { + clearCoreLogs(); + }); + + it('should do nothing if no dependency changes', async () => { + const messages: string[] = []; + const threshold = 1; + const {currentDeps, baseDeps, currentLockFile, baseLockFile} = + createMockObjects({}, {}); + + await scanForDependencySize( + messages, + threshold, + currentDeps, + baseDeps, + currentLockFile, + baseLockFile + ); + + expect(messages).toHaveLength(0); + }); + + it('should report new dependencies exceeding the threshold', async () => { + const messages: string[] = []; + const threshold = 1000; + const {currentDeps, baseDeps, currentLockFile, baseLockFile} = + createMockObjects( + {}, + { + typescript: ['5.9.3'] + } + ); + + await scanForDependencySize( + messages, + threshold, + currentDeps, + baseDeps, + currentLockFile, + baseLockFile + ); + + expect(messages).toMatchSnapshot(); + expect(coreLogs).toMatchSnapshot(); + }); + + it('should report removals when threshold is -1', async () => { + const messages: string[] = []; + const threshold = -1; + const {currentDeps, baseDeps, currentLockFile, baseLockFile} = + createMockObjects( + { + tinyexec: ['1.0.0'] + }, + {} + ); + + await scanForDependencySize( + messages, + threshold, + currentDeps, + baseDeps, + currentLockFile, + baseLockFile + ); + + expect(messages).toMatchSnapshot(); + expect(coreLogs).toMatchSnapshot(); + }); + + it('should not report changes below the threshold', async () => { + const messages: string[] = []; + const threshold = 50_000; + const {currentDeps, baseDeps, currentLockFile, baseLockFile} = + createMockObjects( + {}, + { + tinyexec: ['1.0.0'] + } + ); + + await scanForDependencySize( + messages, + threshold, + currentDeps, + baseDeps, + currentLockFile, + baseLockFile + ); + + expect(messages).toHaveLength(0); + expect(coreLogs).toMatchSnapshot(); + }); + + it('should report upgrades on one line', async () => { + const messages: string[] = []; + const threshold = 1; + const {currentDeps, baseDeps, currentLockFile, baseLockFile} = + createMockObjects( + { + chai: ['5.0.2'] + }, + { + chai: ['5.0.3'] + } + ); + + await scanForDependencySize( + messages, + threshold, + currentDeps, + baseDeps, + currentLockFile, + baseLockFile + ); + + expect(messages).toMatchSnapshot(); + expect(coreLogs).toMatchSnapshot(); + }); + + it('should report negative upgrades on one line', async () => { + const messages: string[] = []; + const threshold = -1; + const {currentDeps, baseDeps, currentLockFile, baseLockFile} = + createMockObjects( + { + chai: ['5.0.0'] + }, + { + chai: ['5.0.2'] + } + ); + + await scanForDependencySize( + messages, + threshold, + currentDeps, + baseDeps, + currentLockFile, + baseLockFile + ); + + expect(messages).toMatchSnapshot(); + expect(coreLogs).toMatchSnapshot(); + }); +}); diff --git a/test/git_test.ts b/test/git_test.ts index 16be422..030ce05 100644 --- a/test/git_test.ts +++ b/test/git_test.ts @@ -1,18 +1,10 @@ -import { - describe, - it, - expect, - beforeEach, - vi, - afterEach, - type MockInstance -} from 'vitest'; +import {describe, it, expect, vi, afterEach} from 'vitest'; import * as git from '../src/git.js'; +import {coreLogs, clearCoreLogs} from './util.js'; import * as github from '@actions/github'; import * as process from 'process'; import {fileURLToPath} from 'node:url'; import * as path from 'node:path'; -import * as core from '@actions/core'; const currentDir = path.dirname(fileURLToPath(import.meta.url)); const rootDir = path.join(currentDir, '..'); @@ -69,79 +61,82 @@ describe('getBaseRef', () => { }); describe('getFileFromRef', () => { - let errorSpy: MockInstance<(typeof core)['error']>; - - beforeEach(() => { - vi.mock(import('@actions/core'), async (importModule) => { - const mod = await importModule(); - return {...mod, error: vi.fn()}; - }); - errorSpy = vi.mocked(core.error); - }); - afterEach(() => { vi.clearAllMocks(); + clearCoreLogs(); }); it('should return file content from a given ref', () => { const content = git.getFileFromRef('HEAD', 'package.json', rootDir); expect(content).toBeDefined(); expect(content).toContain('"name":'); - expect(errorSpy.mock.calls).toEqual([]); + expect(coreLogs).toEqual({ + debug: [], + error: [], + info: [], + warning: [] + }); }); it('should return null if file does not exist in the given ref', () => { const content = git.getFileFromRef('HEAD', 'nonexistentfile.txt', rootDir); expect(content).toBeNull(); - expect(errorSpy.mock.calls).toEqual([ - [ + expect(coreLogs).toEqual({ + debug: [], + error: [ 'Failed to get file from ref "HEAD:nonexistentfile.txt": Error: Command failed: git show HEAD:nonexistentfile.txt\n' + "fatal: path 'nonexistentfile.txt' does not exist in 'HEAD'\n" - ] - ]); + ], + info: [], + warning: [] + }); }); }); describe('tryGetJSONFromRef', () => { - let errorSpy: MockInstance<(typeof core)['error']>; - - beforeEach(() => { - vi.mock(import('@actions/core'), async (importModule) => { - const mod = await importModule(); - return {...mod, error: vi.fn()}; - }); - errorSpy = vi.mocked(core.error); - }); - afterEach(() => { vi.clearAllMocks(); + clearCoreLogs(); }); it('returns null for non-existent file', () => { const result = git.tryGetJSONFromRef('HEAD', 'nonexistent.json', rootDir); expect(result).toBeNull(); - expect(errorSpy.mock.calls).toEqual([ - [ + expect(coreLogs).toEqual({ + debug: [], + error: [ 'Failed to get file from ref "HEAD:nonexistent.json": Error: Command failed: git show HEAD:nonexistent.json\n' + "fatal: path 'nonexistent.json' does not exist in 'HEAD'\n" - ] - ]); + ], + info: [], + warning: [] + }); }); it('returns null for invalid JSON content', () => { const result = git.tryGetJSONFromRef('HEAD', 'README.md', rootDir); expect(result).toBeNull(); - expect(errorSpy.mock.calls).toEqual([ - [ - `Failed to get json from ref "HEAD:README.md": SyntaxError: Unexpected token '#', "# e18e/act"... is not valid JSON` - ] - ]); + expect(coreLogs).toEqual({ + debug: [], + error: [ + expect.stringContaining( + 'Failed to get json from ref "HEAD:README.md": SyntaxError:' + ) + ], + info: [], + warning: [] + }); }); it('returns parsed JSON object for valid JSON content', () => { const result = git.tryGetJSONFromRef('HEAD', 'package.json', rootDir); expect(result).toBeDefined(); expect(result).toHaveProperty('name'); - expect(errorSpy.mock.calls).toEqual([]); + expect(coreLogs).toEqual({ + debug: [], + error: [], + info: [], + warning: [] + }); }); }); diff --git a/test/npm_test.ts b/test/npm_test.ts index 99ee47d..226a590 100644 --- a/test/npm_test.ts +++ b/test/npm_test.ts @@ -1,4 +1,3 @@ -import * as core from '@actions/core'; import type {PackageJson} from 'pkg-types'; import { describe, @@ -22,26 +21,20 @@ import { type PackageMetadata, calculateTotalDependencySizeIncrease } from '../src/npm.js'; +import {coreLogs, clearCoreLogs} from './util.js'; describe('fetchPackageMetadata', () => { let fetchMock: MockInstance; beforeEach(() => { fetchMock = vi.spyOn(globalThis, 'fetch'); - vi.mock(import('@actions/core'), async (importModule) => { - const mod = await importModule(); - return { - ...mod, - info: vi.fn(), - error: vi.fn() - }; - }); }); afterEach(() => { fetchMock.mockRestore(); vi.clearAllMocks(); metaCache.clear(); + clearCoreLogs(); }); it('should return null if request fails', async () => { @@ -63,13 +56,17 @@ describe('fetchPackageMetadata', () => { }); it('should return null if fetch fails', async () => { - const infoSpy = vi.mocked(core.info); fetchMock.mockRejectedValue(new Error('Network error')); const result = await fetchPackageMetadata('some-package', '1.0.0'); expect(result).toBeNull(); - expect(infoSpy).toHaveBeenCalledWith( - 'Failed to fetch metadata for some-package@1.0.0: Error: Network error' - ); + expect(coreLogs).toEqual({ + info: [ + 'Failed to fetch metadata for some-package@1.0.0: Error: Network error' + ], + warning: [], + debug: [], + error: [] + }); }); }); @@ -96,6 +93,7 @@ describe('calculateTotalDependencySizeIncrease', () => { afterEach(() => { fetchMock.mockRestore(); vi.clearAllMocks(); + clearCoreLogs(); }); it('returns 0 for empty version list', async () => { @@ -165,7 +163,6 @@ describe('calculateTotalDependencySizeIncrease', () => { {name: 'package-a', version: '1.0.0'}, {name: 'package-c', version: '1.0.0'} ]; - const infoSpy = vi.mocked(core.info); const output = await calculateTotalDependencySizeIncrease(newVersions, []); expect(output?.totalSize).toEqual(1500); expect(output?.packageSizes).toEqual( @@ -174,12 +171,15 @@ describe('calculateTotalDependencySizeIncrease', () => { ['package-c@1.0.0', null] ]) ); - expect(infoSpy).toHaveBeenCalledWith( - 'Added 1500 bytes for package-a@1.0.0' - ); - expect(infoSpy).toHaveBeenCalledWith( - 'No unpacked size info for package-c@1.0.0, skipping' - ); + expect(coreLogs).toEqual({ + info: [ + 'Added 1500 bytes for package-a@1.0.0', + 'No unpacked size info for package-c@1.0.0, skipping' + ], + warning: [], + debug: [], + error: [] + }); }); }); @@ -251,14 +251,6 @@ describe('getProvenanceForPackageVersions', () => { beforeEach(() => { fetchMock = vi.spyOn(globalThis, 'fetch'); - vi.mock(import('@actions/core'), async (importModule) => { - const mod = await importModule(); - return { - ...mod, - info: vi.fn(), - error: vi.fn() - }; - }); }); afterEach(() => { diff --git a/test/setup.ts b/test/setup.ts new file mode 100644 index 0000000..b62b9cd --- /dev/null +++ b/test/setup.ts @@ -0,0 +1,19 @@ +import {vi} from 'vitest'; +import {coreLogs} from './util.js'; + +function createLogger(output: string[]): (message: string | Error) => void { + return (message: string | Error) => { + output.push(message.toString()); + }; +} + +vi.mock(import('@actions/core'), async (importModule) => { + const mod = await importModule(); + return { + ...mod, + info: createLogger(coreLogs.info), + error: createLogger(coreLogs.error), + warning: createLogger(coreLogs.warning), + debug: createLogger(coreLogs.debug) + }; +}); diff --git a/test/util.ts b/test/util.ts new file mode 100644 index 0000000..23154cf --- /dev/null +++ b/test/util.ts @@ -0,0 +1,13 @@ +export const coreLogs = { + info: [] as string[], + error: [] as string[], + warning: [] as string[], + debug: [] as string[] +}; + +export function clearCoreLogs() { + coreLogs.info.length = 0; + coreLogs.error.length = 0; + coreLogs.warning.length = 0; + coreLogs.debug.length = 0; +} diff --git a/vitest.config.ts b/vitest.config.ts index de135b0..04c201b 100644 --- a/vitest.config.ts +++ b/vitest.config.ts @@ -4,6 +4,7 @@ export default defineConfig({ test: { include: [ 'test/**/*_test.ts' - ] + ], + setupFiles: ['test/setup.ts'] } })