From e553b1e52377bd7bc8afc6b54cd8dace25bb5196 Mon Sep 17 00:00:00 2001 From: Ryan Carniato Date: Fri, 8 Mar 2024 12:03:23 -0800 Subject: [PATCH] 0.7.x - A bunch of small changes (#1365) * transparent errors and support http status forwarding in server fns * fix FS router circular dep by moving import * update config to anticipate Vite updates, clearer experimental features, routesDir * feat: implement getServerFunctionMeta Refs: nksaraf/vinxi#51 * add serverFunctionMeta * update Vinxi and Solid Router * fix #1366 islands mode reference * Update middleware.mdx (#1367) See https://github.com/solidjs/solid-start/blob/main/packages/start/config/index.d.ts#L11 * fix types for latest updates * don't import app on server for SSR false when SingleFlight false * fix(dev-overlay): Code view breaking if the file extension was mjs or cjs (#1368) * fix(dev-overlay): Code view breaking if the file extension was mjs or cjs * chore: add missing changeset * add `.` notation to escape layouts in FS routes * add back different content type parsing in case middleware etc.. * remove support for event symbol autoforwarding * update docs * fix: script invocation error for "create-solid@latest" (#1369) * More docs updates * remove solid-start-mdx from changeset * revert vite alignment until we know more, add server option to types --------- Co-authored-by: Katja Lutz Co-authored-by: Feynman Liang Co-authored-by: Gabriel Miranda Co-authored-by: Arunava Ghosh --- .changeset/config.json | 3 +- .changeset/fair-dingos-push.md | 5 + .changeset/funny-spies-care.md | 5 + .changeset/kind-mirrors-trade.md | 5 + .changeset/plenty-fans-cheer.md | 5 + .changeset/poor-dolls-exercise.md | 5 + .changeset/real-moles-hug.md | 5 + .changeset/short-jobs-run.md | 5 + .changeset/sixty-worms-scream.md | 5 + .changeset/slimy-emus-decide.md | 5 + .changeset/spicy-knives-sleep.md | 5 + .changeset/strong-chefs-wash.md | 5 + .changeset/tiny-crews-work.md | 5 + .changeset/wet-garlics-applaud.md | 5 + README.md | 2 +- app.config.ts | 2 +- docs/app.tsx | 2 +- docs/routes/advanced/middleware.mdx | 6 +- docs/routes/advanced/server-runtime.md | 51 -- docs/routes/api/FileRoutes.md | 6 +- docs/routes/api/RequestEvent.md | 75 ++ docs/routes/api/RequestEventLocals.md | 21 - docs/routes/api/ReturnResponses.md | 18 +- docs/routes/api/app-config.md | 4 +- docs/routes/api/app.md | 2 +- docs/routes/api/server.md | 23 + docs/routes/core-concepts/actions.md | 8 +- docs/routes/core-concepts/api-routes.md | 2 +- docs/routes/core-concepts/routing.md | 29 +- docs/routes/getting-started/project-setup.mdx | 2 +- examples/bare/package.json | 2 +- examples/basic/package.json | 4 +- examples/basic/src/app.tsx | 2 +- examples/experiments/package.json | 4 +- examples/experiments/src/app.tsx | 2 +- examples/experiments/src/routes/index.tsx | 6 +- .../experiments/src/routes/test.[name].tsx | 10 + .../src/routes/test.[name]/home.tsx | 3 + .../experiments/src/routes/test.nolayout.tsx | 3 + examples/hackernews/package.json | 4 +- examples/hackernews/src/app.tsx | 2 +- examples/notes/package.json | 4 +- examples/notes/src/app.tsx | 2 +- examples/todomvc/package.json | 4 +- examples/todomvc/src/app.tsx | 2 +- examples/with-auth/package.json | 4 +- examples/with-auth/src/app.tsx | 2 +- examples/with-mdx/package.json | 4 +- examples/with-mdx/src/app.tsx | 2 +- examples/with-prisma/package.json | 4 +- examples/with-prisma/src/app.tsx | 2 +- examples/with-solid-styled/package.json | 4 +- examples/with-solid-styled/src/app.tsx | 2 +- examples/with-tailwindcss/package.json | 4 +- examples/with-tailwindcss/src/app.tsx | 2 +- examples/with-trpc/package.json | 4 +- examples/with-trpc/src/app.tsx | 2 +- examples/with-unocss/package.json | 4 +- examples/with-unocss/src/app.tsx | 2 +- examples/with-vitest/package.json | 4 +- examples/with-vitest/src/app.tsx | 2 +- package.json | 4 +- packages/start/client/{index.tsx => index.ts} | 2 - .../start/client/{islands.tsx => islands.ts} | 0 .../start/client/spa/{index.tsx => index.ts} | 0 packages/start/config/index.d.ts | 15 +- packages/start/config/index.js | 28 +- packages/start/config/server-components.js | 2 +- packages/start/config/server-fns-runtime.ts | 3 + packages/start/config/server-handler.ts | 29 +- packages/start/config/server-runtime.ts | 8 +- packages/start/middleware/index.ts | 10 +- packages/start/package.json | 33 +- .../FileRoutes.tsx => router/FileRoutes.ts} | 2 +- packages/start/router/index.ts | 1 + .../lazyRoute.tsx => router/lazyRoute.ts} | 2 - packages/start/{shared => router}/routes.ts | 2 +- packages/start/server/fetchEvent.ts | 32 +- packages/start/server/handler.ts | 15 +- packages/start/server/{index.tsx => index.ts} | 4 +- packages/start/server/pageEvent.ts | 6 +- packages/start/server/serverFunction.tsx | 6 + .../start/server/spa/{index.tsx => index.ts} | 2 - packages/start/server/types.ts | 9 +- .../start/shared/dev-overlay/CodeView.tsx | 8 +- packages/start/shared/{index.tsx => index.ts} | 3 - pnpm-lock.yaml | 678 ++++++------------ 87 files changed, 618 insertions(+), 709 deletions(-) create mode 100644 .changeset/fair-dingos-push.md create mode 100644 .changeset/funny-spies-care.md create mode 100644 .changeset/kind-mirrors-trade.md create mode 100644 .changeset/plenty-fans-cheer.md create mode 100644 .changeset/poor-dolls-exercise.md create mode 100644 .changeset/real-moles-hug.md create mode 100644 .changeset/short-jobs-run.md create mode 100644 .changeset/sixty-worms-scream.md create mode 100644 .changeset/slimy-emus-decide.md create mode 100644 .changeset/spicy-knives-sleep.md create mode 100644 .changeset/strong-chefs-wash.md create mode 100644 .changeset/tiny-crews-work.md create mode 100644 .changeset/wet-garlics-applaud.md delete mode 100644 docs/routes/advanced/server-runtime.md create mode 100644 docs/routes/api/RequestEvent.md delete mode 100644 docs/routes/api/RequestEventLocals.md create mode 100644 examples/experiments/src/routes/test.[name].tsx create mode 100644 examples/experiments/src/routes/test.[name]/home.tsx create mode 100644 examples/experiments/src/routes/test.nolayout.tsx rename packages/start/client/{index.tsx => index.ts} (68%) rename packages/start/client/{islands.tsx => islands.ts} (100%) rename packages/start/client/spa/{index.tsx => index.ts} (100%) rename packages/start/{shared/FileRoutes.tsx => router/FileRoutes.ts} (96%) create mode 100644 packages/start/router/index.ts rename packages/start/{shared/lazyRoute.tsx => router/lazyRoute.ts} (97%) rename packages/start/{shared => router}/routes.ts (98%) rename packages/start/server/{index.tsx => index.ts} (66%) create mode 100644 packages/start/server/serverFunction.tsx rename packages/start/server/spa/{index.tsx => index.ts} (71%) rename packages/start/shared/{index.tsx => index.ts} (66%) diff --git a/.changeset/config.json b/.changeset/config.json index 9c107e715..6e6d92553 100644 --- a/.changeset/config.json +++ b/.changeset/config.json @@ -20,6 +20,7 @@ "example-with-tailwindcss", "example-with-trpc", "example-with-unocss", - "example-with-vitest" + "example-with-vitest", + "solid-start-mdx" ] } diff --git a/.changeset/fair-dingos-push.md b/.changeset/fair-dingos-push.md new file mode 100644 index 000000000..6f0a86426 --- /dev/null +++ b/.changeset/fair-dingos-push.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +fix types for latest updates diff --git a/.changeset/funny-spies-care.md b/.changeset/funny-spies-care.md new file mode 100644 index 000000000..69e2e8e83 --- /dev/null +++ b/.changeset/funny-spies-care.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": minor +--- + +fix FS router circular dep by moving import diff --git a/.changeset/kind-mirrors-trade.md b/.changeset/kind-mirrors-trade.md new file mode 100644 index 000000000..6f66472f7 --- /dev/null +++ b/.changeset/kind-mirrors-trade.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +Fix dev overlay's CodeView not working with `mjs` or `cjs` files diff --git a/.changeset/plenty-fans-cheer.md b/.changeset/plenty-fans-cheer.md new file mode 100644 index 000000000..a83cb9cc8 --- /dev/null +++ b/.changeset/plenty-fans-cheer.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": minor +--- + +add `.` notation to escape layouts in FS routes diff --git a/.changeset/poor-dolls-exercise.md b/.changeset/poor-dolls-exercise.md new file mode 100644 index 000000000..115d2bdcf --- /dev/null +++ b/.changeset/poor-dolls-exercise.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +don't import app on server for SSR false when SingleFlight false diff --git a/.changeset/real-moles-hug.md b/.changeset/real-moles-hug.md new file mode 100644 index 000000000..08a7b5cce --- /dev/null +++ b/.changeset/real-moles-hug.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +add back different content type parsing in case middleware etc.. diff --git a/.changeset/short-jobs-run.md b/.changeset/short-jobs-run.md new file mode 100644 index 000000000..7d5c30d82 --- /dev/null +++ b/.changeset/short-jobs-run.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": minor +--- + +update config to anticipate Vite updates, clearer experimental features, routesDir diff --git a/.changeset/sixty-worms-scream.md b/.changeset/sixty-worms-scream.md new file mode 100644 index 000000000..70ec0cbf1 --- /dev/null +++ b/.changeset/sixty-worms-scream.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": minor +--- + +remove support for event symbol autoforwarding diff --git a/.changeset/slimy-emus-decide.md b/.changeset/slimy-emus-decide.md new file mode 100644 index 000000000..36db254a1 --- /dev/null +++ b/.changeset/slimy-emus-decide.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": minor +--- + +add serverFunctionMeta diff --git a/.changeset/spicy-knives-sleep.md b/.changeset/spicy-knives-sleep.md new file mode 100644 index 000000000..ad7b8f3b4 --- /dev/null +++ b/.changeset/spicy-knives-sleep.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +update Vinxi and Solid Router diff --git a/.changeset/strong-chefs-wash.md b/.changeset/strong-chefs-wash.md new file mode 100644 index 000000000..0f8c4f966 --- /dev/null +++ b/.changeset/strong-chefs-wash.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": minor +--- + +transparent errors and support http status forwarding in server fns diff --git a/.changeset/tiny-crews-work.md b/.changeset/tiny-crews-work.md new file mode 100644 index 000000000..c2c8c5c77 --- /dev/null +++ b/.changeset/tiny-crews-work.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +revert vite alignment until we know more, add server option to types diff --git a/.changeset/wet-garlics-applaud.md b/.changeset/wet-garlics-applaud.md new file mode 100644 index 000000000..b5d1cd585 --- /dev/null +++ b/.changeset/wet-garlics-applaud.md @@ -0,0 +1,5 @@ +--- +"@solidjs/start": patch +--- + +fix #1366 islands mode reference diff --git a/README.md b/README.md index 50436e14e..ffaf3bec3 100644 --- a/README.md +++ b/README.md @@ -47,7 +47,7 @@ pnpm install pnpm dev # or with Bun -bunx create-solid@latest +bunx create solid@latest bun install bun run dev ``` diff --git a/app.config.ts b/app.config.ts index afd1d4320..bc3d65bb5 100644 --- a/app.config.ts +++ b/app.config.ts @@ -6,7 +6,7 @@ import { config } from "vinxi/plugins/config"; export default defineConfig({ appRoot: "./docs", extensions: ["mdx", "md"], - islands: true, + experimental: { islands: true }, server: { preset: "cloudflare_module", rollupConfig: { diff --git a/docs/app.tsx b/docs/app.tsx index 9decb6473..67c98348e 100644 --- a/docs/app.tsx +++ b/docs/app.tsx @@ -1,7 +1,7 @@ // @refresh reload import { MetaProvider, Title } from "@solidjs/meta"; import { A, Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { createMemo, For, Show, Suspense } from "solid-js"; import { MDXProvider } from "solid-mdx"; import "./components/index.css"; diff --git a/docs/routes/advanced/middleware.mdx b/docs/routes/advanced/middleware.mdx index aa83b302e..3d22b3a80 100644 --- a/docs/routes/advanced/middleware.mdx +++ b/docs/routes/advanced/middleware.mdx @@ -12,9 +12,7 @@ Middlewares may be included by passing file you specify in your start config. import { defineConfig } from "@solidjs/start/config"; export default defineConfig({ - start: { - middleware: "./src/middleware.ts" - } + middleware: "./src/middleware.ts" }); ``` @@ -32,4 +30,4 @@ export default createMiddleware({ }); ``` -Middleware supports 2 lifecycles: `onRequest` and `onBeforeResponse`. If you return a value from middleware it will respond with that, otherwise it will run the next one in the chain. \ No newline at end of file +Middleware supports 2 lifecycles: `onRequest` and `onBeforeResponse`. If you return a value from middleware it will respond with that, otherwise it will run the next one in the chain. diff --git a/docs/routes/advanced/server-runtime.md b/docs/routes/advanced/server-runtime.md deleted file mode 100644 index c5a3e5fed..000000000 --- a/docs/routes/advanced/server-runtime.md +++ /dev/null @@ -1,51 +0,0 @@ ---- -section: advanced -title: Server Runtime -order: 100 ---- - -# Server Runtime API - -SolidStart provides a server runtime API that allows you to write code that runs on the server. You don't have to worry about setting up the server itself. SolidStart takes care of that. Your job is to write the handler that is called when a request comes in. - -The handler is a function that takes a [FetchEvent][fetchevent] object and returns a [Response][response] object. These APIs are part of the [Fetch API](https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API). - -The idea is that you learn these APIs once and get a much larger bang for the buck by being able to use that knowledge across the stack to orchestrate your application. Let's see what the mental model created by these APIs is. - -Imagine a fetch client: - -```js -fetch("https://example.com") - .then(response => response.text()) - .then(text => console.log(text)); -``` - -Actually, lets use some async/await to make this cleaner: - -```js -const response = await fetch("https://example.com"); -const text = await response.text(); -console.log(text); -``` - -When you call `fetch` with a `string`, the `string` is used to create a URL Object. You can also use a [`Request`][request] object as a parameter. - -```js -const request = new Request("https://example.com"); -fetch(request) - .then(response => response.text()) - .then(text => console.log(text)); -``` - -Which can be expanded to something like this: - -```js -const request = new Request("https://example.com"); -const response: Response = await fetch(request); -const text: string = await response.text(); -console.log(text); -``` - -[request]: https://developer.mozilla.org/en-US/docs/Web/API/Request -[response]: https://developer.mozilla.org/en-US/docs/Web/API/Response -[fetchevent]: https://developer.mozilla.org/en-US/docs/Web/API/FetchEvent diff --git a/docs/routes/api/FileRoutes.md b/docs/routes/api/FileRoutes.md index dbeb620c3..d3cc66c24 100644 --- a/docs/routes/api/FileRoutes.md +++ b/docs/routes/api/FileRoutes.md @@ -13,7 +13,7 @@ active: true
```tsx twoslash -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; ; ``` @@ -32,7 +32,7 @@ Since `FileRoutes` returns a route configuration, it must be placed directly ins ```tsx twoslash {7-9} filename="app.tsx" import { Suspense } from "solid-js"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; export default function App() { return ( @@ -47,7 +47,7 @@ export default function App() { Be careful before you decide to remove the `FileRoutes` component from your `app.tsx` file. If you do, you will need to manually add all of your routes to the `` component. -You will still lose out on some optimizations that are enabled by file-system routing. While we will caution you however, always be free to explore what you can do. +You will still lose out on some optimizations that are enabled by file-system routing like preloaded script tags. While we will caution you however, always be free to explore what you can do. diff --git a/docs/routes/api/RequestEvent.md b/docs/routes/api/RequestEvent.md new file mode 100644 index 000000000..459fc5eb2 --- /dev/null +++ b/docs/routes/api/RequestEvent.md @@ -0,0 +1,75 @@ +--- +section: api +title: RequestEvent +order: 99 +subsection: Server +active: true +--- + +# RequestEvent + +Solid uses Async Local Storage on the server as a way of injecting the request context anywhere on the server. This is also the event that shows up in middleware. + +It can be retrieved via the `getRequestEvent` call from `"solid-js/web"`. That is right the core event is available in libraries as well but we extend it for SolidStart's purposes. + +```js +import { getRequestEvent } from "solid-js/web"; + +const event = getRequestEvent(); +``` + +## Request + +The most important property of the `RequestEvent` is `.request`. This is a Web [Request](https://developer.mozilla.org/en-US/docs/Web/API/Request) object that represents the current request to the server. You can access all the properties off of it like `url` and `headers`. The `body` usually does not need to be handled directly for things like server functions or rendering which already handle mapping it. + +```js +import { getRequestEvent } from "solid-js/web"; + +const event = getRequestEvent(); +if (event) { + const auth = event.request.headers.get("Authorization") +} +``` + +## Response + +The `RequestEvent` also can be used to stub out the Response. We extend the options that one would pass to the [`Response`](https://developer.mozilla.org/en-US/docs/Web/API/Response/Response#options) constructor. This is kept up to date so it can be used to read and write headers and status for the current response. + +```js +import { getRequestEvent } from "solid-js/web"; + +const event = getRequestEvent(); +if (event) { + event.response.headers.append("Set-Cookie", "foo=hello"); + event.response.status = 201; +} +``` + +### Returning a Response vs updating the Response on the event + +The even is considered global and lasts the life of the request. Therefore whether you are calling a server function on the server during SSR or via an RPC call setting values on `event.response` will reflect on that request. + +Whereas the returned response will only impact the response when it is an RPC call. This is important because some headers you might want to set you may not want to set for the whole page and only for the specific request. + +Keep this in mind when choosing where to set headers and responses. + +## Locals + +SolidStart uses `event.locals` to pass around local context to be used as you see fit. + +When adding fields to `event.locals`, you can let Typescript know the types of these fields like so: + +```tsx +declare module "@solidjs/start/server" { + interface RequestEventLocals { + myNumber: number; + someString: string; + } +} +``` + +## nativeEvent + +Sometimes you still need access to the underlying event from Vinxi. You can access that using the `.nativeEvent` property. It is the underlying H3Event used and can be passed to the helpers available in the ecosystem. Keep in mind that Vinxi HTTP helpers do not treeshake so you can only import them in files that do not contain client or isomorphic code. + +Many of these events support Async Local Storage so this may not be needed. diff --git a/docs/routes/api/RequestEventLocals.md b/docs/routes/api/RequestEventLocals.md deleted file mode 100644 index 260018315..000000000 --- a/docs/routes/api/RequestEventLocals.md +++ /dev/null @@ -1,21 +0,0 @@ ---- -section: api -title: RequestEventLocals -order: 99 -subsection: Typescript -active: true ---- - -# RequestEventLocals -SolidStart uses `event.locals` to pass around local context to be used as you see fit. - -When adding fields to `event.locals`, you can let Typescript know the types of these fields like so: - -```tsx -declare module "@solidjs/start/server" { - interface RequestEventLocals { - myNumber: number; - someString: string; - } -} -``` diff --git a/docs/routes/api/ReturnResponses.md b/docs/routes/api/ReturnResponses.md index c77c57018..62a23f142 100644 --- a/docs/routes/api/ReturnResponses.md +++ b/docs/routes/api/ReturnResponses.md @@ -2,19 +2,27 @@ section: api title: Returning Responses order: 99 -subsection: Typescript +subsection: Server active: true --- # Returning Responses -In SolidStart it's possible to return a Response object from a server function. For Typescript ergonomics, when returning a response using `@solidjs/router`'s `redirect`, `reload`, or `json` helpers, they will not impact the return value of the server function. +In SolidStart it's possible to return a Response object from a server function. `@solidjs/router` knows how to handle certain responses with its `cache` and `action` APIs. For Typescript ergonomics, when returning a response using `@solidjs/router`'s `redirect`, `reload`, or `json` helpers, they will not impact the return value of the server function. + +You can always return or throw a response but we suggest that depending on the type of function to handle errors differently. + + + + +
cacheaction +
returndata, responsesuccess message, error, response
throwerror, responseresponse
## Examples In the following example, as far as Typescript is concerned, the `hello` function will return a value of type `Promise<{ hello: Promise }>` -```tsx twoslash +```tsx twoslash import { json } from "@solidjs/router"; import { GET } from "@solidjs/start"; @@ -40,7 +48,7 @@ export async function getUser() { try { const user: User = await db.user.findUnique({ where: { id: userId } }); - + // throwing here could have been a bit awkward. if (!user) return redirect("/login"); return user; @@ -49,4 +57,4 @@ export async function getUser() { throw redirect("/login"); } } -``` +``` \ No newline at end of file diff --git a/docs/routes/api/app-config.md b/docs/routes/api/app-config.md index f8ee68b64..251151aa1 100644 --- a/docs/routes/api/app-config.md +++ b/docs/routes/api/app-config.md @@ -51,7 +51,7 @@ export default defineConfig({ }); ``` -The `vite` option can also be a function which can be customized for each Vinxi Router. In SolidStart we use 3, `server` for SSR, `client` for the browser, and `server-function` for server functions. +The `vite` option can also be a function which can be customized for each Vinxi router. In SolidStart we use 3, `server` for SSR, `client` for the browser, and `server-function` for server functions. ```tsx import { defineConfig } from "@solidjs/start/config"; @@ -122,4 +122,4 @@ The vite options are same as the default with exception of the `start` property - `appRoot` (_string_, default `"./src"`): Sets the root of the application code. - `routesDir` (_string_, default `"./routes"`): The path to where the routes are located. - `ssr` (_boolean_ | "sync" | "async", default `true`): Providing a boolean value will toggle between client rendering and [streaming](https://docs.solidjs.com/references/concepts/ssr/streaming) server rendering (ssr) mode, while "sync" and "async" will render using Solid's [renderToString](https://docs.solidjs.com/references/concepts/ssr/simple-client-fetching-ssr) and [renderToStringAsync](https://docs.solidjs.com/references/concepts/ssr/async-ssr) respectively. -- `islands` (_boolean_, default `false`): _experimental_ toggles on "islands" mode. +- `experimental.islands` (_boolean_, default `false`): _experimental_ toggles on "islands" mode. diff --git a/docs/routes/api/app.md b/docs/routes/api/app.md index eff29b8df..86112071e 100644 --- a/docs/routes/api/app.md +++ b/docs/routes/api/app.md @@ -15,7 +15,7 @@ active: true ```tsx twoslash import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; export default function App() { diff --git a/docs/routes/api/server.md b/docs/routes/api/server.md index 4d1faf751..7b90a6cf7 100644 --- a/docs/routes/api/server.md +++ b/docs/routes/api/server.md @@ -44,3 +44,26 @@ In this example, regardless of whether we are rendering this on the server or in ### Serialization Server functions allow the serialization of many different data types in the response. The full list is available [here](https://github.com/lxsmnsyc/seroval/blob/main/docs/compatibility.md#supported-types). + +### Meta information + +Depending on your hosting, the server function might be running in parallel on multiple cpu cores or workers. You can use `getServerFunctionMeta` to retrieve a function-specific `id`, which is stable across all instances. + +Keep in mind: this `id` can and will change between builds! + +```tsx twoslash +import { getServerFunctionMeta } from "@solidjs/start/server"; + +// or some in-memory db +const appCache: any = globalThis; + +const counter = async () => { + "use server"; + const { id } = getServerFunctionMeta()!; + const key = `counter_${id}`; + appCache[key] = appCache[key] ?? 0; + appCache[key]++; + + return appCache[key] as number; +}; +``` diff --git a/docs/routes/core-concepts/actions.md b/docs/routes/core-concepts/actions.md index 915221fe2..9f8114838 100644 --- a/docs/routes/core-concepts/actions.md +++ b/docs/routes/core-concepts/actions.md @@ -8,7 +8,7 @@ order: 7 One question you will likely have when developing any sort of app is "how do I communicate new information to my server?". The user did something. What next? Solid Router's answer to this is _actions_. -Actions give you the ability to specify an async action processing function and gives you elegant tools to help you easily manage and track submissions. Actions are isomorphic and generally represent a `POST` request. +Actions give you the ability to specify an async action processing function and gives you elegant tools to help you easily manage and track submissions. Actions are isomorphic and represent a `POST` request. Actions are isomorphic. This means that a submission can be handled on the server _or_ the client, whichever is optimal. They represent the server component of an [HTML form](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/form), and even help you use HTML forms to submit data. @@ -142,3 +142,9 @@ export function MyComponent() { ); } ``` + +## Error Handling + +We strongly recommend with actions to "return" errors rather than throwing them. This can help with typing of submissions you'd use with `useSubmission`. This is important especially for handling progressive enhancement where no JS is present in the client so that we can use the error declaratively to render the updated page on the server. + +Additionally when using Server Actions it is good practice to try to handle errors on the server so that you can sanitize error messages. \ No newline at end of file diff --git a/docs/routes/core-concepts/api-routes.md b/docs/routes/core-concepts/api-routes.md index ea241190e..f6fa51c7b 100644 --- a/docs/routes/core-concepts/api-routes.md +++ b/docs/routes/core-concepts/api-routes.md @@ -94,7 +94,7 @@ import { getCookie } from "vinxi/http"; import hogwarts from "./hogwarts"; export async function GET(event: APIEvent) { - const userId = getCookie(event, "userId"); + const userId = getCookie("userId"); if (!userId) { return new Response("Not logged in", { status: 401 }); } diff --git a/docs/routes/core-concepts/routing.md b/docs/routes/core-concepts/routing.md index b78ab0bfd..502f00d9d 100644 --- a/docs/routes/core-concepts/routing.md +++ b/docs/routes/core-concepts/routing.md @@ -67,7 +67,7 @@ Under the hood, SolidStart traverses your `routes` directory, collects all the r ```tsx twoslash {7-9} filename="app.tsx" import { Suspense } from "solid-js"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; export default function App() { return ( @@ -159,6 +159,33 @@ export default function UsersLayout(props: RouteSectionProps) { } ``` +### Escaping Nested Routes + +Sometimes you may have the same path but you don't want them to share the same layout. For example, your user listing page might not share a layout with the user details page. In that case you can: + +```tsx {1} +|-- routes/ + |-- users.tsx + |-- users.tsx/ + |-- index.tsx + |-- projects.tsx + |-- users.[id].tsx +``` + +And it can also have its own nested layouts + +```tsx {1} +|-- routes/ + |-- users.tsx + |-- users.[id].tsx + |-- users.tsx/ + |-- index.tsx + |-- projects.tsx + |-- users.[id].tsx + |-- index.tsx + |-- settings.tsx +``` + ## Route Groups With file system routing, folders map directly to URL Paths. However, there might be times when you want to create folders for the sake of organization without affecting the URL structure. This can be done by using a Route Group. In SolidStart, Route Groups are defined using parenthesis surrounding the folder name `(example)`. diff --git a/docs/routes/getting-started/project-setup.mdx b/docs/routes/getting-started/project-setup.mdx index 0bae3fa51..8e9a9fdb6 100644 --- a/docs/routes/getting-started/project-setup.mdx +++ b/docs/routes/getting-started/project-setup.mdx @@ -17,7 +17,7 @@ npm init solid@latest # pnpm pnpm create solid # bun -bunx create-solid +bunx create solid ``` You will get a list of templates from which to choose. You can view the code for each of these options in the [SolidStart repository](https://github.com/solidjs/solid-start/tree/main/examples). diff --git a/examples/bare/package.json b/examples/bare/package.json index fde3fb041..2d93f1465 100644 --- a/examples/bare/package.json +++ b/examples/bare/package.json @@ -9,7 +9,7 @@ "dependencies": { "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/basic/package.json b/examples/basic/package.json index 5c133bc62..5382d12f9 100644 --- a/examples/basic/package.json +++ b/examples/basic/package.json @@ -9,10 +9,10 @@ }, "dependencies": { "@solidjs/meta": "^0.29.2", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/basic/src/app.tsx b/examples/basic/src/app.tsx index d24043290..d1359c8d8 100644 --- a/examples/basic/src/app.tsx +++ b/examples/basic/src/app.tsx @@ -1,6 +1,6 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; diff --git a/examples/experiments/package.json b/examples/experiments/package.json index 1f5e7db08..99567fae1 100644 --- a/examples/experiments/package.json +++ b/examples/experiments/package.json @@ -8,10 +8,10 @@ }, "dependencies": { "@solidjs/meta": "^0.29.2", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/experiments/src/app.tsx b/examples/experiments/src/app.tsx index 558fe4de3..912b2232a 100644 --- a/examples/experiments/src/app.tsx +++ b/examples/experiments/src/app.tsx @@ -1,6 +1,6 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; import Provider from "./components/Provider"; diff --git a/examples/experiments/src/routes/index.tsx b/examples/experiments/src/routes/index.tsx index 974e9709d..9bf0ea29d 100644 --- a/examples/experiments/src/routes/index.tsx +++ b/examples/experiments/src/routes/index.tsx @@ -1,14 +1,14 @@ import { Title } from "@solidjs/meta"; import { json } from "@solidjs/router"; import { clientOnly, GET } from "@solidjs/start"; -import { getRequestEvent } from "solid-js/web"; +import { getServerFunctionMeta } from "@solidjs/start/server"; import Counter from "~/components/Counter"; const BreaksOnServer = clientOnly(() => import("~/components/BreaksOnServer")); const hello = GET(async (name: string) => { "use server"; - const e = getRequestEvent() - e!.locals.s = "hi"; + const meta = getServerFunctionMeta(); + console.log("ID", meta?.id); return json( { hello: new Promise(r => setTimeout(() => r(name), 1000)) }, { headers: { "cache-control": "max-age=60" } } diff --git a/examples/experiments/src/routes/test.[name].tsx b/examples/experiments/src/routes/test.[name].tsx new file mode 100644 index 000000000..3b703e4b7 --- /dev/null +++ b/examples/experiments/src/routes/test.[name].tsx @@ -0,0 +1,10 @@ +import { RouteSectionProps } from "@solidjs/router"; + +export default function (props: RouteSectionProps) { + return ( + <> +

Different Layout

+ {props.children} + + ); +} diff --git a/examples/experiments/src/routes/test.[name]/home.tsx b/examples/experiments/src/routes/test.[name]/home.tsx new file mode 100644 index 000000000..09379129c --- /dev/null +++ b/examples/experiments/src/routes/test.[name]/home.tsx @@ -0,0 +1,3 @@ +export default function() { + return
DIFFERENT CONTENT
+} \ No newline at end of file diff --git a/examples/experiments/src/routes/test.nolayout.tsx b/examples/experiments/src/routes/test.nolayout.tsx new file mode 100644 index 000000000..0deb14bf7 --- /dev/null +++ b/examples/experiments/src/routes/test.nolayout.tsx @@ -0,0 +1,3 @@ +export default function () { + return

Without Layout

; +} diff --git a/examples/hackernews/package.json b/examples/hackernews/package.json index 00e2d471e..7a8b812de 100644 --- a/examples/hackernews/package.json +++ b/examples/hackernews/package.json @@ -7,10 +7,10 @@ "start": "vinxi start" }, "dependencies": { - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/hackernews/src/app.tsx b/examples/hackernews/src/app.tsx index 6353718ad..82e4c0de1 100644 --- a/examples/hackernews/src/app.tsx +++ b/examples/hackernews/src/app.tsx @@ -1,5 +1,5 @@ import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; import Nav from "./components/nav"; diff --git a/examples/notes/package.json b/examples/notes/package.json index 611980cfd..d3d262b56 100644 --- a/examples/notes/package.json +++ b/examples/notes/package.json @@ -7,14 +7,14 @@ "start": "vinxi start" }, "dependencies": { - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.0", "@types/marked": "^4.3.1", "date-fns": "^2.30.0", "solid-js": "^1.8.15", "marked": "^4.3.0", "unstorage": "1.10.1", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/notes/src/app.tsx b/examples/notes/src/app.tsx index 9a5e4bc5f..40ce9264a 100644 --- a/examples/notes/src/app.tsx +++ b/examples/notes/src/app.tsx @@ -1,5 +1,5 @@ import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import EditButton from "~/components/EditButton"; import NoteList from "~/components/NoteList"; diff --git a/examples/todomvc/package.json b/examples/todomvc/package.json index 73b274186..21bd51dd8 100644 --- a/examples/todomvc/package.json +++ b/examples/todomvc/package.json @@ -7,11 +7,11 @@ "start": "vinxi start" }, "dependencies": { - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", "unstorage": "1.10.1", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/todomvc/src/app.tsx b/examples/todomvc/src/app.tsx index 34117f9ff..124b979e9 100644 --- a/examples/todomvc/src/app.tsx +++ b/examples/todomvc/src/app.tsx @@ -1,5 +1,5 @@ import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; diff --git a/examples/with-auth/package.json b/examples/with-auth/package.json index afe17fc49..4ea55c1c9 100644 --- a/examples/with-auth/package.json +++ b/examples/with-auth/package.json @@ -10,11 +10,11 @@ "@types/node": "^20.10.1" }, "dependencies": { - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", "unstorage": "1.10.1", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/with-auth/src/app.tsx b/examples/with-auth/src/app.tsx index 726b6d5ec..dfe8313c0 100644 --- a/examples/with-auth/src/app.tsx +++ b/examples/with-auth/src/app.tsx @@ -1,6 +1,6 @@ // @refresh reload import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; diff --git a/examples/with-mdx/package.json b/examples/with-mdx/package.json index 440e994d4..ac56b1691 100644 --- a/examples/with-mdx/package.json +++ b/examples/with-mdx/package.json @@ -8,11 +8,11 @@ }, "dependencies": { "@mdx-js/mdx": "^2.3.0", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "@vinxi/plugin-mdx": "^3.7.1", "solid-js": "^1.8.15", - "vinxi": "^0.3.9", + "vinxi": "^0.3.10", "solid-mdx": "^0.0.7" }, "engines": { diff --git a/examples/with-mdx/src/app.tsx b/examples/with-mdx/src/app.tsx index b0534aacd..66ff62df7 100644 --- a/examples/with-mdx/src/app.tsx +++ b/examples/with-mdx/src/app.tsx @@ -1,5 +1,5 @@ import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; diff --git a/examples/with-prisma/package.json b/examples/with-prisma/package.json index f03d93c5a..5af50f5f4 100644 --- a/examples/with-prisma/package.json +++ b/examples/with-prisma/package.json @@ -11,11 +11,11 @@ }, "dependencies": { "@prisma/client": "^5.7.0", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "prisma": "^5.7.0", "solid-js": "^1.8.15", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/with-prisma/src/app.tsx b/examples/with-prisma/src/app.tsx index 4d8b00e3d..e66bf2704 100644 --- a/examples/with-prisma/src/app.tsx +++ b/examples/with-prisma/src/app.tsx @@ -1,5 +1,5 @@ import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; diff --git a/examples/with-solid-styled/package.json b/examples/with-solid-styled/package.json index fb1c1de1b..f1cd6b570 100644 --- a/examples/with-solid-styled/package.json +++ b/examples/with-solid-styled/package.json @@ -8,11 +8,11 @@ }, "dependencies": { "@solidjs/meta": "^0.29.2", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", "solid-styled": "^0.8.2", - "vinxi": "^0.3.9", + "vinxi": "^0.3.10", "vite-plugin-solid-styled": "^0.8.3" }, "engines": { diff --git a/examples/with-solid-styled/src/app.tsx b/examples/with-solid-styled/src/app.tsx index c1fb94671..ebc890fde 100644 --- a/examples/with-solid-styled/src/app.tsx +++ b/examples/with-solid-styled/src/app.tsx @@ -1,6 +1,6 @@ import { MetaProvider } from "@solidjs/meta"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import { useAssets } from "solid-js/web"; diff --git a/examples/with-tailwindcss/package.json b/examples/with-tailwindcss/package.json index 50916f209..3bd708a7e 100644 --- a/examples/with-tailwindcss/package.json +++ b/examples/with-tailwindcss/package.json @@ -7,13 +7,13 @@ "start": "vinxi start" }, "dependencies": { - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "autoprefixer": "^10.4.14", "postcss": "^8.4.26", "solid-js": "^1.8.15", "tailwindcss": "^3.3.3", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/with-tailwindcss/src/app.tsx b/examples/with-tailwindcss/src/app.tsx index 9fe9b61cf..2c10a950f 100644 --- a/examples/with-tailwindcss/src/app.tsx +++ b/examples/with-tailwindcss/src/app.tsx @@ -1,5 +1,5 @@ import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import Nav from "~/components/Nav"; import "./app.css"; diff --git a/examples/with-trpc/package.json b/examples/with-trpc/package.json index e50e9e2f1..93a692fa0 100644 --- a/examples/with-trpc/package.json +++ b/examples/with-trpc/package.json @@ -11,11 +11,11 @@ "@trpc/client": "^10.44.1", "@trpc/server": "^10.44.1", "@solidjs/meta": "^0.29.2", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "solid-js": "^1.8.15", "valibot": "^0.26.0", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/with-trpc/src/app.tsx b/examples/with-trpc/src/app.tsx index d24043290..d1359c8d8 100644 --- a/examples/with-trpc/src/app.tsx +++ b/examples/with-trpc/src/app.tsx @@ -1,6 +1,6 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import "./app.css"; diff --git a/examples/with-unocss/package.json b/examples/with-unocss/package.json index 2e2f3eff2..e831469d2 100644 --- a/examples/with-unocss/package.json +++ b/examples/with-unocss/package.json @@ -7,12 +7,12 @@ "start": "vinxi start" }, "dependencies": { - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "@unocss/reset": "^0.58.3", "solid-js": "^1.8.15", "unocss": "^0.58.3", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "engines": { "node": ">=18" diff --git a/examples/with-unocss/src/app.tsx b/examples/with-unocss/src/app.tsx index 0b221549d..e865d3936 100644 --- a/examples/with-unocss/src/app.tsx +++ b/examples/with-unocss/src/app.tsx @@ -2,7 +2,7 @@ import "@unocss/reset/tailwind.css"; import "virtual:uno.css"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; import Nav from "~/components/Nav"; diff --git a/examples/with-vitest/package.json b/examples/with-vitest/package.json index ba40c85d8..4bc3e7f84 100644 --- a/examples/with-vitest/package.json +++ b/examples/with-vitest/package.json @@ -12,7 +12,7 @@ "type": "module", "devDependencies": { "@solidjs/meta": "^0.29.3", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "^0.6.1", "@solidjs/testing-library": "^0.8.5", "@testing-library/jest-dom": "^6.1.5", @@ -21,7 +21,7 @@ "jsdom": "^24.0.0", "solid-js": "^1.8.15", "typescript": "^5.3.3", - "vinxi": "^0.3.9", + "vinxi": "^0.3.10", "vite": "^5.1.1", "vite-plugin-solid": "~2.9.1", "vitest": "^1.2.1" diff --git a/examples/with-vitest/src/app.tsx b/examples/with-vitest/src/app.tsx index 50dcc1d73..eb1f2ef93 100644 --- a/examples/with-vitest/src/app.tsx +++ b/examples/with-vitest/src/app.tsx @@ -1,6 +1,6 @@ import { MetaProvider, Title } from "@solidjs/meta"; import { Router } from "@solidjs/router"; -import { FileRoutes } from "@solidjs/start"; +import { FileRoutes } from "@solidjs/start/router"; import { Suspense } from "solid-js"; export default function App() { diff --git a/package.json b/package.json index 60b6f8d48..96c48cf7e 100644 --- a/package.json +++ b/package.json @@ -30,7 +30,7 @@ "@cloudflare/kv-asset-handler": "^0.2.0", "@decs/typeschema": "^0.12.2", "@solidjs/meta": "^0.29.0", - "@solidjs/router": "^0.12.5", + "@solidjs/router": "^0.13.0", "@solidjs/start": "workspace:*", "@tailwindcss/typography": "^0.5.9", "@trpc/client": "^9.27.4", @@ -50,7 +50,7 @@ "turbo": "^1.10.7", "typescript": "5.3.3", "valibot": "0.26.0", - "vinxi": "^0.3.9", + "vinxi": "^0.3.10", "vite": "^5.1.1" }, "dependencies": { diff --git a/packages/start/client/index.tsx b/packages/start/client/index.ts similarity index 68% rename from packages/start/client/index.tsx rename to packages/start/client/index.ts index 841e5327b..b58855e3a 100644 --- a/packages/start/client/index.tsx +++ b/packages/start/client/index.ts @@ -1,5 +1,3 @@ -// @refresh skip -// TODO rename to index.tsx? import "vinxi/client"; export { StartClient } from "./StartClient"; export { mount } from "./mount"; diff --git a/packages/start/client/islands.tsx b/packages/start/client/islands.ts similarity index 100% rename from packages/start/client/islands.tsx rename to packages/start/client/islands.ts diff --git a/packages/start/client/spa/index.tsx b/packages/start/client/spa/index.ts similarity index 100% rename from packages/start/client/spa/index.tsx rename to packages/start/client/spa/index.ts diff --git a/packages/start/config/index.d.ts b/packages/start/config/index.d.ts index 053803b8f..adabf7043 100644 --- a/packages/start/config/index.d.ts +++ b/packages/start/config/index.d.ts @@ -1,19 +1,28 @@ import type { AppOptions } from "vinxi"; import type { CustomizableConfig } from "vinxi/dist/types/lib/vite-dev"; +import { InlineConfig } from "vite"; import type { Options } from "vite-plugin-solid"; +// atleast until we sort which server options are good to use +type ViteCustomizableConfig = CustomizableConfig & { + server?: InlineConfig["server"]; +} + type SolidStartInlineConfig = { ssr?: boolean; solid?: Options; extensions?: string[]; server?: AppOptions["server"]; appRoot?: string; + routeDir?: string; middleware?: string; - islands?: boolean; devOverlay?: boolean; + experimental?: { + islands?: boolean; + } vite?: - | CustomizableConfig - | ((options: { router: "server" | "client" | "server-function" }) => CustomizableConfig); + | ViteCustomizableConfig + | ((options: { router: "server" | "client" | "server-function" }) => ViteCustomizableConfig); }; export declare function defineConfig(baseConfig?: SolidStartInlineConfig): any; diff --git a/packages/start/config/index.js b/packages/start/config/index.js index 7367c7f34..469aebafc 100644 --- a/packages/start/config/index.js +++ b/packages/start/config/index.js @@ -42,9 +42,12 @@ export function defineConfig(baseConfig = {}) { const extensions = [...DEFAULT_EXTENSIONS, ...(start.extensions || [])]; start = defu(start, { appRoot: "./src", + routeDir: "./routes", ssr: true, devOverlay: true, - islands: false, + experimental: { + islands: false + }, solid: {}, server: { experimental: { @@ -52,6 +55,7 @@ export function defineConfig(baseConfig = {}) { } } }); + const routeDir = join(start.appRoot, start.routeDir); let server = start.server; if (!start.ssr) { server = { ...server, prerender: { routes: ["/"] } }; @@ -79,11 +83,11 @@ export function defineConfig(baseConfig = {}) { name: "ssr", type: "http", link: { - client: start.islands ? undefined : "client" + client: start.experimental.islands ? undefined : "client" }, handler: `${start.appRoot}/entry-server${entryExtension}`, middleware: start.middleware, - routes: solidStartServerFsRouter({ dir: `${start.appRoot}/routes`, extensions }), + routes: solidStartServerFsRouter({ dir: routeDir, extensions }), extensions, target: "server", plugins: async () => { @@ -106,7 +110,7 @@ export function defineConfig(baseConfig = {}) { serverTransform({ runtime: normalize(fileURLToPath(new URL("./server-fns-runtime.ts", import.meta.url))) }), - start.islands ? serverComponents.server() : null, + start.experimental.islands ? serverComponents.server() : null, solid({ ...start.solid, ssr: true, extensions: extensions.map(ext => `.${ext}`) }), config("app-server", { resolve: { @@ -123,7 +127,7 @@ export function defineConfig(baseConfig = {}) { }, cacheDir: "node_modules/.vinxi/server", define: { - "import.meta.env.START_ISLANDS": JSON.stringify(start.islands), + "import.meta.env.START_ISLANDS": JSON.stringify(start.experimental.islands), "import.meta.env.SSR": JSON.stringify(true), "import.meta.env.START_SSR": JSON.stringify(start.ssr), "import.meta.env.START_DEV_OVERLAY": JSON.stringify(start.devOverlay), @@ -138,10 +142,10 @@ export function defineConfig(baseConfig = {}) { type: "client", base: "/_build", handler: `${start.appRoot}/entry-client${entryExtension}`, - ...(start.islands + ...(start.experimental.islands ? {} : { - routes: solidStartClientFsRouter({ dir: `${start.appRoot}/routes`, extensions }) + routes: solidStartClientFsRouter({ dir: routeDir, extensions }) }), extensions, target: "browser", @@ -165,14 +169,14 @@ export function defineConfig(baseConfig = {}) { serverFunctions.client({ runtime: normalize(fileURLToPath(new URL("./server-runtime.ts", import.meta.url))) }), - start.islands ? serverComponents.client() : null, + start.experimental.islands ? serverComponents.client() : null, solid({ ...start.solid, ssr: start.ssr, extensions: extensions.map(ext => `.${ext}`) }), config("app-client", { resolve: { alias: { "#start/app": join(process.cwd(), start.appRoot, `app${entryExtension}`), "~": join(process.cwd(), start.appRoot), - ...(start.islands + ...(start.experimental.islands ? { "@solidjs/start/client": "@solidjs/start/client/islands" } @@ -187,7 +191,7 @@ export function defineConfig(baseConfig = {}) { }, cacheDir: "node_modules/.vinxi/client", define: { - "import.meta.env.START_ISLANDS": JSON.stringify(start.islands), + "import.meta.env.START_ISLANDS": JSON.stringify(start.experimental.islands), "import.meta.env.SSR": JSON.stringify(false), "import.meta.env.START_SSR": JSON.stringify(start.ssr), "import.meta.env.START_DEV_OVERLAY": JSON.stringify(start.devOverlay), @@ -206,7 +210,7 @@ export function defineConfig(baseConfig = {}) { handler: normalize(fileURLToPath(new URL("./server-handler.ts", import.meta.url))), middleware: start.middleware, target: "server", - routes: solidStartServerFsRouter({ dir: `${start.appRoot}/routes`, extensions }), + routes: solidStartServerFsRouter({ dir: routeDir, extensions }), plugins: async () => { const userConfig = typeof vite === "function" ? await vite({ router: "server-function" }) : { ...vite }; const plugins = userConfig.plugins || []; @@ -243,7 +247,7 @@ export function defineConfig(baseConfig = {}) { } }, define: { - "import.meta.env.START_ISLANDS": JSON.stringify(start.islands), + "import.meta.env.START_ISLANDS": JSON.stringify(start.experimental.islands), "import.meta.env.SSR": JSON.stringify(true), "import.meta.env.START_SSR": JSON.stringify(start.ssr), "import.meta.env.START_DEV_OVERLAY": JSON.stringify(start.devOverlay), diff --git a/packages/start/config/server-components.js b/packages/start/config/server-components.js index 864a322a3..c9ca6be29 100644 --- a/packages/start/config/server-components.js +++ b/packages/start/config/server-components.js @@ -20,7 +20,7 @@ function client() { } function server() { - const runtime = normalize(fileURLToPath(new URL("./server-runtime.jsx", import.meta.url))); + const runtime = normalize(fileURLToPath(new URL("./server-runtime.ts", import.meta.url))); // export function serverComponents({ // resolve = { // conditions: ["react-server"], diff --git a/packages/start/config/server-fns-runtime.ts b/packages/start/config/server-fns-runtime.ts index 55ad077e6..b21347c31 100644 --- a/packages/start/config/server-fns-runtime.ts +++ b/packages/start/config/server-fns-runtime.ts @@ -16,6 +16,9 @@ export function createServerReference(fn: Function, id: string, name: string) { const ogEvt = getRequestEvent(); if (!ogEvt) throw new Error("Cannot call server function outside of a request"); const evt = cloneEvent(ogEvt); + evt.locals.serverFunctionMeta = { + id: id + "#" + name, + }; evt.serverOnly = true; return provideRequestEvent(evt, () => { return fn.apply(thisArg, args); diff --git a/packages/start/config/server-handler.ts b/packages/start/config/server-handler.ts index 47e0a382a..3f8d8e6b1 100644 --- a/packages/start/config/server-handler.ts +++ b/packages/start/config/server-handler.ts @@ -16,12 +16,11 @@ import { import { sharedConfig } from "solid-js"; import { renderToString } from "solid-js/web"; import { provideRequestEvent } from "solid-js/web/storage"; -import { eventHandler, setHeader, setResponseStatus, type H3Event } from "vinxi/http"; +import { eventHandler, setHeader, setResponseStatus, type HTTPEvent } from "vinxi/http"; import invariant from "vinxi/lib/invariant"; import { cloneEvent, getFetchEvent, mergeResponseHeaders } from "../server/fetchEvent"; import { createPageEvent } from "../server/pageEvent"; // @ts-ignore -import App from "#start/app"; import { FetchEvent, PageEvent } from "../server"; function createChunk(data: string) { @@ -64,7 +63,7 @@ function serializeToStream(id: string, value: any) { }); } -async function handleServerFunction(h3Event: H3Event) { +async function handleServerFunction(h3Event: HTTPEvent) { const event = getFetchEvent(h3Event); const request = event.request; @@ -72,7 +71,7 @@ async function handleServerFunction(h3Event: H3Event) { const instance = request.headers.get("X-Server-Instance"); const singleFlight = request.headers.has("X-Single-Flight"); const url = new URL(request.url); - let filepath, name; + let filepath: string | undefined | null, name: string | undefined | null; if (serverReference) { invariant(typeof serverReference === "string", "Invalid server function"); [filepath, name] = serverReference.split("#"); @@ -131,6 +130,9 @@ async function handleServerFunction(h3Event: H3Event) { let result = await provideRequestEvent(event, async () => { /* @ts-ignore */ sharedConfig.context = { event }; + event.locals.serverFunctionMeta = { + id: filepath + "#" + name, + }; return serverFunction(...parsed); }); @@ -142,6 +144,8 @@ async function handleServerFunction(h3Event: H3Event) { if (result instanceof Response && instance) { // forward headers if (result.headers) mergeResponseHeaders(h3Event, result.headers); + // forward non-redirect statuses + if (result.status && (result.status < 300 || result.status >= 400)) setResponseStatus(h3Event, result.status); if ((result as any).customBody) { result = await (result as any).customBody(); } else if (result.body == undefined) result = null; @@ -181,21 +185,26 @@ async function handleServerFunction(h3Event: H3Event) { if (singleFlight && instance) { x = await handleSingleFlight(event, x); } - if ((x as any).status === 302 && !instance) setResponseStatus(h3Event, 302); // forward headers if ((x as any).headers) mergeResponseHeaders(h3Event, (x as any).headers); + // forward non-redirect statuses + if ((x as any).status && (!instance || (x as any).status < 300 || (x as any).status >= 400)) setResponseStatus(h3Event, (x as any).status); if ((x as any).customBody) { x = (x as any).customBody(); } else if ((x as any).body == undefined) x = null; - if (instance) { - setHeader(h3Event, "content-type", "text/javascript"); - return serializeToStream(instance, x); - } + } else { + const error = x instanceof Error ? x.message : typeof x === "string" ? x : "true"; + setHeader(h3Event, "X-Error", error); + } + if (instance) { + setHeader(h3Event, "content-type", "text/javascript"); + return serializeToStream(instance, x); } return x; } } +let App: any; async function handleSingleFlight(sourceEvent: FetchEvent, result: any): Promise { let revalidate: string[]; let url = new URL(sourceEvent.request.headers.get("referer")!).toString(); @@ -213,6 +222,8 @@ async function handleSingleFlight(sourceEvent: FetchEvent, result: any): Promise return await provideRequestEvent(event, async () => { await createPageEvent(event); /* @ts-ignore */ + App || (App = (await import("#start/app")).default); + /* @ts-ignore */ event.router.dataOnly = revalidate || true; /* @ts-ignore */ event.router.previousUrl = sourceEvent.request.headers.get("referer"); diff --git a/packages/start/config/server-runtime.ts b/packages/start/config/server-runtime.ts index dd0981be8..d8a468f76 100644 --- a/packages/start/config/server-runtime.ts +++ b/packages/start/config/server-runtime.ts @@ -177,12 +177,12 @@ async function fetchServerFunction( } else if (contentType && contentType.startsWith("application/json")) { result = await response.json(); } else { - result = deserializeStream(instance, response); + result = await deserializeStream(instance, response); } - if (response.ok) { - return result; + if (response.headers.has("X-Error")) { + throw result; } - throw result; + return result; } export function createServerReference(fn: Function, id: string, name: string) { diff --git a/packages/start/middleware/index.ts b/packages/start/middleware/index.ts index f89ca0f67..16f8031f2 100644 --- a/packages/start/middleware/index.ts +++ b/packages/start/middleware/index.ts @@ -1,7 +1,7 @@ import { - H3Event, - defineMiddleware, - sendWebResponse + HTTPEvent, + defineMiddleware, + sendWebResponse } from "vinxi/http"; import { getFetchEvent } from "../server/fetchEvent"; import type { FetchEvent } from "../server/types"; @@ -23,7 +23,7 @@ export type ResponseMiddleware = ( ) => Response | Promise | void | Promise; function wrapRequestMiddleware(onRequest: RequestMiddleware) { - return async (h3Event: H3Event) => { + return async (h3Event: HTTPEvent) => { const fetchEvent = getFetchEvent(h3Event); const response = await onRequest(fetchEvent); if (!response) { @@ -35,7 +35,7 @@ function wrapRequestMiddleware(onRequest: RequestMiddleware) { } function wrapResponseMiddleware(onBeforeResponse: ResponseMiddleware) { - return async (h3Event: H3Event, response: ResponseMiddlewareResponseParam) => { + return async (h3Event: HTTPEvent, response: ResponseMiddlewareResponseParam) => { const fetchEvent = getFetchEvent(h3Event); const mwResponse = await onBeforeResponse(fetchEvent, response); if (!mwResponse) { diff --git a/packages/start/package.json b/packages/start/package.json index 14437f06d..ba8070995 100644 --- a/packages/start/package.json +++ b/packages/start/package.json @@ -14,45 +14,50 @@ "client", "config", "middleware", + "router", "server", "shared", "*.d.ts" ], - "types": "./shared/index.tsx", + "types": "./shared/index.ts", "exports": { - ".": "./shared/index.tsx", + ".": "./shared/index.ts", "./config": "./config/index.js", "./middleware": "./middleware/index.ts", - "./server": "./server/index.tsx", - "./server/spa": "./server/spa/index.tsx", - "./client": "./client/index.tsx", - "./client/islands": "./client/islands.tsx", - "./client/spa": "./client/spa/index.tsx" + "./router": "./router/index.ts", + "./server": "./server/index.ts", + "./server/spa": "./server/spa/index.ts", + "./client": "./client/index.ts", + "./client/islands": "./client/islands.ts", + "./client/spa": "./client/spa/index.ts" }, "typesVersions": { "*": { ".": [ - "./shared/index.tsx" + "./shared/index.ts" ], "middleware": [ "./middleware/index.ts" ], + "router": [ + "./router/index.ts" + ], "server": [ - "./server/index.tsx" + "./server/index.ts" ], "client": [ - "./client/index.tsx" + "./client/index.ts" ] } }, "devDependencies": { "solid-js": "^1.8.15", - "vinxi": "^0.3.9" + "vinxi": "^0.3.10" }, "dependencies": { - "@vinxi/plugin-directives": "^0.3.0", - "@vinxi/server-components": "^0.3.2", - "@vinxi/server-functions": "^0.3.1", + "@vinxi/plugin-directives": "^0.3.1", + "@vinxi/server-components": "^0.3.3", + "@vinxi/server-functions": "^0.3.2", "defu": "^6.1.2", "error-stack-parser": "^2.1.4", "html-to-image": "^1.11.11", diff --git a/packages/start/shared/FileRoutes.tsx b/packages/start/router/FileRoutes.ts similarity index 96% rename from packages/start/shared/FileRoutes.tsx rename to packages/start/router/FileRoutes.ts index 108f32afe..f40738b8b 100644 --- a/packages/start/shared/FileRoutes.tsx +++ b/packages/start/router/FileRoutes.ts @@ -30,6 +30,6 @@ export function createRoutes() { } let routes: any[]; -export const FileRoutes = isServer +export const FileRoutes = isServer ? () => (getRequestEvent() as PageEvent).routes : () => routes || (routes = createRoutes()); diff --git a/packages/start/router/index.ts b/packages/start/router/index.ts new file mode 100644 index 000000000..ee02eebf4 --- /dev/null +++ b/packages/start/router/index.ts @@ -0,0 +1 @@ +export { FileRoutes } from "./FileRoutes"; diff --git a/packages/start/shared/lazyRoute.tsx b/packages/start/router/lazyRoute.ts similarity index 97% rename from packages/start/shared/lazyRoute.tsx rename to packages/start/router/lazyRoute.ts index b3b8272d6..f1a90c00b 100644 --- a/packages/start/shared/lazyRoute.tsx +++ b/packages/start/router/lazyRoute.ts @@ -1,5 +1,3 @@ -// @refresh skip -// TODO rename to lazyRoute.ts? /// import { createComponent, lazy, onCleanup, type Component, type JSX } from "solid-js"; import { appendStyles, cleanupStyles, preloadStyles, updateStyles } from "vinxi/css"; diff --git a/packages/start/shared/routes.ts b/packages/start/router/routes.ts similarity index 98% rename from packages/start/shared/routes.ts rename to packages/start/router/routes.ts index d9ce6e0dd..4d4f08e19 100644 --- a/packages/start/shared/routes.ts +++ b/packages/start/router/routes.ts @@ -33,7 +33,7 @@ function defineRoutes(fileRoutes: Route[]) { }); if (!parentRoute) { - routes.push({ ...route, id, path: id.replace(/\/\([^)/]+\)/g, "") }); + routes.push({ ...route, id, path: id.replace(/\/\([^)/]+\)/g, "").replace(/\./g, "/") }); return routes; } processRoute( diff --git a/packages/start/server/fetchEvent.ts b/packages/start/server/fetchEvent.ts index 514575fe9..88d96042c 100644 --- a/packages/start/server/fetchEvent.ts +++ b/packages/start/server/fetchEvent.ts @@ -1,6 +1,5 @@ import { H3Event, - HTTPEventSymbol, appendResponseHeader, getRequestIP, getResponseHeader, @@ -11,7 +10,7 @@ import { removeResponseHeader, setHeader, setResponseHeader, - setResponseStatus, + setResponseStatus } from "vinxi/http"; import type { FetchEvent, ResponseStub } from "./types"; @@ -23,15 +22,13 @@ export function createFetchEvent(event: H3Event): FetchEvent { response: createResponseStub(event), clientAddress: getRequestIP(event), locals: {}, - nativeEvent: event, - [HTTPEventSymbol]: event + nativeEvent: event }; } export function cloneEvent(fetchEvent: T): T { return { - ...fetchEvent, - [HTTPEventSymbol]: fetchEvent[HTTPEventSymbol] + ...fetchEvent }; } @@ -54,7 +51,7 @@ class HeaderProxy { constructor(private event: H3Event) {} get(key: string) { const h = getResponseHeader(this.event, key); - return Array.isArray(h) ? h.join(", ") : h; + return Array.isArray(h) ? h.join(", ") : (h as string) || null; } has(key: string) { return this.get(key) !== undefined; @@ -70,24 +67,27 @@ class HeaderProxy { } getSetCookie() { const cookies = getResponseHeader(this.event, "Set-Cookie"); - return Array.isArray(cookies) ? cookies : [cookies]; + return Array.isArray(cookies) ? cookies : [cookies as string]; } forEach(fn: (value: string, key: string, object: Headers) => void) { - return Object.entries(getResponseHeaders(this.event)).forEach(([key, value]) => fn(Array.isArray(value) ? value.join(", ") : value, key, this)); + return Object.entries(getResponseHeaders(this.event)).forEach(([key, value]) => + fn(Array.isArray(value) ? value.join(", ") : (value as string), key, this) + ); } entries() { - return Object.entries(getResponseHeaders(this.event)).map(([key, value]) => [ - key, - Array.isArray(value) ? value.join(", ") : value - ] as [string, string])[Symbol.iterator](); + return Object.entries(getResponseHeaders(this.event)) + .map( + ([key, value]) => [key, Array.isArray(value) ? value.join(", ") : value] as [string, string] + ) + [Symbol.iterator](); } keys() { return Object.keys(getResponseHeaders(this.event))[Symbol.iterator](); } values() { - return Object.values(getResponseHeaders(this.event)).map((value) => - Array.isArray(value) ? value.join(", ") : value - )[Symbol.iterator](); + return Object.values(getResponseHeaders(this.event)) + .map(value => (Array.isArray(value) ? value.join(", ") : (value as string))) + [Symbol.iterator](); } [Symbol.iterator]() { return this.entries()[Symbol.iterator](); diff --git a/packages/start/server/handler.ts b/packages/start/server/handler.ts index b3c2b784f..62c103b0e 100644 --- a/packages/start/server/handler.ts +++ b/packages/start/server/handler.ts @@ -2,14 +2,13 @@ import { sharedConfig } from "solid-js"; import { renderToStream, renderToString } from "solid-js/web"; import { provideRequestEvent } from "solid-js/web/storage"; import { - EventHandlerRequest, - H3Event, eventHandler, sendRedirect, setHeader, - setResponseStatus + setResponseStatus, + type HTTPEvent } from "vinxi/http"; -import { matchAPIRoute } from "../shared/routes"; +import { matchAPIRoute } from "../router/routes"; import { getFetchEvent } from "./fetchEvent"; import { createPageEvent } from "./pageEvent"; import type { APIEvent, FetchEvent, HandlerOptions, PageEvent } from "./types"; @@ -20,7 +19,7 @@ export function createBaseHandler( options: HandlerOptions | ((context: PageEvent) => HandlerOptions | Promise) = {} ) { return eventHandler({ - handler: (e: H3Event) => { + handler: (e: HTTPEvent) => { const event = getFetchEvent(e); return provideRequestEvent(event, async () => { @@ -53,7 +52,7 @@ export function createBaseHandler( return fn(context); }, options); if (context.response && context.response.headers.get("Location")) { - return sendRedirect(event, context.response.headers.get("Location")!); + return sendRedirect(e, context.response.headers.get("Location")!); } return html; } @@ -77,7 +76,7 @@ export function createBaseHandler( return fn(context); }, cloned); if (context.response && context.response.headers.get("Location")) { - return sendRedirect(event, context.response.headers.get("Location")!); + return sendRedirect(e, context.response.headers.get("Location")!); } if (mode === "async") return stream; // fix cloudflare streaming @@ -89,7 +88,7 @@ export function createBaseHandler( }); } -function handleShellCompleteRedirect(context: PageEvent, e: H3Event) { +function handleShellCompleteRedirect(context: PageEvent, e: HTTPEvent) { return () => { if (context.response && context.response.headers.get("Location")) { setResponseStatus(e, 302); diff --git a/packages/start/server/index.tsx b/packages/start/server/index.ts similarity index 66% rename from packages/start/server/index.tsx rename to packages/start/server/index.ts index 92377a72d..25b8f3859 100644 --- a/packages/start/server/index.tsx +++ b/packages/start/server/index.ts @@ -1,6 +1,4 @@ -// @refresh skip -// TODO rename to index.ts? export { StartServer } from "./StartServer"; export { createHandler } from "./handler"; +export { getServerFunctionMeta } from "./serverFunction"; export * from "./types"; - diff --git a/packages/start/server/pageEvent.ts b/packages/start/server/pageEvent.ts index 8e19b01dd..4f36d159b 100644 --- a/packages/start/server/pageEvent.ts +++ b/packages/start/server/pageEvent.ts @@ -2,16 +2,16 @@ import { getCookie, setCookie } from "vinxi/http"; -import { createRoutes } from "../shared/FileRoutes"; +import { createRoutes } from "../router/FileRoutes"; import { FetchEvent, PageEvent } from "./types"; function initFromFlash(ctx: FetchEvent) { - const flash = getCookie(ctx, "flash"); + const flash = getCookie(ctx.nativeEvent, "flash"); if (!flash) return; let param = JSON.parse(flash); if (!param || !param.result) return; const input = [...param.input.slice(0, -1), new Map(param.input[param.input.length - 1])]; - setCookie(ctx, "flash", "", { maxAge: 0 }); + setCookie(ctx.nativeEvent, "flash", "", { maxAge: 0 }); return { input, url: param.url, diff --git a/packages/start/server/serverFunction.tsx b/packages/start/server/serverFunction.tsx new file mode 100644 index 000000000..26ac8b539 --- /dev/null +++ b/packages/start/server/serverFunction.tsx @@ -0,0 +1,6 @@ +import { getRequestEvent } from "solid-js/web"; +import type { ServerFunctionMeta } from "./types"; + +export function getServerFunctionMeta(): ServerFunctionMeta | undefined { + return getRequestEvent()?.locals.serverFunctionMeta; +} diff --git a/packages/start/server/spa/index.tsx b/packages/start/server/spa/index.ts similarity index 71% rename from packages/start/server/spa/index.tsx rename to packages/start/server/spa/index.ts index 62ef3491f..de26c5734 100644 --- a/packages/start/server/spa/index.tsx +++ b/packages/start/server/spa/index.ts @@ -1,5 +1,3 @@ -// @refresh skip -// TODO rename to index.ts? export * from "../types"; export { StartServer } from "./StartServer"; export { createHandler } from "./handler"; diff --git a/packages/start/server/types.ts b/packages/start/server/types.ts index bbadc370f..630be0d5f 100644 --- a/packages/start/server/types.ts +++ b/packages/start/server/types.ts @@ -1,6 +1,6 @@ import type { JSX } from "solid-js"; import { RequestEvent } from "solid-js/web"; -import { H3Event, HTTPEventSymbol } from "vinxi/http"; +import { HTTPEvent } from "vinxi/http"; // export const FETCH_EVENT = "$FETCH"; @@ -47,8 +47,7 @@ export interface FetchEvent { response: ResponseStub; clientAddress?: string; locals: RequestEventLocals; - nativeEvent: H3Event; - [HTTPEventSymbol]: H3Event; + nativeEvent: HTTPEvent; } export interface RequestEventLocals { [key: string | symbol]: any; @@ -71,6 +70,10 @@ export interface APIHandler { (event: APIEvent): Promise; } +export interface ServerFunctionMeta { + id: string; +} + declare module "solid-js/web" { interface RequestEvent extends FetchEvent { serverOnly?: boolean; diff --git a/packages/start/shared/dev-overlay/CodeView.tsx b/packages/start/shared/dev-overlay/CodeView.tsx index 1784d1e9e..20b8546a0 100644 --- a/packages/start/shared/dev-overlay/CodeView.tsx +++ b/packages/start/shared/dev-overlay/CodeView.tsx @@ -58,11 +58,15 @@ export function CodeView(props: CodeViewProps): JSX.Element | null { .join('\n') ) ,async (value) => { const highlighter = await loadHighlighter(); - const lang = props.fileName + const fileExtension = props.fileName .split(/[#?]/)[0]! .split('.') .pop() - ?.trim() as BuiltinLanguage; + ?.trim(); + let lang = fileExtension as BuiltinLanguage; + if (fileExtension === 'mjs' || fileExtension === 'cjs') { + lang = 'js'; + } return highlighter.codeToHtml(value, { theme: 'dark-plus', lang, diff --git a/packages/start/shared/index.tsx b/packages/start/shared/index.ts similarity index 66% rename from packages/start/shared/index.tsx rename to packages/start/shared/index.ts index bc34d6953..b00ab0846 100644 --- a/packages/start/shared/index.tsx +++ b/packages/start/shared/index.ts @@ -1,6 +1,3 @@ -// @refresh skip -// TODO rename to index.ts? -export { FileRoutes } from "./FileRoutes"; export { GET } from "./GET"; export { HttpHeader } from "./HttpHeader"; export { HttpStatusCode } from "./HttpStatusCode"; diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 045f11d29..7acee4f03 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -28,8 +28,8 @@ importers: specifier: ^0.29.0 version: 0.29.3(solid-js@1.8.15) '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: workspace:* version: link:packages/start @@ -88,8 +88,8 @@ importers: specifier: 0.26.0 version: 0.26.0 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) vite: specifier: ^5.1.1 version: 5.1.1 @@ -103,8 +103,8 @@ importers: specifier: ^1.8.15 version: 1.8.15 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/basic: dependencies: @@ -112,8 +112,8 @@ importers: specifier: ^0.29.2 version: 0.29.3(solid-js@1.8.15) '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -121,8 +121,8 @@ importers: specifier: ^1.8.15 version: 1.8.15 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/experiments: dependencies: @@ -130,8 +130,8 @@ importers: specifier: ^0.29.2 version: 0.29.3(solid-js@1.8.15) '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -139,14 +139,14 @@ importers: specifier: ^1.8.15 version: 1.8.15 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/hackernews: dependencies: '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -154,14 +154,14 @@ importers: specifier: ^1.8.15 version: 1.8.15 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/notes: dependencies: '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.0 version: link:../../packages/start @@ -181,14 +181,14 @@ importers: specifier: 1.10.1 version: 1.10.1 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/todomvc: dependencies: '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -199,14 +199,14 @@ importers: specifier: 1.10.1 version: 1.10.1 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/with-auth: dependencies: '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -217,8 +217,8 @@ importers: specifier: 1.10.1 version: 1.10.1 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) devDependencies: '@types/node': specifier: ^20.10.1 @@ -230,8 +230,8 @@ importers: specifier: ^2.3.0 version: 2.3.0 '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -245,8 +245,8 @@ importers: specifier: ^0.0.7 version: 0.0.7(solid-js@1.8.15)(vite@5.1.4) vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/with-prisma: dependencies: @@ -254,8 +254,8 @@ importers: specifier: ^5.7.0 version: 5.7.0(prisma@5.7.0) '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -266,8 +266,8 @@ importers: specifier: ^1.8.15 version: 1.8.15 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) devDependencies: '@types/node': specifier: ^20.10.1 @@ -279,8 +279,8 @@ importers: specifier: ^0.29.2 version: 0.29.3(solid-js@1.8.15) '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -291,8 +291,8 @@ importers: specifier: ^0.8.2 version: 0.8.2(@babel/core@7.23.9)(solid-js@1.8.15) vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) vite-plugin-solid-styled: specifier: ^0.8.3 version: 0.8.3(solid-styled@0.8.2)(vite@4.5.0) @@ -300,8 +300,8 @@ importers: examples/with-tailwindcss: dependencies: '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -318,20 +318,20 @@ importers: specifier: ^3.3.3 version: 3.3.3 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/with-trpc: dependencies: '@decs/typeschema': specifier: ^0.12.2 - version: 0.12.2(valibot@0.26.0)(vite@5.1.4) + version: 0.12.2(valibot@0.26.0)(vite@5.1.1) '@solidjs/meta': specifier: ^0.29.2 version: 0.29.3(solid-js@1.8.15) '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -348,14 +348,14 @@ importers: specifier: ^0.26.0 version: 0.26.0 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/with-unocss: dependencies: '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start @@ -369,8 +369,8 @@ importers: specifier: ^0.58.3 version: 0.58.3(postcss@8.4.35)(vite@5.1.4) vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) examples/with-vitest: devDependencies: @@ -378,14 +378,14 @@ importers: specifier: ^0.29.3 version: 0.29.3(solid-js@1.8.15) '@solidjs/router': - specifier: ^0.12.5 - version: 0.12.5(solid-js@1.8.15) + specifier: ^0.13.0 + version: 0.13.0(solid-js@1.8.15) '@solidjs/start': specifier: ^0.6.1 version: link:../../packages/start '@solidjs/testing-library': specifier: ^0.8.5 - version: 0.8.5(@solidjs/router@0.12.5)(solid-js@1.8.15) + version: 0.8.5(@solidjs/router@0.13.0)(solid-js@1.8.15) '@testing-library/jest-dom': specifier: ^6.1.5 version: 6.1.5(vitest@1.2.1) @@ -405,8 +405,8 @@ importers: specifier: ^5.3.3 version: 5.3.3 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@testing-library/jest-dom@6.1.5)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) vite: specifier: ^5.1.1 version: 5.1.1 @@ -474,14 +474,14 @@ importers: packages/start: dependencies: '@vinxi/plugin-directives': - specifier: ^0.3.0 - version: 0.3.0(vinxi@0.3.9) + specifier: ^0.3.1 + version: 0.3.1(vinxi@0.3.10) '@vinxi/server-components': - specifier: ^0.3.2 - version: 0.3.2(vinxi@0.3.9) + specifier: ^0.3.3 + version: 0.3.3(vinxi@0.3.10) '@vinxi/server-functions': - specifier: ^0.3.1 - version: 0.3.1(vinxi@0.3.9) + specifier: ^0.3.2 + version: 0.3.2(vinxi@0.3.10) defu: specifier: ^6.1.2 version: 6.1.2 @@ -520,13 +520,14 @@ importers: specifier: ^1.8.15 version: 1.8.15 vinxi: - specifier: ^0.3.9 - version: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + specifier: ^0.3.10 + version: 0.3.10(@types/node@20.10.1)(debug@4.3.4) packages: /@adobe/css-tools@4.3.3: resolution: {integrity: sha512-rE0Pygv0sEZ4vBWHlAgJLGDU7Pm8xoO6p3wsEceb7GYAjScrOHpEo8KK/eVkAcnSM+slAEtXjA2JpdjLp4fJQQ==} + dev: true /@alloc/quick-lru@5.2.0: resolution: {integrity: sha512-UrcABB+4bUrFABwbluTIBErXwvbsU/V7TZWfmbgJfbkwiBuziS9gxdODUyuiecfdGQ85jglMW6juS3+z5TsKLw==} @@ -548,6 +549,7 @@ packages: /@antfu/utils@0.7.7: resolution: {integrity: sha512-gFPqTG7otEJ8uP6wrhDv6mqwGWYZKNvAcCq6u9hOj0c+IKCEsY4L1oC9trPq2SaWIzAfHvqfBDxF591JkMf+kg==} + dev: false /@babel/code-frame@7.23.5: resolution: {integrity: sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==} @@ -596,6 +598,7 @@ packages: engines: {node: '>=6.9.0'} dependencies: '@babel/types': 7.23.9 + dev: false /@babel/helper-compilation-targets@7.23.6: resolution: {integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==} @@ -783,28 +786,6 @@ packages: '@babel/helper-simple-access': 7.22.5 dev: false - /@babel/plugin-transform-react-jsx-development@7.22.5(@babel/core@7.23.9): - resolution: {integrity: sha512-bDhuzwWMuInwCYeDeMzyi7TaBgRQei6DqxhbyniL7/VG4RSS7HtSL2QbY4eESy1KJqlWt8g3xeEBGPuo+XqC8A==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - - /@babel/plugin-transform-react-jsx@7.23.4(@babel/core@7.23.9): - resolution: {integrity: sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==} - engines: {node: '>=6.9.0'} - peerDependencies: - '@babel/core': ^7.0.0-0 - dependencies: - '@babel/core': 7.23.9 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.22.5 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/types': 7.23.9 - /@babel/plugin-transform-typescript@7.23.6(@babel/core@7.23.9): resolution: {integrity: sha512-6cBG5mBvUu4VUD04OHKnYzbuHNP8huDsD3EDqqpIpsswTDoqHCjLoHb6+QgsV1WsT2nipRqCPgxD3LXnEO7XfA==} engines: {node: '>=6.9.0'} @@ -1183,64 +1164,6 @@ packages: dependencies: valibot: 0.26.0 vite: 5.1.1 - dev: true - - /@decs/typeschema@0.12.2(valibot@0.26.0)(vite@5.1.4): - resolution: {integrity: sha512-PA8uAH/Xfsa5X2UNNSnb5i6vB8qWZywp4+d2U8kNMCO7qwirYRPbFCHwIfWBJyURh4rULn3Ey+VBADLcK2xxaQ==} - peerDependencies: - '@deepkit/type': ^1.0.1-alpha.113 - '@effect/schema': ^0.60.6 - '@sinclair/typebox': ^0.32.11 - ajv: ^8.12.0 - arktype: ^1.0.29-alpha - effect: ^2.1.2 - fp-ts: ^2.16.2 - io-ts: ^2.2.21 - joi: ^17.12.0 - ow: ^0.28.2 - runtypes: ^6.7.0 - superstruct: ^1.0.3 - valibot: ^0.26.0 - vite: ^5.0.12 - yup: ^1.3.3 - zod: ^3.22.4 - peerDependenciesMeta: - '@deepkit/type': - optional: true - '@effect/schema': - optional: true - '@sinclair/typebox': - optional: true - ajv: - optional: true - arktype: - optional: true - effect: - optional: true - fp-ts: - optional: true - io-ts: - optional: true - joi: - optional: true - ow: - optional: true - runtypes: - optional: true - superstruct: - optional: true - valibot: - optional: true - vite: - optional: true - yup: - optional: true - zod: - optional: true - dependencies: - valibot: 0.26.0 - vite: 5.1.4(@types/node@20.10.1) - dev: false /@deno/shim-deno-test@0.5.0: resolution: {integrity: sha512-4nMhecpGlPi0cSzT67L+Tm+GOJqvuk8gqHBziqcUQOarnuIax1z96/gJHCSIz2Z0zhxE6Rzwb3IZXPtFh51j+w==} @@ -2227,6 +2150,7 @@ packages: engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} dependencies: '@sinclair/typebox': 0.27.8 + dev: true /@jridgewell/gen-mapping@0.3.3: resolution: {integrity: sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==} @@ -2640,57 +2564,6 @@ packages: resolution: {integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==} dev: true - /@preact/preset-vite@2.8.1(@babel/core@7.23.9)(preact@10.19.3)(vite@5.1.4): - resolution: {integrity: sha512-a9KV4opdj17X2gOFuGup0aE+sXYABX/tJi/QDptOrleX4FlnoZgDWvz45tHOdVfrZX+3uvVsIYPHxRsTerkDNA==} - peerDependencies: - '@babel/core': 7.x - vite: 2.x || 3.x || 4.x || 5.x - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-transform-react-jsx': 7.23.4(@babel/core@7.23.9) - '@babel/plugin-transform-react-jsx-development': 7.22.5(@babel/core@7.23.9) - '@prefresh/vite': 2.4.5(preact@10.19.3)(vite@5.1.4) - '@rollup/pluginutils': 4.2.1 - babel-plugin-transform-hook-names: 1.0.2(@babel/core@7.23.9) - debug: 4.3.4 - kolorist: 1.8.0 - magic-string: 0.30.5 - node-html-parser: 6.1.12 - resolve: 1.22.8 - vite: 5.1.4(@types/node@20.10.1) - transitivePeerDependencies: - - preact - - supports-color - - /@prefresh/babel-plugin@0.5.1: - resolution: {integrity: sha512-uG3jGEAysxWoyG3XkYfjYHgaySFrSsaEb4GagLzYaxlydbuREtaX+FTxuIidp241RaLl85XoHg9Ej6E4+V1pcg==} - - /@prefresh/core@1.5.2(preact@10.19.3): - resolution: {integrity: sha512-A/08vkaM1FogrCII5PZKCrygxSsc11obExBScm3JF1CryK2uDS3ZXeni7FeKCx1nYdUkj4UcJxzPzc1WliMzZA==} - peerDependencies: - preact: ^10.0.0 - dependencies: - preact: 10.19.3 - - /@prefresh/utils@1.2.0: - resolution: {integrity: sha512-KtC/fZw+oqtwOLUFM9UtiitB0JsVX0zLKNyRTA332sqREqSALIIQQxdUCS1P3xR/jT1e2e8/5rwH6gdcMLEmsQ==} - - /@prefresh/vite@2.4.5(preact@10.19.3)(vite@5.1.4): - resolution: {integrity: sha512-iForDVJ2M8gQYnm5pHumvTEJjGGc7YNYC0GVKnHFL+GvFfKHfH9Rpq67nUAzNbjuLEpqEOUuQVQajMazWu2ZNQ==} - peerDependencies: - preact: ^10.4.0 - vite: '>=2.0.0' - dependencies: - '@babel/core': 7.23.9 - '@prefresh/babel-plugin': 0.5.1 - '@prefresh/core': 1.5.2(preact@10.19.3) - '@prefresh/utils': 1.2.0 - '@rollup/pluginutils': 4.2.1 - preact: 10.19.3 - vite: 5.1.4(@types/node@20.10.1) - transitivePeerDependencies: - - supports-color - /@prisma/client@5.7.0(prisma@5.7.0): resolution: {integrity: sha512-cZmglCrfNbYpzUtz7HscVHl38e9CrUs31nrVoGUK1nIPXGgt8hT4jj2s657UXcNdQ/jBUxDgGmHyu2Nyrq1txg==} engines: {node: '>=16.13'} @@ -3040,6 +2913,7 @@ packages: /@sinclair/typebox@0.27.8: resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} + dev: true /@sindresorhus/merge-streams@2.3.0: resolution: {integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==} @@ -3052,28 +2926,21 @@ packages: dependencies: solid-js: 1.8.15 - /@solidjs/router@0.12.5(solid-js@1.8.15): - resolution: {integrity: sha512-UK9GnWPS1RmBf7w35DpWwqNgpVbKhon5eXOl7Xk+edPMTzzHkwPW2RytQKQ0BMRQOHzyM/WRetWLbIAubKdlog==} + /@solidjs/router@0.13.0(solid-js@1.8.15): + resolution: {integrity: sha512-YHLbFv9J53+iG4yVrh0vVdYiyXPTk892UyZ1jiMPsUXn2dYkX4552N+8SjvlKWWsmNmYxaoefM6jZn1YtVIUUg==} peerDependencies: solid-js: ^1.8.6 dependencies: solid-js: 1.8.15 - /@solidjs/router@0.8.4(solid-js@1.8.15): - resolution: {integrity: sha512-Gi/WVoVseGMKS1DBdT3pNAMgOzEOp6Q3dpgNd2mW9GUEnVocPmtyBjDvXwN6m7tjSGsqqfqJFXk7bm1hxabSRw==} - peerDependencies: - solid-js: ^1.5.3 - dependencies: - solid-js: 1.8.15 - - /@solidjs/testing-library@0.8.5(@solidjs/router@0.12.5)(solid-js@1.8.15): + /@solidjs/testing-library@0.8.5(@solidjs/router@0.13.0)(solid-js@1.8.15): resolution: {integrity: sha512-L9TowCoqdRQGB8ikODh9uHXrYTjCUZseVUG0tIVa836//qeSqXP4m0BKG66v9Zp1y1wRxok5qUW97GwrtEBMcw==} engines: {node: '>= 14'} peerDependencies: '@solidjs/router': '>=0.6.0' solid-js: '>=1.0.0' dependencies: - '@solidjs/router': 0.12.5(solid-js@1.8.15) + '@solidjs/router': 0.13.0(solid-js@1.8.15) '@testing-library/dom': 9.3.4 solid-js: 1.8.15 dev: true @@ -3131,6 +2998,7 @@ packages: lodash: 4.17.21 redent: 3.0.0 vitest: 1.2.1(@vitest/ui@1.1.0)(jsdom@24.0.0) + dev: true /@testing-library/user-event@14.5.1(@testing-library/dom@9.3.4): resolution: {integrity: sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==} @@ -3233,9 +3101,6 @@ packages: dependencies: '@types/unist': 2.0.10 - /@types/http-errors@2.0.4: - resolution: {integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==} - /@types/http-proxy@1.17.14: resolution: {integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==} dependencies: @@ -3264,9 +3129,6 @@ packages: dependencies: '@types/braces': 3.0.4 - /@types/mime@3.0.4: - resolution: {integrity: sha512-iJt33IQnVRkqeqC7PzBHPTC6fDlRNRW8vjrgqtScAhrmMwe8c4Eo7+fUGTa+XdWrpEgpyKWMYmi2dIwMAYRzPw==} - /@types/minimist@1.2.5: resolution: {integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==} dev: true @@ -3304,21 +3166,9 @@ packages: resolution: {integrity: sha512-blctEWbzUFzQx799RZjzzIdBJOXmE37YYEyDtKkx5Dg+V7o/zyyAxLPiI98A2jdTtDgxZleMdfV+7p8WbRJ1OQ==} dev: true - /@types/serve-static@1.15.5: - resolution: {integrity: sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==} - dependencies: - '@types/http-errors': 2.0.4 - '@types/mime': 3.0.4 - '@types/node': 20.10.1 - /@types/unist@2.0.10: resolution: {integrity: sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==} - /@types/ws@8.5.10: - resolution: {integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==} - dependencies: - '@types/node': 20.10.1 - /@typescript/twoslash@3.1.0: resolution: {integrity: sha512-kTwMUQ8xtAZaC4wb2XuLkPqFVBj2dNBueMQ89NWEuw87k2nLBbuafeG5cob/QEr6YduxIdTVUjix0MtC7mPlmg==} dependencies: @@ -3580,27 +3430,6 @@ packages: - encoding - supports-color - /@vinxi/devtools@0.2.0(@babel/core@7.23.9)(@testing-library/jest-dom@6.1.5)(preact@10.19.3)(vite@5.1.4): - resolution: {integrity: sha512-LpQp5zbiBhV4eo2w6AiJFtpZZj4LaRBOnzggIPTeSJYvgrxRMAqe/34Har3vVo+b7sPOjxFbE1zHZhLzaAcidw==} - dependencies: - '@preact/preset-vite': 2.8.1(@babel/core@7.23.9)(preact@10.19.3)(vite@5.1.4) - '@solidjs/router': 0.8.4(solid-js@1.8.15) - birpc: 0.2.15 - solid-js: 1.8.15 - vite-plugin-inspect: 0.7.42(vite@5.1.4) - vite-plugin-solid: 2.9.1(@testing-library/jest-dom@6.1.5)(solid-js@1.8.15)(vite@5.1.4) - ws: 8.16.0 - transitivePeerDependencies: - - '@babel/core' - - '@nuxt/kit' - - '@testing-library/jest-dom' - - bufferutil - - preact - - rollup - - supports-color - - utf-8-validate - - vite - /@vinxi/listhen@1.5.6: resolution: {integrity: sha512-WSN1z931BtasZJlgPp704zJFnQFRg7yzSjkm3MzAWQYe4uXFXlFr1hc5Ac2zae5/HDOz5x1/zDM5Cb54vTCnWw==} hasBin: true @@ -3625,10 +3454,10 @@ packages: transitivePeerDependencies: - uWebSockets.js - /@vinxi/plugin-directives@0.3.0(vinxi@0.3.9): - resolution: {integrity: sha512-diwK2D6mZGffF5z+CgG7DcRnpKrOgqyv8SfxdbOTLGQcxtrQ9IpuHfX+mbOttaIJFvoZ3pHGUKe7Gfgd0BuQ1A==} + /@vinxi/plugin-directives@0.3.1(vinxi@0.3.10): + resolution: {integrity: sha512-4qz5WifjmJ864VS8Ik9nUG0wAkt/xIcxFpP29RXogGLgccRnceBpWQi+ghw5rm0F6LP/YMAhhO5iFORXclWd0Q==} peerDependencies: - vinxi: ^0.3.0 + vinxi: ^0.3.10 dependencies: '@babel/parser': 7.23.9 acorn: 8.11.3 @@ -3639,7 +3468,7 @@ packages: magicast: 0.2.11 recast: 0.23.4 tslib: 2.6.2 - vinxi: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + vinxi: 0.3.10(@types/node@20.10.1)(debug@4.3.4) dev: false /@vinxi/plugin-mdx@3.7.1(@mdx-js/mdx@2.3.0): @@ -3654,34 +3483,34 @@ packages: unified: 9.2.2 vfile: 5.3.7 - /@vinxi/server-components@0.3.2(vinxi@0.3.9): - resolution: {integrity: sha512-DE8+IFN5K3p7A+bMJzdih8F8n8RF3x4DB2+QPBLo0zsD2lA8QdaXqm4FqTribcvgC7rKtu7y4zpjgiG4hMwG5Q==} + /@vinxi/server-components@0.3.3(vinxi@0.3.10): + resolution: {integrity: sha512-xaW92nj9HUMLyswPcCmsIXOsS3TJll0m9u3WEjWjLrtZWheHggina6+kTCSeltp/Qe8WlUfNU5G02Xy8L4xQxA==} peerDependencies: - vinxi: ^0.3.9 + vinxi: ^0.3.10 dependencies: - '@vinxi/plugin-directives': 0.3.0(vinxi@0.3.9) + '@vinxi/plugin-directives': 0.3.1(vinxi@0.3.10) acorn: 8.11.3 acorn-loose: 8.4.0 acorn-typescript: 1.4.13(acorn@8.11.3) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + vinxi: 0.3.10(@types/node@20.10.1)(debug@4.3.4) dev: false - /@vinxi/server-functions@0.3.1(vinxi@0.3.9): - resolution: {integrity: sha512-FsGskj97cWKytaU7OPK4fIW5x6F2i3Hks4wTCZOofiWz/O0GJkT2oDhNV5t6Agj07PGAjrRPwfcHnLoB9IGyHg==} + /@vinxi/server-functions@0.3.2(vinxi@0.3.10): + resolution: {integrity: sha512-PoARb1X480UE9jysPqltpzginBftna34GmZ3HyvRT+pnPfsGcuHOzZe/a18V/K04qk2yMRd7eeW42JF5O+wunw==} peerDependencies: - vinxi: ^0.3.7 + vinxi: ^0.3.10 dependencies: - '@vinxi/plugin-directives': 0.3.0(vinxi@0.3.9) + '@vinxi/plugin-directives': 0.3.1(vinxi@0.3.10) acorn: 8.11.3 acorn-loose: 8.4.0 acorn-typescript: 1.4.13(acorn@8.11.3) astring: 1.8.6 magicast: 0.2.11 recast: 0.23.4 - vinxi: 0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3) + vinxi: 0.3.10(@types/node@20.10.1)(debug@4.3.4) dev: false /@vitest/expect@1.2.1: @@ -3690,6 +3519,7 @@ packages: '@vitest/spy': 1.2.1 '@vitest/utils': 1.2.1 chai: 4.4.1 + dev: true /@vitest/runner@1.2.1: resolution: {integrity: sha512-zc2dP5LQpzNzbpaBt7OeYAvmIsRS1KpZQw4G3WM/yqSV1cQKNKwLGmnm79GyZZjMhQGlRcSFMImLjZaUQvNVZQ==} @@ -3697,6 +3527,7 @@ packages: '@vitest/utils': 1.2.1 p-limit: 5.0.0 pathe: 1.1.2 + dev: true /@vitest/snapshot@1.2.1: resolution: {integrity: sha512-Tmp/IcYEemKaqAYCS08sh0vORLJkMr0NRV76Gl8sHGxXT5151cITJCET20063wk0Yr/1koQ6dnmP6eEqezmd/Q==} @@ -3704,11 +3535,13 @@ packages: magic-string: 0.30.6 pathe: 1.1.2 pretty-format: 29.7.0 + dev: true /@vitest/spy@1.2.1: resolution: {integrity: sha512-vG3a/b7INKH7L49Lbp0IWrG6sw9j4waWAucwnksPB1r1FTJgV7nkBByd9ufzu6VWya/QTvQW4V9FShZbZIB2UQ==} dependencies: tinyspy: 2.2.0 + dev: true /@vitest/ui@1.1.0(vitest@1.2.1): resolution: {integrity: sha512-7yU1QRFBplz0xJqcgt+agcbrNFdBmLo8UUppdKkFmYx+Ih0+yMYQOyr7kOB+YoggJY/p5ZzXxdbiOz7NBX2y+w==} @@ -3723,6 +3556,7 @@ packages: picocolors: 1.0.0 sirv: 2.0.4 vitest: 1.2.1(@vitest/ui@1.1.0)(jsdom@24.0.0) + dev: true /@vitest/utils@1.1.0: resolution: {integrity: sha512-z+s510fKmYz4Y41XhNs3vcuFTFhcij2YF7F8VQfMEYAAUfqQh0Zfg7+w9xdgFGhPf3tX3TicAe+8BDITk6ampQ==} @@ -3730,6 +3564,7 @@ packages: diff-sequences: 29.6.3 loupe: 2.3.7 pretty-format: 29.7.0 + dev: true /@vitest/utils@1.2.1: resolution: {integrity: sha512-bsH6WVZYe/J2v3+81M5LDU8kW76xWObKIURpPrOXm2pjBniBu2MERI/XP60GpS4PHU3jyK50LUutOwrx4CyHUg==} @@ -3738,6 +3573,7 @@ packages: estree-walker: 3.0.3 loupe: 2.3.7 pretty-format: 29.7.0 + dev: true /abbrev@1.1.1: resolution: {integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==} @@ -3801,6 +3637,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /ajv@6.12.6: resolution: {integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==} @@ -3843,6 +3680,7 @@ packages: /ansi-styles@5.2.0: resolution: {integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==} engines: {node: '>=10'} + dev: true /ansi-styles@6.2.1: resolution: {integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==} @@ -3913,6 +3751,7 @@ packages: resolution: {integrity: sha512-b0P0sZPKtyu8HkeRAfCq0IfURZK+SuwMjY1UXGBU27wpAiTwQAIlq56IbIO+ytk/JjS1fMR14ee5WBBfKi5J6A==} dependencies: dequal: 2.0.3 + dev: true /array-buffer-byte-length@1.0.0: resolution: {integrity: sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==} @@ -3983,6 +3822,7 @@ packages: /assertion-error@1.1.0: resolution: {integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==} + dev: true /ast-types@0.16.1: resolution: {integrity: sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==} @@ -4003,6 +3843,7 @@ packages: /asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} + dev: true /autoprefixer@10.4.14(postcss@8.4.26): resolution: {integrity: sha512-FQzyfOsTlwVzjHxKEqRIAdJx9niO6VCBCoEwax/VLSoQF29ggECcPuBqUMZ+u8jCZOPSy8b8/8KnuFbp0SaFZQ==} @@ -4063,13 +3904,6 @@ packages: html-entities: 2.3.3 validate-html-nesting: 1.2.2 - /babel-plugin-transform-hook-names@1.0.2(@babel/core@7.23.9): - resolution: {integrity: sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==} - peerDependencies: - '@babel/core': ^7.12.10 - dependencies: - '@babel/core': 7.23.9 - /babel-preset-solid@1.8.12(@babel/core@7.23.9): resolution: {integrity: sha512-Fx1dYokeRwouWqjLkdobA6qvTAPxFSEU2c5PlkfJjlNyONlSMJQPaX0Bae5pc+5/LNteb9BseOp4UHwQu6VC9Q==} peerDependencies: @@ -4103,6 +3937,7 @@ packages: /big-integer@1.6.52: resolution: {integrity: sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==} engines: {node: '>=0.6'} + dev: false /binary-extensions@2.2.0: resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==} @@ -4113,15 +3948,13 @@ packages: dependencies: file-uri-to-path: 1.0.0 - /birpc@0.2.15: - resolution: {integrity: sha512-LuZgWLW6DB1zenkfJuF4/kfSZdazOR2xaMSzeqgvfbNIwECwV1AJso9wpNje79uaRU86Obbujv4qtDnwoOLQww==} - /blake3-wasm@2.1.5: resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==} dev: false /boolbase@1.0.0: resolution: {integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==} + dev: false /boxen@7.1.1: resolution: {integrity: sha512-2hCgjEmP8YLWQ130n2FerGv7rYpfBmnmp9Uy2Le1vge6X3gZIfSmEzP5QTDElFxcvVcXlEn8Aq6MU/PZygIOog==} @@ -4141,6 +3974,7 @@ packages: engines: {node: '>= 5.10.0'} dependencies: big-integer: 1.6.52 + dev: false /brace-expansion@1.1.11: resolution: {integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==} @@ -4190,6 +4024,7 @@ packages: engines: {node: '>=12'} dependencies: run-applescript: 5.0.0 + dev: false /c12@1.9.0: resolution: {integrity: sha512-7KTCZXdIbOA2hLRQ+1KzJ15Qp9Wn58one74dkihMVp2H6EzKTa3OYBy0BSfS1CCcmxYyqeX8L02m40zjQ+dstg==} @@ -4279,6 +4114,7 @@ packages: loupe: 2.3.7 pathval: 1.1.1 type-detect: 4.0.8 + dev: true /chalk@2.4.2: resolution: {integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==} @@ -4294,6 +4130,7 @@ packages: dependencies: ansi-styles: 4.3.0 supports-color: 7.2.0 + dev: true /chalk@4.1.2: resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} @@ -4327,6 +4164,7 @@ packages: resolution: {integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==} dependencies: get-func-name: 2.0.2 + dev: true /chokidar@3.5.3: resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} @@ -4446,6 +4284,7 @@ packages: engines: {node: '>= 0.8'} dependencies: delayed-stream: 1.0.0 + dev: true /comma-separated-tokens@2.0.3: resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==} @@ -4587,15 +4426,6 @@ packages: nth-check: 2.1.1 dev: false - /css-select@5.1.0: - resolution: {integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==} - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - /css-tree@1.1.3: resolution: {integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==} engines: {node: '>=8.0.0'} @@ -4615,9 +4445,11 @@ packages: /css-what@6.1.0: resolution: {integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==} engines: {node: '>= 6'} + dev: false /css.escape@1.5.1: resolution: {integrity: sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==} + dev: true /cssesc@3.0.0: resolution: {integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==} @@ -4695,6 +4527,7 @@ packages: engines: {node: '>=18'} dependencies: rrweb-cssom: 0.6.0 + dev: true /csstype@3.1.3: resolution: {integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==} @@ -4738,6 +4571,7 @@ packages: dependencies: whatwg-mimetype: 4.0.0 whatwg-url: 14.0.0 + dev: true /date-fns@2.30.0: resolution: {integrity: sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==} @@ -4802,6 +4636,7 @@ packages: /decimal.js@10.4.3: resolution: {integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==} + dev: true /decode-named-character-reference@1.0.2: resolution: {integrity: sha512-O8x12RzrUF8xyVcY0KJowWsmaJxQbmy0/EtnNtHRpsOcT7dFk5W598coHqBVpmWo1oQQfsCqfCmkZN5DJrZVdg==} @@ -4813,6 +4648,7 @@ packages: engines: {node: '>=6'} dependencies: type-detect: 4.0.8 + dev: true /deep-equal@2.2.3: resolution: {integrity: sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==} @@ -4848,6 +4684,7 @@ packages: dependencies: bplist-parser: 0.2.0 untildify: 4.0.0 + dev: false /default-browser@4.0.0: resolution: {integrity: sha512-wX5pXO1+BrhMkSbROFsyxUm0i/cJEScyNhA4PPxc41ICuv05ZZB/MX28s8aZx6xjmatvebIapF6hLEKEcpneUA==} @@ -4857,6 +4694,7 @@ packages: default-browser-id: 3.0.0 execa: 7.2.0 titleize: 3.0.0 + dev: false /defaults@1.0.4: resolution: {integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==} @@ -4879,6 +4717,7 @@ packages: /define-lazy-prop@3.0.0: resolution: {integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==} engines: {node: '>=12'} + dev: false /define-properties@1.2.1: resolution: {integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==} @@ -4898,6 +4737,7 @@ packages: /delayed-stream@1.0.0: resolution: {integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==} engines: {node: '>=0.4.0'} + dev: true /delegates@1.0.0: resolution: {integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==} @@ -4944,6 +4784,7 @@ packages: /diff-sequences@29.6.3: resolution: {integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==} engines: {node: ^14.15.0 || ^16.10.0 || >=18.0.0} + dev: true /diff@5.1.0: resolution: {integrity: sha512-D+mk+qE8VC/PAUrlAU34N+VfXev0ghe5ywmpqrawphmVZc1bEfn56uo9qpyGp1p4xpzOHkSW4ztBd6L7Xx4ACw==} @@ -4961,6 +4802,7 @@ packages: /dom-accessibility-api@0.5.16: resolution: {integrity: sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==} + dev: true /dom-serializer@1.4.1: resolution: {integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==} @@ -4970,15 +4812,9 @@ packages: entities: 2.2.0 dev: false - /dom-serializer@2.0.0: - resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==} - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - /domelementtype@2.3.0: resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==} + dev: false /domhandler@4.3.1: resolution: {integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==} @@ -4987,12 +4823,6 @@ packages: domelementtype: 2.3.0 dev: false - /domhandler@5.0.3: - resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==} - engines: {node: '>= 4'} - dependencies: - domelementtype: 2.3.0 - /domutils@2.8.0: resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==} dependencies: @@ -5001,13 +4831,6 @@ packages: domhandler: 4.3.1 dev: false - /domutils@3.1.0: - resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==} - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - /dot-prop@8.0.2: resolution: {integrity: sha512-xaBe6ZT4DHPkg0k4Ytbvn5xoxgpG0jOS1dYxSOwAHPuNLjP3/OzN0gH55SrLqpx8cBfSaVt91lXYkApjb+nYdQ==} engines: {node: '>=16'} @@ -5032,7 +4855,7 @@ packages: dev: true /ee-first@1.1.1: - resolution: {integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==} + resolution: {integrity: sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=} /electron-to-chromium@1.4.656: resolution: {integrity: sha512-9AQB5eFTHyR3Gvt2t/NwR0le2jBSUNwCnMbUCejFWHD+so4tH40/dRLgoE+jxlPeWS43XJewyvCv+I8LPMl49Q==} @@ -5062,6 +4885,7 @@ packages: /entities@4.5.0: resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==} engines: {node: '>=0.12'} + dev: true /error-ex@1.3.2: resolution: {integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==} @@ -5069,9 +4893,6 @@ packages: is-arrayish: 0.2.1 dev: true - /error-stack-parser-es@0.1.1: - resolution: {integrity: sha512-g/9rfnvnagiNf+DRMHEVGuGuIBlCIMDFoTA616HaP2l9PlCjGjVhD98PNbVSJvmK4TttqT5mV5tInMhoFgi+aA==} - /error-stack-parser@2.1.4: resolution: {integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==} dependencies: @@ -5412,6 +5233,7 @@ packages: onetime: 5.1.2 signal-exit: 3.0.7 strip-final-newline: 2.0.0 + dev: false /execa@7.2.0: resolution: {integrity: sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==} @@ -5426,6 +5248,7 @@ packages: onetime: 6.0.0 signal-exit: 3.0.7 strip-final-newline: 3.0.0 + dev: false /execa@8.0.1: resolution: {integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==} @@ -5516,6 +5339,7 @@ packages: /fflate@0.8.1: resolution: {integrity: sha512-/exOvEuc+/iaUm105QIiOt4LpBdMTWsXxqR0HDF35vx3fmaKzw7354gTilCh5rkzEt8WYyG//ku3h3nRmd7CHQ==} + dev: true /file-uri-to-path@1.0.0: resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==} @@ -5554,6 +5378,7 @@ packages: /flatted@3.2.9: resolution: {integrity: sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==} + dev: true /follow-redirects@1.15.5(debug@4.3.4): resolution: {integrity: sha512-vSFWUON1B+yAw1VN4xMfxgn5fTUiaOzAJCKBwIIgT/+7CuGy9+r+5gITvP62j3RmaD5Ph65UaERdOSRGUzZtgw==} @@ -5598,6 +5423,7 @@ packages: asynckit: 0.4.0 combined-stream: 1.0.8 mime-types: 2.1.35 + dev: true /format@0.2.2: resolution: {integrity: sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==} @@ -5695,6 +5521,7 @@ packages: /get-func-name@2.0.2: resolution: {integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==} + dev: true /get-intrinsic@1.2.2: resolution: {integrity: sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==} @@ -5717,6 +5544,7 @@ packages: /get-stream@6.0.1: resolution: {integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==} engines: {node: '>=10'} + dev: false /get-stream@8.0.1: resolution: {integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==} @@ -5927,6 +5755,7 @@ packages: /has-flag@4.0.0: resolution: {integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==} engines: {node: '>=8'} + dev: true /has-property-descriptors@1.0.1: resolution: {integrity: sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==} @@ -6051,10 +5880,6 @@ packages: space-separated-tokens: 2.0.2 dev: false - /he@1.2.0: - resolution: {integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==} - hasBin: true - /hookable@5.5.3: resolution: {integrity: sha512-Yc+BQe8SvoXH1643Qez1zqLRmbA5rCL+sSmk6TVos0LWVfNIB7PGncdlId77WzLGSIB5KaWgTaNTs2lNVEI6VQ==} @@ -6067,6 +5892,7 @@ packages: engines: {node: '>=18'} dependencies: whatwg-encoding: 3.1.1 + dev: true /html-entities@2.3.3: resolution: {integrity: sha512-DV5Ln36z34NNTDgnz0EWGBLZENelNAtkiFA4kyNOG2tDI6Mz1uSWiq1wAKdyjnJwyDiDO7Fa2SO1CTxPXL8VxA==} @@ -6097,6 +5923,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /http-proxy@1.18.1(debug@4.3.4): resolution: {integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==} @@ -6138,6 +5965,7 @@ packages: debug: 4.3.4 transitivePeerDependencies: - supports-color + dev: true /httpxy@0.1.5: resolution: {integrity: sha512-hqLDO+rfststuyEUTWObQK6zHEEmZ/kaIP2/zclGGZn6X8h/ESTWg+WKecQ/e5k4nPswjzZD+q2VqZIbr15CoQ==} @@ -6149,10 +5977,12 @@ packages: /human-signals@2.1.0: resolution: {integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==} engines: {node: '>=10.17.0'} + dev: false /human-signals@4.3.1: resolution: {integrity: sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==} engines: {node: '>=14.18.0'} + dev: false /human-signals@5.0.0: resolution: {integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==} @@ -6170,6 +6000,7 @@ packages: engines: {node: '>=0.10.0'} dependencies: safer-buffer: 2.1.2 + dev: true /ignore@5.3.1: resolution: {integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==} @@ -6178,6 +6009,7 @@ packages: /indent-string@4.0.0: resolution: {integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==} engines: {node: '>=8'} + dev: true /inflight@1.0.6: resolution: {integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==} @@ -6395,6 +6227,7 @@ packages: /is-potential-custom-element-name@1.0.1: resolution: {integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==} + dev: true /is-primitive@3.0.1: resolution: {integrity: sha512-GljRxhWvlCNRfZyORiH77FwdFwGcMO620o37EOYC0ORWdq+WYNVqW0w2Juzew4M+L81l6/QS3t5gkkihyRqv9w==} @@ -6431,6 +6264,7 @@ packages: /is-stream@2.0.1: resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==} engines: {node: '>=8'} + dev: false /is-stream@3.0.0: resolution: {integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==} @@ -6601,6 +6435,7 @@ packages: - bufferutil - supports-color - utf-8-validate + dev: true /jsesc@2.5.2: resolution: {integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==} @@ -6672,6 +6507,7 @@ packages: /kolorist@1.8.0: resolution: {integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==} + dev: false /lazystream@1.0.1: resolution: {integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==} @@ -6818,6 +6654,7 @@ packages: resolution: {integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==} dependencies: get-func-name: 2.0.2 + dev: true /lru-cache@10.2.0: resolution: {integrity: sha512-2bIM8x+VAf6JT4bKAljS1qUWgMsqZRPGJS6FSahIMPVvctcNhyVp7AJu7quxOW9jwkryBReKZY5tY5JYv2n/7Q==} @@ -6851,12 +6688,6 @@ packages: sourcemap-codec: 1.4.8 dev: false - /magic-string@0.30.5: - resolution: {integrity: sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==} - engines: {node: '>=12'} - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - /magic-string@0.30.6: resolution: {integrity: sha512-n62qCLbPjNjyo+owKtveQxZFZTBm+Ms6YoGD23Wew6Vw337PElFNifQpknPruVRQV57kVShPnLGo9vWxVhpPvA==} engines: {node: '>=12'} @@ -7318,12 +7149,14 @@ packages: /mime-db@1.52.0: resolution: {integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==} engines: {node: '>= 0.6'} + dev: true /mime-types@2.1.35: resolution: {integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==} engines: {node: '>= 0.6'} dependencies: mime-db: 1.52.0 + dev: true /mime@1.6.0: resolution: {integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==} @@ -7343,6 +7176,7 @@ packages: /mimic-fn@2.1.0: resolution: {integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==} engines: {node: '>=6'} + dev: false /mimic-fn@4.0.0: resolution: {integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==} @@ -7351,6 +7185,7 @@ packages: /min-indent@1.0.1: resolution: {integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==} engines: {node: '>=4'} + dev: true /miniflare@3.20231030.4: resolution: {integrity: sha512-7MBz0ArLuDop1WJGZC6tFgN6c5MRyDOIlxbm3yp0TRBpvDS/KsTuWCQcCjsxN4QQ5zvL3JTkuIZbQzRRw/j6ow==} @@ -7442,7 +7277,7 @@ packages: acorn: 8.11.3 pathe: 1.1.2 pkg-types: 1.0.3 - ufo: 1.3.2 + ufo: 1.4.0 /mlly@1.6.1: resolution: {integrity: sha512-vLgaHvaeunuOXHSmEbZ9izxPx3USsk8KCQ8iC+aTlp5sKRSoZvwhHh5L9VbKSaVC6sJDqbyohIS76E2VmHIPAA==} @@ -7614,12 +7449,6 @@ packages: resolution: {integrity: sha512-u6fs2AEUljNho3EYTJNBfImO5QTo/J/1Etd+NVdCj7qWKUSN/bSLkZwhDv7I+w/MSC6qJ4cknepkAYykDdK8og==} hasBin: true - /node-html-parser@6.1.12: - resolution: {integrity: sha512-/bT/Ncmv+fbMGX96XG9g05vFt43m/+SYKIs9oAemQVYyVcZmDAI2Xq/SbNcpOA35eF0Zk2av3Ksf+Xk8Vt8abA==} - dependencies: - css-select: 5.1.0 - he: 1.2.0 - /node-releases@2.0.14: resolution: {integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==} @@ -7658,6 +7487,7 @@ packages: engines: {node: '>=8'} dependencies: path-key: 3.1.1 + dev: false /npm-run-path@5.2.0: resolution: {integrity: sha512-W4/tgAXFqFA0iL7fk0+uQ3g7wkL8xJmx3XdK0VGb4cHW//eZTtKGvFBBoRKVTpY7n6ze4NL9ly7rgXcHufqXKg==} @@ -7677,9 +7507,11 @@ packages: resolution: {integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==} dependencies: boolbase: 1.0.0 + dev: false /nwsapi@2.2.7: resolution: {integrity: sha512-ub5E4+FBPKwAZx0UwIQOjYWGHTEq5sPqHQNRN8Z9e4A7u3Tj1weLJsL59yH9vmvqEtBHaOmT6cYQKIZOxp35FQ==} + dev: true /nypm@0.3.6: resolution: {integrity: sha512-2CATJh3pd6CyNfU5VZM7qSwFu0ieyabkEdnogE30Obn1czrmOYiZ8DOZLe1yBdLKWoyD3Mcy2maUs+0MR3yVjQ==} @@ -7753,6 +7585,7 @@ packages: engines: {node: '>=6'} dependencies: mimic-fn: 2.1.0 + dev: false /onetime@6.0.0: resolution: {integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==} @@ -7776,6 +7609,7 @@ packages: define-lazy-prop: 3.0.0 is-inside-container: 1.0.0 is-wsl: 2.2.0 + dev: false /openapi-typescript@6.7.4: resolution: {integrity: sha512-EZyeW9Wy7UDCKv0iYmKrq2pVZtquXiD/YHiUClAKqiMi42nodx/EQH11K6fLqjt1IZlJmVokrAsExsBMM2RROQ==} @@ -7822,6 +7656,7 @@ packages: engines: {node: '>=18'} dependencies: yocto-queue: 1.0.0 + dev: true /p-locate@4.1.0: resolution: {integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==} @@ -7876,6 +7711,7 @@ packages: resolution: {integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==} dependencies: entities: 4.5.0 + dev: true /parseurl@1.3.3: resolution: {integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==} @@ -7924,6 +7760,7 @@ packages: /pathval@1.1.1: resolution: {integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==} + dev: true /perfect-debounce@1.0.0: resolution: {integrity: sha512-xCy9V055GLEqoFaHoC1SoLIaLmWctgCUaBaWxDZ7/Zx4CTyX7cJQLJOok/orfjZAh9kEYpjJa4d0KcJmCbctZA==} @@ -7970,7 +7807,7 @@ packages: resolution: {integrity: sha512-nN7pYi0AQqJnoLPC9eHFQ8AcyaixBUOwvqc5TDnIKCMEE6I0y8P7OKA7fPexsXGCGxQDl/cmrLAp26LhcwxZ4A==} dependencies: jsonc-parser: 3.2.1 - mlly: 1.5.0 + mlly: 1.6.1 pathe: 1.1.2 /postcss-calc@8.2.4(postcss@8.4.35): @@ -8416,9 +8253,6 @@ packages: picocolors: 1.0.0 source-map-js: 1.0.2 - /preact@10.19.3: - resolution: {integrity: sha512-nHHTeFVBTHRGxJXKkKu5hT8C/YWBkPso4/Gad6xuj5dbptt9iF9NZr9pHbPhBrnT2klheu7mHTxTZ/LjwJiEiQ==} - /preferred-pm@3.1.2: resolution: {integrity: sha512-nk7dKrcW8hfCZ4H6klWcdRknBOXWzNQByJ0oJyX97BOupsYD+FzLS4hflgEu/uPUEHZCuRfMxzCBsuWd7OzT8Q==} engines: {node: '>=10'} @@ -8455,6 +8289,7 @@ packages: '@jest/schemas': 29.6.3 ansi-styles: 5.2.0 react-is: 18.2.0 + dev: true /printable-characters@1.0.42: resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==} @@ -8481,10 +8316,12 @@ packages: /psl@1.9.0: resolution: {integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==} + dev: true /punycode@2.3.1: resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==} engines: {node: '>=6'} + dev: true /qs@6.5.3: resolution: {integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==} @@ -8493,6 +8330,7 @@ packages: /querystringify@2.2.0: resolution: {integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==} + dev: true /queue-microtask@1.2.3: resolution: {integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==} @@ -8530,6 +8368,7 @@ packages: /react-is@18.2.0: resolution: {integrity: sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==} + dev: true /read-cache@1.0.0: resolution: {integrity: sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==} @@ -8612,6 +8451,7 @@ packages: dependencies: indent-string: 4.0.0 strip-indent: 3.0.0 + dev: true /redis-errors@1.2.0: resolution: {integrity: sha512-1qny3OExCf0UvUV/5wpYKf2YwPcOqXzkwKKSmKHiE6ZMQs5heeE/c8eXK+PNllPvmjgAbfnsbpkGZWy8cBpn9w==} @@ -8880,12 +8720,14 @@ packages: /rrweb-cssom@0.6.0: resolution: {integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==} + dev: true /run-applescript@5.0.0: resolution: {integrity: sha512-XcT5rBksx1QdIhlFOCtgZkB99ZEouFZ1E2Kc2LHqNW13U3/74YGdkQRmThTwxy4QIyookibDKYZOPqX//6BlAg==} engines: {node: '>=12'} dependencies: execa: 5.1.1 + dev: false /run-parallel@1.2.0: resolution: {integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==} @@ -8925,12 +8767,14 @@ packages: /safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + dev: true /saxes@6.0.0: resolution: {integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==} engines: {node: '>=v12.22.7'} dependencies: xmlchars: 2.2.0 + dev: true /scule@1.3.0: resolution: {integrity: sha512-6FtHJEvt+pVMIB9IBY+IcCJ6Z5f1iQnytgyfKMhDKgmzYG+TeH/wx1y3l27rshSbLiSanrR9ffZDrEsmjlQF2g==} @@ -9123,6 +8967,7 @@ packages: /siginfo@2.0.0: resolution: {integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==} + dev: true /signal-exit@3.0.7: resolution: {integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==} @@ -9328,6 +9173,7 @@ packages: /stackback@0.0.2: resolution: {integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==} + dev: true /stackframe@1.3.4: resolution: {integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==} @@ -9451,6 +9297,7 @@ packages: /strip-final-newline@2.0.0: resolution: {integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==} engines: {node: '>=6'} + dev: false /strip-final-newline@3.0.0: resolution: {integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==} @@ -9461,6 +9308,7 @@ packages: engines: {node: '>=8'} dependencies: min-indent: 1.0.1 + dev: true /strip-literal@1.3.0: resolution: {integrity: sha512-PugKzOsyXpArk0yWmUwqOZecSO0GH0bPoctLcqNDH9J04pVW3lflYE0ujElBGTloevcxF5MofAOZ7C5l2b+wLg==} @@ -9507,6 +9355,7 @@ packages: engines: {node: '>=8'} dependencies: has-flag: 4.0.0 + dev: true /supports-color@9.4.0: resolution: {integrity: sha512-VL+lNrEoIXww1coLPOmiEmK/0sGigko5COxI09KzHc2VJXJsQ37UaQ+8quuxjDeA7+KnLGTWRyOXSLLR2Wb4jw==} @@ -9532,6 +9381,7 @@ packages: /symbol-tree@3.2.4: resolution: {integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==} + dev: true /system-architecture@0.1.0: resolution: {integrity: sha512-ulAk51I9UVUyJgxlv9M6lFot2WP3e7t8Kz9+IS6D4rVba1tR9kON+Ey69f+1R4Q8cd45Lod6a4IcJIxnzGc/zA==} @@ -9657,14 +9507,17 @@ packages: /tinybench@2.6.0: resolution: {integrity: sha512-N8hW3PG/3aOoZAN5V/NSAEDz0ZixDSSt5b/a05iqtpgfLWMSVuCo7w0k2vVvEjdrIoeGqZzweX2WlyioNIHchA==} + dev: true /tinypool@0.8.2: resolution: {integrity: sha512-SUszKYe5wgsxnNOVlBYO6IC+8VGWdVGZWAqUxp3UErNBtptZvWbwyUOyzNL59zigz2rCA92QiL3wvG+JDSdJdQ==} engines: {node: '>=14.0.0'} + dev: true /tinyspy@2.2.0: resolution: {integrity: sha512-d2eda04AN/cPOR89F7Xv5bK/jrQEhmcLFe6HFldoeO9AJtps+fqEnh486vnT/8y4bw38pSyxDcTCAq+Ks2aJTg==} engines: {node: '>=14.0.0'} + dev: true /tippy.js@6.3.7: resolution: {integrity: sha512-E1d3oP2emgJ9dRQZdf3Kkn0qJgI6ZLpyS5z6ZkY1DF3kaQaBsGZsndEpHwx+eC+tYM41HaSNvNtLx8tU57FzTQ==} @@ -9675,6 +9528,7 @@ packages: /titleize@3.0.0: resolution: {integrity: sha512-KxVu8EYHDPBdUYdKZdKtU2aj2XfEx9AfjXxE/Aj0vT06w2icA09Vus1rh6eSu1y01akYg6BjIK/hxyLJINoMLQ==} engines: {node: '>=12'} + dev: false /tmp@0.0.33: resolution: {integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==} @@ -9721,6 +9575,7 @@ packages: punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 + dev: true /tr46@0.0.3: resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} @@ -9730,6 +9585,7 @@ packages: engines: {node: '>=18'} dependencies: punycode: 2.3.1 + dev: true /trim-lines@3.0.1: resolution: {integrity: sha512-kRj8B+YHZCc9kQYdWfJB2/oUl9rA99qbowYYBtr4ui4mZyAQ2JpvVBd/6U2YloATfqBhBTSMhTpgBHtU0Mf3Rg==} @@ -9844,6 +9700,7 @@ packages: /type-detect@4.0.8: resolution: {integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==} engines: {node: '>=4'} + dev: true /type-fest@0.13.1: resolution: {integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==} @@ -9932,7 +9789,7 @@ packages: '@antfu/utils': 0.7.7 defu: 6.1.4 jiti: 1.21.0 - mlly: 1.5.0 + mlly: 1.6.1 dev: false /uncrypto@0.1.3: @@ -9961,7 +9818,7 @@ packages: consola: 3.2.3 defu: 6.1.4 mime: 3.0.0 - node-fetch-native: 1.6.1 + node-fetch-native: 1.6.2 pathe: 1.1.2 /unicorn-magic@0.1.0: @@ -10083,6 +9940,7 @@ packages: /universalify@0.2.0: resolution: {integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==} engines: {node: '>= 4.0.0'} + dev: true /universalify@2.0.1: resolution: {integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==} @@ -10193,12 +10051,13 @@ packages: /untildify@4.0.0: resolution: {integrity: sha512-KK8xQ1mkzZeg9inewmFVDNkg3l5LUhoq9kN6iWYB/CC9YMG8HA+c1Q8HwDe6dEX7kErrEVNVBO3fWsVq5iDgtw==} engines: {node: '>=8'} + dev: false /untun@0.1.3: resolution: {integrity: sha512-4luGP9LMYszMRZwsvyUd9MrxgEGZdZuZgpVQHEEX0lCYFESasVRvZd0EYpCkOIbJKHMuv0LskpXc/8Un+MJzEQ==} hasBin: true dependencies: - citty: 0.1.5 + citty: 0.1.6 consola: 3.2.3 pathe: 1.1.2 @@ -10235,6 +10094,7 @@ packages: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 + dev: true /urlpattern-polyfill@8.0.2: resolution: {integrity: sha512-Qp95D4TPJl1kC9SKigDcqgyM2VDVO4RiJc2d4qe5GrYm+zbIQCWWKAFaJNQ4BhdFeDGwBmAxqJBwWSJDb9T3BQ==} @@ -10325,17 +10185,14 @@ packages: unist-util-stringify-position: 3.0.3 vfile-message: 3.1.4 - /vinxi@0.3.9(@testing-library/jest-dom@6.1.5)(debug@4.3.4)(preact@10.19.3): - resolution: {integrity: sha512-+TKbWrmbNpDGn4QvJcbO3LonFpH4L0SVWOyI63WZ2zT94pJrSvyt+BefEcTlvYAJiKZUFPxkjUlNzsUdCRjZpg==} + /vinxi@0.3.10(@types/node@20.10.1)(debug@4.3.4): + resolution: {integrity: sha512-jy7YoztZSujECNsnpf5b4laUGVT5Xd8CSl/gbDiG4zF6toIDi5zquMzIPPD51e46xtNX3hVT/TRsZ8x3pWDfcA==} hasBin: true dependencies: '@babel/core': 7.23.9 '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) '@types/micromatch': 4.0.6 - '@types/serve-static': 1.15.5 - '@types/ws': 8.5.10 - '@vinxi/devtools': 0.2.0(@babel/core@7.23.9)(@testing-library/jest-dom@6.1.5)(preact@10.19.3)(vite@5.1.4) '@vinxi/listhen': 1.5.6 boxen: 7.1.1 chokidar: 3.6.0 @@ -10365,7 +10222,6 @@ packages: unenv: 1.9.0 unstorage: 1.10.1 vite: 5.1.4(@types/node@20.10.1) - ws: 8.16.0 zod: 3.22.4 transitivePeerDependencies: - '@azure/app-configuration' @@ -10377,107 +10233,23 @@ packages: - '@capacitor/preferences' - '@libsql/client' - '@netlify/blobs' - - '@nuxt/kit' - '@planetscale/database' - - '@testing-library/jest-dom' - '@types/node' - '@upstash/redis' - '@vercel/kv' - better-sqlite3 - - bufferutil - debug - drizzle-orm - encoding - idb-keyval - less - lightningcss - - preact - - rollup - sass - stylus - sugarss - supports-color - terser - uWebSockets.js - - utf-8-validate - - xml2js - dev: true - - /vinxi@0.3.9(@types/node@20.10.1)(debug@4.3.4)(preact@10.19.3): - resolution: {integrity: sha512-+TKbWrmbNpDGn4QvJcbO3LonFpH4L0SVWOyI63WZ2zT94pJrSvyt+BefEcTlvYAJiKZUFPxkjUlNzsUdCRjZpg==} - hasBin: true - dependencies: - '@babel/core': 7.23.9 - '@babel/plugin-syntax-jsx': 7.23.3(@babel/core@7.23.9) - '@babel/plugin-syntax-typescript': 7.23.3(@babel/core@7.23.9) - '@types/micromatch': 4.0.6 - '@types/serve-static': 1.15.5 - '@types/ws': 8.5.10 - '@vinxi/devtools': 0.2.0(@babel/core@7.23.9)(@testing-library/jest-dom@6.1.5)(preact@10.19.3)(vite@5.1.4) - '@vinxi/listhen': 1.5.6 - boxen: 7.1.1 - chokidar: 3.6.0 - citty: 0.1.6 - consola: 3.2.3 - crossws: 0.2.4 - dax-sh: 0.39.1 - defu: 6.1.4 - es-module-lexer: 1.4.1 - esbuild: 0.18.20 - fast-glob: 3.3.2 - get-port-please: 3.1.2 - h3: 1.11.1 - hookable: 5.5.3 - http-proxy: 1.18.1(debug@4.3.4) - micromatch: 4.0.5 - nitropack: 2.9.1 - node-fetch-native: 1.6.2 - path-to-regexp: 6.2.1 - pathe: 1.1.2 - radix3: 1.1.0 - resolve: 1.22.8 - serve-placeholder: 2.0.1 - serve-static: 1.15.0 - ufo: 1.4.0 - unctx: 2.3.1 - unenv: 1.9.0 - unstorage: 1.10.1 - vite: 5.1.4(@types/node@20.10.1) - ws: 8.16.0 - zod: 3.22.4 - transitivePeerDependencies: - - '@azure/app-configuration' - - '@azure/cosmos' - - '@azure/data-tables' - - '@azure/identity' - - '@azure/keyvault-secrets' - - '@azure/storage-blob' - - '@capacitor/preferences' - - '@libsql/client' - - '@netlify/blobs' - - '@nuxt/kit' - - '@planetscale/database' - - '@testing-library/jest-dom' - - '@types/node' - - '@upstash/redis' - - '@vercel/kv' - - better-sqlite3 - - bufferutil - - debug - - drizzle-orm - - encoding - - idb-keyval - - less - - lightningcss - - preact - - rollup - - sass - - stylus - - sugarss - - supports-color - - terser - - uWebSockets.js - - utf-8-validate - xml2js /vite-node@1.2.1: @@ -10499,6 +10271,7 @@ packages: - sugarss - supports-color - terser + dev: true /vite-plugin-inspect@0.7.33(vite@4.5.0): resolution: {integrity: sha512-cQRLQKa/+Ua++5hN0IZfqNn1JYXBg2eCQOSUatPTwhXMO7nwfSvhhSc45E1nXfBBEhzLLOxgr1OdbDu55PiDDA==} @@ -10519,29 +10292,6 @@ packages: - supports-color dev: false - /vite-plugin-inspect@0.7.42(vite@5.1.4): - resolution: {integrity: sha512-JCyX86wr3siQc+p9Kd0t8VkFHAJag0RaQVIpdFGSv5FEaePEVB6+V/RGtz2dQkkGSXQzRWrPs4cU3dRKg32bXw==} - engines: {node: '>=14'} - peerDependencies: - '@nuxt/kit': '*' - vite: ^3.1.0 || ^4.0.0 || ^5.0.0-0 - peerDependenciesMeta: - '@nuxt/kit': - optional: true - dependencies: - '@antfu/utils': 0.7.7 - '@rollup/pluginutils': 5.1.0(rollup@4.12.0) - debug: 4.3.4 - error-stack-parser-es: 0.1.1 - fs-extra: 11.2.0 - open: 9.1.0 - picocolors: 1.0.0 - sirv: 2.0.4 - vite: 5.1.4(@types/node@20.10.1) - transitivePeerDependencies: - - rollup - - supports-color - /vite-plugin-solid-styled@0.8.3(solid-styled@0.8.2)(vite@4.5.0): resolution: {integrity: sha512-o0jPwkOWM9NB4P8XKLOD1r6u3A5UEymt2u3rsxUpqSsiBPtJkDPifhOGzVx4estScvMa5e8lO4job66IpG+VhQ==} engines: {node: '>=10'} @@ -10581,28 +10331,6 @@ packages: - supports-color dev: true - /vite-plugin-solid@2.9.1(@testing-library/jest-dom@6.1.5)(solid-js@1.8.15)(vite@5.1.4): - resolution: {integrity: sha512-RC4hj+lbvljw57BbMGDApvEOPEh14lwrr/GeXRLNQLcR1qnOdzOwwTSFy13Gj/6FNIZpBEl0bWPU+VYFawrqUw==} - peerDependencies: - '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* - solid-js: ^1.7.2 - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - '@testing-library/jest-dom': - optional: true - dependencies: - '@babel/core': 7.23.9 - '@testing-library/jest-dom': 6.1.5(vitest@1.2.1) - '@types/babel__core': 7.20.5 - babel-preset-solid: 1.8.12(@babel/core@7.23.9) - merge-anything: 5.1.7 - solid-js: 1.8.15 - solid-refresh: 0.6.3(solid-js@1.8.15) - vite: 5.1.4(@types/node@20.10.1) - vitefu: 0.2.5(vite@5.1.4) - transitivePeerDependencies: - - supports-color - /vite-plugin-solid@2.9.1(solid-js@1.8.15)(vite@4.5.0): resolution: {integrity: sha512-RC4hj+lbvljw57BbMGDApvEOPEh14lwrr/GeXRLNQLcR1qnOdzOwwTSFy13Gj/6FNIZpBEl0bWPU+VYFawrqUw==} peerDependencies: @@ -10751,16 +10479,6 @@ packages: vite: 5.1.1 dev: true - /vitefu@0.2.5(vite@5.1.4): - resolution: {integrity: sha512-SgHtMLoqaeeGnd2evZ849ZbACbnwQCIwRH57t18FxcXoZop0uQu0uzlIhJBlF/eWVzuce0sHeqPcDo+evVcg8Q==} - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - peerDependenciesMeta: - vite: - optional: true - dependencies: - vite: 5.1.4(@types/node@20.10.1) - /vitest@1.2.1(@vitest/ui@1.1.0)(jsdom@24.0.0): resolution: {integrity: sha512-TRph8N8rnSDa5M2wKWJCMnztCZS9cDcgVTQ6tsTFTG/odHJ4l5yNVqvbeDJYJRZ6is3uxaEpFs8LL6QM+YFSdA==} engines: {node: ^18.0.0 || >=20.0.0} @@ -10817,6 +10535,7 @@ packages: - sugarss - supports-color - terser + dev: true /vscode-oniguruma@1.7.0: resolution: {integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==} @@ -10831,6 +10550,7 @@ packages: engines: {node: '>=18'} dependencies: xml-name-validator: 5.0.0 + dev: true /wcwidth@1.0.1: resolution: {integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==} @@ -10848,6 +10568,7 @@ packages: /webidl-conversions@7.0.0: resolution: {integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==} engines: {node: '>=12'} + dev: true /webpack-sources@3.2.3: resolution: {integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==} @@ -10861,10 +10582,12 @@ packages: engines: {node: '>=18'} dependencies: iconv-lite: 0.6.3 + dev: true /whatwg-mimetype@4.0.0: resolution: {integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==} engines: {node: '>=18'} + dev: true /whatwg-url@14.0.0: resolution: {integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==} @@ -10872,6 +10595,7 @@ packages: dependencies: tr46: 5.0.0 webidl-conversions: 7.0.0 + dev: true /whatwg-url@5.0.0: resolution: {integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==} @@ -10948,6 +10672,7 @@ packages: dependencies: siginfo: 2.0.0 stackback: 0.0.2 + dev: true /wide-align@1.1.5: resolution: {integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==} @@ -11043,9 +10768,11 @@ packages: /xml-name-validator@5.0.0: resolution: {integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==} engines: {node: '>=18'} + dev: true /xmlchars@2.2.0: resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==} + dev: true /xxhash-wasm@1.0.2: resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==} @@ -11131,6 +10858,7 @@ packages: /yocto-queue@1.0.0: resolution: {integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==} engines: {node: '>=12.20'} + dev: true /youch@3.3.3: resolution: {integrity: sha512-qSFXUk3UZBLfggAW3dJKg0BMblG5biqSF8M34E06o5CSsZtH92u9Hqmj2RzGiHDi64fhe83+4tENFP2DB6t6ZA==}