@flight-framework/core 0.1.0 → 0.2.1
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/LICENSE +21 -0
- package/dist/{chunk-5KF3QQWZ.js → chunk-3ZSSRE6M.js} +5 -19
- package/dist/chunk-3ZSSRE6M.js.map +1 -0
- package/dist/chunk-4S5JWTGN.js +218 -0
- package/dist/chunk-4S5JWTGN.js.map +1 -0
- package/dist/chunk-62C7LX2E.js +205 -0
- package/dist/chunk-62C7LX2E.js.map +1 -0
- package/dist/chunk-63SCEXD7.js +3 -0
- package/dist/chunk-63SCEXD7.js.map +1 -0
- package/dist/{chunk-YIOQC3DC.js → chunk-6BDCTUQY.js} +3 -3
- package/dist/{chunk-YIOQC3DC.js.map → chunk-6BDCTUQY.js.map} +1 -1
- package/dist/chunk-6Z2RYHEU.js +212 -0
- package/dist/chunk-6Z2RYHEU.js.map +1 -0
- package/dist/chunk-HAX5OAB6.js +324 -0
- package/dist/chunk-HAX5OAB6.js.map +1 -0
- package/dist/chunk-K2CQZPCG.js +257 -0
- package/dist/chunk-K2CQZPCG.js.map +1 -0
- package/dist/chunk-N3TUOEV4.js +213 -0
- package/dist/chunk-N3TUOEV4.js.map +1 -0
- package/dist/chunk-NWMJYTMB.js +300 -0
- package/dist/chunk-NWMJYTMB.js.map +1 -0
- package/dist/chunk-OCVLNLTI.js +252 -0
- package/dist/chunk-OCVLNLTI.js.map +1 -0
- package/dist/chunk-PDW5WCMW.js +258 -0
- package/dist/chunk-PDW5WCMW.js.map +1 -0
- package/dist/chunk-PVUMB632.js +256 -0
- package/dist/chunk-PVUMB632.js.map +1 -0
- package/dist/{chunk-6WSPUG5L.js → chunk-RSVA2EYO.js} +2 -2
- package/dist/chunk-RSVA2EYO.js.map +1 -0
- package/dist/chunk-T4Z4HM4W.js +285 -0
- package/dist/chunk-T4Z4HM4W.js.map +1 -0
- package/dist/{chunk-OBNYNJB5.js → chunk-WOEIJWGJ.js} +6 -8
- package/dist/chunk-WOEIJWGJ.js.map +1 -0
- package/dist/{chunk-I2B4WSHC.js → chunk-XSY5AAXT.js} +3 -4
- package/dist/chunk-XSY5AAXT.js.map +1 -0
- package/dist/chunk-Y22AMGTM.js +3 -0
- package/dist/chunk-Y22AMGTM.js.map +1 -0
- package/dist/chunk-ZIE56LCA.js +341 -0
- package/dist/chunk-ZIE56LCA.js.map +1 -0
- package/dist/file-router/streaming-hints.d.ts +1 -1
- package/dist/file-router/streaming-hints.js +1 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +19 -7
- package/dist/index.js.map +1 -1
- package/dist/rsc/adapters/index.d.ts +8 -0
- package/dist/rsc/adapters/index.js +7 -0
- package/dist/rsc/adapters/index.js.map +1 -0
- package/dist/rsc/adapters/preact.d.ts +97 -0
- package/dist/rsc/adapters/preact.js +3 -0
- package/dist/rsc/adapters/preact.js.map +1 -0
- package/dist/rsc/adapters/react.d.ts +82 -0
- package/dist/rsc/adapters/react.js +3 -0
- package/dist/rsc/adapters/react.js.map +1 -0
- package/dist/rsc/adapters/solid.d.ts +84 -0
- package/dist/rsc/adapters/solid.js +3 -0
- package/dist/rsc/adapters/solid.js.map +1 -0
- package/dist/rsc/adapters/vue.d.ts +80 -0
- package/dist/rsc/adapters/vue.js +3 -0
- package/dist/rsc/adapters/vue.js.map +1 -0
- package/dist/rsc/boundaries.d.ts +182 -0
- package/dist/rsc/boundaries.js +3 -0
- package/dist/rsc/boundaries.js.map +1 -0
- package/dist/rsc/context.d.ts +201 -0
- package/dist/rsc/context.js +3 -0
- package/dist/rsc/context.js.map +1 -0
- package/dist/rsc/index.d.ts +20 -124
- package/dist/rsc/index.js +13 -1
- package/dist/rsc/legacy.d.ts +131 -0
- package/dist/rsc/legacy.js +3 -0
- package/dist/rsc/legacy.js.map +1 -0
- package/dist/rsc/payload.d.ts +262 -0
- package/dist/rsc/payload.js +3 -0
- package/dist/rsc/payload.js.map +1 -0
- package/dist/rsc/plugins/esbuild.d.ts +124 -0
- package/dist/rsc/plugins/esbuild.js +4 -0
- package/dist/rsc/plugins/esbuild.js.map +1 -0
- package/dist/rsc/plugins/index.d.ts +4 -0
- package/dist/rsc/plugins/index.js +6 -0
- package/dist/rsc/plugins/index.js.map +1 -0
- package/dist/rsc/plugins/rollup.d.ts +103 -0
- package/dist/rsc/plugins/rollup.js +4 -0
- package/dist/rsc/plugins/rollup.js.map +1 -0
- package/dist/rsc/renderer.d.ts +160 -0
- package/dist/rsc/renderer.js +5 -0
- package/dist/rsc/renderer.js.map +1 -0
- package/dist/rsc/stream.d.ts +129 -0
- package/dist/rsc/stream.js +3 -0
- package/dist/rsc/stream.js.map +1 -0
- package/dist/rsc/vite-plugin.d.ts +78 -0
- package/dist/rsc/vite-plugin.js +4 -0
- package/dist/rsc/vite-plugin.js.map +1 -0
- package/dist/streaming/index.js +1 -1
- package/dist/streaming/observability.js +2 -2
- package/dist/streaming/priority.js +1 -1
- package/package.json +180 -124
- package/dist/chunk-5KF3QQWZ.js.map +0 -1
- package/dist/chunk-6WSPUG5L.js.map +0 -1
- package/dist/chunk-I2B4WSHC.js.map +0 -1
- package/dist/chunk-OBNYNJB5.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/rsc/payload.ts"],"names":[],"mappings":"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","file":"chunk-K2CQZPCG.js","sourcesContent":["/**\r\n * @flight-framework/core - Flight Payload System\r\n * \r\n * Formato de serialización agnóstico para Server Components.\r\n * Diseñado para máxima debuggabilidad y compatibilidad multi-framework.\r\n * \r\n * Filosofía Flight:\r\n * - Formato documentado y abierto (NDJSON)\r\n * - No depende de internals de React\r\n * - Extensible para cualquier UI framework\r\n * - Zero vendor lock-in\r\n * \r\n * @module @flight-framework/core/rsc/payload\r\n */\r\n\r\n// ============================================================================\r\n// Chunk Types - El corazón del streaming protocol\r\n// ============================================================================\r\n\r\n/**\r\n * Union type de todos los chunks que pueden enviarse en un FlightStream\r\n */\r\nexport type FlightChunk =\r\n | ServerComponentChunk\r\n | ClientReferenceChunk\r\n | ServerReferenceChunk\r\n | ErrorBoundaryChunk\r\n | HintChunk\r\n | MetaChunk;\r\n\r\n/**\r\n * Chunk de Server Component renderizado\r\n * Contiene el árbol virtual de elementos\r\n */\r\nexport interface ServerComponentChunk {\r\n /** Discriminator */\r\n readonly type: 'S';\r\n /** Unique chunk ID */\r\n readonly id: string;\r\n /** Virtual element tree */\r\n readonly tree: FlightElement;\r\n /** IDs de chunks que este depende (para streaming ordenado) */\r\n readonly awaiting?: readonly string[];\r\n /** Timestamp para debugging/observability */\r\n readonly ts?: number;\r\n}\r\n\r\n/**\r\n * Referencia a un Client Component\r\n * El cliente cargará el módulo y lo hidratará\r\n */\r\nexport interface ClientReferenceChunk {\r\n /** Discriminator */\r\n readonly type: 'C';\r\n /** Reference ID */\r\n readonly id: string;\r\n /** Module specifier (relativo al manifest) */\r\n readonly module: string;\r\n /** Export name */\r\n readonly export: string;\r\n /** Serialized props */\r\n readonly props: SerializedValue;\r\n /** Fallback HTML para SSR (opcional) */\r\n readonly fallback?: string;\r\n}\r\n\r\n/**\r\n * Referencia a una Server Function (Action)\r\n * El cliente la invocará via RPC\r\n */\r\nexport interface ServerReferenceChunk {\r\n /** Discriminator */\r\n readonly type: 'A';\r\n /** Action ID */\r\n readonly id: string;\r\n /** Bound arguments (pre-bound via .bind()) */\r\n readonly bound?: readonly SerializedValue[];\r\n}\r\n\r\n/**\r\n * Error en un boundary específico\r\n */\r\nexport interface ErrorBoundaryChunk {\r\n /** Discriminator */\r\n readonly type: 'E';\r\n /** Boundary ID where error occurred */\r\n readonly boundary: string;\r\n /** Safe error message for client */\r\n readonly message: string;\r\n /** Error digest for server-side correlation */\r\n readonly digest: string;\r\n /** Component stack for development */\r\n readonly stack?: string;\r\n}\r\n\r\n/**\r\n * Hints para el cliente (preload, prefetch, etc.)\r\n */\r\nexport interface HintChunk {\r\n /** Discriminator */\r\n readonly type: 'H';\r\n /** Hint type */\r\n readonly hint: 'preload' | 'prefetch' | 'dns-prefetch' | 'preconnect' | 'modulepreload';\r\n /** Resource URL */\r\n readonly href: string;\r\n /** Resource type (for preload) */\r\n readonly as?: 'script' | 'style' | 'image' | 'font' | 'fetch';\r\n /** Crossorigin attribute */\r\n readonly crossorigin?: 'anonymous' | 'use-credentials';\r\n}\r\n\r\n/**\r\n * Metadata chunk (para SSR head injection)\r\n */\r\nexport interface MetaChunk {\r\n /** Discriminator */\r\n readonly type: 'M';\r\n /** Meta type */\r\n readonly meta: 'title' | 'description' | 'og' | 'twitter' | 'link' | 'script';\r\n /** Content */\r\n readonly content: string | Record<string, string>;\r\n}\r\n\r\n// ============================================================================\r\n// Flight Element - Virtual DOM agnóstico\r\n// ============================================================================\r\n\r\n/**\r\n * Virtual element que puede representar cualquier UI framework\r\n */\r\nexport type FlightElement =\r\n | FlightHostElement\r\n | FlightTextElement\r\n | FlightFragmentElement\r\n | FlightSuspenseElement\r\n | FlightClientElement\r\n | FlightLazyElement\r\n | FlightNullElement;\r\n\r\n/**\r\n * Host element (div, span, etc.)\r\n */\r\nexport interface FlightHostElement {\r\n readonly $$type: 'host';\r\n readonly tag: string;\r\n readonly key?: string | number;\r\n readonly props: Readonly<Record<string, SerializedValue>>;\r\n readonly children: readonly FlightElement[];\r\n}\r\n\r\n/**\r\n * Text node\r\n */\r\nexport interface FlightTextElement {\r\n readonly $$type: 'text';\r\n readonly value: string;\r\n}\r\n\r\n/**\r\n * Fragment (multiple children, no wrapper)\r\n */\r\nexport interface FlightFragmentElement {\r\n readonly $$type: 'fragment';\r\n readonly children: readonly FlightElement[];\r\n}\r\n\r\n/**\r\n * Suspense boundary\r\n */\r\nexport interface FlightSuspenseElement {\r\n readonly $$type: 'suspense';\r\n readonly id: string;\r\n readonly fallback: FlightElement;\r\n readonly children: readonly FlightElement[];\r\n}\r\n\r\n/**\r\n * Client component reference\r\n */\r\nexport interface FlightClientElement {\r\n readonly $$type: 'client';\r\n /** Reference to ClientReferenceChunk ID */\r\n readonly ref: string;\r\n /** Pre-rendered fallback HTML */\r\n readonly ssr?: string;\r\n}\r\n\r\n/**\r\n * Lazy/async element (pending resolution)\r\n */\r\nexport interface FlightLazyElement {\r\n readonly $$type: 'lazy';\r\n readonly id: string;\r\n readonly fallback?: FlightElement;\r\n}\r\n\r\n/**\r\n * Null/empty element\r\n */\r\nexport interface FlightNullElement {\r\n readonly $$type: 'null';\r\n}\r\n\r\n// ============================================================================\r\n// Serializable Values\r\n// ============================================================================\r\n\r\n/**\r\n * Valores que pueden cruzar el boundary server/client\r\n */\r\nexport type SerializedValue =\r\n | string\r\n | number\r\n | boolean\r\n | null\r\n | undefined\r\n | readonly SerializedValue[]\r\n | { readonly [key: string]: SerializedValue }\r\n | SerializedSpecialValue;\r\n\r\n/**\r\n * Tipos especiales que requieren serialización custom\r\n */\r\nexport interface SerializedSpecialValue {\r\n readonly $$flight: SpecialValueType;\r\n readonly value: string | readonly unknown[];\r\n}\r\n\r\nexport type SpecialValueType =\r\n | 'date'\r\n | 'bigint'\r\n | 'map'\r\n | 'set'\r\n | 'undefined'\r\n | 'symbol'\r\n | 'regexp'\r\n | 'url'\r\n | 'error'\r\n | 'formdata'\r\n | 'blob'\r\n | 'arraybuffer';\r\n\r\n// ============================================================================\r\n// Serialization Functions\r\n// ============================================================================\r\n\r\n/**\r\n * Serializa un valor para transmisión a través de FlightStream\r\n */\r\nexport function serialize(value: unknown): SerializedValue {\r\n return serializeValue(value, new WeakSet());\r\n}\r\n\r\nfunction serializeValue(value: unknown, seen: WeakSet<object>): SerializedValue {\r\n // Primitives\r\n if (value === null) return null;\r\n if (value === undefined) return { $$flight: 'undefined', value: '' };\r\n if (typeof value === 'string') return value;\r\n if (typeof value === 'number') {\r\n if (Number.isNaN(value)) return { $$flight: 'undefined', value: 'NaN' };\r\n if (!Number.isFinite(value)) return { $$flight: 'undefined', value: value > 0 ? 'Infinity' : '-Infinity' };\r\n return value;\r\n }\r\n if (typeof value === 'boolean') return value;\r\n if (typeof value === 'bigint') return { $$flight: 'bigint', value: value.toString() };\r\n if (typeof value === 'symbol') return { $$flight: 'symbol', value: value.description ?? '' };\r\n\r\n // Functions cannot be serialized\r\n if (typeof value === 'function') {\r\n throw new FlightSerializationError(\r\n 'Functions cannot be passed from Server to Client Components. ' +\r\n 'If you need to pass a function, use a Server Action instead.'\r\n );\r\n }\r\n\r\n // Circular reference detection\r\n if (typeof value === 'object') {\r\n if (seen.has(value)) {\r\n throw new FlightSerializationError('Circular references are not supported in Flight payloads.');\r\n }\r\n seen.add(value);\r\n }\r\n\r\n // Special objects\r\n if (value instanceof Date) {\r\n return { $$flight: 'date', value: value.toISOString() };\r\n }\r\n if (value instanceof RegExp) {\r\n return { $$flight: 'regexp', value: value.toString() };\r\n }\r\n if (value instanceof URL) {\r\n return { $$flight: 'url', value: value.href };\r\n }\r\n if (value instanceof Map) {\r\n const entries: [SerializedValue, SerializedValue][] = [];\r\n for (const [k, v] of value) {\r\n entries.push([serializeValue(k, seen), serializeValue(v, seen)]);\r\n }\r\n return { $$flight: 'map', value: entries as unknown as string };\r\n }\r\n if (value instanceof Set) {\r\n const items: SerializedValue[] = [];\r\n for (const v of value) {\r\n items.push(serializeValue(v, seen));\r\n }\r\n return { $$flight: 'set', value: items as unknown as string };\r\n }\r\n if (value instanceof Error) {\r\n return {\r\n $$flight: 'error',\r\n value: JSON.stringify({ name: value.name, message: value.message })\r\n };\r\n }\r\n\r\n // Arrays\r\n if (Array.isArray(value)) {\r\n return value.map(v => serializeValue(v, seen));\r\n }\r\n\r\n // Plain objects\r\n if (isPlainObject(value)) {\r\n const result: Record<string, SerializedValue> = {};\r\n for (const [k, v] of Object.entries(value)) {\r\n result[k] = serializeValue(v, seen);\r\n }\r\n return result;\r\n }\r\n\r\n // Unknown object type - try JSON serialization\r\n try {\r\n return JSON.parse(JSON.stringify(value)) as SerializedValue;\r\n } catch {\r\n throw new FlightSerializationError(\r\n `Cannot serialize value of type ${value?.constructor?.name ?? typeof value}. ` +\r\n 'Only serializable values can be passed to Client Components.'\r\n );\r\n }\r\n}\r\n\r\n/**\r\n * Deserializa un valor recibido de FlightStream\r\n */\r\nexport function deserialize<T = unknown>(value: SerializedValue): T {\r\n return deserializeValue(value) as T;\r\n}\r\n\r\nfunction deserializeValue(value: SerializedValue): unknown {\r\n if (value === null || value === undefined) return value;\r\n if (typeof value === 'string' || typeof value === 'number' || typeof value === 'boolean') {\r\n return value;\r\n }\r\n\r\n // Special values\r\n if (isSpecialValue(value)) {\r\n switch (value.$$flight) {\r\n case 'undefined':\r\n if (value.value === 'NaN') return NaN;\r\n if (value.value === 'Infinity') return Infinity;\r\n if (value.value === '-Infinity') return -Infinity;\r\n return undefined;\r\n case 'date':\r\n return new Date(value.value as string);\r\n case 'bigint':\r\n return BigInt(value.value as string);\r\n case 'symbol':\r\n return Symbol(value.value as string);\r\n case 'regexp': {\r\n const match = (value.value as string).match(/^\\/(.*)\\/([gimsuy]*)$/);\r\n if (match) return new RegExp(match[1]!, match[2]);\r\n return new RegExp(value.value as string);\r\n }\r\n case 'url':\r\n return new URL(value.value as string);\r\n case 'map':\r\n return new Map((value.value as unknown as [SerializedValue, SerializedValue][])\r\n .map(([k, v]) => [deserializeValue(k), deserializeValue(v)]));\r\n case 'set':\r\n return new Set((value.value as unknown as SerializedValue[])\r\n .map(v => deserializeValue(v)));\r\n case 'error': {\r\n const { name, message } = JSON.parse(value.value as string);\r\n const error = new Error(message);\r\n error.name = name;\r\n return error;\r\n }\r\n }\r\n }\r\n\r\n // Arrays\r\n if (Array.isArray(value)) {\r\n return value.map(deserializeValue);\r\n }\r\n\r\n // Objects\r\n if (typeof value === 'object') {\r\n const result: Record<string, unknown> = {};\r\n for (const [k, v] of Object.entries(value)) {\r\n result[k] = deserializeValue(v);\r\n }\r\n return result;\r\n }\r\n\r\n return value;\r\n}\r\n\r\n// ============================================================================\r\n// Helper Functions\r\n// ============================================================================\r\n\r\nfunction isPlainObject(value: unknown): value is Record<string, unknown> {\r\n if (typeof value !== 'object' || value === null) return false;\r\n const proto = Object.getPrototypeOf(value);\r\n return proto === null || proto === Object.prototype;\r\n}\r\n\r\nfunction isSpecialValue(value: unknown): value is SerializedSpecialValue {\r\n return typeof value === 'object' && value !== null && '$$flight' in value;\r\n}\r\n\r\n// ============================================================================\r\n// Flight Element Builders\r\n// ============================================================================\r\n\r\n/**\r\n * Create a host element\r\n */\r\nexport function h(\r\n tag: string,\r\n props: Record<string, unknown> | null,\r\n ...children: unknown[]\r\n): FlightHostElement {\r\n const serializedProps: Record<string, SerializedValue> = {};\r\n\r\n if (props) {\r\n for (const [key, value] of Object.entries(props)) {\r\n if (key !== 'children') {\r\n serializedProps[key] = serialize(value);\r\n }\r\n }\r\n }\r\n\r\n return {\r\n $$type: 'host',\r\n tag,\r\n props: serializedProps,\r\n children: children.flat().map(child => toFlightElement(child)),\r\n };\r\n}\r\n\r\n/**\r\n * Create a text element\r\n */\r\nexport function text(value: string): FlightTextElement {\r\n return { $$type: 'text', value };\r\n}\r\n\r\n/**\r\n * Create a fragment\r\n */\r\nexport function fragment(...children: unknown[]): FlightFragmentElement {\r\n return {\r\n $$type: 'fragment',\r\n children: children.flat().map(child => toFlightElement(child)),\r\n };\r\n}\r\n\r\n/**\r\n * Create a suspense boundary\r\n */\r\nexport function suspense(\r\n id: string,\r\n fallback: FlightElement,\r\n children: FlightElement[]\r\n): FlightSuspenseElement {\r\n return { $$type: 'suspense', id, fallback, children };\r\n}\r\n\r\n/**\r\n * Create a client component reference\r\n */\r\nexport function clientRef(refId: string, ssrHtml?: string): FlightClientElement {\r\n return { $$type: 'client', ref: refId, ssr: ssrHtml };\r\n}\r\n\r\n/**\r\n * Convert any value to a FlightElement\r\n */\r\nexport function toFlightElement(value: unknown): FlightElement {\r\n if (value === null || value === undefined || typeof value === 'boolean') {\r\n return { $$type: 'null' };\r\n }\r\n if (typeof value === 'string' || typeof value === 'number') {\r\n return { $$type: 'text', value: String(value) };\r\n }\r\n if (isFlightElement(value)) {\r\n return value;\r\n }\r\n // Unknown - render as null\r\n return { $$type: 'null' };\r\n}\r\n\r\n/**\r\n * Type guard for FlightElement\r\n */\r\nexport function isFlightElement(value: unknown): value is FlightElement {\r\n return typeof value === 'object' && value !== null && '$$type' in value;\r\n}\r\n\r\n// ============================================================================\r\n// Chunk Builders\r\n// ============================================================================\r\n\r\nlet chunkIdCounter = 0;\r\n\r\n/**\r\n * Generate unique chunk ID\r\n */\r\nexport function generateChunkId(prefix = 'c'): string {\r\n return `${prefix}${chunkIdCounter++}`;\r\n}\r\n\r\n/**\r\n * Reset chunk ID counter (for testing)\r\n */\r\nexport function resetChunkIdCounter(): void {\r\n chunkIdCounter = 0;\r\n}\r\n\r\n/**\r\n * Create a server component chunk\r\n */\r\nexport function createServerChunk(\r\n id: string,\r\n tree: FlightElement,\r\n awaiting?: string[]\r\n): ServerComponentChunk {\r\n return {\r\n type: 'S',\r\n id,\r\n tree,\r\n awaiting,\r\n ts: Date.now(),\r\n };\r\n}\r\n\r\n/**\r\n * Create a client reference chunk\r\n */\r\nexport function createClientChunk(\r\n id: string,\r\n module: string,\r\n exportName: string,\r\n props: unknown,\r\n fallback?: string\r\n): ClientReferenceChunk {\r\n return {\r\n type: 'C',\r\n id,\r\n module,\r\n export: exportName,\r\n props: serialize(props),\r\n fallback,\r\n };\r\n}\r\n\r\n/**\r\n * Create a server reference (action) chunk\r\n */\r\nexport function createActionChunk(\r\n id: string,\r\n boundArgs?: unknown[]\r\n): ServerReferenceChunk {\r\n return {\r\n type: 'A',\r\n id,\r\n bound: boundArgs?.map(serialize),\r\n };\r\n}\r\n\r\n/**\r\n * Create an error chunk\r\n */\r\nexport function createErrorChunk(\r\n boundary: string,\r\n error: Error,\r\n includeStack = false\r\n): ErrorBoundaryChunk {\r\n return {\r\n type: 'E',\r\n boundary,\r\n message: error.message,\r\n digest: generateErrorDigest(error),\r\n stack: includeStack ? error.stack : undefined,\r\n };\r\n}\r\n\r\n/**\r\n * Create a hint chunk\r\n */\r\nexport function createHintChunk(\r\n hint: HintChunk['hint'],\r\n href: string,\r\n options?: { as?: HintChunk['as']; crossorigin?: HintChunk['crossorigin'] }\r\n): HintChunk {\r\n return {\r\n type: 'H',\r\n hint,\r\n href,\r\n ...options,\r\n };\r\n}\r\n\r\n/**\r\n * Generate error digest for correlation\r\n */\r\nfunction generateErrorDigest(error: Error): string {\r\n const str = `${error.name}:${error.message}:${Date.now()}`;\r\n // Simple hash for digest\r\n let hash = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const char = str.charCodeAt(i);\r\n hash = ((hash << 5) - hash) + char;\r\n hash = hash & hash;\r\n }\r\n return Math.abs(hash).toString(36);\r\n}\r\n\r\n// ============================================================================\r\n// Custom Errors\r\n// ============================================================================\r\n\r\n/**\r\n * Error thrown during serialization\r\n */\r\nexport class FlightSerializationError extends Error {\r\n constructor(message: string) {\r\n super(message);\r\n this.name = 'FlightSerializationError';\r\n }\r\n}\r\n\r\n/**\r\n * Error thrown during payload processing\r\n */\r\nexport class FlightPayloadError extends Error {\r\n constructor(message: string, public readonly chunk?: FlightChunk) {\r\n super(message);\r\n this.name = 'FlightPayloadError';\r\n }\r\n}\r\n"]}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
// src/rsc/adapters/vue.ts
|
|
2
|
+
var VUE_FRAGMENT = /* @__PURE__ */ Symbol.for("v-fgt");
|
|
3
|
+
var VUE_TEXT = /* @__PURE__ */ Symbol.for("v-txt");
|
|
4
|
+
var VUE_COMMENT = /* @__PURE__ */ Symbol.for("v-cmt");
|
|
5
|
+
var VUE_SUSPENSE = /* @__PURE__ */ Symbol.for("v-sus");
|
|
6
|
+
var VUE_TELEPORT = /* @__PURE__ */ Symbol.for("v-tel");
|
|
7
|
+
var CLIENT_REFERENCE = /* @__PURE__ */ Symbol.for("flight.client.reference");
|
|
8
|
+
function createVueAdapter(deps) {
|
|
9
|
+
const { Vue, renderToString } = deps || {};
|
|
10
|
+
return {
|
|
11
|
+
name: "vue",
|
|
12
|
+
isElement(value) {
|
|
13
|
+
if (Vue?.isVNode) {
|
|
14
|
+
return Vue.isVNode(value);
|
|
15
|
+
}
|
|
16
|
+
return typeof value === "object" && value !== null && value.__v_isVNode === true;
|
|
17
|
+
},
|
|
18
|
+
getElementType(element) {
|
|
19
|
+
const vnode = element;
|
|
20
|
+
const type = vnode.type;
|
|
21
|
+
if (typeof type === "string") {
|
|
22
|
+
return { kind: "host", tag: type };
|
|
23
|
+
}
|
|
24
|
+
if (typeof type === "symbol") {
|
|
25
|
+
if (type === VUE_FRAGMENT || type === Vue?.Fragment) {
|
|
26
|
+
return { kind: "fragment" };
|
|
27
|
+
}
|
|
28
|
+
if (type === VUE_TEXT || type === Vue?.Text) {
|
|
29
|
+
const children = vnode.children;
|
|
30
|
+
return {
|
|
31
|
+
kind: "text",
|
|
32
|
+
value: String(children ?? "")
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (type === VUE_COMMENT) {
|
|
36
|
+
return { kind: "null" };
|
|
37
|
+
}
|
|
38
|
+
if (type === VUE_SUSPENSE) {
|
|
39
|
+
return {
|
|
40
|
+
kind: "suspense",
|
|
41
|
+
fallback: vnode.props?.fallback
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
if (type === VUE_TELEPORT) {
|
|
45
|
+
return { kind: "fragment" };
|
|
46
|
+
}
|
|
47
|
+
return { kind: "null" };
|
|
48
|
+
}
|
|
49
|
+
if (typeof type === "object" && type !== null) {
|
|
50
|
+
const comp = type;
|
|
51
|
+
if (comp.__asyncLoader) {
|
|
52
|
+
return {
|
|
53
|
+
kind: "component",
|
|
54
|
+
fn: () => null,
|
|
55
|
+
name: comp.name || "AsyncComponent"
|
|
56
|
+
};
|
|
57
|
+
}
|
|
58
|
+
if (comp.setup || comp.render) {
|
|
59
|
+
return {
|
|
60
|
+
kind: "component",
|
|
61
|
+
fn: (_props) => {
|
|
62
|
+
return null;
|
|
63
|
+
},
|
|
64
|
+
name: comp.name || "VueComponent"
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
if (typeof type === "function") {
|
|
69
|
+
const fn = type;
|
|
70
|
+
return {
|
|
71
|
+
kind: "component",
|
|
72
|
+
fn,
|
|
73
|
+
name: fn.displayName || fn.__name || fn.name || "Component"
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
return { kind: "null" };
|
|
77
|
+
},
|
|
78
|
+
getProps(element) {
|
|
79
|
+
const vnode = element;
|
|
80
|
+
return vnode.props || {};
|
|
81
|
+
},
|
|
82
|
+
getChildren(element) {
|
|
83
|
+
const vnode = element;
|
|
84
|
+
const children = vnode.children;
|
|
85
|
+
if (children === void 0 || children === null) {
|
|
86
|
+
return [];
|
|
87
|
+
}
|
|
88
|
+
if (typeof children === "string" || typeof children === "number") {
|
|
89
|
+
return [children];
|
|
90
|
+
}
|
|
91
|
+
if (Array.isArray(children)) {
|
|
92
|
+
return children.flat();
|
|
93
|
+
}
|
|
94
|
+
if (typeof children === "object" && children !== null) {
|
|
95
|
+
const slots = children;
|
|
96
|
+
if (typeof slots.default === "function") {
|
|
97
|
+
return slots.default();
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
return [children];
|
|
101
|
+
},
|
|
102
|
+
getKey(element) {
|
|
103
|
+
const key = element.key;
|
|
104
|
+
return key !== null ? key : void 0;
|
|
105
|
+
},
|
|
106
|
+
isClientBoundary(component) {
|
|
107
|
+
if (typeof component !== "function" && typeof component !== "object") {
|
|
108
|
+
return false;
|
|
109
|
+
}
|
|
110
|
+
const comp = component;
|
|
111
|
+
if (comp.__flight_client === true) return true;
|
|
112
|
+
if (comp.$$typeof === CLIENT_REFERENCE) return true;
|
|
113
|
+
return false;
|
|
114
|
+
},
|
|
115
|
+
async renderToString(element) {
|
|
116
|
+
if (renderToString && Vue?.createSSRApp) {
|
|
117
|
+
const app = Vue.createSSRApp({
|
|
118
|
+
render: () => element
|
|
119
|
+
});
|
|
120
|
+
return renderToString(app);
|
|
121
|
+
}
|
|
122
|
+
throw new Error(
|
|
123
|
+
"renderToString not provided. Pass Vue and renderToString when creating the adapter: createVueAdapter({ Vue, renderToString })"
|
|
124
|
+
);
|
|
125
|
+
}
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
function createVueConsumer(deps, options = {}) {
|
|
129
|
+
const { Vue } = deps;
|
|
130
|
+
const { registry = /* @__PURE__ */ new Map() } = options;
|
|
131
|
+
return {
|
|
132
|
+
/**
|
|
133
|
+
* Register a client component
|
|
134
|
+
*/
|
|
135
|
+
register(id, loader) {
|
|
136
|
+
registry.set(id, loader);
|
|
137
|
+
},
|
|
138
|
+
/**
|
|
139
|
+
* Convert Flight elements to Vue VNodes
|
|
140
|
+
*/
|
|
141
|
+
toVueElement(element) {
|
|
142
|
+
switch (element.$$type) {
|
|
143
|
+
case "null":
|
|
144
|
+
return null;
|
|
145
|
+
case "text":
|
|
146
|
+
return element.value;
|
|
147
|
+
case "host": {
|
|
148
|
+
const children = element.children.map((c) => this.toVueElement(c));
|
|
149
|
+
return Vue.h(
|
|
150
|
+
element.tag,
|
|
151
|
+
{ ...element.props, key: element.key },
|
|
152
|
+
children
|
|
153
|
+
);
|
|
154
|
+
}
|
|
155
|
+
case "fragment": {
|
|
156
|
+
const children = element.children.map((c) => this.toVueElement(c));
|
|
157
|
+
return Vue.h(Vue.Fragment, null, children);
|
|
158
|
+
}
|
|
159
|
+
case "suspense": {
|
|
160
|
+
if (Vue.Suspense) {
|
|
161
|
+
const fallback = this.toVueElement(element.fallback);
|
|
162
|
+
const children2 = element.children.map((c) => this.toVueElement(c));
|
|
163
|
+
return Vue.h(Vue.Suspense, null, {
|
|
164
|
+
default: () => children2,
|
|
165
|
+
fallback: () => fallback
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
const children = element.children.map((c) => this.toVueElement(c));
|
|
169
|
+
return Vue.h(Vue.Fragment, null, children);
|
|
170
|
+
}
|
|
171
|
+
case "client": {
|
|
172
|
+
const loader = registry.get(element.ref);
|
|
173
|
+
if (!loader) {
|
|
174
|
+
console.warn(`[Flight] Client component not registered: ${element.ref}`);
|
|
175
|
+
if (element.ssr) {
|
|
176
|
+
return Vue.h("div", {
|
|
177
|
+
innerHTML: element.ssr
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
return null;
|
|
181
|
+
}
|
|
182
|
+
const AsyncComponent = {
|
|
183
|
+
async setup() {
|
|
184
|
+
const mod = await loader();
|
|
185
|
+
return () => Vue.h(mod.default ?? mod);
|
|
186
|
+
}
|
|
187
|
+
};
|
|
188
|
+
return Vue.h(AsyncComponent);
|
|
189
|
+
}
|
|
190
|
+
case "lazy": {
|
|
191
|
+
if (element.fallback) {
|
|
192
|
+
return this.toVueElement(element.fallback);
|
|
193
|
+
}
|
|
194
|
+
return Vue.h("div", { "data-flight-pending": element.id });
|
|
195
|
+
}
|
|
196
|
+
default:
|
|
197
|
+
return null;
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
function markAsVueClientComponent(component, moduleId, exportName = "default") {
|
|
203
|
+
const marked = component;
|
|
204
|
+
marked.$$typeof = CLIENT_REFERENCE;
|
|
205
|
+
marked.__flight_client = true;
|
|
206
|
+
marked.__flight_module = moduleId;
|
|
207
|
+
marked.__flight_export = exportName;
|
|
208
|
+
return marked;
|
|
209
|
+
}
|
|
210
|
+
|
|
211
|
+
export { createVueAdapter, createVueConsumer, markAsVueClientComponent };
|
|
212
|
+
//# sourceMappingURL=chunk-N3TUOEV4.js.map
|
|
213
|
+
//# sourceMappingURL=chunk-N3TUOEV4.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/rsc/adapters/vue.ts"],"names":["children"],"mappings":"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","file":"chunk-N3TUOEV4.js","sourcesContent":["/**\r\n * @flight-framework/core - Vue UI Adapter\r\n * \r\n * Adapter for using Vue 3 with Flight Server Components.\r\n * Enables Flight to render Vue components without tight coupling.\r\n * \r\n * Philosophy: Zero lock-in - Vue is optional, user decides.\r\n * \r\n * @module @flight-framework/core/rsc/adapters/vue\r\n */\r\n\r\nimport type { UIAdapter, ElementTypeInfo } from '../renderer.js';\r\n\r\n// ============================================================================\r\n// Vue Symbols (Vue 3 internal markers)\r\n// ============================================================================\r\n\r\nconst VUE_FRAGMENT = Symbol.for('v-fgt');\r\nconst VUE_TEXT = Symbol.for('v-txt');\r\nconst VUE_COMMENT = Symbol.for('v-cmt');\r\nconst VUE_SUSPENSE = Symbol.for('v-sus');\r\nconst VUE_TELEPORT = Symbol.for('v-tel');\r\n\r\n// Flight reference symbols\r\nconst CLIENT_REFERENCE = Symbol.for('flight.client.reference');\r\n\r\n// ============================================================================\r\n// Types\r\n// ============================================================================\r\n\r\n/**\r\n * Minimal Vue VNode interface\r\n */\r\ninterface VueVNode {\r\n __v_isVNode?: boolean;\r\n type: unknown;\r\n props: Record<string, unknown> | null;\r\n children: unknown;\r\n key: string | number | null;\r\n component?: unknown;\r\n shapeFlag?: number;\r\n}\r\n\r\n/**\r\n * Vue dependencies (user provides these)\r\n */\r\nexport interface VueDependencies {\r\n /** Vue module */\r\n Vue: {\r\n h: (type: unknown, props?: unknown, children?: unknown) => VueVNode;\r\n isVNode: (value: unknown) => boolean;\r\n createSSRApp?: (rootComponent: unknown) => unknown;\r\n Fragment?: symbol;\r\n Suspense?: unknown;\r\n Text?: symbol;\r\n };\r\n /** renderToString from vue/server-renderer (optional - for SSR) */\r\n renderToString?: (app: unknown) => Promise<string>;\r\n}\r\n\r\n// ============================================================================\r\n// Adapter Implementation\r\n// ============================================================================\r\n\r\n/**\r\n * Create Vue UI Adapter\r\n * \r\n * @example\r\n * ```typescript\r\n * import { createVueAdapter } from '@flight-framework/core/rsc/adapters/vue';\r\n * import * as Vue from 'vue';\r\n * import { renderToString } from 'vue/server-renderer';\r\n * \r\n * const adapter = createVueAdapter({\r\n * Vue,\r\n * renderToString,\r\n * });\r\n * \r\n * const renderer = createRenderer(adapter);\r\n * ```\r\n */\r\nexport function createVueAdapter(deps?: VueDependencies): UIAdapter {\r\n const { Vue, renderToString } = deps || {};\r\n\r\n return {\r\n name: 'vue',\r\n\r\n isElement(value: unknown): boolean {\r\n if (Vue?.isVNode) {\r\n return Vue.isVNode(value);\r\n }\r\n // Fallback: check for __v_isVNode marker\r\n return (\r\n typeof value === 'object' &&\r\n value !== null &&\r\n (value as VueVNode).__v_isVNode === true\r\n );\r\n },\r\n\r\n getElementType(element: unknown): ElementTypeInfo {\r\n const vnode = element as VueVNode;\r\n const type = vnode.type;\r\n\r\n // String = host element (div, span, etc.)\r\n if (typeof type === 'string') {\r\n return { kind: 'host', tag: type };\r\n }\r\n\r\n // Symbol types\r\n if (typeof type === 'symbol') {\r\n // Fragment\r\n if (type === VUE_FRAGMENT || type === Vue?.Fragment) {\r\n return { kind: 'fragment' };\r\n }\r\n\r\n // Text\r\n if (type === VUE_TEXT || type === Vue?.Text) {\r\n const children = vnode.children;\r\n return {\r\n kind: 'text',\r\n value: String(children ?? '')\r\n };\r\n }\r\n\r\n // Comment\r\n if (type === VUE_COMMENT) {\r\n return { kind: 'null' };\r\n }\r\n\r\n // Suspense\r\n if (type === VUE_SUSPENSE) {\r\n return {\r\n kind: 'suspense',\r\n fallback: vnode.props?.fallback\r\n };\r\n }\r\n\r\n // Teleport (treat as fragment for RSC)\r\n if (type === VUE_TELEPORT) {\r\n return { kind: 'fragment' };\r\n }\r\n\r\n return { kind: 'null' };\r\n }\r\n\r\n // Object component (Options API or async component)\r\n if (typeof type === 'object' && type !== null) {\r\n const comp = type as {\r\n name?: string;\r\n setup?: unknown;\r\n render?: unknown;\r\n __asyncLoader?: unknown;\r\n };\r\n\r\n // Async component\r\n if (comp.__asyncLoader) {\r\n return {\r\n kind: 'component',\r\n fn: () => null,\r\n name: comp.name || 'AsyncComponent'\r\n };\r\n }\r\n\r\n // Options API component\r\n if (comp.setup || comp.render) {\r\n return {\r\n kind: 'component',\r\n fn: (_props) => {\r\n // Vue components need to be rendered differently\r\n // This is a placeholder - actual rendering uses renderToString\r\n return null;\r\n },\r\n name: comp.name || 'VueComponent',\r\n };\r\n }\r\n }\r\n\r\n // Function component (Composition API)\r\n if (typeof type === 'function') {\r\n const fn = type as ((props: Record<string, unknown>) => unknown) & {\r\n displayName?: string;\r\n name?: string;\r\n __name?: string;\r\n };\r\n return {\r\n kind: 'component',\r\n fn,\r\n name: fn.displayName || fn.__name || fn.name || 'Component'\r\n };\r\n }\r\n\r\n return { kind: 'null' };\r\n },\r\n\r\n getProps(element: unknown): Record<string, unknown> {\r\n const vnode = element as VueVNode;\r\n return vnode.props || {};\r\n },\r\n\r\n getChildren(element: unknown): unknown[] {\r\n const vnode = element as VueVNode;\r\n const children = vnode.children;\r\n\r\n if (children === undefined || children === null) {\r\n return [];\r\n }\r\n\r\n // String children\r\n if (typeof children === 'string' || typeof children === 'number') {\r\n return [children];\r\n }\r\n\r\n // Array children\r\n if (Array.isArray(children)) {\r\n return children.flat();\r\n }\r\n\r\n // Slots object\r\n if (typeof children === 'object' && children !== null) {\r\n const slots = children as Record<string, () => unknown[]>;\r\n if (typeof slots.default === 'function') {\r\n return slots.default();\r\n }\r\n }\r\n\r\n return [children];\r\n },\r\n\r\n getKey(element: unknown): string | number | undefined {\r\n const key = (element as VueVNode).key;\r\n return key !== null ? key : undefined;\r\n },\r\n\r\n isClientBoundary(component: unknown): boolean {\r\n if (typeof component !== 'function' && typeof component !== 'object') {\r\n return false;\r\n }\r\n\r\n const comp = component as {\r\n $$typeof?: symbol;\r\n __flight_client?: boolean;\r\n };\r\n\r\n // Check for Flight client marker\r\n if (comp.__flight_client === true) return true;\r\n\r\n // Check for client reference symbol\r\n if (comp.$$typeof === CLIENT_REFERENCE) return true;\r\n\r\n return false;\r\n },\r\n\r\n async renderToString(element: unknown): Promise<string> {\r\n if (renderToString && Vue?.createSSRApp) {\r\n // Create SSR app wrapper\r\n const app = Vue.createSSRApp({\r\n render: () => element\r\n });\r\n return renderToString(app);\r\n }\r\n throw new Error(\r\n 'renderToString not provided. Pass Vue and renderToString when creating the adapter: ' +\r\n 'createVueAdapter({ Vue, renderToString })'\r\n );\r\n },\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// Vue Client Consumer\r\n// ============================================================================\r\n\r\n/**\r\n * Options for Vue consumer\r\n */\r\nexport interface VueConsumerOptions {\r\n /** Registry of client components */\r\n registry?: Map<string, () => Promise<unknown>>;\r\n}\r\n\r\n/**\r\n * Create a Vue client-side consumer for Flight payloads\r\n */\r\nexport function createVueConsumer(deps: VueDependencies, options: VueConsumerOptions = {}) {\r\n const { Vue } = deps;\r\n const { registry = new Map() } = options;\r\n\r\n return {\r\n /**\r\n * Register a client component\r\n */\r\n register(id: string, loader: () => Promise<unknown>): void {\r\n registry.set(id, loader);\r\n },\r\n\r\n /**\r\n * Convert Flight elements to Vue VNodes\r\n */\r\n toVueElement(element: import('../payload.js').FlightElement): unknown {\r\n switch (element.$$type) {\r\n case 'null':\r\n return null;\r\n\r\n case 'text':\r\n return element.value;\r\n\r\n case 'host': {\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(\r\n element.tag,\r\n { ...element.props, key: element.key },\r\n children\r\n );\r\n }\r\n\r\n case 'fragment': {\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(Vue.Fragment!, null, children);\r\n }\r\n\r\n case 'suspense': {\r\n if (Vue.Suspense) {\r\n const fallback = this.toVueElement(element.fallback);\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(Vue.Suspense, null, {\r\n default: () => children,\r\n fallback: () => fallback,\r\n });\r\n }\r\n // Fallback: render children directly\r\n const children = element.children.map(c => this.toVueElement(c));\r\n return Vue.h(Vue.Fragment!, null, children);\r\n }\r\n\r\n case 'client': {\r\n const loader = registry.get(element.ref);\r\n if (!loader) {\r\n console.warn(`[Flight] Client component not registered: ${element.ref}`);\r\n if (element.ssr) {\r\n return Vue.h('div', {\r\n innerHTML: element.ssr\r\n });\r\n }\r\n return null;\r\n }\r\n\r\n // Create async component\r\n const AsyncComponent = {\r\n async setup() {\r\n const mod = await loader() as { default?: unknown };\r\n return () => Vue.h(mod.default ?? mod as unknown);\r\n }\r\n };\r\n\r\n return Vue.h(AsyncComponent);\r\n }\r\n\r\n case 'lazy': {\r\n if (element.fallback) {\r\n return this.toVueElement(element.fallback);\r\n }\r\n return Vue.h('div', { 'data-flight-pending': element.id });\r\n }\r\n\r\n default:\r\n return null;\r\n }\r\n },\r\n };\r\n}\r\n\r\n// ============================================================================\r\n// Utility Types\r\n// ============================================================================\r\n\r\n/**\r\n * Type helper for Vue Server Component\r\n */\r\nexport type VueServerComponent<P = Record<string, unknown>> = (\r\n props: P,\r\n ctx: import('../context.js').ServerContext\r\n) => Promise<VueVNode> | VueVNode;\r\n\r\n/**\r\n * Mark a Vue component as a client component\r\n */\r\nexport function markAsVueClientComponent<T extends object>(\r\n component: T,\r\n moduleId: string,\r\n exportName = 'default'\r\n): T {\r\n const marked = component as T & {\r\n $$typeof: symbol;\r\n __flight_client: boolean;\r\n __flight_module: string;\r\n __flight_export: string;\r\n };\r\n\r\n marked.$$typeof = CLIENT_REFERENCE;\r\n marked.__flight_client = true;\r\n marked.__flight_module = moduleId;\r\n marked.__flight_export = exportName;\r\n\r\n return marked;\r\n}\r\n"]}
|
|
@@ -0,0 +1,300 @@
|
|
|
1
|
+
import { analyzeModule, hasUseClientDirective, hasUseServerDirective, detectInlineServerActions } from './chunk-PDW5WCMW.js';
|
|
2
|
+
|
|
3
|
+
// src/rsc/plugins/rollup.ts
|
|
4
|
+
function flightRSCRollup(options = {}) {
|
|
5
|
+
const {
|
|
6
|
+
include = /\.(tsx?|jsx?)$/,
|
|
7
|
+
exclude = /node_modules/,
|
|
8
|
+
actionsEndpoint = "/_flight/action",
|
|
9
|
+
clientManifest = ".flight/client-manifest.json",
|
|
10
|
+
serverManifest = ".flight/server-manifest.json",
|
|
11
|
+
ssr = false,
|
|
12
|
+
dev = false
|
|
13
|
+
} = options;
|
|
14
|
+
const state = {
|
|
15
|
+
clientModules: /* @__PURE__ */ new Map(),
|
|
16
|
+
serverActions: /* @__PURE__ */ new Map()
|
|
17
|
+
};
|
|
18
|
+
const shouldInclude = (id) => {
|
|
19
|
+
if (typeof include === "function") return include(id);
|
|
20
|
+
return include.test(id);
|
|
21
|
+
};
|
|
22
|
+
const shouldExclude = (id) => {
|
|
23
|
+
if (typeof exclude === "function") return exclude(id);
|
|
24
|
+
return exclude.test(id);
|
|
25
|
+
};
|
|
26
|
+
return {
|
|
27
|
+
name: "flight-rsc",
|
|
28
|
+
// ================================================================
|
|
29
|
+
// buildStart: Reset state
|
|
30
|
+
// ================================================================
|
|
31
|
+
buildStart() {
|
|
32
|
+
state.clientModules.clear();
|
|
33
|
+
state.serverActions.clear();
|
|
34
|
+
if (dev) {
|
|
35
|
+
console.log(`[Flight RSC Rollup] Build started (SSR: ${ssr})`);
|
|
36
|
+
}
|
|
37
|
+
},
|
|
38
|
+
// ================================================================
|
|
39
|
+
// transform: Analyze and transform modules
|
|
40
|
+
// ================================================================
|
|
41
|
+
transform(code, id) {
|
|
42
|
+
if (!shouldInclude(id) || shouldExclude(id)) {
|
|
43
|
+
return null;
|
|
44
|
+
}
|
|
45
|
+
const analysis = analyzeModule(code, id);
|
|
46
|
+
const moduleId = createModuleId(id);
|
|
47
|
+
if (analysis.fileDirective === "client") {
|
|
48
|
+
state.clientModules.set(id, {
|
|
49
|
+
id: moduleId,
|
|
50
|
+
file: id,
|
|
51
|
+
exports: analysis.clientComponents
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
if (analysis.fileDirective === "server" || analysis.serverActions.length > 0) {
|
|
55
|
+
state.serverActions.set(id, {
|
|
56
|
+
id: moduleId,
|
|
57
|
+
file: id,
|
|
58
|
+
exports: analysis.serverActions.length > 0 ? analysis.serverActions : extractExportNames(code)
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
if (ssr) {
|
|
62
|
+
if (hasUseClientDirective(code)) {
|
|
63
|
+
return {
|
|
64
|
+
code: transformClientForSSR(code, moduleId),
|
|
65
|
+
map: null
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
} else {
|
|
69
|
+
if (hasUseServerDirective(code)) {
|
|
70
|
+
return {
|
|
71
|
+
code: transformServerForClient(code, moduleId, actionsEndpoint),
|
|
72
|
+
map: null
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
const inlineActions = detectInlineServerActions(code);
|
|
76
|
+
if (inlineActions.length > 0) {
|
|
77
|
+
return {
|
|
78
|
+
code: transformInlineActions(code, moduleId, inlineActions, actionsEndpoint),
|
|
79
|
+
map: null
|
|
80
|
+
};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
},
|
|
85
|
+
// ================================================================
|
|
86
|
+
// generateBundle: Emit manifests
|
|
87
|
+
// ================================================================
|
|
88
|
+
generateBundle() {
|
|
89
|
+
if (state.clientModules.size > 0) {
|
|
90
|
+
const manifest = Object.fromEntries(state.clientModules);
|
|
91
|
+
this.emitFile({
|
|
92
|
+
type: "asset",
|
|
93
|
+
fileName: clientManifest,
|
|
94
|
+
source: JSON.stringify(manifest, null, 2)
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
if (state.serverActions.size > 0) {
|
|
98
|
+
const manifest = Object.fromEntries(state.serverActions);
|
|
99
|
+
this.emitFile({
|
|
100
|
+
type: "asset",
|
|
101
|
+
fileName: serverManifest,
|
|
102
|
+
source: JSON.stringify(manifest, null, 2)
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (dev) {
|
|
106
|
+
console.log(`[Flight RSC Rollup] Client modules: ${state.clientModules.size}`);
|
|
107
|
+
console.log(`[Flight RSC Rollup] Server actions: ${state.serverActions.size}`);
|
|
108
|
+
}
|
|
109
|
+
},
|
|
110
|
+
// ================================================================
|
|
111
|
+
// buildEnd: Cleanup
|
|
112
|
+
// ================================================================
|
|
113
|
+
buildEnd(error) {
|
|
114
|
+
if (error && dev) {
|
|
115
|
+
console.error("[Flight RSC Rollup] Build failed:", error.message);
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
function transformClientForSSR(code, moduleId) {
|
|
121
|
+
const exports$1 = extractExportNames(code);
|
|
122
|
+
let transformed = `
|
|
123
|
+
// Flight RSC: Client Component Reference (Rollup)
|
|
124
|
+
// Original module: ${moduleId}
|
|
125
|
+
|
|
126
|
+
const __flight_module_id = ${JSON.stringify(moduleId)};
|
|
127
|
+
|
|
128
|
+
`;
|
|
129
|
+
for (const exportName of exports$1) {
|
|
130
|
+
if (exportName === "default") {
|
|
131
|
+
transformed += `
|
|
132
|
+
const __flight_default = Object.assign(
|
|
133
|
+
function() {
|
|
134
|
+
throw new Error('Client Component cannot be called on the server. Module: ' + __flight_module_id);
|
|
135
|
+
},
|
|
136
|
+
{
|
|
137
|
+
$$typeof: Symbol.for('flight.client.reference'),
|
|
138
|
+
$$id: __flight_module_id + '#default',
|
|
139
|
+
$$async: false,
|
|
140
|
+
__flight_client: true,
|
|
141
|
+
__flight_module: __flight_module_id,
|
|
142
|
+
__flight_export: 'default',
|
|
143
|
+
}
|
|
144
|
+
);
|
|
145
|
+
export default __flight_default;
|
|
146
|
+
`;
|
|
147
|
+
} else {
|
|
148
|
+
transformed += `
|
|
149
|
+
export const ${exportName} = Object.assign(
|
|
150
|
+
function() {
|
|
151
|
+
throw new Error('Client Component cannot be called on the server. Module: ' + __flight_module_id);
|
|
152
|
+
},
|
|
153
|
+
{
|
|
154
|
+
$$typeof: Symbol.for('flight.client.reference'),
|
|
155
|
+
$$id: __flight_module_id + '#${exportName}',
|
|
156
|
+
$$async: false,
|
|
157
|
+
__flight_client: true,
|
|
158
|
+
__flight_module: __flight_module_id,
|
|
159
|
+
__flight_export: '${exportName}',
|
|
160
|
+
}
|
|
161
|
+
);
|
|
162
|
+
`;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return transformed;
|
|
166
|
+
}
|
|
167
|
+
function transformServerForClient(code, moduleId, endpoint) {
|
|
168
|
+
const exports$1 = extractExportNames(code);
|
|
169
|
+
let transformed = `
|
|
170
|
+
// Flight RSC: Server Actions RPC Proxies (Rollup)
|
|
171
|
+
// Original module: ${moduleId}
|
|
172
|
+
|
|
173
|
+
const __flight_endpoint = ${JSON.stringify(endpoint)};
|
|
174
|
+
const __flight_module_id = ${JSON.stringify(moduleId)};
|
|
175
|
+
|
|
176
|
+
async function __flight_rpc(actionId, args) {
|
|
177
|
+
const response = await fetch(__flight_endpoint, {
|
|
178
|
+
method: 'POST',
|
|
179
|
+
headers: {
|
|
180
|
+
'Content-Type': 'application/json',
|
|
181
|
+
'X-Flight-Action': actionId,
|
|
182
|
+
},
|
|
183
|
+
body: JSON.stringify({ actionId, args }),
|
|
184
|
+
});
|
|
185
|
+
|
|
186
|
+
if (!response.ok) {
|
|
187
|
+
const error = await response.json().catch(() => ({ message: 'Server action failed' }));
|
|
188
|
+
throw new Error(error.message || 'Server action failed');
|
|
189
|
+
}
|
|
190
|
+
|
|
191
|
+
return response.json();
|
|
192
|
+
}
|
|
193
|
+
|
|
194
|
+
`;
|
|
195
|
+
for (const exportName of exports$1) {
|
|
196
|
+
const actionId = `${moduleId}#${exportName}`;
|
|
197
|
+
if (exportName === "default") {
|
|
198
|
+
transformed += `
|
|
199
|
+
export default async function(...args) {
|
|
200
|
+
return __flight_rpc(${JSON.stringify(actionId)}, args);
|
|
201
|
+
}
|
|
202
|
+
`;
|
|
203
|
+
} else {
|
|
204
|
+
transformed += `
|
|
205
|
+
export async function ${exportName}(...args) {
|
|
206
|
+
return __flight_rpc(${JSON.stringify(actionId)}, args);
|
|
207
|
+
}
|
|
208
|
+
`;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
return transformed;
|
|
212
|
+
}
|
|
213
|
+
function transformInlineActions(code, moduleId, actions, endpoint) {
|
|
214
|
+
let transformed = code;
|
|
215
|
+
const rpcHelper = `
|
|
216
|
+
// Flight RSC: Inline Server Action Helpers (Rollup)
|
|
217
|
+
const __flight_inline_endpoint = ${JSON.stringify(endpoint)};
|
|
218
|
+
async function __flight_inline_rpc(actionId, args) {
|
|
219
|
+
const response = await fetch(__flight_inline_endpoint, {
|
|
220
|
+
method: 'POST',
|
|
221
|
+
headers: { 'Content-Type': 'application/json', 'X-Flight-Action': actionId },
|
|
222
|
+
body: JSON.stringify({ actionId, args }),
|
|
223
|
+
});
|
|
224
|
+
if (!response.ok) throw new Error('Server action failed');
|
|
225
|
+
return response.json();
|
|
226
|
+
}
|
|
227
|
+
`;
|
|
228
|
+
const lastImportMatch = code.match(/^import\s.+$/gm);
|
|
229
|
+
if (lastImportMatch) {
|
|
230
|
+
const lastImport = lastImportMatch[lastImportMatch.length - 1] || "";
|
|
231
|
+
const insertPos = code.indexOf(lastImport) + lastImport.length;
|
|
232
|
+
transformed = code.slice(0, insertPos) + "\n" + rpcHelper + code.slice(insertPos);
|
|
233
|
+
} else {
|
|
234
|
+
transformed = rpcHelper + code;
|
|
235
|
+
}
|
|
236
|
+
for (const actionName of actions) {
|
|
237
|
+
const actionId = `${moduleId}#${actionName}`;
|
|
238
|
+
const patterns = [
|
|
239
|
+
new RegExp(
|
|
240
|
+
`async\\s+function\\s+${actionName}\\s*\\([^)]*\\)\\s*\\{[\\s\\S]*?['"]use server['"][\\s\\S]*?\\}`,
|
|
241
|
+
"g"
|
|
242
|
+
),
|
|
243
|
+
new RegExp(
|
|
244
|
+
`const\\s+${actionName}\\s*=\\s*async\\s*\\([^)]*\\)\\s*=>\\s*\\{[\\s\\S]*?['"]use server['"][\\s\\S]*?\\}`,
|
|
245
|
+
"g"
|
|
246
|
+
)
|
|
247
|
+
];
|
|
248
|
+
for (const pattern of patterns) {
|
|
249
|
+
transformed = transformed.replace(
|
|
250
|
+
pattern,
|
|
251
|
+
`async function ${actionName}(...args) { return __flight_inline_rpc(${JSON.stringify(actionId)}, args); }`
|
|
252
|
+
);
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
return transformed;
|
|
256
|
+
}
|
|
257
|
+
function createModuleId(filePath) {
|
|
258
|
+
let id = filePath.replace(/\\/g, "/");
|
|
259
|
+
const prefixes = ["/src/", "src/", "packages/", "/packages/"];
|
|
260
|
+
for (const prefix of prefixes) {
|
|
261
|
+
const idx = id.indexOf(prefix);
|
|
262
|
+
if (idx !== -1) {
|
|
263
|
+
id = id.slice(idx);
|
|
264
|
+
break;
|
|
265
|
+
}
|
|
266
|
+
}
|
|
267
|
+
if (!id.startsWith("/")) {
|
|
268
|
+
id = "/" + id;
|
|
269
|
+
}
|
|
270
|
+
return id;
|
|
271
|
+
}
|
|
272
|
+
function extractExportNames(code) {
|
|
273
|
+
const exports$1 = [];
|
|
274
|
+
if (/export\s+default\s+/.test(code)) {
|
|
275
|
+
exports$1.push("default");
|
|
276
|
+
}
|
|
277
|
+
const namedPattern = /export\s+(?:async\s+)?(?:function|const|let|var|class)\s+(\w+)/g;
|
|
278
|
+
let match;
|
|
279
|
+
while ((match = namedPattern.exec(code)) !== null) {
|
|
280
|
+
if (match[1] && match[1] !== "default") {
|
|
281
|
+
exports$1.push(match[1]);
|
|
282
|
+
}
|
|
283
|
+
}
|
|
284
|
+
const bracketPattern = /export\s*\{\s*([^}]+)\s*\}/g;
|
|
285
|
+
while ((match = bracketPattern.exec(code)) !== null) {
|
|
286
|
+
if (match[1]) {
|
|
287
|
+
const names = match[1].split(",").map((n) => {
|
|
288
|
+
const parts = n.trim().split(/\s+as\s+/);
|
|
289
|
+
return parts[parts.length - 1]?.trim() || "";
|
|
290
|
+
});
|
|
291
|
+
exports$1.push(...names.filter((n) => n && n !== "default"));
|
|
292
|
+
}
|
|
293
|
+
}
|
|
294
|
+
return [...new Set(exports$1)];
|
|
295
|
+
}
|
|
296
|
+
var rollup_default = flightRSCRollup;
|
|
297
|
+
|
|
298
|
+
export { flightRSCRollup, rollup_default };
|
|
299
|
+
//# sourceMappingURL=chunk-NWMJYTMB.js.map
|
|
300
|
+
//# sourceMappingURL=chunk-NWMJYTMB.js.map
|