create-skybridge 0.0.0-dev.6258547 → 0.0.0-dev.6270d36

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "create-skybridge",
3
- "version": "0.0.0-dev.6258547",
3
+ "version": "0.0.0-dev.6270d36",
4
4
  "type": "module",
5
5
  "license": "MIT",
6
6
  "author": "Alpic",
@@ -23,7 +23,7 @@
23
23
  },
24
24
  "devDependencies": {
25
25
  "typescript": "^5.9.3",
26
- "vitest": "^4.0.17"
26
+ "vitest": "^4.0.18"
27
27
  },
28
28
  "scripts": {
29
29
  "build": "tsc",
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/inspector/cli/build/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/inspector/cli/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/inspector/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/inspector/cli/build/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/inspector/cli/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/inspector/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/inspector/cli/build/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/inspector/cli/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/inspector/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules/@modelcontextprotocol/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.18.0_@types+node@25.0.3_@types+react-dom@19.2.3_@type_4be4554909ca0a790f3ece65616617d1/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/inspector/cli/build/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/inspector/cli/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/inspector/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules/@modelcontextprotocol/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/@modelcontextprotocol+inspector@0.19.0_@types+node@24.10.9_@types+react-dom@19.2.3_@typ_41033ef40504844615e138b3524ee95a/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../@modelcontextprotocol/inspector/cli/build/cli.js" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../skybridge/bin/run.js" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.2_hono@4.11.3_zod@4.3.5__@types+node@25_735eb51dc660b44c8f8bd4f7ce48a0d2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules/skybridge/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/skybridge@0.26.1_@modelcontextprotocol+sdk@1.25.3_hono@4.11.3_zod@4.3.6__@types+node@24_c7270a9cc4659e222f0fb854cace474f/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../skybridge/bin/run.js" "$@"
@@ -10,9 +10,9 @@ case `uname` in
10
10
  esac
11
11
 
12
12
  if [ -z "$NODE_PATH" ]; then
13
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
13
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@24.10.9_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@24.10.9_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@24.10.9_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules"
14
14
  else
15
- export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@25.0.3_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
15
+ export NODE_PATH="/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@24.10.9_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/bin/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@24.10.9_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules/vite/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/vite@7.3.1_@types+node@24.10.9_jiti@2.6.1_lightningcss@1.30.2_terser@5.44.1_tsx@4.21.0_yaml@2.8.2/node_modules:/home/runner/work/skybridge/skybridge/node_modules/.pnpm/node_modules:$NODE_PATH"
16
16
  fi
17
17
  if [ -x "$basedir/node" ]; then
18
18
  exec "$basedir/node" "$basedir/../vite/bin/vite.js" "$@"
@@ -0,0 +1,5 @@
1
+ {
2
+ "watch": ["server/src"],
3
+ "ext": "ts,json",
4
+ "exec": "tsx server/src/index.ts"
5
+ }
@@ -11,21 +11,21 @@
11
11
  "inspector": "mcp-inspector http://localhost:3000/mcp"
12
12
  },
13
13
  "dependencies": {
14
- "@modelcontextprotocol/sdk": "^1.25.2",
15
- "cors": "^2.8.5",
14
+ "@modelcontextprotocol/sdk": "^1.25.3",
15
+ "cors": "^2.8.6",
16
16
  "express": "^5.2.1",
17
- "react": "^19.2.3",
18
- "react-dom": "^19.2.3",
17
+ "react": "^19.2.4",
18
+ "react-dom": "^19.2.4",
19
19
  "skybridge": ">=0.26.1 <1.0.0",
20
20
  "vite": "^7.3.1",
21
- "zod": "^4.3.5"
21
+ "zod": "^4.3.6"
22
22
  },
23
23
  "devDependencies": {
24
- "@modelcontextprotocol/inspector": "^0.18.0",
24
+ "@modelcontextprotocol/inspector": "^0.19.0",
25
25
  "@skybridge/devtools": ">=0.26.1 <1.0.0",
26
26
  "@types/cors": "^2.8.19",
27
27
  "@types/express": "^5.0.6",
28
- "@types/react": "^19.2.8",
28
+ "@types/react": "^19.2.10",
29
29
  "@types/react-dom": "^19.2.3",
30
30
  "@vitejs/plugin-react": "^5.1.2",
31
31
  "nodemon": "^3.1.11",
@@ -0,0 +1,42 @@
1
+ import path from "node:path";
2
+ import { fileURLToPath } from "node:url";
3
+ import cors from "cors";
4
+ import express, { type Express } from "express";
5
+ import { widgetsDevServer } from "skybridge/server";
6
+ import type { ViteDevServer } from "vite";
7
+ import { mcp } from "./middleware.js";
8
+ import server from "./server.js";
9
+
10
+ const app = express() as Express & { vite: ViteDevServer };
11
+
12
+ app.use(express.json());
13
+
14
+ app.use(mcp(server));
15
+
16
+ const env = process.env.NODE_ENV || "development";
17
+
18
+ if (env !== "production") {
19
+ const { devtoolsStaticServer } = await import("@skybridge/devtools");
20
+ app.use(await devtoolsStaticServer());
21
+ app.use(await widgetsDevServer());
22
+ }
23
+
24
+ if (env === "production") {
25
+ const __filename = fileURLToPath(import.meta.url);
26
+ const __dirname = path.dirname(__filename);
27
+
28
+ app.use("/assets", cors());
29
+ app.use("/assets", express.static(path.join(__dirname, "assets")));
30
+ }
31
+
32
+ app.listen(3000, (error) => {
33
+ if (error) {
34
+ console.error("Failed to start server:", error);
35
+ process.exit(1);
36
+ }
37
+ });
38
+
39
+ process.on("SIGINT", async () => {
40
+ console.log("Server shutdown complete");
41
+ process.exit(0);
42
+ });
@@ -0,0 +1,54 @@
1
+ import { StreamableHTTPServerTransport } from "@modelcontextprotocol/sdk/server/streamableHttp.js";
2
+ import type { NextFunction, Request, Response } from "express";
3
+
4
+ import type { McpServer } from "skybridge/server";
5
+
6
+ export const mcp =
7
+ (server: McpServer) =>
8
+ async (req: Request, res: Response, next: NextFunction) => {
9
+ // Only handle requests to the /mcp path
10
+ if (req.path !== "/mcp") {
11
+ return next();
12
+ }
13
+
14
+ if (req.method === "POST") {
15
+ try {
16
+ const transport = new StreamableHTTPServerTransport({
17
+ sessionIdGenerator: undefined,
18
+ });
19
+
20
+ res.on("close", () => {
21
+ transport.close();
22
+ });
23
+
24
+ await server.connect(transport);
25
+
26
+ await transport.handleRequest(req, res, req.body);
27
+ } catch (error) {
28
+ console.error("Error handling MCP request:", error);
29
+ if (!res.headersSent) {
30
+ res.status(500).json({
31
+ jsonrpc: "2.0",
32
+ error: {
33
+ code: -32603,
34
+ message: "Internal server error",
35
+ },
36
+ id: null,
37
+ });
38
+ }
39
+ }
40
+ } else if (req.method === "GET" || req.method === "DELETE") {
41
+ res.writeHead(405).end(
42
+ JSON.stringify({
43
+ jsonrpc: "2.0",
44
+ error: {
45
+ code: -32000,
46
+ message: "Method not allowed.",
47
+ },
48
+ id: null,
49
+ }),
50
+ );
51
+ } else {
52
+ next();
53
+ }
54
+ };
@@ -4,8 +4,11 @@
4
4
  display: flex;
5
5
  justify-content: center;
6
6
  align-items: center;
7
- height: 100%;
7
+ min-height: 100%;
8
+ max-height: 100%;
9
+ overflow: hidden;
8
10
  padding: 1rem;
11
+ box-sizing: border-box;
9
12
  }
10
13
 
11
14
  .ball {