diff options
Diffstat (limited to 'src/api')
-rw-r--r-- | src/api/bundle_v2.peechy | 75 | ||||
-rw-r--r-- | src/api/schema.d.ts | 20 | ||||
-rw-r--r-- | src/api/schema.js | 132 | ||||
-rw-r--r-- | src/api/schema.peechy | 16 | ||||
-rw-r--r-- | src/api/schema.zig | 72 |
5 files changed, 240 insertions, 75 deletions
diff --git a/src/api/bundle_v2.peechy b/src/api/bundle_v2.peechy deleted file mode 100644 index db83d257b..000000000 --- a/src/api/bundle_v2.peechy +++ /dev/null @@ -1,75 +0,0 @@ -struct Export { - uint32 part_id; - StringPointer name; -} - - -struct JavascriptBundledPart { - StringPointer code; - - uint32 dependencies_offset; - uint32 dependencies_length; - - uint32 exports_offset; - uint32 exports_length; - - uint32 from_module; - - // The ESM export is this id ("$" + number.toString(16)) - uint32 id; -} - -struct JavascriptBundledModule { - // package-relative path including file extension - StringPointer path; - - uint32 parts_offset; - uint32 parts_length; - - uint32 exports_offset; - uint32 exports_length; - - // index into JavascriptBundle.packages - uint32 package_id; - - // This lets us efficiently compare strings ignoring the extension - byte path_extname_length; -} - -struct JavascriptBundledPackage { - StringPointer name; - StringPointer version; - uint32 hash; - - uint32 modules_offset; - uint32 modules_length; -} - -struct JavascriptBundle { - // These are sorted alphabetically so you can do binary search - JavascriptBundledModule[] modules; - JavascriptBundledPackage[] packages; - - // This is ASCII-encoded so you can send it directly over HTTP - byte[] etag; - - uint32 generated_at; - - byte[] import_from_name; - - // This is what StringPointer refers to - byte[] manifest_string; -} - -message JavascriptBundleContainer { - uint32 bundle_format_version = 1; - - // These go first so if we change JavaScriptBundle we can still read these - LoadedRouteConfig routes = 3; - LoadedFramework framework = 2; - - JavascriptBundle bundle = 4; - - // Don't technically need to store this, but it may be helpful as a sanity check - uint32 code_length = 5; -} diff --git a/src/api/schema.d.ts b/src/api/schema.d.ts index a303f83b9..e406fbc52 100644 --- a/src/api/schema.d.ts +++ b/src/api/schema.d.ts @@ -702,6 +702,22 @@ export interface BunInstall { global_bin_dir?: string; } +export interface ClientServerModule { + moduleId: uint32; + inputName: StringPointer; + assetName: StringPointer; + exportNames: StringPointer; +} + +export interface ClientServerModuleManifest { + version: uint32; + clientModules: ClientServerModule[]; + serverModules: ClientServerModule[]; + ssrModules: ClientServerModule[]; + exportNames: StringPointer[]; + contents: Uint8Array; +} + 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; @@ -816,3 +832,7 @@ export declare function encodeNPMRegistryMap(message: NPMRegistryMap, bb: ByteBu export declare function decodeNPMRegistryMap(buffer: ByteBuffer): NPMRegistryMap; export declare function encodeBunInstall(message: BunInstall, bb: ByteBuffer): void; export declare function decodeBunInstall(buffer: ByteBuffer): BunInstall; +export declare function encodeClientServerModule(message: ClientServerModule, bb: ByteBuffer): void; +export declare function decodeClientServerModule(buffer: ByteBuffer): ClientServerModule; +export declare function encodeClientServerModuleManifest(message: ClientServerModuleManifest, bb: ByteBuffer): void; +export declare function decodeClientServerModuleManifest(buffer: ByteBuffer): ClientServerModuleManifest; diff --git a/src/api/schema.js b/src/api/schema.js index cc25603b3..16c2ca119 100644 --- a/src/api/schema.js +++ b/src/api/schema.js @@ -3155,6 +3155,134 @@ function encodeBunInstall(message, bb) { bb.writeByte(0); } +function decodeClientServerModule(bb) { + var result = {}; + + result["moduleId"] = bb.readUint32(); + result["inputName"] = decodeStringPointer(bb); + result["assetName"] = decodeStringPointer(bb); + result["exportNames"] = decodeStringPointer(bb); + return result; +} + +function encodeClientServerModule(message, bb) { + var value = message["moduleId"]; + if (value != null) { + bb.writeUint32(value); + } else { + throw new Error('Missing required field "moduleId"'); + } + + var value = message["inputName"]; + if (value != null) { + encodeStringPointer(value, bb); + } else { + throw new Error('Missing required field "inputName"'); + } + + var value = message["assetName"]; + if (value != null) { + encodeStringPointer(value, bb); + } else { + throw new Error('Missing required field "assetName"'); + } + + var value = message["exportNames"]; + if (value != null) { + encodeStringPointer(value, bb); + } else { + throw new Error('Missing required field "exportNames"'); + } +} + +function decodeClientServerModuleManifest(bb) { + var result = {}; + + result["version"] = bb.readUint32(); + var length = bb.readVarUint(); + var values = (result["clientModules"] = Array(length)); + for (var i = 0; i < length; i++) values[i] = decodeClientServerModule(bb); + var length = bb.readVarUint(); + var values = (result["serverModules"] = Array(length)); + for (var i = 0; i < length; i++) values[i] = decodeClientServerModule(bb); + var length = bb.readVarUint(); + var values = (result["ssrModules"] = Array(length)); + for (var i = 0; i < length; i++) values[i] = decodeClientServerModule(bb); + var length = bb.readVarUint(); + var values = (result["exportNames"] = Array(length)); + for (var i = 0; i < length; i++) values[i] = decodeStringPointer(bb); + result["contents"] = bb.readByteArray(); + return result; +} + +function encodeClientServerModuleManifest(message, bb) { + var value = message["version"]; + if (value != null) { + bb.writeUint32(value); + } else { + throw new Error('Missing required field "version"'); + } + + var value = message["clientModules"]; + if (value != null) { + var values = value, + n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + encodeClientServerModule(value, bb); + } + } else { + throw new Error('Missing required field "clientModules"'); + } + + var value = message["serverModules"]; + if (value != null) { + var values = value, + n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + encodeClientServerModule(value, bb); + } + } else { + throw new Error('Missing required field "serverModules"'); + } + + var value = message["ssrModules"]; + if (value != null) { + var values = value, + n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + encodeClientServerModule(value, bb); + } + } else { + throw new Error('Missing required field "ssrModules"'); + } + + var value = message["exportNames"]; + if (value != null) { + var values = value, + n = values.length; + bb.writeVarUint(n); + for (var i = 0; i < n; i++) { + value = values[i]; + encodeStringPointer(value, bb); + } + } else { + throw new Error('Missing required field "exportNames"'); + } + + var value = message["contents"]; + if (value != null) { + bb.writeByteArray(value); + } else { + throw new Error('Missing required field "contents"'); + } +} + export { Loader }; export { LoaderKeys }; export { FrameworkEntryPointType }; @@ -3297,3 +3425,7 @@ export { decodeNPMRegistryMap }; export { encodeNPMRegistryMap }; export { decodeBunInstall }; export { encodeBunInstall }; +export { decodeClientServerModule }; +export { encodeClientServerModule }; +export { decodeClientServerModuleManifest }; +export { encodeClientServerModuleManifest }; diff --git a/src/api/schema.peechy b/src/api/schema.peechy index 225fcaac3..f6e3e5617 100644 --- a/src/api/schema.peechy +++ b/src/api/schema.peechy @@ -588,3 +588,19 @@ message BunInstall { string global_dir = 17; string global_bin_dir = 18; } + +struct ClientServerModule { + uint32 moduleId; + StringPointer inputName; + StringPointer assetName; + StringPointer exportNames; +} + +struct ClientServerModuleManifest { + uint32 version; + ClientServerModule[] clientModules; + ClientServerModule[] serverModules; + ClientServerModule[] ssrModules; + StringPointer[] exportNames; + byte[] contents; +} diff --git a/src/api/schema.zig b/src/api/schema.zig index db2cdee49..acac06114 100644 --- a/src/api/schema.zig +++ b/src/api/schema.zig @@ -3039,4 +3039,76 @@ pub const Api = struct { try writer.endMessage(); } }; + + pub const ClientServerModule = struct { + /// moduleId + module_id: u32 = 0, + + /// inputName + input_name: StringPointer, + + /// assetName + asset_name: StringPointer, + + /// exportNames + export_names: StringPointer, + + pub fn decode(reader: anytype) anyerror!ClientServerModule { + var this = std.mem.zeroes(ClientServerModule); + + this.module_id = try reader.readValue(u32); + this.input_name = try reader.readValue(StringPointer); + this.asset_name = try reader.readValue(StringPointer); + this.export_names = try reader.readValue(StringPointer); + return this; + } + + pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.module_id); + try writer.writeValue(@TypeOf(this.input_name), this.input_name); + try writer.writeValue(@TypeOf(this.asset_name), this.asset_name); + try writer.writeValue(@TypeOf(this.export_names), this.export_names); + } + }; + + pub const ClientServerModuleManifest = struct { + /// version + version: u32 = 0, + + /// clientModules + client_modules: []const ClientServerModule, + + /// serverModules + server_modules: []const ClientServerModule, + + /// ssrModules + ssr_modules: []const ClientServerModule, + + /// exportNames + export_names: []const StringPointer, + + /// contents + contents: []const u8, + + pub fn decode(reader: anytype) anyerror!ClientServerModuleManifest { + var this = std.mem.zeroes(ClientServerModuleManifest); + + this.version = try reader.readValue(u32); + this.client_modules = try reader.readArray(ClientServerModule); + this.server_modules = try reader.readArray(ClientServerModule); + this.ssr_modules = try reader.readArray(ClientServerModule); + this.export_names = try reader.readArray(StringPointer); + this.contents = try reader.readArray(u8); + return this; + } + + pub fn encode(this: *const @This(), writer: anytype) anyerror!void { + try writer.writeInt(this.version); + try writer.writeArray(ClientServerModule, this.client_modules); + try writer.writeArray(ClientServerModule, this.server_modules); + try writer.writeArray(ClientServerModule, this.ssr_modules); + try writer.writeArray(StringPointer, this.export_names); + try writer.writeArray(u8, this.contents); + } + }; }; |