diff --git a/js/os.ts b/js/os.ts index 30c9743488..a692eeb1a8 100644 --- a/js/os.ts +++ b/js/os.ts @@ -81,12 +81,11 @@ export function codeCache( assert(baseRes == null); // Expect null or error. } -function createEnv(_inner: msg.EnvironRes): { [index: string]: string } { +function createEnv(inner: msg.EnvironRes): { [index: string]: string } { const env: { [index: string]: string } = {}; - for (let i = 0; i < _inner.mapLength(); i++) { - const item = _inner.map(i)!; - + for (let i = 0; i < inner.mapLength(); i++) { + const item = inner.map(i)!; env[item.key()!] = item.value()!; } diff --git a/src/main.rs b/src/main.rs index 0defa68385..b7efd40afa 100644 --- a/src/main.rs +++ b/src/main.rs @@ -31,6 +31,7 @@ mod http_util; pub mod isolate; pub mod libdeno; pub mod msg; +pub mod msg_util; pub mod ops; pub mod permissions; pub mod resources; diff --git a/src/msg.fbs b/src/msg.fbs index f402960a10..5f86ad56a8 100644 --- a/src/msg.fbs +++ b/src/msg.fbs @@ -182,10 +182,10 @@ table SetEnv { } table EnvironRes { - map: [EnvPair]; + map: [KeyValue]; } -table EnvPair { +table KeyValue { key: string; value: string; } diff --git a/src/msg_util.rs b/src/msg_util.rs new file mode 100644 index 0000000000..350e8ac10a --- /dev/null +++ b/src/msg_util.rs @@ -0,0 +1,21 @@ +// Copyright 2018 the Deno authors. All rights reserved. MIT license. +// Helpers for serialization. +use flatbuffers; +use msg; + +pub fn serialize_key_value<'bldr>( + builder: &mut flatbuffers::FlatBufferBuilder<'bldr>, + key: &str, + value: &str, +) -> flatbuffers::WIPOffset> { + let key = builder.create_string(&key); + let value = builder.create_string(&value); + msg::KeyValue::create( + builder, + &msg::KeyValueArgs { + key: Some(key), + value: Some(value), + ..Default::default() + }, + ) +} diff --git a/src/ops.rs b/src/ops.rs index e93ec5cf72..9bca698ba2 100644 --- a/src/ops.rs +++ b/src/ops.rs @@ -8,6 +8,7 @@ use isolate::Isolate; use isolate::IsolateState; use isolate::Op; use msg; +use msg_util; use resources; use resources::Resource; use version; @@ -358,19 +359,8 @@ fn op_env( let builder = &mut FlatBufferBuilder::new(); let vars: Vec<_> = std::env::vars() - .map(|(key, value)| { - let key = builder.create_string(&key); - let value = builder.create_string(&value); - - msg::EnvPair::create( - builder, - &msg::EnvPairArgs { - key: Some(key), - value: Some(value), - ..Default::default() - }, - ) - }).collect(); + .map(|(key, value)| msg_util::serialize_key_value(builder, &key, &value)) + .collect(); let tables = builder.create_vector(&vars); let inner = msg::EnvironRes::create( builder,