From 974e6af64e627f38031f51b836625146548f383f Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Wed, 24 Jun 2026 12:16:51 +0200 Subject: [PATCH 1/2] feat: update to solid-js@2.0.0-beta.14 --- package.json | 8 ++-- pnpm-lock.yaml | 96 ++++++++++++++++++------------------- pnpm-workspace.yaml | 2 + src/components.tsx | 4 +- src/data/action.ts | 4 +- src/routers/HashRouter.ts | 2 +- src/routers/MemoryRouter.ts | 2 +- src/routers/Router.ts | 2 +- src/routers/StaticRouter.ts | 3 +- src/routers/components.tsx | 4 +- src/routing.ts | 8 ++-- src/types.ts | 5 +- src/utils.ts | 2 - test/setup.ts | 5 -- tsconfig.json | 2 +- 15 files changed, 72 insertions(+), 77 deletions(-) create mode 100644 pnpm-workspace.yaml diff --git a/package.json b/package.json index 51b5b3a9..85bca8f8 100644 --- a/package.json +++ b/package.json @@ -38,7 +38,7 @@ "release": "pnpm build && changeset publish" }, "devDependencies": { - "@solidjs/web": "2.0.0-beta.7", + "@solidjs/web": "2.0.0-beta.14", "@babel/core": "^7.26.0", "@babel/preset-typescript": "^7.26.0", "@changesets/cli": "^2.27.10", @@ -47,14 +47,14 @@ "@rollup/plugin-terser": "0.4.4", "@types/jest": "^29.5.14", "@types/node": "^22.10.0", - "babel-preset-solid": "2.0.0-beta.7", + "babel-preset-solid": "2.0.0-beta.14", "jsdom": "^25.0.1", "prettier": "^3.4.1", "rollup": "^4.27.4", - "solid-js": "2.0.0-beta.7", + "solid-js": "2.0.0-beta.14", "typescript": "^5.7.2", "vite": "^6.0.0", - "vite-plugin-solid": "3.0.0-next.4", + "vite-plugin-solid": "3.0.0-next.5", "vitest": "^2.1.6" }, "peerDependencies": { diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 10d47dec..1c571b0c 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -27,8 +27,8 @@ importers: specifier: 0.4.4 version: 0.4.4(rollup@4.27.4) '@solidjs/web': - specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@solidjs/signals@2.0.0-beta.7)(solid-js@2.0.0-beta.7) + specifier: 2.0.0-beta.14 + version: 2.0.0-beta.14(solid-js@2.0.0-beta.14) '@types/jest': specifier: ^29.5.14 version: 29.5.14 @@ -36,8 +36,8 @@ importers: specifier: ^22.10.0 version: 22.10.0 babel-preset-solid: - specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7(@babel/core@7.26.0)(solid-js@2.0.0-beta.7) + specifier: 2.0.0-beta.14 + version: 2.0.0-beta.14(@babel/core@7.26.0)(solid-js@2.0.0-beta.14) jsdom: specifier: ^25.0.1 version: 25.0.1 @@ -48,8 +48,8 @@ importers: specifier: ^4.27.4 version: 4.27.4 solid-js: - specifier: 2.0.0-beta.7 - version: 2.0.0-beta.7 + specifier: 2.0.0-beta.14 + version: 2.0.0-beta.14 typescript: specifier: ^5.7.2 version: 5.7.2 @@ -57,8 +57,8 @@ importers: specifier: ^6.0.0 version: 6.0.0(@types/node@22.10.0)(terser@5.36.0) vite-plugin-solid: - specifier: 3.0.0-next.4 - version: 3.0.0-next.4(@solidjs/web@2.0.0-beta.7(@solidjs/signals@2.0.0-beta.7)(solid-js@2.0.0-beta.7))(solid-js@2.0.0-beta.7)(vite@6.0.0(@types/node@22.10.0)(terser@5.36.0)) + specifier: 3.0.0-next.5 + version: 3.0.0-next.5(@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@6.0.0(@types/node@22.10.0)(terser@5.36.0)) vitest: specifier: ^2.1.6 version: 2.1.6(@types/node@22.10.0)(jsdom@25.0.1)(terser@5.36.0) @@ -800,14 +800,13 @@ packages: '@sinclair/typebox@0.27.8': resolution: {integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==} - '@solidjs/signals@2.0.0-beta.7': - resolution: {integrity: sha512-SgK6oQlQZofz82LiEJ2RzT3sbs1lWTqFEtLoWjLsUo/dk1v9EoIFpJJlmvgkXvNugASWG+l1yOHa1a8lPamxug==} + '@solidjs/signals@2.0.0-beta.14': + resolution: {integrity: sha512-y72nYtD7ogwX/UR5g2Y+meyeO6Q/xbQGtmvVTQX6USkMwEGOMnytqDnHj5amUzD7Fzqg32svwtCSx/q8hsOXAA==} - '@solidjs/web@2.0.0-beta.7': - resolution: {integrity: sha512-m5VjmDBufrOX0ZKGbhvwkT0CPK0TbMxDbxVPDB1PH2evGbWXQZcUlrpFM1N8RBO5md3aR/T1PgMfnOjleJbrRg==} + '@solidjs/web@2.0.0-beta.14': + resolution: {integrity: sha512-iYqLqYapbnYBxbX9WspujYBdFHM1HND+Pd0p18vXHHlhYi42oBmIayxH4JsqPA+abe19nnpjXLmv03X2/IpmVQ==} peerDependencies: - '@solidjs/signals': ^2.0.0-beta.7 - solid-js: ^2.0.0-beta.7 + solid-js: ^2.0.0-beta.14 '@types/babel__core@7.20.5': resolution: {integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==} @@ -930,16 +929,16 @@ packages: asynckit@0.4.0: resolution: {integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==} - babel-plugin-jsx-dom-expressions@0.41.0-next.20: - resolution: {integrity: sha512-lx/CJGRTNhVv3jpC1zIz0qS0H3OUxCRxQFrgCzdvxwInimGjIJ62GodD3Ls4z31BmDCY/HzJkCjP0qKFslpkgg==} + babel-plugin-jsx-dom-expressions@0.50.0-next.13: + resolution: {integrity: sha512-ANjSohrXkRTxqFOENz5vk57UEjLHx4lqOibSXmNZ51aNvzZ7zT22JB+kpv9AutPzhy7tcJaNtnLoq6yqlTZTzw==} peerDependencies: '@babel/core': ^7.20.12 - babel-preset-solid@2.0.0-beta.7: - resolution: {integrity: sha512-+RVf63D5AO5Ed6nv1ceW4+QsRM6MDtYuAm4w53SefdS/+Po0XF7EW0UHnrcdhiJspU6yhbS1XoopdNK6hcGohA==} + babel-preset-solid@2.0.0-beta.14: + resolution: {integrity: sha512-l0eX4t+vYmANQqEbRWz0d7b9zt2SybxX7/PfA5cyWGphSGiMtGahFT6XHXktDd8x16o5t1DyPIl7yfa/HAho3A==} peerDependencies: '@babel/core': ^7.0.0 - solid-js: ^2.0.0-beta.7 + solid-js: ^2.0.0-beta.14 peerDependenciesMeta: solid-js: optional: true @@ -1536,13 +1535,13 @@ packages: smob@1.4.1: resolution: {integrity: sha512-9LK+E7Hv5R9u4g4C3p+jjLstaLe11MDsL21UpYaCNmapvMkYhqCV4A/f/3gyH8QjMyh6l68q9xC85vihY9ahMQ==} - solid-js@2.0.0-beta.7: - resolution: {integrity: sha512-7JHs+BhLeZXoU+u9dG+eKnyxxfZyGpOuJEBbN/1XbHKO/WhxecdplOAurlg/YDllNWPhsbXqmLR1H2paqSu62g==} + solid-js@2.0.0-beta.14: + resolution: {integrity: sha512-gbbvlxhs1GgL1IsnwHNtkTCRBBQcIDMwznBw3T05iYvP+fuUKMyIPku+ZLjeALyX4RaSLR99JSL6NttyHsYb8Q==} - solid-refresh@0.8.0-next.4: - resolution: {integrity: sha512-0naYXreCaX0yyyzRnwcpje8shioMQc3aOeH0hnT+DMAOnhRtJ5tACpG62yB4jRsLlZLVP7MmQ0GH+9ZdAizmJg==} + solid-refresh@0.8.0-next.7: + resolution: {integrity: sha512-fqkPRAeiE0tqfo2ZljeQBIXwfYssU2w1FmaWFrXmnV33B/CfGfez7BjtOF0Y1/orUNRXI/DZcJlJThHllcCMsA==} peerDependencies: - solid-js: '>=2.0.0-beta.0 <2.0.0' + solid-js: '>=2.0.0-beta.7 <2.0.0-experimental.0' source-map-js@1.2.1: resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==} @@ -1675,8 +1674,8 @@ packages: engines: {node: ^18.0.0 || ^20.0.0 || >=22.0.0} hasBin: true - vite-plugin-solid@3.0.0-next.4: - resolution: {integrity: sha512-6t2oUJs5H7UtFxw3tM/EC2mxHmzeOtMlnPI/HFkzDqy1XaDuGjbdhggSi7KbuhP0mWM7I+IktPDlu4SWuCFPKw==} + vite-plugin-solid@3.0.0-next.5: + resolution: {integrity: sha512-hcn3mzevQDv6Oyo/Zv5LXdOrlWwKGeGVxNhc9fUq3AcN9aO6KABy52yq5cvnPDo3qaxmvOJVbNS1H4V5rx7AQg==} peerDependencies: '@solidjs/web': '>=2.0.0-beta.0 <2.0.0-experimental.0' '@testing-library/jest-dom': ^5.16.6 || ^5.17.0 || ^6.* @@ -1880,7 +1879,7 @@ snapshots: '@babel/generator@7.26.2': dependencies: '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/types': 7.29.0 '@jridgewell/gen-mapping': 0.3.5 '@jridgewell/trace-mapping': 0.3.25 jsesc: 3.0.2 @@ -1936,7 +1935,7 @@ snapshots: '@babel/helper-module-imports@7.25.9': dependencies: '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.29.0 transitivePeerDependencies: - supports-color @@ -1995,11 +1994,11 @@ snapshots: '@babel/helpers@7.26.0': dependencies: '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.29.0 '@babel/parser@7.26.2': dependencies: - '@babel/types': 7.26.0 + '@babel/types': 7.29.0 '@babel/parser@7.29.2': dependencies: @@ -2054,7 +2053,7 @@ snapshots: dependencies: '@babel/code-frame': 7.26.2 '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/types': 7.29.0 '@babel/traverse@7.25.9': dependencies: @@ -2062,7 +2061,7 @@ snapshots: '@babel/generator': 7.26.2 '@babel/parser': 7.26.2 '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + '@babel/types': 7.29.0 debug: 4.3.7 globals: 11.12.0 transitivePeerDependencies: @@ -2566,14 +2565,13 @@ snapshots: '@sinclair/typebox@0.27.8': {} - '@solidjs/signals@2.0.0-beta.7': {} + '@solidjs/signals@2.0.0-beta.14': {} - '@solidjs/web@2.0.0-beta.7(@solidjs/signals@2.0.0-beta.7)(solid-js@2.0.0-beta.7)': + '@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14)': dependencies: - '@solidjs/signals': 2.0.0-beta.7 seroval: 1.5.1 seroval-plugins: 1.5.1(seroval@1.5.1) - solid-js: 2.0.0-beta.7 + solid-js: 2.0.0-beta.14 '@types/babel__core@7.20.5': dependencies: @@ -2702,7 +2700,7 @@ snapshots: asynckit@0.4.0: {} - babel-plugin-jsx-dom-expressions@0.41.0-next.20(@babel/core@7.26.0): + babel-plugin-jsx-dom-expressions@0.50.0-next.13(@babel/core@7.26.0): dependencies: '@babel/core': 7.26.0 '@babel/helper-module-imports': 7.18.6 @@ -2712,12 +2710,12 @@ snapshots: parse5: 7.2.1 validate-html-nesting: 1.2.2 - babel-preset-solid@2.0.0-beta.7(@babel/core@7.26.0)(solid-js@2.0.0-beta.7): + babel-preset-solid@2.0.0-beta.14(@babel/core@7.26.0)(solid-js@2.0.0-beta.14): dependencies: '@babel/core': 7.26.0 - babel-plugin-jsx-dom-expressions: 0.41.0-next.20(@babel/core@7.26.0) + babel-plugin-jsx-dom-expressions: 0.50.0-next.13(@babel/core@7.26.0) optionalDependencies: - solid-js: 2.0.0-beta.7 + solid-js: 2.0.0-beta.14 better-path-resolve@1.0.0: dependencies: @@ -3319,18 +3317,18 @@ snapshots: smob@1.4.1: {} - solid-js@2.0.0-beta.7: + solid-js@2.0.0-beta.14: dependencies: - '@solidjs/signals': 2.0.0-beta.7 + '@solidjs/signals': 2.0.0-beta.14 csstype: 3.1.3 seroval: 1.5.1 seroval-plugins: 1.5.1(seroval@1.5.1) - solid-refresh@0.8.0-next.4(solid-js@2.0.0-beta.7): + solid-refresh@0.8.0-next.7(solid-js@2.0.0-beta.14): dependencies: '@babel/generator': 7.29.1 '@babel/types': 7.29.0 - solid-js: 2.0.0-beta.7 + solid-js: 2.0.0-beta.14 source-map-js@1.2.1: {} @@ -3453,15 +3451,15 @@ snapshots: - supports-color - terser - vite-plugin-solid@3.0.0-next.4(@solidjs/web@2.0.0-beta.7(@solidjs/signals@2.0.0-beta.7)(solid-js@2.0.0-beta.7))(solid-js@2.0.0-beta.7)(vite@6.0.0(@types/node@22.10.0)(terser@5.36.0)): + vite-plugin-solid@3.0.0-next.5(@solidjs/web@2.0.0-beta.14(solid-js@2.0.0-beta.14))(solid-js@2.0.0-beta.14)(vite@6.0.0(@types/node@22.10.0)(terser@5.36.0)): dependencies: '@babel/core': 7.26.0 - '@solidjs/web': 2.0.0-beta.7(@solidjs/signals@2.0.0-beta.7)(solid-js@2.0.0-beta.7) + '@solidjs/web': 2.0.0-beta.14(solid-js@2.0.0-beta.14) '@types/babel__core': 7.20.5 - babel-preset-solid: 2.0.0-beta.7(@babel/core@7.26.0)(solid-js@2.0.0-beta.7) + babel-preset-solid: 2.0.0-beta.14(@babel/core@7.26.0)(solid-js@2.0.0-beta.14) merge-anything: 5.1.7 - solid-js: 2.0.0-beta.7 - solid-refresh: 0.8.0-next.4(solid-js@2.0.0-beta.7) + solid-js: 2.0.0-beta.14 + solid-refresh: 0.8.0-next.7(solid-js@2.0.0-beta.14) vite: 6.0.0(@types/node@22.10.0)(terser@5.36.0) vitefu: 1.0.4(vite@6.0.0(@types/node@22.10.0)(terser@5.36.0)) transitivePeerDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml new file mode 100644 index 00000000..efc037aa --- /dev/null +++ b/pnpm-workspace.yaml @@ -0,0 +1,2 @@ +onlyBuiltDependencies: + - esbuild diff --git a/src/components.tsx b/src/components.tsx index c7aba29d..895f7bea 100644 --- a/src/components.tsx +++ b/src/components.tsx @@ -1,5 +1,5 @@ /*@refresh skip*/ -import type { JSX } from "solid-js"; +import type { JSX } from "@solidjs/web"; import { createMemo, merge, omit } from "solid-js"; import { useHref, @@ -13,7 +13,7 @@ import type { } from "./types.js"; import { normalizePath } from "./utils.js"; -declare module "solid-js" { +declare module "@solidjs/web" { namespace JSX { interface AnchorHTMLAttributes { state?: string; diff --git a/src/data/action.ts b/src/data/action.ts index ba952ff0..2ab8de2c 100644 --- a/src/data/action.ts +++ b/src/data/action.ts @@ -1,5 +1,5 @@ -import { $TRACK, action as createSolidAction, createMemo, JSX, onCleanup, getOwner } from "solid-js"; -import { isServer } from "@solidjs/web"; +import { $TRACK, action as createSolidAction, createMemo, onCleanup, getOwner } from "solid-js"; +import { isServer, type JSX } from "@solidjs/web"; import { useRouter } from "../routing.js"; import type { RouterContext, diff --git a/src/routers/HashRouter.ts b/src/routers/HashRouter.ts index 89313a91..4a5ef265 100644 --- a/src/routers/HashRouter.ts +++ b/src/routers/HashRouter.ts @@ -1,4 +1,4 @@ -import type { JSX } from "solid-js"; +import type { JSX } from "@solidjs/web"; import { setupNativeEvents } from "../data/events.js"; import type { BaseRouterProps } from "./components.jsx"; import { createRouter, scrollToHash, bindEvent } from "./createRouter.js"; diff --git a/src/routers/MemoryRouter.ts b/src/routers/MemoryRouter.ts index 6854a6e0..a4df8afb 100644 --- a/src/routers/MemoryRouter.ts +++ b/src/routers/MemoryRouter.ts @@ -2,7 +2,7 @@ import { createRouter, scrollToHash } from "./createRouter.js"; import { setupNativeEvents } from "../data/events.js"; import type { LocationChange } from "../types.js"; import type { BaseRouterProps } from "./components.jsx"; -import type { JSX } from "solid-js"; +import type { JSX } from "@solidjs/web"; export type MemoryHistory = { get: () => string; diff --git a/src/routers/Router.ts b/src/routers/Router.ts index b79278ed..45e6e50f 100644 --- a/src/routers/Router.ts +++ b/src/routers/Router.ts @@ -3,7 +3,7 @@ import { createRouter, scrollToHash, bindEvent } from "./createRouter.js"; import { StaticRouter } from "./StaticRouter.js"; import { setupNativeEvents } from "../data/events.js"; import type { BaseRouterProps } from "./components.jsx"; -import type { JSX } from "solid-js"; +import type { JSX } from "@solidjs/web"; import { createBeforeLeave, keepDepth, notifyIfNotBlocked, saveCurrentDepth } from "../lifecycle.js"; export type RouterProps = BaseRouterProps & { url?: string, actionBase?: string, explicitLinks?: boolean, preload?: boolean }; diff --git a/src/routers/StaticRouter.ts b/src/routers/StaticRouter.ts index d59406f2..c51820f6 100644 --- a/src/routers/StaticRouter.ts +++ b/src/routers/StaticRouter.ts @@ -1,6 +1,5 @@ -import { getRequestEvent } from "@solidjs/web"; +import { getRequestEvent, type JSX } from "@solidjs/web"; import { type BaseRouterProps, createRouterComponent } from "./components.jsx"; -import type { JSX } from "solid-js"; function getPath(url: string) { const u = new URL(url); diff --git a/src/routers/components.tsx b/src/routers/components.tsx index 40e82e7d..e13d41b0 100644 --- a/src/routers/components.tsx +++ b/src/routers/components.tsx @@ -1,8 +1,8 @@ /*@refresh skip*/ -import type {Component, JSX, Owner} from "solid-js"; +import type {Component, Owner} from "solid-js"; import {children, createMemo, createRoot, getOwner, merge, untrack} from "solid-js"; -import {getRequestEvent, isServer, type RequestEvent} from "@solidjs/web"; +import {getRequestEvent, isServer, type JSX, type RequestEvent} from "@solidjs/web"; import { createBranches, createRouteContext, diff --git a/src/routing.ts b/src/routing.ts index 06e659e6..21b48390 100644 --- a/src/routing.ts +++ b/src/routing.ts @@ -1,14 +1,16 @@ -import { JSX, Accessor, flush, runWithOwner } from "solid-js"; import { + type Accessor, createComponent, createContext, createMemo, createSignal, + flush, onCleanup, + runWithOwner, untrack, - useContext + useContext, } from "solid-js"; -import { isServer, getRequestEvent } from "@solidjs/web"; +import { isServer, getRequestEvent, type JSX } from "@solidjs/web"; import { createBeforeLeave } from "./lifecycle.js"; import type { BeforeLeaveEventArgs, diff --git a/src/types.ts b/src/types.ts index 9b8d1ab2..a43406ba 100644 --- a/src/types.ts +++ b/src/types.ts @@ -1,4 +1,5 @@ -import type { Component, JSX, Signal } from "solid-js"; +import type { Accessor, Component, Setter, Signal } from "solid-js"; +import type { JSX } from "@solidjs/web"; declare module "@solidjs/web" { interface RequestEvent { @@ -70,7 +71,7 @@ export interface LocationChange { rawPath?: string; } export interface RouterIntegration { - signal: Signal; + signal: [Accessor, Setter]; create?: (router: RouterContext) => void; utils?: Partial; } diff --git a/src/utils.ts b/src/utils.ts index 7d30de36..7a0e486e 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -2,11 +2,9 @@ import { createMemo, getOwner, runWithOwner } from "solid-js"; import type { MatchFilter, MatchFilters, - Params, PathMatch, RouteDescription, SearchParams, - SetParams, SetSearchParams } from "./types.js"; diff --git a/test/setup.ts b/test/setup.ts index 4f3c5c29..05064a6a 100644 --- a/test/setup.ts +++ b/test/setup.ts @@ -5,11 +5,6 @@ vi.mock("@solidjs/web", async importOriginal => { return { ...actual, - delegateEvents: ((eventNames, document) => { - const target = document ?? globalThis.window?.document ?? globalThis.document; - if (!target) return; - return actual.delegateEvents(eventNames, target); - }) as typeof actual.delegateEvents, isServer: false, getRequestEvent: () => null }; diff --git a/tsconfig.json b/tsconfig.json index ef9e4740..db8e8d21 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -6,7 +6,7 @@ "moduleResolution": "NodeNext", "strict": true, "jsx": "preserve", - "jsxImportSource": "solid-js", + "jsxImportSource": "@solidjs/web", "rootDir": "./src", "outDir": "./dist", "module": "NodeNext", From c27e0c7c71a6f122d6f418762498f0a498050742 Mon Sep 17 00:00:00 2001 From: Alex Lohr Date: Wed, 24 Jun 2026 13:58:37 +0200 Subject: [PATCH 2/2] add changeset --- .changeset/chilly-bottles-change.md | 5 +++++ 1 file changed, 5 insertions(+) create mode 100644 .changeset/chilly-bottles-change.md diff --git a/.changeset/chilly-bottles-change.md b/.changeset/chilly-bottles-change.md new file mode 100644 index 00000000..3a2e676c --- /dev/null +++ b/.changeset/chilly-bottles-change.md @@ -0,0 +1,5 @@ +--- +"@solidjs/router": minor +--- + +update to solid-js@2.0.0-beta.14