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.
- package/dist/client/runtime-client-routing/createPageContextClient.d.ts +4 -0
- package/dist/client/runtime-client-routing/getGlobalContextClientInternal.d.ts +4 -0
- package/dist/client/runtime-client-routing/getPageContextFromHooks.d.ts +22 -2
- package/dist/client/runtime-client-routing/getPageContextFromHooks.js +4 -5
- package/dist/client/runtime-client-routing/renderPageClient.d.ts +472 -9
- package/dist/client/runtime-client-routing/renderPageClient.js +11 -5
- package/dist/client/runtime-client-routing/streamedValues.d.ts +5 -0
- package/dist/client/runtime-client-routing/streamedValues.js +23 -0
- package/dist/client/runtime-server-routing/createPageContextClient.d.ts +4 -0
- package/dist/client/runtime-server-routing/entry.js +1 -1
- package/dist/client/runtime-server-routing/getGlobalContextClientInternal.d.ts +4 -0
- package/dist/client/shared/getGlobalContextClientInternalShared.d.ts +4 -0
- package/dist/client/shared/getJsonSerializedInHtml.d.ts +2 -2
- package/dist/client/shared/getJsonSerializedInHtml.js +9 -6
- package/dist/client/shared/streamedValues/asyncIterable.d.ts +4 -0
- package/dist/client/shared/streamedValues/asyncIterable.js +26 -0
- package/dist/client/shared/streamedValues/lines.d.ts +11 -0
- package/dist/client/shared/streamedValues/lines.js +19 -0
- package/dist/client/shared/streamedValues/promise.d.ts +4 -0
- package/dist/client/shared/streamedValues/promise.js +19 -0
- package/dist/client/shared/streamedValues/readableStream.d.ts +4 -0
- package/dist/client/shared/streamedValues/readableStream.js +44 -0
- package/dist/client/shared/streamedValues/registry.d.ts +21 -0
- package/dist/client/shared/streamedValues/registry.js +40 -0
- package/dist/client/shared/streamedValues.d.ts +7 -0
- package/dist/client/shared/streamedValues.js +82 -0
- package/dist/node/api/resolveViteConfigUser.js +2 -2
- package/dist/node/prerender/runPrerender.d.ts +12 -4
- package/dist/node/prerender/runPrerender.js +60 -15
- package/dist/node/vite/assertEnvVite.js +1 -1
- package/dist/node/vite/index.js +2 -0
- package/dist/node/vite/plugins/build/handleAssetsManifest.js +6 -2
- package/dist/node/vite/plugins/build/pluginBuildApp.js +25 -26
- package/dist/node/vite/plugins/build/pluginBuildConfig.d.ts +2 -2
- package/dist/node/vite/plugins/build/pluginBuildConfig.js +24 -16
- package/dist/node/vite/plugins/build/pluginDistFileNames.js +70 -50
- package/dist/node/vite/plugins/build/pluginEnvironmentEntries.d.ts +6 -0
- package/dist/node/vite/plugins/build/pluginEnvironmentEntries.js +71 -0
- package/dist/node/vite/plugins/build/pluginSuppressRollupWarning.js +19 -17
- package/dist/node/vite/plugins/pluginCommon.js +9 -6
- package/dist/node/vite/plugins/pluginDev/optimizeDeps.js +1 -1
- package/dist/node/vite/plugins/pluginReplaceConstantsGlobalThis.js +6 -4
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.d.ts +2 -1
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntry.js +29 -12
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFileGlobalEntryWithOldDesign.js +3 -2
- package/dist/node/vite/plugins/pluginVirtualFiles/generateVirtualFilePageEntry.js +7 -7
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.d.ts +7 -5
- package/dist/node/vite/plugins/pluginVirtualFiles/getConfigValueSourcesRelevant.js +4 -10
- package/dist/node/vite/plugins/pluginVirtualFiles.js +20 -0
- package/dist/node/vite/shared/addSsrMiddleware.js +13 -1
- package/dist/node/vite/shared/getAssetsDir.d.ts +3 -2
- package/dist/node/vite/shared/getAssetsDir.js +3 -3
- package/dist/node/vite/shared/isViteCli.d.ts +3 -3
- package/dist/node/vite/shared/isViteCli.js +80 -84
- package/dist/node/vite/shared/isViteServerSide.js +2 -7
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.d.ts +1 -1
- package/dist/node/vite/shared/resolveVikeConfigInternal/metaBuiltIn.js +8 -6
- package/dist/node/vite/shared/resolveVikeConfigInternal.d.ts +4 -1
- package/dist/node/vite/shared/resolveVikeConfigInternal.js +82 -11
- package/dist/server/runtime/globalContext.d.ts +20 -0
- package/dist/server/runtime/renderPageServer/analyzePage.js +3 -3
- package/dist/server/runtime/renderPageServer/createHttpResponse.d.ts +20 -7
- package/dist/server/runtime/renderPageServer/createHttpResponse.js +34 -15
- package/dist/server/runtime/renderPageServer/createPageContextServer.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/execHookOnError.js +1 -1
- package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.d.ts +9 -0
- package/dist/server/runtime/renderPageServer/execHookOnRenderHtml.js +17 -5
- package/dist/server/runtime/renderPageServer/getHttpResponseBody.d.ts +2 -2
- package/dist/server/runtime/renderPageServer/getHttpResponseBody.js +17 -2
- package/dist/server/runtime/renderPageServer/getPageContextJson.d.ts +8 -0
- package/dist/server/runtime/renderPageServer/getPageContextJson.js +47 -0
- package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.d.ts +2 -0
- package/dist/server/runtime/renderPageServer/handleErrorWithoutErrorPage.js +1 -1
- package/dist/server/runtime/renderPageServer/headersResponse.d.ts +11 -2
- package/dist/server/runtime/renderPageServer/headersResponse.js +20 -1
- package/dist/server/runtime/renderPageServer/html/injectAssets/getHtmlTags.js +5 -4
- package/dist/server/runtime/renderPageServer/html/injectAssets.d.ts +3 -2
- package/dist/server/runtime/renderPageServer/html/injectAssets.js +7 -1
- package/dist/server/runtime/renderPageServer/html/renderHtml.js +4 -2
- package/dist/server/runtime/renderPageServer/html/serializeContext.d.ts +5 -1
- package/dist/server/runtime/renderPageServer/html/serializeContext.js +12 -9
- package/dist/server/runtime/renderPageServer/html/stream.d.ts +13 -6
- package/dist/server/runtime/renderPageServer/html/stream.js +121 -31
- package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.d.ts +30 -0
- package/dist/server/runtime/renderPageServer/html/streamedValuesHtml.js +92 -0
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/loadPageConfigsLazyServerSide.js +5 -1
- package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.d.ts +15 -0
- package/dist/server/runtime/renderPageServer/loadPageContextEnvironments.js +61 -0
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.d.ts +314 -1
- package/dist/server/runtime/renderPageServer/renderPageServerAfterRoute.js +21 -12
- package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/streamedValues/asyncIterable.js +12 -0
- package/dist/server/runtime/renderPageServer/streamedValues/lines.d.ts +10 -0
- package/dist/server/runtime/renderPageServer/streamedValues/lines.js +49 -0
- package/dist/server/runtime/renderPageServer/streamedValues/promise.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/streamedValues/promise.js +14 -0
- package/dist/server/runtime/renderPageServer/streamedValues/pump.d.ts +10 -0
- package/dist/server/runtime/renderPageServer/streamedValues/pump.js +67 -0
- package/dist/server/runtime/renderPageServer/streamedValues/readableStream.d.ts +4 -0
- package/dist/server/runtime/renderPageServer/streamedValues/readableStream.js +12 -0
- package/dist/server/runtime/renderPageServer/streamedValues/registry.d.ts +28 -0
- package/dist/server/runtime/renderPageServer/streamedValues/registry.js +33 -0
- package/dist/server/runtime/renderPageServer.d.ts +4 -0
- package/dist/server/runtime/renderPageServer.js +18 -8
- package/dist/shared-server-client/createGlobalContextShared.d.ts +8 -0
- package/dist/shared-server-client/createGlobalContextShared.js +2 -1
- package/dist/shared-server-client/getPageContextPublicShared.js +0 -2
- package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.d.ts +8 -0
- package/dist/shared-server-client/getPageFiles/parseVirtualFileExportsGlobalEntry.js +17 -7
- package/dist/shared-server-client/hooks/execHook.d.ts +1 -1
- package/dist/shared-server-client/hooks/execHook.js +2 -2
- package/dist/shared-server-client/route/abort.d.ts +1 -1
- package/dist/shared-server-client/route/abort.js +4 -2
- package/dist/shared-server-client/streamedValues.d.ts +22 -0
- package/dist/shared-server-client/streamedValues.js +24 -0
- package/dist/shared-server-node/vike-environments.d.ts +4 -0
- package/dist/shared-server-node/vike-environments.js +10 -0
- package/dist/shared-server-node/virtualFileId.d.ts +7 -5
- package/dist/shared-server-node/virtualFileId.js +42 -42
- package/dist/types/Config.d.ts +1 -1
- package/dist/types/PageConfig.d.ts +13 -5
- package/dist/types/PageContext.d.ts +18 -1
- package/dist/utils/PROJECT_VERSION.d.ts +1 -1
- package/dist/utils/PROJECT_VERSION.js +1 -1
- package/dist/utils/assertViteVersion.d.ts +1 -3
- package/dist/utils/assertViteVersion.js +6 -9
- package/dist/utils/catchInfiniteLoop.js +33 -11
- package/dist/utils/deepEqual.d.ts +2 -1
- package/dist/utils/deepEqual.js +21 -6
- package/dist/utils/getContentTypeFromUrl.d.ts +2 -0
- package/dist/utils/getContentTypeFromUrl.js +39 -0
- package/dist/utils/injectRollupInputs.d.ts +2 -2
- package/dist/utils/injectRollupInputs.js +2 -2
- package/dist/utils/isDev.js +2 -7
- package/dist/utils/parseUrl-extras.js +4 -0
- package/package.json +7 -7
- package/dist/shared-server-client/addIs404ToPageProps.d.ts +0 -2
- 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 {
|
|
12
|
-
import {
|
|
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
|
|
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
|
|
59
|
-
const
|
|
60
|
-
|
|
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 =
|
|
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,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,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,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
|
+
};
|