From 1f913ea3b29091dad923912d02976cca94d7f390 Mon Sep 17 00:00:00 2001 From: Daniel Kennedy Date: Wed, 28 Jan 2026 21:35:17 -0500 Subject: [PATCH] `@actions/tool-cache`: convert to an ESM module --- jest.config.js | 3 +- packages/tool-cache/RELEASES.md | 18 +- .../tool-cache/__tests__/manifest.test.ts | 6 +- .../tool-cache/__tests__/retry-helper.test.ts | 2 +- .../tool-cache/__tests__/tool-cache.test.ts | 2 +- packages/tool-cache/package-lock.json | 168 +++++++++++------- packages/tool-cache/package.json | 24 ++- packages/tool-cache/src/manifest.ts | 40 +++-- packages/tool-cache/src/tool-cache.ts | 7 +- packages/tool-cache/tsconfig.json | 4 +- 10 files changed, 164 insertions(+), 110 deletions(-) diff --git a/jest.config.js b/jest.config.js index 95817b8d..01840e16 100644 --- a/jest.config.js +++ b/jest.config.js @@ -16,6 +16,7 @@ module.exports = { '^@actions/github$': '/packages/github/lib/github.js', '^@actions/github/lib/utils$': '/packages/github/lib/utils.js', '^@actions/glob$': '/packages/glob/lib/glob.js' + '^@actions/tool-cache$': '/packages/tool-cache/lib/tool-cache.js' }, transform: { '^.+\\.(ts|js)$': ['ts-jest', { @@ -30,7 +31,7 @@ module.exports = { }] }, transformIgnorePatterns: [ - '/node_modules/(?!(@octokit|@actions/github|@actions/http-client|@actions/io|@actions/exec|@actions/core|@actions/glob|universal-user-agent|before-after-hook)/)' + '/node_modules/(?!(@octokit|@actions/github|@actions/http-client|@actions/io|@actions/exec|@actions/core|@actions/glob|@actions/tool-cache|universal-user-agent|before-after-hook)/)' ], verbose: true } diff --git a/packages/tool-cache/RELEASES.md b/packages/tool-cache/RELEASES.md index 48955865..3e9de325 100644 --- a/packages/tool-cache/RELEASES.md +++ b/packages/tool-cache/RELEASES.md @@ -1,5 +1,10 @@ # @actions/tool-cache Releases +## 4.0.0 + +- **Breaking change**: Package is now ESM-only + - CommonJS consumers must use dynamic `import()` instead of `require()` + ### 3.0.1 - Bump `@actions/http-client` to `3.0.2` @@ -17,29 +22,36 @@ - Remove dependency on `uuid` package [#1824](https://github.com/actions/toolkit/pull/1824), [#1842](https://github.com/actions/toolkit/pull/1842) ### 2.0.1 + - Update to v2.0.1 of `@actions/http-client` [#1087](https://github.com/actions/toolkit/pull/1087) ### 2.0.0 + - Update to v2.0.0 of `@actions/http-client` - The type of the `headers` parameter in the exported function `downloadTool` has been narrowed from `{ [header: string]: any }` to `{ [header: string]: number | string | string[] | undefined; }` (that is, `http.OutgoingHttpHeaders`). This is strictly a compile-time change for TypeScript consumers. Previous attempts to use a header value of a type other than those now accepted would have resulted in an error at run time. ### 1.7.2 -- Update `lockfileVersion` to `v2` in `package-lock.json [#1025](https://github.com/actions/toolkit/pull/1025) + +- Update `lockfileVersion` to `v2` in `package-lock.json` [#1025](https://github.com/actions/toolkit/pull/1025) ### 1.7.1 + - [Fallback to os-releases file to get linux version](https://github.com/actions/toolkit/pull/594) - [Update to latest @actions/io verison](https://github.com/actions/toolkit/pull/838) ### 1.7.0 + - [Allow arbirtary headers when downloading tools to the tc](https://github.com/actions/toolkit/pull/530) -- [Export `isExplicitVersion` and `evaluateVersions` functions](https://github.com/actions/toolkit/pull/796) +- [Export `isExplicitVersion` and `evaluateVersions` functions](https://github.com/actions/toolkit/pull/796) - [Force overwrite on default when extracted compressed files](https://github.com/actions/toolkit/pull/807) ### 1.6.1 + - [Update @actions/core version](https://github.com/actions/toolkit/pull/636) ### 1.6.0 + - [Add extractXar function to extract XAR files](https://github.com/actions/toolkit/pull/207) ### 1.3.5 @@ -82,4 +94,4 @@ Here is [the security issue](https://github.com/actions/http-client/pull/27) tha ### 1.0.0 -- Initial release \ No newline at end of file +- Initial release diff --git a/packages/tool-cache/__tests__/manifest.test.ts b/packages/tool-cache/__tests__/manifest.test.ts index 37146b89..cf393fb9 100644 --- a/packages/tool-cache/__tests__/manifest.test.ts +++ b/packages/tool-cache/__tests__/manifest.test.ts @@ -1,5 +1,5 @@ -import * as tc from '../src/tool-cache' -import * as mm from '../src/manifest' // --> OFF +import * as tc from '../src/tool-cache.js' +import * as mm from '../src/manifest.js' // needs to be require for core node modules to be mocked // eslint-disable-next-line @typescript-eslint/no-require-imports @@ -36,7 +36,7 @@ describe('@actions/tool-cache-manifest', () => { archSpy.mockImplementation(() => os.arch) execSpy = jest.spyOn(cp, 'execSync') - readLsbSpy = jest.spyOn(mm, '_readLinuxVersionFile') + readLsbSpy = jest.spyOn(mm._internal, 'readLinuxVersionFile') getSpy = jest.spyOn(tc, 'getManifestFromRepo') getSpy.mockImplementation(() => manifestData) diff --git a/packages/tool-cache/__tests__/retry-helper.test.ts b/packages/tool-cache/__tests__/retry-helper.test.ts index 7b110db3..813f1c01 100644 --- a/packages/tool-cache/__tests__/retry-helper.test.ts +++ b/packages/tool-cache/__tests__/retry-helper.test.ts @@ -1,5 +1,5 @@ import * as core from '@actions/core' -import {RetryHelper} from '../src/retry-helper' +import {RetryHelper} from '../src/retry-helper.js' let info: string[] let retryHelper: RetryHelper diff --git a/packages/tool-cache/__tests__/tool-cache.test.ts b/packages/tool-cache/__tests__/tool-cache.test.ts index 4712ab5f..07a3e23d 100644 --- a/packages/tool-cache/__tests__/tool-cache.test.ts +++ b/packages/tool-cache/__tests__/tool-cache.test.ts @@ -12,7 +12,7 @@ process.env['RUNNER_TEMP'] = tempPath process.env['RUNNER_TOOL_CACHE'] = cachePath // eslint-disable-next-line import/first -import * as tc from '../src/tool-cache' +import * as tc from '../src/tool-cache.js' const IS_WINDOWS = process.platform === 'win32' const IS_MAC = process.platform === 'darwin' diff --git a/packages/tool-cache/package-lock.json b/packages/tool-cache/package-lock.json index 16b13f06..638d3ae2 100644 --- a/packages/tool-cache/package-lock.json +++ b/packages/tool-cache/package-lock.json @@ -1,49 +1,48 @@ { "name": "@actions/tool-cache", - "version": "3.0.1", + "version": "4.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "@actions/tool-cache", - "version": "3.0.1", + "version": "4.0.0", "license": "MIT", "dependencies": { - "@actions/core": "^2.0.1", - "@actions/exec": "^2.0.0", - "@actions/http-client": "^3.0.2", - "@actions/io": "^2.0.0", - "semver": "^6.1.0" + "@actions/core": "^3.0.0", + "@actions/exec": "^3.0.0", + "@actions/http-client": "^4.0.0", + "@actions/io": "^3.0.0", + "semver": "^7.7.3" }, "devDependencies": { - "@types/nock": "^11.1.0", - "@types/semver": "^6.0.0", - "nock": "^13.2.9" + "@types/semver": "^7.7.1", + "nock": "^14.0.10" } }, "node_modules/@actions/core": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-2.0.1.tgz", - "integrity": "sha512-oBfqT3GwkvLlo1fjvhQLQxuwZCGTarTE5OuZ2Wg10hvhBj7LRIlF611WT4aZS6fDhO5ZKlY7lCAZTlpmyaHaeg==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.0.tgz", + "integrity": "sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==", "license": "MIT", "dependencies": { - "@actions/exec": "^2.0.0", - "@actions/http-client": "^3.0.0" + "@actions/exec": "^3.0.0", + "@actions/http-client": "^4.0.0" } }, "node_modules/@actions/exec": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-2.0.0.tgz", - "integrity": "sha512-k8ngrX2voJ/RIN6r9xB82NVqKpnMRtxDoiO+g3olkIUpQNqjArXrCQceduQZCQj3P3xm32pChRLqRrtXTlqhIw==", + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-3.0.0.tgz", + "integrity": "sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==", "license": "MIT", "dependencies": { - "@actions/io": "^2.0.0" + "@actions/io": "^3.0.2" } }, "node_modules/@actions/http-client": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-3.0.2.tgz", - "integrity": "sha512-JP38FYYpyqvUsz+Igqlc/JG6YO9PaKuvqjM3iGvaLqFnJ7TFmcLyy2IDrY0bI0qCQug8E9K+elv5ZNfw62ZJzA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.0.tgz", + "integrity": "sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==", "license": "MIT", "dependencies": { "tunnel": "^0.0.6", @@ -51,47 +50,68 @@ } }, "node_modules/@actions/io": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-2.0.0.tgz", - "integrity": "sha512-Jv33IN09XLO+0HS79aaODsvIRyduiF7NY/F6LYeK5oeUmrsz7aFdRphQjFoESF4jS7lMauDOttKALcpapVDIAg==", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@actions/io/-/io-3.0.2.tgz", + "integrity": "sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw==", "license": "MIT" }, - "node_modules/@types/nock": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/@types/nock/-/nock-11.1.0.tgz", - "integrity": "sha512-jI/ewavBQ7X5178262JQR0ewicPAcJhXS/iFaNJl0VHLfyosZ/kwSrsa6VNQNSO8i9d8SqdRgOtZSOKJ/+iNMw==", - "deprecated": "This is a stub types definition. nock provides its own type definitions, so you do not need this installed.", + "node_modules/@mswjs/interceptors": { + "version": "0.39.8", + "resolved": "https://registry.npmjs.org/@mswjs/interceptors/-/interceptors-0.39.8.tgz", + "integrity": "sha512-2+BzZbjRO7Ct61k8fMNHEtoKjeWI9pIlHFTqBwZ5icHpqszIgEZbjb1MW5Z0+bITTCTl3gk4PDBxs9tA/csXvA==", "dev": true, "license": "MIT", "dependencies": { - "nock": "*" - } - }, - "node_modules/@types/semver": { - "version": "6.2.7", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-6.2.7.tgz", - "integrity": "sha512-blctEWbzUFzQx799RZjzzIdBJOXmE37YYEyDtKkx5Dg+V7o/zyyAxLPiI98A2jdTtDgxZleMdfV+7p8WbRJ1OQ==", - "dev": true, - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.4.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", - "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", - "dev": true, - "license": "MIT", - "dependencies": { - "ms": "^2.1.3" + "@open-draft/deferred-promise": "^2.2.0", + "@open-draft/logger": "^0.3.0", + "@open-draft/until": "^2.0.0", + "is-node-process": "^1.2.0", + "outvariant": "^1.4.3", + "strict-event-emitter": "^0.5.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=18" } }, + "node_modules/@open-draft/deferred-promise": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/@open-draft/deferred-promise/-/deferred-promise-2.2.0.tgz", + "integrity": "sha512-CecwLWx3rhxVQF6V4bAgPS5t+So2sTbPgAzafKkVizyi7tlwpcFpdFqq+wqF2OwNBmqFuu6tOyouTuxgpMfzmA==", + "dev": true, + "license": "MIT" + }, + "node_modules/@open-draft/logger": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@open-draft/logger/-/logger-0.3.0.tgz", + "integrity": "sha512-X2g45fzhxH238HKO4xbSr7+wBS8Fvw6ixhTDuvLd5mqh6bJJCFAPwU9mPDxbcrRtfxv4u5IHCEH77BmxvXmmxQ==", + "dev": true, + "license": "MIT", + "dependencies": { + "is-node-process": "^1.2.0", + "outvariant": "^1.4.0" + } + }, + "node_modules/@open-draft/until": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@open-draft/until/-/until-2.1.0.tgz", + "integrity": "sha512-U69T3ItWHvLwGg5eJ0n3I62nWuE6ilHlmz7zM0npLBRvPRd7e6NYmg54vvRtP5mZG7kZqZCFVdsTWo7BPtBujg==", + "dev": true, + "license": "MIT" + }, + "node_modules/@types/semver": { + "version": "7.7.1", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.7.1.tgz", + "integrity": "sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==", + "dev": true, + "license": "MIT" + }, + "node_modules/is-node-process": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/is-node-process/-/is-node-process-1.2.0.tgz", + "integrity": "sha512-Vg4o6/fqPxIjtxgUH5QLJhwZ7gW5diGCVlXpuUfELC62CuxM1iHcRe51f2W1FDy04Ai4KJkagKjx3XaqyfRKXw==", + "dev": true, + "license": "MIT" + }, "node_modules/json-stringify-safe": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", @@ -99,28 +119,28 @@ "dev": true, "license": "ISC" }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", - "dev": true, - "license": "MIT" - }, "node_modules/nock": { - "version": "13.5.6", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.5.6.tgz", - "integrity": "sha512-o2zOYiCpzRqSzPj0Zt/dQ/DqZeYoaQ7TUonc/xUPjCGl9WeHpNbxgVvOquXYAaJzI0M9BXV3HTzG0p8IUAbBTQ==", + "version": "14.0.10", + "resolved": "https://registry.npmjs.org/nock/-/nock-14.0.10.tgz", + "integrity": "sha512-Q7HjkpyPeLa0ZVZC5qpxBt5EyLczFJ91MEewQiIi9taWuA0KB/MDJlUWtON+7dGouVdADTQsf9RA7TZk6D8VMw==", "dev": true, "license": "MIT", "dependencies": { - "debug": "^4.1.0", + "@mswjs/interceptors": "^0.39.5", "json-stringify-safe": "^5.0.1", "propagate": "^2.0.0" }, "engines": { - "node": ">= 10.13" + "node": ">=18.20.0 <20 || >=20.12.1" } }, + "node_modules/outvariant": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/outvariant/-/outvariant-1.4.3.tgz", + "integrity": "sha512-+Sl2UErvtsoajRDKCE5/dBz4DIvHXQQnAxtQTF04OJxY0+DyZXSo5P5Bb7XYWOh81syohlYL24hbDwxedPUJCA==", + "dev": true, + "license": "MIT" + }, "node_modules/propagate": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", @@ -132,14 +152,24 @@ } }, "node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", "license": "ISC", "bin": { "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" } }, + "node_modules/strict-event-emitter": { + "version": "0.5.1", + "resolved": "https://registry.npmjs.org/strict-event-emitter/-/strict-event-emitter-0.5.1.tgz", + "integrity": "sha512-vMgjE/GGEPEFnhFub6pa4FmJBRBVOLpIII2hvCZ8Kzb7K0hlHo7mQv6xYrBvCL2LtAIBwFUK8wvuJgTVSQ5MFQ==", + "dev": true, + "license": "MIT" + }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", diff --git a/packages/tool-cache/package.json b/packages/tool-cache/package.json index 48acac04..5328089f 100644 --- a/packages/tool-cache/package.json +++ b/packages/tool-cache/package.json @@ -1,6 +1,6 @@ { "name": "@actions/tool-cache", - "version": "3.0.1", + "version": "4.0.0", "description": "Actions tool-cache lib", "keywords": [ "github", @@ -9,8 +9,15 @@ ], "homepage": "https://github.com/actions/toolkit/tree/main/packages/tool-cache", "license": "MIT", + "type": "module", "main": "lib/tool-cache.js", "types": "lib/tool-cache.d.ts", + "exports": { + ".": { + "types": "./lib/tool-cache.d.ts", + "import": "./lib/tool-cache.js" + } + }, "directories": { "lib": "lib", "test": "__tests__" @@ -36,15 +43,14 @@ "url": "https://github.com/actions/toolkit/issues" }, "dependencies": { - "@actions/core": "^2.0.1", - "@actions/exec": "^2.0.0", - "@actions/http-client": "^3.0.2", - "@actions/io": "^2.0.0", - "semver": "^6.1.0" + "@actions/core": "^3.0.0", + "@actions/exec": "^3.0.0", + "@actions/http-client": "^4.0.0", + "@actions/io": "^3.0.0", + "semver": "^7.7.3" }, "devDependencies": { - "@types/nock": "^11.1.0", - "@types/semver": "^6.0.0", - "nock": "^13.2.9" + "@types/semver": "^7.7.1", + "nock": "^14.0.10" } } diff --git a/packages/tool-cache/src/manifest.ts b/packages/tool-cache/src/manifest.ts index 7e0808f1..57d8e257 100644 --- a/packages/tool-cache/src/manifest.ts +++ b/packages/tool-cache/src/manifest.ts @@ -1,12 +1,25 @@ import * as semver from 'semver' import {debug} from '@actions/core' +import * as os from 'os' +import * as cp from 'child_process' +import * as fs from 'fs' -// needs to be require for core node modules to be mocked -/* eslint @typescript-eslint/no-require-imports: 0 */ +// Internal object for testability (allows mocking in ESM) +export const _internal = { + readLinuxVersionFile(): string { + const lsbReleaseFile = '/etc/lsb-release' + const osReleaseFile = '/etc/os-release' + let contents = '' -import os = require('os') -import cp = require('child_process') -import fs = require('fs') + if (fs.existsSync(lsbReleaseFile)) { + contents = fs.readFileSync(lsbReleaseFile).toString() + } else if (fs.existsSync(osReleaseFile)) { + contents = fs.readFileSync(osReleaseFile).toString() + } + + return contents + } +} /* NOTE: versions must be sorted descending by version in the manifest @@ -86,7 +99,7 @@ export async function _findMatch( let chk = item.arch === archFilter && item.platform === platFilter if (chk && item.platform_version) { - const osVersion = module.exports._getOsVersion() + const osVersion = _getOsVersion() if (osVersion === item.platform_version) { chk = true @@ -130,7 +143,7 @@ export function _getOsVersion(): string { // DISTRIB_RELEASE=18.04 // DISTRIB_CODENAME=bionic // DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS" - const lsbContents = module.exports._readLinuxVersionFile() + const lsbContents = _internal.readLinuxVersionFile() if (lsbContents) { const lines = lsbContents.split('\n') for (const line of lines) { @@ -150,16 +163,7 @@ export function _getOsVersion(): string { return version } +// Alias for backwards compatibility export function _readLinuxVersionFile(): string { - const lsbReleaseFile = '/etc/lsb-release' - const osReleaseFile = '/etc/os-release' - let contents = '' - - if (fs.existsSync(lsbReleaseFile)) { - contents = fs.readFileSync(lsbReleaseFile).toString() - } else if (fs.existsSync(osReleaseFile)) { - contents = fs.readFileSync(osReleaseFile).toString() - } - - return contents + return _internal.readLinuxVersionFile() } diff --git a/packages/tool-cache/src/tool-cache.ts b/packages/tool-cache/src/tool-cache.ts index 961c26b8..91b415e1 100644 --- a/packages/tool-cache/src/tool-cache.ts +++ b/packages/tool-cache/src/tool-cache.ts @@ -2,7 +2,7 @@ import * as core from '@actions/core' import * as io from '@actions/io' import * as crypto from 'crypto' import * as fs from 'fs' -import * as mm from './manifest' +import * as mm from './manifest.js' import * as os from 'os' import * as path from 'path' import * as httpm from '@actions/http-client' @@ -11,9 +11,8 @@ import * as stream from 'stream' import * as util from 'util' import {ok} from 'assert' import {OutgoingHttpHeaders} from 'http' -import {exec} from '@actions/exec/lib/exec' -import {ExecOptions} from '@actions/exec/lib/interfaces' -import {RetryHelper} from './retry-helper' +import {exec, ExecOptions} from '@actions/exec' +import {RetryHelper} from './retry-helper.js' export class HTTPError extends Error { constructor(readonly httpStatusCode: number | undefined) { diff --git a/packages/tool-cache/tsconfig.json b/packages/tool-cache/tsconfig.json index a8b812a6..c440cd7f 100644 --- a/packages/tool-cache/tsconfig.json +++ b/packages/tool-cache/tsconfig.json @@ -3,7 +3,9 @@ "compilerOptions": { "baseUrl": "./", "outDir": "./lib", - "rootDir": "./src" + "rootDir": "./src", + "module": "node16", + "moduleResolution": "node16" }, "include": [ "./src"