Bump @actions/core from 1.10.1 to 3.0.0 and @actions/exec from 1.1.1 to 3.0.0

Both packages moved to ESM-only in v3, so this migrates the project
from CommonJS to ESM: adds "type": "module" to package.json, switches
tsconfig to module/moduleResolution "nodenext", adds .js extensions to
all relative imports, and reconfigures Jest for ESM support.
This commit is contained in:
Jim Kane 2026-03-16 12:39:03 -05:00
parent ecb2e254c2
commit 5e1b966447
13 changed files with 35929 additions and 8725 deletions

View File

@ -1,4 +1,4 @@
import {csvEscape} from '../src/list-format/csv-escape'
import {csvEscape} from '../src/list-format/csv-escape.js'
describe('csvEscape() backslash escapes every character except subset of definitely safe characters', () => {
test('simple filename should not be modified', () => {

View File

@ -1,5 +1,5 @@
import {Filter, FilterConfig, PredicateQuantifier} from '../src/filter'
import {File, ChangeStatus} from '../src/file'
import {Filter, FilterConfig, PredicateQuantifier} from '../src/filter.js'
import {File, ChangeStatus} from '../src/file.js'
describe('yaml filter parsing tests', () => {
test('throws if yaml is not a dictionary', () => {

View File

@ -1,5 +1,5 @@
import * as git from '../src/git'
import {ChangeStatus} from '../src/file'
import * as git from '../src/git.js'
import {ChangeStatus} from '../src/file.js'
describe('parsing output of the git diff command', () => {
test('parseGitDiffOutput returns files with correct change status', async () => {

View File

@ -1,4 +1,4 @@
import {backslashEscape, shellEscape} from '../src/list-format/shell-escape'
import {backslashEscape, shellEscape} from '../src/list-format/shell-escape.js'
describe('escape() backslash escapes every character except subset of definitely safe characters', () => {
test('simple filename should not be modified', () => {

44536
dist/index.js vendored

File diff suppressed because one or more lines are too long

3
dist/package.json vendored Normal file
View File

@ -0,0 +1,3 @@
{
"type": "module"
}

View File

@ -4,8 +4,12 @@ module.exports = {
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
testRunner: 'jest-circus/runner',
extensionsToTreatAsEsm: ['.ts'],
transform: {
'^.+\\.ts$': 'ts-jest'
'^.+\\.ts$': ['ts-jest', {useESM: true}]
},
moduleNameMapper: {
'^(\\.{1,2}/.*)\\.js$': '$1'
},
verbose: true
}
}

53
package-lock.json generated
View File

@ -9,8 +9,8 @@
"version": "1.0.0",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1",
"@actions/core": "^3.0.0",
"@actions/exec": "^3.0.0",
"@actions/github": "6.0.0",
"picomatch": "^2.3.1"
},
@ -47,20 +47,37 @@
}
},
"node_modules/@actions/core": {
"version": "1.10.1",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-1.10.1.tgz",
"integrity": "sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@actions/core/-/core-3.0.0.tgz",
"integrity": "sha512-zYt6cz+ivnTmiT/ksRVriMBOiuoUpDCJJlZ5KPl2/FRdvwU3f7MPh9qftvbkXJThragzUZieit2nyHUyw53Seg==",
"dependencies": {
"@actions/http-client": "^2.0.1",
"uuid": "^8.3.2"
"@actions/exec": "^3.0.0",
"@actions/http-client": "^4.0.0"
}
},
"node_modules/@actions/core/node_modules/@actions/http-client": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-4.0.0.tgz",
"integrity": "sha512-QuwPsgVMsD6qaPD57GLZi9sqzAZCtiJT8kVBCDpLtxhL5MydQ4gS+DrejtZZPdIYyB1e95uCK9Luyds7ybHI3g==",
"dependencies": {
"tunnel": "^0.0.6",
"undici": "^6.23.0"
}
},
"node_modules/@actions/core/node_modules/undici": {
"version": "6.24.1",
"resolved": "https://registry.npmjs.org/undici/-/undici-6.24.1.tgz",
"integrity": "sha512-sC+b0tB1whOCzbtlx20fx3WgCXwkW627p4EA9uM+/tNNPkSS+eSEld6pAs9nDv7WbY1UUljBMYPtu9BCOrCWKA==",
"engines": {
"node": ">=18.17"
}
},
"node_modules/@actions/exec": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.1.tgz",
"integrity": "sha512-+sCcHHbVdk93a0XT19ECtO/gIXoxvdsgQLzb2fE2/5sIZmWQuluYyjPQtrtTHdU1YzTZ7bAPN4sITq2xi1679w==",
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/@actions/exec/-/exec-3.0.0.tgz",
"integrity": "sha512-6xH/puSoNBXb72VPlZVm7vQ+svQpFyA96qdDBvhB8eNZOE8LtPf9L4oAsfzK/crCL8YZ+19fKYVnM63Sl+Xzlw==",
"dependencies": {
"@actions/io": "^1.0.1"
"@actions/io": "^3.0.2"
}
},
"node_modules/@actions/github": {
@ -84,9 +101,9 @@
}
},
"node_modules/@actions/io": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.3.tgz",
"integrity": "sha512-wi9JjgKLYS7U/z8PPbco+PvTb/nRWjeoFlJ1Qer83k/3C5PHQi28hiVdeE2kHXmIL99mQFawx8qt/JPjZilJ8Q=="
"version": "3.0.2",
"resolved": "https://registry.npmjs.org/@actions/io/-/io-3.0.2.tgz",
"integrity": "sha512-nRBchcMM+QK1pdjO7/idu86rbJI5YHUKCvKs0KxnSYbVe3F51UfGxuZX4Qy/fWlp6l7gWFwIkrOzN+oUK03kfw=="
},
"node_modules/@babel/code-frame": {
"version": "7.29.0",
@ -7790,14 +7807,6 @@
"punycode": "^2.1.0"
}
},
"node_modules/uuid": {
"version": "8.3.2",
"resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz",
"integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==",
"bin": {
"uuid": "dist/bin/uuid"
}
},
"node_modules/v8-to-istanbul": {
"version": "9.3.0",
"resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz",

View File

@ -5,6 +5,7 @@
"node": ">= 24"
},
"private": true,
"type": "module",
"description": "Execute your workflow steps only if relevant files are modified.",
"main": "lib/main.js",
"scripts": {
@ -13,7 +14,7 @@
"format-check": "prettier --check **/*.ts",
"lint": "eslint src/**/*.ts",
"pack": "ncc build",
"test": "jest",
"test": "NODE_OPTIONS='--experimental-vm-modules' jest",
"all": "npm run build && npm run format && npm run lint && npm run pack && npm test"
},
"repository": {
@ -28,8 +29,8 @@
"author": "YourNameOrOrganization",
"license": "MIT",
"dependencies": {
"@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1",
"@actions/core": "^3.0.0",
"@actions/exec": "^3.0.0",
"@actions/github": "6.0.0",
"picomatch": "^2.3.1"
},

View File

@ -1,6 +1,6 @@
import * as jsyaml from 'js-yaml'
import picomatch from 'picomatch'
import {File, ChangeStatus} from './file'
import {File, ChangeStatus} from './file.js'
// Type definition of object we expect to load from YAML
interface FilterYaml {
@ -73,7 +73,10 @@ export class Filter {
rules: {[key: string]: FilterRuleItem[]} = {}
// Creates instance of Filter and load rules from YAML if it's provided
constructor(yaml?: string, readonly filterConfig?: FilterConfig) {
constructor(
yaml?: string,
readonly filterConfig?: FilterConfig
) {
if (yaml) {
this.load(yaml)
}

View File

@ -1,6 +1,6 @@
import {getExecOutput} from '@actions/exec'
import * as core from '@actions/core'
import {File, ChangeStatus} from './file'
import {File, ChangeStatus} from './file.js'
export const NULL_SHA = '0000000000000000000000000000000000000000'
export const HEAD = 'HEAD'

View File

@ -11,11 +11,11 @@ import {
FilterResults,
PredicateQuantifier,
SUPPORTED_PREDICATE_QUANTIFIERS
} from './filter'
import {File, ChangeStatus} from './file'
import * as git from './git'
import {backslashEscape, shellEscape} from './list-format/shell-escape'
import {csvEscape} from './list-format/csv-escape'
} from './filter.js'
import {File, ChangeStatus} from './file.js'
import * as git from './git.js'
import {backslashEscape, shellEscape} from './list-format/shell-escape.js'
import {csvEscape} from './list-format/csv-escape.js'
type ExportFormat = 'none' | 'csv' | 'json' | 'shell' | 'escape'

View File

@ -1,12 +1,14 @@
{
"compilerOptions": {
"target": "es2019", /* Specify ECMAScript target version: 'ES3' (default), 'ES5', 'ES2015', 'ES2016', 'ES2017', 'ES2018', 'ES2019' or 'ESNEXT'. */
"module": "commonjs", /* Specify module code generation: 'none', 'commonjs', 'amd', 'system', 'umd', 'es2015', or 'ESNext'. */
"outDir": "./lib", /* Redirect output structure to the directory. */
"rootDir": "./src", /* Specify the root directory of input files. Use to control the output directory structure with --outDir. */
"strict": true, /* Enable all strict type-checking options. */
"noImplicitAny": true, /* Raise error on expressions and declarations with an implied 'any' type. */
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
"target": "es2022",
"module": "nodenext",
"moduleResolution": "nodenext",
"outDir": "./lib",
"rootDir": "./src",
"strict": true,
"noImplicitAny": true,
"isolatedModules": true,
"esModuleInterop": true
},
"exclude": ["node_modules", "**/*.test.ts"]
}