Compare commits

...

9 Commits

Author SHA1 Message Date
f3cad8bcbf release 2.3.1
Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-06-10 17:15:05 -04:00
07a2257003 fix: fix file closing issue (#629)
* fix: handle file closing gracefully

* fix: failing test on Windows

* format code using npm run fmt
2025-06-10 17:12:05 -04:00
d5382d3e6f release 2.3.0
Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-06-09 21:01:56 -04:00
a0e2122208 feat: migrate from jest to vitest (#626)
* feat: migrate from jest to vitest

Signed-off-by: Rui Chen <rui@chenrui.dev>

* chore: bump to node 24 and run build

Signed-off-by: Rui Chen <rui@chenrui.dev>

* chore: specify es2022 target for ncc build

Signed-off-by: Rui Chen <rui@chenrui.dev>

---------

Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-06-09 20:59:28 -04:00
8836085300 chore: replace mime with mime-types (#624)
Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-06-09 19:03:00 -04:00
86463358d8 chore: bump node to 20.19.2
Signed-off-by: Rui Chen <rui@chenrui.dev>
2025-06-09 18:38:50 -04:00
46b284799f chore(deps): bump the npm group across 1 directory with 5 updates (#623)
* chore(deps): bump the npm group across 1 directory with 5 updates

Bumps the npm group with 5 updates in the / directory:

| Package | From | To |
| --- | --- | --- |
| [@actions/github](https://github.com/actions/toolkit/tree/HEAD/packages/github) | `6.0.0` | `6.0.1` |
| [@octokit/plugin-retry](https://github.com/octokit/plugin-retry.js) | `7.2.1` | `8.0.1` |
| [@octokit/plugin-throttling](https://github.com/octokit/plugin-throttling.js) | `10.0.0` | `11.0.1` |
| [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node) | `20.17.32` | `22.15.21` |
| [ts-jest](https://github.com/kulshekhar/ts-jest) | `29.3.2` | `29.3.4` |



Updates `@actions/github` from 6.0.0 to 6.0.1
- [Changelog](https://github.com/actions/toolkit/blob/main/packages/github/RELEASES.md)
- [Commits](https://github.com/actions/toolkit/commits/HEAD/packages/github)

Updates `@octokit/plugin-retry` from 7.2.1 to 8.0.1
- [Release notes](https://github.com/octokit/plugin-retry.js/releases)
- [Commits](https://github.com/octokit/plugin-retry.js/compare/v7.2.1...v8.0.1)

Updates `@octokit/plugin-throttling` from 10.0.0 to 11.0.1
- [Release notes](https://github.com/octokit/plugin-throttling.js/releases)
- [Commits](https://github.com/octokit/plugin-throttling.js/compare/v10.0.0...v11.0.1)

Updates `@types/node` from 20.17.32 to 22.15.21
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

Updates `ts-jest` from 29.3.2 to 29.3.4
- [Release notes](https://github.com/kulshekhar/ts-jest/releases)
- [Changelog](https://github.com/kulshekhar/ts-jest/blob/main/CHANGELOG.md)
- [Commits](https://github.com/kulshekhar/ts-jest/compare/v29.3.2...v29.3.4)

---
updated-dependencies:
- dependency-name: "@actions/github"
  dependency-version: 6.0.1
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: "@octokit/plugin-retry"
  dependency-version: 8.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: "@octokit/plugin-throttling"
  dependency-version: 11.0.1
  dependency-type: direct:production
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: "@types/node"
  dependency-version: 22.15.21
  dependency-type: direct:development
  update-type: version-update:semver-major
  dependency-group: npm
- dependency-name: ts-jest
  dependency-version: 29.3.4
  dependency-type: direct:development
  update-type: version-update:semver-patch
  dependency-group: npm
...

Signed-off-by: dependabot[bot] <support@github.com>

* fix(upload): drop unsupported `{ type: "bytes" }` arg to readableWebStream()

Signed-off-by: Rui Chen <rui@chenrui.dev>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Rui Chen <rui@chenrui.dev>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rui Chen <rui@chenrui.dev>
2025-06-09 18:35:27 -04:00
37fd9d0351 chore(deps): bump undici from 5.28.5 to 5.29.0 (#621)
Bumps [undici](https://github.com/nodejs/undici) from 5.28.5 to 5.29.0.
- [Release notes](https://github.com/nodejs/undici/releases)
- [Commits](https://github.com/nodejs/undici/compare/v5.28.5...v5.29.0)

---
updated-dependencies:
- dependency-name: undici
  dependency-version: 5.29.0
  dependency-type: indirect
...

Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
2025-05-22 20:55:40 -04:00
39ba0b9d81 chore(deps): bump the npm group with 2 updates (#615)
* chore(deps): bump the npm group with 2 updates

Bumps the npm group with 2 updates: [glob](https://github.com/isaacs/node-glob) and [@types/node](https://github.com/DefinitelyTyped/DefinitelyTyped/tree/HEAD/types/node).


Updates `glob` from 11.0.1 to 11.0.2
- [Changelog](https://github.com/isaacs/node-glob/blob/main/changelog.md)
- [Commits](https://github.com/isaacs/node-glob/compare/v11.0.1...v11.0.2)

Updates `@types/node` from 22.14.1 to 22.15.3
- [Release notes](https://github.com/DefinitelyTyped/DefinitelyTyped/releases)
- [Commits](https://github.com/DefinitelyTyped/DefinitelyTyped/commits/HEAD/types/node)

---
updated-dependencies:
- dependency-name: glob
  dependency-version: 11.0.2
  dependency-type: direct:production
  update-type: version-update:semver-patch
  dependency-group: npm
- dependency-name: "@types/node"
  dependency-version: 22.15.3
  dependency-type: direct:development
  update-type: version-update:semver-minor
  dependency-group: npm
...

Signed-off-by: dependabot[bot] <support@github.com>

* chore: node 20.19.0

Signed-off-by: Rui Chen <rui@chenrui.dev>

---------

Signed-off-by: dependabot[bot] <support@github.com>
Signed-off-by: Rui Chen <rui@chenrui.dev>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: Rui Chen <rui@chenrui.dev>
2025-04-29 18:50:47 -04:00
13 changed files with 1836 additions and 3418 deletions

1
.gitignore vendored
View File

@ -2,3 +2,4 @@ __tests__/runner/*
# actions requires a node_modules dir https://github.com/actions/toolkit/blob/master/docs/javascript-action.md#publish-a-releasesv1-action
# but its recommended not to check these in https://github.com/actions/toolkit/blob/master/docs/action-versioning.md#recommendations
node_modules
coverage

View File

@ -1 +1 @@
nodejs 20.15.1
nodejs 24.2.0

View File

@ -1,3 +1,16 @@
## 2.3.1
### Bug fixes 🐛
* fix: fix file closing issue by @WailGree in https://github.com/softprops/action-gh-release/pull/629
## 2.3.0
* Migrate from jest to vitest
* Replace `mime` with `mime-types`
* Bump to use node 24
* Dependency updates
## 2.2.2
## What's Changed

View File

@ -7,6 +7,8 @@ import {
findTagFromReleases,
} from "../src/github";
import { describe, it } from "vitest";
describe("github", () => {
describe("mimeOrDefault", () => {
it("returns a specific mime for common path", async () => {

View File

@ -10,6 +10,8 @@ import {
} from "../src/util";
import * as assert from "assert";
import { describe, it, expect } from "vitest";
describe("util", () => {
describe("uploadUrl", () => {
it("strips template", () => {

19
dist/index.js vendored

File diff suppressed because one or more lines are too long

View File

@ -1,16 +0,0 @@
import type { JestConfigWithTsJest } from 'ts-jest';
const config: JestConfigWithTsJest = {
preset: 'ts-jest/presets/default-esm',
clearMocks: true,
moduleFileExtensions: ['js', 'ts'],
testEnvironment: 'node',
testMatch: ['**/*.test.ts'],
testRunner: 'jest-circus/runner',
transform: {
'^.+\\.ts$': 'ts-jest',
},
verbose: true,
};
export default config;

5136
package-lock.json generated

File diff suppressed because it is too large Load Diff

View File

@ -1,13 +1,14 @@
{
"name": "action-gh-release",
"version": "2.2.2",
"version": "2.3.1",
"private": true,
"description": "GitHub Action for creating GitHub Releases",
"main": "lib/main.js",
"scripts": {
"build": "ncc build src/main.ts --minify",
"build": "ncc build src/main.ts --minify --target es2022",
"build-debug": "ncc build src/main.ts --v8-cache --source-map",
"test": "jest",
"typecheck": "tsc --noEmit",
"test": "vitest --coverage",
"fmt": "prettier --write \"src/**/*.ts\" \"__tests__/**/*.ts\"",
"fmtcheck": "prettier --check \"src/**/*.ts\" \"__tests__/**/*.ts\"",
"updatetag": "git tag -d v2 && git push origin :v2 && git tag -a v2 -m '' && git push origin v2"
@ -22,24 +23,22 @@
"author": "softprops",
"dependencies": {
"@actions/core": "^1.11.1",
"@actions/github": "^6.0.0",
"@octokit/plugin-retry": "^7.2.1",
"@octokit/plugin-throttling": "^10.0.0",
"glob": "^11.0.1",
"mime": "^3.0.0"
"@actions/github": "^6.0.1",
"@octokit/plugin-retry": "^8.0.1",
"@octokit/plugin-throttling": "^11.0.1",
"glob": "^11.0.2",
"mime-types": "^3.0.1"
},
"devDependencies": {
"@types/glob": "^8.1.0",
"@types/jest": "^29.5.14",
"@types/mime": "^3.0.1",
"@types/node": "^22.14.1",
"@types/mime-types": "^3.0.1",
"@types/node": "^22.15.21",
"@vercel/ncc": "^0.38.3",
"jest": "^29.3.1",
"jest-circus": "^29.3.1",
"@vitest/coverage-v8": "^3.1.4",
"prettier": "3.5.3",
"ts-jest": "^29.3.2",
"ts-node": "^10.9.2",
"typescript": "^5.8.3",
"typescript-formatter": "^7.2.2"
"typescript-formatter": "^7.2.2",
"vitest": "^3.1.4"
}
}

View File

@ -2,7 +2,7 @@ import { GitHub } from "@actions/github/lib/utils";
import { Config, isTag, releaseBody, alignAssetName } from "./util";
import { statSync } from "fs";
import { open } from "fs/promises";
import { getType } from "mime";
import { lookup } from "mime-types";
import { basename } from "path";
type GitHub = InstanceType<typeof GitHub>;
@ -149,7 +149,7 @@ export const asset = (path: string): ReleaseAsset => {
};
export const mimeOrDefault = (path: string): string => {
return getType(path) || "application/octet-stream";
return lookup(path) || "application/octet-stream";
};
export const upload = async (
@ -180,6 +180,7 @@ export const upload = async (
endpoint.searchParams.append("name", name);
const fh = await open(path);
try {
const stream = fh.readableWebStream();
const resp = await github.request({
method: "POST",
url: endpoint.toString(),
@ -188,7 +189,7 @@ export const upload = async (
"content-type": mime,
authorization: `token ${config.github_token}`,
},
data: fh.readableWebStream({ type: "bytes" }),
data: stream,
});
const json = resp.data;
if (resp.status !== 201) {
@ -201,7 +202,7 @@ export const upload = async (
console.log(`✅ Uploaded ${name}`);
return json;
} finally {
await fh.close();
await fh.close().catch(() => {});
}
};

View File

@ -91,7 +91,10 @@ const parseMakeLatest = (
export const paths = (patterns: string[]): string[] => {
return patterns.reduce((acc: string[], pattern: string): string[] => {
return acc.concat(
glob.sync(pattern).filter((path) => statSync(path).isFile()),
glob
.sync(pattern)
.filter((path) => statSync(path).isFile())
.map((path) => path.replace(/\\/g, "/")),
);
}, []);
};

View File

@ -3,8 +3,8 @@
"useUnknownInCatchVariables": false,
/* Basic Options */
// "incremental": true, /* Enable incremental compilation */
"target": "es6", /* 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'. */
"target": "es2022",
"module": "NodeNext",
// "allowJs": true, /* Allow javascript files to be compiled. */
// "checkJs": true, /* Report errors in .js files. */
// "jsx": "preserve", /* Specify JSX code generation: 'preserve', 'react-native', or 'react'. */
@ -25,6 +25,7 @@
/* Strict Type-Checking Options */
"strict": true, /* Enable all strict type-checking options. */
"noImplicitAny": false, /* Raise error on expressions and declarations with an implied 'any' type. */
"skipLibCheck": true,
// "strictNullChecks": true, /* Enable strict null checks. */
// "strictFunctionTypes": true, /* Enable strict checking of function types. */
// "strictBindCallApply": true, /* Enable strict 'bind', 'call', and 'apply' methods on functions. */
@ -44,7 +45,7 @@
// "paths": {}, /* A series of entries which re-map imports to lookup locations relative to the 'baseUrl'. */
// "rootDirs": [], /* List of root folders whose combined content represents the structure of the project at runtime. */
// "typeRoots": [], /* List of folders to include type definitions from. */
// "types": [], /* Type declaration files to be included in compilation. */
"types": ["vitest/globals"],
// "allowSyntheticDefaultImports": true, /* Allow default imports from modules with no default export. This does not affect code emit, just typechecking. */
"esModuleInterop": true /* Enables emit interoperability between CommonJS and ES Modules via creation of namespace objects for all imports. Implies 'allowSyntheticDefaultImports'. */
// "preserveSymlinks": true, /* Do not resolve the real path of symlinks. */
@ -60,5 +61,5 @@
// "experimentalDecorators": true, /* Enables experimental support for ES7 decorators. */
// "emitDecoratorMetadata": true, /* Enables experimental support for emitting type metadata for decorators. */
},
"exclude": ["node_modules", "**/*.test.ts", "jest.config.ts"]
"exclude": ["node_modules", "**/*.test.ts", "vitest.config.ts"]
}

11
vitest.config.ts Normal file
View File

@ -0,0 +1,11 @@
import { defineConfig } from 'vitest/config';
export default defineConfig({
test: {
environment: 'node',
coverage: {
reporter: ['text', 'lcov'],
},
include: ['__tests__/**/*.ts'],
},
});