From 81a3c0d1f86d6b2befd746c8e7fa3ab10fc8fb86 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Mon, 1 May 2023 16:06:09 +0900 Subject: [PATCH 1/3] chore: replace deprecated vercel entrypoint --- app/misc/vercel-entrypoint.ts | 46 +++++++++++++++++++++++++ package.json | 2 ++ pnpm-lock.yaml | 63 +++++++++++++++++++++++++++++++++++ 3 files changed, 111 insertions(+) create mode 100644 app/misc/vercel-entrypoint.ts diff --git a/app/misc/vercel-entrypoint.ts b/app/misc/vercel-entrypoint.ts new file mode 100644 index 0000000000..8e841b659e --- /dev/null +++ b/app/misc/vercel-entrypoint.ts @@ -0,0 +1,46 @@ +import type { IncomingMessage, ServerResponse } from "node:http"; +import { tinyassert } from "@hiogawa/utils"; +import * as build from "@remix-run/dev/server-build"; +import { createRequestHandler } from "@remix-run/express"; + +// borrow "@remix-run/express" adapter for vercel serverless deployment +// since "@remix-run/vercel" is going to deprecate (https://github.com/remix-run/remix/pull/5964) +// in favor of vercel's official integration (https://github.com/vercel/vercel/blob/da046d85de8121e6c851af8e51aff81984646e0b/packages/remix/defaults/server-node.mjs) + +const handleRequest = createRequestHandler({ build }); + +export default async function vercelEntrypoint( + req: IncomingMessage, + res: ServerResponse +): Promise { + // a few patches to fake express style Request/Response + // https://github.com/remix-run/remix/blob/71e94aa8a84cd9b63669dc9d826cbcbb0d2195a1/packages/remix-express/server.ts + // https://github.com/remix-run/remix/blob/71e94aa8a84cd9b63669dc9d826cbcbb0d2195a1/packages/remix-vercel/server.ts + + const req2 = req as any; + const res2 = res as any; + + req2.get = (arg: unknown) => { + tinyassert(arg === "host"); + return req.headers["x-forwarded-host"] || req.headers["host"]; + }; + + req2.protocol = req.headers["x-forwarded-proto"] || "https"; + + res2.status = (arg: unknown) => { + tinyassert(typeof arg === "number"); + res.statusCode = arg; + }; + + res2.append = (k: unknown, v: unknown) => { + tinyassert(typeof k === "string"); + tinyassert(Array.isArray(v)); + res.setHeader(k, v); + }; + + let error: unknown; + await handleRequest(req2, res2, (e) => (error = e)); + if (error) { + throw error; + } +} diff --git a/package.json b/package.json index 159122988e..6e348e4a8f 100644 --- a/package.json +++ b/package.json @@ -46,6 +46,7 @@ "@hiogawa/utils": "1.4.2-pre.4", "@hiogawa/utils-react": "1.2.1-pre.4", "@js-temporal/polyfill": "^0.4.3", + "@remix-run/express": "1.15.0", "@remix-run/node": "1.15.0", "@remix-run/react": "1.15.0", "@remix-run/server-runtime": "1.15.0", @@ -82,6 +83,7 @@ "@remix-run/serve": "1.15.0", "@tsconfig/strictest": "^1.0.2", "@types/bcryptjs": "^2.4.2", + "@types/express": "^4.17.17", "@types/fs-extra": "^9.0.13", "@types/node": "^16", "@types/qs": "^6.9.7", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 886d8064bc..1ac689139e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -33,6 +33,9 @@ dependencies: '@js-temporal/polyfill': specifier: ^0.4.3 version: 0.4.3 + '@remix-run/express': + specifier: 1.15.0 + version: 1.15.0(express@4.17.3) '@remix-run/node': specifier: 1.15.0 version: 1.15.0(patch_hash=z6mxtllsu73w4y6xnddlyl6j6y) @@ -137,6 +140,9 @@ devDependencies: '@types/bcryptjs': specifier: ^2.4.2 version: 2.4.2 + '@types/express': + specifier: ^4.17.17 + version: 4.17.17 '@types/fs-extra': specifier: ^9.0.13 version: 9.0.13 @@ -2591,6 +2597,13 @@ packages: resolution: {integrity: sha512-LiMQ6EOPob/4yUL66SZzu6Yh77cbzJFYll+ZfaPiPPFswtIlA/Fs1MzdKYA7JApHU49zQTbJGX3PDmCpIdDBRQ==} dev: true + /@types/body-parser@1.19.2: + resolution: {integrity: sha512-ALYone6pm6QmwZoAgeyNksccT9Q4AWZQ6PvfwR37GT6r6FWUPguq6sUmNGSMV2Wr761oQoBxwGGa6DR5o1DC9g==} + dependencies: + '@types/connect': 3.4.35 + '@types/node': 16.11.35 + dev: true + /@types/cacheable-request@6.0.3: resolution: {integrity: sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==} dependencies: @@ -2609,6 +2622,12 @@ packages: resolution: {integrity: sha512-KnRanxnpfpjUTqTCXslZSEdLfXExwgNxYPdiO2WGUj8+HDjFi8R3k5RVKPeSCzLjCcshCAtVO2QBbVuAV4kTnw==} dev: true + /@types/connect@3.4.35: + resolution: {integrity: sha512-cdeYyv4KWoEgpBISTxWvqYsVy444DOqehiF3fM3ne10AmJ62RSyNkUnxMJXHQWRQQX2eR94m5y1IZyDwBjV9FQ==} + dependencies: + '@types/node': 16.11.35 + dev: true + /@types/cookie@0.4.1: resolution: {integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==} @@ -2630,6 +2649,24 @@ packages: /@types/estree@1.0.0: resolution: {integrity: sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==} + /@types/express-serve-static-core@4.17.34: + resolution: {integrity: sha512-fvr49XlCGoUj2Pp730AItckfjat4WNb0lb3kfrLWffd+RLeoGAMsq7UOy04PAPtoL01uKwcp6u8nhzpgpDYr3w==} + dependencies: + '@types/node': 16.11.35 + '@types/qs': 6.9.7 + '@types/range-parser': 1.2.4 + '@types/send': 0.17.1 + dev: true + + /@types/express@4.17.17: + resolution: {integrity: sha512-Q4FmmuLGBG58btUnfS1c1r/NQdlp3DMfGDGig8WhfpA2YRUtEkxAjkZb0yvplJGYdF1fsQ81iMDcH24sSCNC/Q==} + dependencies: + '@types/body-parser': 1.19.2 + '@types/express-serve-static-core': 4.17.34 + '@types/qs': 6.9.7 + '@types/serve-static': 1.15.1 + dev: true + /@types/fs-extra@9.0.13: resolution: {integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==} dependencies: @@ -2667,6 +2704,14 @@ packages: /@types/mdurl@1.0.2: resolution: {integrity: sha512-eC4U9MlIcu2q0KQmXszyn5Akca/0jrQmwDRgpAMJai7qBWq4amIQhZyNau4VYGtCeALvW1/NtjzJJ567aZxfKA==} + /@types/mime@1.3.2: + resolution: {integrity: sha512-YATxVxgRqNH6nHEIsvg6k2Boc1JHI9ZbH5iWFFv/MTkchz3b1ieGDa5T0a9RznNdI0KhVbdbWSN+KWWrQZRxTw==} + dev: true + + /@types/mime@3.0.1: + resolution: {integrity: sha512-Y4XFY5VJAuw0FgAqPNd6NNoV44jbq9Bz2L7Rh/J6jLTiHBSBJa9fxqQIvkIld4GsoDOcCbvzOUAbLPsSKKg+uA==} + dev: true + /@types/minimatch@5.1.2: resolution: {integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==} @@ -2690,6 +2735,10 @@ packages: resolution: {integrity: sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==} dev: true + /@types/range-parser@1.2.4: + resolution: {integrity: sha512-EEhsLsD6UsDM1yFhAvy0Cjr6VwmpMWqFBCb9w07wVugF7w9nfajxLuVmngTIpgS6svCnm6Vaw+MZhoDCKnOfsw==} + dev: true + /@types/react-dom@18.0.11: resolution: {integrity: sha512-O38bPbI2CWtgw/OoQoY+BRelw7uysmXbWvw3nLWO21H1HSh+GOlqPuXshJfjmpNlKiiSDG9cc1JZAaMmVdcTlw==} dependencies: @@ -2711,6 +2760,20 @@ packages: /@types/scheduler@0.16.2: resolution: {integrity: sha512-hppQEBDmlwhFAXKJX2KnWLYu5yMfi91yazPb2l+lbJiwW+wdo1gNeRA+3RgNSO39WYX2euey41KEwnqesU2Jew==} + /@types/send@0.17.1: + resolution: {integrity: sha512-Cwo8LE/0rnvX7kIIa3QHCkcuF21c05Ayb0ZfxPiv0W8VRiZiNW/WuRupHKpqqGVGf7SUA44QSOUKaEd9lIrd/Q==} + dependencies: + '@types/mime': 1.3.2 + '@types/node': 16.11.35 + dev: true + + /@types/serve-static@1.15.1: + resolution: {integrity: sha512-NUo5XNiAdULrJENtJXZZ3fHtfMolzZwczzBbnAeBbqBwG+LaG6YaJtuwzwGSQZ2wsCrxjEhNNjAkKigy3n8teQ==} + dependencies: + '@types/mime': 3.0.1 + '@types/node': 16.11.35 + dev: true + /@types/unist@2.0.6: resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==} From c92967d7894d7878a69e30b72b787ed6ae5db3c1 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Mon, 1 May 2023 19:47:17 +0900 Subject: [PATCH 2/3] fix: fix vercel-entrypoint --- app/misc/vercel-entrypoint.ts | 7 ++++--- remix.config.js | 2 +- 2 files changed, 5 insertions(+), 4 deletions(-) diff --git a/app/misc/vercel-entrypoint.ts b/app/misc/vercel-entrypoint.ts index 8e841b659e..99bf1a6443 100644 --- a/app/misc/vercel-entrypoint.ts +++ b/app/misc/vercel-entrypoint.ts @@ -1,5 +1,5 @@ import type { IncomingMessage, ServerResponse } from "node:http"; -import { tinyassert } from "@hiogawa/utils"; +import { tinyassert, typedBoolean } from "@hiogawa/utils"; import * as build from "@remix-run/dev/server-build"; import { createRequestHandler } from "@remix-run/express"; @@ -34,8 +34,9 @@ export default async function vercelEntrypoint( res2.append = (k: unknown, v: unknown) => { tinyassert(typeof k === "string"); - tinyassert(Array.isArray(v)); - res.setHeader(k, v); + tinyassert(typeof v === "string"); + const vs = [res.getHeader(k), v].flat().filter(typedBoolean).map(String); + res.setHeader(k, vs); }; let error: unknown; diff --git a/remix.config.js b/remix.config.js index 92240d8637..ce38332ead 100644 --- a/remix.config.js +++ b/remix.config.js @@ -6,7 +6,7 @@ module.exports = { serverBuildPath: `build/remix/${env}/server/index.js`, assetsBuildDirectory: `build/remix/${env}/public/build`, publicPath: process.env.BUILD_VERCEL ? undefined : `/build/remix/${env}/public/build`, - server: process.env.BUILD_VERCEL ? "./app/misc/vercel.ts" : undefined, + server: process.env.BUILD_VERCEL ? "./app/misc/vercel-entrypoint.ts" : undefined, future: { v2_meta: true, v2_errorBoundary: true, From 1daecfabcb6ba57adc44baad3e8f81bad4914488 Mon Sep 17 00:00:00 2001 From: Hiroshi Ogawa Date: Mon, 1 May 2023 19:48:21 +0900 Subject: [PATCH 3/3] chore: remove old --- app/misc/vercel.ts | 6 --- package.json | 2 - pnpm-lock.yaml | 97 +++++++++------------------------------------- 3 files changed, 18 insertions(+), 87 deletions(-) delete mode 100644 app/misc/vercel.ts diff --git a/app/misc/vercel.ts b/app/misc/vercel.ts deleted file mode 100644 index 0da9ee5529..0000000000 --- a/app/misc/vercel.ts +++ /dev/null @@ -1,6 +0,0 @@ -import * as build from "@remix-run/dev/server-build"; -import { createRequestHandler } from "@remix-run/vercel"; - -// TODO: @remix-run/vercel is deprecated https://github.com/remix-run/remix/pull/5964 - -export default createRequestHandler({ build }); diff --git a/package.json b/package.json index 6e348e4a8f..78bad0a227 100644 --- a/package.json +++ b/package.json @@ -51,13 +51,11 @@ "@remix-run/react": "1.15.0", "@remix-run/server-runtime": "1.15.0", "@remix-run/v1-route-convention": "^0.1.1", - "@remix-run/vercel": "1.15.0", "@tanstack/react-query": "^4.28.0", "@tanstack/react-query-devtools": "^4.28.0", "@tanstack/react-virtual": "3.0.0-beta.54", "@trpc/client": "^10.19.1", "@trpc/server": "^10.19.1", - "@vercel/node": "^1.15.3", "bcryptjs": "^2.4.3", "drizzle-orm": "^0.22.0", "echarts": "^5.4.1", diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 1ac689139e..b5eeb0990f 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -48,9 +48,6 @@ dependencies: '@remix-run/v1-route-convention': specifier: ^0.1.1 version: 0.1.1(@remix-run/dev@1.15.0) - '@remix-run/vercel': - specifier: 1.15.0 - version: 1.15.0(@vercel/node@1.15.3) '@tanstack/react-query': specifier: ^4.28.0 version: 4.28.0(react-dom@18.2.0)(react@18.2.0) @@ -66,9 +63,6 @@ dependencies: '@trpc/server': specifier: ^10.19.1 version: 10.19.1 - '@vercel/node': - specifier: ^1.15.3 - version: 1.15.3 bcryptjs: specifier: ^2.4.3 version: 2.4.3 @@ -101,7 +95,7 @@ dependencies: version: 7.43.7(react@18.2.0) react-hot-toast: specifier: ^2.4.0 - version: 2.4.0(react-dom@18.2.0)(react@18.2.0) + version: 2.4.0(csstype@3.0.11)(react-dom@18.2.0)(react@18.2.0) react-remove-scroll: specifier: ^2.5.5 version: 2.5.5(@types/react@18.0.28)(react@18.2.0) @@ -121,7 +115,7 @@ devDependencies: version: 1.0.1(prettier@2.8.4)(typescript@4.9.5) '@hiogawa/unocss-preset-antd': specifier: 2.2.1-pre.2 - version: 2.2.1-pre.2(unocss@0.50.6) + version: 2.2.1-pre.2(@unocss/preset-uno@0.50.6)(unocss@0.50.6) '@iconify-json/ri': specifier: ^1.1.7 version: 1.1.7 @@ -214,7 +208,7 @@ devDependencies: version: 4.9.5 unocss: specifier: ^0.50.6 - version: 0.50.6(vite@4.2.0) + version: 0.50.6(postcss@8.4.23)(vite@4.2.0) vite: specifier: ^4.2.0 version: 4.2.0(@types/node@16.11.35) @@ -2122,15 +2116,16 @@ packages: typescript: 4.9.5 dev: true - /@hiogawa/unocss-preset-antd@2.2.1-pre.2(unocss@0.50.6): + /@hiogawa/unocss-preset-antd@2.2.1-pre.2(@unocss/preset-uno@0.50.6)(unocss@0.50.6): resolution: {integrity: sha512-IyLBst49BiscFZ+lcO1d2fJ7S7YhEK+ikgZNymtgbcMYhIbgzY6Qju4FW5BpBivQ3csMblzvgz+sfJDaXC0viw==} peerDependencies: '@unocss/preset-uno': '*' unocss: '*' dependencies: + '@unocss/preset-uno': 0.50.6 '@unocss/reset': 0.48.5 local-pkg: 0.4.3 - unocss: 0.50.6(vite@4.2.0) + unocss: 0.50.6(postcss@8.4.23)(vite@4.2.0) dev: true /@hiogawa/utils-react@1.2.1-pre.4(react@18.2.0): @@ -2428,16 +2423,6 @@ packages: minimatch: 7.4.6 dev: false - /@remix-run/vercel@1.15.0(@vercel/node@1.15.3): - resolution: {integrity: sha512-jrJADuNALU76ZV9ioZGSULlpc13D8qMAx7JjiIVQZagSQQdv1rGHxNLX08WyTDfORIcL9bzHDkXkZFJIxj8eVw==} - engines: {node: '>=14'} - peerDependencies: - '@vercel/node': ^1.8.3 || ^2.4.0 - dependencies: - '@remix-run/node': 1.15.0(patch_hash=z6mxtllsu73w4y6xnddlyl6j6y) - '@vercel/node': 1.15.3 - dev: false - /@remix-run/web-blob@3.0.4: resolution: {integrity: sha512-AfegzZvSSDc+LwnXV+SwROTrDtoLiPxeFW+jxgvtDAnkuCX1rrzmVJ6CzqZ1Ai0bVfmJadkG5GxtAfYclpPmgw==} dependencies: @@ -2723,6 +2708,7 @@ packages: /@types/node@17.0.21: resolution: {integrity: sha512-DBZCJbhII3r90XbQxI8Y9IjjiiOGlZ0Hr32omXIZvwwZ7p4DMMXGrKXVyPfuoBOri9XNtL0UK69jYIBIsRX3QQ==} + dev: true /@types/parse-json@4.0.0: resolution: {integrity: sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==} @@ -2829,9 +2815,11 @@ packages: sirv: 2.0.2 dev: true - /@unocss/postcss@0.50.6: + /@unocss/postcss@0.50.6(postcss@8.4.23): resolution: {integrity: sha512-pRPBVPmwjsVu3v1T0hQuqq3L4K74Wobo6pGDypvK/MuzWdWDhHiktWwmXGNxlYSWK7mGJBIa+vI10pp4e15OUw==} engines: {node: '>=14'} + peerDependencies: + postcss: ^8.4.21 dependencies: '@unocss/config': 0.50.6 '@unocss/core': 0.50.6 @@ -3005,19 +2993,6 @@ packages: /@vanilla-extract/private@1.0.3: resolution: {integrity: sha512-17kVyLq3ePTKOkveHxXuIJZtGYs+cSoev7BlP+Lf4916qfDhk/HBjvlYDe8egrea7LNPHKwSZJK/bzZC+Q6AwQ==} - /@vercel/node-bridge@2.2.2: - resolution: {integrity: sha512-haGBC8noyA5BfjCRXRH+VIkHCDVW5iD5UX24P2nOdilwUxI4qWsattS/co8QBGq64XsNLRAMdM5pQUE3zxkF9Q==} - dev: false - - /@vercel/node@1.15.3: - resolution: {integrity: sha512-eKm7/9UThh7TIdt7Rpcw40uMkWMQMo13G0E4g7Di2po+RSDKuD2G2sUwTRv8TzrjdB53rrqnuNo4a7xvGApBxA==} - dependencies: - '@types/node': 17.0.21 - '@vercel/node-bridge': 2.2.2 - ts-node: 8.9.1(typescript@4.3.4) - typescript: 4.3.4 - dev: false - /@vitejs/plugin-react@3.1.0(vite@4.2.0): resolution: {integrity: sha512-AfgcRL8ZBhAlc3BFdigClmTUMISmmzHn7sB2h9U1odvc5U/MjWXsAaz18b/WoppUTDBzxOJwo2VdClfUcItu9g==} engines: {node: ^14.18.0 || >=16.0.0} @@ -3175,10 +3150,6 @@ packages: normalize-path: 3.0.0 picomatch: 2.3.1 - /arg@4.1.3: - resolution: {integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==} - dev: false - /arg@5.0.2: resolution: {integrity: sha512-PYjyFOLKQ9y57JvQ6QLo8dAgNqswh8M1RMJYdQduT6xbWSgK36P/Z/v+p888pM69jMMfS8Xd8F6I1kQ/I9HUGg==} @@ -3883,11 +3854,6 @@ packages: resolution: {integrity: sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==} dev: false - /diff@4.0.2: - resolution: {integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==} - engines: {node: '>=0.3.1'} - dev: false - /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} engines: {node: '>=0.3.1'} @@ -4903,10 +4869,12 @@ packages: pinkie-promise: 2.0.1 dev: true - /goober@2.1.12: + /goober@2.1.12(csstype@3.0.11): resolution: {integrity: sha512-yXHAvO08FU1JgTXX6Zn6sYCUFfB/OJSX8HHjDSgerZHZmFKAb08cykp5LBw5QnmyMcZyPRMqkdyHUSSzge788Q==} peerDependencies: csstype: ^3.0.10 + dependencies: + csstype: 3.0.11 dev: false /gopd@1.0.1: @@ -5735,10 +5703,6 @@ packages: semver: 6.3.0 dev: true - /make-error@1.3.6: - resolution: {integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==} - dev: false - /markdown-extensions@1.1.1: resolution: {integrity: sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==} engines: {node: '>=0.10.0'} @@ -6948,14 +6912,14 @@ packages: react: 18.2.0 dev: false - /react-hot-toast@2.4.0(react-dom@18.2.0)(react@18.2.0): + /react-hot-toast@2.4.0(csstype@3.0.11)(react-dom@18.2.0)(react@18.2.0): resolution: {integrity: sha512-qnnVbXropKuwUpriVVosgo8QrB+IaPJCpL8oBI6Ov84uvHZ5QQcTp2qg6ku2wNfgJl6rlQXJIQU5q+5lmPOutA==} engines: {node: '>=10'} peerDependencies: react: '>=16' react-dom: '>=16' dependencies: - goober: 2.1.12 + goober: 2.1.12(csstype@3.0.11) react: 18.2.0 react-dom: 18.2.0(react@18.2.0) transitivePeerDependencies: @@ -7838,21 +7802,6 @@ packages: code-block-writer: 11.0.3 dev: true - /ts-node@8.9.1(typescript@4.3.4): - resolution: {integrity: sha512-yrq6ODsxEFTLz0R3BX2myf0WBCSQh9A+py8PBo1dCzWIOcvisbyH6akNKqDHMgXePF2kir5mm5JXJTH3OUJYOQ==} - engines: {node: '>=6.0.0'} - hasBin: true - peerDependencies: - typescript: '>=2.7' - dependencies: - arg: 4.1.3 - diff: 4.0.2 - make-error: 1.3.6 - source-map-support: 0.5.21 - typescript: 4.3.4 - yn: 3.1.1 - dev: false - /ts-prune@0.10.3: resolution: {integrity: sha512-iS47YTbdIcvN8Nh/1BFyziyUqmjXz7GVzWu02RaZXqb+e/3Qe1B7IQ4860krOeCGUeJmterAlaM2FRH0Ue0hjw==} hasBin: true @@ -7910,12 +7859,6 @@ packages: is-typed-array: 1.1.10 dev: true - /typescript@4.3.4: - resolution: {integrity: sha512-uauPG7XZn9F/mo+7MrsRjyvbxFpzemRjKEZXS4AK83oP2KKOJPvb+9cO/gmnv8arWZvhnjVOXz7B49m1l0e9Ew==} - engines: {node: '>=4.2.0'} - hasBin: true - dev: false - /typescript@4.9.5: resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==} engines: {node: '>=4.2.0'} @@ -8034,7 +7977,7 @@ packages: resolution: {integrity: sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==} engines: {node: '>= 10.0.0'} - /unocss@0.50.6(vite@4.2.0): + /unocss@0.50.6(postcss@8.4.23)(vite@4.2.0): resolution: {integrity: sha512-7cKiIB/ssAPvCDUcFMs0jm0FzIyQKfgIjUzBYZ5dVFthOvN5dcFh7bCZE9dIM862n7oW8FjbkTxwdTbRqqJQVQ==} engines: {node: '>=14'} peerDependencies: @@ -8046,7 +7989,7 @@ packages: '@unocss/astro': 0.50.6(vite@4.2.0) '@unocss/cli': 0.50.6 '@unocss/core': 0.50.6 - '@unocss/postcss': 0.50.6 + '@unocss/postcss': 0.50.6(postcss@8.4.23) '@unocss/preset-attributify': 0.50.6 '@unocss/preset-icons': 0.50.6 '@unocss/preset-mini': 0.50.6 @@ -8062,6 +8005,7 @@ packages: '@unocss/transformer-variant-group': 0.50.6 '@unocss/vite': 0.50.6(vite@4.2.0) transitivePeerDependencies: + - postcss - rollup - supports-color - vite @@ -8518,11 +8462,6 @@ packages: yargs-parser: 20.2.9 dev: true - /yn@3.1.1: - resolution: {integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==} - engines: {node: '>=6'} - dev: false - /yocto-queue@0.1.0: resolution: {integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==} engines: {node: '>=10'}