aboutsummaryrefslogtreecommitdiff
path: root/src/api
diff options
context:
space:
mode:
authorGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-14 21:28:13 -0700
committerGravatar Jarred Sumner <jarred@jarredsumner.com> 2021-08-14 21:28:13 -0700
commitd95ffe63023c09ea792d4f0379374f7c6c7975e6 (patch)
tree6dfb29fd239d81fbca04182b718376efb08721dc /src/api
parent76bb26de8302f4dd1c833496cb7b5f2f4e808ce8 (diff)
downloadbun-d95ffe63023c09ea792d4f0379374f7c6c7975e6.tar.gz
bun-d95ffe63023c09ea792d4f0379374f7c6c7975e6.tar.zst
bun-d95ffe63023c09ea792d4f0379374f7c6c7975e6.zip
.env works
Former-commit-id: 45ee7874f2c8566c3034743161031b0859423f41
Diffstat (limited to 'src/api')
-rw-r--r--src/api/schema.d.ts38
-rw-r--r--src/api/schema.js153
-rw-r--r--src/api/schema.peechy28
-rw-r--r--src/api/schema.zig150
4 files changed, 265 insertions, 104 deletions
diff --git a/src/api/schema.d.ts b/src/api/schema.d.ts
index 1077a34f2..0b80700c5 100644
--- a/src/api/schema.d.ts
+++ b/src/api/schema.d.ts
@@ -96,6 +96,19 @@ type uint32 = number;
2: "require",
require: "require"
}
+ export enum DotEnvBehavior {
+ disable = 1,
+ prefix = 2,
+ load_all = 3
+ }
+ export const DotEnvBehaviorKeys = {
+ 1: "disable",
+ disable: "disable",
+ 2: "prefix",
+ prefix: "prefix",
+ 3: "load_all",
+ load_all: "load_all"
+ }
export enum TransformResponseStatus {
success = 1,
fail = 2
@@ -236,15 +249,24 @@ type uint32 = number;
loaders: Loader[];
}
+ export interface EnvConfig {
+ prefix?: string;
+ defaults?: StringMap;
+ }
+
+ export interface LoadedEnvConfig {
+ dotenv: DotEnvBehavior;
+ defaults: StringMap;
+ prefix: string;
+ }
+
export interface FrameworkConfig {
package?: string;
client?: string;
server?: string;
development?: boolean;
- client_defines?: StringMap;
- server_defines?: StringMap;
- client_defines_prefix?: string;
- server_defines_prefix?: string;
+ client_env?: EnvConfig;
+ server_env?: EnvConfig;
}
export interface LoadedFramework {
@@ -252,9 +274,7 @@ type uint32 = number;
package: string;
development: boolean;
client: boolean;
- define_defaults: StringMap;
- define_prefix: string;
- has_define_prefix: boolean;
+ env: LoadedEnvConfig;
}
export interface LoadedRouteConfig {
@@ -446,6 +466,10 @@ type uint32 = number;
export declare function decodeStringMap(buffer: ByteBuffer): StringMap;
export declare function encodeLoaderMap(message: LoaderMap, bb: ByteBuffer): void;
export declare function decodeLoaderMap(buffer: ByteBuffer): LoaderMap;
+ export declare function encodeEnvConfig(message: EnvConfig, bb: ByteBuffer): void;
+ export declare function decodeEnvConfig(buffer: ByteBuffer): EnvConfig;
+ export declare function encodeLoadedEnvConfig(message: LoadedEnvConfig, bb: ByteBuffer): void;
+ 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 encodeLoadedFramework(message: LoadedFramework, bb: ByteBuffer): void;
diff --git a/src/api/schema.js b/src/api/schema.js
index 178d95662..3a76caedf 100644
--- a/src/api/schema.js
+++ b/src/api/schema.js
@@ -588,6 +588,97 @@ bb.writeByte(encoded);
}
}
+const DotEnvBehavior = {
+ "1": 1,
+ "2": 2,
+ "3": 3,
+ "disable": 1,
+ "prefix": 2,
+ "load_all": 3
+};
+const DotEnvBehaviorKeys = {
+ "1": "disable",
+ "2": "prefix",
+ "3": "load_all",
+ "disable": "disable",
+ "prefix": "prefix",
+ "load_all": "load_all"
+};
+
+function decodeEnvConfig(bb) {
+ var result = {};
+
+ while (true) {
+ switch (bb.readByte()) {
+ case 0:
+ return result;
+
+ case 1:
+ result["prefix"] = bb.readString();
+ break;
+
+ case 2:
+ result["defaults"] = decodeStringMap(bb);
+ break;
+
+ default:
+ throw new Error("Attempted to parse invalid message");
+ }
+ }
+}
+
+function encodeEnvConfig(message, bb) {
+
+ var value = message["prefix"];
+ if (value != null) {
+ bb.writeByte(1);
+ bb.writeString(value);
+ }
+
+ var value = message["defaults"];
+ if (value != null) {
+ bb.writeByte(2);
+ encodeStringMap(value, bb);
+ }
+ bb.writeByte(0);
+
+}
+
+function decodeLoadedEnvConfig(bb) {
+ var result = {};
+
+ result["dotenv"] = DotEnvBehavior[bb.readVarUint()];
+ result["defaults"] = decodeStringMap(bb);
+ result["prefix"] = bb.readString();
+ return result;
+}
+
+function encodeLoadedEnvConfig(message, bb) {
+
+ var value = message["dotenv"];
+ if (value != null) {
+ var encoded = DotEnvBehavior[value];
+if (encoded === void 0) throw new Error("Invalid value " + JSON.stringify(value) + " for enum \"DotEnvBehavior\"");
+bb.writeVarUint(encoded);
+ } else {
+ throw new Error("Missing required field \"dotenv\"");
+ }
+
+ var value = message["defaults"];
+ if (value != null) {
+ encodeStringMap(value, bb);
+ } else {
+ throw new Error("Missing required field \"defaults\"");
+ }
+
+ var value = message["prefix"];
+ if (value != null) {
+ bb.writeString(value);
+ } else {
+ throw new Error("Missing required field \"prefix\"");
+ }
+
+}
function decodeFrameworkConfig(bb) {
var result = {};
@@ -614,19 +705,11 @@ function decodeFrameworkConfig(bb) {
break;
case 5:
- result["client_defines"] = decodeStringMap(bb);
+ result["client_env"] = decodeEnvConfig(bb);
break;
case 6:
- result["server_defines"] = decodeStringMap(bb);
- break;
-
- case 7:
- result["client_defines_prefix"] = bb.readString();
- break;
-
- case 8:
- result["server_defines_prefix"] = bb.readString();
+ result["server_env"] = decodeEnvConfig(bb);
break;
default:
@@ -661,28 +744,16 @@ function encodeFrameworkConfig(message, bb) {
bb.writeByte(value);
}
- var value = message["client_defines"];
+ var value = message["client_env"];
if (value != null) {
bb.writeByte(5);
- encodeStringMap(value, bb);
+ encodeEnvConfig(value, bb);
}
- var value = message["server_defines"];
+ var value = message["server_env"];
if (value != null) {
bb.writeByte(6);
- encodeStringMap(value, bb);
- }
-
- var value = message["client_defines_prefix"];
- if (value != null) {
- bb.writeByte(7);
- bb.writeString(value);
- }
-
- var value = message["server_defines_prefix"];
- if (value != null) {
- bb.writeByte(8);
- bb.writeString(value);
+ encodeEnvConfig(value, bb);
}
bb.writeByte(0);
@@ -695,9 +766,7 @@ function decodeLoadedFramework(bb) {
result["package"] = bb.readString();
result["development"] = !!bb.readByte();
result["client"] = !!bb.readByte();
- result["define_defaults"] = decodeStringMap(bb);
- result["define_prefix"] = bb.readString();
- result["has_define_prefix"] = !!bb.readByte();
+ result["env"] = decodeLoadedEnvConfig(bb);
return result;
}
@@ -731,25 +800,11 @@ function encodeLoadedFramework(message, bb) {
throw new Error("Missing required field \"client\"");
}
- var value = message["define_defaults"];
+ var value = message["env"];
if (value != null) {
- encodeStringMap(value, bb);
- } else {
- throw new Error("Missing required field \"define_defaults\"");
- }
-
- var value = message["define_prefix"];
- if (value != null) {
- bb.writeString(value);
- } else {
- throw new Error("Missing required field \"define_prefix\"");
- }
-
- var value = message["has_define_prefix"];
- if (value != null) {
- bb.writeByte(value);
+ encodeLoadedEnvConfig(value, bb);
} else {
- throw new Error("Missing required field \"has_define_prefix\"");
+ throw new Error("Missing required field \"env\"");
}
}
@@ -2099,6 +2154,12 @@ export { decodeStringMap }
export { encodeStringMap }
export { decodeLoaderMap }
export { encodeLoaderMap }
+export { DotEnvBehavior }
+export { DotEnvBehaviorKeys }
+export { decodeEnvConfig }
+export { encodeEnvConfig }
+export { decodeLoadedEnvConfig }
+export { encodeLoadedEnvConfig }
export { decodeFrameworkConfig }
export { encodeFrameworkConfig }
export { decodeLoadedFramework }
diff --git a/src/api/schema.peechy b/src/api/schema.peechy
index 864c6b114..431fab3c1 100644
--- a/src/api/schema.peechy
+++ b/src/api/schema.peechy
@@ -135,15 +135,31 @@ struct LoaderMap {
Loader[] loaders;
}
+enum DotEnvBehavior {
+ disable = 1;
+ prefix = 2;
+ load_all = 3;
+}
+
+message EnvConfig {
+ string prefix = 1;
+ StringMap defaults = 2;
+}
+
+struct LoadedEnvConfig {
+ DotEnvBehavior dotenv;
+
+ StringMap defaults;
+ string prefix;
+}
+
message FrameworkConfig {
string package = 1;
string client = 2;
string server = 3;
bool development = 4;
- StringMap client_defines = 5;
- StringMap server_defines = 6;
- string client_defines_prefix = 7;
- string server_defines_prefix = 8;
+ EnvConfig client_env = 5;
+ EnvConfig server_env = 6;
}
struct LoadedFramework {
@@ -151,9 +167,7 @@ struct LoadedFramework {
string package;
bool development;
bool client;
- StringMap define_defaults;
- string define_prefix;
- bool has_define_prefix;
+ LoadedEnvConfig env;
}
struct LoadedRouteConfig {
diff --git a/src/api/schema.zig b/src/api/schema.zig
index 344a60a28..ffb949a1f 100644
--- a/src/api/schema.zig
+++ b/src/api/schema.zig
@@ -779,6 +779,98 @@ pub fn encode(this: *const @This(), writer: anytype) anyerror!void {
};
+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);
+ }
+
+
+};
+
+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;
+}
+
+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,
+
+/// defaults
+defaults: StringMap,
+
+/// prefix
+prefix: []const u8,
+
+
+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 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,
@@ -792,17 +884,11 @@ server: ?[]const u8 = null,
/// development
development: ?bool = null,
-/// client_defines
-client_defines: ?StringMap = null,
+/// client_env
+client_env: ?EnvConfig = null,
-/// server_defines
-server_defines: ?StringMap = null,
-
-/// client_defines_prefix
-client_defines_prefix: ?[]const u8 = null,
-
-/// server_defines_prefix
-server_defines_prefix: ?[]const u8 = null,
+/// server_env
+server_env: ?EnvConfig = null,
pub fn decode(reader: anytype) anyerror!FrameworkConfig {
@@ -825,16 +911,10 @@ pub fn decode(reader: anytype) anyerror!FrameworkConfig {
this.development = try reader.readValue(bool);
},
5 => {
- this.client_defines = try reader.readValue(StringMap);
+ this.client_env = try reader.readValue(EnvConfig);
},
6 => {
- this.server_defines = try reader.readValue(StringMap);
-},
- 7 => {
- this.client_defines_prefix = try reader.readValue([]const u8);
-},
- 8 => {
- this.server_defines_prefix = try reader.readValue([]const u8);
+ this.server_env = try reader.readValue(EnvConfig);
},
else => {
return error.InvalidMessage;
@@ -861,21 +941,13 @@ if (this.development) |development| {
try writer.writeFieldID(4);
try writer.writeInt(@intCast(u8, @boolToInt(development)));
}
-if (this.client_defines) |client_defines| {
+if (this.client_env) |client_env| {
try writer.writeFieldID(5);
- try writer.writeValue(client_defines);
+ try writer.writeValue(client_env);
}
-if (this.server_defines) |server_defines| {
+if (this.server_env) |server_env| {
try writer.writeFieldID(6);
- try writer.writeValue(server_defines);
-}
-if (this.client_defines_prefix) |client_defines_prefix| {
- try writer.writeFieldID(7);
- try writer.writeValue(client_defines_prefix);
-}
-if (this.server_defines_prefix) |server_defines_prefix| {
- try writer.writeFieldID(8);
- try writer.writeValue(server_defines_prefix);
+ try writer.writeValue(server_env);
}
try writer.endMessage();
}
@@ -895,14 +967,8 @@ development: bool = false,
/// client
client: bool = false,
-/// define_defaults
-define_defaults: StringMap,
-
-/// define_prefix
-define_prefix: []const u8,
-
-/// has_define_prefix
-has_define_prefix: bool = false,
+/// env
+env: LoadedEnvConfig,
pub fn decode(reader: anytype) anyerror!LoadedFramework {
@@ -912,9 +978,7 @@ pub fn decode(reader: anytype) anyerror!LoadedFramework {
this.package = try reader.readValue([]const u8);
this.development = try reader.readValue(bool);
this.client = try reader.readValue(bool);
- this.define_defaults = try reader.readValue(StringMap);
- this.define_prefix = try reader.readValue([]const u8);
- this.has_define_prefix = try reader.readValue(bool);
+ this.env = try reader.readValue(LoadedEnvConfig);
return this;
}
@@ -923,9 +987,7 @@ 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.writeInt(@intCast(u8, @boolToInt(this.client)));
- try writer.writeValue(this.define_defaults);
- try writer.writeValue(this.define_prefix);
- try writer.writeInt(@intCast(u8, @boolToInt(this.has_define_prefix)));
+ try writer.writeValue(this.env);
}
};