diff options
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/schema.d.ts | 183 | ||||
-rw-r--r-- | src/api/schema.js | 757 | ||||
-rw-r--r-- | src/api/schema.peechy | 132 | ||||
-rw-r--r-- | src/api/schema.zig | 3487 |
4 files changed, 3084 insertions, 1475 deletions
diff --git a/src/api/schema.d.ts b/src/api/schema.d.ts index fc03c82b0..d7e66820e 100644 --- a/src/api/schema.d.ts +++ b/src/api/schema.d.ts @@ -37,6 +37,69 @@ type uint32 = number; 7: "json", json: "json" } + export enum FrameworkEntryPointType { + client = 1, + server = 2, + fallback = 3 + } + export const FrameworkEntryPointTypeKeys = { + 1: "client", + client: "client", + 2: "server", + server: "server", + 3: "fallback", + fallback: "fallback" + } + export enum StackFrameScope { + Eval = 1, + Module = 2, + Function = 3, + Global = 4, + Wasm = 5, + Constructor = 6 + } + export const StackFrameScopeKeys = { + 1: "Eval", + Eval: "Eval", + 2: "Module", + Module: "Module", + 3: "Function", + Function: "Function", + 4: "Global", + Global: "Global", + 5: "Wasm", + Wasm: "Wasm", + 6: "Constructor", + Constructor: "Constructor" + } + export enum FallbackStep { + ssr_disabled = 1, + create_vm = 2, + configure_router = 3, + configure_defines = 4, + resolve_entry_point = 5, + load_entry_point = 6, + eval_entry_point = 7, + fetch_event_handler = 8 + } + export const FallbackStepKeys = { + 1: "ssr_disabled", + ssr_disabled: "ssr_disabled", + 2: "create_vm", + create_vm: "create_vm", + 3: "configure_router", + configure_router: "configure_router", + 4: "configure_defines", + configure_defines: "configure_defines", + 5: "resolve_entry_point", + resolve_entry_point: "resolve_entry_point", + 6: "load_entry_point", + load_entry_point: "load_entry_point", + 7: "eval_entry_point", + eval_entry_point: "eval_entry_point", + 8: "fetch_event_handler", + fetch_event_handler: "fetch_event_handler" + } export enum ResolveMode { disable = 1, lazy = 2, @@ -132,13 +195,13 @@ type uint32 = number; 2: "fail", fail: "fail" } - export enum MessageKind { + export enum MessageLevel { err = 1, warn = 2, note = 3, debug = 4 } - export const MessageKindKeys = { + export const MessageLevelKeys = { 1: "err", err: "err", 2: "warn", @@ -193,6 +256,62 @@ type uint32 = number; 2: "manifest", manifest: "manifest" } + export interface StackFrame { + function_name: string; + file: string; + position: StackFramePosition; + scope: StackFrameScope; + } + + export interface StackFramePosition { + source_offset: int32; + line: int32; + line_start: int32; + line_stop: int32; + column_start: int32; + column_stop: int32; + expression_start: int32; + expression_stop: int32; + } + + export interface SourceLine { + line: int32; + text: string; + } + + export interface StackTrace { + source_lines: SourceLine[]; + frames: StackFrame[]; + } + + export interface JSException { + name?: string; + message?: string; + runtime_type?: uint16; + code?: uint8; + stack?: StackTrace; + } + + export interface Problems { + code: uint16; + name: string; + exceptions: JSException[]; + build: Log; + } + + export interface Router { + routes: string[]; + route: int32; + params: StringMap; + } + + export interface FallbackMessageContainer { + message?: string; + router?: Router; + reason?: FallbackStep; + problems?: Problems; + } + export interface JSX { factory: string; runtime: JSXRuntime; @@ -275,20 +394,34 @@ type uint32 = number; export interface FrameworkConfig { package?: string; - client?: string; - server?: string; + client?: FrameworkEntryPointMessage; + server?: FrameworkEntryPointMessage; + fallback?: FrameworkEntryPointMessage; development?: boolean; - client_env?: EnvConfig; - server_env?: EnvConfig; client_css_in_js?: CSSInJSBehavior; } + export interface FrameworkEntryPoint { + kind: FrameworkEntryPointType; + path: string; + env: LoadedEnvConfig; + } + + export interface FrameworkEntryPointMap { + client?: FrameworkEntryPoint; + server?: FrameworkEntryPoint; + fallback?: FrameworkEntryPoint; + } + + export interface FrameworkEntryPointMessage { + path?: string; + env?: EnvConfig; + } + export interface LoadedFramework { - entry_point: string; package: string; development: boolean; - client: boolean; - env: LoadedEnvConfig; + entry_points: FrameworkEntryPointMap; client_css_in_js: CSSInJSBehavior; } @@ -372,10 +505,16 @@ type uint32 = number; location?: Location; } + export interface MessageMeta { + resolve?: string; + build?: boolean; + } + export interface Message { - kind: MessageKind; + level: MessageLevel; data: MessageData; notes: MessageData[]; + on: MessageMeta; } export interface Log { @@ -461,6 +600,22 @@ type uint32 = number; log: Log; } + export declare function encodeStackFrame(message: StackFrame, bb: ByteBuffer): void; + export declare function decodeStackFrame(buffer: ByteBuffer): StackFrame; + export declare function encodeStackFramePosition(message: StackFramePosition, bb: ByteBuffer): void; + export declare function decodeStackFramePosition(buffer: ByteBuffer): StackFramePosition; + export declare function encodeSourceLine(message: SourceLine, bb: ByteBuffer): void; + export declare function decodeSourceLine(buffer: ByteBuffer): SourceLine; + export declare function encodeStackTrace(message: StackTrace, bb: ByteBuffer): void; + export declare function decodeStackTrace(buffer: ByteBuffer): StackTrace; + export declare function encodeJSException(message: JSException, bb: ByteBuffer): void; + export declare function decodeJSException(buffer: ByteBuffer): JSException; + export declare function encodeProblems(message: Problems, bb: ByteBuffer): void; + export declare function decodeProblems(buffer: ByteBuffer): Problems; + export declare function encodeRouter(message: Router, bb: ByteBuffer): void; + export declare function decodeRouter(buffer: ByteBuffer): Router; + export declare function encodeFallbackMessageContainer(message: FallbackMessageContainer, bb: ByteBuffer): void; + export declare function decodeFallbackMessageContainer(buffer: ByteBuffer): FallbackMessageContainer; export declare function encodeJSX(message: JSX, bb: ByteBuffer): void; export declare function decodeJSX(buffer: ByteBuffer): JSX; export declare function encodeStringPointer(message: StringPointer, bb: ByteBuffer): void; @@ -487,6 +642,12 @@ type uint32 = number; export declare function decodeLoadedEnvConfig(buffer: ByteBuffer): LoadedEnvConfig; export declare function encodeFrameworkConfig(message: FrameworkConfig, bb: ByteBuffer): void; export declare function decodeFrameworkConfig(buffer: ByteBuffer): FrameworkConfig; + export declare function encodeFrameworkEntryPoint(message: FrameworkEntryPoint, bb: ByteBuffer): void; + export declare function decodeFrameworkEntryPoint(buffer: ByteBuffer): FrameworkEntryPoint; + export declare function encodeFrameworkEntryPointMap(message: FrameworkEntryPointMap, bb: ByteBuffer): void; + export declare function decodeFrameworkEntryPointMap(buffer: ByteBuffer): FrameworkEntryPointMap; + export declare function encodeFrameworkEntryPointMessage(message: FrameworkEntryPointMessage, bb: ByteBuffer): void; + export declare function decodeFrameworkEntryPointMessage(buffer: ByteBuffer): FrameworkEntryPointMessage; export declare function encodeLoadedFramework(message: LoadedFramework, bb: ByteBuffer): void; export declare function decodeLoadedFramework(buffer: ByteBuffer): LoadedFramework; export declare function encodeLoadedRouteConfig(message: LoadedRouteConfig, bb: ByteBuffer): void; @@ -507,6 +668,8 @@ type uint32 = number; export declare function decodeLocation(buffer: ByteBuffer): Location; export declare function encodeMessageData(message: MessageData, bb: ByteBuffer): void; export declare function decodeMessageData(buffer: ByteBuffer): MessageData; + export declare function encodeMessageMeta(message: MessageMeta, bb: ByteBuffer): void; + export declare function decodeMessageMeta(buffer: ByteBuffer): MessageMeta; export declare function encodeMessage(message: Message, bb: ByteBuffer): void; export declare function decodeMessage(buffer: ByteBuffer): Message; export declare function encodeLog(message: Log, bb: ByteBuffer): void; diff --git a/src/api/schema.js b/src/api/schema.js index 0ae493e20..73e7e20c7 100644 --- a/src/api/schema.js +++ b/src/api/schema.js @@ -30,6 +30,490 @@ const LoaderKeys = { "file": "file", "json": "json" }; +const FrameworkEntryPointType = { + "1": 1, + "2": 2, + "3": 3, + "client": 1, + "server": 2, + "fallback": 3 +}; +const FrameworkEntryPointTypeKeys = { + "1": "client", + "2": "server", + "3": "fallback", + "client": "client", + "server": "server", + "fallback": "fallback" +}; +const StackFrameScope = { + "1": 1, + "2": 2, + "3": 3, + "4": 4, + "5": 5, + "6": 6, + "Eval": 1, + "Module": 2, + "Function": 3, + "Global": 4, + "Wasm": 5, + "Constructor": 6 +}; +const StackFrameScopeKeys = { + "1": "Eval", + "2": "Module", + "3": "Function", + "4": "Global", + "5": "Wasm", + "6": "Constructor", + "Eval": "Eval", + "Module": "Module", + "Function": "Function", + "Global": "Global", + "Wasm": "Wasm", + "Constructor": "Constructor" +}; + +function decodeStackFrame(bb) { + var result = {}; + + result["function_name"] = bb.readString(); + result["file"] = bb.readString(); + result["position"] = decodeStackFramePosition(bb); + result["scope"] = StackFrameScope[bb.readByte()]; + return result; +} + +function encodeStackFrame(message, bb) { + + var value = message["function_name"]; + if (value != null) { + bb.writeString(value); + } else { + throw new Error("Missing required field \"function_name\""); + } + + var value = message["file"]; + if (value != null) { + bb.writeString(value); + } else { + throw new Error("Missing required field \"file\""); + } + + var value = message["position"]; + if (value != null) { + encodeStackFramePosition(value, bb); + } else { + throw new Error("Missing required field \"position\""); + } + + var value = message["scope"]; + if (value != null) { + var encoded = StackFrameScope[value]; +if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"StackFrameScope\""); +bb.writeByte(encoded); + } else { + throw new Error("Missing required field \"scope\""); + } + +} + +function decodeStackFramePosition(bb) { + var result = {}; + + result["source_offset"] = bb.readInt32(); + result["line"] = bb.readInt32(); + result["line_start"] = bb.readInt32(); + result["line_stop"] = bb.readInt32(); + result["column_start"] = bb.readInt32(); + result["column_stop"] = bb.readInt32(); + result["expression_start"] = bb.readInt32(); + result["expression_stop"] = bb.readInt32(); + return result; +} + +function encodeStackFramePosition(message, bb) { + + var value = message["source_offset"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"source_offset\""); + } + + var value = message["line"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"line\""); + } + + var value = message["line_start"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"line_start\""); + } + + var value = message["line_stop"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"line_stop\""); + } + + var value = message["column_start"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"column_start\""); + } + + var value = message["column_stop"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"column_stop\""); + } + + var value = message["expression_start"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"expression_start\""); + } + + var value = message["expression_stop"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"expression_stop\""); + } + +} + +function decodeSourceLine(bb) { + var result = {}; + + result["line"] = bb.readInt32(); + result["text"] = bb.readString(); + return result; +} + +function encodeSourceLine(message, bb) { + + var value = message["line"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"line\""); + } + + var value = message["text"]; + if (value != null) { + bb.writeString(value); + } else { + throw new Error("Missing required field \"text\""); + } + +} + +function decodeStackTrace(bb) { + var result = {}; + + var length = bb.readVarUint(); + var values = result["source_lines"] = Array(length); + for (var i = 0; i < length; i++) values[i] = decodeSourceLine(bb); + var length = bb.readVarUint(); + var values = result["frames"] = Array(length); + for (var i = 0; i < length; i++) values[i] = decodeStackFrame(bb); + return result; +} + +function encodeStackTrace(message, bb) { + + var value = message["source_lines"]; + if (value != null) { + var values = value, n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + encodeSourceLine(value, bb); + } + } else { + throw new Error("Missing required field \"source_lines\""); + } + + var value = message["frames"]; + if (value != null) { + var values = value, n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + encodeStackFrame(value, bb); + } + } else { + throw new Error("Missing required field \"frames\""); + } + +} + +function decodeJSException(bb) { + var result = {}; + + while (true) { + switch (bb.readByte()) { + case 0: + return result; + + case 1: + result["name"] = bb.readString(); + break; + + case 2: + result["message"] = bb.readString(); + break; + + case 3: + result["runtime_type"] = bb.readUint16(); + break; + + case 4: + result["code"] = bb.readByte(); + break; + + case 5: + result["stack"] = decodeStackTrace(bb); + break; + + default: + throw new Error("Attempted to parse invalid message"); + } + } +} + +function encodeJSException(message, bb) { + + var value = message["name"]; + if (value != null) { + bb.writeByte(1); + bb.writeString(value); + } + + var value = message["message"]; + if (value != null) { + bb.writeByte(2); + bb.writeString(value); + } + + var value = message["runtime_type"]; + if (value != null) { + bb.writeByte(3); + bb.writeUint16(value); + } + + var value = message["code"]; + if (value != null) { + bb.writeByte(4); + bb.writeByte(value); + } + + var value = message["stack"]; + if (value != null) { + bb.writeByte(5); + encodeStackTrace(value, bb); + } + bb.writeByte(0); + +} +const FallbackStep = { + "1": 1, + "2": 2, + "3": 3, + "4": 4, + "5": 5, + "6": 6, + "7": 7, + "8": 8, + "ssr_disabled": 1, + "create_vm": 2, + "configure_router": 3, + "configure_defines": 4, + "resolve_entry_point": 5, + "load_entry_point": 6, + "eval_entry_point": 7, + "fetch_event_handler": 8 +}; +const FallbackStepKeys = { + "1": "ssr_disabled", + "2": "create_vm", + "3": "configure_router", + "4": "configure_defines", + "5": "resolve_entry_point", + "6": "load_entry_point", + "7": "eval_entry_point", + "8": "fetch_event_handler", + "ssr_disabled": "ssr_disabled", + "create_vm": "create_vm", + "configure_router": "configure_router", + "configure_defines": "configure_defines", + "resolve_entry_point": "resolve_entry_point", + "load_entry_point": "load_entry_point", + "eval_entry_point": "eval_entry_point", + "fetch_event_handler": "fetch_event_handler" +}; + +function decodeProblems(bb) { + var result = {}; + + result["code"] = bb.readUint16(); + result["name"] = bb.readString(); + var length = bb.readVarUint(); + var values = result["exceptions"] = Array(length); + for (var i = 0; i < length; i++) values[i] = decodeJSException(bb); + result["build"] = decodeLog(bb); + return result; +} + +function encodeProblems(message, bb) { + + var value = message["code"]; + if (value != null) { + bb.writeUint16(value); + } else { + throw new Error("Missing required field \"code\""); + } + + var value = message["name"]; + if (value != null) { + bb.writeString(value); + } else { + throw new Error("Missing required field \"name\""); + } + + var value = message["exceptions"]; + if (value != null) { + var values = value, n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + encodeJSException(value, bb); + } + } else { + throw new Error("Missing required field \"exceptions\""); + } + + var value = message["build"]; + if (value != null) { + encodeLog(value, bb); + } else { + throw new Error("Missing required field \"build\""); + } + +} + +function decodeRouter(bb) { + var result = {}; + + var length = bb.readVarUint(); + var values = result["routes"] = Array(length); + for (var i = 0; i < length; i++) values[i] = bb.readString(); + result["route"] = bb.readInt32(); + result["params"] = decodeStringMap(bb); + return result; +} + +function encodeRouter(message, bb) { + + var value = message["routes"]; + if (value != null) { + var values = value, n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + bb.writeString(value); + } + } else { + throw new Error("Missing required field \"routes\""); + } + + var value = message["route"]; + if (value != null) { + bb.writeInt32(value); + } else { + throw new Error("Missing required field \"route\""); + } + + var value = message["params"]; + if (value != null) { + encodeStringMap(value, bb); + } else { + throw new Error("Missing required field \"params\""); + } + +} + +function decodeFallbackMessageContainer(bb) { + var result = {}; + + while (true) { + switch (bb.readByte()) { + case 0: + return result; + + case 1: + result["message"] = bb.readString(); + break; + + case 2: + result["router"] = decodeRouter(bb); + break; + + case 3: + result["reason"] = FallbackStep[bb.readByte()]; + break; + + case 4: + result["problems"] = decodeProblems(bb); + break; + + default: + throw new Error("Attempted to parse invalid message"); + } + } +} + +function encodeFallbackMessageContainer(message, bb) { + + var value = message["message"]; + if (value != null) { + bb.writeByte(1); + bb.writeString(value); + } + + var value = message["router"]; + if (value != null) { + bb.writeByte(2); + encodeRouter(value, bb); + } + + var value = message["reason"]; + if (value != null) { + bb.writeByte(3); + var encoded = FallbackStep[value]; +if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"FallbackStep\""); +bb.writeByte(encoded); + } + + var value = message["problems"]; + if (value != null) { + bb.writeByte(4); + encodeProblems(value, bb); + } + bb.writeByte(0); + +} const ResolveMode = { "1": 1, "2": 2, @@ -709,26 +1193,22 @@ function decodeFrameworkConfig(bb) { break; case 2: - result["client"] = bb.readString(); + result["client"] = decodeFrameworkEntryPointMessage(bb); break; case 3: - result["server"] = bb.readString(); + result["server"] = decodeFrameworkEntryPointMessage(bb); break; case 4: - result["development"] = !!bb.readByte(); + result["fallback"] = decodeFrameworkEntryPointMessage(bb); break; case 5: - result["client_env"] = decodeEnvConfig(bb); + result["development"] = !!bb.readByte(); break; case 6: - result["server_env"] = decodeEnvConfig(bb); - break; - - case 7: result["client_css_in_js"] = CSSInJSBehavior[bb.readByte()]; break; @@ -749,36 +1229,30 @@ function encodeFrameworkConfig(message, bb) { var value = message["client"]; if (value != null) { bb.writeByte(2); - bb.writeString(value); + encodeFrameworkEntryPointMessage(value, bb); } var value = message["server"]; if (value != null) { bb.writeByte(3); - bb.writeString(value); + encodeFrameworkEntryPointMessage(value, bb); } - var value = message["development"]; + var value = message["fallback"]; if (value != null) { bb.writeByte(4); - bb.writeByte(value); + encodeFrameworkEntryPointMessage(value, bb); } - var value = message["client_env"]; + var value = message["development"]; if (value != null) { bb.writeByte(5); - encodeEnvConfig(value, bb); - } - - var value = message["server_env"]; - if (value != null) { - bb.writeByte(6); - encodeEnvConfig(value, bb); + bb.writeByte(value); } var value = message["client_css_in_js"]; if (value != null) { - bb.writeByte(7); + bb.writeByte(6); var encoded = CSSInJSBehavior[value]; if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"CSSInJSBehavior\""); bb.writeByte(encoded); @@ -787,53 +1261,161 @@ bb.writeByte(encoded); } -function decodeLoadedFramework(bb) { +function decodeFrameworkEntryPoint(bb) { var result = {}; - result["entry_point"] = bb.readString(); - result["package"] = bb.readString(); - result["development"] = !!bb.readByte(); - result["client"] = !!bb.readByte(); + result["kind"] = FrameworkEntryPointType[bb.readByte()]; + result["path"] = bb.readString(); result["env"] = decodeLoadedEnvConfig(bb); - result["client_css_in_js"] = CSSInJSBehavior[bb.readByte()]; return result; } -function encodeLoadedFramework(message, bb) { +function encodeFrameworkEntryPoint(message, bb) { - var value = message["entry_point"]; + var value = message["kind"]; if (value != null) { - bb.writeString(value); + var encoded = FrameworkEntryPointType[value]; +if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"FrameworkEntryPointType\""); +bb.writeByte(encoded); } else { - throw new Error("Missing required field \"entry_point\""); + throw new Error("Missing required field \"kind\""); } - var value = message["package"]; + var value = message["path"]; if (value != null) { bb.writeString(value); } else { - throw new Error("Missing required field \"package\""); + throw new Error("Missing required field \"path\""); } - var value = message["development"]; + var value = message["env"]; if (value != null) { - bb.writeByte(value); + encodeLoadedEnvConfig(value, bb); } else { - throw new Error("Missing required field \"development\""); + throw new Error("Missing required field \"env\""); + } + +} + +function decodeFrameworkEntryPointMap(bb) { + var result = {}; + + while (true) { + switch (bb.readByte()) { + case 0: + return result; + + case 1: + result["client"] = decodeFrameworkEntryPoint(bb); + break; + + case 2: + result["server"] = decodeFrameworkEntryPoint(bb); + break; + + case 3: + result["fallback"] = decodeFrameworkEntryPoint(bb); + break; + + default: + throw new Error("Attempted to parse invalid message"); + } } +} + +function encodeFrameworkEntryPointMap(message, bb) { var value = message["client"]; if (value != null) { + bb.writeByte(1); + encodeFrameworkEntryPoint(value, bb); + } + + var value = message["server"]; + if (value != null) { + bb.writeByte(2); + encodeFrameworkEntryPoint(value, bb); + } + + var value = message["fallback"]; + if (value != null) { + bb.writeByte(3); + encodeFrameworkEntryPoint(value, bb); + } + bb.writeByte(0); + +} + +function decodeFrameworkEntryPointMessage(bb) { + var result = {}; + + while (true) { + switch (bb.readByte()) { + case 0: + return result; + + case 1: + result["path"] = bb.readString(); + break; + + case 2: + result["env"] = decodeEnvConfig(bb); + break; + + default: + throw new Error("Attempted to parse invalid message"); + } + } +} + +function encodeFrameworkEntryPointMessage(message, bb) { + + var value = message["path"]; + if (value != null) { + bb.writeByte(1); + bb.writeString(value); + } + + var value = message["env"]; + if (value != null) { + bb.writeByte(2); + encodeEnvConfig(value, bb); + } + bb.writeByte(0); + +} + +function decodeLoadedFramework(bb) { + var result = {}; + + result["package"] = bb.readString(); + result["development"] = !!bb.readByte(); + result["entry_points"] = decodeFrameworkEntryPointMap(bb); + result["client_css_in_js"] = CSSInJSBehavior[bb.readByte()]; + return result; +} + +function encodeLoadedFramework(message, bb) { + + var value = message["package"]; + if (value != null) { + bb.writeString(value); + } else { + throw new Error("Missing required field \"package\""); + } + + var value = message["development"]; + if (value != null) { bb.writeByte(value); } else { - throw new Error("Missing required field \"client\""); + throw new Error("Missing required field \"development\""); } - var value = message["env"]; + var value = message["entry_points"]; if (value != null) { - encodeLoadedEnvConfig(value, bb); + encodeFrameworkEntryPointMap(value, bb); } else { - throw new Error("Missing required field \"env\""); + throw new Error("Missing required field \"entry_points\""); } var value = message["client_css_in_js"]; @@ -1449,7 +2031,7 @@ bb.writeVarUint(encoded); } } -const MessageKind = { +const MessageLevel = { "1": 1, "2": 2, "3": 3, @@ -1459,7 +2041,7 @@ const MessageKind = { "note": 3, "debug": 4 }; -const MessageKindKeys = { +const MessageLevelKeys = { "1": "err", "2": "warn", "3": "note", @@ -1575,26 +2157,66 @@ function encodeMessageData(message, bb) { } +function decodeMessageMeta(bb) { + var result = {}; + + while (true) { + switch (bb.readByte()) { + case 0: + return result; + + case 1: + result["resolve"] = bb.readString(); + break; + + case 2: + result["build"] = !!bb.readByte(); + break; + + default: + throw new Error("Attempted to parse invalid message"); + } + } +} + +function encodeMessageMeta(message, bb) { + + var value = message["resolve"]; + if (value != null) { + bb.writeByte(1); + bb.writeString(value); + } + + var value = message["build"]; + if (value != null) { + bb.writeByte(2); + bb.writeByte(value); + } + bb.writeByte(0); + +} + function decodeMessage(bb) { var result = {}; - result["kind"] = MessageKind[bb.readVarUint()]; + result["level"] = MessageLevel[bb.readVarUint()]; result["data"] = decodeMessageData(bb); var length = bb.readVarUint(); var values = result["notes"] = Array(length); for (var i = 0; i < length; i++) values[i] = decodeMessageData(bb); + result["on"] = decodeMessageMeta(bb); return result; } function encodeMessage(message, bb) { - var value = message["kind"]; + var value = message["level"]; if (value != null) { - var encoded = MessageKind[value]; -if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"MessageKind\""); + var encoded = MessageLevel[value]; +if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"MessageLevel\""); bb.writeVarUint(encoded); } else { - throw new Error("Missing required field \"kind\""); + throw new Error("Missing required field \"level\""); } var value = message["data"]; @@ -1616,6 +2238,13 @@ bb.writeVarUint(encoded); throw new Error("Missing required field \"notes\""); } + var value = message["on"]; + if (value != null) { + encodeMessageMeta(value, bb); + } else { + throw new Error("Missing required field \"on\""); + } + } function decodeLog(bb) { @@ -2167,6 +2796,28 @@ bb.writeByte(encoded); export { Loader } export { LoaderKeys } +export { FrameworkEntryPointType } +export { FrameworkEntryPointTypeKeys } +export { StackFrameScope } +export { StackFrameScopeKeys } +export { decodeStackFrame } +export { encodeStackFrame } +export { decodeStackFramePosition } +export { encodeStackFramePosition } +export { decodeSourceLine } +export { encodeSourceLine } +export { decodeStackTrace } +export { encodeStackTrace } +export { decodeJSException } +export { encodeJSException } +export { FallbackStep } +export { FallbackStepKeys } +export { decodeProblems } +export { encodeProblems } +export { decodeRouter } +export { encodeRouter } +export { decodeFallbackMessageContainer } +export { encodeFallbackMessageContainer } export { ResolveMode } export { ResolveModeKeys } export { Platform } @@ -2207,6 +2858,12 @@ export { decodeLoadedEnvConfig } export { encodeLoadedEnvConfig } export { decodeFrameworkConfig } export { encodeFrameworkConfig } +export { decodeFrameworkEntryPoint } +export { encodeFrameworkEntryPoint } +export { decodeFrameworkEntryPointMap } +export { encodeFrameworkEntryPointMap } +export { decodeFrameworkEntryPointMessage } +export { encodeFrameworkEntryPointMessage } export { decodeLoadedFramework } export { encodeLoadedFramework } export { decodeLoadedRouteConfig } @@ -2225,12 +2882,14 @@ export { decodeOutputFile } export { encodeOutputFile } export { decodeTransformResponse } export { encodeTransformResponse } -export { MessageKind } -export { MessageKindKeys } +export { MessageLevel } +export { MessageLevelKeys } export { decodeLocation } export { encodeLocation } export { decodeMessageData } export { encodeMessageData } +export { decodeMessageMeta } +export { encodeMessageMeta } export { decodeMessage } export { encodeMessage } export { decodeLog } diff --git a/src/api/schema.peechy b/src/api/schema.peechy index fd0b81fd2..3b7b2669e 100644 --- a/src/api/schema.peechy +++ b/src/api/schema.peechy @@ -10,6 +10,93 @@ smol Loader { json = 7; } +smol FrameworkEntryPointType { + client = 1; + server = 2; + fallback = 3; +} + +smol StackFrameScope { + Eval = 1; + Module = 2; + Function = 3; + Global = 4; + Wasm = 5; + Constructor = 6; +} + +struct StackFrame { + string function_name; + string file; + StackFramePosition position; + StackFrameScope scope; +} + +struct StackFramePosition { + int32 source_offset; + int32 line; + int32 line_start; + int32 line_stop; + int32 column_start; + int32 column_stop; + int32 expression_start; + int32 expression_stop; +} + +struct SourceLine { + int32 line; + string text; +} + +struct StackTrace { + SourceLine[] source_lines; + StackFrame[] frames; +} + + +message JSException { + string name = 1; + string message = 2; + + uint16 runtime_type = 3; + uint8 code = 4; + + StackTrace stack = 5; +} + +smol FallbackStep { + ssr_disabled = 1; + create_vm = 2; + configure_router = 3; + configure_defines = 4; + resolve_entry_point = 5; + load_entry_point = 6; + eval_entry_point = 7; + fetch_event_handler = 8; +} + +struct Problems { + uint16 code; + string name; + + JSException[] exceptions; + Log build; +} + +struct Router { + string[] routes; + int32 route; + StringMap params; +} + +message FallbackMessageContainer { + string message = 1; + Router router = 2; + FallbackStep reason = 3; + Problems problems = 4; +} + + smol ResolveMode { disable = 1; lazy = 2; @@ -161,22 +248,35 @@ struct LoadedEnvConfig { message FrameworkConfig { string package = 1; - string client = 2; - string server = 3; - bool development = 4; - EnvConfig client_env = 5; - EnvConfig server_env = 6; + FrameworkEntryPointMessage client = 2; + FrameworkEntryPointMessage server = 3; + FrameworkEntryPointMessage fallback = 4; + bool development = 5; + + CSSInJSBehavior client_css_in_js = 6; +} - CSSInJSBehavior client_css_in_js = 7; +struct FrameworkEntryPoint { + FrameworkEntryPointType kind; + string path; + LoadedEnvConfig env; +} + +message FrameworkEntryPointMap { + FrameworkEntryPoint client = 1; + FrameworkEntryPoint server = 2; + FrameworkEntryPoint fallback = 3; +} + +message FrameworkEntryPointMessage { + string path = 1; + EnvConfig env = 2; } struct LoadedFramework { - string entry_point; string package; bool development; - bool client; - LoadedEnvConfig env; - + FrameworkEntryPointMap entry_points; CSSInJSBehavior client_css_in_js; } @@ -264,7 +364,7 @@ struct TransformResponse { Message[] errors; } -enum MessageKind { +enum MessageLevel { err = 1; warn =2; note = 3; @@ -286,10 +386,18 @@ message MessageData { Location location = 2; } + + +message MessageMeta { + string resolve = 1; + bool build = 2; +} + struct Message { - MessageKind kind; + MessageLevel level; MessageData data; MessageData[] notes; + MessageMeta on; } struct Log { diff --git a/src/api/schema.zig b/src/api/schema.zig index 639eeae98..bd0873540 100644 --- a/src/api/schema.zig +++ b/src/api/schema.zig @@ -1,3 +1,4 @@ + const std = @import("std"); pub const Reader = struct { @@ -281,1762 +282,2440 @@ pub fn Writer(comptime WritableStream: type) type { pub const ByteWriter = Writer(*std.io.FixedBufferStream([]u8)); pub const FileWriter = Writer(std.fs.File); -pub const Api = struct { - pub const Loader = enum(u8) { - _none, - /// jsx - jsx, - /// js - js, - /// ts - ts, - /// tsx - tsx, +pub const Api = struct { - /// css - css, +pub const Loader = enum(u8) { - /// file - file, +_none, + /// jsx + jsx, - /// json - json, + /// js + js, - _, + /// ts + ts, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; + /// tsx + tsx, - pub const ResolveMode = enum(u8) { - _none, - /// disable - disable, + /// css + css, - /// lazy - lazy, + /// file + file, - /// dev - dev, + /// json + json, - /// bundle - bundle, +_, - _, + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; + +}; - pub const Platform = enum(u8) { - _none, - /// browser - browser, +pub const FrameworkEntryPointType = enum(u8) { - /// node - node, +_none, + /// client + client, - /// bun - bun, + /// server + server, - _, + /// fallback + fallback, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +_, - pub const CssInJsBehavior = enum(u8) { - _none, - /// facade - facade, + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - /// facade_onimportcss - facade_onimportcss, + +}; - /// auto_onimportcss - auto_onimportcss, +pub const StackFrameScope = enum(u8) { - _, +_none, + /// Eval + eval, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; + /// Module + module, - pub const JsxRuntime = enum(u8) { - _none, - /// automatic - automatic, + /// Function + function, - /// classic - classic, + /// Global + global, - _, + /// Wasm + wasm, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; + /// Constructor + constructor, - pub const Jsx = struct { - /// factory - factory: []const u8, +_, - /// runtime - runtime: JsxRuntime, + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - /// fragment - fragment: []const u8, + +}; - /// development - development: bool = false, +pub const StackFrame = struct { +/// function_name +function_name: []const u8, - /// import_source - import_source: []const u8, +/// file +file: []const u8, - /// react_fast_refresh - react_fast_refresh: bool = false, +/// position +position: StackFramePosition, - pub fn decode(reader: anytype) anyerror!Jsx { - var this = std.mem.zeroes(Jsx); +/// scope +scope: StackFrameScope, - this.factory = try reader.readValue([]const u8); - this.runtime = try reader.readValue(JsxRuntime); - this.fragment = try reader.readValue([]const u8); - this.development = try reader.readValue(bool); - this.import_source = try reader.readValue([]const u8); - this.react_fast_refresh = try reader.readValue(bool); - return this; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.factory); - try writer.writeEnum(this.runtime); - try writer.writeValue(this.fragment); - try writer.writeInt(@intCast(u8, @boolToInt(this.development))); - try writer.writeValue(this.import_source); - try writer.writeInt(@intCast(u8, @boolToInt(this.react_fast_refresh))); - } - }; +pub fn decode(reader: anytype) anyerror!StackFrame { + var this = std.mem.zeroes(StackFrame); - pub const StringPointer = packed struct { - /// offset - offset: u32 = 0, + this.function_name = try reader.readValue([]const u8); + this.file = try reader.readValue([]const u8); + this.position = try reader.readValue(StackFramePosition); + this.scope = try reader.readValue(StackFrameScope); + return this; +} - /// length - length: u32 = 0, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.function_name); + try writer.writeValue(this.file); + try writer.writeValue(this.position); + try writer.writeEnum(this.scope); +} - pub fn decode(reader: anytype) anyerror!StringPointer { - var this = std.mem.zeroes(StringPointer); +}; - this.offset = try reader.readValue(u32); - this.length = try reader.readValue(u32); - return this; - } +pub const StackFramePosition = packed struct { +/// source_offset +source_offset: i32 = 0, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.offset); - try writer.writeInt(this.length); - } - }; +/// line +line: i32 = 0, - pub const JavascriptBundledModule = struct { - /// path - path: StringPointer, +/// line_start +line_start: i32 = 0, - /// code - code: StringPointer, +/// line_stop +line_stop: i32 = 0, - /// package_id - package_id: u32 = 0, +/// column_start +column_start: i32 = 0, - /// id - id: u32 = 0, +/// column_stop +column_stop: i32 = 0, - /// path_extname_length - path_extname_length: u8 = 0, +/// expression_start +expression_start: i32 = 0, - pub fn decode(reader: anytype) anyerror!JavascriptBundledModule { - var this = std.mem.zeroes(JavascriptBundledModule); +/// expression_stop +expression_stop: i32 = 0, - this.path = try reader.readValue(StringPointer); - this.code = try reader.readValue(StringPointer); - this.package_id = try reader.readValue(u32); - this.id = try reader.readValue(u32); - this.path_extname_length = try reader.readValue(u8); - return this; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.path); - try writer.writeValue(this.code); - try writer.writeInt(this.package_id); - try writer.writeInt(this.id); - try writer.writeInt(this.path_extname_length); - } - }; +pub fn decode(reader: anytype) anyerror!StackFramePosition { + var this = std.mem.zeroes(StackFramePosition); - pub const JavascriptBundledPackage = struct { - /// name - name: StringPointer, + this.source_offset = try reader.readValue(i32); + this.line = try reader.readValue(i32); + this.line_start = try reader.readValue(i32); + this.line_stop = try reader.readValue(i32); + this.column_start = try reader.readValue(i32); + this.column_stop = try reader.readValue(i32); + this.expression_start = try reader.readValue(i32); + this.expression_stop = try reader.readValue(i32); + return this; +} - /// version - version: StringPointer, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.source_offset); + try writer.writeInt(this.line); + try writer.writeInt(this.line_start); + try writer.writeInt(this.line_stop); + try writer.writeInt(this.column_start); + try writer.writeInt(this.column_stop); + try writer.writeInt(this.expression_start); + try writer.writeInt(this.expression_stop); +} - /// hash - hash: u32 = 0, +}; - /// modules_offset - modules_offset: u32 = 0, +pub const SourceLine = struct { +/// line +line: i32 = 0, - /// modules_length - modules_length: u32 = 0, +/// text +text: []const u8, - pub fn decode(reader: anytype) anyerror!JavascriptBundledPackage { - var this = std.mem.zeroes(JavascriptBundledPackage); - this.name = try reader.readValue(StringPointer); - this.version = try reader.readValue(StringPointer); - this.hash = try reader.readValue(u32); - this.modules_offset = try reader.readValue(u32); - this.modules_length = try reader.readValue(u32); - return this; - } +pub fn decode(reader: anytype) anyerror!SourceLine { + var this = std.mem.zeroes(SourceLine); - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.name); - try writer.writeValue(this.version); - try writer.writeInt(this.hash); - try writer.writeInt(this.modules_offset); - try writer.writeInt(this.modules_length); - } - }; + this.line = try reader.readValue(i32); + this.text = try reader.readValue([]const u8); + return this; +} - pub const JavascriptBundle = struct { - /// modules - modules: []const JavascriptBundledModule, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.line); + try writer.writeValue(this.text); +} - /// packages - packages: []const JavascriptBundledPackage, +}; - /// etag - etag: []const u8, +pub const StackTrace = struct { +/// source_lines +source_lines: []const SourceLine, - /// generated_at - generated_at: u32 = 0, +/// frames +frames: []const StackFrame, - /// app_package_json_dependencies_hash - app_package_json_dependencies_hash: []const u8, - /// import_from_name - import_from_name: []const u8, +pub fn decode(reader: anytype) anyerror!StackTrace { + var this = std.mem.zeroes(StackTrace); - /// manifest_string - manifest_string: []const u8, + this.source_lines = try reader.readArray(SourceLine); + this.frames = try reader.readArray(StackFrame); + return this; +} - pub fn decode(reader: anytype) anyerror!JavascriptBundle { - var this = std.mem.zeroes(JavascriptBundle); +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray(SourceLine, this.source_lines); + try writer.writeArray(StackFrame, this.frames); +} - this.modules = try reader.readArray(JavascriptBundledModule); - this.packages = try reader.readArray(JavascriptBundledPackage); - this.etag = try reader.readArray(u8); - this.generated_at = try reader.readValue(u32); - this.app_package_json_dependencies_hash = try reader.readArray(u8); - this.import_from_name = try reader.readArray(u8); - this.manifest_string = try reader.readArray(u8); - return this; - } +}; - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray(JavascriptBundledModule, this.modules); - try writer.writeArray(JavascriptBundledPackage, this.packages); - try writer.writeArray(u8, this.etag); - try writer.writeInt(this.generated_at); - try writer.writeArray(u8, this.app_package_json_dependencies_hash); - try writer.writeArray(u8, this.import_from_name); - try writer.writeArray(u8, this.manifest_string); - } - }; +pub const JsException = struct { +/// name +name: ?[]const u8 = null, + +/// message +message: ?[]const u8 = null, + +/// runtime_type +runtime_type: ?u16 = null, + +/// code +code: ?u8 = null, + +/// stack +stack: ?StackTrace = null, + + +pub fn decode(reader: anytype) anyerror!JsException { + var this = std.mem.zeroes(JsException); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.name = try reader.readValue([]const u8); +}, + 2 => { + this.message = try reader.readValue([]const u8); +}, + 3 => { + this.runtime_type = try reader.readValue(u16); +}, + 4 => { + this.code = try reader.readValue(u8); +}, + 5 => { + this.stack = try reader.readValue(StackTrace); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} - pub const JavascriptBundleContainer = struct { - /// bundle_format_version - bundle_format_version: ?u32 = null, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.name) |name| { + try writer.writeFieldID(1); + try writer.writeValue(name); +} +if (this.message) |message| { + try writer.writeFieldID(2); + try writer.writeValue(message); +} +if (this.runtime_type) |runtime_type| { + try writer.writeFieldID(3); + try writer.writeInt(runtime_type); +} +if (this.code) |code| { + try writer.writeFieldID(4); + try writer.writeInt(code); +} +if (this.stack) |stack| { + try writer.writeFieldID(5); + try writer.writeValue(stack); +} +try writer.endMessage(); +} - /// routes - routes: ?LoadedRouteConfig = null, +}; - /// framework - framework: ?LoadedFramework = null, +pub const FallbackStep = enum(u8) { - /// bundle - bundle: ?JavascriptBundle = null, +_none, + /// ssr_disabled + ssr_disabled, - /// code_length - code_length: ?u32 = null, + /// create_vm + create_vm, - pub fn decode(reader: anytype) anyerror!JavascriptBundleContainer { - var this = std.mem.zeroes(JavascriptBundleContainer); + /// configure_router + configure_router, - while (true) { - switch (try reader.readByte()) { - 0 => { - return this; - }, + /// configure_defines + configure_defines, - 1 => { - this.bundle_format_version = try reader.readValue(u32); - }, - 2 => { - this.routes = try reader.readValue(LoadedRouteConfig); - }, - 3 => { - this.framework = try reader.readValue(LoadedFramework); - }, - 4 => { - this.bundle = try reader.readValue(JavascriptBundle); - }, - 5 => { - this.code_length = try reader.readValue(u32); - }, - else => { - return error.InvalidMessage; - }, + /// resolve_entry_point + resolve_entry_point, + + /// load_entry_point + load_entry_point, + + /// eval_entry_point + eval_entry_point, + + /// fetch_event_handler + fetch_event_handler, + +_, + + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); } - } - unreachable; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - if (this.bundle_format_version) |bundle_format_version| { - try writer.writeFieldID(1); - try writer.writeInt(bundle_format_version); - } - if (this.routes) |routes| { - try writer.writeFieldID(2); - try writer.writeValue(routes); - } - if (this.framework) |framework| { - try writer.writeFieldID(3); - try writer.writeValue(framework); - } - if (this.bundle) |bundle| { - try writer.writeFieldID(4); - try writer.writeValue(bundle); - } - if (this.code_length) |code_length| { - try writer.writeFieldID(5); - try writer.writeInt(code_length); - } - try writer.endMessage(); - } - }; + +}; - pub const ScanDependencyMode = enum(u8) { - _none, - /// app - app, +pub const Problems = struct { +/// code +code: u16 = 0, - /// all - all, +/// name +name: []const u8, - _, +/// exceptions +exceptions: []const JsException, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +/// build +build: Log, - pub const ModuleImportType = enum(u8) { - _none, - /// import - import, - /// require - require, +pub fn decode(reader: anytype) anyerror!Problems { + var this = std.mem.zeroes(Problems); - _, + this.code = try reader.readValue(u16); + this.name = try reader.readValue([]const u8); + this.exceptions = try reader.readArray(JsException); + this.build = try reader.readValue(Log); + return this; +} - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.code); + try writer.writeValue(this.name); + try writer.writeArray(JsException, this.exceptions); + try writer.writeValue(this.build); +} - pub const ModuleImportRecord = struct { - /// kind - kind: ModuleImportType, +}; - /// path - path: []const u8, +pub const Router = struct { +/// routes +routes: []const []const u8, - /// dynamic - dynamic: bool = false, +/// route +route: i32 = 0, - pub fn decode(reader: anytype) anyerror!ModuleImportRecord { - var this = std.mem.zeroes(ModuleImportRecord); +/// params +params: StringMap, - this.kind = try reader.readValue(ModuleImportType); - this.path = try reader.readValue([]const u8); - this.dynamic = try reader.readValue(bool); - return this; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeEnum(this.kind); - try writer.writeValue(this.path); - try writer.writeInt(@intCast(u8, @boolToInt(this.dynamic))); - } - }; +pub fn decode(reader: anytype) anyerror!Router { + var this = std.mem.zeroes(Router); - pub const Module = struct { - /// path - path: []const u8, + this.routes = try reader.readArray([]const u8); + this.route = try reader.readValue(i32); + this.params = try reader.readValue(StringMap); + return this; +} - /// imports - imports: []const ModuleImportRecord, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray([]const u8, this.routes); + try writer.writeInt(this.route); + try writer.writeValue(this.params); +} - pub fn decode(reader: anytype) anyerror!Module { - var this = std.mem.zeroes(Module); +}; - this.path = try reader.readValue([]const u8); - this.imports = try reader.readArray(ModuleImportRecord); - return this; - } +pub const FallbackMessageContainer = struct { +/// message +message: ?[]const u8 = null, + +/// router +router: ?Router = null, + +/// reason +reason: ?FallbackStep = null, + +/// problems +problems: ?Problems = null, + + +pub fn decode(reader: anytype) anyerror!FallbackMessageContainer { + var this = std.mem.zeroes(FallbackMessageContainer); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.message = try reader.readValue([]const u8); +}, + 2 => { + this.router = try reader.readValue(Router); +}, + 3 => { + this.reason = try reader.readValue(FallbackStep); +}, + 4 => { + this.problems = try reader.readValue(Problems); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.path); - try writer.writeArray(ModuleImportRecord, this.imports); - } - }; +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.message) |message| { + try writer.writeFieldID(1); + try writer.writeValue(message); +} +if (this.router) |router| { + try writer.writeFieldID(2); + try writer.writeValue(router); +} +if (this.reason) |reason| { + try writer.writeFieldID(3); + try writer.writeEnum(reason); +} +if (this.problems) |problems| { + try writer.writeFieldID(4); + try writer.writeValue(problems); +} +try writer.endMessage(); +} - pub const StringMap = struct { - /// keys - keys: []const []const u8, +}; - /// values - values: []const []const u8, +pub const ResolveMode = enum(u8) { - pub fn decode(reader: anytype) anyerror!StringMap { - var this = std.mem.zeroes(StringMap); +_none, + /// disable + disable, - this.keys = try reader.readArray([]const u8); - this.values = try reader.readArray([]const u8); - return this; - } + /// lazy + lazy, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray([]const u8, this.keys); - try writer.writeArray([]const u8, this.values); - } - }; + /// dev + dev, - pub const LoaderMap = struct { - /// extensions - extensions: []const []const u8, + /// bundle + bundle, - /// loaders - loaders: []const Loader, +_, - pub fn decode(reader: anytype) anyerror!LoaderMap { - var this = std.mem.zeroes(LoaderMap); + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - this.extensions = try reader.readArray([]const u8); - this.loaders = try reader.readArray(Loader); - return this; - } + +}; - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray([]const u8, this.extensions); - try writer.writeArray(Loader, this.loaders); - } - }; +pub const Platform = enum(u8) { - pub const DotEnvBehavior = enum(u32) { - _none, - /// disable - disable, +_none, + /// browser + browser, - /// prefix - prefix, + /// node + node, - /// load_all - load_all, + /// bun + bun, - _, +_, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - pub const EnvConfig = struct { - /// prefix - prefix: ?[]const u8 = null, + +}; - /// defaults - defaults: ?StringMap = null, +pub const CssInJsBehavior = enum(u8) { - pub fn decode(reader: anytype) anyerror!EnvConfig { - var this = std.mem.zeroes(EnvConfig); +_none, + /// facade + facade, - while (true) { - switch (try reader.readByte()) { - 0 => { - return this; - }, + /// facade_onimportcss + facade_onimportcss, - 1 => { - this.prefix = try reader.readValue([]const u8); - }, - 2 => { - this.defaults = try reader.readValue(StringMap); - }, - else => { - return error.InvalidMessage; - }, + /// auto_onimportcss + auto_onimportcss, + +_, + + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); } - } - unreachable; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - if (this.prefix) |prefix| { - try writer.writeFieldID(1); - try writer.writeValue(prefix); - } - if (this.defaults) |defaults| { - try writer.writeFieldID(2); - try writer.writeValue(defaults); - } - try writer.endMessage(); - } - }; + +}; - pub const LoadedEnvConfig = struct { - /// dotenv - dotenv: DotEnvBehavior, +pub const JsxRuntime = enum(u8) { - /// defaults - defaults: StringMap, +_none, + /// automatic + automatic, - /// prefix - prefix: []const u8, + /// classic + classic, - pub fn decode(reader: anytype) anyerror!LoadedEnvConfig { - var this = std.mem.zeroes(LoadedEnvConfig); +_, - this.dotenv = try reader.readValue(DotEnvBehavior); - this.defaults = try reader.readValue(StringMap); - this.prefix = try reader.readValue([]const u8); - return this; - } + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeEnum(this.dotenv); - try writer.writeValue(this.defaults); - try writer.writeValue(this.prefix); - } - }; + +}; - pub const FrameworkConfig = struct { - /// package - package: ?[]const u8 = null, +pub const Jsx = struct { +/// factory +factory: []const u8, - /// client - client: ?[]const u8 = null, +/// runtime +runtime: JsxRuntime, - /// server - server: ?[]const u8 = null, +/// fragment +fragment: []const u8, - /// development - development: ?bool = null, +/// development +development: bool = false, - /// client_env - client_env: ?EnvConfig = null, +/// import_source +import_source: []const u8, - /// server_env - server_env: ?EnvConfig = null, +/// react_fast_refresh +react_fast_refresh: bool = false, - /// client_css_in_js - client_css_in_js: ?CssInJsBehavior = null, - pub fn decode(reader: anytype) anyerror!FrameworkConfig { - var this = std.mem.zeroes(FrameworkConfig); +pub fn decode(reader: anytype) anyerror!Jsx { + var this = std.mem.zeroes(Jsx); - while (true) { - switch (try reader.readByte()) { - 0 => { - return this; - }, + this.factory = try reader.readValue([]const u8); + this.runtime = try reader.readValue(JsxRuntime); + this.fragment = try reader.readValue([]const u8); + this.development = try reader.readValue(bool); + this.import_source = try reader.readValue([]const u8); + this.react_fast_refresh = try reader.readValue(bool); + return this; +} - 1 => { - this.package = try reader.readValue([]const u8); - }, - 2 => { - this.client = try reader.readValue([]const u8); - }, - 3 => { - this.server = try reader.readValue([]const u8); - }, - 4 => { - this.development = try reader.readValue(bool); - }, - 5 => { - this.client_env = try reader.readValue(EnvConfig); - }, - 6 => { - this.server_env = try reader.readValue(EnvConfig); - }, - 7 => { - this.client_css_in_js = try reader.readValue(CssInJsBehavior); - }, - else => { - return error.InvalidMessage; - }, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.factory); + try writer.writeEnum(this.runtime); + try writer.writeValue(this.fragment); + try writer.writeInt(@intCast(u8, @boolToInt(this.development))); + try writer.writeValue(this.import_source); + try writer.writeInt(@intCast(u8, @boolToInt(this.react_fast_refresh))); +} + +}; + +pub const StringPointer = packed struct { +/// offset +offset: u32 = 0, + +/// length +length: u32 = 0, + + +pub fn decode(reader: anytype) anyerror!StringPointer { + var this = std.mem.zeroes(StringPointer); + + this.offset = try reader.readValue(u32); + this.length = try reader.readValue(u32); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.offset); + try writer.writeInt(this.length); +} + +}; + +pub const JavascriptBundledModule = struct { +/// path +path: StringPointer, + +/// code +code: StringPointer, + +/// package_id +package_id: u32 = 0, + +/// id +id: u32 = 0, + +/// path_extname_length +path_extname_length: u8 = 0, + + +pub fn decode(reader: anytype) anyerror!JavascriptBundledModule { + var this = std.mem.zeroes(JavascriptBundledModule); + + this.path = try reader.readValue(StringPointer); + this.code = try reader.readValue(StringPointer); + this.package_id = try reader.readValue(u32); + this.id = try reader.readValue(u32); + this.path_extname_length = try reader.readValue(u8); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.path); + try writer.writeValue(this.code); + try writer.writeInt(this.package_id); + try writer.writeInt(this.id); + try writer.writeInt(this.path_extname_length); +} + +}; + +pub const JavascriptBundledPackage = struct { +/// name +name: StringPointer, + +/// version +version: StringPointer, + +/// hash +hash: u32 = 0, + +/// modules_offset +modules_offset: u32 = 0, + +/// modules_length +modules_length: u32 = 0, + + +pub fn decode(reader: anytype) anyerror!JavascriptBundledPackage { + var this = std.mem.zeroes(JavascriptBundledPackage); + + this.name = try reader.readValue(StringPointer); + this.version = try reader.readValue(StringPointer); + this.hash = try reader.readValue(u32); + this.modules_offset = try reader.readValue(u32); + this.modules_length = try reader.readValue(u32); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.name); + try writer.writeValue(this.version); + try writer.writeInt(this.hash); + try writer.writeInt(this.modules_offset); + try writer.writeInt(this.modules_length); +} + +}; + +pub const JavascriptBundle = struct { +/// modules +modules: []const JavascriptBundledModule, + +/// packages +packages: []const JavascriptBundledPackage, + +/// etag +etag: []const u8, + +/// generated_at +generated_at: u32 = 0, + +/// app_package_json_dependencies_hash +app_package_json_dependencies_hash: []const u8, + +/// import_from_name +import_from_name: []const u8, + +/// manifest_string +manifest_string: []const u8, + + +pub fn decode(reader: anytype) anyerror!JavascriptBundle { + var this = std.mem.zeroes(JavascriptBundle); + + this.modules = try reader.readArray(JavascriptBundledModule); + this.packages = try reader.readArray(JavascriptBundledPackage); + this.etag = try reader.readArray(u8); + this.generated_at = try reader.readValue(u32); + this.app_package_json_dependencies_hash = try reader.readArray(u8); + this.import_from_name = try reader.readArray(u8); + this.manifest_string = try reader.readArray(u8); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray(JavascriptBundledModule, this.modules); + try writer.writeArray(JavascriptBundledPackage, this.packages); + try writer.writeArray(u8, this.etag); + try writer.writeInt(this.generated_at); + try writer.writeArray(u8, this.app_package_json_dependencies_hash); + try writer.writeArray(u8, this.import_from_name); + try writer.writeArray(u8, this.manifest_string); +} + +}; + +pub const JavascriptBundleContainer = struct { +/// bundle_format_version +bundle_format_version: ?u32 = null, + +/// routes +routes: ?LoadedRouteConfig = null, + +/// framework +framework: ?LoadedFramework = null, + +/// bundle +bundle: ?JavascriptBundle = null, + +/// code_length +code_length: ?u32 = null, + + +pub fn decode(reader: anytype) anyerror!JavascriptBundleContainer { + var this = std.mem.zeroes(JavascriptBundleContainer); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.bundle_format_version = try reader.readValue(u32); +}, + 2 => { + this.routes = try reader.readValue(LoadedRouteConfig); +}, + 3 => { + this.framework = try reader.readValue(LoadedFramework); +}, + 4 => { + this.bundle = try reader.readValue(JavascriptBundle); +}, + 5 => { + this.code_length = try reader.readValue(u32); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.bundle_format_version) |bundle_format_version| { + try writer.writeFieldID(1); + try writer.writeInt(bundle_format_version); +} +if (this.routes) |routes| { + try writer.writeFieldID(2); + try writer.writeValue(routes); +} +if (this.framework) |framework| { + try writer.writeFieldID(3); + try writer.writeValue(framework); +} +if (this.bundle) |bundle| { + try writer.writeFieldID(4); + try writer.writeValue(bundle); +} +if (this.code_length) |code_length| { + try writer.writeFieldID(5); + try writer.writeInt(code_length); +} +try writer.endMessage(); +} + +}; + +pub const ScanDependencyMode = enum(u8) { + +_none, + /// app + app, + + /// all + all, + +_, + + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); } - } - unreachable; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - if (this.package) |package| { - try writer.writeFieldID(1); - try writer.writeValue(package); - } - if (this.client) |client| { - try writer.writeFieldID(2); - try writer.writeValue(client); - } - if (this.server) |server| { - try writer.writeFieldID(3); - try writer.writeValue(server); - } - if (this.development) |development| { - try writer.writeFieldID(4); - try writer.writeInt(@intCast(u8, @boolToInt(development))); - } - if (this.client_env) |client_env| { - try writer.writeFieldID(5); - try writer.writeValue(client_env); - } - if (this.server_env) |server_env| { - try writer.writeFieldID(6); - try writer.writeValue(server_env); - } - if (this.client_css_in_js) |client_css_in_js| { - try writer.writeFieldID(7); - try writer.writeEnum(client_css_in_js); - } - try writer.endMessage(); - } - }; + +}; - pub const LoadedFramework = struct { - /// entry_point - entry_point: []const u8, +pub const ModuleImportType = enum(u8) { - /// package - package: []const u8, +_none, + /// import + import, - /// development - development: bool = false, + /// require + require, - /// client - client: bool = false, +_, - /// env - env: LoadedEnvConfig, + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - /// client_css_in_js - client_css_in_js: CssInJsBehavior, + +}; - pub fn decode(reader: anytype) anyerror!LoadedFramework { - var this = std.mem.zeroes(LoadedFramework); +pub const ModuleImportRecord = struct { +/// kind +kind: ModuleImportType, - this.entry_point = try reader.readValue([]const u8); - this.package = try reader.readValue([]const u8); - this.development = try reader.readValue(bool); - this.client = try reader.readValue(bool); - this.env = try reader.readValue(LoadedEnvConfig); - this.client_css_in_js = try reader.readValue(CssInJsBehavior); - return this; - } +/// path +path: []const u8, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.entry_point); - try writer.writeValue(this.package); - try writer.writeInt(@intCast(u8, @boolToInt(this.development))); - try writer.writeInt(@intCast(u8, @boolToInt(this.client))); - try writer.writeValue(this.env); - try writer.writeEnum(this.client_css_in_js); - } - }; +/// dynamic +dynamic: bool = false, - pub const LoadedRouteConfig = struct { - /// dir - dir: []const u8, - /// extensions - extensions: []const []const u8, +pub fn decode(reader: anytype) anyerror!ModuleImportRecord { + var this = std.mem.zeroes(ModuleImportRecord); - /// static_dir - static_dir: []const u8, + this.kind = try reader.readValue(ModuleImportType); + this.path = try reader.readValue([]const u8); + this.dynamic = try reader.readValue(bool); + return this; +} - /// asset_prefix - asset_prefix: []const u8, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeEnum(this.kind); + try writer.writeValue(this.path); + try writer.writeInt(@intCast(u8, @boolToInt(this.dynamic))); +} - pub fn decode(reader: anytype) anyerror!LoadedRouteConfig { - var this = std.mem.zeroes(LoadedRouteConfig); +}; - this.dir = try reader.readValue([]const u8); - this.extensions = try reader.readArray([]const u8); - this.static_dir = try reader.readValue([]const u8); - this.asset_prefix = try reader.readValue([]const u8); - return this; - } +pub const Module = struct { +/// path +path: []const u8, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.dir); - try writer.writeArray([]const u8, this.extensions); - try writer.writeValue(this.static_dir); - try writer.writeValue(this.asset_prefix); - } - }; +/// imports +imports: []const ModuleImportRecord, - pub const RouteConfig = struct { - /// dir - dir: []const []const u8, - /// extensions - extensions: []const []const u8, +pub fn decode(reader: anytype) anyerror!Module { + var this = std.mem.zeroes(Module); - /// static_dir - static_dir: ?[]const u8 = null, + this.path = try reader.readValue([]const u8); + this.imports = try reader.readArray(ModuleImportRecord); + return this; +} - /// asset_prefix - asset_prefix: ?[]const u8 = null, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.path); + try writer.writeArray(ModuleImportRecord, this.imports); +} - pub fn decode(reader: anytype) anyerror!RouteConfig { - var this = std.mem.zeroes(RouteConfig); +}; - while (true) { - switch (try reader.readByte()) { - 0 => { - return this; - }, +pub const StringMap = struct { +/// keys +keys: []const []const u8, - 1 => { - this.dir = try reader.readArray([]const u8); - }, - 2 => { - this.extensions = try reader.readArray([]const u8); - }, - 3 => { - this.static_dir = try reader.readValue([]const u8); - }, - 4 => { - this.asset_prefix = try reader.readValue([]const u8); - }, - else => { - return error.InvalidMessage; - }, +/// values +values: []const []const u8, + + +pub fn decode(reader: anytype) anyerror!StringMap { + var this = std.mem.zeroes(StringMap); + + this.keys = try reader.readArray([]const u8); + this.values = try reader.readArray([]const u8); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray([]const u8, this.keys); + try writer.writeArray([]const u8, this.values); +} + +}; + +pub const LoaderMap = struct { +/// extensions +extensions: []const []const u8, + +/// loaders +loaders: []const Loader, + + +pub fn decode(reader: anytype) anyerror!LoaderMap { + var this = std.mem.zeroes(LoaderMap); + + this.extensions = try reader.readArray([]const u8); + this.loaders = try reader.readArray(Loader); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray([]const u8, this.extensions); + try writer.writeArray(Loader, this.loaders); +} + +}; + +pub const DotEnvBehavior = enum(u32) { + +_none, + /// disable + disable, + + /// prefix + prefix, + + /// load_all + load_all, + +_, + + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); } - } - unreachable; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - if (this.dir) |dir| { - try writer.writeFieldID(1); - try writer.writeArray([]const u8, dir); - } - if (this.extensions) |extensions| { - try writer.writeFieldID(2); - try writer.writeArray([]const u8, extensions); - } - if (this.static_dir) |static_dir| { - try writer.writeFieldID(3); - try writer.writeValue(static_dir); - } - if (this.asset_prefix) |asset_prefix| { - try writer.writeFieldID(4); - try writer.writeValue(asset_prefix); - } - try writer.endMessage(); - } - }; + +}; - pub const TransformOptions = struct { - /// jsx - jsx: ?Jsx = null, +pub const EnvConfig = struct { +/// prefix +prefix: ?[]const u8 = null, + +/// defaults +defaults: ?StringMap = null, + + +pub fn decode(reader: anytype) anyerror!EnvConfig { + var this = std.mem.zeroes(EnvConfig); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.prefix = try reader.readValue([]const u8); +}, + 2 => { + this.defaults = try reader.readValue(StringMap); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} - /// tsconfig_override - tsconfig_override: ?[]const u8 = null, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.prefix) |prefix| { + try writer.writeFieldID(1); + try writer.writeValue(prefix); +} +if (this.defaults) |defaults| { + try writer.writeFieldID(2); + try writer.writeValue(defaults); +} +try writer.endMessage(); +} - /// resolve - resolve: ?ResolveMode = null, +}; - /// origin - origin: ?[]const u8 = null, +pub const LoadedEnvConfig = struct { +/// dotenv +dotenv: DotEnvBehavior, - /// absolute_working_dir - absolute_working_dir: ?[]const u8 = null, +/// defaults +defaults: StringMap, - /// define - define: ?StringMap = null, +/// prefix +prefix: []const u8, - /// preserve_symlinks - preserve_symlinks: ?bool = null, - /// entry_points - entry_points: []const []const u8, +pub fn decode(reader: anytype) anyerror!LoadedEnvConfig { + var this = std.mem.zeroes(LoadedEnvConfig); - /// write - write: ?bool = null, + this.dotenv = try reader.readValue(DotEnvBehavior); + this.defaults = try reader.readValue(StringMap); + this.prefix = try reader.readValue([]const u8); + return this; +} - /// inject - inject: []const []const u8, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeEnum(this.dotenv); + try writer.writeValue(this.defaults); + try writer.writeValue(this.prefix); +} - /// output_dir - output_dir: ?[]const u8 = null, +}; - /// external - external: []const []const u8, +pub const FrameworkConfig = struct { +/// package +package: ?[]const u8 = null, + +/// client +client: ?FrameworkEntryPointMessage = null, + +/// server +server: ?FrameworkEntryPointMessage = null, + +/// fallback +fallback: ?FrameworkEntryPointMessage = null, + +/// development +development: ?bool = null, + +/// client_css_in_js +client_css_in_js: ?CssInJsBehavior = null, + + +pub fn decode(reader: anytype) anyerror!FrameworkConfig { + var this = std.mem.zeroes(FrameworkConfig); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.package = try reader.readValue([]const u8); +}, + 2 => { + this.client = try reader.readValue(FrameworkEntryPointMessage); +}, + 3 => { + this.server = try reader.readValue(FrameworkEntryPointMessage); +}, + 4 => { + this.fallback = try reader.readValue(FrameworkEntryPointMessage); +}, + 5 => { + this.development = try reader.readValue(bool); +}, + 6 => { + this.client_css_in_js = try reader.readValue(CssInJsBehavior); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} - /// loaders - loaders: ?LoaderMap = null, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.package) |package| { + try writer.writeFieldID(1); + try writer.writeValue(package); +} +if (this.client) |client| { + try writer.writeFieldID(2); + try writer.writeValue(client); +} +if (this.server) |server| { + try writer.writeFieldID(3); + try writer.writeValue(server); +} +if (this.fallback) |fallback| { + try writer.writeFieldID(4); + try writer.writeValue(fallback); +} +if (this.development) |development| { + try writer.writeFieldID(5); + try writer.writeInt(@intCast(u8, @boolToInt(development))); +} +if (this.client_css_in_js) |client_css_in_js| { + try writer.writeFieldID(6); + try writer.writeEnum(client_css_in_js); +} +try writer.endMessage(); +} - /// main_fields - main_fields: []const []const u8, +}; - /// platform - platform: ?Platform = null, +pub const FrameworkEntryPoint = struct { +/// kind +kind: FrameworkEntryPointType, - /// serve - serve: ?bool = null, +/// path +path: []const u8, - /// extension_order - extension_order: []const []const u8, +/// env +env: LoadedEnvConfig, - /// generate_node_module_bundle - generate_node_module_bundle: ?bool = null, - /// node_modules_bundle_path - node_modules_bundle_path: ?[]const u8 = null, +pub fn decode(reader: anytype) anyerror!FrameworkEntryPoint { + var this = std.mem.zeroes(FrameworkEntryPoint); - /// node_modules_bundle_path_server - node_modules_bundle_path_server: ?[]const u8 = null, + this.kind = try reader.readValue(FrameworkEntryPointType); + this.path = try reader.readValue([]const u8); + this.env = try reader.readValue(LoadedEnvConfig); + return this; +} - /// framework - framework: ?FrameworkConfig = null, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeEnum(this.kind); + try writer.writeValue(this.path); + try writer.writeValue(this.env); +} - /// router - router: ?RouteConfig = null, +}; - /// no_summary - no_summary: ?bool = null, +pub const FrameworkEntryPointMap = struct { +/// client +client: ?FrameworkEntryPoint = null, + +/// server +server: ?FrameworkEntryPoint = null, + +/// fallback +fallback: ?FrameworkEntryPoint = null, + + +pub fn decode(reader: anytype) anyerror!FrameworkEntryPointMap { + var this = std.mem.zeroes(FrameworkEntryPointMap); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.client = try reader.readValue(FrameworkEntryPoint); +}, + 2 => { + this.server = try reader.readValue(FrameworkEntryPoint); +}, + 3 => { + this.fallback = try reader.readValue(FrameworkEntryPoint); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} - pub fn decode(reader: anytype) anyerror!TransformOptions { - var this = std.mem.zeroes(TransformOptions); +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.client) |client| { + try writer.writeFieldID(1); + try writer.writeValue(client); +} +if (this.server) |server| { + try writer.writeFieldID(2); + try writer.writeValue(server); +} +if (this.fallback) |fallback| { + try writer.writeFieldID(3); + try writer.writeValue(fallback); +} +try writer.endMessage(); +} - while (true) { - switch (try reader.readByte()) { - 0 => { - return this; - }, +}; - 1 => { - this.jsx = try reader.readValue(Jsx); - }, - 2 => { - this.tsconfig_override = try reader.readValue([]const u8); - }, - 3 => { - this.resolve = try reader.readValue(ResolveMode); - }, - 4 => { - this.origin = try reader.readValue([]const u8); - }, - 5 => { - this.absolute_working_dir = try reader.readValue([]const u8); - }, - 6 => { - this.define = try reader.readValue(StringMap); - }, - 7 => { - this.preserve_symlinks = try reader.readValue(bool); - }, - 8 => { - this.entry_points = try reader.readArray([]const u8); - }, - 9 => { - this.write = try reader.readValue(bool); - }, - 10 => { - this.inject = try reader.readArray([]const u8); - }, - 11 => { - this.output_dir = try reader.readValue([]const u8); - }, - 12 => { - this.external = try reader.readArray([]const u8); - }, - 13 => { - this.loaders = try reader.readValue(LoaderMap); - }, - 14 => { - this.main_fields = try reader.readArray([]const u8); - }, - 15 => { - this.platform = try reader.readValue(Platform); - }, - 16 => { - this.serve = try reader.readValue(bool); - }, - 17 => { - this.extension_order = try reader.readArray([]const u8); - }, - 18 => { - this.generate_node_module_bundle = try reader.readValue(bool); - }, - 19 => { - this.node_modules_bundle_path = try reader.readValue([]const u8); - }, - 20 => { - this.node_modules_bundle_path_server = try reader.readValue([]const u8); - }, - 21 => { - this.framework = try reader.readValue(FrameworkConfig); - }, - 22 => { - this.router = try reader.readValue(RouteConfig); - }, - 23 => { - this.no_summary = try reader.readValue(bool); - }, - else => { - return error.InvalidMessage; - }, +pub const FrameworkEntryPointMessage = struct { +/// path +path: ?[]const u8 = null, + +/// env +env: ?EnvConfig = null, + + +pub fn decode(reader: anytype) anyerror!FrameworkEntryPointMessage { + var this = std.mem.zeroes(FrameworkEntryPointMessage); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.path = try reader.readValue([]const u8); +}, + 2 => { + this.env = try reader.readValue(EnvConfig); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.path) |path| { + try writer.writeFieldID(1); + try writer.writeValue(path); +} +if (this.env) |env| { + try writer.writeFieldID(2); + try writer.writeValue(env); +} +try writer.endMessage(); +} + +}; + +pub const LoadedFramework = struct { +/// package +package: []const u8, + +/// development +development: bool = false, + +/// entry_points +entry_points: FrameworkEntryPointMap, + +/// client_css_in_js +client_css_in_js: CssInJsBehavior, + + +pub fn decode(reader: anytype) anyerror!LoadedFramework { + var this = std.mem.zeroes(LoadedFramework); + + this.package = try reader.readValue([]const u8); + this.development = try reader.readValue(bool); + this.entry_points = try reader.readValue(FrameworkEntryPointMap); + this.client_css_in_js = try reader.readValue(CssInJsBehavior); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.package); + try writer.writeInt(@intCast(u8, @boolToInt(this.development))); + try writer.writeValue(this.entry_points); + try writer.writeEnum(this.client_css_in_js); +} + +}; + +pub const LoadedRouteConfig = struct { +/// dir +dir: []const u8, + +/// extensions +extensions: []const []const u8, + +/// static_dir +static_dir: []const u8, + +/// asset_prefix +asset_prefix: []const u8, + + +pub fn decode(reader: anytype) anyerror!LoadedRouteConfig { + var this = std.mem.zeroes(LoadedRouteConfig); + + this.dir = try reader.readValue([]const u8); + this.extensions = try reader.readArray([]const u8); + this.static_dir = try reader.readValue([]const u8); + this.asset_prefix = try reader.readValue([]const u8); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.dir); + try writer.writeArray([]const u8, this.extensions); + try writer.writeValue(this.static_dir); + try writer.writeValue(this.asset_prefix); +} + +}; + +pub const RouteConfig = struct { +/// dir +dir: []const []const u8, + +/// extensions +extensions: []const []const u8, + +/// static_dir +static_dir: ?[]const u8 = null, + +/// asset_prefix +asset_prefix: ?[]const u8 = null, + + +pub fn decode(reader: anytype) anyerror!RouteConfig { + var this = std.mem.zeroes(RouteConfig); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.dir = try reader.readArray([]const u8); +}, + 2 => { + this.extensions = try reader.readArray([]const u8); +}, + 3 => { + this.static_dir = try reader.readValue([]const u8); +}, + 4 => { + this.asset_prefix = try reader.readValue([]const u8); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.dir) |dir| { + try writer.writeFieldID(1); + try writer.writeArray([]const u8, dir); +} +if (this.extensions) |extensions| { + try writer.writeFieldID(2); + try writer.writeArray([]const u8, extensions); +} +if (this.static_dir) |static_dir| { + try writer.writeFieldID(3); + try writer.writeValue(static_dir); +} +if (this.asset_prefix) |asset_prefix| { + try writer.writeFieldID(4); + try writer.writeValue(asset_prefix); +} +try writer.endMessage(); +} + +}; + +pub const TransformOptions = struct { +/// jsx +jsx: ?Jsx = null, + +/// tsconfig_override +tsconfig_override: ?[]const u8 = null, + +/// resolve +resolve: ?ResolveMode = null, + +/// origin +origin: ?[]const u8 = null, + +/// absolute_working_dir +absolute_working_dir: ?[]const u8 = null, + +/// define +define: ?StringMap = null, + +/// preserve_symlinks +preserve_symlinks: ?bool = null, + +/// entry_points +entry_points: []const []const u8, + +/// write +write: ?bool = null, + +/// inject +inject: []const []const u8, + +/// output_dir +output_dir: ?[]const u8 = null, + +/// external +external: []const []const u8, + +/// loaders +loaders: ?LoaderMap = null, + +/// main_fields +main_fields: []const []const u8, + +/// platform +platform: ?Platform = null, + +/// serve +serve: ?bool = null, + +/// extension_order +extension_order: []const []const u8, + +/// generate_node_module_bundle +generate_node_module_bundle: ?bool = null, + +/// node_modules_bundle_path +node_modules_bundle_path: ?[]const u8 = null, + +/// node_modules_bundle_path_server +node_modules_bundle_path_server: ?[]const u8 = null, + +/// framework +framework: ?FrameworkConfig = null, + +/// router +router: ?RouteConfig = null, + +/// no_summary +no_summary: ?bool = null, + + +pub fn decode(reader: anytype) anyerror!TransformOptions { + var this = std.mem.zeroes(TransformOptions); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.jsx = try reader.readValue(Jsx); +}, + 2 => { + this.tsconfig_override = try reader.readValue([]const u8); +}, + 3 => { + this.resolve = try reader.readValue(ResolveMode); +}, + 4 => { + this.origin = try reader.readValue([]const u8); +}, + 5 => { + this.absolute_working_dir = try reader.readValue([]const u8); +}, + 6 => { + this.define = try reader.readValue(StringMap); +}, + 7 => { + this.preserve_symlinks = try reader.readValue(bool); +}, + 8 => { + this.entry_points = try reader.readArray([]const u8); +}, + 9 => { + this.write = try reader.readValue(bool); +}, + 10 => { + this.inject = try reader.readArray([]const u8); +}, + 11 => { + this.output_dir = try reader.readValue([]const u8); +}, + 12 => { + this.external = try reader.readArray([]const u8); +}, + 13 => { + this.loaders = try reader.readValue(LoaderMap); +}, + 14 => { + this.main_fields = try reader.readArray([]const u8); +}, + 15 => { + this.platform = try reader.readValue(Platform); +}, + 16 => { + this.serve = try reader.readValue(bool); +}, + 17 => { + this.extension_order = try reader.readArray([]const u8); +}, + 18 => { + this.generate_node_module_bundle = try reader.readValue(bool); +}, + 19 => { + this.node_modules_bundle_path = try reader.readValue([]const u8); +}, + 20 => { + this.node_modules_bundle_path_server = try reader.readValue([]const u8); +}, + 21 => { + this.framework = try reader.readValue(FrameworkConfig); +}, + 22 => { + this.router = try reader.readValue(RouteConfig); +}, + 23 => { + this.no_summary = try reader.readValue(bool); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.jsx) |jsx| { + try writer.writeFieldID(1); + try writer.writeValue(jsx); +} +if (this.tsconfig_override) |tsconfig_override| { + try writer.writeFieldID(2); + try writer.writeValue(tsconfig_override); +} +if (this.resolve) |resolve| { + try writer.writeFieldID(3); + try writer.writeEnum(resolve); +} +if (this.origin) |origin| { + try writer.writeFieldID(4); + try writer.writeValue(origin); +} +if (this.absolute_working_dir) |absolute_working_dir| { + try writer.writeFieldID(5); + try writer.writeValue(absolute_working_dir); +} +if (this.define) |define| { + try writer.writeFieldID(6); + try writer.writeValue(define); +} +if (this.preserve_symlinks) |preserve_symlinks| { + try writer.writeFieldID(7); + try writer.writeInt(@intCast(u8, @boolToInt(preserve_symlinks))); +} +if (this.entry_points) |entry_points| { + try writer.writeFieldID(8); + try writer.writeArray([]const u8, entry_points); +} +if (this.write) |write| { + try writer.writeFieldID(9); + try writer.writeInt(@intCast(u8, @boolToInt(write))); +} +if (this.inject) |inject| { + try writer.writeFieldID(10); + try writer.writeArray([]const u8, inject); +} +if (this.output_dir) |output_dir| { + try writer.writeFieldID(11); + try writer.writeValue(output_dir); +} +if (this.external) |external| { + try writer.writeFieldID(12); + try writer.writeArray([]const u8, external); +} +if (this.loaders) |loaders| { + try writer.writeFieldID(13); + try writer.writeValue(loaders); +} +if (this.main_fields) |main_fields| { + try writer.writeFieldID(14); + try writer.writeArray([]const u8, main_fields); +} +if (this.platform) |platform| { + try writer.writeFieldID(15); + try writer.writeEnum(platform); +} +if (this.serve) |serve| { + try writer.writeFieldID(16); + try writer.writeInt(@intCast(u8, @boolToInt(serve))); +} +if (this.extension_order) |extension_order| { + try writer.writeFieldID(17); + try writer.writeArray([]const u8, extension_order); +} +if (this.generate_node_module_bundle) |generate_node_module_bundle| { + try writer.writeFieldID(18); + try writer.writeInt(@intCast(u8, @boolToInt(generate_node_module_bundle))); +} +if (this.node_modules_bundle_path) |node_modules_bundle_path| { + try writer.writeFieldID(19); + try writer.writeValue(node_modules_bundle_path); +} +if (this.node_modules_bundle_path_server) |node_modules_bundle_path_server| { + try writer.writeFieldID(20); + try writer.writeValue(node_modules_bundle_path_server); +} +if (this.framework) |framework| { + try writer.writeFieldID(21); + try writer.writeValue(framework); +} +if (this.router) |router| { + try writer.writeFieldID(22); + try writer.writeValue(router); +} +if (this.no_summary) |no_summary| { + try writer.writeFieldID(23); + try writer.writeInt(@intCast(u8, @boolToInt(no_summary))); +} +try writer.endMessage(); +} + +}; + +pub const FileHandle = struct { +/// path +path: []const u8, + +/// size +size: u32 = 0, + +/// fd +fd: u32 = 0, + + +pub fn decode(reader: anytype) anyerror!FileHandle { + var this = std.mem.zeroes(FileHandle); + + this.path = try reader.readValue([]const u8); + this.size = try reader.readValue(u32); + this.fd = try reader.readValue(u32); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.path); + try writer.writeInt(this.size); + try writer.writeInt(this.fd); +} + +}; + +pub const Transform = struct { +/// handle +handle: ?FileHandle = null, + +/// path +path: ?[]const u8 = null, + +/// contents +contents: []const u8, + +/// loader +loader: ?Loader = null, + +/// options +options: ?TransformOptions = null, + + +pub fn decode(reader: anytype) anyerror!Transform { + var this = std.mem.zeroes(Transform); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.handle = try reader.readValue(FileHandle); +}, + 2 => { + this.path = try reader.readValue([]const u8); +}, + 3 => { + this.contents = try reader.readArray(u8); +}, + 4 => { + this.loader = try reader.readValue(Loader); +}, + 5 => { + this.options = try reader.readValue(TransformOptions); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.handle) |handle| { + try writer.writeFieldID(1); + try writer.writeValue(handle); +} +if (this.path) |path| { + try writer.writeFieldID(2); + try writer.writeValue(path); +} +if (this.contents) |contents| { + try writer.writeFieldID(3); + try writer.writeArray(u8, contents); +} +if (this.loader) |loader| { + try writer.writeFieldID(4); + try writer.writeEnum(loader); +} +if (this.options) |options| { + try writer.writeFieldID(5); + try writer.writeValue(options); +} +try writer.endMessage(); +} + +}; + +pub const TransformResponseStatus = enum(u32) { + +_none, + /// success + success, + + /// fail + fail, + +_, + + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); } - } - unreachable; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - if (this.jsx) |jsx| { - try writer.writeFieldID(1); - try writer.writeValue(jsx); - } - if (this.tsconfig_override) |tsconfig_override| { - try writer.writeFieldID(2); - try writer.writeValue(tsconfig_override); - } - if (this.resolve) |resolve| { - try writer.writeFieldID(3); - try writer.writeEnum(resolve); - } - if (this.origin) |origin| { - try writer.writeFieldID(4); - try writer.writeValue(origin); - } - if (this.absolute_working_dir) |absolute_working_dir| { - try writer.writeFieldID(5); - try writer.writeValue(absolute_working_dir); - } - if (this.define) |define| { - try writer.writeFieldID(6); - try writer.writeValue(define); - } - if (this.preserve_symlinks) |preserve_symlinks| { - try writer.writeFieldID(7); - try writer.writeInt(@intCast(u8, @boolToInt(preserve_symlinks))); - } - if (this.entry_points) |entry_points| { - try writer.writeFieldID(8); - try writer.writeArray([]const u8, entry_points); - } - if (this.write) |write| { - try writer.writeFieldID(9); - try writer.writeInt(@intCast(u8, @boolToInt(write))); - } - if (this.inject) |inject| { - try writer.writeFieldID(10); - try writer.writeArray([]const u8, inject); - } - if (this.output_dir) |output_dir| { - try writer.writeFieldID(11); - try writer.writeValue(output_dir); - } - if (this.external) |external| { - try writer.writeFieldID(12); - try writer.writeArray([]const u8, external); - } - if (this.loaders) |loaders| { - try writer.writeFieldID(13); - try writer.writeValue(loaders); - } - if (this.main_fields) |main_fields| { - try writer.writeFieldID(14); - try writer.writeArray([]const u8, main_fields); - } - if (this.platform) |platform| { - try writer.writeFieldID(15); - try writer.writeEnum(platform); - } - if (this.serve) |serve| { - try writer.writeFieldID(16); - try writer.writeInt(@intCast(u8, @boolToInt(serve))); - } - if (this.extension_order) |extension_order| { - try writer.writeFieldID(17); - try writer.writeArray([]const u8, extension_order); - } - if (this.generate_node_module_bundle) |generate_node_module_bundle| { - try writer.writeFieldID(18); - try writer.writeInt(@intCast(u8, @boolToInt(generate_node_module_bundle))); - } - if (this.node_modules_bundle_path) |node_modules_bundle_path| { - try writer.writeFieldID(19); - try writer.writeValue(node_modules_bundle_path); - } - if (this.node_modules_bundle_path_server) |node_modules_bundle_path_server| { - try writer.writeFieldID(20); - try writer.writeValue(node_modules_bundle_path_server); - } - if (this.framework) |framework| { - try writer.writeFieldID(21); - try writer.writeValue(framework); - } - if (this.router) |router| { - try writer.writeFieldID(22); - try writer.writeValue(router); - } - if (this.no_summary) |no_summary| { - try writer.writeFieldID(23); - try writer.writeInt(@intCast(u8, @boolToInt(no_summary))); - } - try writer.endMessage(); - } - }; + +}; - pub const FileHandle = struct { - /// path - path: []const u8, +pub const OutputFile = struct { +/// data +data: []const u8, - /// size - size: u32 = 0, +/// path +path: []const u8, - /// fd - fd: u32 = 0, - pub fn decode(reader: anytype) anyerror!FileHandle { - var this = std.mem.zeroes(FileHandle); +pub fn decode(reader: anytype) anyerror!OutputFile { + var this = std.mem.zeroes(OutputFile); - this.path = try reader.readValue([]const u8); - this.size = try reader.readValue(u32); - this.fd = try reader.readValue(u32); - return this; - } + this.data = try reader.readArray(u8); + this.path = try reader.readValue([]const u8); + return this; +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.path); - try writer.writeInt(this.size); - try writer.writeInt(this.fd); - } - }; +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray(u8, this.data); + try writer.writeValue(this.path); +} - pub const Transform = struct { - /// handle - handle: ?FileHandle = null, +}; - /// path - path: ?[]const u8 = null, +pub const TransformResponse = struct { +/// status +status: TransformResponseStatus, - /// contents - contents: []const u8, +/// files +files: []const OutputFile, - /// loader - loader: ?Loader = null, +/// errors +errors: []const Message, - /// options - options: ?TransformOptions = null, - pub fn decode(reader: anytype) anyerror!Transform { - var this = std.mem.zeroes(Transform); +pub fn decode(reader: anytype) anyerror!TransformResponse { + var this = std.mem.zeroes(TransformResponse); - while (true) { - switch (try reader.readByte()) { - 0 => { - return this; - }, + this.status = try reader.readValue(TransformResponseStatus); + this.files = try reader.readArray(OutputFile); + this.errors = try reader.readArray(Message); + return this; +} - 1 => { - this.handle = try reader.readValue(FileHandle); - }, - 2 => { - this.path = try reader.readValue([]const u8); - }, - 3 => { - this.contents = try reader.readArray(u8); - }, - 4 => { - this.loader = try reader.readValue(Loader); - }, - 5 => { - this.options = try reader.readValue(TransformOptions); - }, - else => { - return error.InvalidMessage; - }, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeEnum(this.status); + try writer.writeArray(OutputFile, this.files); + try writer.writeArray(Message, this.errors); +} + +}; + +pub const MessageLevel = enum(u32) { + +_none, + /// err + err, + + /// warn + warn, + + /// note + note, + + /// debug + debug, + +_, + + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); } - } - unreachable; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - if (this.handle) |handle| { - try writer.writeFieldID(1); - try writer.writeValue(handle); - } - if (this.path) |path| { - try writer.writeFieldID(2); - try writer.writeValue(path); - } - if (this.contents) |contents| { - try writer.writeFieldID(3); - try writer.writeArray(u8, contents); - } - if (this.loader) |loader| { - try writer.writeFieldID(4); - try writer.writeEnum(loader); - } - if (this.options) |options| { - try writer.writeFieldID(5); - try writer.writeValue(options); - } - try writer.endMessage(); - } - }; + +}; - pub const TransformResponseStatus = enum(u32) { - _none, - /// success - success, +pub const Location = struct { +/// file +file: []const u8, - /// fail - fail, +/// namespace +namespace: []const u8, - _, +/// line +line: i32 = 0, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +/// column +column: i32 = 0, - pub const OutputFile = struct { - /// data - data: []const u8, +/// line_text +line_text: []const u8, - /// path - path: []const u8, +/// suggestion +suggestion: []const u8, - pub fn decode(reader: anytype) anyerror!OutputFile { - var this = std.mem.zeroes(OutputFile); +/// offset +offset: u32 = 0, - this.data = try reader.readArray(u8); - this.path = try reader.readValue([]const u8); - return this; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray(u8, this.data); - try writer.writeValue(this.path); - } - }; +pub fn decode(reader: anytype) anyerror!Location { + var this = std.mem.zeroes(Location); - pub const TransformResponse = struct { - /// status - status: TransformResponseStatus, + this.file = try reader.readValue([]const u8); + this.namespace = try reader.readValue([]const u8); + this.line = try reader.readValue(i32); + this.column = try reader.readValue(i32); + this.line_text = try reader.readValue([]const u8); + this.suggestion = try reader.readValue([]const u8); + this.offset = try reader.readValue(u32); + return this; +} - /// files - files: []const OutputFile, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeValue(this.file); + try writer.writeValue(this.namespace); + try writer.writeInt(this.line); + try writer.writeInt(this.column); + try writer.writeValue(this.line_text); + try writer.writeValue(this.suggestion); + try writer.writeInt(this.offset); +} - /// errors - errors: []const Message, +}; - pub fn decode(reader: anytype) anyerror!TransformResponse { - var this = std.mem.zeroes(TransformResponse); +pub const MessageData = struct { +/// text +text: ?[]const u8 = null, + +/// location +location: ?Location = null, + + +pub fn decode(reader: anytype) anyerror!MessageData { + var this = std.mem.zeroes(MessageData); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.text = try reader.readValue([]const u8); +}, + 2 => { + this.location = try reader.readValue(Location); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} - this.status = try reader.readValue(TransformResponseStatus); - this.files = try reader.readArray(OutputFile); - this.errors = try reader.readArray(Message); - return this; - } +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.text) |text| { + try writer.writeFieldID(1); + try writer.writeValue(text); +} +if (this.location) |location| { + try writer.writeFieldID(2); + try writer.writeValue(location); +} +try writer.endMessage(); +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeEnum(this.status); - try writer.writeArray(OutputFile, this.files); - try writer.writeArray(Message, this.errors); - } - }; +}; - pub const MessageKind = enum(u32) { - _none, - /// err - err, +pub const MessageMeta = struct { +/// resolve +resolve: ?[]const u8 = null, + +/// build +build: ?bool = null, + + +pub fn decode(reader: anytype) anyerror!MessageMeta { + var this = std.mem.zeroes(MessageMeta); + + while(true) { + switch (try reader.readByte()) { + 0 => { return this; }, + + 1 => { + this.resolve = try reader.readValue([]const u8); +}, + 2 => { + this.build = try reader.readValue(bool); +}, + else => { + return error.InvalidMessage; + }, + } + } +unreachable; +} - /// warn - warn, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { +if (this.resolve) |resolve| { + try writer.writeFieldID(1); + try writer.writeValue(resolve); +} +if (this.build) |build| { + try writer.writeFieldID(2); + try writer.writeInt(@intCast(u8, @boolToInt(build))); +} +try writer.endMessage(); +} - /// note - note, +}; - /// debug - debug, +pub const Message = struct { +/// level +level: MessageLevel, - _, +/// data +data: MessageData, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +/// notes +notes: []const MessageData, - pub const Location = struct { - /// file - file: []const u8, +/// on +on: MessageMeta, - /// namespace - namespace: []const u8, - /// line - line: i32 = 0, +pub fn decode(reader: anytype) anyerror!Message { + var this = std.mem.zeroes(Message); - /// column - column: i32 = 0, + this.level = try reader.readValue(MessageLevel); + this.data = try reader.readValue(MessageData); + this.notes = try reader.readArray(MessageData); + this.on = try reader.readValue(MessageMeta); + return this; +} - /// line_text - line_text: []const u8, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeEnum(this.level); + try writer.writeValue(this.data); + try writer.writeArray(MessageData, this.notes); + try writer.writeValue(this.on); +} - /// suggestion - suggestion: []const u8, +}; - /// offset - offset: u32 = 0, +pub const Log = struct { +/// warnings +warnings: u32 = 0, - pub fn decode(reader: anytype) anyerror!Location { - var this = std.mem.zeroes(Location); +/// errors +errors: u32 = 0, - this.file = try reader.readValue([]const u8); - this.namespace = try reader.readValue([]const u8); - this.line = try reader.readValue(i32); - this.column = try reader.readValue(i32); - this.line_text = try reader.readValue([]const u8); - this.suggestion = try reader.readValue([]const u8); - this.offset = try reader.readValue(u32); - return this; - } +/// msgs +msgs: []const Message, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeValue(this.file); - try writer.writeValue(this.namespace); - try writer.writeInt(this.line); - try writer.writeInt(this.column); - try writer.writeValue(this.line_text); - try writer.writeValue(this.suggestion); - try writer.writeInt(this.offset); - } - }; - pub const MessageData = struct { - /// text - text: ?[]const u8 = null, +pub fn decode(reader: anytype) anyerror!Log { + var this = std.mem.zeroes(Log); - /// location - location: ?Location = null, + this.warnings = try reader.readValue(u32); + this.errors = try reader.readValue(u32); + this.msgs = try reader.readArray(Message); + return this; +} - pub fn decode(reader: anytype) anyerror!MessageData { - var this = std.mem.zeroes(MessageData); +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.warnings); + try writer.writeInt(this.errors); + try writer.writeArray(Message, this.msgs); +} - while (true) { - switch (try reader.readByte()) { - 0 => { - return this; - }, +}; - 1 => { - this.text = try reader.readValue([]const u8); - }, - 2 => { - this.location = try reader.readValue(Location); - }, - else => { - return error.InvalidMessage; - }, +pub const Reloader = enum(u8) { + +_none, + /// disable + disable, + + /// live + live, + + /// fast_refresh + fast_refresh, + +_, + + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); } - } - unreachable; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - if (this.text) |text| { - try writer.writeFieldID(1); - try writer.writeValue(text); - } - if (this.location) |location| { - try writer.writeFieldID(2); - try writer.writeValue(location); - } - try writer.endMessage(); - } - }; + +}; - pub const Message = struct { - /// kind - kind: MessageKind, +pub const WebsocketMessageKind = enum(u8) { - /// data - data: MessageData, +_none, + /// welcome + welcome, - /// notes - notes: []const MessageData, + /// file_change_notification + file_change_notification, - pub fn decode(reader: anytype) anyerror!Message { - var this = std.mem.zeroes(Message); + /// build_success + build_success, - this.kind = try reader.readValue(MessageKind); - this.data = try reader.readValue(MessageData); - this.notes = try reader.readArray(MessageData); - return this; - } + /// build_fail + build_fail, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeEnum(this.kind); - try writer.writeValue(this.data); - try writer.writeArray(MessageData, this.notes); - } - }; + /// manifest_success + manifest_success, - pub const Log = struct { - /// warnings - warnings: u32 = 0, + /// manifest_fail + manifest_fail, - /// errors - errors: u32 = 0, +_, - /// msgs - msgs: []const Message, + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - pub fn decode(reader: anytype) anyerror!Log { - var this = std.mem.zeroes(Log); + +}; - this.warnings = try reader.readValue(u32); - this.errors = try reader.readValue(u32); - this.msgs = try reader.readArray(Message); - return this; - } +pub const WebsocketCommandKind = enum(u8) { - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.warnings); - try writer.writeInt(this.errors); - try writer.writeArray(Message, this.msgs); - } - }; +_none, + /// build + build, - pub const Reloader = enum(u8) { - _none, - /// disable - disable, + /// manifest + manifest, - /// live - live, +_, - /// fast_refresh - fast_refresh, + pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { + return try std.json.stringify(@tagName(self), opts, o); + } - _, + +}; - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +pub const WebsocketMessage = struct { +/// timestamp +timestamp: u32 = 0, - pub const WebsocketMessageKind = enum(u8) { - _none, - /// welcome - welcome, +/// kind +kind: WebsocketMessageKind, - /// file_change_notification - file_change_notification, - /// build_success - build_success, +pub fn decode(reader: anytype) anyerror!WebsocketMessage { + var this = std.mem.zeroes(WebsocketMessage); - /// build_fail - build_fail, + this.timestamp = try reader.readValue(u32); + this.kind = try reader.readValue(WebsocketMessageKind); + return this; +} - /// manifest_success - manifest_success, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.timestamp); + try writer.writeEnum(this.kind); +} - /// manifest_fail - manifest_fail, +}; - _, +pub const WebsocketMessageWelcome = struct { +/// epoch +epoch: u32 = 0, - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +/// javascriptReloader +javascript_reloader: Reloader, - pub const WebsocketCommandKind = enum(u8) { - _none, - /// build - build, - /// manifest - manifest, +pub fn decode(reader: anytype) anyerror!WebsocketMessageWelcome { + var this = std.mem.zeroes(WebsocketMessageWelcome); - _, + this.epoch = try reader.readValue(u32); + this.javascript_reloader = try reader.readValue(Reloader); + return this; +} - pub fn jsonStringify(self: *const @This(), opts: anytype, o: anytype) !void { - return try std.json.stringify(@tagName(self), opts, o); - } - }; +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.epoch); + try writer.writeEnum(this.javascript_reloader); +} - pub const WebsocketMessage = struct { - /// timestamp - timestamp: u32 = 0, +}; - /// kind - kind: WebsocketMessageKind, +pub const WebsocketMessageFileChangeNotification = struct { +/// id +id: u32 = 0, - pub fn decode(reader: anytype) anyerror!WebsocketMessage { - var this = std.mem.zeroes(WebsocketMessage); +/// loader +loader: Loader, - this.timestamp = try reader.readValue(u32); - this.kind = try reader.readValue(WebsocketMessageKind); - return this; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.timestamp); - try writer.writeEnum(this.kind); - } - }; +pub fn decode(reader: anytype) anyerror!WebsocketMessageFileChangeNotification { + var this = std.mem.zeroes(WebsocketMessageFileChangeNotification); - pub const WebsocketMessageWelcome = struct { - /// epoch - epoch: u32 = 0, + this.id = try reader.readValue(u32); + this.loader = try reader.readValue(Loader); + return this; +} - /// javascriptReloader - javascript_reloader: Reloader, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.id); + try writer.writeEnum(this.loader); +} - pub fn decode(reader: anytype) anyerror!WebsocketMessageWelcome { - var this = std.mem.zeroes(WebsocketMessageWelcome); +}; - this.epoch = try reader.readValue(u32); - this.javascript_reloader = try reader.readValue(Reloader); - return this; - } +pub const WebsocketCommand = struct { +/// kind +kind: WebsocketCommandKind, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.epoch); - try writer.writeEnum(this.javascript_reloader); - } - }; +/// timestamp +timestamp: u32 = 0, - pub const WebsocketMessageFileChangeNotification = struct { - /// id - id: u32 = 0, - /// loader - loader: Loader, +pub fn decode(reader: anytype) anyerror!WebsocketCommand { + var this = std.mem.zeroes(WebsocketCommand); - pub fn decode(reader: anytype) anyerror!WebsocketMessageFileChangeNotification { - var this = std.mem.zeroes(WebsocketMessageFileChangeNotification); + this.kind = try reader.readValue(WebsocketCommandKind); + this.timestamp = try reader.readValue(u32); + return this; +} - this.id = try reader.readValue(u32); - this.loader = try reader.readValue(Loader); - return this; - } +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeEnum(this.kind); + try writer.writeInt(this.timestamp); +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.id); - try writer.writeEnum(this.loader); - } - }; +}; - pub const WebsocketCommand = struct { - /// kind - kind: WebsocketCommandKind, +pub const WebsocketCommandBuild = packed struct { +/// id +id: u32 = 0, - /// timestamp - timestamp: u32 = 0, - pub fn decode(reader: anytype) anyerror!WebsocketCommand { - var this = std.mem.zeroes(WebsocketCommand); +pub fn decode(reader: anytype) anyerror!WebsocketCommandBuild { + var this = std.mem.zeroes(WebsocketCommandBuild); - this.kind = try reader.readValue(WebsocketCommandKind); - this.timestamp = try reader.readValue(u32); - return this; - } + this.id = try reader.readValue(u32); + return this; +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeEnum(this.kind); - try writer.writeInt(this.timestamp); - } - }; +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.id); +} - pub const WebsocketCommandBuild = packed struct { - /// id - id: u32 = 0, +}; - pub fn decode(reader: anytype) anyerror!WebsocketCommandBuild { - var this = std.mem.zeroes(WebsocketCommandBuild); +pub const WebsocketCommandManifest = packed struct { +/// id +id: u32 = 0, - this.id = try reader.readValue(u32); - return this; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.id); - } - }; +pub fn decode(reader: anytype) anyerror!WebsocketCommandManifest { + var this = std.mem.zeroes(WebsocketCommandManifest); - pub const WebsocketCommandManifest = packed struct { - /// id - id: u32 = 0, + this.id = try reader.readValue(u32); + return this; +} - pub fn decode(reader: anytype) anyerror!WebsocketCommandManifest { - var this = std.mem.zeroes(WebsocketCommandManifest); +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.id); +} - this.id = try reader.readValue(u32); - return this; - } +}; - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.id); - } - }; +pub const WebsocketMessageBuildSuccess = struct { +/// id +id: u32 = 0, - pub const WebsocketMessageBuildSuccess = struct { - /// id - id: u32 = 0, +/// from_timestamp +from_timestamp: u32 = 0, - /// from_timestamp - from_timestamp: u32 = 0, +/// loader +loader: Loader, - /// loader - loader: Loader, +/// module_path +module_path: []const u8, - /// module_path - module_path: []const u8, +/// blob_length +blob_length: u32 = 0, - /// blob_length - blob_length: u32 = 0, - pub fn decode(reader: anytype) anyerror!WebsocketMessageBuildSuccess { - var this = std.mem.zeroes(WebsocketMessageBuildSuccess); +pub fn decode(reader: anytype) anyerror!WebsocketMessageBuildSuccess { + var this = std.mem.zeroes(WebsocketMessageBuildSuccess); - this.id = try reader.readValue(u32); - this.from_timestamp = try reader.readValue(u32); - this.loader = try reader.readValue(Loader); - this.module_path = try reader.readValue([]const u8); - this.blob_length = try reader.readValue(u32); - return this; - } + this.id = try reader.readValue(u32); + this.from_timestamp = try reader.readValue(u32); + this.loader = try reader.readValue(Loader); + this.module_path = try reader.readValue([]const u8); + this.blob_length = try reader.readValue(u32); + return this; +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.id); - try writer.writeInt(this.from_timestamp); - try writer.writeEnum(this.loader); - try writer.writeValue(this.module_path); - try writer.writeInt(this.blob_length); - } - }; +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.id); + try writer.writeInt(this.from_timestamp); + try writer.writeEnum(this.loader); + try writer.writeValue(this.module_path); + try writer.writeInt(this.blob_length); +} - pub const WebsocketMessageBuildFailure = struct { - /// id - id: u32 = 0, +}; - /// from_timestamp - from_timestamp: u32 = 0, +pub const WebsocketMessageBuildFailure = struct { +/// id +id: u32 = 0, - /// loader - loader: Loader, +/// from_timestamp +from_timestamp: u32 = 0, - /// module_path - module_path: []const u8, +/// loader +loader: Loader, - /// log - log: Log, +/// module_path +module_path: []const u8, - pub fn decode(reader: anytype) anyerror!WebsocketMessageBuildFailure { - var this = std.mem.zeroes(WebsocketMessageBuildFailure); +/// log +log: Log, - this.id = try reader.readValue(u32); - this.from_timestamp = try reader.readValue(u32); - this.loader = try reader.readValue(Loader); - this.module_path = try reader.readValue([]const u8); - this.log = try reader.readValue(Log); - return this; - } - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.id); - try writer.writeInt(this.from_timestamp); - try writer.writeEnum(this.loader); - try writer.writeValue(this.module_path); - try writer.writeValue(this.log); - } - }; +pub fn decode(reader: anytype) anyerror!WebsocketMessageBuildFailure { + var this = std.mem.zeroes(WebsocketMessageBuildFailure); - pub const DependencyManifest = struct { - /// ids - ids: []const u32, + this.id = try reader.readValue(u32); + this.from_timestamp = try reader.readValue(u32); + this.loader = try reader.readValue(Loader); + this.module_path = try reader.readValue([]const u8); + this.log = try reader.readValue(Log); + return this; +} - pub fn decode(reader: anytype) anyerror!DependencyManifest { - var this = std.mem.zeroes(DependencyManifest); +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.id); + try writer.writeInt(this.from_timestamp); + try writer.writeEnum(this.loader); + try writer.writeValue(this.module_path); + try writer.writeValue(this.log); +} - this.ids = try reader.readArray(u32); - return this; - } +}; - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray(u32, this.ids); - } - }; +pub const DependencyManifest = struct { +/// ids +ids: []const u32, - pub const FileList = struct { - /// ptrs - ptrs: []const StringPointer, - /// files - files: []const u8, +pub fn decode(reader: anytype) anyerror!DependencyManifest { + var this = std.mem.zeroes(DependencyManifest); - pub fn decode(reader: anytype) anyerror!FileList { - var this = std.mem.zeroes(FileList); + this.ids = try reader.readArray(u32); + return this; +} - this.ptrs = try reader.readArray(StringPointer); - this.files = try reader.readValue([]const u8); - return this; - } +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray(u32, this.ids); +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray(StringPointer, this.ptrs); - try writer.writeValue(this.files); - } - }; +}; - pub const WebsocketMessageResolveIDs = struct { - /// id - id: []const u32, +pub const FileList = struct { +/// ptrs +ptrs: []const StringPointer, - /// list - list: FileList, +/// files +files: []const u8, - pub fn decode(reader: anytype) anyerror!WebsocketMessageResolveIDs { - var this = std.mem.zeroes(WebsocketMessageResolveIDs); - this.id = try reader.readArray(u32); - this.list = try reader.readValue(FileList); - return this; - } +pub fn decode(reader: anytype) anyerror!FileList { + var this = std.mem.zeroes(FileList); - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray(u32, this.id); - try writer.writeValue(this.list); - } - }; + this.ptrs = try reader.readArray(StringPointer); + this.files = try reader.readValue([]const u8); + return this; +} - pub const WebsocketCommandResolveIDs = struct { - /// ptrs - ptrs: []const StringPointer, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray(StringPointer, this.ptrs); + try writer.writeValue(this.files); +} - /// files - files: []const u8, +}; - pub fn decode(reader: anytype) anyerror!WebsocketCommandResolveIDs { - var this = std.mem.zeroes(WebsocketCommandResolveIDs); +pub const WebsocketMessageResolveIDs = struct { +/// id +id: []const u32, - this.ptrs = try reader.readArray(StringPointer); - this.files = try reader.readValue([]const u8); - return this; - } +/// list +list: FileList, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeArray(StringPointer, this.ptrs); - try writer.writeValue(this.files); - } - }; - pub const WebsocketMessageManifestSuccess = struct { - /// id - id: u32 = 0, +pub fn decode(reader: anytype) anyerror!WebsocketMessageResolveIDs { + var this = std.mem.zeroes(WebsocketMessageResolveIDs); - /// module_path - module_path: []const u8, + this.id = try reader.readArray(u32); + this.list = try reader.readValue(FileList); + return this; +} - /// loader - loader: Loader, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray(u32, this.id); + try writer.writeValue(this.list); +} - /// manifest - manifest: DependencyManifest, +}; - pub fn decode(reader: anytype) anyerror!WebsocketMessageManifestSuccess { - var this = std.mem.zeroes(WebsocketMessageManifestSuccess); +pub const WebsocketCommandResolveIDs = struct { +/// ptrs +ptrs: []const StringPointer, - this.id = try reader.readValue(u32); - this.module_path = try reader.readValue([]const u8); - this.loader = try reader.readValue(Loader); - this.manifest = try reader.readValue(DependencyManifest); - return this; - } +/// files +files: []const u8, - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.id); - try writer.writeValue(this.module_path); - try writer.writeEnum(this.loader); - try writer.writeValue(this.manifest); - } - }; - pub const WebsocketMessageManifestFailure = struct { - /// id - id: u32 = 0, +pub fn decode(reader: anytype) anyerror!WebsocketCommandResolveIDs { + var this = std.mem.zeroes(WebsocketCommandResolveIDs); - /// from_timestamp - from_timestamp: u32 = 0, + this.ptrs = try reader.readArray(StringPointer); + this.files = try reader.readValue([]const u8); + return this; +} - /// loader - loader: Loader, +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeArray(StringPointer, this.ptrs); + try writer.writeValue(this.files); +} - /// log - log: Log, +}; - pub fn decode(reader: anytype) anyerror!WebsocketMessageManifestFailure { - var this = std.mem.zeroes(WebsocketMessageManifestFailure); +pub const WebsocketMessageManifestSuccess = struct { +/// id +id: u32 = 0, - this.id = try reader.readValue(u32); - this.from_timestamp = try reader.readValue(u32); - this.loader = try reader.readValue(Loader); - this.log = try reader.readValue(Log); - return this; - } +/// module_path +module_path: []const u8, + +/// loader +loader: Loader, + +/// manifest +manifest: DependencyManifest, + + +pub fn decode(reader: anytype) anyerror!WebsocketMessageManifestSuccess { + var this = std.mem.zeroes(WebsocketMessageManifestSuccess); + + this.id = try reader.readValue(u32); + this.module_path = try reader.readValue([]const u8); + this.loader = try reader.readValue(Loader); + this.manifest = try reader.readValue(DependencyManifest); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.id); + try writer.writeValue(this.module_path); + try writer.writeEnum(this.loader); + try writer.writeValue(this.manifest); +} + +}; + +pub const WebsocketMessageManifestFailure = struct { +/// id +id: u32 = 0, + +/// from_timestamp +from_timestamp: u32 = 0, + +/// loader +loader: Loader, + +/// log +log: Log, + + +pub fn decode(reader: anytype) anyerror!WebsocketMessageManifestFailure { + var this = std.mem.zeroes(WebsocketMessageManifestFailure); + + this.id = try reader.readValue(u32); + this.from_timestamp = try reader.readValue(u32); + this.loader = try reader.readValue(Loader); + this.log = try reader.readValue(Log); + return this; +} + +pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.id); + try writer.writeInt(this.from_timestamp); + try writer.writeEnum(this.loader); + try writer.writeValue(this.log); +} - pub fn encode(this: *const @This(), writer: anytype) anyerror!void { - try writer.writeInt(this.id); - try writer.writeInt(this.from_timestamp); - try writer.writeEnum(this.loader); - try writer.writeValue(this.log); - } - }; }; + +}; + + const ExamplePackedStruct = packed struct { len: u32 = 0, offset: u32 = 0, |