eclipsa 0.1.11 → 0.1.12
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/{action-BcEktMN2.mjs → action-Uv02N2Rx.mjs} +312 -288
- package/action-Uv02N2Rx.mjs.map +1 -0
- package/{client-DI_VsKvi.mjs → client-CnFXpfUF.mjs} +4 -4
- package/{client-DI_VsKvi.mjs.map → client-CnFXpfUF.mjs.map} +1 -1
- package/core/client/mod.mjs +3 -3
- package/core/dev-client/mod.mjs +3 -3
- package/core/internal.d.mts +2 -2
- package/core/internal.mjs +2 -2
- package/core/prod-client/mod.mjs +4 -4
- package/{internal-L0hnuNCn.d.mts → internal-BvDZTQLb.d.mts} +21 -2
- package/jsx/jsx-dev-runtime.mjs +1 -1
- package/jsx/mod.mjs +1 -1
- package/{jsx-dev-runtime-DpbWQ4Q0.mjs → jsx-dev-runtime-BZ-o1aUQ.mjs} +11 -6
- package/jsx-dev-runtime-BZ-o1aUQ.mjs.map +1 -0
- package/mod.d.mts +3 -3
- package/mod.mjs +4 -4
- package/package.json +2 -2
- package/{signal-B1aQQyxh.mjs → signal-CiJrTMGa.mjs} +2 -2
- package/{signal-B1aQQyxh.mjs.map → signal-CiJrTMGa.mjs.map} +1 -1
- package/{signal-CosyYdtA.d.mts → signal-MAa64fRK.d.mts} +2 -2
- package/{ssr-OV5GBPzK.d.mts → ssr-CbRIgrJ1.d.mts} +2 -2
- package/{ssr-Bqev931T.mjs → ssr-CdcEyS-i.mjs} +4 -4
- package/{ssr-Bqev931T.mjs.map → ssr-CdcEyS-i.mjs.map} +1 -1
- package/vite/build/runtime.d.mts +2 -2
- package/vite/build/runtime.mjs +3 -3
- package/vite/mod.mjs +162 -123
- package/vite/mod.mjs.map +1 -1
- package/web-utils/mod.d.mts +1 -1
- package/web-utils/mod.mjs +2 -2
- package/action-BcEktMN2.mjs.map +0 -1
- package/jsx-dev-runtime-DpbWQ4Q0.mjs.map +0 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { I as getStreamingResumeBootstrapScriptContent$1, M as getResumePayloadScriptContent, _ as beginSSRContainer, _t as createComponentBoundaryHtmlComment, at as toResumePayload, b as collectPendingSuspenseBoundaryIds, g as beginAsyncSSRContainer, mt as withRuntimeContainer, ot as toResumePayloadSubset } from "./action-Uv02N2Rx.mjs";
|
|
2
2
|
import { renderToString } from "./jsx/mod.mjs";
|
|
3
3
|
//#region core/ssr.ts
|
|
4
4
|
const collectRenderedComponentIdsFromHtml = (html) => {
|
|
@@ -47,7 +47,7 @@ const renderSSRAsync = async (render, options) => {
|
|
|
47
47
|
payload: toResumePayload(container)
|
|
48
48
|
};
|
|
49
49
|
} catch (error) {
|
|
50
|
-
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-
|
|
50
|
+
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-Uv02N2Rx.mjs").then((n) => n.fn);
|
|
51
51
|
if (!isPendingSsrLoaderError(error)) throw error;
|
|
52
52
|
if (!(options?.resolvePendingLoaders ? await options.resolvePendingLoaders(container) : options?.context ? await resolvePendingLoaders(container, options.context) : false)) throw error;
|
|
53
53
|
seededLoaderStates.clear();
|
|
@@ -95,7 +95,7 @@ const renderStreamingAttempt = async (render, options, seededLoaderStates, async
|
|
|
95
95
|
pendingBoundaryIds: collectPendingSuspenseBoundaryIds(container)
|
|
96
96
|
};
|
|
97
97
|
} catch (error) {
|
|
98
|
-
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-
|
|
98
|
+
const { isPendingSsrLoaderError, resolvePendingLoaders } = await import("./action-Uv02N2Rx.mjs").then((n) => n.fn);
|
|
99
99
|
if (!isPendingSsrLoaderError(error)) throw error;
|
|
100
100
|
if (!(options.resolvePendingLoaders ? await options.resolvePendingLoaders(container) : options.context ? await resolvePendingLoaders(container, options.context) : false)) throw error;
|
|
101
101
|
seededLoaderStates.clear();
|
|
@@ -154,4 +154,4 @@ const getStreamingResumeBootstrapScriptContent = () => getStreamingResumeBootstr
|
|
|
154
154
|
//#endregion
|
|
155
155
|
export { serializeResumePayload as a, renderSSRStream as i, renderSSR as n, renderSSRAsync as r, getStreamingResumeBootstrapScriptContent as t };
|
|
156
156
|
|
|
157
|
-
//# sourceMappingURL=ssr-
|
|
157
|
+
//# sourceMappingURL=ssr-CdcEyS-i.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ssr-Bqev931T.mjs","names":["getStreamingResumeBootstrapScriptContentFromRuntime"],"sources":["../core/ssr.ts"],"sourcesContent":["import type { Context } from 'hono'\nimport type { JSX } from '../jsx/types.ts'\nimport { renderToString } from '../jsx/mod.ts'\nimport { createComponentBoundaryHtmlComment } from './runtime/markers.ts'\nimport {\n beginAsyncSSRContainer,\n beginSSRContainer,\n collectPendingSuspenseBoundaryIds,\n getResumePayloadScriptContent,\n getStreamingResumeBootstrapScriptContent as getStreamingResumeBootstrapScriptContentFromRuntime,\n toResumePayload,\n toResumePayloadSubset,\n type ResumePayload,\n type RuntimeContainer,\n withRuntimeContainer,\n} from './runtime.ts'\n\nexport interface SSRRenderResult {\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamChunk {\n boundaryId: string\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamRenderResult extends SSRRenderResult {\n chunks: AsyncIterable<SSRStreamChunk>\n}\n\nconst collectRenderedComponentIdsFromHtml = (html: string) => {\n const ids = new Set<string>()\n const pattern = /<!--ec:c:([^:]+):start-->/g\n for (const match of html.matchAll(pattern)) {\n const id = match[1]\n if (id) {\n ids.add(id)\n }\n }\n return ids\n}\n\nconst createStreamingResumePayload = (\n container: RuntimeContainer,\n renderedComponentIds: Set<string>,\n): ResumePayload => toResumePayloadSubset(container, ['$root', ...renderedComponentIds])\n\nconst getPendingSuspensePromises = (container: RuntimeContainer) =>\n collectPendingSuspenseBoundaryIds(container)\n .map((boundaryId) => container.components.get(boundaryId)?.suspensePromise ?? null)\n .filter((promise): promise is Promise<unknown> => !!promise)\n\nexport const renderSSR = (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n symbols?: Record<string, string>\n },\n): SSRRenderResult => {\n const { container, result } = beginSSRContainer(options?.symbols ?? {}, render)\n return {\n html: withRuntimeContainer(container, () => renderToString(result)),\n payload: toResumePayload(container),\n }\n}\n\nexport const renderSSRAsync = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options?.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options?.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n const pendingSuspensePromises = getPendingSuspensePromises(container)\n if (container.pendingSuspensePromises.size > 0 || pendingSuspensePromises.length > 0) {\n await Promise.allSettled([...container.pendingSuspensePromises, ...pendingSuspensePromises])\n continue\n }\n asyncSignalSnapshotCache.clear()\n return {\n html,\n payload: toResumePayload(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options?.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options?.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nconst extractBoundaryHtml = (html: string, boundaryId: string) => {\n const startToken = createComponentBoundaryHtmlComment(boundaryId, 'start')\n const endToken = createComponentBoundaryHtmlComment(boundaryId, 'end')\n const startIndex = html.indexOf(startToken)\n if (startIndex < 0) {\n return null\n }\n const endIndex = html.indexOf(endToken, startIndex + startToken.length)\n if (endIndex < 0) {\n return null\n }\n return html.slice(startIndex + startToken.length, endIndex)\n}\n\nconst renderStreamingAttempt = async (\n render: () => JSX.Element | JSX.Element[],\n options: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n seededLoaderStates: Map<string, { data: unknown; error: unknown; loaded: boolean }>,\n asyncSignalSnapshotCache: Map<string, unknown>,\n externalRenderCache: Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >,\n): Promise<{\n container: RuntimeContainer\n html: string\n payload: ResumePayload\n pendingBoundaryIds: string[]\n}> => {\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n if (container.pendingSuspensePromises.size > 0) {\n await Promise.allSettled(container.pendingSuspensePromises)\n continue\n }\n const renderedComponentIds = collectRenderedComponentIdsFromHtml(html)\n return {\n container,\n html,\n payload: createStreamingResumePayload(container, renderedComponentIds),\n pendingBoundaryIds: collectPendingSuspenseBoundaryIds(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nexport const renderSSRStream = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRStreamRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n const initial = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n if (initial.pendingBoundaryIds.length === 0) {\n asyncSignalSnapshotCache.clear()\n return {\n chunks: (async function* () {})(),\n html: initial.html,\n payload: initial.payload,\n }\n }\n\n const chunks = (async function* () {\n let current = initial\n\n try {\n while (current.pendingBoundaryIds.length > 0) {\n await Promise.race(\n current.pendingBoundaryIds.map(\n (boundaryId) =>\n current.container.components.get(boundaryId)?.suspensePromise?.then(\n () => boundaryId,\n () => boundaryId,\n ) ?? Promise.resolve(boundaryId),\n ),\n )\n\n const next = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n const nextPending = new Set(next.pendingBoundaryIds)\n const completedIds = current.pendingBoundaryIds\n .filter((boundaryId) => !nextPending.has(boundaryId))\n .sort((left, right) => left.split('.').length - right.split('.').length)\n\n for (const boundaryId of completedIds) {\n const boundaryHtml = extractBoundaryHtml(next.html, boundaryId)\n if (boundaryHtml === null) {\n continue\n }\n yield {\n boundaryId,\n html: boundaryHtml,\n payload: next.payload,\n }\n }\n\n current = next\n }\n } finally {\n asyncSignalSnapshotCache.clear()\n }\n })()\n\n return {\n chunks,\n html: initial.html,\n payload: initial.payload,\n }\n}\n\nexport const serializeResumePayload = (payload: ResumePayload) =>\n getResumePayloadScriptContent(payload)\n\nexport const getStreamingResumeBootstrapScriptContent = () =>\n getStreamingResumeBootstrapScriptContentFromRuntime()\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ssr-CdcEyS-i.mjs","names":["getStreamingResumeBootstrapScriptContentFromRuntime"],"sources":["../core/ssr.ts"],"sourcesContent":["import type { Context } from 'hono'\nimport type { JSX } from '../jsx/types.ts'\nimport { renderToString } from '../jsx/mod.ts'\nimport { createComponentBoundaryHtmlComment } from './runtime/markers.ts'\nimport {\n beginAsyncSSRContainer,\n beginSSRContainer,\n collectPendingSuspenseBoundaryIds,\n getResumePayloadScriptContent,\n getStreamingResumeBootstrapScriptContent as getStreamingResumeBootstrapScriptContentFromRuntime,\n toResumePayload,\n toResumePayloadSubset,\n type ResumePayload,\n type RuntimeContainer,\n withRuntimeContainer,\n} from './runtime.ts'\n\nexport interface SSRRenderResult {\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamChunk {\n boundaryId: string\n html: string\n payload: ResumePayload\n}\n\nexport interface SSRStreamRenderResult extends SSRRenderResult {\n chunks: AsyncIterable<SSRStreamChunk>\n}\n\nconst collectRenderedComponentIdsFromHtml = (html: string) => {\n const ids = new Set<string>()\n const pattern = /<!--ec:c:([^:]+):start-->/g\n for (const match of html.matchAll(pattern)) {\n const id = match[1]\n if (id) {\n ids.add(id)\n }\n }\n return ids\n}\n\nconst createStreamingResumePayload = (\n container: RuntimeContainer,\n renderedComponentIds: Set<string>,\n): ResumePayload => toResumePayloadSubset(container, ['$root', ...renderedComponentIds])\n\nconst getPendingSuspensePromises = (container: RuntimeContainer) =>\n collectPendingSuspenseBoundaryIds(container)\n .map((boundaryId) => container.components.get(boundaryId)?.suspensePromise ?? null)\n .filter((promise): promise is Promise<unknown> => !!promise)\n\nexport const renderSSR = (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n symbols?: Record<string, string>\n },\n): SSRRenderResult => {\n const { container, result } = beginSSRContainer(options?.symbols ?? {}, render)\n return {\n html: withRuntimeContainer(container, () => renderToString(result)),\n payload: toResumePayload(container),\n }\n}\n\nexport const renderSSRAsync = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options?.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options?.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n const pendingSuspensePromises = getPendingSuspensePromises(container)\n if (container.pendingSuspensePromises.size > 0 || pendingSuspensePromises.length > 0) {\n await Promise.allSettled([...container.pendingSuspensePromises, ...pendingSuspensePromises])\n continue\n }\n asyncSignalSnapshotCache.clear()\n return {\n html,\n payload: toResumePayload(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options?.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options?.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nconst extractBoundaryHtml = (html: string, boundaryId: string) => {\n const startToken = createComponentBoundaryHtmlComment(boundaryId, 'start')\n const endToken = createComponentBoundaryHtmlComment(boundaryId, 'end')\n const startIndex = html.indexOf(startToken)\n if (startIndex < 0) {\n return null\n }\n const endIndex = html.indexOf(endToken, startIndex + startToken.length)\n if (endIndex < 0) {\n return null\n }\n return html.slice(startIndex + startToken.length, endIndex)\n}\n\nconst renderStreamingAttempt = async (\n render: () => JSX.Element | JSX.Element[],\n options: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n seededLoaderStates: Map<string, { data: unknown; error: unknown; loaded: boolean }>,\n asyncSignalSnapshotCache: Map<string, unknown>,\n externalRenderCache: Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >,\n): Promise<{\n container: RuntimeContainer\n html: string\n payload: ResumePayload\n pendingBoundaryIds: string[]\n}> => {\n for (let attempt = 0; attempt < 10; attempt += 1) {\n const { container, result } = await beginAsyncSSRContainer(\n options.symbols ?? {},\n render,\n async (runtimeContainer) => {\n for (const [id, snapshot] of seededLoaderStates) {\n runtimeContainer.loaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n await options.prepare?.(runtimeContainer)\n },\n {\n asyncSignalSnapshotCache,\n externalRenderCache,\n },\n )\n\n try {\n const html = withRuntimeContainer(container, () => renderToString(result))\n if (container.pendingSuspensePromises.size > 0) {\n await Promise.allSettled(container.pendingSuspensePromises)\n continue\n }\n const renderedComponentIds = collectRenderedComponentIdsFromHtml(html)\n return {\n container,\n html,\n payload: createStreamingResumePayload(container, renderedComponentIds),\n pendingBoundaryIds: collectPendingSuspenseBoundaryIds(container),\n }\n } catch (error) {\n const { isPendingSsrLoaderError, resolvePendingLoaders } = await import('./loader.ts')\n if (!isPendingSsrLoaderError(error)) {\n throw error\n }\n const resolved = options.resolvePendingLoaders\n ? await options.resolvePendingLoaders(container)\n : options.context\n ? await resolvePendingLoaders(container, options.context)\n : false\n if (!resolved) {\n throw error\n }\n seededLoaderStates.clear()\n for (const [id, snapshot] of container.loaderStates) {\n seededLoaderStates.set(id, {\n data: snapshot.data,\n error: snapshot.error,\n loaded: snapshot.loaded,\n })\n }\n }\n }\n\n throw new Error('SSR loader resolution did not converge.')\n}\n\nexport const renderSSRStream = async (\n render: () => JSX.Element | JSX.Element[],\n options?: {\n context?: Context<any>\n prepare?: (container: RuntimeContainer) => void | Promise<void>\n resolvePendingLoaders?: (container: RuntimeContainer) => void | Promise<boolean>\n symbols?: Record<string, string>\n },\n): Promise<SSRStreamRenderResult> => {\n const asyncSignalSnapshotCache = new Map<string, unknown>()\n const externalRenderCache = new Map<\n string,\n {\n error?: unknown\n html?: string\n pending?: Promise<string>\n status: 'pending' | 'rejected' | 'resolved'\n }\n >()\n const seededLoaderStates = new Map<string, { data: unknown; error: unknown; loaded: boolean }>()\n const initial = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n if (initial.pendingBoundaryIds.length === 0) {\n asyncSignalSnapshotCache.clear()\n return {\n chunks: (async function* () {})(),\n html: initial.html,\n payload: initial.payload,\n }\n }\n\n const chunks = (async function* () {\n let current = initial\n\n try {\n while (current.pendingBoundaryIds.length > 0) {\n await Promise.race(\n current.pendingBoundaryIds.map(\n (boundaryId) =>\n current.container.components.get(boundaryId)?.suspensePromise?.then(\n () => boundaryId,\n () => boundaryId,\n ) ?? Promise.resolve(boundaryId),\n ),\n )\n\n const next = await renderStreamingAttempt(\n render,\n options ?? {},\n seededLoaderStates,\n asyncSignalSnapshotCache,\n externalRenderCache,\n )\n\n const nextPending = new Set(next.pendingBoundaryIds)\n const completedIds = current.pendingBoundaryIds\n .filter((boundaryId) => !nextPending.has(boundaryId))\n .sort((left, right) => left.split('.').length - right.split('.').length)\n\n for (const boundaryId of completedIds) {\n const boundaryHtml = extractBoundaryHtml(next.html, boundaryId)\n if (boundaryHtml === null) {\n continue\n }\n yield {\n boundaryId,\n html: boundaryHtml,\n payload: next.payload,\n }\n }\n\n current = next\n }\n } finally {\n asyncSignalSnapshotCache.clear()\n }\n })()\n\n return {\n chunks,\n html: initial.html,\n payload: initial.payload,\n }\n}\n\nexport const serializeResumePayload = (payload: ResumePayload) =>\n getResumePayloadScriptContent(payload)\n\nexport const getStreamingResumeBootstrapScriptContent = () =>\n getStreamingResumeBootstrapScriptContentFromRuntime()\n"],"mappings":"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"}
|
package/vite/build/runtime.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { $
|
|
1
|
+
import { $n as escapeInlineScriptText, An as attachRequestFetch, At as getActionFormSubmissionId, Bn as serializePublicValue, Bt as primeLocationState, Cn as Reroute, Dn as Transport, Fn as markPublicError, In as registerClientHooks, Mn as deserializePublicValue, Mt as hasAction, Nt as primeActionState, Ot as executeAction, Qn as deserializeValue, Rn as resolveReroute, Sn as RequestFetch, Tn as ServerHooksModule, Un as withServerRequestContext, Vn as toPublicError, Yt as RESUME_FINAL_STATE_ELEMENT_ID, _n as HandleFetch, an as renderRouteMetadataHead, at as primeLoaderState, bn as PublicError, cn as AppContext, ct as ACTION_CONTENT_TYPE, dn as AppHooksModule, er as escapeJSONScriptText, et as executeLoader, hn as HandleError, in as composeRouteMetadata, jn as createRequestFetch, jt as getNormalizedActionInput, kn as WithAppEnv, mn as Handle, pn as BaseAppVariables, sn as APP_HOOKS_ELEMENT_ID, st as resolvePendingLoaders, tt as hasLoader, un as AppHooksManifest, wn as ResolvedHooks, zn as runHandleError } from "../../internal-BvDZTQLb.mjs";
|
|
2
2
|
import { Fragment, jsxDEV } from "../../jsx/jsx-dev-runtime.mjs";
|
|
3
|
-
import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, o as renderSSRAsync, s as renderSSRStream } from "../../ssr-
|
|
3
|
+
import { a as renderSSR, c as serializeResumePayload, i as getStreamingResumeBootstrapScriptContent, o as renderSSRAsync, s as renderSSRStream } from "../../ssr-CbRIgrJ1.mjs";
|
|
4
4
|
|
|
5
5
|
//#region core/action-csrf.d.ts
|
|
6
6
|
declare const ensureActionCsrfToken: (c: AppContext<any>) => string;
|
package/vite/build/runtime.mjs
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as jsxDEV, t as Fragment } from "../../jsx-dev-runtime-
|
|
3
|
-
import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "../../ssr-
|
|
1
|
+
import { B as primeLocationState, Dn as composeRouteMetadata, Gn as APP_HOOKS_ELEMENT_ID, Hn as applyActionCsrfCookie, Jn as deserializePublicValue, Kn as attachRequestFetch, On as renderRouteMetadataHead, Qn as registerClientHooks, Un as ensureActionCsrfToken, Zn as markPublicError, ar as withServerRequestContext, c as getActionFormSubmissionId, cn as executeLoader, cr as escapeJSONScriptText, d as primeActionState, er as resolveReroute, gn as resolvePendingLoaders, in as RESUME_FINAL_STATE_ELEMENT_ID, l as getNormalizedActionInput, ln as hasLoader, mn as primeLoaderState, nr as serializePublicValue, o as executeAction, or as deserializeValue, qn as createRequestFetch, rr as toPublicError, sr as escapeInlineScriptText, t as ACTION_CONTENT_TYPE, tr as runHandleError, u as hasAction } from "../../action-Uv02N2Rx.mjs";
|
|
2
|
+
import { a as jsxDEV, t as Fragment } from "../../jsx-dev-runtime-BZ-o1aUQ.mjs";
|
|
3
|
+
import { a as serializeResumePayload, i as renderSSRStream, n as renderSSR, r as renderSSRAsync, t as getStreamingResumeBootstrapScriptContent } from "../../ssr-CdcEyS-i.mjs";
|
|
4
4
|
export { ACTION_CONTENT_TYPE, APP_HOOKS_ELEMENT_ID, Fragment, RESUME_FINAL_STATE_ELEMENT_ID, applyActionCsrfCookie, attachRequestFetch, composeRouteMetadata, createRequestFetch, deserializePublicValue, deserializeValue, ensureActionCsrfToken, escapeInlineScriptText, escapeJSONScriptText, executeAction, executeLoader, getActionFormSubmissionId, getNormalizedActionInput, getStreamingResumeBootstrapScriptContent, hasAction, hasLoader, jsxDEV, markPublicError, primeActionState, primeLoaderState, primeLocationState, registerClientHooks, renderRouteMetadataHead, renderSSR, renderSSRAsync, renderSSRStream, resolvePendingLoaders, resolveReroute, runHandleError, serializePublicValue, serializeResumePayload, toPublicError, withServerRequestContext };
|
package/vite/mod.mjs
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as jsxDEV, t as Fragment } from "../jsx-dev-runtime-
|
|
1
|
+
import { B as primeLocationState, Cn as ROUTE_PREFLIGHT_REQUEST_HEADER, Dn as composeRouteMetadata, Gn as APP_HOOKS_ELEMENT_ID, Hn as applyActionCsrfCookie, Kn as attachRequestFetch, On as renderRouteMetadataHead, Sn as ROUTE_PREFLIGHT_ENDPOINT, Tn as ROUTE_RPC_URL_HEADER, Un as ensureActionCsrfToken, Zn as markPublicError, _n as ROUTE_DATA_ENDPOINT, ar as withServerRequestContext, bn as ROUTE_MANIFEST_ELEMENT_ID, er as resolveReroute, qn as createRequestFetch, tr as runHandleError, vn as ROUTE_DATA_REQUEST_HEADER } from "../action-Uv02N2Rx.mjs";
|
|
2
|
+
import { a as jsxDEV, t as Fragment } from "../jsx-dev-runtime-BZ-o1aUQ.mjs";
|
|
3
3
|
import { t as RESUME_HMR_EVENT } from "../resume-hmr-qTpLc5o-.mjs";
|
|
4
4
|
import { createServerModuleRunner, transformWithOxc } from "vite";
|
|
5
5
|
import { Hono } from "hono";
|
|
@@ -2802,24 +2802,33 @@ const resolveRoutePreflight = async (href, c) => {
|
|
|
2802
2802
|
};
|
|
2803
2803
|
|
|
2804
2804
|
for (const pageRouteEntry of pageRouteEntries) {
|
|
2805
|
-
app.get(pageRouteEntry.path, async (c) =>
|
|
2806
|
-
|
|
2807
|
-
|
|
2808
|
-
|
|
2809
|
-
|
|
2810
|
-
|
|
2811
|
-
|
|
2812
|
-
|
|
2813
|
-
|
|
2814
|
-
|
|
2815
|
-
|
|
2816
|
-
|
|
2817
|
-
|
|
2818
|
-
|
|
2819
|
-
|
|
2820
|
-
|
|
2821
|
-
|
|
2822
|
-
|
|
2805
|
+
app.get(pageRouteEntry.path, async (c) =>
|
|
2806
|
+
resolveRequest(c, async (requestContext) => {
|
|
2807
|
+
const pathname = normalizeRoutePath(getRequestUrl(requestContext.req.raw).pathname);
|
|
2808
|
+
const match = matchRoute(pathname);
|
|
2809
|
+
if (!match || match.route !== routes[pageRouteEntry.routeIndex]) {
|
|
2810
|
+
return requestContext.text("Not Found", 404);
|
|
2811
|
+
}
|
|
2812
|
+
return composeRouteMiddlewares(
|
|
2813
|
+
match.route,
|
|
2814
|
+
requestContext,
|
|
2815
|
+
match.params,
|
|
2816
|
+
async () =>
|
|
2817
|
+
requestContext.req.header(ROUTE_PREFLIGHT_REQUEST_HEADER) === "1"
|
|
2818
|
+
? requestContext.body(null, 204)
|
|
2819
|
+
: requestContext.req.header(ROUTE_DATA_REQUEST_HEADER) === "1"
|
|
2820
|
+
? renderRouteData(
|
|
2821
|
+
match.route,
|
|
2822
|
+
pathname,
|
|
2823
|
+
match.params,
|
|
2824
|
+
requestContext,
|
|
2825
|
+
match.route.page,
|
|
2826
|
+
"page",
|
|
2827
|
+
)
|
|
2828
|
+
: renderMatchedPage(match, requestContext),
|
|
2829
|
+
);
|
|
2830
|
+
}),
|
|
2831
|
+
);
|
|
2823
2832
|
}
|
|
2824
2833
|
|
|
2825
2834
|
app.post("/__eclipsa/action/:id", async (c) =>
|
|
@@ -2882,117 +2891,147 @@ app.get("/__eclipsa/loader/:id", async (c) =>
|
|
|
2882
2891
|
}),
|
|
2883
2892
|
);
|
|
2884
2893
|
|
|
2885
|
-
app.get(${JSON.stringify(ROUTE_PREFLIGHT_ENDPOINT)}, async (c) =>
|
|
2886
|
-
|
|
2887
|
-
|
|
2888
|
-
|
|
2889
|
-
|
|
2890
|
-
|
|
2891
|
-
|
|
2894
|
+
app.get(${JSON.stringify(ROUTE_PREFLIGHT_ENDPOINT)}, async (c) =>
|
|
2895
|
+
resolveRequest(c, async (requestContext) => {
|
|
2896
|
+
const href = requestContext.req.query("href");
|
|
2897
|
+
if (!href) {
|
|
2898
|
+
return requestContext.json({ document: true, ok: false }, 400);
|
|
2899
|
+
}
|
|
2900
|
+
return resolveRoutePreflight(href, requestContext);
|
|
2901
|
+
}),
|
|
2902
|
+
);
|
|
2892
2903
|
|
|
2893
|
-
app.get(${JSON.stringify(ROUTE_DATA_ENDPOINT)}, async (c) =>
|
|
2894
|
-
|
|
2895
|
-
|
|
2896
|
-
|
|
2897
|
-
|
|
2898
|
-
|
|
2899
|
-
|
|
2904
|
+
app.get(${JSON.stringify(ROUTE_DATA_ENDPOINT)}, async (c) =>
|
|
2905
|
+
resolveRequest(c, async (requestContext) => {
|
|
2906
|
+
const href = requestContext.req.query("href");
|
|
2907
|
+
if (!href) {
|
|
2908
|
+
return requestContext.json({ document: true, ok: false }, 400);
|
|
2909
|
+
}
|
|
2910
|
+
return resolveRouteData(href, requestContext);
|
|
2911
|
+
}),
|
|
2912
|
+
);
|
|
2900
2913
|
|
|
2901
|
-
app.all("*", async (c) =>
|
|
2902
|
-
|
|
2903
|
-
|
|
2914
|
+
app.all("*", async (c) =>
|
|
2915
|
+
resolveRequest(c, async (requestContext) => {
|
|
2916
|
+
const pathname = normalizeRoutePath(getRequestUrl(requestContext.req.raw).pathname);
|
|
2917
|
+
const match = matchRoute(pathname);
|
|
2904
2918
|
|
|
2905
|
-
|
|
2906
|
-
|
|
2907
|
-
|
|
2919
|
+
if (!match) {
|
|
2920
|
+
const fallback = findSpecialRoute(pathname, "notFound");
|
|
2921
|
+
if (fallback?.route?.notFound) {
|
|
2922
|
+
return composeRouteMiddlewares(
|
|
2923
|
+
fallback.route,
|
|
2924
|
+
requestContext,
|
|
2925
|
+
fallback.params,
|
|
2926
|
+
async () =>
|
|
2927
|
+
requestContext.req.header(ROUTE_PREFLIGHT_REQUEST_HEADER) === "1"
|
|
2928
|
+
? requestContext.body(null, 204)
|
|
2929
|
+
: requestContext.req.header(ROUTE_DATA_REQUEST_HEADER) === "1"
|
|
2930
|
+
? renderRouteData(
|
|
2931
|
+
fallback.route,
|
|
2932
|
+
pathname,
|
|
2933
|
+
fallback.params,
|
|
2934
|
+
requestContext,
|
|
2935
|
+
fallback.route.notFound,
|
|
2936
|
+
"not-found",
|
|
2937
|
+
)
|
|
2938
|
+
: renderRouteResponse(
|
|
2939
|
+
fallback.route,
|
|
2940
|
+
pathname,
|
|
2941
|
+
fallback.params,
|
|
2942
|
+
requestContext,
|
|
2943
|
+
fallback.route.notFound,
|
|
2944
|
+
404,
|
|
2945
|
+
),
|
|
2946
|
+
);
|
|
2947
|
+
}
|
|
2948
|
+
return requestContext.text("Not Found", 404);
|
|
2949
|
+
}
|
|
2950
|
+
|
|
2951
|
+
if (
|
|
2952
|
+
(requestContext.req.method === "GET" || requestContext.req.method === "HEAD") &&
|
|
2953
|
+
match.route.page
|
|
2954
|
+
) {
|
|
2908
2955
|
return composeRouteMiddlewares(
|
|
2909
|
-
|
|
2910
|
-
|
|
2911
|
-
|
|
2956
|
+
match.route,
|
|
2957
|
+
requestContext,
|
|
2958
|
+
match.params,
|
|
2912
2959
|
async () =>
|
|
2913
|
-
|
|
2914
|
-
|
|
2915
|
-
|
|
2916
|
-
? renderRouteData(
|
|
2917
|
-
|
|
2960
|
+
requestContext.req.header(ROUTE_PREFLIGHT_REQUEST_HEADER) === "1"
|
|
2961
|
+
? requestContext.body(null, 204)
|
|
2962
|
+
: requestContext.req.header(ROUTE_DATA_REQUEST_HEADER) === "1"
|
|
2963
|
+
? renderRouteData(
|
|
2964
|
+
match.route,
|
|
2965
|
+
pathname,
|
|
2966
|
+
match.params,
|
|
2967
|
+
requestContext,
|
|
2968
|
+
match.route.page,
|
|
2969
|
+
"page",
|
|
2970
|
+
)
|
|
2971
|
+
: renderMatchedPage(match, requestContext),
|
|
2918
2972
|
);
|
|
2919
2973
|
}
|
|
2920
|
-
|
|
2921
|
-
|
|
2922
|
-
|
|
2923
|
-
|
|
2924
|
-
|
|
2925
|
-
|
|
2926
|
-
|
|
2927
|
-
|
|
2974
|
+
if (requestContext.req.method === "POST" && match.route.page) {
|
|
2975
|
+
return composeRouteMiddlewares(
|
|
2976
|
+
match.route,
|
|
2977
|
+
requestContext,
|
|
2978
|
+
match.params,
|
|
2979
|
+
async () => {
|
|
2980
|
+
const actionId = await getActionFormSubmissionId(requestContext);
|
|
2981
|
+
if (!actionId) {
|
|
2982
|
+
return match.route.server
|
|
2983
|
+
? invokeRouteServer(match.route.server, requestContext, match.params)
|
|
2984
|
+
: renderMatchedPage(match, requestContext);
|
|
2985
|
+
}
|
|
2986
|
+
const routeAccess = getRouteServerAccess(match.route);
|
|
2987
|
+
if (!routeAccess.actionIds.includes(actionId)) {
|
|
2988
|
+
return requestContext.text("Not Found", 404);
|
|
2989
|
+
}
|
|
2990
|
+
const moduleUrl = actions[actionId];
|
|
2991
|
+
if (!moduleUrl) {
|
|
2992
|
+
return requestContext.text("Not Found", 404);
|
|
2993
|
+
}
|
|
2994
|
+
if (!hasAction(actionId)) {
|
|
2995
|
+
await import(moduleUrl);
|
|
2996
|
+
}
|
|
2997
|
+
const input = await getNormalizedActionInput(requestContext);
|
|
2998
|
+
const response = await executeAction(actionId, requestContext);
|
|
2999
|
+
const contentType = response.headers.get("content-type") ?? "";
|
|
3000
|
+
if (!contentType.startsWith(ACTION_CONTENT_TYPE)) {
|
|
3001
|
+
return response;
|
|
3002
|
+
}
|
|
3003
|
+
const body = await response.json();
|
|
3004
|
+
return renderMatchedPage(match, requestContext, {
|
|
3005
|
+
prepare(container) {
|
|
3006
|
+
primeActionState(container, actionId, {
|
|
3007
|
+
error: body.ok ? undefined : deserializeValue(body.error),
|
|
3008
|
+
input,
|
|
3009
|
+
result: body.ok ? deserializeValue(body.value) : undefined,
|
|
3010
|
+
});
|
|
3011
|
+
},
|
|
3012
|
+
});
|
|
3013
|
+
},
|
|
3014
|
+
);
|
|
3015
|
+
}
|
|
3016
|
+
if (match.route.server) {
|
|
3017
|
+
return composeRouteMiddlewares(match.route, requestContext, match.params, async () =>
|
|
3018
|
+
invokeRouteServer(match.route.server, requestContext, match.params),
|
|
3019
|
+
);
|
|
3020
|
+
}
|
|
3021
|
+
if (match.route.page) {
|
|
3022
|
+
return composeRouteMiddlewares(
|
|
3023
|
+
match.route,
|
|
3024
|
+
requestContext,
|
|
3025
|
+
match.params,
|
|
2928
3026
|
async () =>
|
|
2929
|
-
|
|
2930
|
-
?
|
|
2931
|
-
:
|
|
2932
|
-
|
|
2933
|
-
|
|
2934
|
-
);
|
|
2935
|
-
}
|
|
2936
|
-
|
|
2937
|
-
return composeRouteMiddlewares(
|
|
2938
|
-
match.route,
|
|
2939
|
-
c,
|
|
2940
|
-
match.params,
|
|
2941
|
-
async () => {
|
|
2942
|
-
const actionId = await getActionFormSubmissionId(c);
|
|
2943
|
-
if (!actionId) {
|
|
2944
|
-
return match.route.server
|
|
2945
|
-
? invokeRouteServer(match.route.server, c, match.params)
|
|
2946
|
-
: renderMatchedPage(match, c);
|
|
2947
|
-
}
|
|
2948
|
-
const routeAccess = getRouteServerAccess(match.route);
|
|
2949
|
-
if (!routeAccess.actionIds.includes(actionId)) {
|
|
2950
|
-
return c.text("Not Found", 404);
|
|
2951
|
-
}
|
|
2952
|
-
const moduleUrl = actions[actionId];
|
|
2953
|
-
if (!moduleUrl) {
|
|
2954
|
-
return c.text("Not Found", 404);
|
|
2955
|
-
}
|
|
2956
|
-
if (!hasAction(actionId)) {
|
|
2957
|
-
await import(moduleUrl);
|
|
2958
|
-
}
|
|
2959
|
-
const input = await getNormalizedActionInput(c);
|
|
2960
|
-
const response = await executeAction(actionId, c);
|
|
2961
|
-
const contentType = response.headers.get("content-type") ?? "";
|
|
2962
|
-
if (!contentType.startsWith(ACTION_CONTENT_TYPE)) {
|
|
2963
|
-
return response;
|
|
2964
|
-
}
|
|
2965
|
-
const body = await response.json();
|
|
2966
|
-
return renderMatchedPage(match, c, {
|
|
2967
|
-
prepare(container) {
|
|
2968
|
-
primeActionState(container, actionId, {
|
|
2969
|
-
error: body.ok ? undefined : deserializeValue(body.error),
|
|
2970
|
-
input,
|
|
2971
|
-
result: body.ok ? deserializeValue(body.value) : undefined,
|
|
2972
|
-
});
|
|
2973
|
-
},
|
|
2974
|
-
});
|
|
2975
|
-
},
|
|
2976
|
-
);
|
|
2977
|
-
}
|
|
2978
|
-
if (match.route.server) {
|
|
2979
|
-
return composeRouteMiddlewares(match.route, c, match.params, async () =>
|
|
2980
|
-
invokeRouteServer(match.route.server, c, match.params),
|
|
2981
|
-
);
|
|
2982
|
-
}
|
|
2983
|
-
if (match.route.page) {
|
|
2984
|
-
return composeRouteMiddlewares(
|
|
2985
|
-
match.route,
|
|
2986
|
-
c,
|
|
2987
|
-
match.params,
|
|
2988
|
-
async () =>
|
|
2989
|
-
c.req.header(ROUTE_PREFLIGHT_REQUEST_HEADER) === "1"
|
|
2990
|
-
? c.body(null, 204)
|
|
2991
|
-
: renderMatchedPage(match, c),
|
|
2992
|
-
);
|
|
2993
|
-
}
|
|
2994
|
-
return c.text("Not Found", 404);
|
|
2995
|
-
});
|
|
3027
|
+
requestContext.req.header(ROUTE_PREFLIGHT_REQUEST_HEADER) === "1"
|
|
3028
|
+
? requestContext.body(null, 204)
|
|
3029
|
+
: renderMatchedPage(match, requestContext),
|
|
3030
|
+
);
|
|
3031
|
+
}
|
|
3032
|
+
return requestContext.text("Not Found", 404);
|
|
3033
|
+
}),
|
|
3034
|
+
);
|
|
2996
3035
|
|
|
2997
3036
|
export const pageRoutePatterns = [...new Set(pageRouteEntries.map((entry) => entry.path))];
|
|
2998
3037
|
export default app;
|