Skip to content

Commit b73bab0

Browse files
committed
fix(router): more external deps, remove core from vite plugin
still gets core via dev server
1 parent 33f68d8 commit b73bab0

File tree

12 files changed

+524
-1896
lines changed

12 files changed

+524
-1896
lines changed

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -177,6 +177,7 @@
177177
"overrides": {
178178
"@builder.io/qwik": "npm:@qwik.dev/core@*",
179179
"@builder.io/qwik-city": "npm:@qwik.dev/router",
180+
"@types/estree": "1.0.8",
180181
"prettier": "3.6.2",
181182
"typescript": "5.8.3",
182183
"vfile": "6.0.3"

packages/docs/package.json

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -19,10 +19,10 @@
1919
"@qwik.dev/partytown": "0.11.2",
2020
"@qwik.dev/react": "workspace:*",
2121
"@qwik.dev/router": "workspace:*",
22-
"@shikijs/colorized-brackets": "3.9.1",
23-
"@shikijs/rehype": "3.9.1",
24-
"@shikijs/transformers": "3.9.1",
25-
"@shikijs/types": "3.9.1",
22+
"@shikijs/colorized-brackets": "3.9.2",
23+
"@shikijs/rehype": "3.9.2",
24+
"@shikijs/transformers": "3.9.2",
25+
"@shikijs/types": "3.9.2",
2626
"@supabase/supabase-js": "2.53.0",
2727
"@tailwindcss/vite": "4.1.11",
2828
"@types/leaflet": "1.9.20",
@@ -44,7 +44,7 @@
4444
"qwik-image": "0.0.16",
4545
"react": "18.3.1",
4646
"react-dom": "18.3.1",
47-
"shiki": "3.9.1",
47+
"shiki": "3.9.2",
4848
"snarkdown": "2.0.0",
4949
"tailwindcss": "4.1.11",
5050
"terser": "5.43.1",

packages/qwik-router/package.json

Lines changed: 26 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -4,44 +4,42 @@
44
"version": "2.0.0-beta.7",
55
"bugs": "https://github.com/QwikDev/qwik/issues",
66
"dependencies": {
7+
"@azure/functions": "3.5.1",
78
"@mdx-js/mdx": "^3.1.0",
9+
"@netlify/edge-functions": "^2.17.0",
810
"@types/mdx": "^2.0.13",
11+
"estree-util-value-to-estree": "^3.4.0",
12+
"github-slugger": "^2.0.0",
13+
"hast-util-heading-rank": "^2.1.1",
14+
"hast-util-to-string": "^2.0.0",
15+
"kleur": "^4.1.5",
16+
"marked": "^12.0.2",
17+
"mdast-util-mdx": "^3.0.0",
18+
"refractor": "^4.8.1",
19+
"rehype-autolink-headings": "^7.1.0",
20+
"remark-frontmatter": "^5.0.0",
21+
"remark-gfm": "^4.0.1",
22+
"set-cookie-parser": "^2.7.1",
923
"source-map": "^0.7.4",
1024
"svgo": "^3.3.2",
11-
"undici": "*",
25+
"typescript": "^5.8.3",
26+
"unified": "^11.0.5",
27+
"unist-util-visit": "^5.0.0",
1228
"valibot": ">=0.36.0 <2",
13-
"vfile": "6.0.3",
29+
"vfile": "^6.0.3",
1430
"vite-imagetools": "^7.1.0",
15-
"zod": "3.25.48"
31+
"yaml": "^2.6.1",
32+
"zod": "^3.25.40"
1633
},
1734
"devDependencies": {
18-
"@azure/functions": "3.5.1",
19-
"@microsoft/api-extractor": "7.52.10",
20-
"@netlify/edge-functions": "2.17.0",
2135
"@qwik.dev/core": "workspace:*",
36+
"@microsoft/api-extractor": "7.52.10",
2237
"@types/mdast": "4.0.4",
2338
"@types/node": "24.2.1",
2439
"@types/refractor": "3.4.1",
2540
"@types/set-cookie-parser": "2.4.10",
26-
"estree-util-value-to-estree": "3.4.0",
27-
"github-slugger": "2.0.0",
28-
"hast-util-heading-rank": "2.1.1",
29-
"hast-util-to-string": "2.0.0",
30-
"kleur": "4.1.5",
31-
"marked": "12.0.2",
32-
"mdast-util-mdx": "3.0.0",
33-
"refractor": "4.8.1",
34-
"rehype-autolink-headings": "7.1.0",
35-
"remark-frontmatter": "5.0.0",
36-
"remark-gfm": "4.0.1",
37-
"set-cookie-parser": "2.7.1",
3841
"tsm": "2.3.0",
39-
"typescript": "5.8.3",
40-
"unified": "11.0.5",
41-
"unist-util-visit": "5.0.0",
42-
"uvu": "0.5.6",
43-
"vite": "7.1.0",
44-
"yaml": "2.6.1"
42+
"uvu": "0.5.6"
4543
},
4644
"engines": {
4745
"node": "^18.17.0 || ^20.3.0 || >=21.0.0"
@@ -186,6 +184,10 @@
186184
"homepage": "https://qwik.dev/",
187185
"license": "MIT",
188186
"main": "./lib/index.qwik.mjs",
187+
"peerDependencies": {
188+
"@qwik.dev/core": "workspace:^",
189+
"vite": ">=5 <8"
190+
},
189191
"publishConfig": {
190192
"access": "public"
191193
},

packages/qwik-router/src/adapters/netlify-edge/vite/index.ts

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
import { basePathname } from '@qwik-router-config';
21
import type { SsgRenderOptions } from 'packages/qwik-router/src/ssg';
32
import fs, { existsSync } from 'node:fs';
43
import { join } from 'node:path';
@@ -39,7 +38,7 @@ export function netlifyEdgeAdapter(opts: NetlifyEdgeAdapterOptions = {}): any {
3938
};
4039
},
4140

42-
async generate({ serverOutDir }) {
41+
async generate({ serverOutDir, basePathname }) {
4342
if (opts.functionRoutes !== false) {
4443
// https://docs.netlify.com/edge-functions/create-integration/#generate-declarations
4544

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
export const deepFreeze = (obj: any) => {
2+
if (obj == null) {
3+
return obj;
4+
}
5+
Object.getOwnPropertyNames(obj).forEach((prop) => {
6+
const value = obj[prop];
7+
// we assume that a frozen object is a circular reference and fully deep frozen
8+
if (value && typeof value === 'object' && !Object.isFrozen(value)) {
9+
deepFreeze(value);
10+
}
11+
});
12+
return Object.freeze(obj);
13+
};

packages/qwik-router/src/runtime/src/routing.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ import {
1111
RouteDataProp,
1212
type RouteModule,
1313
} from './types';
14-
import { deepFreeze } from './utils';
14+
import { deepFreeze } from './deepFreeze';
1515

1616
/** LoadRoute() runs in both client and server. */
1717
export const loadRoute = async (

packages/qwik-router/src/runtime/src/server-functions.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -64,7 +64,7 @@ import type {
6464
import { useAction, useLocation, useQwikRouterEnv } from './use-functions';
6565

6666
import type { FormSubmitCompletedDetail } from './form-component';
67-
import { deepFreeze } from './utils';
67+
import { deepFreeze } from './deepFreeze';
6868

6969
/** @internal */
7070
export const routeActionQrl = ((

packages/qwik-router/src/runtime/src/utils.ts

Lines changed: 0 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -88,20 +88,6 @@ export const isPromise = (value: any): value is Promise<any> => {
8888
return value && typeof value.then === 'function';
8989
};
9090

91-
export const deepFreeze = (obj: any) => {
92-
if (obj == null) {
93-
return obj;
94-
}
95-
Object.getOwnPropertyNames(obj).forEach((prop) => {
96-
const value = obj[prop];
97-
// we assume that a frozen object is a circular reference and fully deep frozen
98-
if (value && typeof value === 'object' && !Object.isFrozen(value)) {
99-
deepFreeze(value);
100-
}
101-
});
102-
return Object.freeze(obj);
103-
};
104-
10591
export const createLoaderSignal = (
10692
loadersObject: Record<string, unknown>,
10793
loaderId: string,

packages/qwik-router/src/ssg/index.ts

Lines changed: 5 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ import type { SsgOptions, SsgRenderOptions, SsgResult } from './types';
1010
*/
1111
export async function generate(opts: SsgOptions) {
1212
const ssgPlatform = await getEntryModule();
13-
const result: SsgResult = await ssgPlatform.generate(opts);
13+
const result: SsgResult = (await ssgPlatform.generate(opts)) as any;
1414
return result;
1515
}
1616

@@ -20,27 +20,16 @@ export type {
2020
SsgResult as StaticGenerateResult,
2121
};
2222

23-
function getEntryModulePath() {
23+
function getEntryModule() {
2424
if (isDeno()) {
25-
return './deno.mjs';
25+
return import('./deno');
2626
}
27-
if (isNode() || isBun()) {
28-
if (isCjs()) {
29-
return './node.cjs';
30-
}
31-
return './node.mjs';
27+
if (isBun() || isNode()) {
28+
return import('./node');
3229
}
3330
throw new Error(`Unsupported platform`);
3431
}
3532

36-
function getEntryModule() {
37-
const entryModule = getEntryModulePath();
38-
if (isCjs()) {
39-
return require(entryModule);
40-
}
41-
return import(entryModule);
42-
}
43-
4433
function isDeno() {
4534
return typeof Deno !== 'undefined';
4635
}
@@ -53,10 +42,5 @@ function isNode() {
5342
return !isBun() && !isDeno() && typeof process !== 'undefined' && !!process.versions?.node;
5443
}
5544

56-
function isCjs() {
57-
const req = 'require';
58-
return isNode() && typeof globalThis[req] === 'function';
59-
}
60-
6145
declare const Deno: any;
6246
declare const Bun: any;

packages/qwik/src/optimizer/src/plugins/vite.ts

Lines changed: 1 addition & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -356,13 +356,7 @@ export function qwikVite(qwikViteOpts: QwikVitePluginOptions = {}): any {
356356
async configResolved(config) {
357357
basePathname = config.base;
358358
if (!(basePathname.startsWith('/') && basePathname.endsWith('/'))) {
359-
// TODO v2: make this an error
360-
console.error(
361-
`warning: vite's config.base must begin and end with /. This will be an error in v2. If you have a valid use case, please open an issue.`
362-
);
363-
if (!basePathname.endsWith('/')) {
364-
basePathname += '/';
365-
}
359+
throw new Error(`vite's config.base must begin and end with /`);
366360
}
367361
const useSourcemap = !!config.build.sourcemap;
368362
if (useSourcemap && qwikViteOpts.optimizerOptions?.sourcemap === undefined) {

0 commit comments

Comments
 (0)