diff --git a/bun.lock b/bun.lock index 47ee4dd..b30e565 100644 --- a/bun.lock +++ b/bun.lock @@ -12,6 +12,7 @@ }, "devDependencies": { "@biomejs/biome": "^2.5.6", + "@cloudflare/workers-types": "^5.20260815.1", "@shopify/flash-list": "^2.3.2", "@types/node": "^26.1.2", "@types/react": "^19.2.17", @@ -89,6 +90,8 @@ "@cloudflare/workerd-windows-64": ["@cloudflare/workerd-windows-64@1.20260801.1", "", { "os": "win32", "cpu": "x64" }, "sha512-2oQz+Ksu4ji6e/+ZoYX+tWQEcxAii2p7l+iR8kx48W1llMalaufAsmVxTlk+3/vrM7D3/2c0iK448e0UQTcIMg=="], + "@cloudflare/workers-types": ["@cloudflare/workers-types@5.20260815.1", "", {}, "sha512-btpW8rEgeJKcxDlBWKxzjLLUHxzUWqXZY8O+DmM6NcSHadUQN5I71z6Q/yAKCTJyGS7adBpXzlsZSFbosLnECQ=="], + "@cspotcode/source-map-support": ["@cspotcode/source-map-support@0.8.1", "", { "dependencies": { "@jridgewell/trace-mapping": "0.3.9" } }, "sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw=="], "@emnapi/core": ["@emnapi/core@2.0.0-alpha.3", "", { "dependencies": { "@emnapi/wasi-threads": "2.0.1", "tslib": "^2.4.0" } }, "sha512-AZypUeJ/yByuxyS7BlSNRDOMLMlROYtjYdIAuBmJssVz1UJDSeYxLrdizhXCFYhedC5bqd/ASy8EuNXbVVXp9g=="], diff --git a/package.json b/package.json index 3463b0f..45d20d5 100644 --- a/package.json +++ b/package.json @@ -8,7 +8,7 @@ "generate-index": "bun node_modules/@revenge-mod/plugin-cli/src/main.ts generate-index", "serve": "bun node_modules/@revenge-mod/plugin-cli/src/main.ts serve", "lint": "biome check", - "lint:types": "tsc --noEmit && tsc -p cli --noEmit" + "lint:types": "tsc --noEmit && tsc -p worker --noEmit && tsc -p cli --noEmit" }, "dependencies": { "@revenge-mod/devtools-client": "^1.4.0", @@ -18,6 +18,7 @@ }, "devDependencies": { "@biomejs/biome": "^2.5.6", + "@cloudflare/workers-types": "^5.20260815.1", "@shopify/flash-list": "^2.3.2", "@types/node": "^26.1.2", "@types/react": "^19.2.17", diff --git a/worker/schema.sql b/worker/schema.sql new file mode 100644 index 0000000..f2c3d3b --- /dev/null +++ b/worker/schema.sql @@ -0,0 +1,29 @@ +DROP TABLE IF EXISTS plugin_overrides; +CREATE TABLE plugin_overrides ( + id TEXT PRIMARY KEY, + name TEXT, + description TEXT, + tagline TEXT, + note TEXT, + category TEXT, + accent TEXT, + status TEXT, + how_it_works TEXT, + features TEXT, -- JSON array of strings + commands TEXT, -- JSON array of {cmd, desc} + limitations TEXT, + hidden INTEGER NOT NULL DEFAULT 0, + is_draft INTEGER NOT NULL DEFAULT 0, + manifest TEXT, -- only used when is_draft = 1 + main_js TEXT, -- only used when is_draft = 1 + updated_at TEXT NOT NULL +); + +DROP TABLE IF EXISTS plugin_channels; +CREATE TABLE plugin_channels ( + plugin_id TEXT NOT NULL, + channel TEXT NOT NULL, -- 'alpha' | 'beta' | 'stable' + version TEXT NOT NULL, + updated_at TEXT NOT NULL, + PRIMARY KEY (plugin_id, channel) +); diff --git a/worker/src/env.ts b/worker/src/env.ts new file mode 100644 index 0000000..d9ec418 --- /dev/null +++ b/worker/src/env.ts @@ -0,0 +1,5 @@ +export interface Env { + ASSETS: Fetcher + DB: D1Database + ADMIN_TOKEN: string +} diff --git a/worker/src/index.ts b/worker/src/index.ts new file mode 100644 index 0000000..5b8406a --- /dev/null +++ b/worker/src/index.ts @@ -0,0 +1,7 @@ +import type { Env } from './env' + +export default { + async fetch(request: Request, env: Env): Promise { + return env.ASSETS.fetch(request) + }, +} diff --git a/worker/tsconfig.json b/worker/tsconfig.json new file mode 100644 index 0000000..8959da3 --- /dev/null +++ b/worker/tsconfig.json @@ -0,0 +1,11 @@ +{ + "compilerOptions": { + "target": "ESNext", + "module": "ESNext", + "moduleResolution": "Bundler", + "strict": true, + "skipLibCheck": true, + "types": ["@cloudflare/workers-types"] + }, + "include": ["src"] +} diff --git a/wrangler.toml b/wrangler.toml index 8a73f85..40db8bf 100644 --- a/wrangler.toml +++ b/wrangler.toml @@ -1,9 +1,16 @@ name = "revenge-next-plugs" compatibility_date = "2026-08-08" account_id = "dc5e308f1df2d6bb5082951d3f3993a5" +main = "worker/src/index.ts" [assets] directory = "build/dist" +binding = "ASSETS" + +[[d1_databases]] +binding = "DB" +database_name = "revenge-next-plugs" +database_id = "dacf9207-d24a-4029-bb63-feea62bca6ec" [[routes]] pattern = "next.jarviscli.dev"