summaryrefslogtreecommitdiff
path: root/js/os.ts
diff options
context:
space:
mode:
authorRyan Dahl <ry@tinyclouds.org>2018-07-13 03:24:07 -0400
committerRyan Dahl <ry@tinyclouds.org>2018-07-18 15:43:50 -0400
commit3e51605bc9ca98522fc21a0673e690105f48da98 (patch)
tree1c31da16173d95d6623721414b402d1dcdf069b4 /js/os.ts
parent8a4e3dfda4975540d6e0059248477facfe03c31c (diff)
Execute JS for the first time in Rust rewrite.
Implements code_fetch handler in Rust. Add ability to embed string assets (for typescript declaration files) Remove deno_cc and deno_cc_nosnapshot targets.
Diffstat (limited to 'js/os.ts')
-rw-r--r--js/os.ts32
1 files changed, 13 insertions, 19 deletions
diff --git a/js/os.ts b/js/os.ts
index 0c8ebede9..e4263009f 100644
--- a/js/os.ts
+++ b/js/os.ts
@@ -2,7 +2,8 @@
// All rights reserved. MIT License.
import { ModuleInfo } from "./types";
import { deno as fbs } from "./msg_generated";
-import { assert, typedArrayToArrayBuffer } from "./util";
+import { assert } from "./util";
+import * as util from "./util";
import { flatbuffers } from "flatbuffers";
export function exit(exitCode = 0): void {
@@ -19,8 +20,7 @@ export function codeFetch(
moduleSpecifier: string,
containingFile: string
): ModuleInfo {
- console.log("Hello from codeFetch");
-
+ util.log("os.ts codeFetch", moduleSpecifier, containingFile);
// Send CodeFetch message
const builder = new flatbuffers.Builder();
const moduleSpecifier_ = builder.createString(moduleSpecifier);
@@ -33,23 +33,23 @@ export function codeFetch(
fbs.Base.addMsg(builder, msg);
fbs.Base.addMsgType(builder, fbs.Any.CodeFetch);
builder.finish(fbs.Base.endBase(builder));
- const payload = typedArrayToArrayBuffer(builder.asUint8Array());
- const resBuf = deno.send("x", payload);
-
- console.log("CodeFetch sent");
-
+ const resBuf = deno.send(builder.asUint8Array());
// Process CodeFetchRes
const bb = new flatbuffers.ByteBuffer(new Uint8Array(resBuf));
const baseRes = fbs.Base.getRootAsBase(bb);
+ if (fbs.Any.NONE === baseRes.msgType()) {
+ throw Error(baseRes.error());
+ }
assert(fbs.Any.CodeFetchRes === baseRes.msgType());
const codeFetchRes = new fbs.CodeFetchRes();
assert(baseRes.msg(codeFetchRes) != null);
- return {
+ const r = {
moduleName: codeFetchRes.moduleName(),
filename: codeFetchRes.filename(),
sourceCode: codeFetchRes.sourceCode(),
outputCode: codeFetchRes.outputCode()
};
+ return r;
}
export function codeCache(
@@ -57,28 +57,22 @@ export function codeCache(
sourceCode: string,
outputCode: string
): void {
+ util.log("os.ts codeCache", filename, sourceCode, outputCode);
const builder = new flatbuffers.Builder();
-
const filename_ = builder.createString(filename);
const sourceCode_ = builder.createString(sourceCode);
const outputCode_ = builder.createString(outputCode);
-
fbs.CodeCache.startCodeCache(builder);
fbs.CodeCache.addFilename(builder, filename_);
fbs.CodeCache.addSourceCode(builder, sourceCode_);
fbs.CodeCache.addOutputCode(builder, outputCode_);
const msg = fbs.CodeCache.endCodeCache(builder);
-
fbs.Base.startBase(builder);
fbs.Base.addMsg(builder, msg);
+ fbs.Base.addMsgType(builder, fbs.Any.CodeCache);
builder.finish(fbs.Base.endBase(builder));
-
- // Maybe need to do another step?
- // Base.finishBaseBuffer(builder, base);
-
- const payload = typedArrayToArrayBuffer(builder.asUint8Array());
- const resBuf = deno.send("x", payload);
- assert(resBuf === null);
+ const resBuf = deno.send(builder.asUint8Array());
+ assert(resBuf == null);
}
export function readFileSync(filename: string): Uint8Array {