From 957f0bb313c5c5b8f4376fc9b09d4a71b65cbcc5 Mon Sep 17 00:00:00 2001 From: rndquu Date: Wed, 5 Jun 2024 12:49:51 +0300 Subject: [PATCH 01/19] feat: add hello-world plugin example --- README.md | 34 +++++++++++++++++ bun.lockb | Bin 292845 -> 311284 bytes package.json | 4 +- tests/__mocks__/hello-world-plugin.ts | 51 ++++++++++++++++++++++++++ 4 files changed, 88 insertions(+), 1 deletion(-) create mode 100644 tests/__mocks__/hello-world-plugin.ts diff --git a/README.md b/README.md index 25c7484..262c9b4 100644 --- a/README.md +++ b/README.md @@ -126,6 +126,40 @@ const output: PluginOutput = { }; ``` +## Plugin Quick Start + +The kernel supports 2 types of plugins: +1. Github actions ([wiki](https://github.com/ubiquity/ubiquibot-kernel/wiki/How-it-works)) +2. Cloudflare Workers (which are simple backend servers with a single API route) + +How to run a "hello-world" plugin the Cloudflare way: +1. Run `bun dev` to spin up the kernel +2. Run `bun plugin:hello-world` to spin up a local server for the "hello-world" plugin +3. Update the bot's config file in the repository where you use the bot (`OWNER/REPOSITORY/.github/.ubiquibot-config.yml`): +``` +plugins: + 'issue_comment.created': + - name: "hello-world-plugin name" + description: "hello-world-plugin description" + command: "/hello" + example: "/hello example" + skipBotEvents: true + uses: + # hello-world-plugin + - plugin: http://127.0.0.1:9090 + type: github + with: + response: world +``` +4. Post a `/hello` comment in any issue +5. The bot should respond with the `world` message ([example](https://github.com/rndquu-org/test-repo/issues/54#issuecomment-2149313139)) + +How it works: +1. When you post the `/hello` command the kernel receives the `issue_comment.created` event +2. The kernel matches the `/hello` command to the plugin that should be executed (i.e. the API method that should be called) +3. The kernel passes github event payload, bot's access token and plugin settings (from `.ubiquibot-config.yml`) to the plugin endpoint +4. The plugin performs all of the required actions and returns the result + ## Testing ### Jest diff --git a/bun.lockb b/bun.lockb index 650988c5dc726f7bba6ea306677c3766bfa03567..6b53b351b6c138886d702f0b0f2ec85d8219bd54 100755 GIT binary patch delta 55878 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 G&;I~CB+2Cf delta 45048 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 diff --git a/package.json b/package.json index 6ad905d..dc8d17c 100644 --- a/package.json +++ b/package.json @@ -23,7 +23,8 @@ "proxy": "tsx src/proxy.ts", "knip": "knip --config .github/knip.ts", "knip-ci": "knip --no-exit-code --reporter json --config .github/knip.ts", - "test": "bun test" + "test": "bun test", + "plugin:hello-world": "tsx tests/__mocks__/hello-world-plugin.ts" }, "keywords": [ "typescript", @@ -54,6 +55,7 @@ "@cspell/dict-software-terms": "^3.3.18", "@cspell/dict-typescript": "^3.1.2", "@mswjs/data": "0.16.1", + "@mswjs/http-middleware": "^0.10.1", "@types/node": "^20.11.19", "@typescript-eslint/eslint-plugin": "^7.0.1", "@typescript-eslint/parser": "^7.0.1", diff --git a/tests/__mocks__/hello-world-plugin.ts b/tests/__mocks__/hello-world-plugin.ts new file mode 100644 index 0000000..3d59e2b --- /dev/null +++ b/tests/__mocks__/hello-world-plugin.ts @@ -0,0 +1,51 @@ +import { createServer } from "@mswjs/http-middleware"; +import { Octokit } from "@octokit/core"; +import { http, HttpResponse } from "msw"; + +type KernelInput = { + authToken: string; + eventPayload: { + issue: { + number: number; + }; + organization: { + login: string; + }; + repository: { + name: string; + }; + }; + settings: { + response: string; + }; +}; + +const PORT = 9090; + +const handlers = [ + http.post("/", async (data) => { + const body: KernelInput = (await data.request.json()) as KernelInput; + + const octokit = new Octokit({ auth: body.authToken }); + + await octokit.request("POST /repos/{owner}/{repo}/issues/{issue_number}/comments", { + owner: body.eventPayload.organization.login, + repo: body.eventPayload.repository.name, + issue_number: body.eventPayload.issue.number, + body: body.settings.response, + headers: { + "X-GitHub-Api-Version": "2022-11-28", + }, + }); + + return HttpResponse.json({ + state_id: "state_id_uuid_1", + output: `{ "result": "success", "message": "${body.settings.response}" }`, + }); + }), +]; + +const httpServer = createServer(...handlers); + +httpServer.listen(PORT); +console.log(`hello-world-plugin is listening on http://127.0.0.1:${PORT}`); From e6fc6f4b0298a88e4346a6f1e96540e54611a7ff Mon Sep 17 00:00:00 2001 From: rndquu Date: Wed, 19 Jun 2024 17:02:28 +0300 Subject: [PATCH 02/19] ci: fix cspell --- .cspell.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.cspell.json b/.cspell.json index e2ac2df..4aa417b 100644 --- a/.cspell.json +++ b/.cspell.json @@ -4,7 +4,7 @@ "ignorePaths": ["**/*.json", "**/*.css", "node_modules", "**/*.log"], "useGitignore": true, "language": "en", - "words": ["dataurl", "devpool", "fkey", "outdir", "servedir", "supabase", "typebox", "ubiquibot", "smee", "tomlify"], + "words": ["dataurl", "devpool", "fkey", "mswjs", "outdir", "servedir", "supabase", "typebox", "ubiquibot", "smee", "tomlify"], "dictionaries": ["typescript", "node", "software-terms"], "import": ["@cspell/dict-typescript/cspell-ext.json", "@cspell/dict-node/cspell-ext.json", "@cspell/dict-software-terms"], "ignoreRegExpList": ["[0-9a-fA-F]{6}"] From 8ac7bbafd174a1c30a86059dc97900fe2d3ccf13 Mon Sep 17 00:00:00 2001 From: rndquu Date: Wed, 19 Jun 2024 17:14:10 +0300 Subject: [PATCH 03/19] ci: ignore msw in knip --- .github/knip.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/knip.ts b/.github/knip.ts index 6223f97..1c218b6 100644 --- a/.github/knip.ts +++ b/.github/knip.ts @@ -5,7 +5,7 @@ const config: KnipConfig = { project: ["src/**/*.ts"], ignoreBinaries: ["build", "i", "format:cspell", "awk", "lsof"], ignoreExportsUsedInFile: true, - ignoreDependencies: ["@mswjs/data", "esbuild", "eslint-config-prettier", "eslint-plugin-prettier"], + ignoreDependencies: ["@mswjs/data", "esbuild", "eslint-config-prettier", "eslint-plugin-prettier", "msw"], }; export default config; From 21d800a649d709477a8ef7b49477886bb431523c Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 14:25:13 +0200 Subject: [PATCH 04/19] feat!: bumped eslint to v9 --- .eslintrc | 53 ------------ .github/workflows/build.yml | 2 +- .github/workflows/bun-testing.yml | 4 +- .github/workflows/knip-reporter.yml | 40 +++++++++ .github/workflows/knip.yml | 28 ++++--- README.md | 28 +++++-- bun.lockb | Bin 306733 -> 0 bytes eslint.config.mjs | 126 ++++++++++++++++++++++++++++ package.json | 27 +++--- src/github/github-event-handler.ts | 6 +- src/github/utils/cloudflare-kv.ts | 2 +- src/github/utils/config.ts | 2 +- src/worker.ts | 14 ++-- tsconfig.json | 4 +- 14 files changed, 232 insertions(+), 104 deletions(-) delete mode 100644 .eslintrc create mode 100644 .github/workflows/knip-reporter.yml delete mode 100755 bun.lockb create mode 100644 eslint.config.mjs diff --git a/.eslintrc b/.eslintrc deleted file mode 100644 index 338c3bb..0000000 --- a/.eslintrc +++ /dev/null @@ -1,53 +0,0 @@ -{ - "root": true, - "parser": "@typescript-eslint/parser", - "parserOptions": { - "project": ["./tsconfig.json"] - }, - "plugins": ["@typescript-eslint", "sonarjs"], - "extends": ["eslint:recommended", "plugin:@typescript-eslint/recommended", "plugin:sonarjs/recommended"], - "ignorePatterns": ["**/*.js"], - "rules": { - "prefer-arrow-callback": ["warn", { "allowNamedFunctions": true }], - "func-style": ["warn", "declaration", { "allowArrowFunctions": false }], - "@typescript-eslint/no-floating-promises": "error", - "@typescript-eslint/no-non-null-assertion": "error", - "constructor-super": "error", - "no-invalid-this": "off", - "@typescript-eslint/no-invalid-this": ["error"], - "no-restricted-syntax": ["error"], - "use-isnan": "error", - "@typescript-eslint/no-unused-vars": [ - "error", - { - "args": "after-used", - "ignoreRestSiblings": true, - "vars": "all", - "varsIgnorePattern": "^_", - "argsIgnorePattern": "^_" - } - ], - "@typescript-eslint/await-thenable": "error", - "@typescript-eslint/no-misused-new": "error", - "@typescript-eslint/restrict-plus-operands": "error", - "sonarjs/no-all-duplicated-branches": "error", - "sonarjs/no-collection-size-mischeck": "error", - "sonarjs/no-duplicated-branches": "error", - "sonarjs/no-element-overwrite": "error", - "sonarjs/no-identical-conditions": "error", - "sonarjs/no-identical-expressions": "error", - "@typescript-eslint/naming-convention": [ - "error", - { "selector": "interface", "format": ["PascalCase"], "custom": { "regex": "^I[A-Z]", "match": false } }, - { "selector": "memberLike", "modifiers": ["private"], "format": ["camelCase"], "leadingUnderscore": "require" }, - { "selector": "typeLike", "format": ["PascalCase"] }, - { "selector": "typeParameter", "format": ["PascalCase"], "prefix": ["T"] }, - { "selector": "variable", "format": ["camelCase", "UPPER_CASE"], "leadingUnderscore": "allow", "trailingUnderscore": "allow" }, - { "selector": "variable", "format": ["camelCase"], "leadingUnderscore": "allow", "trailingUnderscore": "allow" }, - { "selector": "variable", "modifiers": ["destructured"], "format": null }, - { "selector": "variable", "types": ["boolean"], "format": ["PascalCase"], "prefix": ["is", "should", "has", "can", "did", "will", "does"] }, - { "selector": "variableLike", "format": ["camelCase"] }, - { "selector": ["function", "variable"], "format": ["camelCase"] } - ] - } -} diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b276b13..88f6cf1 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -33,7 +33,7 @@ jobs: - uses: cloudflare/wrangler-action@v3 with: - wranglerVersion: '3.57.0' + wranglerVersion: "3.57.0" apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} secrets: | WEBHOOK_PROXY_URL diff --git a/.github/workflows/bun-testing.yml b/.github/workflows/bun-testing.yml index 43c3e54..45a6e5a 100644 --- a/.github/workflows/bun-testing.yml +++ b/.github/workflows/bun-testing.yml @@ -2,7 +2,7 @@ name: Run Bun testing suite on: workflow_dispatch: pull_request: - types: [ opened, synchronize ] + types: [opened, synchronize] env: NODE_ENV: "test" @@ -18,7 +18,7 @@ jobs: - uses: oven-sh/setup-bun@v1 - uses: actions/setup-node@v4 with: - node-version: '20.10.0' + node-version: "20.10.0" - uses: actions/checkout@master with: fetch-depth: 0 diff --git a/.github/workflows/knip-reporter.yml b/.github/workflows/knip-reporter.yml new file mode 100644 index 0000000..f6e66ed --- /dev/null +++ b/.github/workflows/knip-reporter.yml @@ -0,0 +1,40 @@ +name: Knip-reporter + +on: + workflow_run: + workflows: ["Knip"] + types: + - completed + +permissions: write-all + +jobs: + knip-reporter: + runs-on: ubuntu-latest + steps: + - uses: actions/download-artifact@v4 + with: + name: knip-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Read pr number + id: pr-number + uses: juliangruber/read-file-action@v1 + with: + path: ./pr-number.txt + trim: true + + - name: Report knip results to pull request + if: ${{ github.event.workflow_run.conclusion != 'success' }} + uses: gitcoindev/knip-reporter@main + with: + verbose: true + comment_id: ${{ github.workflow }}-reporter + command_script_name: knip-ci + annotations: true + ignore_results: false + json_input: true + json_input_file_name: knip-results.json + pull_request_number: ${{ steps.pr-number.outputs.content }} + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/knip.yml b/.github/workflows/knip.yml index 8abcedf..d9237eb 100644 --- a/.github/workflows/knip.yml +++ b/.github/workflows/knip.yml @@ -1,11 +1,9 @@ name: Knip on: - pull_request_target: + pull_request: workflow_dispatch: -permissions: write-all - jobs: run-knip: runs-on: ubuntu-latest @@ -19,15 +17,19 @@ jobs: node-version: 20.10.0 - name: Install toolchain - run: | - npm i -g bun - bun install + run: yarn install + + - name: Store PR number + run: echo ${{ github.event.number }} > pr-number.txt + + - name: Run Knip + run: yarn knip || yarn knip --reporter json > knip-results.json - - name: Report knip results to pull request - uses: Codex-/knip-reporter@v2 + - name: Upload knip result + if: failure() + uses: actions/upload-artifact@v4 with: - verbose: true - comment_id: ${{ github.workflow }}-reporter - command_script_name: knip-ci - annotations: true - ignore_results: false + name: knip-results + path: | + knip-results.json + pr-number.txt diff --git a/README.md b/README.md index 262c9b4..ad390e2 100644 --- a/README.md +++ b/README.md @@ -1,4 +1,3 @@ - # @ubiquity/ubiquibot-kernel The kernel is designed to: @@ -11,11 +10,11 @@ The kernel is designed to: - **`PRIVATE_KEY`** Obtain a private key from your GitHub App settings and convert it to the Public-Key Cryptography Standards #8 (PKCS#8) format. Use the following command to perform this conversion and append the result to your `.dev.vars` file: - ```sh - echo "PRIVATE_KEY=\"$(openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in YOUR_PRIVATE_KEY.PEM | awk 'BEGIN{ORS="\\n"} 1')\"" >> .dev.vars - ``` + ```sh + echo "PRIVATE_KEY=\"$(openssl pkcs8 -topk8 -inform PEM -outform PEM -nocrypt -in YOUR_PRIVATE_KEY.PEM | awk 'BEGIN{ORS="\\n"} 1')\"" >> .dev.vars + ``` - **Note:** Replace `YOUR_PRIVATE_KEY.PEM` with the path to your actual PEM file when running the command. + **Note:** Replace `YOUR_PRIVATE_KEY.PEM` with the path to your actual PEM file when running the command. - **`WEBHOOK_SECRET`** Set this value in both your GitHub App settings and here. @@ -26,7 +25,6 @@ The kernel is designed to: - **`WEBHOOK_PROXY_URL` (only for development)** Obtain a webhook URL at [smee.io](https://smee.io/) and set it in your GitHub App settings. - ### Quick Start ```bash @@ -39,31 +37,38 @@ bun dev ### Deploying to Cloudflare Workers 1. **Install Dependencies:** + - Execute `bun install` to install the required dependencies. 2. **Create a Github App:** + - Generate a Github App and configure its settings. - Navigate to app settings and click `Permissions & events`. - Ensure the app is subscribed to all events with the following permissions: Repository permissions: + - Actions: Read & Write - Contents: Read & Write - Issues: Read & Write - Pull Requests: Read & Write Organization permissions: + - Members: Read only 3. **Cloudflare Account Setup:** + - If not done already, create a Cloudflare account. - Run `npx wrangler login` to log in. 4. **Create a KV Namespace:** + - Generate a KV namespace using `npx wrangler kv:namespace create PLUGIN_CHAIN_STATE`. - Copy the generated ID and paste it under `[env.dev]` in `wrangler.toml`. 5. **Manage Secrets:** + - Add (env) secrets using `npx wrangler secret put --env dev`. - For the private key, execute the following (replace `YOUR_PRIVATE_KEY.PEM` with the actual PEM file path): @@ -97,7 +102,9 @@ Example usage: const input: PluginInput = { stateId: "abc123", eventName: "issue_comment.created", - eventPayload: { /* ... */ }, + eventPayload: { + /* ... */ + }, settings: '{ "key": "value" }', authToken: "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...", ref: "refs/heads/main", @@ -129,13 +136,16 @@ const output: PluginOutput = { ## Plugin Quick Start The kernel supports 2 types of plugins: + 1. Github actions ([wiki](https://github.com/ubiquity/ubiquibot-kernel/wiki/How-it-works)) 2. Cloudflare Workers (which are simple backend servers with a single API route) How to run a "hello-world" plugin the Cloudflare way: + 1. Run `bun dev` to spin up the kernel 2. Run `bun plugin:hello-world` to spin up a local server for the "hello-world" plugin 3. Update the bot's config file in the repository where you use the bot (`OWNER/REPOSITORY/.github/.ubiquibot-config.yml`): + ``` plugins: 'issue_comment.created': @@ -151,12 +161,14 @@ plugins: with: response: world ``` + 4. Post a `/hello` comment in any issue 5. The bot should respond with the `world` message ([example](https://github.com/rndquu-org/test-repo/issues/54#issuecomment-2149313139)) How it works: + 1. When you post the `/hello` command the kernel receives the `issue_comment.created` event -2. The kernel matches the `/hello` command to the plugin that should be executed (i.e. the API method that should be called) +2. The kernel matches the `/hello` command to the plugin that should be executed (i.e. the API method that should be called) 3. The kernel passes github event payload, bot's access token and plugin settings (from `.ubiquibot-config.yml`) to the plugin endpoint 4. The plugin performs all of the required actions and returns the result diff --git a/bun.lockb b/bun.lockb deleted file mode 100755 index d1cbc58f49c39a95c8defc1396beb705522347c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 306733 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Ⓢm34|Y$5%_xcgcoXOvjdM@g)<|oe}{r zp`46kEYjdNPIY5Z&=}^M+dfi$z4W_xy%w$rLkpiM^Gh1?Ojm)e)p^mdu%x{`Hy+J#TVQxu$Wv|nSzJs`SBkjPI29Oq#9HQuNb9iR(sT&wfAVOg0qhDTa z{G?_tAX*X|Z)P}6iQ_A-ok#KYf>U?33(8c=;tF{oXd{g&UEZWQsvH#o5oU>oFz^VU z&2JbS9#^{vk4pkiS(j_^_*M&ee9|s>d~XCiK1tiBRIhjp>cjz&*)@kFgDuB9oE5Dn zIQEXtpPZJ|+J9zxI0FR*nXh5RddVwa_AReeGjjNVK7lD_h?z3mibAP?I>S>{$y`YE@oo&>rS^Q!6JJTPYwdkKWK!AP5oo`&A=33isD;fAIOTRlM)g z16MN*Y4y@Vj8RrYgf*PVK>0F&^I;{SBx|R`!5>oE0SLN$hMmRTu&#hRL?ULGsb)N* y%mEunOrS4<$$UM+GL}0PyabB(5aV!IPVtjC6a32MEB9W$cG-^OyZ%4@@BabbSq(%0 diff --git a/eslint.config.mjs b/eslint.config.mjs new file mode 100644 index 0000000..5066c78 --- /dev/null +++ b/eslint.config.mjs @@ -0,0 +1,126 @@ +// @ts-check +import tsEslint from "typescript-eslint"; +import eslint from "@eslint/js"; +import sonarjs from "eslint-plugin-sonarjs"; +import checkFile from "eslint-plugin-check-file"; + +export default tsEslint.config({ + plugins: { + "@typescript-eslint": tsEslint.plugin, + "check-file": checkFile, + }, + ignores: [".github/knip.ts", "**/.wrangler/**"], + extends: [eslint.configs.recommended, ...tsEslint.configs.recommended, sonarjs.configs.recommended], + languageOptions: { + parser: tsEslint.parser, + parserOptions: { + project: ["./tsconfig.json"], + }, + }, + rules: { + "check-file/filename-naming-convention": [ + "error", + { + "**/*.{js,ts}": "+([-._a-z0-9])", + }, + ], + "prefer-arrow-callback": [ + "warn", + { + allowNamedFunctions: true, + }, + ], + "func-style": [ + "warn", + "declaration", + { + allowArrowFunctions: false, + }, + ], + "@typescript-eslint/no-floating-promises": "error", + "@typescript-eslint/no-non-null-assertion": "error", + "constructor-super": "error", + "no-invalid-this": "off", + "@typescript-eslint/no-invalid-this": ["error"], + "no-restricted-syntax": ["error", "ForInStatement"], + "use-isnan": "error", + "no-unneeded-ternary": "error", + "no-nested-ternary": "error", + "@typescript-eslint/no-unused-vars": [ + "error", + { + args: "after-used", + ignoreRestSiblings: true, + vars: "all", + varsIgnorePattern: "^_", + argsIgnorePattern: "^_", + }, + ], + "@typescript-eslint/await-thenable": "error", + "@typescript-eslint/no-misused-new": "error", + "@typescript-eslint/restrict-plus-operands": "error", + "sonarjs/no-all-duplicated-branches": "error", + "sonarjs/no-collection-size-mischeck": "error", + "sonarjs/no-duplicated-branches": "error", + "sonarjs/no-element-overwrite": "error", + "sonarjs/no-identical-conditions": "error", + "sonarjs/no-identical-expressions": "error", + "@typescript-eslint/naming-convention": [ + "error", + { + selector: "interface", + format: ["StrictPascalCase"], + custom: { + regex: "^I[A-Z]", + match: false, + }, + }, + { + selector: "memberLike", + modifiers: ["private"], + format: ["strictCamelCase"], + leadingUnderscore: "require", + }, + { + selector: "typeLike", + format: ["StrictPascalCase"], + }, + { + selector: "typeParameter", + format: ["StrictPascalCase"], + prefix: ["T"], + }, + { + selector: "variable", + format: ["strictCamelCase", "UPPER_CASE"], + leadingUnderscore: "allow", + trailingUnderscore: "allow", + }, + { + selector: "variable", + format: ["strictCamelCase"], + leadingUnderscore: "allow", + trailingUnderscore: "allow", + }, + { + selector: "variable", + modifiers: ["destructured"], + format: null, + }, + { + selector: "variable", + types: ["boolean"], + format: ["StrictPascalCase"], + prefix: ["is", "should", "has", "can", "did", "will", "does"], + }, + { + selector: "variableLike", + format: ["strictCamelCase"], + }, + { + selector: ["function", "variable"], + format: ["strictCamelCase"], + }, + ], + }, +}); diff --git a/package.json b/package.json index 14d5a73..a3810fb 100644 --- a/package.json +++ b/package.json @@ -12,7 +12,7 @@ "scripts": { "dev": "run-p worker proxy", "predev": "tsx predev.ts", - "format": "run-s format:lint format:prettier format:cspell", + "format": "run-s format:*", "format:lint": "eslint --fix .", "format:prettier": "prettier --write .", "format:cspell": "cspell **/*", @@ -57,28 +57,29 @@ "@cspell/dict-node": "^4.0.3", "@cspell/dict-software-terms": "^3.3.18", "@cspell/dict-typescript": "^3.1.2", + "@eslint/js": "9.5.0", "@mswjs/data": "0.16.1", "@mswjs/http-middleware": "^0.10.1", - "@types/bun": "1.1.3", - "@types/node": "^20.11.19", - "@typescript-eslint/eslint-plugin": "^7.0.1", - "@typescript-eslint/parser": "^7.0.1", + "@types/bun": "1.1.5", + "@types/node": "20.14.6", "cspell": "^8.4.0", "esbuild": "^0.20.1", - "eslint": "^8.56.0", - "eslint-config-prettier": "^9.1.0", - "eslint-plugin-prettier": "^5.1.3", - "eslint-plugin-sonarjs": "^0.24.0", + "eslint": "9.5.0", + "eslint-config-prettier": "9.1.0", + "eslint-plugin-check-file": "2.8.0", + "eslint-plugin-prettier": "5.1.3", + "eslint-plugin-sonarjs": "1.0.3", "husky": "^9.0.11", - "knip": "^5.0.1", + "knip": "5.22.0", "lint-staged": "^15.2.2", "npm-run-all": "^4.1.5", - "prettier": "^3.2.5", + "prettier": "3.3.2", "toml": "3.0.0", "tomlify-j0.4": "3.0.0", "tsx": "^4.7.1", - "typescript": "^5.3.3", - "wrangler": "3.58.0" + "typescript": "5.4.5", + "typescript-eslint": "7.13.1", + "wrangler": "3.61.0" }, "lint-staged": { "*.ts": [ diff --git a/src/github/github-event-handler.ts b/src/github/github-event-handler.ts index 8cb1d01..4f7895e 100644 --- a/src/github/github-event-handler.ts +++ b/src/github/github-event-handler.ts @@ -2,14 +2,14 @@ import { EmitterWebhookEvent, Webhooks } from "@octokit/webhooks"; import { customOctokit } from "./github-client"; import { GitHubContext, SimplifiedContext } from "./github-context"; import { createAppAuth } from "@octokit/auth-app"; -import { CloudflareKV } from "./utils/cloudflare-kv"; +import { CloudflareKv } from "./utils/cloudflare-kv"; import { PluginChainState } from "./types/plugin"; export type Options = { webhookSecret: string; appId: string | number; privateKey: string; - pluginChainState: CloudflareKV; + pluginChainState: CloudflareKv; }; export class GitHubEventHandler { @@ -17,7 +17,7 @@ export class GitHubEventHandler { public on: Webhooks["on"]; public onAny: Webhooks["onAny"]; public onError: Webhooks["onError"]; - public pluginChainState: CloudflareKV; + public pluginChainState: CloudflareKv; private _webhookSecret: string; private _privateKey: string; diff --git a/src/github/utils/cloudflare-kv.ts b/src/github/utils/cloudflare-kv.ts index f6dc1a2..f5407a3 100644 --- a/src/github/utils/cloudflare-kv.ts +++ b/src/github/utils/cloudflare-kv.ts @@ -1,4 +1,4 @@ -export class CloudflareKV { +export class CloudflareKv { private _kv: KVNamespace; constructor(kv: KVNamespace) { diff --git a/src/github/utils/config.ts b/src/github/utils/config.ts index f21d9b5..c3a563a 100644 --- a/src/github/utils/config.ts +++ b/src/github/utils/config.ts @@ -105,7 +105,7 @@ function checkPluginChainExpressions(plugin: PluginConfiguration["plugins"]["*"] const calledIds = new Set(); for (const use of plugin.uses) { if (!use.id) continue; - for (const key in use.with) { + for (const key of Object.keys(use.with)) { const value = use.with[key]; if (typeof value !== "string") continue; checkExpression(value, allIds, calledIds); diff --git a/src/worker.ts b/src/worker.ts index 4ccc3ac..2fc7a63 100644 --- a/src/worker.ts +++ b/src/worker.ts @@ -3,7 +3,7 @@ import { Value } from "@sinclair/typebox/value"; import { GitHubEventHandler } from "./github/github-event-handler"; import { bindHandlers } from "./github/handlers"; import { Env, envSchema } from "./github/types/env"; -import { CloudflareKV } from "./github/utils/cloudflare-kv"; +import { CloudflareKv } from "./github/utils/cloudflare-kv"; import { WebhookEventName } from "@octokit/webhooks-types"; export default { @@ -11,16 +11,16 @@ export default { try { validateEnv(env); const eventName = getEventName(request); - const signatureSHA256 = getSignature(request); + const signatureSha256 = getSignature(request); const id = getId(request); const eventHandler = new GitHubEventHandler({ webhookSecret: env.WEBHOOK_SECRET, appId: env.APP_ID, privateKey: env.PRIVATE_KEY, - pluginChainState: new CloudflareKV(env.PLUGIN_CHAIN_STATE), + pluginChainState: new CloudflareKv(env.PLUGIN_CHAIN_STATE), }); bindHandlers(eventHandler); - await eventHandler.webhooks.verifyAndReceive({ id, name: eventName, payload: await request.text(), signature: signatureSHA256 }); + await eventHandler.webhooks.verifyAndReceive({ id, name: eventName, payload: await request.text(), signature: signatureSha256 }); return new Response("ok\n", { status: 200, headers: { "content-type": "text/plain" } }); } catch (error) { return handleUncaughtError(error); @@ -57,11 +57,11 @@ function getEventName(request: Request): WebhookEventName { } function getSignature(request: Request): string { - const signatureSHA256 = request.headers.get("x-hub-signature-256"); - if (!signatureSHA256) { + const signatureSha256 = request.headers.get("x-hub-signature-256"); + if (!signatureSha256) { throw new Error(`Missing "x-hub-signature-256" header`); } - return signatureSHA256; + return signatureSha256; } function getId(request: Request): string { diff --git a/tsconfig.json b/tsconfig.json index 25beebd..e8424ed 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -96,6 +96,6 @@ /* Completeness */ // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ - "skipLibCheck": true /* Skip type checking all .d.ts files. */, - }, + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } } From 32ff5fda5a3c618982d41df4f4dba3939edb260b Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 14:28:38 +0200 Subject: [PATCH 05/19] chore: updated pattern to refuse underscore for file names --- eslint.config.mjs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/eslint.config.mjs b/eslint.config.mjs index 5066c78..acbd01f 100644 --- a/eslint.config.mjs +++ b/eslint.config.mjs @@ -21,7 +21,7 @@ export default tsEslint.config({ "check-file/filename-naming-convention": [ "error", { - "**/*.{js,ts}": "+([-._a-z0-9])", + "**/*.{js,ts}": "+([-.a-z0-9])", }, ], "prefer-arrow-callback": [ From ec91a922fbde1459cec736bdb907f33087ec4345 Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 14:34:35 +0200 Subject: [PATCH 06/19] chore: changed workflow to run all checks --- .github/workflows/{cspell.yml => format.yml} | 16 +++++++++------- package.json | 2 +- 2 files changed, 10 insertions(+), 8 deletions(-) rename .github/workflows/{cspell.yml => format.yml} (53%) diff --git a/.github/workflows/cspell.yml b/.github/workflows/format.yml similarity index 53% rename from .github/workflows/cspell.yml rename to .github/workflows/format.yml index 5825b92..d56968a 100644 --- a/.github/workflows/cspell.yml +++ b/.github/workflows/format.yml @@ -1,11 +1,11 @@ -name: Spell Check +name: Format Checks on: push: jobs: - spellcheck: - name: Check for spelling errors + formatCheck: + name: Check for formatting issues runs-on: ubuntu-latest steps: @@ -17,8 +17,10 @@ jobs: with: node-version: "20.10.0" - - name: Install bun & CSpell - run: npm i -g bun cspell + - uses: oven-sh/setup-bun@v1 - - name: Run cspell - run: bun format:cspell + - name: Install deps + run: bun i + + - name: Run checks + run: bun format diff --git a/package.json b/package.json index a3810fb..9acb5f5 100644 --- a/package.json +++ b/package.json @@ -62,7 +62,7 @@ "@mswjs/http-middleware": "^0.10.1", "@types/bun": "1.1.5", "@types/node": "20.14.6", - "cspell": "^8.4.0", + "cspell": "8.9.0", "esbuild": "^0.20.1", "eslint": "9.5.0", "eslint-config-prettier": "9.1.0", From c8882f261ce3d895026a0222398fb067bffba091 Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 14:42:25 +0200 Subject: [PATCH 07/19] chore: renamed file to match kebab case --- deploy/{setup_kv_namespace.ts => setup-kv-namespace.ts} | 0 package.json | 2 +- 2 files changed, 1 insertion(+), 1 deletion(-) rename deploy/{setup_kv_namespace.ts => setup-kv-namespace.ts} (100%) diff --git a/deploy/setup_kv_namespace.ts b/deploy/setup-kv-namespace.ts similarity index 100% rename from deploy/setup_kv_namespace.ts rename to deploy/setup-kv-namespace.ts diff --git a/package.json b/package.json index 9acb5f5..470e523 100644 --- a/package.json +++ b/package.json @@ -25,7 +25,7 @@ "knip-ci": "knip --no-exit-code --reporter json --config .github/knip.ts", "test": "bun test", "plugin:hello-world": "tsx tests/__mocks__/hello-world-plugin.ts", - "setup-kv": "bun --env-file=.dev.vars deploy/setup_kv_namespace.ts" + "setup-kv": "bun --env-file=.dev.vars deploy/setup-kv-namespace.ts" }, "keywords": [ "typescript", From ff44b69d288e99b27df113ef4e9081d4bea6556a Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 15:20:12 +0200 Subject: [PATCH 08/19] chore: removed js allow and enabled interop --- bun.lockb | Bin 0 -> 287883 bytes package.json | 50 +++++++++++++++++++++++++------------------------- tsconfig.json | 6 +++--- 3 files changed, 28 insertions(+), 28 deletions(-) create mode 100755 bun.lockb diff --git a/bun.lockb b/bun.lockb new file mode 100755 index 0000000000000000000000000000000000000000..fa9ee0f2e79fb3419523a829fbb3d370891134b2 GIT binary patch literal 287883 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 H`oI4HX$uUq literal 0 HcmV?d00001 diff --git a/package.json b/package.json index 470e523..5a4c0d7 100644 --- a/package.json +++ b/package.json @@ -35,48 +35,48 @@ "open-source" ], "dependencies": { - "@octokit/auth-app": "^7.1.0", - "@octokit/core": "^6.1.2", - "@octokit/plugin-paginate-rest": "^11.3.0", - "@octokit/plugin-rest-endpoint-methods": "^13.2.1", - "@octokit/plugin-retry": "^7.1.1", - "@octokit/plugin-throttling": "^9.3.0", - "@octokit/types": "^13.5.0", - "@octokit/webhooks": "^13.2.7", - "@octokit/webhooks-types": "^7.5.1", - "@sinclair/typebox": "^0.32.5", - "dotenv": "^16.4.4", - "smee-client": "^2.0.0", + "@octokit/auth-app": "7.1.0", + "@octokit/core": "6.1.2", + "@octokit/plugin-paginate-rest": "11.3.0", + "@octokit/plugin-rest-endpoint-methods": "13.2.1", + "@octokit/plugin-retry": "7.1.1", + "@octokit/plugin-throttling": "9.3.0", + "@octokit/types": "13.5.0", + "@octokit/webhooks": "13.2.7", + "@octokit/webhooks-types": "7.5.1", + "@sinclair/typebox": "0.32.33", + "dotenv": "16.4.5", + "smee-client": "2.0.1", "typebox-validators": "0.3.5", - "yaml": "^2.4.1" + "yaml": "2.4.5" }, "devDependencies": { "@cloudflare/workers-types": "^4.20240117.0", - "@commitlint/cli": "^18.6.1", - "@commitlint/config-conventional": "^18.6.2", - "@cspell/dict-node": "^4.0.3", - "@cspell/dict-software-terms": "^3.3.18", - "@cspell/dict-typescript": "^3.1.2", + "@commitlint/cli": "19.3.0", + "@commitlint/config-conventional": "19.2.2", + "@cspell/dict-node": "5.0.1", + "@cspell/dict-software-terms": "3.4.6", + "@cspell/dict-typescript": "3.1.5", "@eslint/js": "9.5.0", "@mswjs/data": "0.16.1", - "@mswjs/http-middleware": "^0.10.1", + "@mswjs/http-middleware": "0.10.1", "@types/bun": "1.1.5", "@types/node": "20.14.6", "cspell": "8.9.0", - "esbuild": "^0.20.1", + "esbuild": "0.21.5", "eslint": "9.5.0", "eslint-config-prettier": "9.1.0", "eslint-plugin-check-file": "2.8.0", "eslint-plugin-prettier": "5.1.3", "eslint-plugin-sonarjs": "1.0.3", - "husky": "^9.0.11", + "husky": "9.0.11", "knip": "5.22.0", - "lint-staged": "^15.2.2", - "npm-run-all": "^4.1.5", + "lint-staged": "15.2.7", + "npm-run-all": "4.1.5", "prettier": "3.3.2", "toml": "3.0.0", "tomlify-j0.4": "3.0.0", - "tsx": "^4.7.1", + "tsx": "4.15.6", "typescript": "5.4.5", "typescript-eslint": "7.13.1", "wrangler": "3.61.0" @@ -95,5 +95,5 @@ "@commitlint/config-conventional" ] }, - "packageManager": "bun@1.1.0" + "packageManager": "bun@1.1.15" } diff --git a/tsconfig.json b/tsconfig.json index e8424ed..76d1e39 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -37,8 +37,8 @@ // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ /* JavaScript Support */ - "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, - "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, + // "allowJs": true /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */, + // "checkJs": false /* Enable error reporting in type-checked JavaScript files. */, // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ /* Emit */ @@ -69,7 +69,7 @@ /* Interop Constraints */ "isolatedModules": true /* Ensure that each file can be safely transpiled without relying on other imports. */, "allowSyntheticDefaultImports": true /* Allow 'import x from y' when a module doesn't have a default export. */, - // "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, + "esModuleInterop": true /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */, // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ "forceConsistentCasingInFileNames": true /* Ensure that casing is correct in imports. */, From fcfd3d6001b68a1d9b3d4bf9e970fd72e87ee511 Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 15:23:00 +0200 Subject: [PATCH 09/19] chore: fixed knip run --- .github/workflows/knip.yml | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/.github/workflows/knip.yml b/.github/workflows/knip.yml index d9237eb..eb01efc 100644 --- a/.github/workflows/knip.yml +++ b/.github/workflows/knip.yml @@ -16,14 +16,16 @@ jobs: with: node-version: 20.10.0 + - uses: oven-sh/setup-bun@v1 + - name: Install toolchain - run: yarn install + run: bun install - name: Store PR number run: echo ${{ github.event.number }} > pr-number.txt - name: Run Knip - run: yarn knip || yarn knip --reporter json > knip-results.json + run: bun knip || bun knip --reporter json > knip-results.json - name: Upload knip result if: failure() From b474620c9b95440b73c271fc1c55e7ba804356a7 Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 16:34:21 +0200 Subject: [PATCH 10/19] chore: added CLOUDFLARE_ACCOUNT_ID to env setup-kv build step --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b276b13..2f9d3fc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -30,6 +30,7 @@ jobs: bun setup-kv env: CLOUDFLARE_API_TOKEN: ${{ secrets.CLOUDFLARE_API_TOKEN }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} - uses: cloudflare/wrangler-action@v3 with: From 80666ef5e670ca1c75429073515b48b26e4d29ff Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Thu, 20 Jun 2024 16:46:48 +0200 Subject: [PATCH 11/19] chore: added log for wrangler result --- bun.lockb | Bin 306733 -> 306733 bytes deploy/setup_kv_namespace.ts | 1 + 2 files changed, 1 insertion(+) diff --git a/bun.lockb b/bun.lockb index d1cbc58f49c39a95c8defc1396beb705522347c5..85e9ca5545727f8f960208e2ba86a857390c7dbc 100755 GIT binary patch delta 5604 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 rF^V-9$7)5;fVo{U-pzSij@ Date: Thu, 20 Jun 2024 16:51:02 +0200 Subject: [PATCH 12/19] chore: added log for wrangler result --- deploy/setup_kv_namespace.ts | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/deploy/setup_kv_namespace.ts b/deploy/setup_kv_namespace.ts index 5801e83..5f146b7 100644 --- a/deploy/setup_kv_namespace.ts +++ b/deploy/setup_kv_namespace.ts @@ -85,6 +85,7 @@ async function main() { namespaceId = newId; console.log(`Namespace created with ID: ${namespaceId}`); } catch (error) { + console.error(error); const listOutput = JSON.parse(execSync(`wrangler kv:namespace list`).toString()) as Namespace[]; const existingNamespace = listOutput.find((o) => o.title === NAMESPACE_TITLE_WITH_PREFIX); if (!existingNamespace) { @@ -100,6 +101,6 @@ async function main() { main() .then(() => console.log("Successfully bound namespace.")) .catch((e) => { - console.error("Error checking or creating namespace:", e); + console.error("Error checking or creating namespace:\n", e); process.exit(1); }); From ae53b6c072911a85153e571b62781b120b3cd10e Mon Sep 17 00:00:00 2001 From: Korrrba Date: Fri, 21 Jun 2024 13:02:45 +0200 Subject: [PATCH 13/19] chore: update knip workflow configuration --- .github/workflows/knip-reporter.yml | 49 +++++++++++++++++++++++++++++ .github/workflows/knip.yml | 25 ++++++++------- 2 files changed, 63 insertions(+), 11 deletions(-) create mode 100644 .github/workflows/knip-reporter.yml diff --git a/.github/workflows/knip-reporter.yml b/.github/workflows/knip-reporter.yml new file mode 100644 index 0000000..1b0be66 --- /dev/null +++ b/.github/workflows/knip-reporter.yml @@ -0,0 +1,49 @@ +name: Knip-reporter + +on: + workflow_run: + workflows: ["Knip"] + types: + - completed + +jobs: + knip-reporter: + runs-on: ubuntu-latest + if: ${{ github.event.workflow_run.conclusion != 'success' }} + steps: + - name: Checkout + uses: actions/checkout@v4 + + - name: Setup Node + uses: actions/setup-node@v4 + with: + node-version: 20.10.0 + + - name: Install toolchain + run: yarn install + + - uses: actions/download-artifact@v4 + with: + name: knip-results + run-id: ${{ github.event.workflow_run.id }} + github-token: ${{ secrets.GITHUB_TOKEN }} + + - name: Read pr number + id: pr-number + uses: juliangruber/read-file-action@v1 + with: + path: ./pr-number.txt + trim: true + + - name: Report knip results to pull request + uses: gitcoindev/knip-reporter@main + with: + verbose: true + comment_id: ${{ github.workflow }}-reporter + command_script_name: knip-ci + annotations: true + ignore_results: false + json_input: true + json_input_file_name: knip-results.json + pull_request_number: ${{ steps.pr-number.outputs.content }} + token: ${{ secrets.GITHUB_TOKEN }} diff --git a/.github/workflows/knip.yml b/.github/workflows/knip.yml index 8abcedf..e8f2bd4 100644 --- a/.github/workflows/knip.yml +++ b/.github/workflows/knip.yml @@ -1,10 +1,7 @@ name: Knip on: - pull_request_target: - workflow_dispatch: - -permissions: write-all + pull_request: jobs: run-knip: @@ -23,11 +20,17 @@ jobs: npm i -g bun bun install - - name: Report knip results to pull request - uses: Codex-/knip-reporter@v2 + - name: Store PR number + run: echo ${{ github.event.number }} > pr-number.txt + + - name: Run Knip + run: bun knip || bun knip --reporter json > knip-results.json + + - name: Upload knip result + if: failure() + uses: actions/upload-artifact@v4 with: - verbose: true - comment_id: ${{ github.workflow }}-reporter - command_script_name: knip-ci - annotations: true - ignore_results: false + name: knip-results + path: | + knip-results.json + pr-number.txt From 1eac1f7e6605f8045e2464072ecf30b3c9e4181b Mon Sep 17 00:00:00 2001 From: Korrrba Date: Fri, 21 Jun 2024 13:08:10 +0200 Subject: [PATCH 14/19] chore: remove superflous steps in knip-reporter workflow --- .github/workflows/knip-reporter.yml | 11 ----------- 1 file changed, 11 deletions(-) diff --git a/.github/workflows/knip-reporter.yml b/.github/workflows/knip-reporter.yml index 1b0be66..282c9a8 100644 --- a/.github/workflows/knip-reporter.yml +++ b/.github/workflows/knip-reporter.yml @@ -11,17 +11,6 @@ jobs: runs-on: ubuntu-latest if: ${{ github.event.workflow_run.conclusion != 'success' }} steps: - - name: Checkout - uses: actions/checkout@v4 - - - name: Setup Node - uses: actions/setup-node@v4 - with: - node-version: 20.10.0 - - - name: Install toolchain - run: yarn install - - uses: actions/download-artifact@v4 with: name: knip-results From fc65832d2669fa6342043f71761cc9f62de7c1d2 Mon Sep 17 00:00:00 2001 From: Korrrba Date: Fri, 21 Jun 2024 14:24:21 +0200 Subject: [PATCH 15/19] chore: remove unused binaries in ignoreBinaries knip configuration --- .github/knip.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/knip.ts b/.github/knip.ts index 1c218b6..2c6c8e6 100644 --- a/.github/knip.ts +++ b/.github/knip.ts @@ -3,7 +3,7 @@ import type { KnipConfig } from "knip"; const config: KnipConfig = { entry: ["src/worker.ts"], project: ["src/**/*.ts"], - ignoreBinaries: ["build", "i", "format:cspell", "awk", "lsof"], + ignoreBinaries: ["i", "format:cspell"], ignoreExportsUsedInFile: true, ignoreDependencies: ["@mswjs/data", "esbuild", "eslint-config-prettier", "eslint-plugin-prettier", "msw"], }; From 5564c6ea69dbb6c9a3411904baa2e79ee437354d Mon Sep 17 00:00:00 2001 From: Korrrba Date: Fri, 21 Jun 2024 14:25:33 +0200 Subject: [PATCH 16/19] chore: add setup-kv to knip ignoreBinaries list --- .github/knip.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/knip.ts b/.github/knip.ts index 2c6c8e6..7eb3a1c 100644 --- a/.github/knip.ts +++ b/.github/knip.ts @@ -3,7 +3,7 @@ import type { KnipConfig } from "knip"; const config: KnipConfig = { entry: ["src/worker.ts"], project: ["src/**/*.ts"], - ignoreBinaries: ["i", "format:cspell"], + ignoreBinaries: ["i", "format:cspell", "setup-kv"], ignoreExportsUsedInFile: true, ignoreDependencies: ["@mswjs/data", "esbuild", "eslint-config-prettier", "eslint-plugin-prettier", "msw"], }; From 9373a6d02f557ecba5a28d7d35dbee77bf8d78ae Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Fri, 21 Jun 2024 18:13:25 +0200 Subject: [PATCH 17/19] chore: added cloudflare account id to wrangler step --- .github/workflows/build.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2f9d3fc..997827f 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -46,3 +46,4 @@ jobs: WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }} APP_ID: ${{ secrets.APP_ID }} PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} + CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} From d93e8393c5ceac63e6da3987f2a90a128706f09e Mon Sep 17 00:00:00 2001 From: gentlementlegen Date: Sat, 22 Jun 2024 00:42:03 +0200 Subject: [PATCH 18/19] chore: moved cloudflare ID to with instead of env --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 997827f..d979795 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,6 +36,7 @@ jobs: with: wranglerVersion: '3.57.0' apiToken: ${{ secrets.CLOUDFLARE_API_TOKEN }} + accountId: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} secrets: | WEBHOOK_PROXY_URL WEBHOOK_SECRET @@ -46,4 +47,3 @@ jobs: WEBHOOK_SECRET: ${{ secrets.WEBHOOK_SECRET }} APP_ID: ${{ secrets.APP_ID }} PRIVATE_KEY: ${{ secrets.PRIVATE_KEY }} - CLOUDFLARE_ACCOUNT_ID: ${{ secrets.CLOUDFLARE_ACCOUNT_ID }} From 9a3a71dae660d08901843f12e0d8a4f98a544bff Mon Sep 17 00:00:00 2001 From: Korrrba Date: Mon, 24 Jun 2024 00:21:22 +0200 Subject: [PATCH 19/19] chore: remove format:cspell and setup-kv from ignoreBinaries knip config --- .github/knip.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/knip.ts b/.github/knip.ts index 7eb3a1c..df72ff7 100644 --- a/.github/knip.ts +++ b/.github/knip.ts @@ -3,7 +3,7 @@ import type { KnipConfig } from "knip"; const config: KnipConfig = { entry: ["src/worker.ts"], project: ["src/**/*.ts"], - ignoreBinaries: ["i", "format:cspell", "setup-kv"], + ignoreBinaries: ["i"], ignoreExportsUsedInFile: true, ignoreDependencies: ["@mswjs/data", "esbuild", "eslint-config-prettier", "eslint-plugin-prettier", "msw"], };