diff --git a/.changeset/brave-lamps-play.md b/.changeset/brave-lamps-play.md new file mode 100644 index 0000000..98dd61e --- /dev/null +++ b/.changeset/brave-lamps-play.md @@ -0,0 +1,5 @@ +--- +'@ssrx/solid': patch +--- + +Wrap the stream in the solid request event async ctx so that cache function from solid-router can be used in v0.11+. diff --git a/examples/solid-router-simple/package.json b/examples/solid-router-simple/package.json index 33e913d..3971225 100644 --- a/examples/solid-router-simple/package.json +++ b/examples/solid-router-simple/package.json @@ -15,7 +15,7 @@ "dependencies": { "@hono/node-server": "^1.7.0", "@solidjs/meta": "~0.29.3", - "@solidjs/router": "0.10.10", + "@solidjs/router": "0.11.2", "@ssrx/solid": "latest", "hono": "3.12.9", "solid-js": "1.8.12" diff --git a/packages/plugin-solid-router/package.json b/packages/plugin-solid-router/package.json index 2de30dd..2d335ed 100644 --- a/packages/plugin-solid-router/package.json +++ b/packages/plugin-solid-router/package.json @@ -33,7 +33,7 @@ "@ssrx/renderer": "^0.4.0" }, "devDependencies": { - "@solidjs/router": "0.10.10", + "@solidjs/router": "0.11.2", "esbuild-plugin-solid": "0.5.0" } } diff --git a/packages/solid/package.json b/packages/solid/package.json index 8dee849..3d71108 100644 --- a/packages/solid/package.json +++ b/packages/solid/package.json @@ -42,7 +42,7 @@ "lint": "eslint ." }, "peerDependencies": { - "solid-js": "*" + "solid-js": ">=1.8" }, "dependencies": { "@ssrx/renderer": "^0.4.0", diff --git a/packages/solid/src/server/stream.ts b/packages/solid/src/server/stream.ts index 2737024..2e7931e 100644 --- a/packages/solid/src/server/stream.ts +++ b/packages/solid/src/server/stream.ts @@ -1,6 +1,8 @@ import type { RenderToStreamFn } from '@ssrx/renderer/server'; import { injectIntoStream } from '@ssrx/streaming'; import { renderToStream as renderToSolidStream } from 'solid-js/web'; +/* @ts-expect-error no types */ +import { provideRequestEvent } from 'solid-js/web/storage'; export const renderToStream: RenderToStreamFn<{ nonce?: string; @@ -8,12 +10,14 @@ export const renderToStream: RenderToStreamFn<{ onCompleteShell?: (info: { write: (v: string) => void }) => void; onCompleteAll?: (info: { write: (v: string) => void }) => void; }> = async ({ req, app, injectToStream, opts }) => { - const stream = renderToSolidStream(() => app(), opts); - const { readable, writable } = new TransformStream(); - stream.pipeTo(writable); + return provideRequestEvent(req, () => { + const stream = renderToSolidStream(() => app(), opts); + const { readable, writable } = new TransformStream(); + stream.pipeTo(writable); - return { - stream: injectToStream ? injectIntoStream(req, readable, injectToStream) : readable, - statusCode: () => 200, - }; + return { + stream: injectToStream ? injectIntoStream(req, readable, injectToStream) : readable, + statusCode: () => 200, + }; + }); }; diff --git a/yarn.lock b/yarn.lock index ed8383e..8875c6b 100644 --- a/yarn.lock +++ b/yarn.lock @@ -3405,12 +3405,12 @@ __metadata: languageName: node linkType: hard -"@solidjs/router@npm:0.10.10": - version: 0.10.10 - resolution: "@solidjs/router@npm:0.10.10" +"@solidjs/router@npm:0.11.2": + version: 0.11.2 + resolution: "@solidjs/router@npm:0.11.2" peerDependencies: solid-js: ^1.8.6 - checksum: bc0e8d5b160b5cc0704574c0194055b712745cad147fe5795e53b80fe44e8b04b4fcd93e75794701d81a299c8d9fdd8eb3473581f7f5e5993b4fb9a69c9e2ffb + checksum: d367a1ed1f04eea58b48990d15e49957dacab35446cb5661d4971fe1cac0a46209ea8e58d2f0752956222cfa043c3261d497d932d387e056259c5f2625f8529b languageName: node linkType: hard @@ -3438,7 +3438,7 @@ __metadata: version: 0.0.0-use.local resolution: "@ssrx/plugin-solid-router@workspace:packages/plugin-solid-router" dependencies: - "@solidjs/router": "npm:0.10.10" + "@solidjs/router": "npm:0.11.2" "@ssrx/renderer": "npm:^0.4.0" esbuild-plugin-solid: "npm:0.5.0" peerDependencies: @@ -3585,7 +3585,7 @@ __metadata: "@ssrx/vite": "npm:^0.6.0" solid-js: "npm:1.8.12" peerDependencies: - solid-js: "*" + solid-js: ">=1.8" languageName: unknown linkType: soft @@ -14354,7 +14354,7 @@ __metadata: dependencies: "@hono/node-server": "npm:^1.7.0" "@solidjs/meta": "npm:~0.29.3" - "@solidjs/router": "npm:0.10.10" + "@solidjs/router": "npm:0.11.2" "@ssrx/solid": "npm:latest" "@ssrx/vite": "npm:latest" hono: "npm:3.12.9"