vike 0.4.179 → 0.4.180
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -0
- package/dist/cjs/node/runtime/html/injectAssets/getHtmlTags.js +46 -15
- package/dist/cjs/node/runtime/html/injectAssets/injectHtmlTags.js +3 -2
- package/dist/cjs/node/runtime/html/injectAssets.js +18 -3
- package/dist/cjs/node/runtime/html/renderHtml.js +12 -11
- package/dist/cjs/node/runtime/html/serializePageContextClientSide.js +14 -4
- package/dist/cjs/node/runtime/html/stream.js +12 -5
- package/dist/cjs/node/runtime/renderPage/executeOnRenderHtmlHook.js +1 -1
- package/dist/cjs/node/runtime/renderPage.js +14 -13
- package/dist/cjs/node/runtime/utils.js +1 -0
- package/dist/cjs/shared/page-configs/serialize/serializeConfigValues.js +4 -0
- package/dist/cjs/shared/route/index.js +4 -6
- package/dist/cjs/utils/augmentType.js +10 -0
- package/dist/cjs/utils/getPropAccessNotation.js +4 -1
- package/dist/cjs/utils/objectAssign.js +2 -0
- package/dist/cjs/utils/projectInfo.js +1 -1
- package/dist/esm/client/client-routing-runtime/createPageContext.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/createPageContext.js +2 -1
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.d.ts +5 -3
- package/dist/esm/client/client-routing-runtime/getPageContextFromHooks.js +22 -27
- package/dist/esm/client/client-routing-runtime/renderPageClientSide.js +6 -12
- package/dist/esm/client/client-routing-runtime/utils.d.ts +1 -0
- package/dist/esm/client/client-routing-runtime/utils.js +1 -0
- package/dist/esm/client/shared/getPageContextProxyForUser.js +1 -1
- package/dist/esm/node/plugin/plugins/importUserCode/v1-design/getVikeConfig/configDefinitionsBuiltIn.js +3 -0
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.d.ts +3 -2
- package/dist/esm/node/runtime/html/injectAssets/getHtmlTags.js +46 -15
- package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.d.ts +3 -1
- package/dist/esm/node/runtime/html/injectAssets/injectHtmlTags.js +2 -1
- package/dist/esm/node/runtime/html/injectAssets.d.ts +1 -0
- package/dist/esm/node/runtime/html/injectAssets.js +19 -4
- package/dist/esm/node/runtime/html/renderHtml.js +12 -11
- package/dist/esm/node/runtime/html/serializePageContextClientSide.js +15 -5
- package/dist/esm/node/runtime/html/stream.d.ts +2 -1
- package/dist/esm/node/runtime/html/stream.js +12 -5
- package/dist/esm/node/runtime/renderPage/executeOnRenderHtmlHook.js +1 -1
- package/dist/esm/node/runtime/renderPage.js +14 -13
- package/dist/esm/node/runtime/utils.d.ts +1 -0
- package/dist/esm/node/runtime/utils.js +1 -0
- package/dist/esm/shared/page-configs/Config.d.ts +5 -0
- package/dist/esm/shared/page-configs/serialize/serializeConfigValues.js +4 -0
- package/dist/esm/shared/route/index.d.ts +1 -1
- package/dist/esm/shared/route/index.js +4 -6
- package/dist/esm/shared/types.d.ts +1 -1
- package/dist/esm/utils/augmentType.d.ts +3 -0
- package/dist/esm/utils/augmentType.js +7 -0
- package/dist/esm/utils/getPropAccessNotation.js +4 -1
- package/dist/esm/utils/objectAssign.d.ts +1 -1
- package/dist/esm/utils/objectAssign.js +2 -0
- package/dist/esm/utils/projectInfo.d.ts +2 -2
- package/dist/esm/utils/projectInfo.js +1 -1
- package/package.json +4 -4
|
@@ -241,8 +241,7 @@ function logHttpResponse(urlOriginal, httpRequestId, pageContextReturn) {
|
|
|
241
241
|
logRuntimeInfo?.(msg, httpRequestId, isNominal ? 'info' : 'error');
|
|
242
242
|
}
|
|
243
243
|
function getPageContextHttpResponseNullWithError(err, pageContextInit) {
|
|
244
|
-
const pageContextHttpResponseNull =
|
|
245
|
-
objectAssign(pageContextHttpResponseNull, pageContextInit);
|
|
244
|
+
const pageContextHttpResponseNull = createPageContext(pageContextInit);
|
|
246
245
|
objectAssign(pageContextHttpResponseNull, {
|
|
247
246
|
httpResponse: null,
|
|
248
247
|
errorWhileRendering: err
|
|
@@ -250,14 +249,20 @@ function getPageContextHttpResponseNullWithError(err, pageContextInit) {
|
|
|
250
249
|
return pageContextHttpResponseNull;
|
|
251
250
|
}
|
|
252
251
|
function getPageContextHttpResponseNull(pageContextInit) {
|
|
253
|
-
const pageContextHttpResponseNull =
|
|
254
|
-
objectAssign(pageContextHttpResponseNull, pageContextInit);
|
|
252
|
+
const pageContextHttpResponseNull = createPageContext(pageContextInit);
|
|
255
253
|
objectAssign(pageContextHttpResponseNull, {
|
|
256
254
|
httpResponse: null,
|
|
257
255
|
errorWhileRendering: null
|
|
258
256
|
});
|
|
259
257
|
return pageContextHttpResponseNull;
|
|
260
258
|
}
|
|
259
|
+
function createPageContext(pageContextInit) {
|
|
260
|
+
const pageContext = {
|
|
261
|
+
_isPageContextObject: true
|
|
262
|
+
};
|
|
263
|
+
Object.assign(pageContext, pageContextInit);
|
|
264
|
+
return pageContext;
|
|
265
|
+
}
|
|
261
266
|
async function renderPageNominal(pageContext) {
|
|
262
267
|
objectAssign(pageContext, { errorWhileRendering: null });
|
|
263
268
|
// Route
|
|
@@ -341,8 +346,7 @@ function normalizeUrl(pageContextInit, httpRequestId) {
|
|
|
341
346
|
return null;
|
|
342
347
|
logRuntimeInfo?.(`URL normalized from ${pc.cyan(urlOriginal)} to ${pc.cyan(urlNormalized)} (https://vike.dev/url-normalization)`, httpRequestId, 'info');
|
|
343
348
|
const httpResponse = createHttpResponseObjectRedirect({ url: urlNormalized, statusCode: 301 }, pageContextInit.urlOriginal);
|
|
344
|
-
const pageContextHttpResponse =
|
|
345
|
-
objectAssign(pageContextHttpResponse, pageContextInit);
|
|
349
|
+
const pageContextHttpResponse = createPageContext(pageContextInit);
|
|
346
350
|
objectAssign(pageContextHttpResponse, { httpResponse });
|
|
347
351
|
return pageContextHttpResponse;
|
|
348
352
|
}
|
|
@@ -378,8 +382,7 @@ function getPermanentRedirect(pageContextInit, httpRequestId) {
|
|
|
378
382
|
}
|
|
379
383
|
logRuntimeInfo?.(`Permanent redirect defined by your config.redirects (https://vike.dev/redirects)`, httpRequestId, 'info');
|
|
380
384
|
const httpResponse = createHttpResponseObjectRedirect({ url: urlTarget, statusCode: 301 }, urlWithoutBase);
|
|
381
|
-
const pageContextHttpResponse =
|
|
382
|
-
objectAssign(pageContextHttpResponse, pageContextInit);
|
|
385
|
+
const pageContextHttpResponse = createPageContext(pageContextInit);
|
|
383
386
|
objectAssign(pageContextHttpResponse, { httpResponse });
|
|
384
387
|
return pageContextHttpResponse;
|
|
385
388
|
}
|
|
@@ -395,9 +398,8 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
|
|
|
395
398
|
const abortCall = pageContextAbort._abortCall;
|
|
396
399
|
assert(abortCall);
|
|
397
400
|
assertUsage(errorPageId, `You called ${pc.cyan(abortCall)} but you didn't define an error page, make sure to define one https://vike.dev/error-page`);
|
|
398
|
-
const pageContext = {
|
|
399
|
-
|
|
400
|
-
};
|
|
401
|
+
const pageContext = createPageContext({});
|
|
402
|
+
objectAssign(pageContext, { _pageId: errorPageId });
|
|
401
403
|
objectAssign(pageContext, pageContextAbort);
|
|
402
404
|
objectAssign(pageContext, pageContextErrorPageInit);
|
|
403
405
|
objectAssign(pageContext, renderContext);
|
|
@@ -421,8 +423,7 @@ pageContextNominalPageInit, httpRequestId, renderContext, pageContextErrorPageIn
|
|
|
421
423
|
return { pageContextReturn };
|
|
422
424
|
}
|
|
423
425
|
if (pageContextAbort._urlRedirect) {
|
|
424
|
-
const pageContextReturn =
|
|
425
|
-
objectAssign(pageContextReturn, pageContextInit);
|
|
426
|
+
const pageContextReturn = createPageContext(pageContextInit);
|
|
426
427
|
objectAssign(pageContextReturn, pageContextAbort);
|
|
427
428
|
const httpResponse = createHttpResponseObjectRedirect(pageContextAbort._urlRedirect, (() => {
|
|
428
429
|
const { pathname, searchOriginal } = pageContextNominalPageInit.urlParsed;
|
|
@@ -354,6 +354,11 @@ type ConfigBuiltIn = {
|
|
|
354
354
|
* https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Cache-Control
|
|
355
355
|
*/
|
|
356
356
|
cacheControl?: string;
|
|
357
|
+
/** Where scripts are injected in the HTML.
|
|
358
|
+
*
|
|
359
|
+
* https://vike.dev/injectScriptsAt
|
|
360
|
+
*/
|
|
361
|
+
injectScriptsAt?: 'HTML_BEGIN' | 'HTML_END' | 'STREAM' | null;
|
|
357
362
|
/** Used by Vike extensions to set their name.
|
|
358
363
|
*
|
|
359
364
|
* https://vike.dev/extends
|
|
@@ -151,6 +151,10 @@ function valueToJson(value, configName, definedAtData, importStatements) {
|
|
|
151
151
|
configValueSerialized = stringify(value, {
|
|
152
152
|
valueName,
|
|
153
153
|
forbidReactElements: true,
|
|
154
|
+
// Replace import strings with import variables.
|
|
155
|
+
// - We don't need this anymore and could remove it.
|
|
156
|
+
// - We temporarily needed it for nested document configs (`config.document.{title,description,favicon}`), but we finally decided to go for flat document configs instead (`config.{title,description,favicon}`).
|
|
157
|
+
// - https://github.com/vikejs/vike-react/pull/113
|
|
154
158
|
replacer(_, value) {
|
|
155
159
|
if (typeof value === 'string') {
|
|
156
160
|
const importData = parsePointerImportData(value);
|
|
@@ -30,4 +30,4 @@ type RouteMatch = {
|
|
|
30
30
|
routeParams: Record<string, string>;
|
|
31
31
|
};
|
|
32
32
|
type RouteMatches = 'CUSTOM_ROUTING' | RouteMatch[];
|
|
33
|
-
declare function route(
|
|
33
|
+
declare function route(pageContext: PageContextForRoute): Promise<PageContextFromRoute>;
|
|
@@ -13,12 +13,12 @@ import { resolveRouteFunction } from './resolveRouteFunction.js';
|
|
|
13
13
|
import { executeOnBeforeRouteHook } from './executeOnBeforeRouteHook.js';
|
|
14
14
|
import { debug } from './debug.js';
|
|
15
15
|
import pc from '@brillout/picocolors';
|
|
16
|
-
async function route(
|
|
17
|
-
debug('Pages routes:',
|
|
18
|
-
assertPageContextUrl(
|
|
16
|
+
async function route(pageContext) {
|
|
17
|
+
debug('Pages routes:', pageContext._pageRoutes);
|
|
18
|
+
assertPageContextUrl(pageContext);
|
|
19
19
|
const pageContextFromRoute = {};
|
|
20
20
|
// onBeforeRoute()
|
|
21
|
-
const pageContextFromOnBeforeRouteHook = await executeOnBeforeRouteHook(
|
|
21
|
+
const pageContextFromOnBeforeRouteHook = await executeOnBeforeRouteHook(pageContext);
|
|
22
22
|
if (pageContextFromOnBeforeRouteHook) {
|
|
23
23
|
if (pageContextFromOnBeforeRouteHook._routingProvidedByOnBeforeRouteHook) {
|
|
24
24
|
assert(pageContextFromOnBeforeRouteHook._pageId);
|
|
@@ -29,8 +29,6 @@ async function route(pageContextForRoute) {
|
|
|
29
29
|
}
|
|
30
30
|
}
|
|
31
31
|
// We take into account pageContext.urlLogical set by onBeforeRoute()
|
|
32
|
-
const pageContext = {};
|
|
33
|
-
objectAssign(pageContext, pageContextForRoute);
|
|
34
32
|
objectAssign(pageContext, pageContextFromOnBeforeRouteHook);
|
|
35
33
|
// Vike's routing
|
|
36
34
|
const allPageIds = pageContext._allPageIds;
|
|
@@ -120,7 +120,7 @@ type PageContextBuiltInCommon<Data> = {
|
|
|
120
120
|
pageExports: Record<string, unknown>;
|
|
121
121
|
};
|
|
122
122
|
type PageContextBuiltInServer<Data> = PageContextBuiltInCommon<Data> & PageContextUrlServer;
|
|
123
|
-
type PageContextBuiltInClientWithClientRouting<Data> = Partial<PageContextBuiltInCommon<Data>> & Pick<PageContextBuiltInCommon<Data>, 'Page' | 'pageExports' | 'config' | 'configEntries' | 'exports' | 'exportsAll' | 'abortReason' | 'data' | 'source' | 'sources' | 'from'> & {
|
|
123
|
+
type PageContextBuiltInClientWithClientRouting<Data> = Partial<PageContextBuiltInCommon<Data>> & Pick<PageContextBuiltInCommon<Data>, 'Page' | 'routeParams' | 'pageExports' | 'config' | 'configEntries' | 'exports' | 'exportsAll' | 'abortReason' | 'data' | 'source' | 'sources' | 'from'> & {
|
|
124
124
|
/** Whether the current page is already rendered to HTML */
|
|
125
125
|
isHydration: boolean;
|
|
126
126
|
/**
|
|
@@ -1,3 +1,6 @@
|
|
|
1
1
|
export function getPropAccessNotation(key) {
|
|
2
|
-
return typeof key === 'string' &&
|
|
2
|
+
return typeof key === 'string' && isKeyDotNotationCompatible(key) ? `.${key}` : `[${JSON.stringify(key)}]`;
|
|
3
|
+
}
|
|
4
|
+
function isKeyDotNotationCompatible(key) {
|
|
5
|
+
return /^[a-z0-9\$_]+$/i.test(key);
|
|
3
6
|
}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
1
|
export { objectAssign };
|
|
2
|
-
declare function objectAssign<Obj extends object, ObjAddendum>(obj: Obj, objAddendum: ObjAddendum): asserts obj is Obj & ObjAddendum;
|
|
2
|
+
declare function objectAssign<Obj extends object, ObjAddendum extends object | null>(obj: Obj, objAddendum: ObjAddendum): asserts obj is Obj & ObjAddendum;
|
|
@@ -1,9 +1,11 @@
|
|
|
1
1
|
export { objectAssign };
|
|
2
|
+
import { assert } from './assert.js';
|
|
2
3
|
// Same as Object.assign() but:
|
|
3
4
|
// - With type inference
|
|
4
5
|
// - Preserves property descriptors, which we need for preserving the getters added by getPageContextUrlComputed()
|
|
5
6
|
function objectAssign(obj, objAddendum) {
|
|
6
7
|
if (objAddendum) {
|
|
8
|
+
assert(!('_isPageContextObject' in objAddendum));
|
|
7
9
|
Object.defineProperties(obj, Object.getOwnPropertyDescriptors(objAddendum));
|
|
8
10
|
}
|
|
9
11
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "vike",
|
|
3
|
-
"version": "0.4.
|
|
3
|
+
"version": "0.4.180",
|
|
4
4
|
"scripts": {
|
|
5
5
|
"dev": "tsc --watch",
|
|
6
6
|
"build": "rimraf dist/ && pnpm run build:esm && pnpm run build:cjs",
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
16
|
"@brillout/import": "^0.2.3",
|
|
17
|
-
"@brillout/json-serializer": "^0.5.
|
|
17
|
+
"@brillout/json-serializer": "^0.5.13",
|
|
18
18
|
"@brillout/picocolors": "^1.0.13",
|
|
19
19
|
"@brillout/require-shim": "^0.1.2",
|
|
20
20
|
"@brillout/vite-plugin-server-entry": "^0.4.5",
|
|
@@ -138,7 +138,7 @@
|
|
|
138
138
|
}
|
|
139
139
|
},
|
|
140
140
|
"peerDependencies": {
|
|
141
|
-
"react-streaming": ">=0.3.
|
|
141
|
+
"react-streaming": ">=0.3.42",
|
|
142
142
|
"vite": ">=4.4.0"
|
|
143
143
|
},
|
|
144
144
|
"peerDependenciesMeta": {
|
|
@@ -209,7 +209,7 @@
|
|
|
209
209
|
"es-module-lexer": "^1.4.1",
|
|
210
210
|
"esbuild": "^0.19.10",
|
|
211
211
|
"fast-glob": "^3.3.2",
|
|
212
|
-
"react-streaming": "^0.3.
|
|
212
|
+
"react-streaming": "^0.3.42",
|
|
213
213
|
"rimraf": "^5.0.5",
|
|
214
214
|
"sirv": "^2.0.4",
|
|
215
215
|
"source-map-support": "^0.5.21",
|