vike 0.4.267-commit-b005535 → 0.4.267-commit-5676e14

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.
Files changed (139) hide show
  1. package/dist/client/runtime-client-routing/createPageContextClient.d.ts +4 -0
  2. package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +4 -0
  3. package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +22 -2
  4. package/dist/client/runtime-client-routing/getPageContextFromHooks.js +4 -5
  5. package/dist/client/runtime-client-routing/renderPageClient.d.ts +472 -9
  6. package/dist/client/runtime-client-routing/renderPageClient.js +11 -5
  7. package/dist/client/runtime-client-routing/streamedValues.d.ts +5 -0
  8. package/dist/client/runtime-client-routing/streamedValues.js +23 -0
  9. package/dist/client/runtime-server-routing/createPageContextClient.d.ts +4 -0
  10. package/dist/client/runtime-server-routing/entry.js +1 -1
  11. package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +4 -0
  12. package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +4 -0
  13. package/dist/client/shared/getJsonSerializedInHtml.d.ts +2 -2
  14. package/dist/client/shared/getJsonSerializedInHtml.js +9 -6
  15. package/dist/client/shared/streamedValues/asyncIterable.d.ts +4 -0
  16. package/dist/client/shared/streamedValues/asyncIterable.js +26 -0
  17. package/dist/client/shared/streamedValues/lines.d.ts +11 -0
  18. package/dist/client/shared/streamedValues/lines.js +19 -0
  19. package/dist/client/shared/streamedValues/promise.d.ts +4 -0
  20. package/dist/client/shared/streamedValues/promise.js +19 -0
  21. package/dist/client/shared/streamedValues/readableStream.d.ts +4 -0
  22. package/dist/client/shared/streamedValues/readableStream.js +44 -0
  23. package/dist/client/shared/streamedValues/registry.d.ts +21 -0
  24. package/dist/client/shared/streamedValues/registry.js +40 -0
  25. package/dist/client/shared/streamedValues.d.ts +7 -0
  26. package/dist/client/shared/streamedValues.js +82 -0
  27. package/dist/node/api/resolveViteConfigUser.js +2 -2
  28. package/dist/node/prerender/runPrerender.d.ts +12 -4
  29. package/dist/node/prerender/runPrerender.js +60 -15
  30. package/dist/node/vite/assertEnvVite.js +1 -1
  31. package/dist/node/vite/index.js +2 -0
  32. package/dist/node/vite/plugins/build/handleAssetsManifest.js +6 -2
  33. package/dist/node/vite/plugins/build/pluginBuildApp.js +25 -26
  34. package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +2 -2
  35. package/dist/node/vite/plugins/build/pluginBuildConfig.js +24 -16
  36. package/dist/node/vite/plugins/build/pluginDistFileNames.js +70 -50
  37. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.d.ts +6 -0
  38. package/dist/node/vite/plugins/build/pluginEnvironmentEntries.js +71 -0
  39. package/dist/node/vite/plugins/build/pluginSuppressRollupWarning.js +19 -17
  40. package/dist/node/vite/plugins/pluginCommon.js +9 -6
  41. package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +1 -1
  42. package/dist/node/vite/plugins/pluginReplaceConstantsGlobalThis.js +6 -4
  43. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.d.ts +2 -1
  44. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.js +29 -12
  45. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +3 -2
  46. package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +7 -7
  47. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +7 -5
  48. package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +4 -10
  49. package/dist/node/vite/plugins/pluginVirtualFiles.js +20 -0
  50. package/dist/node/vite/shared/addSsrMiddleware.js +13 -1
  51. package/dist/node/vite/shared/getAssetsDir.d.ts +3 -2
  52. package/dist/node/vite/shared/getAssetsDir.js +3 -3
  53. package/dist/node/vite/shared/isViteCli.d.ts +3 -3
  54. package/dist/node/vite/shared/isViteCli.js +80 -84
  55. package/dist/node/vite/shared/isViteServerSide.js +2 -7
  56. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +1 -1
  57. package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +8 -6
  58. package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +4 -1
  59. package/dist/node/vite/shared/resolveVikeConfigInternal.js +82 -11
  60. package/dist/server/runtime/globalContext.d.ts +20 -0
  61. package/dist/server/runtime/renderPageServer/analyzePage.js +3 -3
  62. package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +20 -7
  63. package/dist/server/runtime/renderPageServer/createHttpResponse.js +34 -15
  64. package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +4 -0
  65. package/dist/server/runtime/renderPageServer/execHookOnError.js +1 -1
  66. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.d.ts +9 -0
  67. package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.js +17 -5
  68. package/dist/server/runtime/renderPageServer/getHttpResponseBody.d.ts +2 -2
  69. package/dist/server/runtime/renderPageServer/getHttpResponseBody.js +17 -2
  70. package/dist/server/runtime/renderPageServer/getPageContextJson.d.ts +8 -0
  71. package/dist/server/runtime/renderPageServer/getPageContextJson.js +47 -0
  72. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.d.ts +2 -0
  73. package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.js +1 -1
  74. package/dist/server/runtime/renderPageServer/headersResponse.d.ts +11 -2
  75. package/dist/server/runtime/renderPageServer/headersResponse.js +20 -1
  76. package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +5 -4
  77. package/dist/server/runtime/renderPageServer/html/injectAssets.d.ts +3 -2
  78. package/dist/server/runtime/renderPageServer/html/injectAssets.js +7 -1
  79. package/dist/server/runtime/renderPageServer/html/renderHtml.js +4 -2
  80. package/dist/server/runtime/renderPageServer/html/serializeContext.d.ts +5 -1
  81. package/dist/server/runtime/renderPageServer/html/serializeContext.js +12 -9
  82. package/dist/server/runtime/renderPageServer/html/stream.d.ts +13 -6
  83. package/dist/server/runtime/renderPageServer/html/stream.js +121 -31
  84. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.d.ts +30 -0
  85. package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.js +92 -0
  86. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +4 -0
  87. package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.js +5 -1
  88. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.d.ts +15 -0
  89. package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.js +61 -0
  90. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +314 -1
  91. package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +21 -12
  92. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.d.ts +4 -0
  93. package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.js +12 -0
  94. package/dist/server/runtime/renderPageServer/streamedValues/lines.d.ts +10 -0
  95. package/dist/server/runtime/renderPageServer/streamedValues/lines.js +49 -0
  96. package/dist/server/runtime/renderPageServer/streamedValues/promise.d.ts +4 -0
  97. package/dist/server/runtime/renderPageServer/streamedValues/promise.js +14 -0
  98. package/dist/server/runtime/renderPageServer/streamedValues/pump.d.ts +10 -0
  99. package/dist/server/runtime/renderPageServer/streamedValues/pump.js +67 -0
  100. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.d.ts +4 -0
  101. package/dist/server/runtime/renderPageServer/streamedValues/readableStream.js +12 -0
  102. package/dist/server/runtime/renderPageServer/streamedValues/registry.d.ts +28 -0
  103. package/dist/server/runtime/renderPageServer/streamedValues/registry.js +33 -0
  104. package/dist/server/runtime/renderPageServer.d.ts +4 -0
  105. package/dist/server/runtime/renderPageServer.js +18 -8
  106. package/dist/shared-server-client/createGlobalContextShared.d.ts +8 -0
  107. package/dist/shared-server-client/createGlobalContextShared.js +2 -1
  108. package/dist/shared-server-client/getPageContextPublicShared.js +0 -2
  109. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.d.ts +8 -0
  110. package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.js +17 -7
  111. package/dist/shared-server-client/hooks/execHook.d.ts +1 -1
  112. package/dist/shared-server-client/hooks/execHook.js +2 -2
  113. package/dist/shared-server-client/route/abort.d.ts +1 -1
  114. package/dist/shared-server-client/route/abort.js +4 -2
  115. package/dist/shared-server-client/streamedValues.d.ts +22 -0
  116. package/dist/shared-server-client/streamedValues.js +24 -0
  117. package/dist/shared-server-node/vike-environments.d.ts +4 -0
  118. package/dist/shared-server-node/vike-environments.js +10 -0
  119. package/dist/shared-server-node/virtualFileId.d.ts +7 -5
  120. package/dist/shared-server-node/virtualFileId.js +42 -42
  121. package/dist/types/Config.d.ts +1 -1
  122. package/dist/types/PageConfig.d.ts +13 -5
  123. package/dist/types/PageContext.d.ts +18 -1
  124. package/dist/utils/PROJECT_VERSION.d.ts +1 -1
  125. package/dist/utils/PROJECT_VERSION.js +1 -1
  126. package/dist/utils/assertViteVersion.d.ts +1 -3
  127. package/dist/utils/assertViteVersion.js +6 -9
  128. package/dist/utils/catchInfiniteLoop.js +33 -11
  129. package/dist/utils/deepEqual.d.ts +2 -1
  130. package/dist/utils/deepEqual.js +21 -6
  131. package/dist/utils/getContentTypeFromUrl.d.ts +2 -0
  132. package/dist/utils/getContentTypeFromUrl.js +39 -0
  133. package/dist/utils/injectRollupInputs.d.ts +2 -2
  134. package/dist/utils/injectRollupInputs.js +2 -2
  135. package/dist/utils/isDev.js +2 -7
  136. package/dist/utils/parseUrl-extras.js +4 -0
  137. package/package.json +7 -7
  138. package/dist/shared-server-client/addIs404ToPageProps.d.ts +0 -2
  139. package/dist/shared-server-client/addIs404ToPageProps.js +0 -17
@@ -1,6 +1,5 @@
1
1
  export { renderPageServerAfterRoute };
2
2
  export { prerenderPage };
3
- export { prerenderPageEntry };
4
3
  export type { PageContextAfterRender };
5
4
  import { type PageContextUrlInternal } from '../../../shared-server-client/getPageContextUrlComputed.js';
6
5
  import { HttpResponse } from './createHttpResponse.js';
@@ -21,7 +20,155 @@ declare function renderPageServerAfterRoute<PageContext extends {
21
20
  _requestId: number;
22
21
  } & PageContextCreatedServer & PageContextBegin & PageContextUrlInternal & PageContext_loadPageConfigsLazyServerSide>(pageContext: PageContext): Promise<PageContext & PageContextAfterRender>;
23
22
  declare function prerenderPage(pageContext: Parameters<typeof prerenderPageEntry>[0]): Promise<{
23
+ documentHtml: null;
24
+ content: string | Uint8Array<ArrayBufferLike>;
25
+ pageContextSerialized: null;
26
+ pageContext: {
27
+ _isOriginalObject: true;
28
+ isPageContext: true;
29
+ } & {
30
+ isClientSide: false;
31
+ isPrerendering: boolean;
32
+ _requestId: number;
33
+ } & import("../renderPageServer.js").PageContextInit & {
34
+ _nodeDev?: {
35
+ req: import("http").IncomingMessage;
36
+ res: import("http").ServerResponse;
37
+ };
38
+ _reqWeb?: Request;
39
+ } & {
40
+ _globalContext: ({
41
+ config: import("../../../types/index.js").ConfigResolved;
42
+ _source: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Source;
43
+ _sources: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Sources;
44
+ _from: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").From;
45
+ pages: {
46
+ [k: string]: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").PageConfigPublicWithRoute;
47
+ };
48
+ _globalConfigPublic: {
49
+ config: import("../../../types/index.js").ConfigResolved;
50
+ _source: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Source;
51
+ _sources: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Sources;
52
+ _from: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").From;
53
+ pages: {
54
+ [k: string]: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").PageConfigPublicWithRoute;
55
+ };
56
+ };
57
+ isGlobalContext: true;
58
+ _isOriginalObject: true;
59
+ _virtualFileExportsGlobalEntry: unknown;
60
+ _pageFilesAll: import("../../__internal/index.js").PageFile[];
61
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
62
+ _pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
63
+ _environmentEntries: Record<string, {
64
+ pageConfigs: import("../../__internal/index.js").PageConfig[];
65
+ pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
66
+ } | null>;
67
+ _allPageIds: string[];
68
+ } & (({
69
+ isClientSide: false;
70
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
71
+ _onBeforeRouteHook: import("../../../shared-server-client/hooks/getHook.js").HookInternal | null;
72
+ _isProduction: false;
73
+ _isPrerendering: false;
74
+ assetsManifest: null;
75
+ _viteDevServer: import("vite").ViteDevServer | undefined;
76
+ viteConfig: import("vite").ResolvedConfig | undefined;
77
+ } | {
78
+ isClientSide: false;
79
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
80
+ _onBeforeRouteHook: import("../../../shared-server-client/hooks/getHook.js").HookInternal | null;
81
+ _isProduction: true;
82
+ assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
83
+ _viteDevServer: null;
84
+ _usesClientRouter: boolean;
85
+ _isPrerendering: true;
86
+ viteConfig: import("vite").ResolvedConfig;
87
+ } | {
88
+ isClientSide: false;
89
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
90
+ _onBeforeRouteHook: import("../../../shared-server-client/hooks/getHook.js").HookInternal | null;
91
+ _isProduction: true;
92
+ assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
93
+ _viteDevServer: null;
94
+ _usesClientRouter: boolean;
95
+ _isPrerendering: false;
96
+ viteConfig: null;
97
+ }) & {
98
+ baseServer: string;
99
+ baseAssets: string;
100
+ viteConfigRuntime: {
101
+ root: string;
102
+ build: {
103
+ outDir: string;
104
+ };
105
+ _baseViteOriginal: string;
106
+ vitePluginServerEntry: {
107
+ inject: boolean | undefined;
108
+ };
109
+ };
110
+ })) & {
111
+ prerenderContext: import("../../../types/index.js").PrerenderContext | undefined;
112
+ };
113
+ _pageFilesAll: import("../../__internal/index.js").PageFile[];
114
+ _baseServer: string;
115
+ _baseAssets: string;
116
+ _pageContextInit: import("../renderPageServer.js").PageContextInit & {
117
+ _nodeDev?: {
118
+ req: import("http").IncomingMessage;
119
+ res: import("http").ServerResponse;
120
+ };
121
+ _reqWeb?: Request;
122
+ } & {
123
+ headers?: Record<string, unknown>;
124
+ };
125
+ _urlHandler: ((url: string) => string) | null;
126
+ isClientSideNavigation: boolean;
127
+ } & {
128
+ config: import("../../../types/index.js").ConfigResolved;
129
+ _source: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Source;
130
+ _sources: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Sources;
131
+ _from: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").From;
132
+ pages: {
133
+ [k: string]: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").PageConfigPublicWithRoute;
134
+ };
135
+ } & {
136
+ urlParsed: import("../../../utils/parseUrl.js").UrlPublic;
137
+ urlPathname: string;
138
+ url: string;
139
+ } & {
140
+ headers: Record<string, string> | null;
141
+ } & import("../../../shared-server-client/route/index.js").PageContextAfterRoute & {
142
+ is404: boolean | null;
143
+ pageId: string;
144
+ } & {
145
+ _pageConfig: import("../../__internal/index.js").PageConfig | null;
146
+ } & import("../../../shared-server-client/getPageFiles.js").PageContextConfig & {
147
+ _pageConfig: null | import("../../__internal/index.js").PageConfig;
148
+ } & {
149
+ cspNonce: string | null;
150
+ } & {
151
+ Page: unknown;
152
+ _isHtmlOnly: boolean;
153
+ _passToClient: import("./html/serializeContext.js").PassToClient;
154
+ } & {
155
+ headersResponse: Headers;
156
+ } & {
157
+ __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
158
+ } & {
159
+ routeParams: Record<string, string>;
160
+ pageId: string;
161
+ _requestId: number;
162
+ _usesClientRouter: boolean;
163
+ _pageContextAlreadyProvidedByOnPrerenderHook?: true;
164
+ is404: boolean;
165
+ } & {
166
+ _isPageContextJsonRequest: null;
167
+ pageContextsAborted: never[];
168
+ };
169
+ } | {
24
170
  documentHtml: string;
171
+ content: null;
25
172
  pageContextSerialized: null;
26
173
  pageContext: {
27
174
  _isOriginalObject: true;
@@ -60,6 +207,10 @@ declare function prerenderPage(pageContext: Parameters<typeof prerenderPageEntry
60
207
  _pageFilesAll: import("../../__internal/index.js").PageFile[];
61
208
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
62
209
  _pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
210
+ _environmentEntries: Record<string, {
211
+ pageConfigs: import("../../__internal/index.js").PageConfig[];
212
+ pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
213
+ } | null>;
63
214
  _allPageIds: string[];
64
215
  } & (({
65
216
  isClientSide: false;
@@ -164,6 +315,7 @@ declare function prerenderPage(pageContext: Parameters<typeof prerenderPageEntry
164
315
  };
165
316
  } | {
166
317
  documentHtml: string;
318
+ content: null;
167
319
  pageContextSerialized: string;
168
320
  pageContext: {
169
321
  _isOriginalObject: true;
@@ -202,6 +354,10 @@ declare function prerenderPage(pageContext: Parameters<typeof prerenderPageEntry
202
354
  _pageFilesAll: import("../../__internal/index.js").PageFile[];
203
355
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
204
356
  _pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
357
+ _environmentEntries: Record<string, {
358
+ pageConfigs: import("../../__internal/index.js").PageConfig[];
359
+ pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
360
+ } | null>;
205
361
  _allPageIds: string[];
206
362
  } & (({
207
363
  isClientSide: false;
@@ -313,7 +469,155 @@ declare function prerenderPageEntry(pageContext: PageContextCreatedServer & Page
313
469
  _pageContextAlreadyProvidedByOnPrerenderHook?: true;
314
470
  is404: boolean;
315
471
  }): Promise<{
472
+ documentHtml: null;
473
+ content: string | Uint8Array<ArrayBufferLike>;
474
+ pageContextSerialized: null;
475
+ pageContext: {
476
+ _isOriginalObject: true;
477
+ isPageContext: true;
478
+ } & {
479
+ isClientSide: false;
480
+ isPrerendering: boolean;
481
+ _requestId: number;
482
+ } & import("../renderPageServer.js").PageContextInit & {
483
+ _nodeDev?: {
484
+ req: import("http").IncomingMessage;
485
+ res: import("http").ServerResponse;
486
+ };
487
+ _reqWeb?: Request;
488
+ } & {
489
+ _globalContext: ({
490
+ config: import("../../../types/index.js").ConfigResolved;
491
+ _source: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Source;
492
+ _sources: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Sources;
493
+ _from: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").From;
494
+ pages: {
495
+ [k: string]: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").PageConfigPublicWithRoute;
496
+ };
497
+ _globalConfigPublic: {
498
+ config: import("../../../types/index.js").ConfigResolved;
499
+ _source: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Source;
500
+ _sources: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Sources;
501
+ _from: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").From;
502
+ pages: {
503
+ [k: string]: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").PageConfigPublicWithRoute;
504
+ };
505
+ };
506
+ isGlobalContext: true;
507
+ _isOriginalObject: true;
508
+ _virtualFileExportsGlobalEntry: unknown;
509
+ _pageFilesAll: import("../../__internal/index.js").PageFile[];
510
+ _pageConfigs: import("../../__internal/index.js").PageConfig[];
511
+ _pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
512
+ _environmentEntries: Record<string, {
513
+ pageConfigs: import("../../__internal/index.js").PageConfig[];
514
+ pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
515
+ } | null>;
516
+ _allPageIds: string[];
517
+ } & (({
518
+ isClientSide: false;
519
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
520
+ _onBeforeRouteHook: import("../../../shared-server-client/hooks/getHook.js").HookInternal | null;
521
+ _isProduction: false;
522
+ _isPrerendering: false;
523
+ assetsManifest: null;
524
+ _viteDevServer: import("vite").ViteDevServer | undefined;
525
+ viteConfig: import("vite").ResolvedConfig | undefined;
526
+ } | {
527
+ isClientSide: false;
528
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
529
+ _onBeforeRouteHook: import("../../../shared-server-client/hooks/getHook.js").HookInternal | null;
530
+ _isProduction: true;
531
+ assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
532
+ _viteDevServer: null;
533
+ _usesClientRouter: boolean;
534
+ _isPrerendering: true;
535
+ viteConfig: import("vite").ResolvedConfig;
536
+ } | {
537
+ isClientSide: false;
538
+ _pageRoutes: import("../../__internal/index.js").PageRoutes;
539
+ _onBeforeRouteHook: import("../../../shared-server-client/hooks/getHook.js").HookInternal | null;
540
+ _isProduction: true;
541
+ assetsManifest: import("../../../types/ViteManifest.js").ViteManifest;
542
+ _viteDevServer: null;
543
+ _usesClientRouter: boolean;
544
+ _isPrerendering: false;
545
+ viteConfig: null;
546
+ }) & {
547
+ baseServer: string;
548
+ baseAssets: string;
549
+ viteConfigRuntime: {
550
+ root: string;
551
+ build: {
552
+ outDir: string;
553
+ };
554
+ _baseViteOriginal: string;
555
+ vitePluginServerEntry: {
556
+ inject: boolean | undefined;
557
+ };
558
+ };
559
+ })) & {
560
+ prerenderContext: import("../../../types/index.js").PrerenderContext | undefined;
561
+ };
562
+ _pageFilesAll: import("../../__internal/index.js").PageFile[];
563
+ _baseServer: string;
564
+ _baseAssets: string;
565
+ _pageContextInit: import("../renderPageServer.js").PageContextInit & {
566
+ _nodeDev?: {
567
+ req: import("http").IncomingMessage;
568
+ res: import("http").ServerResponse;
569
+ };
570
+ _reqWeb?: Request;
571
+ } & {
572
+ headers?: Record<string, unknown>;
573
+ };
574
+ _urlHandler: ((url: string) => string) | null;
575
+ isClientSideNavigation: boolean;
576
+ } & {
577
+ config: import("../../../types/index.js").ConfigResolved;
578
+ _source: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Source;
579
+ _sources: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").Sources;
580
+ _from: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").From;
581
+ pages: {
582
+ [k: string]: import("../../../shared-server-client/page-configs/resolveVikeConfigPublic.js").PageConfigPublicWithRoute;
583
+ };
584
+ } & {
585
+ urlParsed: import("../../../utils/parseUrl.js").UrlPublic;
586
+ urlPathname: string;
587
+ url: string;
588
+ } & {
589
+ headers: Record<string, string> | null;
590
+ } & import("../../../shared-server-client/route/index.js").PageContextAfterRoute & {
591
+ is404: boolean | null;
592
+ pageId: string;
593
+ } & {
594
+ _pageConfig: import("../../__internal/index.js").PageConfig | null;
595
+ } & import("../../../shared-server-client/getPageFiles.js").PageContextConfig & {
596
+ _pageConfig: null | import("../../__internal/index.js").PageConfig;
597
+ } & {
598
+ cspNonce: string | null;
599
+ } & {
600
+ Page: unknown;
601
+ _isHtmlOnly: boolean;
602
+ _passToClient: import("./html/serializeContext.js").PassToClient;
603
+ } & {
604
+ headersResponse: Headers;
605
+ } & {
606
+ __getPageAssets: () => Promise<import("./getPageAssets.js").PageAsset[]>;
607
+ } & {
608
+ routeParams: Record<string, string>;
609
+ pageId: string;
610
+ _requestId: number;
611
+ _usesClientRouter: boolean;
612
+ _pageContextAlreadyProvidedByOnPrerenderHook?: true;
613
+ is404: boolean;
614
+ } & {
615
+ _isPageContextJsonRequest: null;
616
+ pageContextsAborted: never[];
617
+ };
618
+ } | {
316
619
  documentHtml: string;
620
+ content: null;
317
621
  pageContextSerialized: null;
318
622
  pageContext: {
319
623
  _isOriginalObject: true;
@@ -352,6 +656,10 @@ declare function prerenderPageEntry(pageContext: PageContextCreatedServer & Page
352
656
  _pageFilesAll: import("../../__internal/index.js").PageFile[];
353
657
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
354
658
  _pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
659
+ _environmentEntries: Record<string, {
660
+ pageConfigs: import("../../__internal/index.js").PageConfig[];
661
+ pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
662
+ } | null>;
355
663
  _allPageIds: string[];
356
664
  } & (({
357
665
  isClientSide: false;
@@ -456,6 +764,7 @@ declare function prerenderPageEntry(pageContext: PageContextCreatedServer & Page
456
764
  };
457
765
  } | {
458
766
  documentHtml: string;
767
+ content: null;
459
768
  pageContextSerialized: string;
460
769
  pageContext: {
461
770
  _isOriginalObject: true;
@@ -494,6 +803,10 @@ declare function prerenderPageEntry(pageContext: PageContextCreatedServer & Page
494
803
  _pageFilesAll: import("../../__internal/index.js").PageFile[];
495
804
  _pageConfigs: import("../../__internal/index.js").PageConfig[];
496
805
  _pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
806
+ _environmentEntries: Record<string, {
807
+ pageConfigs: import("../../__internal/index.js").PageConfig[];
808
+ pageConfigGlobal: import("../../../types/PageConfig.js").PageConfigGlobalRuntime;
809
+ } | null>;
497
810
  _allPageIds: string[];
498
811
  } & (({
499
812
  isClientSide: false;
@@ -1,15 +1,16 @@
1
1
  export { renderPageServerAfterRoute };
2
2
  export { prerenderPage };
3
- export { prerenderPageEntry };
4
3
  import { getErrorPageId } from '../../../shared-server-client/error-page.js';
5
4
  import { getHtmlString } from './html/renderHtml.js';
5
+ import { isStreamReadableWeb, streamReadableWebToBytes } from './html/stream.js';
6
6
  import { assert, assertUsage } from '../../../utils/assert.js';
7
7
  import { hasProp } from '../../../utils/hasProp.js';
8
8
  import { isSameErrorMessage } from '../../../utils/isSameErrorMessage.js';
9
9
  import { objectAssign } from '../../../utils/objectAssign.js';
10
10
  import { updateType } from '../../../utils/updateType.js';
11
- import { getPageContextClientSerialized } from './html/serializeContext.js';
12
- import { createHttpResponsePage, createHttpResponsePageJson } from './createHttpResponse.js';
11
+ import { getStreamedValuesLinesPrerendered } from './html/streamedValuesHtml.js';
12
+ import { getPageContextJson, getPageContextJsonFile } from './getPageContextJson.js';
13
+ import { createHttpResponsePageHtml, createHttpResponsePageContent, createHttpResponsePageJson, } from './createHttpResponse.js';
13
14
  import { loadPageConfigsLazyServerSide, } from './loadPageConfigsLazyServerSide.js';
14
15
  import { execHookOnRenderHtml } from './execHookOnRenderHtml.js';
15
16
  import { execHookDataAndOnBeforeRender } from './execHookDataAndOnBeforeRender.js';
@@ -50,14 +51,14 @@ async function renderPageServerAfterRoute(pageContext) {
50
51
  if (isError) {
51
52
  objectAssign(pageContext, { [isServerSideError]: true });
52
53
  }
53
- const pageContextSerialized = getPageContextClientSerialized(pageContext, false);
54
- const httpResponse = await createHttpResponsePageJson(pageContextSerialized);
54
+ const httpResponse = await createHttpResponsePageJson(getPageContextJson(pageContext), pageContext);
55
55
  objectAssign(pageContext, { httpResponse });
56
56
  return pageContext;
57
57
  }
58
- const renderHookResult = await execHookOnRenderHtml(pageContext);
59
- const { htmlRender, renderHook } = renderHookResult;
60
- const httpResponse = await createHttpResponsePage(htmlRender, renderHook, pageContext);
58
+ const { htmlRender, content, renderHook } = await execHookOnRenderHtml(pageContext);
59
+ const httpResponse = content !== null
60
+ ? createHttpResponsePageContent(content, renderHook, pageContext)
61
+ : await createHttpResponsePageHtml(htmlRender, renderHook, pageContext);
61
62
  objectAssign(pageContext, { httpResponse });
62
63
  return pageContext;
63
64
  }
@@ -85,15 +86,23 @@ async function prerenderPageEntry(pageContext) {
85
86
  await execHookGuard(pageContext, (pageContext) => getPageContextPublicServer(pageContext))
86
87
  */
87
88
  await execHookDataAndOnBeforeRender(pageContext);
88
- const { htmlRender, renderHook } = await execHookOnRenderHtml(pageContext);
89
+ const { htmlRender, content, renderHook } = await execHookOnRenderHtml(pageContext);
90
+ if (content !== null) {
91
+ // Rejects if the stream errors
92
+ const fileContent = isStreamReadableWeb(content) ? await streamReadableWebToBytes(content) : content;
93
+ return { documentHtml: null, content: fileContent, pageContextSerialized: null, pageContext };
94
+ }
89
95
  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.`);
90
96
  const documentHtml = await getHtmlString(htmlRender);
91
97
  assert(typeof documentHtml === 'string');
98
+ // The streamed pageContext values were read while rendering the HTML: the same lines go into `index.pageContext.json`, and
99
+ // a value that failed makes pre-rendering fail (also without Client Routing)
100
+ const streamedValuesLines = await getStreamedValuesLinesPrerendered(pageContext);
92
101
  if (!pageContext._usesClientRouter) {
93
- return { documentHtml, pageContextSerialized: null, pageContext };
102
+ return { documentHtml, content: null, pageContextSerialized: null, pageContext };
94
103
  }
95
104
  else {
96
- const pageContextSerialized = getPageContextClientSerialized(pageContext, false);
97
- return { documentHtml, pageContextSerialized, pageContext };
105
+ const pageContextSerialized = getPageContextJsonFile(pageContext, streamedValuesLines);
106
+ return { documentHtml, content: null, pageContextSerialized, pageContext };
98
107
  }
99
108
  }
@@ -0,0 +1,4 @@
1
+ export { asyncIterable };
2
+ import type { StreamedValueType } from './registry.js';
3
+ import '../../../assertEnvServer.js';
4
+ declare const asyncIterable: StreamedValueType<AsyncIterable<unknown>, IteratorResult<unknown>>;
@@ -0,0 +1,12 @@
1
+ export { asyncIterable };
2
+ import { markers } from '../../../../shared-server-client/streamedValues.js';
3
+ import { chunkToLine } from './lines.js';
4
+ import '../../../assertEnvServer.js';
5
+ const asyncIterable = {
6
+ marker: markers.asyncIterable,
7
+ is: (value) => typeof value === 'object' && value !== null && Symbol.asyncIterator in value,
8
+ read(value) {
9
+ const iterator = value[Symbol.asyncIterator]();
10
+ return { next: () => iterator.next(), toLine: chunkToLine, cancel: () => iterator.return?.() };
11
+ },
12
+ };
@@ -0,0 +1,10 @@
1
+ export { serializeLine };
2
+ export { chunkToLine };
3
+ import { type Replacer } from '@brillout/json-serializer/stringify';
4
+ import type { Line, LineContent } from '../../../../shared-server-client/streamedValues.js';
5
+ import '../../../assertEnvServer.js';
6
+ declare function serializeLine(line: Line, replacer: Replacer): string;
7
+ declare function chunkToLine(result: IteratorResult<unknown>): {
8
+ line: LineContent;
9
+ isLast: boolean;
10
+ };
@@ -0,0 +1,49 @@
1
+ // The encoding of the lines (see shared-server-client/streamedValues.ts)
2
+ export { serializeLine };
3
+ export { chunkToLine };
4
+ import { stringify } from '@brillout/json-serializer/stringify';
5
+ import { assert } from '../../../../utils/assert.js';
6
+ import '../../../assertEnvServer.js';
7
+ // `replacer` replaces the streamed values that a `v` line's value contains
8
+ function serializeLine(line, replacer) {
9
+ const lineStr = 'v' in line
10
+ ? `{"s":${line.s},"v":${stringify(line.v, {
11
+ forbidReactElements: true,
12
+ valueName: 'a streamed pageContext value',
13
+ replacer,
14
+ htmlScriptSafe: { escapeScripts: true, escapeURLs: false },
15
+ })}}`
16
+ : JSON.stringify(line);
17
+ // JSON.stringify() escapes line breaks: one line per JSON value
18
+ assert(!lineStr.includes('\n'));
19
+ return lineStr;
20
+ }
21
+ // A ReadableStream / async iterable: one line per chunk, then an `end` line
22
+ function chunkToLine(result) {
23
+ if (result.done)
24
+ return { line: { end: true }, isLast: true };
25
+ return { line: encodeChunk(result.value), isLast: false };
26
+ }
27
+ function encodeChunk(chunk) {
28
+ if (!(chunk instanceof Uint8Array))
29
+ return { v: chunk };
30
+ const text = decodeUtf8(chunk);
31
+ return text !== null ? { t: text } : { b: encodeBase64url(chunk) };
32
+ }
33
+ const utf8Decoder = new TextDecoder('utf-8', { fatal: true, ignoreBOM: true });
34
+ function decodeUtf8(bytes) {
35
+ try {
36
+ return utf8Decoder.decode(bytes);
37
+ }
38
+ catch {
39
+ return null;
40
+ }
41
+ }
42
+ function encodeBase64url(bytes) {
43
+ let binary = '';
44
+ // In slices: spreading a large array into a single call overflows the stack
45
+ for (let i = 0; i < bytes.length; i += 0x8000) {
46
+ binary += String.fromCharCode(...bytes.subarray(i, i + 0x8000));
47
+ }
48
+ return btoa(binary).replaceAll('+', '-').replaceAll('/', '_').replace(/=+$/, '');
49
+ }
@@ -0,0 +1,4 @@
1
+ export { promise };
2
+ import type { StreamedValueType } from './registry.js';
3
+ import '../../../assertEnvServer.js';
4
+ declare const promise: StreamedValueType<Promise<unknown>>;
@@ -0,0 +1,14 @@
1
+ export { promise };
2
+ import { markers } from '../../../../shared-server-client/streamedValues.js';
3
+ import { isPromise } from '../../../../utils/isPromise.js';
4
+ import '../../../assertEnvServer.js';
5
+ // One `v` line
6
+ const promise = {
7
+ marker: markers.promise,
8
+ is: isPromise,
9
+ read: (value) => ({
10
+ next: () => value,
11
+ toLine: (v) => ({ line: { v }, isLast: true }),
12
+ cancel: () => { },
13
+ }),
14
+ };
@@ -0,0 +1,10 @@
1
+ export { pumpStreamedValues };
2
+ import { type PageContext_logRuntime } from '../../loggerRuntime.js';
3
+ import { type StreamedValue } from './registry.js';
4
+ import '../../../assertEnvServer.js';
5
+ declare function pumpStreamedValues(pageContext: NonNullable<PageContext_logRuntime>, streamedValues: StreamedValue[], write: (line: string) => void, { failFast }: {
6
+ failFast: boolean;
7
+ }): {
8
+ done: Promise<void>;
9
+ cancel: () => void;
10
+ };
@@ -0,0 +1,67 @@
1
+ // Reads the streamed values of a response concurrently and writes their lines.
2
+ // - `failFast: false` (responses): a value that fails is logged and sent as an `error` line.
3
+ // - `failFast: true` (pre-rendering): a value that fails rejects `done`.
4
+ export { pumpStreamedValues };
5
+ import { logRuntimeError } from '../../loggerRuntime.js';
6
+ import { getReplacer } from './registry.js';
7
+ import { serializeLine } from './lines.js';
8
+ import { genPromise } from '../../../../utils/genPromise.js';
9
+ import '../../../assertEnvServer.js';
10
+ function pumpStreamedValues(pageContext, streamedValues, write, { failFast }) {
11
+ // Stop the values being read: when the response ends early, or when the value fails
12
+ const cancels = new Set();
13
+ let pending = 0;
14
+ let isEnded = false;
15
+ const { promise: done, resolve, reject } = genPromise({ timeout: null });
16
+ const end = (settle) => {
17
+ if (isEnded)
18
+ return;
19
+ isEnded = true;
20
+ cancels.forEach((cancel) => cancel());
21
+ settle();
22
+ };
23
+ const start = (streamedValue) => {
24
+ pending++;
25
+ send(streamedValue).then(() => {
26
+ if (--pending === 0)
27
+ end(resolve);
28
+ }, (err) => end(() => reject(err)));
29
+ };
30
+ // A line's value can contain new streamed values: they're started after the line is written
31
+ const writeLine = (line) => {
32
+ const { replacer, streamedValues } = getReplacer(pageContext);
33
+ write(serializeLine(line, replacer));
34
+ streamedValues.forEach(start);
35
+ };
36
+ const send = async ({ id: s, type, value }) => {
37
+ let cancel = () => { };
38
+ try {
39
+ const reader = type.read(value);
40
+ cancel = () => void Promise.resolve(reader.cancel()).catch(() => { });
41
+ cancels.add(cancel);
42
+ while (true) {
43
+ const result = await reader.next();
44
+ if (isEnded)
45
+ return;
46
+ const { line, isLast } = reader.toLine(result);
47
+ writeLine({ s, ...line });
48
+ if (isLast)
49
+ return;
50
+ }
51
+ }
52
+ catch (err) {
53
+ if (isEnded)
54
+ return;
55
+ cancel();
56
+ if (failFast)
57
+ throw err;
58
+ logRuntimeError(err, pageContext);
59
+ writeLine({ s, error: true });
60
+ }
61
+ finally {
62
+ cancels.delete(cancel);
63
+ }
64
+ };
65
+ streamedValues.forEach(start);
66
+ return { done, cancel: () => end(resolve) };
67
+ }
@@ -0,0 +1,4 @@
1
+ export { readableStream };
2
+ import type { StreamedValueType } from './registry.js';
3
+ import '../../../assertEnvServer.js';
4
+ declare const readableStream: StreamedValueType<ReadableStream<unknown>, ReadableStreamReadResult<unknown>>;
@@ -0,0 +1,12 @@
1
+ export { readableStream };
2
+ import { markers } from '../../../../shared-server-client/streamedValues.js';
3
+ import { chunkToLine } from './lines.js';
4
+ import '../../../assertEnvServer.js';
5
+ const readableStream = {
6
+ marker: markers.readableStream,
7
+ is: (value) => value instanceof ReadableStream,
8
+ read(value) {
9
+ const reader = value.getReader();
10
+ return { next: () => reader.read(), toLine: chunkToLine, cancel: () => reader.cancel() };
11
+ },
12
+ };