Compare commits

..
1 Commits
Author SHA1 Message Date
github-actions[bot] c533929662 v1.4.3 2023-05-09 04:49:00 +00:00
10 changed files with 8177 additions and 3018 deletions
-12
View File
@@ -1,17 +1,5 @@
# @changesets/action # @changesets/action
## 1.4.5
### Patch Changes
- [#282](https://github.com/changesets/action/pull/282) [`eb19e25`](https://github.com/changesets/action/commit/eb19e25e7797cf33dc2de4caa071e85a8057a0f0) Thanks [@mark-omarov](https://github.com/mark-omarov)! - Updated a few dependencies to patch the security vulnerabilities that were reported for their older versions.
## 1.4.4
### Patch Changes
- [#291](https://github.com/changesets/action/pull/291) [`db8a109`](https://github.com/changesets/action/commit/db8a1099bc0ba1dd6f46a5b9df4212e4f69e78c9) Thanks [@varl](https://github.com/varl)! - Wire up [`@octokit/plugin-throttling`](https://github.com/octokit/plugin-throttling.js) with all GitHub Octokit instances
## 1.4.3 ## 1.4.3
### Patch Changes ### Patch Changes
+967 -63
View File
File diff suppressed because one or more lines are too long
+16 -18
View File
@@ -1,29 +1,19 @@
{ {
"name": "@changesets/action", "name": "@changesets/action",
"version": "1.4.5", "version": "1.4.3",
"main": "dist/index.js", "main": "dist/index.js",
"license": "MIT", "license": "MIT",
"devDependencies": { "devDependencies": {
"@changesets/changelog-github": "^0.4.2", "@changesets/changelog-github": "^0.4.2",
"@changesets/cli": "^2.20.0", "@changesets/cli": "^2.20.0",
"@changesets/write": "^0.1.6", "@changesets/write": "^0.1.6",
"@vercel/ncc": "^0.36.1",
"fixturez": "^1.1.0", "fixturez": "^1.1.0",
"parcel": "^1.12.3",
"prettier": "^2.0.5", "prettier": "^2.0.5",
"typescript": "^5.0.4", "typescript": "^5.0.4"
"@babel/core": "^7.13.10",
"@babel/preset-env": "^7.13.10",
"@babel/preset-typescript": "^7.13.0",
"@types/fs-extra": "^8.0.0",
"@types/jest": "^29.5.1",
"@types/node": "^12.7.1",
"@types/semver": "^6.0.2",
"babel-jest": "^29.5.0",
"husky": "^3.0.3",
"jest": "^29.5.0"
}, },
"scripts": { "scripts": {
"build": "ncc build src/index.ts -o dist --transpile-only --minify", "build": "parcel build ./src/index.ts --no-source-maps --target=node --bundle-node-modules",
"test": "jest", "test": "jest",
"test:watch": "yarn test --watch", "test:watch": "yarn test --watch",
"changeset": "changeset", "changeset": "changeset",
@@ -37,11 +27,21 @@
"@actions/core": "^1.10.0", "@actions/core": "^1.10.0",
"@actions/exec": "^1.1.1", "@actions/exec": "^1.1.1",
"@actions/github": "^5.1.1", "@actions/github": "^5.1.1",
"@babel/core": "^7.13.10",
"@babel/preset-env": "^7.13.10",
"@babel/preset-typescript": "^7.13.0",
"@changesets/pre": "^1.0.9", "@changesets/pre": "^1.0.9",
"@changesets/read": "^0.5.3", "@changesets/read": "^0.5.3",
"@manypkg/get-packages": "^1.1.3", "@manypkg/get-packages": "^1.1.3",
"@octokit/plugin-throttling": "^5.2.1", "@octokit/plugin-throttling": "5.1.1",
"@types/fs-extra": "^8.0.0",
"@types/jest": "^24.0.18",
"@types/node": "^12.7.1",
"@types/semver": "^6.0.2",
"babel-jest": "^24.9.0",
"fs-extra": "^8.1.0", "fs-extra": "^8.1.0",
"husky": "^3.0.3",
"jest": "^24.9.0",
"mdast-util-to-string": "^1.0.6", "mdast-util-to-string": "^1.0.6",
"remark-parse": "^7.0.1", "remark-parse": "^7.0.1",
"remark-stringify": "^7.0.3", "remark-stringify": "^7.0.3",
@@ -54,8 +54,6 @@
}, },
"prettier": {}, "prettier": {},
"resolutions": { "resolutions": {
"**/@octokit/core": "4.2.0", "**/@octokit/core": "4.2.0"
"trim": "^0.0.3",
"y18n": "^4.0.1"
} }
} }
+10 -10
View File
@@ -1,8 +1,8 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`version creates simple PR 1`] = ` exports[`version creates simple PR 1`] = `
[ Array [
{ Object {
"base": "some-branch", "base": "some-branch",
"body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated. "body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated.
@@ -34,8 +34,8 @@ exports[`version creates simple PR 1`] = `
`; `;
exports[`version does not include any release information if a message with simplified release info exceeds size limit 1`] = ` exports[`version does not include any release information if a message with simplified release info exceeds size limit 1`] = `
[ Array [
{ Object {
"base": "some-branch", "base": "some-branch",
"body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated. "body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated.
@@ -52,8 +52,8 @@ exports[`version does not include any release information if a message with simp
`; `;
exports[`version does not include changelog entries if full message exceeds size limit 1`] = ` exports[`version does not include changelog entries if full message exceeds size limit 1`] = `
[ Array [
{ Object {
"base": "some-branch", "base": "some-branch",
"body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated. "body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated.
@@ -74,8 +74,8 @@ exports[`version does not include changelog entries if full message exceeds size
`; `;
exports[`version doesn't include ignored package that got a dependency update in the PR body 1`] = ` exports[`version doesn't include ignored package that got a dependency update in the PR body 1`] = `
[ Array [
{ Object {
"base": "some-branch", "base": "some-branch",
"body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated. "body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated.
@@ -96,8 +96,8 @@ exports[`version doesn't include ignored package that got a dependency update in
`; `;
exports[`version only includes bumped packages in the PR body 1`] = ` exports[`version only includes bumped packages in the PR body 1`] = `
[ Array [
{ Object {
"base": "some-branch", "base": "some-branch",
"body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated. "body": "This PR was opened by the [Changesets release](https://github.com/changesets/action) GitHub action. When you're ready to do a release, you can merge this and publish to npm yourself or [setup this action to publish automatically](https://github.com/changesets/action#with-publishing). If you're not ready to do a release yet, that's fine, whenever you add more changesets to some-branch, this PR will be updated.
+4 -4
View File
@@ -1,18 +1,18 @@
// Jest Snapshot v1, https://goo.gl/fbAQLP // Jest Snapshot v1, https://goo.gl/fbAQLP
exports[`it sorts the things right 1`] = ` exports[`it sorts the things right 1`] = `
[ Array [
{ Object {
"highestLevel": 3, "highestLevel": 3,
"name": "c", "name": "c",
"private": false, "private": false,
}, },
{ Object {
"highestLevel": 1, "highestLevel": 1,
"name": "b", "name": "b",
"private": false, "private": false,
}, },
{ Object {
"highestLevel": 3, "highestLevel": 3,
"name": "a", "name": "a",
"private": true, "private": true,
+5 -7
View File
@@ -11,19 +11,17 @@ export default async function readChangesetState(
cwd: string = process.cwd() cwd: string = process.cwd()
): Promise<ChangesetState> { ): Promise<ChangesetState> {
let preState = await readPreState(cwd); let preState = await readPreState(cwd);
let isInPreMode = preState !== undefined && preState.mode === "pre";
let changesets = await readChangesets(cwd); let changesets = await readChangesets(cwd);
if (preState !== undefined && preState.mode === "pre") { if (isInPreMode) {
let changesetsToFilter = new Set(preState.changesets); let changesetsToFilter = new Set(preState.changesets);
changesets = changesets.filter((x) => !changesetsToFilter.has(x.id));
return {
preState,
changesets: changesets.filter((x) => !changesetsToFilter.has(x.id)),
};
} }
return { return {
preState: undefined, preState: isInPreMode ? preState : undefined,
changesets, changesets,
}; };
} }
+4 -14
View File
@@ -1,6 +1,5 @@
import fixturez from "fixturez"; import fixturez from "fixturez";
import * as github from "@actions/github"; import * as github from "@actions/github";
import * as githubUtils from "@actions/github/lib/utils";
import fs from "fs-extra"; import fs from "fs-extra";
import path from "path"; import path from "path";
import writeChangeset from "@changesets/write"; import writeChangeset from "@changesets/write";
@@ -16,19 +15,7 @@ jest.mock("@actions/github", () => ({
ref: "refs/heads/some-branch", ref: "refs/heads/some-branch",
sha: "xeac7", sha: "xeac7",
}, },
})); getOctokit: jest.fn(),
jest.mock("@actions/github/lib/utils", () => ({
GitHub: {
plugin: () => {
// function necessary to be used as constructor
return function() {
return {
rest: mockedGithubMethods,
}
}
},
},
getOctokitOptions: jest.fn(),
})); }));
jest.mock("./gitUtils"); jest.mock("./gitUtils");
@@ -43,6 +30,9 @@ let mockedGithubMethods = {
createRelease: jest.fn(), createRelease: jest.fn(),
}, },
}; };
(github.getOctokit as any).mockImplementation(() => ({
rest: mockedGithubMethods,
}));
let f = fixturez(__dirname); let f = fixturez(__dirname);
+62 -76
View File
@@ -17,6 +17,8 @@ import * as gitUtils from "./gitUtils";
import readChangesetState from "./readChangesetState"; import readChangesetState from "./readChangesetState";
import resolveFrom from "resolve-from"; import resolveFrom from "resolve-from";
import { throttling } from "@octokit/plugin-throttling"; import { throttling } from "@octokit/plugin-throttling";
// temporary workaround for https://github.com/octokit/plugin-throttling.js/pull/590
import type {} from "@octokit/plugin-throttling/dist-types/types.d";
// GitHub Issues/PRs messages have a max size limit on the // GitHub Issues/PRs messages have a max size limit on the
// message body payload. // message body payload.
@@ -24,8 +26,64 @@ import { throttling } from "@octokit/plugin-throttling";
// To avoid that, we ensure to cap the message to 60k chars. // To avoid that, we ensure to cap the message to 60k chars.
const MAX_CHARACTERS_PER_MESSAGE = 60000; const MAX_CHARACTERS_PER_MESSAGE = 60000;
const setupOctokit = (githubToken: string) => { const createRelease = async (
return new (GitHub.plugin(throttling))( octokit: ReturnType<typeof github.getOctokit>,
{ pkg, tagName }: { pkg: Package; tagName: string }
) => {
try {
let changelogFileName = path.join(pkg.dir, "CHANGELOG.md");
let changelog = await fs.readFile(changelogFileName, "utf8");
let changelogEntry = getChangelogEntry(changelog, pkg.packageJson.version);
if (!changelogEntry) {
// we can find a changelog but not the entry for this version
// if this is true, something has probably gone wrong
throw new Error(
`Could not find changelog entry for ${pkg.packageJson.name}@${pkg.packageJson.version}`
);
}
await octokit.rest.repos.createRelease({
name: tagName,
tag_name: tagName,
body: changelogEntry.content,
prerelease: pkg.packageJson.version.includes("-"),
...github.context.repo,
});
} catch (err) {
// if we can't find a changelog, the user has probably disabled changelogs
if (err.code !== "ENOENT") {
throw err;
}
}
};
type PublishOptions = {
script: string;
githubToken: string;
createGithubReleases: boolean;
cwd?: string;
};
type PublishedPackage = { name: string; version: string };
type PublishResult =
| {
published: true;
publishedPackages: PublishedPackage[];
}
| {
published: false;
};
export async function runPublish({
script,
githubToken,
createGithubReleases,
cwd = process.cwd(),
}: PublishOptions): Promise<PublishResult> {
const octokit = new (GitHub.plugin(throttling))(
getOctokitOptions(githubToken, { getOctokitOptions(githubToken, {
throttle: { throttle: {
onRateLimit: (retryAfter, options: any, octokit, retryCount) => { onRateLimit: (retryAfter, options: any, octokit, retryCount) => {
@@ -56,71 +114,6 @@ const setupOctokit = (githubToken: string) => {
}, },
}) })
); );
};
const createRelease = async (
octokit: ReturnType<typeof setupOctokit>,
{ pkg, tagName }: { pkg: Package; tagName: string }
) => {
try {
let changelogFileName = path.join(pkg.dir, "CHANGELOG.md");
let changelog = await fs.readFile(changelogFileName, "utf8");
let changelogEntry = getChangelogEntry(changelog, pkg.packageJson.version);
if (!changelogEntry) {
// we can find a changelog but not the entry for this version
// if this is true, something has probably gone wrong
throw new Error(
`Could not find changelog entry for ${pkg.packageJson.name}@${pkg.packageJson.version}`
);
}
await octokit.rest.repos.createRelease({
name: tagName,
tag_name: tagName,
body: changelogEntry.content,
prerelease: pkg.packageJson.version.includes("-"),
...github.context.repo,
});
} catch (err) {
// if we can't find a changelog, the user has probably disabled changelogs
if (
err &&
typeof err === "object" &&
"code" in err &&
err.code !== "ENOENT"
) {
throw err;
}
}
};
type PublishOptions = {
script: string;
githubToken: string;
createGithubReleases: boolean;
cwd?: string;
};
type PublishedPackage = { name: string; version: string };
type PublishResult =
| {
published: true;
publishedPackages: PublishedPackage[];
}
| {
published: false;
};
export async function runPublish({
script,
githubToken,
createGithubReleases,
cwd = process.cwd(),
}: PublishOptions): Promise<PublishResult> {
const octokit = setupOctokit(githubToken);
let [publishCommand, ...publishArgs] = script.split(/\s+/); let [publishCommand, ...publishArgs] = script.split(/\s+/);
@@ -208,12 +201,7 @@ const requireChangesetsCliPkgJson = (cwd: string) => {
try { try {
return require(resolveFrom(cwd, "@changesets/cli/package.json")); return require(resolveFrom(cwd, "@changesets/cli/package.json"));
} catch (err) { } catch (err) {
if ( if (err && err.code === "MODULE_NOT_FOUND") {
err &&
typeof err === "object" &&
"code" in err &&
err.code === "MODULE_NOT_FOUND"
) {
throw new Error( throw new Error(
`Have you forgotten to install \`@changesets/cli\` in "${cwd}"?` `Have you forgotten to install \`@changesets/cli\` in "${cwd}"?`
); );
@@ -314,12 +302,10 @@ export async function runVersion({
hasPublishScript = false, hasPublishScript = false,
prBodyMaxCharacters = MAX_CHARACTERS_PER_MESSAGE, prBodyMaxCharacters = MAX_CHARACTERS_PER_MESSAGE,
}: VersionOptions): Promise<RunVersionResult> { }: VersionOptions): Promise<RunVersionResult> {
const octokit = setupOctokit(githubToken);
let repo = `${github.context.repo.owner}/${github.context.repo.repo}`; let repo = `${github.context.repo.owner}/${github.context.repo.repo}`;
let branch = github.context.ref.replace("refs/heads/", ""); let branch = github.context.ref.replace("refs/heads/", "");
let versionBranch = `changeset-release/${branch}`; let versionBranch = `changeset-release/${branch}`;
let octokit = github.getOctokit(githubToken);
let { preState } = await readChangesetState(cwd); let { preState } = await readChangesetState(cwd);
await gitUtils.switchToMaybeExistingBranch(versionBranch); await gitUtils.switchToMaybeExistingBranch(versionBranch);
+1
View File
@@ -3,6 +3,7 @@ import remarkParse from "remark-parse";
import remarkStringify from "remark-stringify"; import remarkStringify from "remark-stringify";
// @ts-ignore // @ts-ignore
import mdastToString from "mdast-util-to-string"; import mdastToString from "mdast-util-to-string";
import { exec } from "@actions/exec";
import { getPackages, Package } from "@manypkg/get-packages"; import { getPackages, Package } from "@manypkg/get-packages";
export const BumpLevels = { export const BumpLevels = {
+7108 -2814
View File
File diff suppressed because it is too large Load Diff