vike 0.4.232 → 0.4.233-commit-e534fd6
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/html/injectAssets/getHtmlTags.js +20 -3
- package/dist/cjs/node/runtime/html/injectAssets/mergeScriptTags.js +7 -1
- 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.d.ts +1 -1
- 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/html/injectAssets/getHtmlTags.js +20 -3
- package/dist/esm/node/runtime/html/injectAssets/mergeScriptTags.js +7 -1
- 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>
|
|
@@ -160,9 +160,26 @@ async function getHtmlTags(pageContext, streamFromReactStreamingPackage, injectF
|
|
|
160
160
|
}
|
|
161
161
|
function mergeScriptEntries(pageAssets, viteDevScript) {
|
|
162
162
|
const scriptEntries = pageAssets.filter((pageAsset) => pageAsset.isEntry && pageAsset.assetType === 'script');
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
163
|
+
let scriptEntry = `${viteDevScript}${scriptEntries.map((asset) => inferAssetTag(asset)).join('')}`;
|
|
164
|
+
// We merge scripts to avoid the infamous HMR preamble error.
|
|
165
|
+
// - Infamous HMR preamble error:
|
|
166
|
+
// ```browser-console
|
|
167
|
+
// usePageContext.tsx:10 Uncaught (in promise) Error: @vitejs/plugin-react can't detect preamble. Something is wrong.
|
|
168
|
+
// at usePageContext.tsx:10:10
|
|
169
|
+
// ```
|
|
170
|
+
// - Note the following race condition. Maybe making the second script non-async ensures execution order?
|
|
171
|
+
// ```html
|
|
172
|
+
// <script type="module">console.log("I can be printed *after* the other log")</script>
|
|
173
|
+
// <script src="entry.js" type="module" async></script>
|
|
174
|
+
// ```
|
|
175
|
+
// ```js
|
|
176
|
+
// // entry.js
|
|
177
|
+
// console.log("I can be printed *before* the other log")
|
|
178
|
+
// ```
|
|
179
|
+
// - Maybe an alternative would be to make Vike's client runtime entry <script> tag non-async. Would that work? Would it be a performance issue?
|
|
180
|
+
// - The entry <script> shouldn't be `<script defer>` upon HTML streaming, otherwise progressive hydration while SSR streaming won't work.
|
|
181
|
+
scriptEntry = mergeScriptTags(scriptEntry);
|
|
182
|
+
return scriptEntry;
|
|
166
183
|
}
|
|
167
184
|
function getPageContextJsonScriptTag(pageContext) {
|
|
168
185
|
const pageContextClientSerialized = sanitizeJson(getPageContextClientSerialized(pageContext));
|
|
@@ -19,7 +19,13 @@ function mergeScriptTags(scriptTagsHtml) {
|
|
|
19
19
|
const hasInnerHtml = !!innerHtml.trim();
|
|
20
20
|
if (src) {
|
|
21
21
|
assert(!hasInnerHtml);
|
|
22
|
-
|
|
22
|
+
// - We don't use a static import because static imports are hoisted => React's HMR preamble can be executed after user land code => triggering this error:
|
|
23
|
+
// ```
|
|
24
|
+
// [22:28:57.885][/test-dev.test.ts][pnpm run dev][Browser Error] Error: @vitejs/plugin-react-swc can't detect preamble. Something is wrong.
|
|
25
|
+
// at http://localhost:3000/@fs/home/rom/code/docpress/src/renderer/usePageContext.tsx:9:11
|
|
26
|
+
// ```
|
|
27
|
+
// - We don't use `await` the dynamic import() to avoid waterfall
|
|
28
|
+
contents.push(`import(${JSON.stringify(src)});`);
|
|
23
29
|
}
|
|
24
30
|
else if (hasInnerHtml) {
|
|
25
31
|
innerHtml = innerHtml.split('\n').filter(Boolean).join('\n');
|
|
@@ -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;
|