aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
Diffstat (limited to 'src/api')
-rw-r--r--src/api/bundle_v2.peechy75
-rw-r--r--src/api/schema.d.ts20
-rw-r--r--src/api/schema.js132
-rw-r--r--src/api/schema.peechy16
-rw-r--r--src/api/schema.zig72
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);
+ }
+ };
};