diff --git a/package.json b/package.json index 8470a55b..389e4b51 100644 --- a/package.json +++ b/package.json @@ -28,6 +28,8 @@ "@commitlint/cli": "^19.5.0", "@commitlint/config-conventional": "^19.5.0", "@vitest/coverage-v8": "^2.1.3", + "conventional-changelog-conventionalcommits": "^8.0.0", + "conventional-changelog-writer": "^8.0.0", "conventional-recommended-bump": "^10.0.0", "dotenv-cli": "^7.4.2", "happy-dom": "^15.7.4", diff --git a/packages/simulation-sdk/package.json b/packages/simulation-sdk/package.json index 0a1925cb..a9c78126 100644 --- a/packages/simulation-sdk/package.json +++ b/packages/simulation-sdk/package.json @@ -1,7 +1,7 @@ { "name": "@morpho-org/simulation-sdk", "description": "Framework-agnostic package that defines methods to simulate interactions on Morpho (such as `Supply`, `Borrow`) and Morpho Vaults (such as `Deposit`, `Withdraw`).", - "version": "1.12.4", + "version": "2.0.0-next.4", "author": "Morpho Association ", "contributors": ["Rubilmax "], "repository": "github:morpho-org/sdks", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 9f143edf..00384545 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -20,6 +20,12 @@ importers: '@vitest/coverage-v8': specifier: ^2.1.3 version: 2.1.3(vitest@2.1.3(@types/node@22.7.5)(happy-dom@15.7.4)(terser@5.35.0)) + conventional-changelog-conventionalcommits: + specifier: ^8.0.0 + version: 8.0.0 + conventional-changelog-writer: + specifier: ^8.0.0 + version: 8.0.0 conventional-recommended-bump: specifier: ^10.0.0 version: 10.0.0 @@ -3498,10 +3504,19 @@ packages: resolution: {integrity: sha512-NKXYmMR/Hr1DevQegFB4MwfM5Vv0m4UIxKZTTYuD98lpTknaZlSRrDOG4X7wIXpGkfsYxZTghUN+Qq+T0YQI7w==} engines: {node: '>=16'} + conventional-changelog-conventionalcommits@8.0.0: + resolution: {integrity: sha512-eOvlTO6OcySPyyyk8pKz2dP4jjElYunj9hn9/s0OB+gapTO8zwS9UQWrZ1pmF2hFs3vw1xhonOLGcGjy/zgsuA==} + engines: {node: '>=18'} + conventional-changelog-preset-loader@5.0.0: resolution: {integrity: sha512-SetDSntXLk8Jh1NOAl1Gu5uLiCNSYenB5tm0YVeZKePRIgDW9lQImromTwLa3c/Gae298tsgOM+/CYT9XAl0NA==} engines: {node: '>=18'} + conventional-changelog-writer@8.0.0: + resolution: {integrity: sha512-TQcoYGRatlAnT2qEWDON/XSfnVG38JzA7E0wcGScu7RElQBkg9WWgZd1peCWFcWDh1xfb2CfsrcvOn1bbSzztA==} + engines: {node: '>=18'} + hasBin: true + conventional-commits-filter@5.0.0: resolution: {integrity: sha512-tQMagCOC59EVgNZcC5zl7XqO30Wki9i9J3acbUvkaosCT6JX3EeFwJD7Qqp4MCikRnzS18WXV3BLIQ66ytu6+Q==} engines: {node: '>=18'} @@ -4230,6 +4245,11 @@ packages: h3@1.13.0: resolution: {integrity: sha512-vFEAu/yf8UMUcB4s43OaDaigcqpQd14yanmOsn+NcRX3/guSKncyE2rOYhq8RIchgJrPSs/QiIddnTTR1ddiAg==} + handlebars@4.7.8: + resolution: {integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==} + engines: {node: '>=0.4.7'} + hasBin: true + happy-dom@15.7.4: resolution: {integrity: sha512-r1vadDYGMtsHAAsqhDuk4IpPvr6N8MGKy5ntBo7tSdim+pWDxus2PNqOcOt8LuDZ4t3KJHE+gCuzupcx/GKnyQ==} engines: {node: '>=18.0.0'} @@ -6240,6 +6260,11 @@ packages: ufo@1.5.4: resolution: {integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==} + uglify-js@3.19.3: + resolution: {integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==} + engines: {node: '>=0.8.0'} + hasBin: true + uint8arrays@3.1.0: resolution: {integrity: sha512-ei5rfKtoRO8OyOIor2Rz5fhzjThwIHJZ3uyDPnDHTXbP0aMQ1RN/6AI5B5d9dBxJOU+BvOAk7ZQ1xphsX8Lrog==} @@ -6546,6 +6571,9 @@ packages: resolution: {integrity: sha512-NsmoXalsWVDMGupxZ5R08ka9flZjjiLvHVAWYOKtiKM8ujtZWr9cRffak+uSE48+Ob8ObalXpwyeUiyDD6QFgg==} engines: {node: '>=8'} + wordwrap@1.0.0: + resolution: {integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==} + workerpool@6.5.1: resolution: {integrity: sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==} @@ -10723,8 +10751,20 @@ snapshots: dependencies: compare-func: 2.0.0 + conventional-changelog-conventionalcommits@8.0.0: + dependencies: + compare-func: 2.0.0 + conventional-changelog-preset-loader@5.0.0: {} + conventional-changelog-writer@8.0.0: + dependencies: + '@types/semver': 7.5.8 + conventional-commits-filter: 5.0.0 + handlebars: 4.7.8 + meow: 13.2.0 + semver: 7.6.3 + conventional-commits-filter@5.0.0: {} conventional-commits-parser@5.0.0: @@ -11546,6 +11586,15 @@ snapshots: uncrypto: 0.1.3 unenv: 1.10.0 + handlebars@4.7.8: + dependencies: + minimist: 1.2.8 + neo-async: 2.6.2 + source-map: 0.6.1 + wordwrap: 1.0.0 + optionalDependencies: + uglify-js: 3.19.3 + happy-dom@15.7.4: dependencies: entities: 4.5.0 @@ -13749,6 +13798,9 @@ snapshots: ufo@1.5.4: {} + uglify-js@3.19.3: + optional: true + uint8arrays@3.1.0: dependencies: multiformats: 9.9.0 @@ -14042,6 +14094,8 @@ snapshots: dependencies: string-width: 4.2.3 + wordwrap@1.0.0: {} + workerpool@6.5.1: {} wrap-ansi@6.2.0: diff --git a/scripts/release/bumper.js b/scripts/release/bumper.js index 4c97656f..62530566 100644 --- a/scripts/release/bumper.js +++ b/scripts/release/bumper.js @@ -1,22 +1,30 @@ import { basename } from "node:path"; +import createPreset from "conventional-changelog-conventionalcommits"; import { Bumper } from "conventional-recommended-bump"; +export const { commits: commitOpts, parser, writer } = createPreset(); + export const prefix = `@morpho-org/${basename(process.cwd())}-`; -export const bumper = new Bumper().tag({ prefix }).commits({ path: "." }); +export const bumper = new Bumper() + .tag({ prefix }) + .commits({ ...commitOpts, path: "." }, parser); + +export let commits; + +export const whatBump = async (_commits) => { + commits = _commits; -export const whatBump = (commits) => { if (commits.length === 0) return; let level = 2; commits.forEach((commit) => { - if (commit.notes.length > 0) { - level = 0; - } else if (commit.type === "feat") { - if (level === 2) { - level = 1; - } - } + if (commit.notes.length > 0) level = 0; + else if ( + level === 2 && + (commit.type === "feat" || commit.type === "feature") + ) + level = 1; }); return { level }; @@ -31,3 +39,5 @@ if (!version) { console.error("Cannot find version from tags"); process.exit(1); } + +export const tag = `${prefix}v${version}`; diff --git a/scripts/release/publish.js b/scripts/release/publish.js index 6a5f1552..4341ab6b 100644 --- a/scripts/release/publish.js +++ b/scripts/release/publish.js @@ -1,6 +1,16 @@ import { spawnSync } from "node:child_process"; +import { writeChangelogString } from "conventional-changelog-writer"; import { inc } from "semver"; -import { branch, bumper, prefix, version, whatBump } from "./bumper.js"; +import { + branch, + bumper, + commits, + prefix, + tag, + version, + whatBump, + writer, +} from "./bumper.js"; let { releaseType } = await bumper.bump(whatBump); @@ -14,6 +24,8 @@ if (releaseType) { "0", ); + const newTag = `${prefix}v${newVersion}`; + console.debug( `Version bump from ${version} to ${newVersion} on branch ${branch} (release type: ${releaseType})`, ); @@ -45,32 +57,6 @@ if (releaseType) { process.exit(1); } - const tag = `${prefix}v${version}`; - const newTag = `${prefix}v${newVersion}`; - - const notesReq = await fetch( - "https://api.github.com/repos/morpho-org/sdks/releases/generate-notes", - { - method: "POST", - headers: { - Accept: "application/vnd.github+json", - Authorization: `Bearer ${process.env.GITHUB_TOKEN}`, - "X-GitHub-Api-Version": "2022-11-28", - }, - body: JSON.stringify({ - tag_name: newTag, - target_commitish: branch, - previous_tag_name: tag, - }), - }, - ); - - const notes = await notesReq.json(); - if (!notesReq.ok) { - console.error(notes); - process.exit(1); - } - const createReq = await fetch( "https://api.github.com/repos/morpho-org/sdks/releases", { @@ -81,7 +67,28 @@ if (releaseType) { "X-GitHub-Api-Version": "2022-11-28", }, body: JSON.stringify({ - ...notes, + name: newTag, + body: await writeChangelogString( + commits, + { + version: `[${newTag}](https://github.com/morpho-org/sdks/compare/${tag}...${newTag})`, + host: "https://github.com", + owner: "morpho-org", + repository: "sdks", + commit: "commit", + types: [ + { type: "feat", section: "Features" }, + { type: "fix", section: "Bug Fixes" }, + { type: "chore", hidden: true }, + { type: "docs", hidden: true }, + { type: "style", hidden: true }, + { type: "refactor", hidden: true }, + { type: "perf", hidden: true }, + { type: "test", hidden: true }, + ], + }, + writer, + ), tag_name: newTag, target_commitish: branch, prerelease: branch !== "main", @@ -95,3 +102,5 @@ if (releaseType) { process.exit(1); } } else console.debug(`No version bump from ${version} on branch ${branch}`); + +process.exit(0); // Sometimes hangs.