From ad060b8c4214e2d3a9494aad95f04619b1e909ee Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Mon, 18 Dec 2023 10:20:16 +0100 Subject: [PATCH 01/10] Create pre-publish.yml --- .github/workflows/pre-publish.yml | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) create mode 100644 .github/workflows/pre-publish.yml diff --git a/.github/workflows/pre-publish.yml b/.github/workflows/pre-publish.yml new file mode 100644 index 000000000..6606e6b7d --- /dev/null +++ b/.github/workflows/pre-publish.yml @@ -0,0 +1,31 @@ +name: Publish PR build +on: + workflow_dispatch: +permissions: + actions: read + checks: write + contents: read + deployments: write + id-token: write + statuses: write +jobs: + publish: + runs-on: ubuntu-latest + environment: npm + env: + NPM_TOKEN: ${{ secrets.NPM_AUTH_TOKEN }} + steps: + - uses: actions/checkout@v4 + with: + fetch-depth: 0 + + - name: PNPM setup + uses: ./.github/actions/pnpm-setup + + - name: Build monorepo + run: pnpm build + + - name: Publish PR version + run: | + pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" + pnpm preship --no-git-checks From c5ad6148c82307b524d3becef85018db9d9bac8a Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:52:15 +0100 Subject: [PATCH 02/10] ci: :construction_worker: add ci pr release script (#560) --- .github/actions/pnpm-setup/action.yaml | 19 + .github/helpers/package.json | 13 + .github/helpers/src/constants.ts | 1 + .github/helpers/src/pre-version.ts | 89 ++++ .github/helpers/src/publish-comment.ts | 88 ++++ .github/helpers/src/utils/logInfo.ts | 17 + .../helpers/src/utils/parse-package-json.ts | 12 + .github/helpers/tsconfig.json | 8 + .github/workflows/ci.yml | 16 +- .github/workflows/pre-publish.yml | 11 +- .github/workflows/publish.yml | 20 +- package.json | 4 +- packages/ag-grid/package.json | 3 +- packages/filter/package.json | 3 +- packages/garden/package.json | 3 +- packages/power-bi/package.json | 3 +- packages/workspace-fusion/package.json | 3 +- packages/workspace-react/package.json | 3 +- pnpm-lock.yaml | 406 +++++++++++++++++- pnpm-workspace.yaml | 1 + 20 files changed, 682 insertions(+), 41 deletions(-) create mode 100644 .github/actions/pnpm-setup/action.yaml create mode 100644 .github/helpers/package.json create mode 100644 .github/helpers/src/constants.ts create mode 100644 .github/helpers/src/pre-version.ts create mode 100644 .github/helpers/src/publish-comment.ts create mode 100644 .github/helpers/src/utils/logInfo.ts create mode 100644 .github/helpers/src/utils/parse-package-json.ts create mode 100644 .github/helpers/tsconfig.json diff --git a/.github/actions/pnpm-setup/action.yaml b/.github/actions/pnpm-setup/action.yaml new file mode 100644 index 000000000..6555b2814 --- /dev/null +++ b/.github/actions/pnpm-setup/action.yaml @@ -0,0 +1,19 @@ +name: PNPM setup +description: 'Set up pnpm with cache' + +runs: + using: 'composite' + steps: + - uses: pnpm/action-setup@v2.2.4 + with: + version: 8.0.0 + + - name: Setup Node.js environment + uses: actions/setup-node@v4 + with: + node-version: 18 + cache: 'pnpm' + + - name: Install dependencies + shell: bash + run: pnpm install diff --git a/.github/helpers/package.json b/.github/helpers/package.json new file mode 100644 index 000000000..b186100ef --- /dev/null +++ b/.github/helpers/package.json @@ -0,0 +1,13 @@ +{ + "name": "fusion-workspace-helpers", + "version": "0.0.0", + "type": "module", + "private": true, + "dependencies": { + "@actions/core": "^1.10.1", + "@actions/github": "^6.0.0", + "commander": "^11.1.0", + "markdown-table": "^3.0.3", + "tsx": "^4.6.2" + } +} diff --git a/.github/helpers/src/constants.ts b/.github/helpers/src/constants.ts new file mode 100644 index 000000000..1997af1f1 --- /dev/null +++ b/.github/helpers/src/constants.ts @@ -0,0 +1 @@ +export const RELEASE_FILE_NAME = 'release.json'; diff --git a/.github/helpers/src/pre-version.ts b/.github/helpers/src/pre-version.ts new file mode 100644 index 000000000..fda4884a6 --- /dev/null +++ b/.github/helpers/src/pre-version.ts @@ -0,0 +1,89 @@ +#!/usr/bin/env node + +const defaultReleaseSchema: ReleaseSchema = { + packages: [], +}; + +import { Command } from 'commander'; +import { execSync } from 'child_process'; +import { writeFileSync, existsSync, readFileSync } from 'fs'; +import { parsePackageJson } from './utils/parse-package-json.js'; +import { logInfo } from './utils/logInfo.js'; +import { RELEASE_FILE_NAME } from './constants.js'; + +const program = new Command(); + +program.name('PR'); + +program.command('publish').action(async () => { + createFusionApp(); +}); + +await program.parseAsync(); + +/** + * Returns the next patch of packagejson version + */ +function packageJsonNextPatch() { + const packageJson = parsePackageJson(); + const version = packageJson.version.split('-')[0]; + + const splitVersion = version.split('.'); + + splitVersion[2] = (parseInt(splitVersion[2]) + 1).toString(); + return splitVersion.join('.'); +} + +export async function createFusionApp() { + preparePackageForVerBump(); + bumpPackageJson(); + publishPrPackage(); +} + +function publishPrPackage() { + const releaseMessage = execSync('pnpm publish --tag pr --json --no-git-checks'); + + const npmRelease: NpmRelease = JSON.parse(releaseMessage.toString('utf-8')); + logInfo(npmRelease.id, 'Green'); + appendReleaseLog(npmRelease); +} + +type ReleaseSchema = { + packages: string[]; +}; + +function appendReleaseLog(npmRelease: NpmRelease) { + const fileName = `../../${RELEASE_FILE_NAME}`; + if (!existsSync(fileName)) { + writeFileSync(fileName, JSON.stringify(defaultReleaseSchema, null, 2)); + } + const release = readFileSync(fileName).toString('utf-8'); + const contents: ReleaseSchema = JSON.parse(release); + contents.packages.push(npmRelease.id); + writeFileSync(fileName, JSON.stringify(contents)); +} + +function preparePackageForVerBump() { + const packageJson = parsePackageJson(); + const nextPatch = packageJsonNextPatch(); + const maybeVersion = execSync(`pnpm show ${packageJson.name} --json dist-tags.pr`).toString('utf-8'); + + if (maybeVersion === '') return; + + //There is a pr tag release including the package json ver + if (maybeVersion.includes(nextPatch)) { + packageJson.version = maybeVersion.replaceAll(`"`, ''); + writeFileSync('./package.json', JSON.stringify(packageJson, null, 2)); + } +} + +function bumpPackageJson() { + execSync('pnpm version prerelease --preid pr'); +} + +type NpmRelease = { + id: string; + name: string; + version: number; + unpackedSize: number; +}; diff --git a/.github/helpers/src/publish-comment.ts b/.github/helpers/src/publish-comment.ts new file mode 100644 index 000000000..7e241c497 --- /dev/null +++ b/.github/helpers/src/publish-comment.ts @@ -0,0 +1,88 @@ +#!/usr/bin/env node + +import { Command } from 'commander'; +import { getOctokit, context } from '@actions/github'; +import { logInfo } from './utils/logInfo.js'; +import { readFileSync } from 'fs'; +import { RELEASE_FILE_NAME } from './constants.js'; + +type Octo = ReturnType; + +async function getPullRequestFromBranch(client: Octo) { + const branch = context.ref.replace('refs/heads/', ''); + + const pullRequests = await client.rest.pulls.list({ owner: context.issue.owner, repo: context.issue.repo }); + const pullRequest = pullRequests.data.find((s) => s.head.ref === branch); + + if (!pullRequest) { + const msg = `${branch} does not have any associated pull request`; + logInfo(msg, 'Red'); + throw new Error(msg); + } + return pullRequest; +} + +async function commentPullRequest(client: Octo, issueNumber: number) { + const body = parseReleaseJson(); + + const comment = await client.rest.issues.createComment({ + issue_number: issueNumber, + body: body, + owner: context.issue.owner, + repo: context.issue.repo, + }); + if (comment.status === 201) { + logInfo('Comment created successfully', 'Green'); + } +} + +const program = new Command(); + +program.name('PR'); + +program + .command('comment') + .option('-T, --token ', 'github token') + .action(async (args) => { + if (!args.token) { + throw new Error('Missing github token'); + } + + const client = getOctokit(args.token); + const pr = await getPullRequestFromBranch(client); + commentPullRequest(client, pr.number); + }); + +await program.parseAsync(); + +function parseReleaseJson() { + const packages: string[] = JSON.parse(readFileSync(`./${RELEASE_FILE_NAME}`).toString('utf-8')).packages; + + const isWorkspaceRelease = packages.find((s) => s.includes('workspace-fusion')); + + const workspaceWarning = isWorkspaceRelease + ? '' + : `Well, I reckon the @equinor/workspace-fusion ain't joinin' the rodeo just yet. Seems like it's taken a rain check on the publication hoedown. Did you happen to forget to give that package a little nudge, like spurrin' a stubborn steer❓`; + + const packageLines = packages + .map( + (npmPackage) => `\`\`\` +pnpm i ${npmPackage} +\`\`\`` + ) + .join('\n'); + + const prBody = `Howdy, partner, + + Looks like you've got yourself a proper roundup with a posse of packages📦. If you're fixin' to bring 'em into your code corral, just hitch 'em up one by one with a trusty command like a cowboy tamin' a wild mustang. + + ${packageLines} + + These here commands will have your packages saddled up and ready to hit the open range of your project. Keep those dependencies roped and ride on into the sunset of seamless coding. + + ${workspaceWarning} + + Happy trailblazin' +`; + return prBody; +} diff --git a/.github/helpers/src/utils/logInfo.ts b/.github/helpers/src/utils/logInfo.ts new file mode 100644 index 000000000..5a2f4f7fa --- /dev/null +++ b/.github/helpers/src/utils/logInfo.ts @@ -0,0 +1,17 @@ +const ColorReset = '\x1b[0m'; +type TextColor = 'Red' | 'Green' | 'Black' | 'Yellow' | 'Blue' | 'Magenta' | 'Cyan' | 'White'; + +const textColor = { + Red: '\x1b[31m', + Black: '\x1b[30m', + Green: '\x1b[32m', + Yellow: '\x1b[33m', + Blue: '\x1b[34m', + Magenta: '\x1b[35m', + Cyan: '\x1b[36m', + White: '\x1b[37m', +} satisfies Record; + +export function logInfo(message: string, color: TextColor): void { + console.log(`${textColor[color]}${message}${ColorReset}`); +} diff --git a/.github/helpers/src/utils/parse-package-json.ts b/.github/helpers/src/utils/parse-package-json.ts new file mode 100644 index 000000000..0e1a8682f --- /dev/null +++ b/.github/helpers/src/utils/parse-package-json.ts @@ -0,0 +1,12 @@ +import fs from 'fs'; + +export type PackageJson = { + name?: string; + version?: string; + type?: 'module' | 'commonjs'; +} & Record; + +export function parsePackageJson(path: string = './package.json'): PackageJson { + const blob = fs.readFileSync(path); + return JSON.parse(blob.toString('utf-8')); +} diff --git a/.github/helpers/tsconfig.json b/.github/helpers/tsconfig.json new file mode 100644 index 000000000..c7c69c103 --- /dev/null +++ b/.github/helpers/tsconfig.json @@ -0,0 +1,8 @@ +{ + "compilerOptions": { + "module": "NodeNext", + "moduleResolution": "NodeNext", + "target": "ESNext" + }, + "include": ["src"] +} diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 7b8022cb8..b9102add5 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -13,19 +13,7 @@ jobs: with: fetch-depth: 0 - - uses: nrwl/nx-set-shas@v4 - - - name: Setup PNPM - uses: pnpm/action-setup@v2 - with: - version: 8 - - - uses: actions/setup-node@v4 - with: - cache: 'pnpm' - - - run: pnpm config set auto-install-peers true - - - run: npm run first-time-setup + - name: PNPM setup + uses: ./.github/actions/pnpm-setup - run: pnpm build diff --git a/.github/workflows/pre-publish.yml b/.github/workflows/pre-publish.yml index 6606e6b7d..9a0514255 100644 --- a/.github/workflows/pre-publish.yml +++ b/.github/workflows/pre-publish.yml @@ -7,7 +7,9 @@ permissions: contents: read deployments: write id-token: write + issues: write statuses: write + pull-requests: write jobs: publish: runs-on: ubuntu-latest @@ -25,7 +27,10 @@ jobs: - name: Build monorepo run: pnpm build + - run: pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" + - name: Publish PR version - run: | - pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" - pnpm preship --no-git-checks + run: pnpm pr-shipit + + - name: Comment PR + run: pnpm tsx ./.github/helpers/src/publish-comment.ts comment --token ${{github.token}} diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index f037dd5cd..d96fbfb1d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -3,7 +3,6 @@ on: push: branches: - main - - preview/server-side jobs: publish: runs-on: ubuntu-latest @@ -14,11 +13,14 @@ jobs: - uses: actions/checkout@v4 with: fetch-depth: 0 - - run: npm run first-time-setup - #... previous steps - # Run `build` script in every projects - - run: pnpm run build - # Set token - - run: pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" - # Publish all packages in the workspace which version still does not exist - - run: pnpm shipit --no-git-checks + + - name: PNPM setup + uses: ./.github/actions/pnpm-setup + + - name: Build monorepo + run: pnpm build + + - name: Publish NPM + run: | + pnpm config set '//registry.npmjs.org/:_authToken' "${NPM_TOKEN}" + pnpm shipit --no-git-checks diff --git a/package.json b/package.json index 01cafe6b3..654e5e7b9 100644 --- a/package.json +++ b/package.json @@ -9,7 +9,8 @@ "build": "turbo run build", "test": "turbo run test", "documentation": "pnpx astro dev --root ./documentation", - "shipit": "pnpm build && pnpm -r publish", + "shipit": "turbo run build && pnpm -r publish", + "pr-shipit": "turbo run build && pnpm --filter ...[origin/main] pr-release", "dev": "turbo run dev --filter ./apps/**" }, "private": true, @@ -23,6 +24,7 @@ "@typescript-eslint/parser": "~5.24.0", "prettier": "^2.6.2", "tsup": "^8.0.1", + "tsx": "^4.6.2", "turbo": "^1.9.3", "typescript": "~5.0.2", "typescript-plugin-styled-components": "^2.0.0" diff --git a/packages/ag-grid/package.json b/packages/ag-grid/package.json index bb9b8bf7a..19b4e4f05 100644 --- a/packages/ag-grid/package.json +++ b/packages/ag-grid/package.json @@ -7,7 +7,8 @@ "license": "MIT", "scripts": { "build": "tsup ./src/index.ts ./src/modules/index.ts --format cjs,esm --dts --clean", - "build:prod": "tsup ./src/index.ts ./src/modules/index.ts --format cjs,esm --dts --clean" + "build:prod": "tsup ./src/index.ts ./src/modules/index.ts --format cjs,esm --dts --clean", + "pr-release": "tsx ../../.github/helpers/src/pre-version.ts publish" }, "main": "dist/index.cjs", "module": "dist/index.js", diff --git a/packages/filter/package.json b/packages/filter/package.json index f5d5c9322..d5243e585 100644 --- a/packages/filter/package.json +++ b/packages/filter/package.json @@ -6,7 +6,8 @@ "license": "MIT", "scripts": { "build": "tsup ./src/index.ts --format cjs,esm --dts --clean", - "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean" + "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean", + "pr-release": "tsx ../../.github/helpers/src/pre-version.ts publish" }, "publishConfig": { "access": "public" diff --git a/packages/garden/package.json b/packages/garden/package.json index 4b100eaea..54cc7e526 100644 --- a/packages/garden/package.json +++ b/packages/garden/package.json @@ -6,7 +6,8 @@ "license": "MIT", "scripts": { "build": "tsup ./src/index.ts --format cjs,esm --dts --clean", - "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean" + "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean", + "pr-release": "tsx ../../.github/helpers/src/pre-version.ts publish" }, "publishConfig": { "access": "public" diff --git a/packages/power-bi/package.json b/packages/power-bi/package.json index 4789ad6b5..969eea915 100644 --- a/packages/power-bi/package.json +++ b/packages/power-bi/package.json @@ -6,7 +6,8 @@ "license": "MIT", "scripts": { "build": "tsup ./src/index.ts --format cjs,esm --dts --clean", - "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean" + "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean", + "pr-release": "tsx ../../.github/helpers/src/pre-version.ts publish" }, "publishConfig": { "access": "public" diff --git a/packages/workspace-fusion/package.json b/packages/workspace-fusion/package.json index 1c993570d..fd802dd55 100644 --- a/packages/workspace-fusion/package.json +++ b/packages/workspace-fusion/package.json @@ -6,7 +6,8 @@ "license": "MIT", "scripts": { "build": "tsup", - "build:prod": "tsup" + "build:prod": "tsup", + "pr-release": "tsx ../../.github/helpers/src/pre-version.ts publish" }, "publishConfig": { "access": "public" diff --git a/packages/workspace-react/package.json b/packages/workspace-react/package.json index 06c673e35..3b62dc0e5 100644 --- a/packages/workspace-react/package.json +++ b/packages/workspace-react/package.json @@ -6,7 +6,8 @@ "license": "MIT", "scripts": { "build": "tsup ./src/index.ts --format cjs,esm --dts --clean", - "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean" + "build:prod": "tsup ./src/index.ts --format cjs,esm --dts --clean", + "pr-release": "tsx ../../.github/helpers/src/pre-version.ts publish" }, "publishConfig": { "access": "public" diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 2b32635db..8634c34ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -23,6 +23,9 @@ importers: tsup: specifier: ^8.0.1 version: 8.0.1(typescript@5.0.2) + tsx: + specifier: ^4.6.2 + version: 4.6.2 turbo: specifier: ^1.9.3 version: 1.9.3 @@ -33,6 +36,24 @@ importers: specifier: ^2.0.0 version: 2.0.0(typescript@5.0.2) + .github/helpers: + dependencies: + '@actions/core': + specifier: ^1.10.1 + version: 1.10.1 + '@actions/github': + specifier: ^6.0.0 + version: 6.0.0 + commander: + specifier: ^11.1.0 + version: 11.1.0 + markdown-table: + specifier: ^3.0.3 + version: 3.0.3 + tsx: + specifier: ^4.6.2 + version: 4.6.2 + apps/test-app: dependencies: '@equinor/eds-core-react': @@ -574,6 +595,29 @@ packages: engines: {node: '>=0.10.0'} dev: true + /@actions/core@1.10.1: + resolution: {integrity: sha512-3lBR9EDAY+iYIpTnTIXmWcNbX3T2kCkAEQGIQx4NVQ0575nk2k3GRZDTPQG+vVtS2izSLmINlxXf0uLtnrTP+g==} + dependencies: + '@actions/http-client': 2.2.0 + uuid: 8.3.2 + dev: false + + /@actions/github@6.0.0: + resolution: {integrity: sha512-alScpSVnYmjNEXboZjarjukQEzgCRmjMv6Xj47fsdnqGS73bjJNDpiiXmp8jr0UZLdUB6d9jW63IcmddUP+l0g==} + dependencies: + '@actions/http-client': 2.2.0 + '@octokit/core': 5.0.2 + '@octokit/plugin-paginate-rest': 9.1.5(@octokit/core@5.0.2) + '@octokit/plugin-rest-endpoint-methods': 10.2.0(@octokit/core@5.0.2) + dev: false + + /@actions/http-client@2.2.0: + resolution: {integrity: sha512-q+epW0trjVUUHboliPb4UF9g2msf+w61b32tAkFEwL/IwP0DQWgbCMM0Hbe3e3WXSKz5VcUXbzJQgy8Hkra/Lg==} + dependencies: + tunnel: 0.0.6 + undici: 5.28.2 + dev: false + /@adobe/css-tools@4.2.0: resolution: {integrity: sha512-E09FiIft46CmH5Qnjb0wsW54/YQd69LsxeKUOWawmws1XWvyFGURnAChH0mlr7YPFR1ofwvUQfcL0J3lMxXqPA==} dev: true @@ -2138,6 +2182,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm64@0.18.20: + resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} + engines: {node: '>=12'} + cpu: [arm64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm64@0.19.8: resolution: {integrity: sha512-B8JbS61bEunhfx8kasogFENgQfr/dIp+ggYXwTqdbMAgGDhRa3AaPpQMuQU0rNxDLECj6FhDzk1cF9WHMVwrtA==} engines: {node: '>=12'} @@ -2155,6 +2207,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-arm@0.18.20: + resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} + engines: {node: '>=12'} + cpu: [arm] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-arm@0.19.8: resolution: {integrity: sha512-31E2lxlGM1KEfivQl8Yf5aYU/mflz9g06H6S15ITUFQueMFtFjESRMoDSkvMo8thYvLBax+VKTPlpnx+sPicOA==} engines: {node: '>=12'} @@ -2172,6 +2232,14 @@ packages: requiresBuild: true optional: true + /@esbuild/android-x64@0.18.20: + resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} + engines: {node: '>=12'} + cpu: [x64] + os: [android] + requiresBuild: true + optional: true + /@esbuild/android-x64@0.19.8: resolution: {integrity: sha512-rdqqYfRIn4jWOp+lzQttYMa2Xar3OK9Yt2fhOhzFXqg0rVWEfSclJvZq5fZslnz6ypHvVf3CT7qyf0A5pM682A==} engines: {node: '>=12'} @@ -2189,6 +2257,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-arm64@0.18.20: + resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-arm64@0.19.8: resolution: {integrity: sha512-RQw9DemMbIq35Bprbboyf8SmOr4UXsRVxJ97LgB55VKKeJOOdvsIPy0nFyF2l8U+h4PtBx/1kRf0BelOYCiQcw==} engines: {node: '>=12'} @@ -2206,6 +2282,14 @@ packages: requiresBuild: true optional: true + /@esbuild/darwin-x64@0.18.20: + resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [darwin] + requiresBuild: true + optional: true + /@esbuild/darwin-x64@0.19.8: resolution: {integrity: sha512-3sur80OT9YdeZwIVgERAysAbwncom7b4bCI2XKLjMfPymTud7e/oY4y+ci1XVp5TfQp/bppn7xLw1n/oSQY3/Q==} engines: {node: '>=12'} @@ -2223,6 +2307,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-arm64@0.18.20: + resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} + engines: {node: '>=12'} + cpu: [arm64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-arm64@0.19.8: resolution: {integrity: sha512-WAnPJSDattvS/XtPCTj1tPoTxERjcTpH6HsMr6ujTT+X6rylVe8ggxk8pVxzf5U1wh5sPODpawNicF5ta/9Tmw==} engines: {node: '>=12'} @@ -2240,6 +2332,14 @@ packages: requiresBuild: true optional: true + /@esbuild/freebsd-x64@0.18.20: + resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [freebsd] + requiresBuild: true + optional: true + /@esbuild/freebsd-x64@0.19.8: resolution: {integrity: sha512-ICvZyOplIjmmhjd6mxi+zxSdpPTKFfyPPQMQTK/w+8eNK6WV01AjIztJALDtwNNfFhfZLux0tZLC+U9nSyA5Zg==} engines: {node: '>=12'} @@ -2257,6 +2357,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm64@0.18.20: + resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} + engines: {node: '>=12'} + cpu: [arm64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm64@0.19.8: resolution: {integrity: sha512-z1zMZivxDLHWnyGOctT9JP70h0beY54xDDDJt4VpTX+iwA77IFsE1vCXWmprajJGa+ZYSqkSbRQ4eyLCpCmiCQ==} engines: {node: '>=12'} @@ -2274,6 +2382,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-arm@0.18.20: + resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} + engines: {node: '>=12'} + cpu: [arm] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-arm@0.19.8: resolution: {integrity: sha512-H4vmI5PYqSvosPaTJuEppU9oz1dq2A7Mr2vyg5TF9Ga+3+MGgBdGzcyBP7qK9MrwFQZlvNyJrvz6GuCaj3OukQ==} engines: {node: '>=12'} @@ -2291,6 +2407,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ia32@0.18.20: + resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} + engines: {node: '>=12'} + cpu: [ia32] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ia32@0.19.8: resolution: {integrity: sha512-1a8suQiFJmZz1khm/rDglOc8lavtzEMRo0v6WhPgxkrjcU0LkHj+TwBrALwoz/OtMExvsqbbMI0ChyelKabSvQ==} engines: {node: '>=12'} @@ -2308,6 +2432,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-loong64@0.18.20: + resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} + engines: {node: '>=12'} + cpu: [loong64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-loong64@0.19.8: resolution: {integrity: sha512-fHZWS2JJxnXt1uYJsDv9+b60WCc2RlvVAy1F76qOLtXRO+H4mjt3Tr6MJ5l7Q78X8KgCFudnTuiQRBhULUyBKQ==} engines: {node: '>=12'} @@ -2325,6 +2457,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-mips64el@0.18.20: + resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} + engines: {node: '>=12'} + cpu: [mips64el] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-mips64el@0.19.8: resolution: {integrity: sha512-Wy/z0EL5qZYLX66dVnEg9riiwls5IYnziwuju2oUiuxVc+/edvqXa04qNtbrs0Ukatg5HEzqT94Zs7J207dN5Q==} engines: {node: '>=12'} @@ -2342,6 +2482,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-ppc64@0.18.20: + resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} + engines: {node: '>=12'} + cpu: [ppc64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-ppc64@0.19.8: resolution: {integrity: sha512-ETaW6245wK23YIEufhMQ3HSeHO7NgsLx8gygBVldRHKhOlD1oNeNy/P67mIh1zPn2Hr2HLieQrt6tWrVwuqrxg==} engines: {node: '>=12'} @@ -2359,6 +2507,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-riscv64@0.18.20: + resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} + engines: {node: '>=12'} + cpu: [riscv64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-riscv64@0.19.8: resolution: {integrity: sha512-T2DRQk55SgoleTP+DtPlMrxi/5r9AeFgkhkZ/B0ap99zmxtxdOixOMI570VjdRCs9pE4Wdkz7JYrsPvsl7eESg==} engines: {node: '>=12'} @@ -2376,6 +2532,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-s390x@0.18.20: + resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} + engines: {node: '>=12'} + cpu: [s390x] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-s390x@0.19.8: resolution: {integrity: sha512-NPxbdmmo3Bk7mbNeHmcCd7R7fptJaczPYBaELk6NcXxy7HLNyWwCyDJ/Xx+/YcNH7Im5dHdx9gZ5xIwyliQCbg==} engines: {node: '>=12'} @@ -2393,6 +2557,14 @@ packages: requiresBuild: true optional: true + /@esbuild/linux-x64@0.18.20: + resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} + engines: {node: '>=12'} + cpu: [x64] + os: [linux] + requiresBuild: true + optional: true + /@esbuild/linux-x64@0.19.8: resolution: {integrity: sha512-lytMAVOM3b1gPypL2TRmZ5rnXl7+6IIk8uB3eLsV1JwcizuolblXRrc5ShPrO9ls/b+RTp+E6gbsuLWHWi2zGg==} engines: {node: '>=12'} @@ -2410,6 +2582,14 @@ packages: requiresBuild: true optional: true + /@esbuild/netbsd-x64@0.18.20: + resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} + engines: {node: '>=12'} + cpu: [x64] + os: [netbsd] + requiresBuild: true + optional: true + /@esbuild/netbsd-x64@0.19.8: resolution: {integrity: sha512-hvWVo2VsXz/8NVt1UhLzxwAfo5sioj92uo0bCfLibB0xlOmimU/DeAEsQILlBQvkhrGjamP0/el5HU76HAitGw==} engines: {node: '>=12'} @@ -2427,6 +2607,14 @@ packages: requiresBuild: true optional: true + /@esbuild/openbsd-x64@0.18.20: + resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} + engines: {node: '>=12'} + cpu: [x64] + os: [openbsd] + requiresBuild: true + optional: true + /@esbuild/openbsd-x64@0.19.8: resolution: {integrity: sha512-/7Y7u77rdvmGTxR83PgaSvSBJCC2L3Kb1M/+dmSIvRvQPXXCuC97QAwMugBNG0yGcbEGfFBH7ojPzAOxfGNkwQ==} engines: {node: '>=12'} @@ -2444,6 +2632,14 @@ packages: requiresBuild: true optional: true + /@esbuild/sunos-x64@0.18.20: + resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [sunos] + requiresBuild: true + optional: true + /@esbuild/sunos-x64@0.19.8: resolution: {integrity: sha512-9Lc4s7Oi98GqFA4HzA/W2JHIYfnXbUYgekUP/Sm4BG9sfLjyv6GKKHKKVs83SMicBF2JwAX6A1PuOLMqpD001w==} engines: {node: '>=12'} @@ -2461,6 +2657,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-arm64@0.18.20: + resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} + engines: {node: '>=12'} + cpu: [arm64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-arm64@0.19.8: resolution: {integrity: sha512-rq6WzBGjSzihI9deW3fC2Gqiak68+b7qo5/3kmB6Gvbh/NYPA0sJhrnp7wgV4bNwjqM+R2AApXGxMO7ZoGhIJg==} engines: {node: '>=12'} @@ -2478,6 +2682,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-ia32@0.18.20: + resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} + engines: {node: '>=12'} + cpu: [ia32] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-ia32@0.19.8: resolution: {integrity: sha512-AIAbverbg5jMvJznYiGhrd3sumfwWs8572mIJL5NQjJa06P8KfCPWZQ0NwZbPQnbQi9OWSZhFVSUWjjIrn4hSw==} engines: {node: '>=12'} @@ -2495,6 +2707,14 @@ packages: requiresBuild: true optional: true + /@esbuild/win32-x64@0.18.20: + resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} + engines: {node: '>=12'} + cpu: [x64] + os: [win32] + requiresBuild: true + optional: true + /@esbuild/win32-x64@0.19.8: resolution: {integrity: sha512-bfZ0cQ1uZs2PqpulNL5j/3w+GDhP36k1K5c38QdQg+Swy51jFZWWeIkteNsufkQxp986wnqRRsb/bHbY1WQ7TA==} engines: {node: '>=12'} @@ -2541,6 +2761,11 @@ packages: engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} dev: true + /@fastify/busboy@2.1.0: + resolution: {integrity: sha512-+KpH+QxZU7O4675t3mnkQKcZZg56u+K/Ct2K+N2AZYNVK8kyeo/bI18tI8aPm3tvNNRyTWfj6s5tnGNlcbQRsA==} + engines: {node: '>=14'} + dev: false + /@floating-ui/core@1.2.0: resolution: {integrity: sha512-GHUXPEhMEmTpnpIfesFA2KAoMJPb1SPQw964tToQwt+BbGXdhqTCWT1rOb0VURGylsxsYxiGMnseJ3IlclVpVA==} dev: false @@ -2893,6 +3118,90 @@ packages: '@nodelib/fs.scandir': 2.1.5 fastq: 1.13.0 + /@octokit/auth-token@4.0.0: + resolution: {integrity: sha512-tY/msAuJo6ARbK6SPIxZrPBms3xPbfwBrulZe0Wtr/DIY9lje2HeV1uoebShn6mx7SjCHif6EjMvoREj+gZ+SA==} + engines: {node: '>= 18'} + dev: false + + /@octokit/core@5.0.2: + resolution: {integrity: sha512-cZUy1gUvd4vttMic7C0lwPed8IYXWYp8kHIMatyhY8t8n3Cpw2ILczkV5pGMPqef7v0bLo0pOHrEHarsau2Ydg==} + engines: {node: '>= 18'} + dependencies: + '@octokit/auth-token': 4.0.0 + '@octokit/graphql': 7.0.2 + '@octokit/request': 8.1.6 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + before-after-hook: 2.2.3 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/endpoint@9.0.4: + resolution: {integrity: sha512-DWPLtr1Kz3tv8L0UvXTDP1fNwM0S+z6EJpRcvH66orY6Eld4XBMCSYsaWp4xIm61jTWxK68BrR7ibO+vSDnZqw==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/graphql@7.0.2: + resolution: {integrity: sha512-OJ2iGMtj5Tg3s6RaXH22cJcxXRi7Y3EBqbHTBRq+PQAqfaS8f/236fUrWhfSn8P4jovyzqucxme7/vWSSZBX2Q==} + engines: {node: '>= 18'} + dependencies: + '@octokit/request': 8.1.6 + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/openapi-types@19.1.0: + resolution: {integrity: sha512-6G+ywGClliGQwRsjvqVYpklIfa7oRPA0vyhPQG/1Feh+B+wU0vGH1JiJ5T25d3g1JZYBHzR2qefLi9x8Gt+cpw==} + dev: false + + /@octokit/plugin-paginate-rest@9.1.5(@octokit/core@5.0.2): + resolution: {integrity: sha512-WKTQXxK+bu49qzwv4qKbMMRXej1DU2gq017euWyKVudA6MldaSSQuxtz+vGbhxV4CjxpUxjZu6rM2wfc1FiWVg==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.0.2 + '@octokit/types': 12.4.0 + dev: false + + /@octokit/plugin-rest-endpoint-methods@10.2.0(@octokit/core@5.0.2): + resolution: {integrity: sha512-ePbgBMYtGoRNXDyKGvr9cyHjQ163PbwD0y1MkDJCpkO2YH4OeXX40c4wYHKikHGZcpGPbcRLuy0unPUuafco8Q==} + engines: {node: '>= 18'} + peerDependencies: + '@octokit/core': '>=5' + dependencies: + '@octokit/core': 5.0.2 + '@octokit/types': 12.4.0 + dev: false + + /@octokit/request-error@5.0.1: + resolution: {integrity: sha512-X7pnyTMV7MgtGmiXBwmO6M5kIPrntOXdyKZLigNfQWSEQzVxR4a4vo49vJjTWX70mPndj8KhfT4Dx+2Ng3vnBQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/types': 12.4.0 + deprecation: 2.3.1 + once: 1.4.0 + dev: false + + /@octokit/request@8.1.6: + resolution: {integrity: sha512-YhPaGml3ncZC1NfXpP3WZ7iliL1ap6tLkAp6MvbK2fTTPytzVUyUesBBogcdMm86uRYO5rHaM1xIWxigWZ17MQ==} + engines: {node: '>= 18'} + dependencies: + '@octokit/endpoint': 9.0.4 + '@octokit/request-error': 5.0.1 + '@octokit/types': 12.4.0 + universal-user-agent: 6.0.1 + dev: false + + /@octokit/types@12.4.0: + resolution: {integrity: sha512-FLWs/AvZllw/AGVs+nJ+ELCDZZJk+kY0zMen118xhL2zD0s1etIUHm1odgjP7epxYU1ln7SZxEUWYop5bhsdgQ==} + dependencies: + '@octokit/openapi-types': 19.1.0 + dev: false + /@pkgr/utils@2.3.1: resolution: {integrity: sha512-wfzX8kc1PMyUILA+1Z/EqoE4UCXGy0iRGMhPwdfae1+f0OXlLqCk+By+aMzgJBzR9AzS4CDizioG6Ss1gvAFJw==} engines: {node: ^12.20.0 || ^14.18.0 || >=16.0.0} @@ -4108,6 +4417,10 @@ packages: resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==} dev: false + /before-after-hook@2.2.3: + resolution: {integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==} + dev: false + /better-path-resolve@1.0.0: resolution: {integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==} engines: {node: '>=4'} @@ -4332,7 +4645,7 @@ packages: normalize-path: 3.0.0 readdirp: 3.6.0 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /ci-info@3.5.0: @@ -4413,6 +4726,11 @@ packages: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} dev: false + /commander@11.1.0: + resolution: {integrity: sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==} + engines: {node: '>=16'} + dev: false + /commander@4.1.1: resolution: {integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==} engines: {node: '>= 6'} @@ -4923,6 +5241,10 @@ packages: engines: {node: '>=0.4.0'} dev: true + /deprecation@2.3.1: + resolution: {integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==} + dev: false + /dequal@2.0.3: resolution: {integrity: sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==} engines: {node: '>=6'} @@ -5154,6 +5476,35 @@ packages: '@esbuild/win32-ia32': 0.17.12 '@esbuild/win32-x64': 0.17.12 + /esbuild@0.18.20: + resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==} + engines: {node: '>=12'} + hasBin: true + requiresBuild: true + optionalDependencies: + '@esbuild/android-arm': 0.18.20 + '@esbuild/android-arm64': 0.18.20 + '@esbuild/android-x64': 0.18.20 + '@esbuild/darwin-arm64': 0.18.20 + '@esbuild/darwin-x64': 0.18.20 + '@esbuild/freebsd-arm64': 0.18.20 + '@esbuild/freebsd-x64': 0.18.20 + '@esbuild/linux-arm': 0.18.20 + '@esbuild/linux-arm64': 0.18.20 + '@esbuild/linux-ia32': 0.18.20 + '@esbuild/linux-loong64': 0.18.20 + '@esbuild/linux-mips64el': 0.18.20 + '@esbuild/linux-ppc64': 0.18.20 + '@esbuild/linux-riscv64': 0.18.20 + '@esbuild/linux-s390x': 0.18.20 + '@esbuild/linux-x64': 0.18.20 + '@esbuild/netbsd-x64': 0.18.20 + '@esbuild/openbsd-x64': 0.18.20 + '@esbuild/sunos-x64': 0.18.20 + '@esbuild/win32-arm64': 0.18.20 + '@esbuild/win32-ia32': 0.18.20 + '@esbuild/win32-x64': 0.18.20 + /esbuild@0.19.8: resolution: {integrity: sha512-l7iffQpT2OrZfH2rXIp7/FkmaeZM0vxbxN9KfiCwGYuZqzMg/JdvX26R31Zxn/Pxvsrg3Y9N6XTcnknqDyyv4w==} engines: {node: '>=12'} @@ -5586,8 +5937,8 @@ packages: /fs.realpath@1.0.0: resolution: {integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==} - /fsevents@2.3.2: - resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==} + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} os: [darwin] requiresBuild: true @@ -5653,6 +6004,11 @@ packages: get-intrinsic: 1.2.1 dev: true + /get-tsconfig@4.7.2: + resolution: {integrity: sha512-wuMsz4leaj5hbGgg4IvDU0bqJagpftG5l5cXIAvo8uZrqn0NJqwtfupTN00VnkQJPcIRrxYrm1Ue24btpCha2A==} + dependencies: + resolve-pkg-maps: 1.0.0 + /github-slugger@1.5.0: resolution: {integrity: sha512-wIh+gKBI9Nshz2o46B0B3f5k/W+WI9ZAv6y5Dn5WJ5SK1t0TnDimB4WE5rmTD05ZAIn8HALCZVmCsvj0w0v0lw==} dev: false @@ -6392,7 +6748,7 @@ packages: micromatch: 4.0.5 walker: 1.0.8 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: false /jest-matcher-utils@27.5.1: @@ -8313,6 +8669,9 @@ packages: resolution: {integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==} engines: {node: '>=8'} + /resolve-pkg-maps@1.0.0: + resolution: {integrity: sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==} + /resolve@1.22.1: resolution: {integrity: sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==} hasBin: true @@ -8402,7 +8761,7 @@ packages: engines: {node: '>=10.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 dev: true /rollup@3.25.1: @@ -8410,7 +8769,7 @@ packages: engines: {node: '>=14.18.0', npm: '>=8.0.0'} hasBin: true optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /rollup@4.6.1: resolution: {integrity: sha512-jZHaZotEHQaHLgKr8JnQiDT1rmatjgKlMekyksz+yk9jt/8z9quNjnKNRoaM0wd9DC2QKXjmWWuDYtM3jfF8pQ==} @@ -8429,7 +8788,7 @@ packages: '@rollup/rollup-win32-arm64-msvc': 4.6.1 '@rollup/rollup-win32-ia32-msvc': 4.6.1 '@rollup/rollup-win32-x64-msvc': 4.6.1 - fsevents: 2.3.2 + fsevents: 2.3.3 /route-recognizer@0.1.11: resolution: {integrity: sha512-7JNu5mXQVa39zxmUKyk/bfpeF2WyEC5JKVTJO5HATcoUQpcQsI3eLzhwGU69xeOagQxfOQ+yr2sSv0G8xy+vQA==} @@ -9110,6 +9469,16 @@ packages: typescript: 5.0.2 dev: true + /tsx@4.6.2: + resolution: {integrity: sha512-QPpBdJo+ZDtqZgAnq86iY/PD2KYCUPSUGIunHdGwyII99GKH+f3z3FZ8XNFLSGQIA4I365ui8wnQpl8OKLqcsg==} + engines: {node: '>=18.0.0'} + hasBin: true + dependencies: + esbuild: 0.18.20 + get-tsconfig: 4.7.2 + optionalDependencies: + fsevents: 2.3.3 + /tty-table@4.2.1: resolution: {integrity: sha512-xz0uKo+KakCQ+Dxj1D/tKn2FSyreSYWzdkL/BYhgN6oMW808g8QRMuh1atAV9fjTPbWBjfbkKQpI/5rEcnAc7g==} engines: {node: '>=8.0.0'} @@ -9124,6 +9493,11 @@ packages: yargs: 17.7.1 dev: true + /tunnel@0.0.6: + resolution: {integrity: sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==} + engines: {node: '>=0.6.11 <=0.7.0 || >=0.7.3'} + dev: false + /turbo-darwin-64@1.9.3: resolution: {integrity: sha512-0dFc2cWXl82kRE4Z+QqPHhbEFEpUZho1msHXHWbz5+PqLxn8FY0lEVOHkq5tgKNNEd5KnGyj33gC/bHhpZOk5g==} cpu: [x64] @@ -9254,6 +9628,13 @@ packages: busboy: 1.6.0 dev: false + /undici@5.28.2: + resolution: {integrity: sha512-wh1pHJHnUeQV5Xa8/kyQhO7WFa8M34l026L5P/+2TYiakvGy5Rdc8jWZVyG7ieht/0WgJLEd3kcU5gKx+6GC8w==} + engines: {node: '>=14.0'} + dependencies: + '@fastify/busboy': 2.1.0 + dev: false + /unherit@3.0.1: resolution: {integrity: sha512-akOOQ/Yln8a2sgcLj4U0Jmx0R5jpIg2IUyRrWOzmEbjBtGzBdHtSeFKgoEcoH4KYIG/Pb8GQ/BwtYm0GCq1Sqg==} dev: false @@ -9331,6 +9712,10 @@ packages: unist-util-visit-parents: 5.1.3 dev: false + /universal-user-agent@6.0.1: + resolution: {integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==} + dev: false + /universalify@0.1.2: resolution: {integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==} engines: {node: '>= 4.0.0'} @@ -9376,6 +9761,11 @@ packages: resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==} dev: false + /uuid@8.3.2: + resolution: {integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==} + hasBin: true + dev: false + /uuid@9.0.0: resolution: {integrity: sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==} hasBin: true @@ -9489,7 +9879,7 @@ packages: postcss: 8.4.24 rollup: 3.25.1 optionalDependencies: - fsevents: 2.3.2 + fsevents: 2.3.3 /vitefu@0.2.4(vite@4.3.9): resolution: {integrity: sha512-fanAXjSaf9xXtOOeno8wZXIhgia+CZury481LsDaV++lSvcU2R9Ch2bPh3PYFyoHW+w9LqAeYRISVQjUIew14g==} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 954b77df3..e79693da0 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -2,3 +2,4 @@ packages: - 'packages/*' - 'documentation' - 'apps/*' + - '.github/helpers' From 69c1ac741261dac9f926ce381d4bbe37f61be18c Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Tue, 19 Dec 2023 09:56:03 +0100 Subject: [PATCH 03/10] =?UTF-8?q?ci=F0=9F=91=AE=E2=80=8D=E2=99=80=EF=B8=8F?= =?UTF-8?q?=F0=9F=9A=A8=20issue=20checker=20(#565)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * ci * ci: * ci: * ci: * ci: * ci: * ci: * ci: add warning if no linked issues * ci: * ci: * chore: remove console log --- .github/helpers/src/issue-checker.ts | 71 ++++++++++++++++++++++++++++ .github/workflows/pr-issue-check.yml | 20 ++++++++ pnpm-lock.yaml | 7 +++ 3 files changed, 98 insertions(+) create mode 100644 .github/helpers/src/issue-checker.ts create mode 100644 .github/workflows/pr-issue-check.yml diff --git a/.github/helpers/src/issue-checker.ts b/.github/helpers/src/issue-checker.ts new file mode 100644 index 000000000..8b96e5cb3 --- /dev/null +++ b/.github/helpers/src/issue-checker.ts @@ -0,0 +1,71 @@ +#!/usr/bin/env node + +import { Command } from 'commander'; +import { getOctokit, context } from '@actions/github'; + +const program = new Command(); +type Octo = ReturnType; + +program.name('PR'); + +const noLinkedIssueMessage = ` +Howdy, wanderer🌵🤠🐴, + +Seems you've sauntered into our GitHub saloon with a pull request, but it appears you've forgotten to tie your horse to the hitching post. Now, in this town, we don't take kindly to stray requests, and the GitHub corral is no place for them. + +I reckon you best mosey on over and link that pull request to an issue, lest you want the winds of open source trouble blowin' your way. I've got my eye on you, stranger, and a stern warning echoes through these digital canyons. + +Now, for those who might be new to these parts or sufferin' from a bout of forgetfulness, fear not. I've rustled up a guide that's as handy as a snake in a boot🐍🥾. Take a peek at [this guide](https://docs.github.com/en/issues/tracking-your-work-with-issues/linking-a-pull-request-to-an-issue), and it'll show you the way to tether that pull request like a seasoned rancher🤠. + +Don't let the sun set on your unlinked pull request, and remember, in these GitHub lands, the code speaks louder than six-shooters. + +Sincerely, +The code patrol👮 +`; + +program + .command('issue') + .option('-T, --token ', 'github token') + .option('-P, --pr ', 'Pull request number') + .action(async (args) => { + if (!args.token) { + throw new Error('Missing github token'); + } + + if (!args.pr) { + throw new Error('Missing pr number'); + } + + const client = getOctokit(args.token); + checkIssues(client, args.pr); + }); + +await program.parseAsync(); + +async function checkIssues(client: Octo, pr: number) { + const pullRequests = await client.graphql( + `query { + repository (owner: "${context.repo.owner}", name: "${context.repo.repo}"){ + pullRequest (number: ${pr}) { + closingIssuesReferences (first: 1){ + totalCount + } + } + } +} +` + .replaceAll('\n', '') + .trim() + ); + + const linkedIssues: number = (pullRequests as any).repository.pullRequest.closingIssuesReferences.totalCount; + + if (linkedIssues === 0) { + const comment = await client.rest.issues.createComment({ + issue_number: pr, + body: noLinkedIssueMessage, + owner: context.issue.owner, + repo: context.issue.repo, + }); + } +} diff --git a/.github/workflows/pr-issue-check.yml b/.github/workflows/pr-issue-check.yml new file mode 100644 index 000000000..be77e0468 --- /dev/null +++ b/.github/workflows/pr-issue-check.yml @@ -0,0 +1,20 @@ +name: Verify linked issue + +# This action works with pull requests and pushes +on: + pull_request: + +jobs: + issue-check: + runs-on: ubuntu-latest + + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # Make sure the actual branch is checked out when running on pull requests + ref: ${{ github.head_ref }} + + - run: npm run first-time-setup + + - run: pnpm tsx ./.github/helpers/src/issue-checker.ts issue -T ${{ github.token }} -P ${{github.event.number}} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 8634c34ae..cfbce761c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5944,6 +5944,13 @@ packages: requiresBuild: true optional: true + /fsevents@2.3.3: + resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} + engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} + os: [darwin] + requiresBuild: true + optional: true + /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} From fa4fd38582d108cdcd466be359cbfbfa38c9d3d3 Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Tue, 19 Dec 2023 10:15:49 +0100 Subject: [PATCH 04/10] Update publish-comment.ts --- .github/helpers/src/publish-comment.ts | 2 ++ 1 file changed, 2 insertions(+) diff --git a/.github/helpers/src/publish-comment.ts b/.github/helpers/src/publish-comment.ts index 7e241c497..a6415a06e 100644 --- a/.github/helpers/src/publish-comment.ts +++ b/.github/helpers/src/publish-comment.ts @@ -2,6 +2,7 @@ import { Command } from 'commander'; import { getOctokit, context } from '@actions/github'; +import { setSecret } from "@actions/core"; import { logInfo } from './utils/logInfo.js'; import { readFileSync } from 'fs'; import { RELEASE_FILE_NAME } from './constants.js'; @@ -48,6 +49,7 @@ program throw new Error('Missing github token'); } + setSecret(args.token); const client = getOctokit(args.token); const pr = await getPullRequestFromBranch(client); commentPullRequest(client, pr.number); From 4c46b8667ad52f5a8ec23bc447b96d1ef5ff730d Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Wed, 20 Dec 2023 13:04:06 +0100 Subject: [PATCH 05/10] disable issue checker (#566) * disable issue checker * Prettified Code! --------- Co-authored-by: Gustav-Eikaas --- .github/helpers/src/publish-comment.ts | 2 +- .github/workflows/pr-issue-check.yml | 5 +++-- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/.github/helpers/src/publish-comment.ts b/.github/helpers/src/publish-comment.ts index a6415a06e..dbec0c161 100644 --- a/.github/helpers/src/publish-comment.ts +++ b/.github/helpers/src/publish-comment.ts @@ -2,7 +2,7 @@ import { Command } from 'commander'; import { getOctokit, context } from '@actions/github'; -import { setSecret } from "@actions/core"; +import { setSecret } from '@actions/core'; import { logInfo } from './utils/logInfo.js'; import { readFileSync } from 'fs'; import { RELEASE_FILE_NAME } from './constants.js'; diff --git a/.github/workflows/pr-issue-check.yml b/.github/workflows/pr-issue-check.yml index be77e0468..a8833fbfa 100644 --- a/.github/workflows/pr-issue-check.yml +++ b/.github/workflows/pr-issue-check.yml @@ -2,7 +2,7 @@ name: Verify linked issue # This action works with pull requests and pushes on: - pull_request: + workflow_dispatch: jobs: issue-check: @@ -17,4 +17,5 @@ jobs: - run: npm run first-time-setup - - run: pnpm tsx ./.github/helpers/src/issue-checker.ts issue -T ${{ github.token }} -P ${{github.event.number}} + - run: pnpm tsx ./.github/helpers/src/issue-checker.ts issue -T ${{ github.token }} -P 1 + # ${{github.event.number}} From bdeb70bc04417fc755543e7e274bebe2d2bea6e0 Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Thu, 21 Dec 2023 09:43:20 +0100 Subject: [PATCH 06/10] =?UTF-8?q?ci:=20re=20add=20issue=20checker=20with?= =?UTF-8?q?=20new=20query=20=F0=9F=A4=A0=F0=9F=9A=A8=20(#567)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * chore: test * ci: retry * ci: * ci: retry with PAT * ci: * ci: * ci: * chore: * ci: * ci: * ci: * ci: scope permissions --- .github/helpers/src/issue-checker.ts | 54 ++++++++++++++++++++-------- .github/workflows/pr-issue-check.yml | 24 ++++++++++--- 2 files changed, 60 insertions(+), 18 deletions(-) diff --git a/.github/helpers/src/issue-checker.ts b/.github/helpers/src/issue-checker.ts index 8b96e5cb3..070020eca 100644 --- a/.github/helpers/src/issue-checker.ts +++ b/.github/helpers/src/issue-checker.ts @@ -2,6 +2,7 @@ import { Command } from 'commander'; import { getOctokit, context } from '@actions/github'; +import { info } from '@actions/core'; const program = new Command(); type Octo = ReturnType; @@ -37,35 +38,60 @@ program } const client = getOctokit(args.token); - checkIssues(client, args.pr); + checkIssues(client, parseInt(args.pr)); }); await program.parseAsync(); async function checkIssues(client: Octo, pr: number) { const pullRequests = await client.graphql( - `query { - repository (owner: "${context.repo.owner}", name: "${context.repo.repo}"){ - pullRequest (number: ${pr}) { - closingIssuesReferences (first: 1){ - totalCount - } - } - } -} -` - .replaceAll('\n', '') - .trim() + ` + query($owner: String!, $name: String!, $pr: Int!) { + repository(owner: $owner, name: $name) { + pullRequest(number: $pr) { + id + number + title + timelineItems(first: 100, itemTypes: [CONNECTED_EVENT]) { + __typename + ... on PullRequestTimelineItemsConnection{ + totalCount + nodes { + __typename + ... on ConnectedEvent { + source { + __typename + ... on PullRequest { + number + } + } + subject { + __typename + ... on PullRequest { + number + } + } + } + } + } + } + } + } + }`, + { owner: context.repo.owner, name: context.repo.repo, pr: pr } ); - const linkedIssues: number = (pullRequests as any).repository.pullRequest.closingIssuesReferences.totalCount; + const linkedIssues: number = (pullRequests as any).repository.pullRequest.timelineItems.totalCount; if (linkedIssues === 0) { + info(`No linked issues adding comment to pr ${pr}`); const comment = await client.rest.issues.createComment({ issue_number: pr, body: noLinkedIssueMessage, owner: context.issue.owner, repo: context.issue.repo, }); + return; } + info(`Linked issues: ${linkedIssues}`); } diff --git a/.github/workflows/pr-issue-check.yml b/.github/workflows/pr-issue-check.yml index a8833fbfa..92adea3f2 100644 --- a/.github/workflows/pr-issue-check.yml +++ b/.github/workflows/pr-issue-check.yml @@ -1,8 +1,24 @@ name: Verify linked issue # This action works with pull requests and pushes +permissions: + { + contents: read, + actions: read, + checks: read, + deployments: read, + discussions: read, + id-token: write, + issues: write, + packages: read, + pages: read, + pull-requests: write, + repository-projects: read, + security-events: read, + statuses: read, + } on: - workflow_dispatch: + pull_request: jobs: issue-check: @@ -15,7 +31,7 @@ jobs: # Make sure the actual branch is checked out when running on pull requests ref: ${{ github.head_ref }} - - run: npm run first-time-setup + - name: pnpm setup + run: npm run first-time-setup - - run: pnpm tsx ./.github/helpers/src/issue-checker.ts issue -T ${{ github.token }} -P 1 - # ${{github.event.number}} + - run: pnpm tsx ./.github/helpers/src/issue-checker.ts issue -T ${{ github.token }} -P ${{github.event.number}} From eab49704a8292c8f9929a917cf0a96ec5aade801 Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Thu, 21 Dec 2023 09:55:38 +0100 Subject: [PATCH 07/10] remove quick filter limit (#568) * remove quick filter limit * Prettified Code! * chore: :bookmark: release * ci: * ci: * ci: disable issue checker --------- Co-authored-by: Gustav-Eikaas --- .github/workflows/pr-issue-check.yml | 2 +- packages/power-bi/package.json | 2 +- .../components/QuickFilter/QuickFilter.tsx | 22 +++++++++---------- packages/workspace-fusion/package.json | 2 +- 4 files changed, 13 insertions(+), 15 deletions(-) diff --git a/.github/workflows/pr-issue-check.yml b/.github/workflows/pr-issue-check.yml index 92adea3f2..6c94bded7 100644 --- a/.github/workflows/pr-issue-check.yml +++ b/.github/workflows/pr-issue-check.yml @@ -18,7 +18,7 @@ permissions: statuses: read, } on: - pull_request: + workflow_dispatch: jobs: issue-check: diff --git a/packages/power-bi/package.json b/packages/power-bi/package.json index 969eea915..9e71c5531 100644 --- a/packages/power-bi/package.json +++ b/packages/power-bi/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-powerbi", - "version": "1.0.12", + "version": "1.0.13", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/power-bi/src/lib/components/QuickFilter/QuickFilter.tsx b/packages/power-bi/src/lib/components/QuickFilter/QuickFilter.tsx index 42d048bd8..442013ddf 100644 --- a/packages/power-bi/src/lib/components/QuickFilter/QuickFilter.tsx +++ b/packages/power-bi/src/lib/components/QuickFilter/QuickFilter.tsx @@ -65,19 +65,17 @@ export const PowerBIQuickFilter = ({ controller }: PowerBIQuickFilterProps): JSX {slicerFilters.map((s, i) => { - i < 9 && shownFilters.push(s.type); + shownFilters.push(s.type); return ( - i < 9 && ( - - handleOnChange(s, filter, singleClick) - } - group={s} - key={s.type + i} - /> - ) + + handleOnChange(s, filter, singleClick) + } + group={s} + key={s.type + i} + /> ); })} diff --git a/packages/workspace-fusion/package.json b/packages/workspace-fusion/package.json index fd802dd55..547903bbb 100644 --- a/packages/workspace-fusion/package.json +++ b/packages/workspace-fusion/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-fusion", - "version": "6.1.1", + "version": "6.1.2", "type": "module", "sideEffects": false, "license": "MIT", From 5ab6f1a50f5de3171e67ae118eb32d43cfbbf038 Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Thu, 21 Dec 2023 10:42:37 +0100 Subject: [PATCH 08/10] feat: add display name to grouping keys (#559) * chore: wip * Prettified Code! * chore: * chore: * ci: * ci: * ci: * ci: * ci: * ci: * ci: * ci: * ci: * ci: * ci: * revert: :rewind: * chore: * ci: * ci: * ci: * style: :lipstick: --------- Co-authored-by: Gustav-Eikaas --- .github/helpers/src/issue-checker.ts | 2 +- .github/workflows/ci.yml | 2 +- .github/workflows/pr-issue-check.yml | 4 +- .github/workflows/prettier.yml | 36 ++++++++--------- packages/garden/package.json | 2 +- .../GroupingSelector/GroupingSelector.tsx | 15 ++++--- packages/garden/src/lib/types/index.ts | 3 +- packages/workspace-fusion/package.json | 39 +++++++++++++++++-- pnpm-lock.yaml | 7 ---- 9 files changed, 70 insertions(+), 40 deletions(-) diff --git a/.github/helpers/src/issue-checker.ts b/.github/helpers/src/issue-checker.ts index 070020eca..095b84225 100644 --- a/.github/helpers/src/issue-checker.ts +++ b/.github/helpers/src/issue-checker.ts @@ -52,7 +52,7 @@ async function checkIssues(client: Octo, pr: number) { id number title - timelineItems(first: 100, itemTypes: [CONNECTED_EVENT]) { + timelineItems(first: 100, itemTypes: [CONNECTED_EVENT, CROSS_REFERENCED_EVENT]) { __typename ... on PullRequestTimelineItemsConnection{ totalCount diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index b9102add5..ec90410fd 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,4 +1,4 @@ -name: CI +name: 🔨CI on: push: branches: diff --git a/.github/workflows/pr-issue-check.yml b/.github/workflows/pr-issue-check.yml index 6c94bded7..b5a4d33c3 100644 --- a/.github/workflows/pr-issue-check.yml +++ b/.github/workflows/pr-issue-check.yml @@ -1,4 +1,4 @@ -name: Verify linked issue +name: 👮Verify linked issue # This action works with pull requests and pushes permissions: @@ -18,7 +18,7 @@ permissions: statuses: read, } on: - workflow_dispatch: + pull_request: jobs: issue-check: diff --git a/.github/workflows/prettier.yml b/.github/workflows/prettier.yml index 8aab9dd19..2f8007b92 100644 --- a/.github/workflows/prettier.yml +++ b/.github/workflows/prettier.yml @@ -1,25 +1,25 @@ -name: Prettify +name: 💄Prettify # This action works with pull requests and pushes on: - pull_request: - push: - branches: - - main + pull_request: + push: + branches: + - main jobs: - prettier: - runs-on: ubuntu-latest + prettier: + runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - # Make sure the actual branch is checked out when running on pull requests - ref: ${{ github.head_ref }} + steps: + - name: Checkout + uses: actions/checkout@v4 + with: + # Make sure the actual branch is checked out when running on pull requests + ref: ${{ github.head_ref }} - - name: Prettify code - uses: creyD/prettier_action@v4.3 - with: - # This part is also where you can pass other options, for example: - prettier_options: --write **/*.{js,md,ts,tsx} + - name: Prettify code + uses: creyD/prettier_action@v4.3 + with: + # This part is also where you can pass other options, for example: + prettier_options: --write **/*.{js,md,ts,tsx} diff --git a/packages/garden/package.json b/packages/garden/package.json index 54cc7e526..4216893aa 100644 --- a/packages/garden/package.json +++ b/packages/garden/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-garden", - "version": "6.0.3", + "version": "7.0.0", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/garden/src/lib/components/GroupingSelector/GroupingSelector.tsx b/packages/garden/src/lib/components/GroupingSelector/GroupingSelector.tsx index b9c78a6e9..359d8a532 100644 --- a/packages/garden/src/lib/components/GroupingSelector/GroupingSelector.tsx +++ b/packages/garden/src/lib/components/GroupingSelector/GroupingSelector.tsx @@ -1,6 +1,5 @@ import { Autocomplete, CircularProgress, Divider, EdsProvider, Label, Radio } from '@equinor/eds-core-react'; import { Fragment, startTransition, useRef } from 'react'; -import { GroupingOption } from '../../types'; import { RadioButtonWrapper, RadioCategoryWrapper, @@ -83,18 +82,22 @@ export function GroupingSelector({ option.groupingKey)} + options={gardenMetaQuery.data.allGroupingOptions} label={'Group by'} + optionLabel={(s) => s?.displayName ?? s?.groupingKey ?? ''} hideClearButton multiple={false} - selectedOptions={[groupingKeys[0]]} - onOptionsChange={(changes) => handleGardenKeyChange(changes.selectedItems[0])} + selectedOptions={[gardenMetaQuery.data.allGroupingOptions.find((s) => s.groupingKey == groupingKeys[0])]} + onOptionsChange={(changes) => handleGardenKeyChange(changes.selectedItems[0]?.groupingKey)} /> handleExistingSelectionChange(changes.selectedItems[0])} + selectedOptions={[ + gardenMetaQuery.data.allGroupingOptions.find((s) => s.groupingKey === groupingKeys.at(1)), + ]} + optionLabel={(s) => s?.displayName ?? s?.groupingKey ?? ''} + onOptionsChange={(changes) => handleExistingSelectionChange(changes.selectedItems[0]?.groupingKey)} /> diff --git a/packages/garden/src/lib/types/index.ts b/packages/garden/src/lib/types/index.ts index 3126047d1..1dcea6fcc 100644 --- a/packages/garden/src/lib/types/index.ts +++ b/packages/garden/src/lib/types/index.ts @@ -14,7 +14,7 @@ export type GardenMeta = { columnCount: number; rowCount: number; allGroupingOptions: GroupingOption[]; - validGroupingOptions: string[]; + validGroupingOptions: GroupingOption[]; columnWidth?: number; }; @@ -55,6 +55,7 @@ export type GardenHeaderGroup = { export type GroupingOption = { groupingKey: string; + displayName: string; timeInterval: string[] | null; dateVariant: string[] | null; }; diff --git a/packages/workspace-fusion/package.json b/packages/workspace-fusion/package.json index 547903bbb..24fae85c9 100644 --- a/packages/workspace-fusion/package.json +++ b/packages/workspace-fusion/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-fusion", - "version": "6.1.2", + "version": "7.0.0", "type": "module", "sideEffects": false, "license": "MIT", @@ -18,6 +18,40 @@ "files": [ "dist" ], + "typesVersions": { + ">=4.2": { + ".": [ + "dist/types/index" + ], + "garden": [ + "dist/types/lib/integrations/garden/index" + ], + "grid": [ + "dist/types/lib/integrations/grid/index" + ], + "power-bi": [ + "dist/types/lib/integrations/power-bi/index" + ], + "filter": [ + "dist/types/lib/integrations/filter/index" + ], + "status-bar": [ + "dist/types/lib/integrations/status-bar/index" + ], + "sidesheet": [ + "dist/types/lib/integrations/sidesheet/index" + ], + "grid-module": [ + "dist/types/modules/grid/index" + ], + "power-bi-module": [ + "dist/types/modules/power-bi/index" + ], + "garden-module": [ + "dist/types/modules/garden/index" + ] + } + }, "exports": { ".": { "require": "./dist/index.cjs", @@ -106,6 +140,5 @@ "type": "git", "url": "git+https://github.com/equinor/fusion-workspace.git", "directory": "packages/workspace-fusion" - }, - "gitHead": "6407f12589214b96228ab87d32a211f7c1cd6ba4" + } } diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index cfbce761c..8634c34ae 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -5944,13 +5944,6 @@ packages: requiresBuild: true optional: true - /fsevents@2.3.3: - resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==} - engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0} - os: [darwin] - requiresBuild: true - optional: true - /function-bind@1.1.1: resolution: {integrity: sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==} From bc2992f9b0c2e9626ded51388ac5b0780cf849a0 Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Wed, 3 Jan 2024 15:11:13 +0100 Subject: [PATCH 09/10] fix: :bug: fix #562 (#574) --- packages/filter/package.json | 2 +- packages/filter/src/lib/components/quickFilter/QuickFilter.tsx | 2 +- .../src/lib/components/quickFilter/quickFilter.styles.ts | 3 ++- packages/workspace-fusion/package.json | 2 +- 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/packages/filter/package.json b/packages/filter/package.json index d5243e585..f9440e8e6 100644 --- a/packages/filter/package.json +++ b/packages/filter/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-filter", - "version": "3.0.8", + "version": "3.0.9", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/filter/src/lib/components/quickFilter/QuickFilter.tsx b/packages/filter/src/lib/components/quickFilter/QuickFilter.tsx index 8ac3cf225..3b565fc60 100644 --- a/packages/filter/src/lib/components/quickFilter/QuickFilter.tsx +++ b/packages/filter/src/lib/components/quickFilter/QuickFilter.tsx @@ -98,10 +98,10 @@ const QuickFilterReady = ({ groups }: QuickFilterReadyProps) => { /> ))} - )} + {isFilterExpanded && ( ` display: grid; - grid-template-columns: ${(e) => (e.isExpanded ? 'minmax(200px, 350px) 1fr' : 'minmax(200px, 350px) 1fr 100px')}; + grid-template-columns: ${(e) => (e.isExpanded ? 'minmax(200px, 350px) 1fr' : 'minmax(200px, 350px) 1fr min-content')}; grid-template-rows: 1fr; overflow: hidden; gap: 2em; @@ -33,6 +33,7 @@ export const StyledWrapper = styled.div` export const StyledButtonWrapper = styled.div` display: flex; width: 100%; + align-items: center; justify-content: flex-end; background-color: ${tokens.colors.ui.background__light.hex}; `; diff --git a/packages/workspace-fusion/package.json b/packages/workspace-fusion/package.json index 24fae85c9..64d7c747d 100644 --- a/packages/workspace-fusion/package.json +++ b/packages/workspace-fusion/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-fusion", - "version": "7.0.0", + "version": "7.0.1", "type": "module", "sideEffects": false, "license": "MIT", From 5b279933806f2ef8359607d99e804b8338b69ab1 Mon Sep 17 00:00:00 2001 From: Gustav-Eikaas <89254170+Gustav-Eikaas@users.noreply.github.com> Date: Wed, 31 Jan 2024 09:48:40 +0100 Subject: [PATCH 10/10] fix: disable retry for token fetching (#577) --- packages/power-bi/package.json | 2 +- packages/power-bi/src/lib/components/report/Report.tsx | 1 + packages/workspace-fusion/package.json | 2 +- 3 files changed, 3 insertions(+), 2 deletions(-) diff --git a/packages/power-bi/package.json b/packages/power-bi/package.json index 9e71c5531..fee7d3d85 100644 --- a/packages/power-bi/package.json +++ b/packages/power-bi/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-powerbi", - "version": "1.0.13", + "version": "1.0.14", "type": "module", "sideEffects": false, "license": "MIT", diff --git a/packages/power-bi/src/lib/components/report/Report.tsx b/packages/power-bi/src/lib/components/report/Report.tsx index dce658509..fed3f2453 100644 --- a/packages/power-bi/src/lib/components/report/Report.tsx +++ b/packages/power-bi/src/lib/components/report/Report.tsx @@ -12,6 +12,7 @@ export function Report({ getEmbedInfo, getToken, reportUri, controller, filters, queryFn: ({ signal }) => getToken(reportUri, signal), refetchInterval: generateRefetchInterval, suspense: true, + retry: false, useErrorBoundary: true, refetchOnWindowFocus: true, }); diff --git a/packages/workspace-fusion/package.json b/packages/workspace-fusion/package.json index 64d7c747d..978cf28c8 100644 --- a/packages/workspace-fusion/package.json +++ b/packages/workspace-fusion/package.json @@ -1,6 +1,6 @@ { "name": "@equinor/workspace-fusion", - "version": "7.0.1", + "version": "7.0.2", "type": "module", "sideEffects": false, "license": "MIT",