From ed53bb98869cd08b581941067f4698b2db41a5a6 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Przemys=C5=82aw=20=C5=BBydek?= Date: Thu, 19 Sep 2024 12:35:45 +0200 Subject: [PATCH] feat: add changeset preview action --- .../__snapshots__/changelog.test.ts.snap | 13 +++ .../changeset-release-notes/action.yml | 9 ++ .../changeset-release-notes/changelog.test.ts | 25 +++++ .../changeset-release-notes/changelog.ts | 106 ++++++++++++++++++ .../changeset-release-notes.ts | 42 +++++++ .../actions/changeset-release-notes/notes.ts | 22 ++++ .../workflows/preview-changeset-release.yml | 48 ++++++++ .../test-preview-changeset-release.yml | 17 +++ README.md | 26 +++++ package.json | 5 +- pnpm-lock.yaml | 99 +++++++++++++--- scripts/build-actions.sh | 4 + 12 files changed, 400 insertions(+), 16 deletions(-) create mode 100644 .github/actions/changeset-release-notes/__snapshots__/changelog.test.ts.snap create mode 100644 .github/actions/changeset-release-notes/action.yml create mode 100644 .github/actions/changeset-release-notes/changelog.test.ts create mode 100644 .github/actions/changeset-release-notes/changelog.ts create mode 100644 .github/actions/changeset-release-notes/changeset-release-notes.ts create mode 100644 .github/actions/changeset-release-notes/notes.ts create mode 100644 .github/workflows/preview-changeset-release.yml create mode 100644 .github/workflows/test-preview-changeset-release.yml create mode 100644 scripts/build-actions.sh diff --git a/.github/actions/changeset-release-notes/__snapshots__/changelog.test.ts.snap b/.github/actions/changeset-release-notes/__snapshots__/changelog.test.ts.snap new file mode 100644 index 0000000..34fd7a4 --- /dev/null +++ b/.github/actions/changeset-release-notes/__snapshots__/changelog.test.ts.snap @@ -0,0 +1,13 @@ +// Jest Snapshot v1, https://goo.gl/fbAQLP + +exports[`getChangesForVersion parse changelog with multiple versions 1`] = ` +[ + { + "changes": [ + "**events**: Introduce \`PUT\` endpoint for \`/events\` API ([e8bc23f](https://github.com/fingerprintjs/fingerprint-pro-server-api-openapi/commit/e8bc23f115c3b01f9d0d472b02093d0d05d3f4a5))", + "**visits**: Model fixes ([e8bc23f](https://github.com/fingerprintjs/fingerprint-pro-server-api-openapi/commit/e8bc23f115c3b01f9d0d472b02093d0d05d3f4a5))", + ], + "type": "Minor Changes", + }, +] +`; diff --git a/.github/actions/changeset-release-notes/action.yml b/.github/actions/changeset-release-notes/action.yml new file mode 100644 index 0000000..01b6211 --- /dev/null +++ b/.github/actions/changeset-release-notes/action.yml @@ -0,0 +1,9 @@ +name: 'Changeset release notes' +description: 'Returns release notes for latest changeset release' +outputs: + release-notes: + description: 'Release notes' + +runs: + using: 'node20' + main: 'dist/index.js' diff --git a/.github/actions/changeset-release-notes/changelog.test.ts b/.github/actions/changeset-release-notes/changelog.test.ts new file mode 100644 index 0000000..b0171bd --- /dev/null +++ b/.github/actions/changeset-release-notes/changelog.test.ts @@ -0,0 +1,25 @@ +import { getChangesForVersion } from './changelog' + +describe('getChangesForVersion', () => { + it('parse changelog with multiple versions', () => { + const changelogText = `# fingerprint-pro-server-api-openapi + +## 1.1.0 + +### Minor Changes + +- **events**: Introduce \`PUT\` endpoint for \`/events\` API ([e8bc23f](https://github.com/fingerprintjs/fingerprint-pro-server-api-openapi/commit/e8bc23f115c3b01f9d0d472b02093d0d05d3f4a5)) +- **visits**: Model fixes ([e8bc23f](https://github.com/fingerprintjs/fingerprint-pro-server-api-openapi/commit/e8bc23f115c3b01f9d0d472b02093d0d05d3f4a5)) + +## 1.0.0 + +### Minor Changes + +- Initial release +` + + const result = getChangesForVersion('1.1.0', changelogText) + + expect(result).toMatchSnapshot() + }) +}) diff --git a/.github/actions/changeset-release-notes/changelog.ts b/.github/actions/changeset-release-notes/changelog.ts new file mode 100644 index 0000000..88a2d27 --- /dev/null +++ b/.github/actions/changeset-release-notes/changelog.ts @@ -0,0 +1,106 @@ +import { NewChangeset, PackageJSON } from '@changesets/types' +import { sync as globSync } from 'glob' +import * as fs from 'fs' +import * as path from 'path' + +export type ChangeLogEntry = { + version: string + changes: string[] +} + +type Project = { + version: string + changelogPath: string +} + +export type ReleaseNotes = { + projectName: string + changes: Changes[] + currentVersion: string +} + +function listProjects(changesets: NewChangeset[]) { + const ids = new Set(...changesets.map((c) => c.id)) + const packageJsons = globSync('**/package.json', { + ignore: ['**/node_modules/**'], + }) + + const projects = new Map() + + packageJsons.forEach((packageJsonPath) => { + const packageJson = JSON.parse(fs.readFileSync(packageJsonPath, 'utf-8')) as PackageJSON + if (!ids.has(packageJson.name)) { + return + } + + const changelogPath = path.join(path.dirname(packageJsonPath), 'CHANGELOG.md') + if (fs.existsSync(changelogPath)) { + projects.set(packageJson.name, { + version: packageJson.version, + changelogPath: changelogPath, + }) + } + }) + + return projects +} + +export function listChangesForAllProjects(changesets: NewChangeset[]) { + const notes: ReleaseNotes[] = [] + + const changelogs = listProjects(changesets) + + changelogs.forEach((project, projectName) => { + const changelog = fs.readFileSync(project.changelogPath, 'utf-8') + notes.push({ + changes: getChangesForVersion(project.version, changelog), + projectName: projectName, + currentVersion: project.version, + }) + }) + + return notes +} + +export type Changes = { type: string; changes: string[] } + +export function getChangesForVersion(version: string, changelog: string): Changes[] { + // Split the changelog into lines for easier processing + const lines = changelog.split('\n') + + // Initialize variables to track the current version and changes + let currentVersion = '' + let changeType = '' + const changes: Changes[] = [] + + for (let i = 0; i < lines.length; i++) { + const line = lines[i].trim() + + // Check for a version line (e.g., "## 1.1.0") + const versionMatch = line.match(/^## (\d+\.\d+\.\d+)/) + if (versionMatch) { + currentVersion = versionMatch[1] + // If the current version matches the requested version, continue processing + if (currentVersion === version) { + continue + } else if (changes.length > 0) { + // If we've already collected changes for the desired version, break the loop + break + } + } + + // Check for a change type line (e.g., "### Minor Changes") + if (currentVersion === version && line.startsWith('###')) { + changeType = line.replace(/^###\s*/, '') + changes.push({ type: changeType, changes: [] }) + } + + // Collect changes under the current change type + if (currentVersion === version && line.startsWith('-')) { + // Add the change to the last changeType entry + changes[changes.length - 1].changes.push(line.slice(2).trim()) + } + } + + return changes +} diff --git a/.github/actions/changeset-release-notes/changeset-release-notes.ts b/.github/actions/changeset-release-notes/changeset-release-notes.ts new file mode 100644 index 0000000..dac7fc0 --- /dev/null +++ b/.github/actions/changeset-release-notes/changeset-release-notes.ts @@ -0,0 +1,42 @@ +import * as fs from 'fs' +import * as path from 'path' +import { PackageJSON } from '@changesets/types' +import * as core from '@actions/core' +import * as cp from 'child_process' +import readChangesets from '@changesets/read' +import { getReleaseNotes } from './notes' + +function getCurrentVersion() { + const pkg = JSON.parse(fs.readFileSync(path.join(process.cwd(), 'package.json'), 'utf-8')) + + return (pkg as PackageJSON).version +} + +function doVersion() { + const lastVersion = getCurrentVersion() + cp.execSync('pnpm exec changeset version') + const nextVersion = getCurrentVersion() + + return lastVersion !== nextVersion +} + +async function main() { + const changesets = await readChangesets(process.cwd()) + if (!changesets.length) { + return + } + + if (!doVersion()) { + return + } + + const notes = getReleaseNotes(changesets) + + if (notes) { + core.setOutput('release-notes', notes) + } +} + +main().catch((err) => { + core.setFailed(err) +}) diff --git a/.github/actions/changeset-release-notes/notes.ts b/.github/actions/changeset-release-notes/notes.ts new file mode 100644 index 0000000..e08d503 --- /dev/null +++ b/.github/actions/changeset-release-notes/notes.ts @@ -0,0 +1,22 @@ +import { NewChangeset } from '@changesets/types' +import { listChangesForAllProjects } from './changelog' + +export function getReleaseNotes(changesets: NewChangeset[]) { + let result = '' + + const changes = listChangesForAllProjects(changesets) + + changes.forEach((change) => { + result += `## ${change.projectName}@${change.currentVersion}\n\n` + + change.changes.forEach((change) => { + result += `### ${change.type}` + + change.changes.forEach((description) => { + result += `\n- ${description}` + }) + }) + }) + + return result +} diff --git a/.github/workflows/preview-changeset-release.yml b/.github/workflows/preview-changeset-release.yml new file mode 100644 index 0000000..edca2a6 --- /dev/null +++ b/.github/workflows/preview-changeset-release.yml @@ -0,0 +1,48 @@ +name: 'Preview changeset release' +on: + workflow_call: + inputs: + pr-title: + description: Title of created PR + required: true + type: string + node-version: + description: 'Node version to use' + required: false + type: string + default: 'lts/*' + +jobs: + preview: + name: Generate release notes + runs-on: ubuntu-latest + if: ${{ !contains('[changeset] ', inputs.pr-title) }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: 'Install latest node version' + uses: actions/setup-node@v4 + with: + node-version: ${{ inputs.node-version }} + + - name: 'Get release notes' + id: notes + # TODO Replace with this + #uses: fingerprintjs/dx-team-toolkit/.github/actions/update-sdk-schema@v1 + uses: ./.github/actions/changeset-release-notes + + - name: 'Add comment to PR' + if: steps.notes.outputs.release-notes != '' + uses: marocchino/sticky-pull-request-comment@331f8f5b4215f0445d3c07b4967662a32a2d3e31 + with: + header: Release notes + recreate: true + message: ${{ steps.notes.outputs.release-notes }} + + - name: 'Add release notes preview to the job summary' + if: steps.notes.outputs.release-notes != '' + run: | + echo "${{ steps.notes.outputs.release-notes }}" >> $GITHUB_STEP_SUMMARY + diff --git a/.github/workflows/test-preview-changeset-release.yml b/.github/workflows/test-preview-changeset-release.yml new file mode 100644 index 0000000..a32be55 --- /dev/null +++ b/.github/workflows/test-preview-changeset-release.yml @@ -0,0 +1,17 @@ +name: 'Preview changeset release' +on: + pull_request: + +permissions: + pull-requests: write + contents: write + +jobs: + preview: + name: Preview changeset release + uses: ./.github/workflows/preview-changeset-release.yml + with: + pr-title: ${{ github.event.pull_request.title }} + + + diff --git a/README.md b/README.md index ddd0422..f3958bb 100644 --- a/README.md +++ b/README.md @@ -30,6 +30,7 @@ This monorepo stores reusable configurations for tools like ESLint, Prettier, et - [9. Create Prerelease Branch and Force Push](#9-create-prerelease-branch-and-force-push) - [10. Release SDKs using changesets](#10-release-sdks-using-changesets) - [11. Sync server-side SDK schema with OpenAPI release](#11-sync-server-side-sdk-schema-with-openapi-release) +- [12. Preview changeset release](#12-preview-changeset-release) ### 1. Run tests and show coverage diff @@ -613,3 +614,28 @@ jobs: secrets: GH_TOKEN: ${{ secrets.GH_TOKEN }} ``` + +### 12. Preview changeset release + +This reusable workflow processes parsed [changesets](https://github.com/changesets/changesets) and generates preview of release notes. + +#### Prerequisites: + +1. Project is properly configured to release using changesets. + +#### Example of usage: + +```yaml +name: 'Preview changeset release' +on: + pull_request: + +permissions: + pull-requests: write + contents: write + +jobs: + preview: + name: Preview changeset release + uses: fingerprintjs/dx-team-toolkit/.github/workflows/preview-changeset-release.yml@1 +``` diff --git a/package.json b/package.json index ea7fc21..1bfef51 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "prepare": "husky install", "build": "pnpm run -r build", - "build:actions": "ncc build .github/actions/update-sdk-schema/update-schema.ts -o .github/actions/update-sdk-schema/dist", + "build:actions": "bash ./scripts/build-actions.sh", "test": "jest", "test:coverage": "jest --coverage", "docs": "mkdir docs && cp README.md ./docs/README.md", @@ -17,6 +17,8 @@ "devDependencies": { "@changesets/changelog-github": "^0.5.0", "@changesets/cli": "^2.27.1", + "@changesets/read": "^0.6.1", + "@changesets/types": "^6.0.0", "@commitlint/cli": "^17.8.1", "@fingerprintjs/commit-lint-dx-team": "workspace:local", "@fingerprintjs/conventional-changelog-dx-team": "workspace:local", @@ -32,6 +34,7 @@ "eslint": "^8.57.0", "eslint-config-prettier": "^8.10.0", "eslint-plugin-prettier": "^4.2.1", + "glob": "^11.0.0", "human-id": "^4.1.1", "husky": "^8.0.3", "jest": "^29.7.0", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5238ea9..1403820 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,6 +33,12 @@ importers: '@changesets/cli': specifier: ^2.27.1 version: 2.27.1 + '@changesets/read': + specifier: ^0.6.1 + version: 0.6.1 + '@changesets/types': + specifier: ^6.0.0 + version: 6.0.0 '@commitlint/cli': specifier: ^17.8.1 version: 17.8.1 @@ -78,6 +84,9 @@ importers: eslint-plugin-prettier: specifier: ^4.2.1 version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) + glob: + specifier: ^11.0.0 + version: 11.0.0 human-id: specifier: ^4.1.1 version: 4.1.1 @@ -377,17 +386,23 @@ packages: '@changesets/git@3.0.0': resolution: {integrity: sha512-vvhnZDHe2eiBNRFHEgMiGd2CT+164dfYyrJDhwwxTVD/OW0FUD6G7+4DIx1dNwkwjHyzisxGAU96q0sVNBns0w==} + '@changesets/git@3.0.1': + resolution: {integrity: sha512-pdgHcYBLCPcLd82aRcuO0kxCDbw/yISlOtkmwmE8Odo1L6hSiZrBOsRl84eYG7DRCab/iHnOkWqExqc4wxk2LQ==} + '@changesets/logger@0.1.0': resolution: {integrity: sha512-pBrJm4CQm9VqFVwWnSqKEfsS2ESnwqwH+xR7jETxIErZcfd1u2zBSqrHbRHR7xjhSgep9x2PSKFKY//FAshA3g==} + '@changesets/logger@0.1.1': + resolution: {integrity: sha512-OQtR36ZlnuTxKqoW4Sv6x5YIhOmClRd5pWsjZsddYxpWs517R0HkyiefQPIytCVh4ZcC5x9XaG8KTdd5iRQUfg==} + '@changesets/parse@0.4.0': resolution: {integrity: sha512-TS/9KG2CdGXS27S+QxbZXgr8uPsP4yNJYb4BC2/NeFUj80Rni3TeD2qwWmabymxmrLo7JEsytXH1FbpKTbvivw==} '@changesets/pre@2.0.0': resolution: {integrity: sha512-HLTNYX/A4jZxc+Sq8D1AMBsv+1qD6rmmJtjsCJa/9MSRybdxh0mjbTvE6JYZQ/ZiQ0mMlDOlGPXTm9KLTU3jyw==} - '@changesets/read@0.6.0': - resolution: {integrity: sha512-ZypqX8+/im1Fm98K4YcZtmLKgjs1kDQ5zHpc2U1qdtNBmZZfo/IBiG162RoP0CUF05tvp2y4IspH11PLnPxuuw==} + '@changesets/read@0.6.1': + resolution: {integrity: sha512-jYMbyXQk3nwP25nRzQQGa1nKLY0KfoOV7VLgwucI0bUO8t8ZLCr6LZmgjXsiKuRDc+5A6doKPr9w2d+FEJ55zQ==} '@changesets/types@4.1.0': resolution: {integrity: sha512-LDQvVDv5Kb50ny2s25Fhm3d9QSZimsoUGBsUioj6MC3qbMUCuC8GPIvk/M6IvXx3lYhAs0lwWUQLb+VIEUCECw==} @@ -1895,8 +1910,14 @@ packages: resolution: {integrity: sha512-7Bv8RF0k6xjo7d4A/PxYLbUCfb6c+Vpd2/mB2yRDlew7Jb5hEXiCD9ibfO7wpk8i4sevK6DFny9h7EYbM3/sHg==} hasBin: true + glob@11.0.0: + resolution: {integrity: sha512-9UiX/Bl6J2yaBbxKoEBRm4Cipxgok8kQYcOPEhScPwebu2I0HoQOuYdIO6S3hLuWoZgpDpwQZMzTFxgpkyT76g==} + engines: {node: 20 || >=22} + hasBin: true + glob@7.2.3: resolution: {integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==} + deprecated: Glob versions prior to v9 are no longer supported global-dirs@0.1.1: resolution: {integrity: sha512-NknMLn7F2J7aflwFOlGdNIuCDpN3VGoSoB+aap3KABFWbHVn1TCgFC+np23J8W2BiZbjfEw3BFBycSMv1AFblg==} @@ -2172,6 +2193,10 @@ packages: jackspeak@3.4.3: resolution: {integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==} + jackspeak@4.0.1: + resolution: {integrity: sha512-cub8rahkh0Q/bw1+GxP7aeSe29hHHn2V4m29nnDlvCdlgU+3UGxkZp7Z53jLUdpX3jdTO0nJZUDl3xvbWc2Xog==} + engines: {node: 20 || >=22} + jest-changed-files@29.7.0: resolution: {integrity: sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} @@ -2439,6 +2464,10 @@ packages: lru-cache@10.4.3: resolution: {integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==} + lru-cache@11.0.1: + resolution: {integrity: sha512-CgeuL5uom6j/ZVrg7G/+1IXqRY8JXX4Hghfy5YE0EhoYQWvndP1kufu58cmZLNIDKnRhZrXfdS9urVWx98AipQ==} + engines: {node: 20 || >=22} + lru-cache@4.1.5: resolution: {integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==} @@ -2494,6 +2523,10 @@ packages: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + minimatch@10.0.1: + resolution: {integrity: sha512-ethXTt3SGGR+95gudmqJ1eNhRO7eGEGIgYA9vnPatK4/etz2MEVDno5GMCibdMTuBMyElzIlgxMna3K94XDIDQ==} + engines: {node: 20 || >=22} + minimatch@3.1.2: resolution: {integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==} @@ -2653,13 +2686,14 @@ packages: resolution: {integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==} engines: {node: '>=16 || 14 >=14.18'} + path-scurry@2.0.0: + resolution: {integrity: sha512-ypGJsmGtdXUOeM5u93TyeIEfEhM6s+ljAhrk5vAvSx8uyY/02OvrZnA0YNGUrPXfpJMgI1ODd3nwz8Npx4O4cg==} + engines: {node: 20 || >=22} + path-type@4.0.0: resolution: {integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==} engines: {node: '>=8'} - picocolors@1.0.0: - resolution: {integrity: sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==} - picocolors@1.1.0: resolution: {integrity: sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==} @@ -3670,7 +3704,7 @@ snapshots: '@changesets/git': 3.0.0 '@changesets/logger': 0.1.0 '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 + '@changesets/read': 0.6.1 '@changesets/types': 6.0.0 '@changesets/write': 0.3.0 '@manypkg/get-packages': 1.1.3 @@ -3727,7 +3761,7 @@ snapshots: '@changesets/assemble-release-plan': 6.0.0 '@changesets/config': 3.0.0 '@changesets/pre': 2.0.0 - '@changesets/read': 0.6.0 + '@changesets/read': 0.6.1 '@changesets/types': 6.0.0 '@manypkg/get-packages': 1.1.3 @@ -3743,10 +3777,22 @@ snapshots: micromatch: 4.0.5 spawndamnit: 2.0.0 + '@changesets/git@3.0.1': + dependencies: + '@changesets/errors': 0.2.0 + '@manypkg/get-packages': 1.1.3 + is-subdir: 1.2.0 + micromatch: 4.0.5 + spawndamnit: 2.0.0 + '@changesets/logger@0.1.0': dependencies: chalk: 2.4.2 + '@changesets/logger@0.1.1': + dependencies: + picocolors: 1.1.0 + '@changesets/parse@0.4.0': dependencies: '@changesets/types': 6.0.0 @@ -3760,16 +3806,15 @@ snapshots: '@manypkg/get-packages': 1.1.3 fs-extra: 7.0.1 - '@changesets/read@0.6.0': + '@changesets/read@0.6.1': dependencies: - '@babel/runtime': 7.24.0 - '@changesets/git': 3.0.0 - '@changesets/logger': 0.1.0 + '@changesets/git': 3.0.1 + '@changesets/logger': 0.1.1 '@changesets/parse': 0.4.0 '@changesets/types': 6.0.0 - chalk: 2.4.2 fs-extra: 7.0.1 p-filter: 2.1.0 + picocolors: 1.1.0 '@changesets/types@4.1.0': {} @@ -5563,6 +5608,15 @@ snapshots: package-json-from-dist: 1.0.0 path-scurry: 1.11.1 + glob@11.0.0: + dependencies: + foreground-child: 3.3.0 + jackspeak: 4.0.1 + minimatch: 10.0.1 + minipass: 7.1.2 + package-json-from-dist: 1.0.0 + path-scurry: 2.0.0 + glob@7.2.3: dependencies: fs.realpath: 1.0.0 @@ -5824,6 +5878,12 @@ snapshots: optionalDependencies: '@pkgjs/parseargs': 0.11.0 + jackspeak@4.0.1: + dependencies: + '@isaacs/cliui': 8.0.2 + optionalDependencies: + '@pkgjs/parseargs': 0.11.0 + jest-changed-files@29.7.0: dependencies: execa: 5.1.1 @@ -6238,6 +6298,8 @@ snapshots: lru-cache@10.4.3: {} + lru-cache@11.0.1: {} + lru-cache@4.1.5: dependencies: pseudomap: 1.0.2 @@ -6306,6 +6368,10 @@ snapshots: min-indent@1.0.1: {} + minimatch@10.0.1: + dependencies: + brace-expansion: 2.0.1 + minimatch@3.1.2: dependencies: brace-expansion: 1.1.11 @@ -6454,9 +6520,12 @@ snapshots: lru-cache: 10.4.3 minipass: 7.1.2 - path-type@4.0.0: {} + path-scurry@2.0.0: + dependencies: + lru-cache: 11.0.1 + minipass: 7.1.2 - picocolors@1.0.0: {} + path-type@4.0.0: {} picocolors@1.1.0: {} @@ -7068,7 +7137,7 @@ snapshots: dependencies: browserslist: 4.23.0 escalade: 3.1.2 - picocolors: 1.0.0 + picocolors: 1.1.0 uri-js@4.4.1: dependencies: diff --git a/scripts/build-actions.sh b/scripts/build-actions.sh new file mode 100644 index 0000000..ad23947 --- /dev/null +++ b/scripts/build-actions.sh @@ -0,0 +1,4 @@ +#!/usr/bin/env bash + +ncc build .github/actions/update-sdk-schema/update-schema.ts -o .github/actions/update-sdk-schema/dist +ncc build .github/actions/changeset-release-notes/changeset-release-notes.ts -o .github/actions/changeset-release-notes/dist