diff --git a/package.json b/package.json index c13fff7c..f77174fc 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,10 @@ "build": "pnpm -r run build", "publish:playgrounds": "pnpm pkg-pr-new publish './playgrounds/*' ./packages/cli --template './templates/*' --peerDeps", "format": "prettier --write --cache .", - "lint": "eslint --cache .", - "typecheck": "tsc -p scripts --noEmit && pnpm -r --parallel run typecheck", + "lint": "pnpm run \"/lint:.*/\"", + "lint:js": "eslint --cache .", + "lint:format": "prettier --check --cache .", + "lint:types": "pnpm -r --parallel run typecheck", "release": "tsx script/release.ts", "test": "tsx e2e/publish.test.mts" }, diff --git a/packages/backend/package.json b/packages/backend/package.json index 43a174c3..41bcfb10 100644 --- a/packages/backend/package.json +++ b/packages/backend/package.json @@ -8,12 +8,22 @@ "dev": "nitro dev", "vendor:octokit": "tsx script/octokit.ts", "prepare": "nitro prepare && pnpm vendor:octokit", - "preview": "wrangler pages dev dist " + "preview": "wrangler pages dev dist ", + "typecheck": "tsc --noEmit" }, "devDependencies": { "@cloudflare/workers-types": "^4.20240512.0", "@octokit/action": "^6.1.0", "@octokit/app": "^14.1.0", + "@octokit/openapi-types": "^22.2.0", + "@octokit/types": "^13.5.0", + "@octokit/webhooks-types": "^7.4.0", + "@octokit/oauth-app": "^6.1.0", + "@octokit/auth-app": "^6.0.4", + "@octokit/webhooks": "^12.2.0", + "@octokit/auth-unauthenticated": "^5.0.1", + "@octokit/core": "^5.1.0", + "h3": "^1.11.1", "@pkg-pr-new/utils": "workspace:^", "dotenv": "^16.4.5", "fast-jwt": "^4.0.2", @@ -21,6 +31,7 @@ "nitropack": "^2.9.6", "octokit": "^3.2.1", "query-registry": "^3.0.1", - "wrangler": "^3.57.1" + "wrangler": "^3.57.1", + "unstorage": "^1.10.2" } } diff --git a/packages/backend/server/utils/bucket.ts b/packages/backend/server/utils/bucket.ts index e733b447..45a61b36 100644 --- a/packages/backend/server/utils/bucket.ts +++ b/packages/backend/server/utils/bucket.ts @@ -1,5 +1,6 @@ import { prefixStorage, createStorage, joinKeys } from "unstorage"; import cloudflareR2BindingDriver from "unstorage/drivers/cloudflare-r2-binding"; +import { getR2Binding } from "unstorage/drivers/utils/cloudflare"; import { WorkflowData, Cursor } from "../types"; import type { H3EventContext } from "h3"; @@ -9,11 +10,11 @@ type Event = { context: { cloudflare: H3EventContext["cloudflare"] } }; export const baseKey = "bucket"; export function useBinding(event: Event) { - return getBinding( + return getR2Binding( event.context.cloudflare.env.ENV === "production" ? "PROD_CR_BUCKET" : "CR_BUCKET", - ) as unknown as R2Bucket; + ); } export async function setItemStream( diff --git a/packages/backend/server/utils/driver.ts b/packages/backend/server/utils/driver.ts deleted file mode 100644 index 55354808..00000000 --- a/packages/backend/server/utils/driver.ts +++ /dev/null @@ -1,47 +0,0 @@ -// copied from https://github.com/unjs/unstorage/blob/main/src/drivers/cloudflare-r2-binding.ts - -export interface CloudflareR2Options { - binding?: string | R2Bucket; - base?: string; -} - -export function createUnstorageError( - driver: string, - message: string, - opts?: ErrorOptions, -) { - const err = new Error(`[unstorage] [${driver}] ${message}`, opts); - return err; -} - -export function getBinding(binding: KVNamespace | R2Bucket | string) { - let bindingName = "[binding]"; - - if (typeof binding === "string") { - bindingName = binding; - binding = ((globalThis as any)[bindingName] || - (globalThis as any).__env__?.[bindingName]) as KVNamespace | R2Bucket; - } - - if (!binding) { - throw createUnstorageError( - "cloudflare", - `Invalid binding \`${bindingName}\`: \`${binding}\``, - ); - } - - for (const key of ["get", "put", "delete"]) { - if (!(key in binding)) { - throw createUnstorageError( - "cloudflare", - `Invalid binding \`${bindingName}\`: \`${key}\` key is missing`, - ); - } - } - - return binding; -} - -export function getR2Binding(binding: R2Bucket | string = "BUCKET") { - return getBinding(binding) as R2Bucket; -} diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 64d973ef..ad904711 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -77,6 +77,30 @@ importers: '@octokit/app': specifier: ^14.1.0 version: 14.1.0 + '@octokit/auth-app': + specifier: ^6.0.4 + version: 6.0.4 + '@octokit/auth-unauthenticated': + specifier: ^5.0.1 + version: 5.0.1 + '@octokit/core': + specifier: ^5.1.0 + version: 5.1.0 + '@octokit/oauth-app': + specifier: ^6.1.0 + version: 6.1.0 + '@octokit/openapi-types': + specifier: ^22.2.0 + version: 22.2.0 + '@octokit/types': + specifier: ^13.5.0 + version: 13.5.0 + '@octokit/webhooks': + specifier: ^12.2.0 + version: 12.2.0 + '@octokit/webhooks-types': + specifier: ^7.4.0 + version: 7.4.0 '@pkg-pr-new/utils': specifier: workspace:^ version: link:../utils @@ -86,6 +110,9 @@ importers: fast-jwt: specifier: ^4.0.2 version: 4.0.5 + h3: + specifier: ^1.11.1 + version: 1.11.1 nitro-cloudflare-dev: specifier: 0.1.2 version: 0.1.2(patch_hash=ohlyzk6s4d4tp4huqq6lzvge7i) @@ -98,6 +125,9 @@ importers: query-registry: specifier: ^3.0.1 version: 3.0.1 + unstorage: + specifier: ^1.10.2 + version: 1.10.2(ioredis@5.3.2) wrangler: specifier: ^3.57.1 version: 3.57.1(@cloudflare/workers-types@4.20240512.0) @@ -4690,7 +4720,7 @@ snapshots: '@types/jsonwebtoken@9.0.6': dependencies: - '@types/node': 20.11.30 + '@types/node': 20.14.2 '@types/node-forge@1.3.11': dependencies: @@ -5488,10 +5518,10 @@ snapshots: dependencies: eslint: 8.57.0 - eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0): + eslint-config-standard@17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0): dependencies: eslint: 8.57.0 - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) eslint-plugin-promise: 6.1.1(eslint@8.57.0) @@ -5501,9 +5531,9 @@ snapshots: '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-config-prettier: 8.10.0(eslint@8.57.0) - eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1)(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0) - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-config-standard: 17.1.0(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0))(eslint-plugin-n@16.6.2(eslint@8.57.0))(eslint-plugin-promise@6.1.1(eslint@8.57.0))(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) eslint-plugin-n: 16.6.2(eslint@8.57.0) eslint-plugin-node: 11.1.0(eslint@8.57.0) eslint-plugin-promise: 6.1.1(eslint@8.57.0) @@ -5522,13 +5552,13 @@ snapshots: transitivePeerDependencies: - supports-color - eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0): + eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 4.3.4 enhanced-resolve: 5.16.0 eslint: 8.57.0 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) - eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) + eslint-plugin-import: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) fast-glob: 3.3.2 get-tsconfig: 4.7.3 is-core-module: 2.13.1 @@ -5539,14 +5569,14 @@ snapshots: - eslint-import-resolver-webpack - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: debug: 3.2.7 optionalDependencies: '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.4.5) eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1)(eslint@8.57.0) + eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0) transitivePeerDependencies: - supports-color @@ -5563,7 +5593,7 @@ snapshots: eslint-utils: 2.1.0 regexpp: 3.2.0 - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0): + eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0): dependencies: array-includes: 3.1.8 array.prototype.findlastindex: 1.2.5 @@ -5573,7 +5603,7 @@ snapshots: doctrine: 2.1.0 eslint: 8.57.0 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1)(eslint@8.57.0) + eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0))(eslint@8.57.0))(eslint@8.57.0) hasown: 2.0.2 is-core-module: 2.13.1 is-glob: 4.0.3 @@ -6275,7 +6305,7 @@ snapshots: lodash.isstring: 4.0.1 lodash.once: 4.1.1 ms: 2.1.3 - semver: 7.6.0 + semver: 7.6.3 jwa@1.4.1: dependencies: