vike 0.4.232 → 0.4.233
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/prerender/runPrerender.js +9 -4
- package/dist/cjs/node/runtime/renderPage/{executeOnBeforeRenderAndDataHooks.js → execHookDataAndOnBeforeRender.js} +2 -2
- package/dist/cjs/node/runtime/renderPage/{executeOnRenderHtmlHook.js → execHookOnRenderHtml.js} +3 -3
- package/dist/cjs/node/runtime/renderPage/execHookServer.js +1 -4
- package/dist/cjs/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +18 -13
- package/dist/cjs/node/runtime/renderPage/renderPageAlreadyRouted.js +11 -11
- package/dist/cjs/node/runtime/renderPage.js +55 -48
- package/dist/cjs/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -2
- package/dist/cjs/shared/createPageContextShared.js +1 -3
- package/dist/cjs/shared/hooks/execHook.js +31 -54
- package/dist/cjs/shared/route/{executeGuardHook.js → execHookGuard.js} +3 -3
- package/dist/cjs/shared/route/{executeOnBeforeRouteHook.js → execHookOnBeforeRoute.js} +4 -4
- package/dist/cjs/shared/route/index.js +3 -2
- package/dist/cjs/shared/route/resolveRouteFunction.js +1 -1
- package/dist/cjs/utils/PROJECT_VERSION.js +1 -1
- package/dist/cjs/utils/styleFileRE.js +1 -0
- package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.d.ts +2 -2
- package/dist/esm/client/runtime-client-routing/getPageContextFromHooks.js +9 -9
- package/dist/esm/client/runtime-client-routing/renderPageClientSide.js +97 -62
- package/dist/esm/client/runtime-server-routing/createPageContextClientSide.js +11 -4
- package/dist/esm/client/runtime-server-routing/entry.js +2 -2
- package/dist/esm/client/shared/{executeOnRenderClientHook.d.ts → execHookOnRenderClient.d.ts} +2 -2
- package/dist/esm/client/shared/{executeOnRenderClientHook.js → execHookOnRenderClient.js} +4 -4
- package/dist/esm/client/shared/loadPageConfigsLazyClientSide.d.ts +12 -4
- package/dist/esm/client/shared/loadPageConfigsLazyClientSide.js +4 -4
- package/dist/esm/node/prerender/runPrerender.d.ts +250 -4
- package/dist/esm/node/prerender/runPrerender.js +11 -6
- package/dist/esm/node/runtime/renderPage/createHttpResponse.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/execHookDataAndOnBeforeRender.d.ts +6 -0
- package/dist/esm/node/runtime/renderPage/{executeOnBeforeRenderAndDataHooks.js → execHookDataAndOnBeforeRender.js} +2 -2
- package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.d.ts → execHookOnRenderHtml.d.ts} +2 -2
- package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.js → execHookOnRenderHtml.js} +4 -4
- package/dist/esm/node/runtime/renderPage/execHookServer.d.ts +3 -3
- package/dist/esm/node/runtime/renderPage/execHookServer.js +1 -4
- package/dist/esm/node/runtime/renderPage/getHttpResponseBody.d.ts +1 -1
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.d.ts +15 -6
- package/dist/esm/node/runtime/renderPage/loadPageConfigsLazyServerSide.js +18 -13
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.d.ts +2 -2
- package/dist/esm/node/runtime/renderPage/renderPageAlreadyRouted.js +13 -13
- package/dist/esm/node/runtime/renderPage.js +57 -50
- package/dist/esm/node/vite/shared/resolveVikeConfigInternal/configDefinitionsBuiltIn.js +0 -2
- package/dist/esm/shared/createPageContextShared.js +1 -3
- package/dist/esm/shared/hooks/execHook.d.ts +14 -28
- package/dist/esm/shared/hooks/execHook.js +31 -54
- package/dist/esm/shared/route/execHookGuard.d.ts +8 -0
- package/dist/esm/shared/route/{executeGuardHook.js → execHookGuard.js} +4 -4
- package/dist/esm/shared/route/{executeOnBeforeRouteHook.d.ts → execHookOnBeforeRoute.d.ts} +2 -2
- package/dist/esm/shared/route/{executeOnBeforeRouteHook.js → execHookOnBeforeRoute.js} +5 -5
- package/dist/esm/shared/route/index.js +3 -2
- package/dist/esm/shared/route/resolveRouteFunction.js +2 -2
- package/dist/esm/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/esm/utils/PROJECT_VERSION.js +1 -1
- package/dist/esm/utils/styleFileRE.js +1 -0
- package/package.json +1 -1
- package/dist/esm/node/runtime/renderPage/executeOnBeforeRenderAndDataHooks.d.ts +0 -6
- package/dist/esm/shared/route/executeGuardHook.d.ts +0 -8
|
@@ -171,7 +171,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
171
171
|
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
|
|
172
172
|
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
|
|
173
173
|
} & {
|
|
174
|
-
urlParsed: import("../
|
|
174
|
+
urlParsed: import("../runtime/utils.js").UrlPublic;
|
|
175
175
|
urlPathname: string;
|
|
176
176
|
url: string;
|
|
177
177
|
} & {
|
|
@@ -292,7 +292,7 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
292
292
|
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
|
|
293
293
|
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
|
|
294
294
|
} & {
|
|
295
|
-
urlParsed: import("../
|
|
295
|
+
urlParsed: import("../runtime/utils.js").UrlPublic;
|
|
296
296
|
urlPathname: string;
|
|
297
297
|
url: string;
|
|
298
298
|
} & {
|
|
@@ -310,13 +310,259 @@ declare function createPageContextPrerendering(urlOriginal: string, prerenderCon
|
|
|
310
310
|
pageId: string;
|
|
311
311
|
_debugRouteMatches: never[];
|
|
312
312
|
routeParams: {};
|
|
313
|
-
})) &
|
|
313
|
+
})) & (((({
|
|
314
|
+
_isOriginalObject: true;
|
|
315
|
+
isPageContext: true;
|
|
316
|
+
} & {
|
|
317
|
+
isClientSide: false;
|
|
318
|
+
isPrerendering: boolean;
|
|
319
|
+
} & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
|
|
320
|
+
url?: string;
|
|
321
|
+
headers?: Record<string, string>;
|
|
322
|
+
} & {
|
|
323
|
+
_globalContext: {
|
|
324
|
+
isGlobalContext: true;
|
|
325
|
+
_isOriginalObject: true;
|
|
326
|
+
_virtualFileExports: unknown;
|
|
327
|
+
_pageFilesAll: PageFile[];
|
|
328
|
+
_pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
|
|
329
|
+
_pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
|
|
330
|
+
_allPageIds: string[];
|
|
331
|
+
_vikeConfigPublicGlobal: {
|
|
332
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
333
|
+
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
|
|
334
|
+
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
|
|
335
|
+
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
|
|
336
|
+
};
|
|
337
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
338
|
+
pages: {
|
|
339
|
+
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
340
|
+
};
|
|
341
|
+
} & ({
|
|
342
|
+
_isProduction: false;
|
|
343
|
+
_isPrerendering: false;
|
|
344
|
+
assetsManifest: null;
|
|
345
|
+
_viteDevServer: import("vite").ViteDevServer;
|
|
346
|
+
viteConfig: ResolvedConfig;
|
|
347
|
+
viteConfigRuntime: {
|
|
348
|
+
root: string;
|
|
349
|
+
build: {
|
|
350
|
+
outDir: string;
|
|
351
|
+
};
|
|
352
|
+
_baseViteOriginal: string;
|
|
353
|
+
vitePluginServerEntry: {
|
|
354
|
+
inject: boolean | undefined;
|
|
355
|
+
};
|
|
356
|
+
};
|
|
357
|
+
baseServer: string;
|
|
358
|
+
baseAssets: string;
|
|
359
|
+
isClientSide: false;
|
|
360
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
361
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
362
|
+
} | {
|
|
363
|
+
_isPrerendering: true;
|
|
364
|
+
viteConfig: ResolvedConfig;
|
|
365
|
+
_isProduction: true;
|
|
366
|
+
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
|
|
367
|
+
_viteDevServer: null;
|
|
368
|
+
viteConfigRuntime: {
|
|
369
|
+
root: string;
|
|
370
|
+
build: {
|
|
371
|
+
outDir: string;
|
|
372
|
+
};
|
|
373
|
+
_baseViteOriginal: string;
|
|
374
|
+
vitePluginServerEntry: {
|
|
375
|
+
inject: boolean | undefined;
|
|
376
|
+
};
|
|
377
|
+
};
|
|
378
|
+
_usesClientRouter: boolean;
|
|
379
|
+
baseServer: string;
|
|
380
|
+
baseAssets: string;
|
|
381
|
+
isClientSide: false;
|
|
382
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
383
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
384
|
+
} | {
|
|
385
|
+
_isPrerendering: false;
|
|
386
|
+
viteConfig: null;
|
|
387
|
+
_isProduction: true;
|
|
388
|
+
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
|
|
389
|
+
_viteDevServer: null;
|
|
390
|
+
viteConfigRuntime: {
|
|
391
|
+
root: string;
|
|
392
|
+
build: {
|
|
393
|
+
outDir: string;
|
|
394
|
+
};
|
|
395
|
+
_baseViteOriginal: string;
|
|
396
|
+
vitePluginServerEntry: {
|
|
397
|
+
inject: boolean | undefined;
|
|
398
|
+
};
|
|
399
|
+
};
|
|
400
|
+
_usesClientRouter: boolean;
|
|
401
|
+
baseServer: string;
|
|
402
|
+
baseAssets: string;
|
|
403
|
+
isClientSide: false;
|
|
404
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
405
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
406
|
+
});
|
|
407
|
+
_pageFilesAll: PageFile[];
|
|
408
|
+
_baseServer: string;
|
|
409
|
+
_baseAssets: string;
|
|
410
|
+
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
|
|
411
|
+
_urlRewrite: null;
|
|
412
|
+
_urlHandler: ((url: string) => string) | null;
|
|
413
|
+
isClientSideNavigation: boolean;
|
|
414
|
+
} & {
|
|
415
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
416
|
+
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
|
|
417
|
+
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
|
|
418
|
+
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
|
|
419
|
+
} & {
|
|
420
|
+
urlParsed: import("../runtime/utils.js").UrlPublic;
|
|
421
|
+
urlPathname: string;
|
|
422
|
+
url: string;
|
|
423
|
+
} & {
|
|
424
|
+
headers: Record<string, string> | null;
|
|
425
|
+
} & {
|
|
426
|
+
_urlHandler: null;
|
|
427
|
+
_httpRequestId: null;
|
|
428
|
+
_urlRewrite: null;
|
|
429
|
+
_noExtraDir: boolean | null;
|
|
430
|
+
_prerenderContext: PrerenderContext;
|
|
431
|
+
_providedByHook: ProvidedByHook;
|
|
432
|
+
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
|
|
433
|
+
is404: boolean;
|
|
434
|
+
} & import("../../shared/route/index.js").PageContextFromRoute & Record<"pageId", string>) | ({
|
|
435
|
+
_isOriginalObject: true;
|
|
436
|
+
isPageContext: true;
|
|
437
|
+
} & {
|
|
438
|
+
isClientSide: false;
|
|
439
|
+
isPrerendering: boolean;
|
|
440
|
+
} & Pick<import("../../types/PageContext.js").PageContextInternalServer, "urlOriginal" | "headersOriginal"> & {
|
|
441
|
+
url?: string;
|
|
442
|
+
headers?: Record<string, string>;
|
|
443
|
+
} & {
|
|
444
|
+
_globalContext: {
|
|
445
|
+
isGlobalContext: true;
|
|
446
|
+
_isOriginalObject: true;
|
|
447
|
+
_virtualFileExports: unknown;
|
|
448
|
+
_pageFilesAll: PageFile[];
|
|
449
|
+
_pageConfigs: import("../../types/PageConfig.js").PageConfigRuntime[];
|
|
450
|
+
_pageConfigGlobal: import("../../types/PageConfig.js").PageConfigGlobalRuntime;
|
|
451
|
+
_allPageIds: string[];
|
|
452
|
+
_vikeConfigPublicGlobal: {
|
|
453
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
454
|
+
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
|
|
455
|
+
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
|
|
456
|
+
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
|
|
457
|
+
};
|
|
458
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
459
|
+
pages: {
|
|
460
|
+
[k: string]: import("../../shared/page-configs/resolveVikeConfigPublic.js").VikeConfigPublicPageEager;
|
|
461
|
+
};
|
|
462
|
+
} & ({
|
|
463
|
+
_isProduction: false;
|
|
464
|
+
_isPrerendering: false;
|
|
465
|
+
assetsManifest: null;
|
|
466
|
+
_viteDevServer: import("vite").ViteDevServer;
|
|
467
|
+
viteConfig: ResolvedConfig;
|
|
468
|
+
viteConfigRuntime: {
|
|
469
|
+
root: string;
|
|
470
|
+
build: {
|
|
471
|
+
outDir: string;
|
|
472
|
+
};
|
|
473
|
+
_baseViteOriginal: string;
|
|
474
|
+
vitePluginServerEntry: {
|
|
475
|
+
inject: boolean | undefined;
|
|
476
|
+
};
|
|
477
|
+
};
|
|
478
|
+
baseServer: string;
|
|
479
|
+
baseAssets: string;
|
|
480
|
+
isClientSide: false;
|
|
481
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
482
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
483
|
+
} | {
|
|
484
|
+
_isPrerendering: true;
|
|
485
|
+
viteConfig: ResolvedConfig;
|
|
486
|
+
_isProduction: true;
|
|
487
|
+
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
|
|
488
|
+
_viteDevServer: null;
|
|
489
|
+
viteConfigRuntime: {
|
|
490
|
+
root: string;
|
|
491
|
+
build: {
|
|
492
|
+
outDir: string;
|
|
493
|
+
};
|
|
494
|
+
_baseViteOriginal: string;
|
|
495
|
+
vitePluginServerEntry: {
|
|
496
|
+
inject: boolean | undefined;
|
|
497
|
+
};
|
|
498
|
+
};
|
|
499
|
+
_usesClientRouter: boolean;
|
|
500
|
+
baseServer: string;
|
|
501
|
+
baseAssets: string;
|
|
502
|
+
isClientSide: false;
|
|
503
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
504
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
505
|
+
} | {
|
|
506
|
+
_isPrerendering: false;
|
|
507
|
+
viteConfig: null;
|
|
508
|
+
_isProduction: true;
|
|
509
|
+
assetsManifest: import("../../types/ViteManifest.js").ViteManifest;
|
|
510
|
+
_viteDevServer: null;
|
|
511
|
+
viteConfigRuntime: {
|
|
512
|
+
root: string;
|
|
513
|
+
build: {
|
|
514
|
+
outDir: string;
|
|
515
|
+
};
|
|
516
|
+
_baseViteOriginal: string;
|
|
517
|
+
vitePluginServerEntry: {
|
|
518
|
+
inject: boolean | undefined;
|
|
519
|
+
};
|
|
520
|
+
};
|
|
521
|
+
_usesClientRouter: boolean;
|
|
522
|
+
baseServer: string;
|
|
523
|
+
baseAssets: string;
|
|
524
|
+
isClientSide: false;
|
|
525
|
+
_pageRoutes: import("../../shared/route/loadPageRoutes.js").PageRoutes;
|
|
526
|
+
_onBeforeRouteHook: import("../../shared/hooks/getHook.js").Hook | null;
|
|
527
|
+
});
|
|
528
|
+
_pageFilesAll: PageFile[];
|
|
529
|
+
_baseServer: string;
|
|
530
|
+
_baseAssets: string;
|
|
531
|
+
_pageContextInit: import("../runtime/renderPage.js").PageContextInit;
|
|
532
|
+
_urlRewrite: null;
|
|
533
|
+
_urlHandler: ((url: string) => string) | null;
|
|
534
|
+
isClientSideNavigation: boolean;
|
|
535
|
+
} & {
|
|
536
|
+
config: import("../../types/index.js").ConfigResolved;
|
|
537
|
+
_source: import("../../shared/page-configs/resolveVikeConfigPublic.js").Source;
|
|
538
|
+
_sources: import("../../shared/page-configs/resolveVikeConfigPublic.js").Sources;
|
|
539
|
+
_from: import("../../shared/page-configs/resolveVikeConfigPublic.js").From;
|
|
540
|
+
} & {
|
|
541
|
+
urlParsed: import("../runtime/utils.js").UrlPublic;
|
|
542
|
+
urlPathname: string;
|
|
543
|
+
url: string;
|
|
544
|
+
} & {
|
|
545
|
+
headers: Record<string, string> | null;
|
|
546
|
+
} & {
|
|
547
|
+
_urlHandler: null;
|
|
548
|
+
_httpRequestId: null;
|
|
549
|
+
_urlRewrite: null;
|
|
550
|
+
_noExtraDir: boolean | null;
|
|
551
|
+
_prerenderContext: PrerenderContext;
|
|
552
|
+
_providedByHook: ProvidedByHook;
|
|
553
|
+
_urlOriginalModifiedByHook: ProvidedByHookTransformer;
|
|
554
|
+
is404: boolean;
|
|
555
|
+
} & {
|
|
556
|
+
pageId: string;
|
|
557
|
+
_debugRouteMatches: never[];
|
|
558
|
+
routeParams: {};
|
|
559
|
+
})) & import("../../shared/getPageFiles.js").VikeConfigPublicPageLazy) & {
|
|
314
560
|
Page: unknown;
|
|
315
561
|
_isHtmlOnly: boolean;
|
|
316
562
|
_passToClient: string[];
|
|
317
563
|
_pageFilePathsLoaded: string[];
|
|
318
564
|
} & {
|
|
319
565
|
__getPageAssets: () => Promise<import("../runtime/renderPage/getPageAssets.js").PageAsset[]>;
|
|
320
|
-
}) & {
|
|
566
|
+
})) & {
|
|
321
567
|
_usesClientRouter: boolean;
|
|
322
568
|
}>;
|
|
@@ -18,17 +18,18 @@ import { getConfigValueRuntime } from '../../shared/page-configs/getConfigValueR
|
|
|
18
18
|
import { loadConfigValues } from '../../shared/page-configs/loadConfigValues.js';
|
|
19
19
|
import { getErrorPageId, isErrorPage } from '../../shared/error-page.js';
|
|
20
20
|
import { isAbortError } from '../../shared/route/abort.js';
|
|
21
|
-
import {
|
|
21
|
+
import { loadPageConfigsLazyServerSideAndExecHook } from '../runtime/renderPage/loadPageConfigsLazyServerSide.js';
|
|
22
22
|
import { getHookFromPageConfig, getHookFromPageConfigGlobal, getHookTimeoutDefault, getHook_setIsPrerenderering, } from '../../shared/hooks/getHook.js';
|
|
23
23
|
import { noRouteMatch } from '../../shared/route/noRouteMatch.js';
|
|
24
24
|
import { getVikeConfigInternal } from '../vite/shared/resolveVikeConfigInternal.js';
|
|
25
|
-
import {
|
|
25
|
+
import { execHookDirectWithoutPageContext, isUserHookError } from '../../shared/hooks/execHook.js';
|
|
26
26
|
import { setWasPrerenderRun } from './context.js';
|
|
27
27
|
import { resolvePrerenderConfigGlobal, resolvePrerenderConfigLocal } from './resolvePrerenderConfig.js';
|
|
28
28
|
import { getOutDirs } from '../vite/shared/getOutDirs.js';
|
|
29
29
|
import fs from 'node:fs';
|
|
30
30
|
import { getProxyForPublicUsage } from '../../shared/getProxyForPublicUsage.js';
|
|
31
31
|
import { getStaticRedirectsForPrerender } from '../runtime/renderPage/resolveRedirects.js';
|
|
32
|
+
import { augmentType } from '../runtime/utils.js';
|
|
32
33
|
const docLink = 'https://vike.dev/i18n#pre-rendering';
|
|
33
34
|
async function runPrerender(options = {}, trigger) {
|
|
34
35
|
setWasPrerenderRun(trigger);
|
|
@@ -215,7 +216,7 @@ async function callOnBeforePrerenderStartHooks(prerenderContext, globalContext,
|
|
|
215
216
|
if (doNotPrerenderList.find((p) => p.pageId === pageId))
|
|
216
217
|
return;
|
|
217
218
|
const { hookName, hookFilePath } = hook;
|
|
218
|
-
const prerenderResult = await
|
|
219
|
+
const prerenderResult = await execHookDirectWithoutPageContext(() => hook.hookFn(), hook);
|
|
219
220
|
const result = normalizeOnPrerenderHookResult(prerenderResult, hookFilePath, hookName);
|
|
220
221
|
// Handle result
|
|
221
222
|
await Promise.all(result.map(async ({ url, pageContext }) => {
|
|
@@ -322,7 +323,7 @@ async function createPageContextPrerendering(urlOriginal, prerenderContext, glob
|
|
|
322
323
|
routeParams: {},
|
|
323
324
|
});
|
|
324
325
|
}
|
|
325
|
-
|
|
326
|
+
augmentType(pageContext, await loadPageConfigsLazyServerSideAndExecHook(pageContext));
|
|
326
327
|
let usesClientRouter;
|
|
327
328
|
{
|
|
328
329
|
const { pageId } = pageContext;
|
|
@@ -443,7 +444,7 @@ async function callOnPrerenderStartHook(prerenderContext, globalContext, concurr
|
|
|
443
444
|
preservePropertyGetters(pageContext);
|
|
444
445
|
});
|
|
445
446
|
const prerenderContextPublic = preparePrerenderContextForPublicUsage(prerenderContext);
|
|
446
|
-
let result = await
|
|
447
|
+
let result = await execHookDirectWithoutPageContext(() => hookFn(prerenderContextPublic), onPrerenderStartHook);
|
|
447
448
|
// Before applying result
|
|
448
449
|
prerenderContext.pageContexts.forEach((pageContext) => {
|
|
449
450
|
;
|
|
@@ -725,9 +726,13 @@ function getRedirectHtml(urlTarget) {
|
|
|
725
726
|
<meta charset="UTF-8">
|
|
726
727
|
<meta http-equiv="refresh" content="0;url=${urlTargetSafe}">
|
|
727
728
|
<title>Redirect ${urlTargetSafe}</title>
|
|
729
|
+
<style>body{opacity:0}</style>
|
|
730
|
+
<noscript>
|
|
731
|
+
<style>body{opacity:1}</style>
|
|
732
|
+
</noscript>
|
|
728
733
|
</head>
|
|
729
734
|
<body style="min-height: 100vh; margin: 0; font-family: sans-serif; display: flex; justify-content: center; align-items: center; transition: opacity 0.3s;">
|
|
730
|
-
<script>
|
|
735
|
+
<script>setTimeout(()=>{document.body.style.opacity=1},2000)</script>
|
|
731
736
|
<div>
|
|
732
737
|
<h1>Redirect <a href="${urlTargetSafe}"><code style="background-color: #eaeaea; padding: 3px 5px; border-radius: 4px;">${urlTargetSafe}</code></a></h1>
|
|
733
738
|
<p>If you aren't redirected, click the link above.</p>
|
|
@@ -8,7 +8,7 @@ export { createHttpResponseBaseIsMissing };
|
|
|
8
8
|
export type { HttpResponse };
|
|
9
9
|
import type { GetPageAssets } from './getPageAssets.js';
|
|
10
10
|
import type { HtmlRender } from '../html/renderHtml.js';
|
|
11
|
-
import type { RenderHook } from './
|
|
11
|
+
import type { RenderHook } from './execHookOnRenderHtml.js';
|
|
12
12
|
import type { RedirectStatusCode, AbortStatusCode, UrlRedirect } from '../../../shared/route/abort.js';
|
|
13
13
|
import { HttpResponseBody } from './getHttpResponseBody.js';
|
|
14
14
|
import { type EarlyHint } from './getEarlyHints.js';
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { execHookDataAndOnBeforeRender };
|
|
2
|
+
import { type PageContextExecHookServer } from './execHookServer.js';
|
|
3
|
+
declare function execHookDataAndOnBeforeRender(pageContext: {
|
|
4
|
+
pageId: string;
|
|
5
|
+
_pageContextAlreadyProvidedByOnPrerenderHook?: true;
|
|
6
|
+
} & PageContextExecHookServer): Promise<void>;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { execHookDataAndOnBeforeRender };
|
|
2
2
|
import { assertOnBeforeRenderHookReturn } from '../../../shared/assertOnBeforeRenderHookReturn.js';
|
|
3
3
|
import { execHookServer } from './execHookServer.js';
|
|
4
|
-
async function
|
|
4
|
+
async function execHookDataAndOnBeforeRender(pageContext) {
|
|
5
5
|
if (pageContext._pageContextAlreadyProvidedByOnPrerenderHook) {
|
|
6
6
|
return;
|
|
7
7
|
}
|
package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.d.ts → execHookOnRenderHtml.d.ts}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { execHookOnRenderHtml };
|
|
2
2
|
export type { RenderHook };
|
|
3
3
|
import { type HtmlRender } from '../html/renderHtml.js';
|
|
4
4
|
import { type Hook } from '../../../shared/hooks/getHook.js';
|
|
@@ -11,7 +11,7 @@ type RenderHook = Hook & {
|
|
|
11
11
|
hookName: HookName;
|
|
12
12
|
};
|
|
13
13
|
type HookName = 'onRenderHtml' | 'render';
|
|
14
|
-
declare function
|
|
14
|
+
declare function execHookOnRenderHtml(pageContext: PageContextForPublicUsageServer & PageContextSerialization & {
|
|
15
15
|
pageId: string;
|
|
16
16
|
_globalContext: GlobalContextServerInternal;
|
|
17
17
|
__getPageAssets: GetPageAssets;
|
package/dist/esm/node/runtime/renderPage/{executeOnRenderHtmlHook.js → execHookOnRenderHtml.js}
RENAMED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { execHookOnRenderHtml };
|
|
2
2
|
import { isDocumentHtml, renderDocumentHtml, dangerouslySkipEscape, } from '../html/renderHtml.js';
|
|
3
3
|
import { getHookFromPageContext } from '../../../shared/hooks/getHook.js';
|
|
4
4
|
import { assert, assertUsage, assertWarning, isObject, objectAssign, isPromise, isCallable } from '../utils.js';
|
|
@@ -8,11 +8,11 @@ import { preparePageContextForPublicUsageServer, } from './preparePageContextFor
|
|
|
8
8
|
import { assertHookReturnedObject } from '../../../shared/assertHookReturnedObject.js';
|
|
9
9
|
import { logRuntimeError } from '../loggerRuntime.js';
|
|
10
10
|
import pc from '@brillout/picocolors';
|
|
11
|
-
import {
|
|
12
|
-
async function
|
|
11
|
+
import { execHookDirectSingleWithReturn } from '../../../shared/hooks/execHook.js';
|
|
12
|
+
async function execHookOnRenderHtml(pageContext) {
|
|
13
13
|
const hook = getRenderHook(pageContext);
|
|
14
14
|
objectAssign(pageContext, { _renderHook: hook });
|
|
15
|
-
const { hookReturn } = await
|
|
15
|
+
const { hookReturn } = await execHookDirectSingleWithReturn(hook, pageContext, preparePageContextForPublicUsageServer);
|
|
16
16
|
const { documentHtml, pageContextProvidedByRenderHook, pageContextPromise, injectFilter } = processHookReturnValue(hookReturn, hook);
|
|
17
17
|
Object.assign(pageContext, pageContextProvidedByRenderHook);
|
|
18
18
|
objectAssign(pageContext, { _pageContextPromise: pageContextPromise });
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
export { execHookServer };
|
|
2
|
-
export type {
|
|
2
|
+
export type { PageContextExecHookServer };
|
|
3
3
|
import { type PageContextForPublicUsageServer } from './preparePageContextForPublicUsageServer.js';
|
|
4
4
|
import type { VikeConfigPublicPageLazy } from '../../../shared/getPageFiles.js';
|
|
5
5
|
import type { HookName } from '../../../types/Config.js';
|
|
6
|
-
type
|
|
7
|
-
declare function execHookServer(hookName: HookName, pageContext:
|
|
6
|
+
type PageContextExecHookServer = VikeConfigPublicPageLazy & PageContextForPublicUsageServer;
|
|
7
|
+
declare function execHookServer(hookName: HookName, pageContext: PageContextExecHookServer): Promise<(import("../../../shared/hooks/getHook.js").HookLoc & {
|
|
8
8
|
hookFn: (arg: import("../../../shared/preparePageContextForPublicUsage.js").PageContextPrepareMinimum | import("../../../shared/prepareGlobalContextForPublicUsage.js").GlobalContextPrepareMinimum) => unknown;
|
|
9
9
|
hookTimeout: import("../../../shared/hooks/getHook.js").HookTimeout;
|
|
10
10
|
} & {
|
|
@@ -2,8 +2,5 @@ export { execHookServer };
|
|
|
2
2
|
import { execHook } from '../../../shared/hooks/execHook.js';
|
|
3
3
|
import { preparePageContextForPublicUsageServer, } from './preparePageContextForPublicUsageServer.js';
|
|
4
4
|
async function execHookServer(hookName, pageContext) {
|
|
5
|
-
return await execHook(hookName, pageContext,
|
|
6
|
-
preparePageContextForPublicUsageServer(p);
|
|
7
|
-
return p;
|
|
8
|
-
});
|
|
5
|
+
return await execHook(hookName, pageContext, preparePageContextForPublicUsageServer);
|
|
9
6
|
}
|
|
@@ -3,7 +3,7 @@ export { getHttpResponseBodyStreamHandlers };
|
|
|
3
3
|
export type { HttpResponseBody };
|
|
4
4
|
import { StreamPipeNode, StreamPipeWeb, StreamReadableNode, StreamReadableWeb, StreamWritableNode, StreamWritableWeb } from '../html/stream.js';
|
|
5
5
|
import { type HtmlRender } from '../html/renderHtml.js';
|
|
6
|
-
import type { RenderHook } from './
|
|
6
|
+
import type { RenderHook } from './execHookOnRenderHtml.js';
|
|
7
7
|
type HttpResponseBody = {
|
|
8
8
|
body: string;
|
|
9
9
|
pipe: (writable: StreamWritableWeb | StreamWritableNode) => void;
|
|
@@ -1,18 +1,27 @@
|
|
|
1
|
-
export {
|
|
2
|
-
export type { PageFiles };
|
|
1
|
+
export { loadPageConfigsLazyServerSideAndExecHook };
|
|
3
2
|
export type { PageContext_loadPageConfigsLazyServerSide };
|
|
3
|
+
export type { PageConfigsLazy };
|
|
4
4
|
import { PromiseType } from '../utils.js';
|
|
5
5
|
import { PageContextGetPageAssets, type PageAsset } from './getPageAssets.js';
|
|
6
6
|
import { type PageContextDebugRouteMatches } from './debugPageFiles.js';
|
|
7
7
|
import type { GlobalContextServerInternal } from '../globalContext.js';
|
|
8
|
+
import { type PageContextExecHookServer } from './execHookServer.js';
|
|
9
|
+
type PageContextExecuteHook = Omit<PageContextExecHookServer, keyof Awaited<ReturnType<typeof loadPageConfigsLazyServerSide>>>;
|
|
8
10
|
type PageContext_loadPageConfigsLazyServerSide = PageContextGetPageAssets & PageContextDebugRouteMatches & {
|
|
11
|
+
pageId: string;
|
|
9
12
|
urlOriginal: string;
|
|
10
13
|
_globalContext: GlobalContextServerInternal;
|
|
11
14
|
};
|
|
12
|
-
type
|
|
13
|
-
declare function
|
|
14
|
-
|
|
15
|
-
|
|
15
|
+
type PageConfigsLazy = PromiseType<ReturnType<typeof loadPageConfigsLazyServerSide>>;
|
|
16
|
+
declare function loadPageConfigsLazyServerSideAndExecHook<PageContext extends PageContext_loadPageConfigsLazyServerSide & PageContextExecuteHook>(pageContext: PageContext): Promise<PageContext & import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
|
|
17
|
+
Page: unknown;
|
|
18
|
+
_isHtmlOnly: boolean;
|
|
19
|
+
_passToClient: string[];
|
|
20
|
+
_pageFilePathsLoaded: string[];
|
|
21
|
+
} & {
|
|
22
|
+
__getPageAssets: () => Promise<PageAsset[]>;
|
|
23
|
+
}>;
|
|
24
|
+
declare function loadPageConfigsLazyServerSide(pageContext: PageContext_loadPageConfigsLazyServerSide): Promise<import("../../../shared/getPageFiles.js").VikeConfigPublicPageLazy & {
|
|
16
25
|
Page: unknown;
|
|
17
26
|
_isHtmlOnly: boolean;
|
|
18
27
|
_passToClient: string[];
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
export {
|
|
1
|
+
export { loadPageConfigsLazyServerSideAndExecHook };
|
|
2
2
|
import { getPageFilesServerSide } from '../../../shared/getPageFiles.js';
|
|
3
3
|
import { resolveVikeConfigPublicPageLazy } from '../../../shared/page-configs/resolveVikeConfigPublic.js';
|
|
4
4
|
import { analyzePageClientSideInit } from '../../../shared/getPageFiles/analyzePageClientSide.js';
|
|
@@ -8,6 +8,13 @@ import { debugPageFiles } from './debugPageFiles.js';
|
|
|
8
8
|
import { findPageConfig } from '../../../shared/page-configs/findPageConfig.js';
|
|
9
9
|
import { analyzePage } from './analyzePage.js';
|
|
10
10
|
import { loadConfigValues } from '../../../shared/page-configs/loadConfigValues.js';
|
|
11
|
+
import { execHookServer } from './execHookServer.js';
|
|
12
|
+
async function loadPageConfigsLazyServerSideAndExecHook(pageContext) {
|
|
13
|
+
const pageContextAddendum = await loadPageConfigsLazyServerSide(pageContext);
|
|
14
|
+
objectAssign(pageContext, pageContextAddendum);
|
|
15
|
+
await execHookServer('onCreatePageContext', pageContext);
|
|
16
|
+
return pageContext;
|
|
17
|
+
}
|
|
11
18
|
async function loadPageConfigsLazyServerSide(pageContext) {
|
|
12
19
|
const pageConfig = findPageConfig(pageContext._globalContext._pageConfigs, pageContext.pageId); // Make pageConfig globally available as pageContext._pageConfig ?
|
|
13
20
|
const globalContext = pageContext._globalContext;
|
|
@@ -84,18 +91,16 @@ async function loadPageConfigsLazyServerSide(pageContext) {
|
|
|
84
91
|
return pageAssetsOldFormat;
|
|
85
92
|
},
|
|
86
93
|
});
|
|
87
|
-
{
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
});
|
|
98
|
-
}
|
|
94
|
+
debugPageFiles({
|
|
95
|
+
pageContext,
|
|
96
|
+
isHtmlOnly,
|
|
97
|
+
isClientRouting,
|
|
98
|
+
pageFilesLoaded,
|
|
99
|
+
pageFilesClientSide,
|
|
100
|
+
pageFilesServerSide,
|
|
101
|
+
clientEntries,
|
|
102
|
+
clientDependencies,
|
|
103
|
+
});
|
|
99
104
|
return pageContextAddendum;
|
|
100
105
|
}
|
|
101
106
|
async function loadPageUserFiles(pageFilesAll, pageConfig, pageConfigGlobal, pageId, isDev) {
|
|
@@ -3,7 +3,7 @@ export { prerenderPage };
|
|
|
3
3
|
export type { PageContextAfterRender };
|
|
4
4
|
import { type PageContextUrlInternal } from '../../../shared/getPageContextUrlComputed.js';
|
|
5
5
|
import { HttpResponse } from './createHttpResponse.js';
|
|
6
|
-
import { PageContext_loadPageConfigsLazyServerSide, type
|
|
6
|
+
import { PageContext_loadPageConfigsLazyServerSide, type PageConfigsLazy } from './loadPageConfigsLazyServerSide.js';
|
|
7
7
|
import type { PageContextCreated } from './createPageContextServerSide.js';
|
|
8
8
|
type PageContextAfterRender = {
|
|
9
9
|
httpResponse: HttpResponse;
|
|
@@ -17,7 +17,7 @@ declare function renderPageAlreadyRouted<PageContext extends {
|
|
|
17
17
|
errorWhileRendering: null | Error;
|
|
18
18
|
_httpRequestId: number;
|
|
19
19
|
} & PageContextCreated & PageContextUrlInternal & PageContext_loadPageConfigsLazyServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
|
|
20
|
-
declare function prerenderPage(pageContext: PageContextCreated &
|
|
20
|
+
declare function prerenderPage(pageContext: PageContextCreated & PageConfigsLazy & {
|
|
21
21
|
routeParams: Record<string, string>;
|
|
22
22
|
pageId: string;
|
|
23
23
|
_urlRewrite: null;
|
|
@@ -2,16 +2,16 @@ export { renderPageAlreadyRouted };
|
|
|
2
2
|
export { prerenderPage };
|
|
3
3
|
import { getErrorPageId } from '../../../shared/error-page.js';
|
|
4
4
|
import { getHtmlString } from '../html/renderHtml.js';
|
|
5
|
-
import { assert, assertUsage, hasProp, objectAssign } from '../utils.js';
|
|
5
|
+
import { assert, assertUsage, augmentType, hasProp, objectAssign } from '../utils.js';
|
|
6
6
|
import { getPageContextClientSerialized } from '../html/serializeContext.js';
|
|
7
7
|
import { createHttpResponsePage, createHttpResponsePageContextJson } from './createHttpResponse.js';
|
|
8
|
-
import {
|
|
9
|
-
import {
|
|
10
|
-
import {
|
|
8
|
+
import { loadPageConfigsLazyServerSideAndExecHook, } from './loadPageConfigsLazyServerSide.js';
|
|
9
|
+
import { execHookOnRenderHtml } from './execHookOnRenderHtml.js';
|
|
10
|
+
import { execHookDataAndOnBeforeRender } from './execHookDataAndOnBeforeRender.js';
|
|
11
11
|
import { logRuntimeError } from '../loggerRuntime.js';
|
|
12
12
|
import { isNewError } from './isNewError.js';
|
|
13
13
|
import { preparePageContextForPublicUsageServer } from './preparePageContextForPublicUsageServer.js';
|
|
14
|
-
import {
|
|
14
|
+
import { execHookGuard } from '../../../shared/route/execHookGuard.js';
|
|
15
15
|
import pc from '@brillout/picocolors';
|
|
16
16
|
import { isServerSideError } from '../../../shared/misc/isServerSideError.js';
|
|
17
17
|
async function renderPageAlreadyRouted(pageContext) {
|
|
@@ -23,16 +23,16 @@ async function renderPageAlreadyRouted(pageContext) {
|
|
|
23
23
|
assert(isError ===
|
|
24
24
|
(pageContext.pageId ===
|
|
25
25
|
getErrorPageId(pageContext._globalContext._pageFilesAll, pageContext._globalContext._pageConfigs)));
|
|
26
|
-
|
|
26
|
+
augmentType(pageContext, await loadPageConfigsLazyServerSideAndExecHook(pageContext));
|
|
27
27
|
if (!isError) {
|
|
28
|
-
await
|
|
28
|
+
await execHookGuard(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext));
|
|
29
29
|
}
|
|
30
30
|
if (!isError) {
|
|
31
|
-
await
|
|
31
|
+
await execHookDataAndOnBeforeRender(pageContext);
|
|
32
32
|
}
|
|
33
33
|
else {
|
|
34
34
|
try {
|
|
35
|
-
await
|
|
35
|
+
await execHookDataAndOnBeforeRender(pageContext);
|
|
36
36
|
}
|
|
37
37
|
catch (err) {
|
|
38
38
|
if (isNewError(err, pageContext.errorWhileRendering)) {
|
|
@@ -49,7 +49,7 @@ async function renderPageAlreadyRouted(pageContext) {
|
|
|
49
49
|
objectAssign(pageContext, { httpResponse });
|
|
50
50
|
return pageContext;
|
|
51
51
|
}
|
|
52
|
-
const renderHookResult = await
|
|
52
|
+
const renderHookResult = await execHookOnRenderHtml(pageContext);
|
|
53
53
|
const { htmlRender, renderHook } = renderHookResult;
|
|
54
54
|
const httpResponse = await createHttpResponsePage(htmlRender, renderHook, pageContext);
|
|
55
55
|
objectAssign(pageContext, { httpResponse });
|
|
@@ -62,10 +62,10 @@ async function prerenderPage(pageContext) {
|
|
|
62
62
|
});
|
|
63
63
|
/* Should we execute the guard() hook upon pre-rendering? Is there a use case for this?
|
|
64
64
|
* - It isn't trivial to implement, as it requires to duplicate / factor out the isAbortError() handling
|
|
65
|
-
await
|
|
65
|
+
await execHookGuard(pageContext, (pageContext) => preparePageContextForPublicUsageServer(pageContext))
|
|
66
66
|
*/
|
|
67
|
-
await
|
|
68
|
-
const { htmlRender, renderHook } = await
|
|
67
|
+
await execHookDataAndOnBeforeRender(pageContext);
|
|
68
|
+
const { htmlRender, renderHook } = await execHookOnRenderHtml(pageContext);
|
|
69
69
|
assertUsage(htmlRender !== null, `Cannot pre-render ${pc.cyan(pageContext.urlOriginal)} because the ${renderHook.hookName}() hook defined by ${renderHook.hookFilePath} didn't return an HTML string.`);
|
|
70
70
|
assert(pageContext.isClientSideNavigation === false);
|
|
71
71
|
const documentHtml = await getHtmlString(htmlRender);
|