Compare commits

...

10 Commits

Author SHA1 Message Date
Daniel Kennedy 2d38e51528 Bump @actions/io to 3.0.2 2026-01-28 14:44:07 -05:00
Daniel Kennedy 123c3678fa @actions/exec: convert to ESM module 2026-01-28 14:44:07 -05:00
Daniel Kennedy a6e9f4bab2 @actions/io: update lock file version 2026-01-28 14:36:03 -05:00
Daniel Kennedy 758b556388 @actions/io: export lib/io-util 2026-01-28 14:08:19 -05:00
Daniel Kennedy 9e060cb3e1 Add release notes 2026-01-28 13:33:17 -05:00
Daniel Kennedy 5501ba08b7 @actions/io: convert to ESM module 2026-01-28 13:33:17 -05:00
Daniel Kennedy 4446f00fc7 Add a release entry for 4.0.0 2026-01-28 10:27:09 -05:00
Daniel Kennedy 965dcc7493 Fix a JSON lint issue 2026-01-28 10:27:09 -05:00
Daniel Kennedy d464f9dd60 Add proxy/interfaces exports 2026-01-28 10:27:09 -05:00
Daniel Kennedy c9ab4f9548 http-client: convert to ESM 2026-01-28 10:27:09 -05:00
29 changed files with 162 additions and 66 deletions
+11 -3
View File
@@ -5,7 +5,13 @@ module.exports = {
testEnvironment: 'node',
testMatch: ['**/__tests__/*.test.ts'],
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1'
'^(\\.{1,2}/.*)\\.js$': '$1',
'^@actions/io$': '<rootDir>/packages/io/lib/io.js',
'^@actions/io/lib/io-util$': '<rootDir>/packages/io/lib/io-util.js',
'^@actions/http-client$': '<rootDir>/packages/http-client/lib/index.js',
'^@actions/http-client/lib/auth$': '<rootDir>/packages/http-client/lib/auth.js',
'^@actions/github$': '<rootDir>/packages/github/lib/github.js',
'^@actions/github/lib/utils$': '<rootDir>/packages/github/lib/utils.js'
},
transform: {
'^.+\\.(ts|js)$': ['ts-jest', {
@@ -13,12 +19,14 @@ module.exports = {
diagnostics: {warnOnly: true},
tsconfig: {
allowJs: true,
esModuleInterop: true
esModuleInterop: true,
module: 'commonjs',
moduleResolution: 'node'
}
}]
},
transformIgnorePatterns: [
'/node_modules/(?!(@octokit|universal-user-agent|before-after-hook)/)'
'/node_modules/(?!(@octokit|@actions/github|@actions/http-client|@actions/io|universal-user-agent|before-after-hook)/)'
],
verbose: true
}
+12 -5
View File
@@ -1,13 +1,20 @@
# @actions/exec Releases
### 2.0.0
## 3.0.0
- **Breaking change**: Package is now ESM-only
- CommonJS consumers must use dynamic `import()` instead of `require()`
## 2.0.0
- Add support for Node 24 [#2110](https://github.com/actions/toolkit/pull/2110)
- Bump @actions/io dependency from ^1.0.1 to ^2.0.0
### 1.1.1
- Update `lockfileVersion` to `v2` in `package-lock.json [#1024](https://github.com/actions/toolkit/pull/1024)
## 1.1.1
### 1.1.0
- Update `lockfileVersion` to `v2` in `package-lock.json` [#1024](https://github.com/actions/toolkit/pull/1024)
## 1.1.0
- [Fix stdline dropping large output](https://github.com/actions/toolkit/pull/773)
- [Add getExecOutput function](https://github.com/actions/toolkit/pull/814)
@@ -23,4 +30,4 @@
### 1.0.0
- Initial release
- Initial release
+16 -16
View File
@@ -1,5 +1,5 @@
import * as exec from '../src/exec'
import * as im from '../src/interfaces'
import * as exec from '../src/exec.js'
import * as im from '../src/interfaces.js'
import * as childProcess from 'child_process'
import * as fs from 'fs'
@@ -14,7 +14,7 @@ const IS_WINDOWS = process.platform === 'win32'
const SPAWN_WAIT_SCRIPT = path.join(
__dirname,
'scripts',
'spawn-wait-for-file.js'
'spawn-wait-for-file.cjs'
)
let outstream: stream.Writable
@@ -196,7 +196,7 @@ describe('@actions/exec', () => {
const scriptPath: string = path.join(
__dirname,
'scripts',
'stderroutput.js'
'stderroutput.cjs'
)
const nodePath: string = await io.which('node', true)
@@ -218,7 +218,7 @@ describe('@actions/exec', () => {
const scriptPath: string = path.join(
__dirname,
'scripts',
'stderroutput.js'
'stderroutput.cjs'
)
const nodePath: string = await io.which('node', true)
@@ -255,12 +255,12 @@ describe('@actions/exec', () => {
const stdErrPath: string = path.join(
__dirname,
'scripts',
'stderroutput.js'
'stderroutput.cjs'
)
const stdOutPath: string = path.join(
__dirname,
'scripts',
'stdoutoutput.js'
'stdoutoutput.cjs'
)
const nodePath: string = await io.which('node', true)
let stdoutCalled = false
@@ -295,7 +295,7 @@ describe('@actions/exec', () => {
const stdlinePath: string = path.join(
__dirname,
'scripts',
'stdlineoutput.js'
'stdlineoutput.cjs'
)
const nodePath: string = await io.which('node', true)
@@ -344,7 +344,7 @@ describe('@actions/exec', () => {
const waitForInput: string = path.join(
__dirname,
'scripts',
'wait-for-input.js'
'wait-for-input.cjs'
)
const _testExecOptions = getExecOptions()
@@ -622,12 +622,12 @@ describe('@actions/exec', () => {
const stdErrPath: string = path.join(
__dirname,
'scripts',
'stderroutput.js'
'stderroutput.cjs'
)
const stdOutPath: string = path.join(
__dirname,
'scripts',
'stdoutoutput.js'
'stdoutoutput.cjs'
)
const nodePath: string = await io.which('node', true)
@@ -653,12 +653,12 @@ describe('@actions/exec', () => {
const stdErrPath: string = path.join(
__dirname,
'scripts',
'stderroutput.js'
'stderroutput.cjs'
)
const stdOutPath: string = path.join(
__dirname,
'scripts',
'stdoutoutput.js'
'stdoutoutput.cjs'
)
const nodePath: string = await io.which('node', true)
@@ -703,12 +703,12 @@ describe('@actions/exec', () => {
const stdErrPath: string = path.join(
__dirname,
'scripts',
'stderroutput.js'
'stderroutput.cjs'
)
const stdOutPath: string = path.join(
__dirname,
'scripts',
'stdoutoutputlarge.js'
'stdoutoutputlarge.cjs'
)
const nodePath: string = await io.which('node', true)
@@ -753,7 +753,7 @@ describe('@actions/exec', () => {
const stdOutPath: string = path.join(
__dirname,
'scripts',
'stdoutputspecial.js'
'stdoutputspecial.cjs'
)
const nodePath: string = await io.which('node', true)
@@ -15,10 +15,10 @@ if (!filePath) {
throw new Error('file is not specified')
}
// Spawn wait-for-file.js with inherited stdio
// Spawn wait-for-file.cjs with inherited stdio
// This creates a grandchild process that holds the stdio handles open
// after this process (the child) exits
const waitScript = path.join(__dirname, 'wait-for-file.js')
const waitScript = path.join(__dirname, 'wait-for-file.cjs')
const isWindows = process.platform === 'win32'
// On Windows, use detached:true to properly keep streams open
+6 -6
View File
@@ -1,21 +1,21 @@
{
"name": "@actions/exec",
"version": "2.0.0",
"version": "3.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@actions/exec",
"version": "2.0.0",
"version": "3.0.0",
"license": "MIT",
"dependencies": {
"@actions/io": "^2.0.0"
"@actions/io": "^3.0.2"
}
},
"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"
}
}
+9 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@actions/exec",
"version": "2.0.0",
"version": "3.0.0",
"description": "Actions exec lib",
"keywords": [
"github",
@@ -9,8 +9,15 @@
],
"homepage": "https://github.com/actions/toolkit/tree/main/packages/exec",
"license": "MIT",
"type": "module",
"main": "lib/exec.js",
"types": "lib/exec.d.ts",
"exports": {
".": {
"types": "./lib/exec.d.ts",
"import": "./lib/exec.js"
}
},
"directories": {
"lib": "lib",
"test": "__tests__"
@@ -36,6 +43,6 @@
"url": "https://github.com/actions/toolkit/issues"
},
"dependencies": {
"@actions/io": "^2.0.0"
"@actions/io": "^3.0.2"
}
}
+2 -2
View File
@@ -1,6 +1,6 @@
import {StringDecoder} from 'string_decoder'
import {ExecOptions, ExecOutput, ExecListeners} from './interfaces'
import * as tr from './toolrunner'
import {ExecOptions, ExecOutput, ExecListeners} from './interfaces.js'
import * as tr from './toolrunner.js'
export {ExecOptions, ExecOutput, ExecListeners}
+1 -1
View File
@@ -3,7 +3,7 @@ import * as events from 'events'
import * as child from 'child_process'
import * as path from 'path'
import * as stream from 'stream'
import * as im from './interfaces'
import * as im from './interfaces.js'
import * as io from '@actions/io'
import * as ioUtil from '@actions/io/lib/io-util'
import {setTimeout} from 'timers'
+3 -1
View File
@@ -3,7 +3,9 @@
"compilerOptions": {
"baseUrl": "./",
"outDir": "./lib",
"rootDir": "./src"
"rootDir": "./src",
"module": "node16",
"moduleResolution": "node16"
},
"include": [
"./src"
+25 -3
View File
@@ -1,38 +1,53 @@
## Releases
# Releases
## 4.0.0
- **Breaking change**: Package is now ESM-only
- CommonJS consumers must use dynamic `import()` instead of `require()`
## 3.0.2
- Bump `undici` from `5.28.5` to `6.23.0`
## 3.0.1
- Add support for ACTIONS_ORCHESTRATION_ID in user-agent and default user-agent [#2229](https://github.com/actions/toolkit/pull/2229)
## 3.0.0
- Add support for Node 24 [#2110](https://github.com/actions/toolkit/pull/2110)
## 2.2.3
- Fixed an issue where proxy username and password were not handled correctly [#1799](https://github.com/actions/toolkit/pull/1799)
## 2.2.2
- Better handling of url encoded usernames and passwords in proxy config [#1782](https://github.com/actions/toolkit/pull/1782)
## 2.2.1
- Make sure RequestOptions.keepAlive is applied properly on node20 runtime [#1572](https://github.com/actions/toolkit/pull/1572)
## 2.2.0
- Add function to return proxy agent dispatcher for compatibility with latest octokit packages [#1547](https://github.com/actions/toolkit/pull/1547)
## 2.1.1
- Add `HttpClientResponse.readBodyBuffer` method to read from a response stream and return a buffer [#1475](https://github.com/actions/toolkit/pull/1475)
## 2.1.0
- Add support for `*` and subdomains in `no_proxy` [#1355](https://github.com/actions/toolkit/pull/1355) [#1223](https://github.com/actions/toolkit/pull/1223)
- Bypass proxy for loopback IP adresses [#1360](https://github.com/actions/toolkit/pull/1360))
## 2.0.1
- Fix an issue with missing `tunnel` dependency [#1085](https://github.com/actions/toolkit/pull/1085)
## 2.0.0
- The package is now compiled with TypeScript's [`strict` compiler setting](https://www.typescriptlang.org/tsconfig#strict). To comply with stricter rules:
- Some exported types now include `| null` or `| undefined`, matching their actual behavior.
- Types implementing the method `RequestHandler.handleAuthentication()` now throw an `Error` rather than returning `null` if they do not support handling an HTTP 401 response. Callers can still use `canHandleAuthentication()` to determine if this handling is supported or not.
@@ -44,25 +59,32 @@
## 1.0.11
Contains a bug fix where proxy is defined without a user and password. see [PR here](https://github.com/actions/http-client/pull/42)
Contains a bug fix where proxy is defined without a user and password. see [PR here](https://github.com/actions/http-client/pull/42)
## 1.0.9
Throw HttpClientError instead of a generic Error from the \<verb>Json() helper methods when the server responds with a non-successful status code.
Throw HttpClientError instead of a generic Error from the \<verb>Json() helper methods when the server responds with a non-successful status code.
## 1.0.8
Fixed security issue where a redirect (e.g. 302) to another domain would pass headers. The fix was to strip the authorization header if the hostname was different. More [details in PR #27](https://github.com/actions/http-client/pull/27)
## 1.0.7
Update NPM dependencies and add 429 to the list of HttpCodes
## 1.0.6
Automatically sends Content-Type and Accept application/json headers for \<verb>Json() helper methods if not set in the client or parameters.
## 1.0.5
Adds \<verb>Json() helper methods for json over http scenarios.
## 1.0.4
Started to add \<verb>Json() helper methods. Do not use this release for that. Use >= 1.0.5 since there was an issue with types.
## 1.0.1 to 1.0.3
Adds proxy support.
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "@actions/http-client",
"version": "3.0.2",
"version": "4.0.0",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@actions/http-client",
"version": "3.0.2",
"version": "4.0.0",
"license": "MIT",
"dependencies": {
"tunnel": "^0.0.6",
+20 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@actions/http-client",
"version": "3.0.2",
"version": "4.0.0",
"description": "Actions Http Client",
"keywords": [
"github",
@@ -9,8 +9,27 @@
],
"homepage": "https://github.com/actions/toolkit/tree/main/packages/http-client",
"license": "MIT",
"type": "module",
"main": "lib/index.js",
"types": "lib/index.d.ts",
"exports": {
".": {
"types": "./lib/index.d.ts",
"import": "./lib/index.js"
},
"./lib/auth": {
"types": "./lib/auth.d.ts",
"import": "./lib/auth.js"
},
"./lib/proxy": {
"types": "./lib/proxy.d.ts",
"import": "./lib/proxy.js"
},
"./lib/interfaces": {
"types": "./lib/interfaces.d.ts",
"import": "./lib/interfaces.js"
}
},
"directories": {
"lib": "lib",
"test": "__tests__"
+2 -2
View File
@@ -1,6 +1,6 @@
import * as http from 'http'
import * as ifm from './interfaces'
import {HttpClientResponse} from './index'
import * as ifm from './interfaces.js'
import {HttpClientResponse} from './index.js'
export class BasicCredentialHandler implements ifm.RequestHandler {
username: string
+2 -2
View File
@@ -2,9 +2,9 @@
import * as http from 'http'
import * as https from 'https'
import * as ifm from './interfaces'
import * as ifm from './interfaces.js'
import * as net from 'net'
import * as pm from './proxy'
import * as pm from './proxy.js'
import * as tunnel from 'tunnel'
import {ProxyAgent} from 'undici'
+1 -1
View File
@@ -1,6 +1,6 @@
import * as http from 'http'
import * as https from 'https'
import {HttpClientResponse} from './index'
import {HttpClientResponse} from './index.js'
export interface HttpClient {
options(
+3 -2
View File
@@ -3,8 +3,9 @@
"compilerOptions": {
"outDir": "./lib",
"rootDir": "./src",
"moduleResolution": "node",
"declaration": true,
"module": "node16",
"moduleResolution": "node16",
"declaration": true
},
"include": [
"./src"
+25 -8
View File
@@ -1,26 +1,43 @@
# @actions/io Releases
### 2.0.0
## 3.0.2
- Fix: update lock file version
## 3.0.1
- Fix: export `@actions/io/lib/io-util`
## 3.0.0
- **Breaking change**: Package is now ESM-only
- CommonJS consumers must use dynamic `import()` instead of `require()`
## 2.0.0
- Add support for Node 24 [#2110](https://github.com/actions/toolkit/pull/2110)
- Ensures consistent behavior for paths on Node 24 with Windows
### 1.1.3
## 1.1.3
- Replace `child_process.exec` with `fs.rm` in `rmRF` for all OS implementations [#1373](https://github.com/actions/toolkit/pull/1373)
### 1.1.2
- Update `lockfileVersion` to `v2` in `package-lock.json [#1020](https://github.com/actions/toolkit/pull/1020)
## 1.1.2
- Update `lockfileVersion` to `v2` in `package-lock.json [#1020](https://github.com/actions/toolkit/pull/1020)
## 1.1.1
### 1.1.1
- [Fixed a bug where we incorrectly escaped paths for rmrf](https://github.com/actions/toolkit/pull/828)
### 1.1.0
## 1.1.0
- Add `findInPath` method to locate all matching executables in the system path
### 1.0.2
## 1.0.2
- [Add \"types\" to package.json](https://github.com/actions/toolkit/pull/221)
### 1.0.0
## 1.0.0
- Initial release
+2 -2
View File
@@ -2,8 +2,8 @@ import * as child from 'child_process'
import {promises as fs} from 'fs'
import * as os from 'os'
import * as path from 'path'
import * as io from '../src/io'
import * as ioUtil from '../src/io-util'
import * as io from '../src/io.js'
import * as ioUtil from '../src/io-util.js'
describe('cp', () => {
beforeAll(async () => {
+2 -2
View File
@@ -1,12 +1,12 @@
{
"name": "@actions/io",
"version": "2.0.0",
"version": "3.0.2",
"lockfileVersion": 3,
"requires": true,
"packages": {
"": {
"name": "@actions/io",
"version": "2.0.0",
"version": "3.0.2",
"license": "MIT"
}
}
+12 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@actions/io",
"version": "2.0.0",
"version": "3.0.2",
"description": "Actions io lib",
"keywords": [
"github",
@@ -9,8 +9,19 @@
],
"homepage": "https://github.com/actions/toolkit/tree/main/packages/io",
"license": "MIT",
"type": "module",
"main": "lib/io.js",
"types": "lib/io.d.ts",
"exports": {
".": {
"types": "./lib/io.d.ts",
"import": "./lib/io.js"
},
"./lib/io-util": {
"types": "./lib/io-util.d.ts",
"import": "./lib/io-util.js"
}
},
"directories": {
"lib": "lib",
"test": "__tests__"
+1 -1
View File
@@ -1,6 +1,6 @@
import {ok} from 'assert'
import * as path from 'path'
import * as ioUtil from './io-util'
import * as ioUtil from './io-util.js'
/**
* Interface for cp/mv options
+3 -1
View File
@@ -3,7 +3,9 @@
"compilerOptions": {
"baseUrl": "./",
"outDir": "./lib",
"rootDir": "./src"
"rootDir": "./src",
"module": "node16",
"moduleResolution": "node16"
},
"include": [
"./src"