summaryrefslogtreecommitdiff
path: root/js/os.ts
diff options
context:
space:
mode:
Diffstat (limited to 'js/os.ts')
-rw-r--r--js/os.ts68
1 files changed, 24 insertions, 44 deletions
diff --git a/js/os.ts b/js/os.ts
index fbcb23a7f..03bb7bb42 100644
--- a/js/os.ts
+++ b/js/os.ts
@@ -3,6 +3,7 @@ import * as msg from "gen/msg_generated";
import { handleAsyncMsgFromRust, sendSync } from "./dispatch";
import * as flatbuffers from "./flatbuffers";
import { libdeno } from "./libdeno";
+import { TextDecoder } from "./text_encoding";
import { assert } from "./util";
import * as util from "./util";
@@ -27,7 +28,7 @@ export function setGlobals(
execPath = execPath_;
}
-interface CodeInfo {
+interface ResponseModuleMetaData {
moduleName: string | undefined;
filename: string | undefined;
mediaType: msg.MediaType;
@@ -60,63 +61,42 @@ export function exit(exitCode = 0): never {
return util.unreachable();
}
+const decoder = new TextDecoder();
+
// @internal
-export function codeFetch(specifier: string, referrer: string): CodeInfo {
- util.log("os.codeFetch", { specifier, referrer });
- // Send CodeFetch message
+export function fetchModuleMetaData(
+ specifier: string,
+ referrer: string
+): ResponseModuleMetaData {
+ util.log("os.fetchModuleMetaData", { specifier, referrer });
+ // Send FetchModuleMetaData message
const builder = flatbuffers.createBuilder();
const specifier_ = builder.createString(specifier);
const referrer_ = builder.createString(referrer);
- msg.CodeFetch.startCodeFetch(builder);
- msg.CodeFetch.addSpecifier(builder, specifier_);
- msg.CodeFetch.addReferrer(builder, referrer_);
- const inner = msg.CodeFetch.endCodeFetch(builder);
- const baseRes = sendSync(builder, msg.Any.CodeFetch, inner);
+ msg.FetchModuleMetaData.startFetchModuleMetaData(builder);
+ msg.FetchModuleMetaData.addSpecifier(builder, specifier_);
+ msg.FetchModuleMetaData.addReferrer(builder, referrer_);
+ const inner = msg.FetchModuleMetaData.endFetchModuleMetaData(builder);
+ const baseRes = sendSync(builder, msg.Any.FetchModuleMetaData, inner);
assert(baseRes != null);
assert(
- msg.Any.CodeFetchRes === baseRes!.innerType(),
+ msg.Any.FetchModuleMetaDataRes === baseRes!.innerType(),
`base.innerType() unexpectedly is ${baseRes!.innerType()}`
);
- const codeFetchRes = new msg.CodeFetchRes();
- assert(baseRes!.inner(codeFetchRes) != null);
+ const fetchModuleMetaDataRes = new msg.FetchModuleMetaDataRes();
+ assert(baseRes!.inner(fetchModuleMetaDataRes) != null);
+ const dataArray = fetchModuleMetaDataRes.dataArray();
+ const sourceCode = dataArray ? decoder.decode(dataArray) : undefined;
// flatbuffers returns `null` for an empty value, this does not fit well with
// idiomatic TypeScript under strict null checks, so converting to `undefined`
return {
- moduleName: codeFetchRes.moduleName() || undefined,
- filename: codeFetchRes.filename() || undefined,
- mediaType: codeFetchRes.mediaType(),
- sourceCode: codeFetchRes.sourceCode() || undefined
+ moduleName: fetchModuleMetaDataRes.moduleName() || undefined,
+ filename: fetchModuleMetaDataRes.filename() || undefined,
+ mediaType: fetchModuleMetaDataRes.mediaType(),
+ sourceCode
};
}
-// @internal
-export function codeCache(
- filename: string,
- sourceCode: string,
- outputCode: string,
- sourceMap: string
-): void {
- util.log("os.codeCache", {
- filename,
- sourceCodeLength: sourceCode.length,
- outputCodeLength: outputCode.length,
- sourceMapLength: sourceMap.length
- });
- const builder = flatbuffers.createBuilder();
- const filename_ = builder.createString(filename);
- const sourceCode_ = builder.createString(sourceCode);
- const outputCode_ = builder.createString(outputCode);
- const sourceMap_ = builder.createString(sourceMap);
- msg.CodeCache.startCodeCache(builder);
- msg.CodeCache.addFilename(builder, filename_);
- msg.CodeCache.addSourceCode(builder, sourceCode_);
- msg.CodeCache.addOutputCode(builder, outputCode_);
- msg.CodeCache.addSourceMap(builder, sourceMap_);
- const inner = msg.CodeCache.endCodeCache(builder);
- const baseRes = sendSync(builder, msg.Any.CodeCache, inner);
- assert(baseRes == null); // Expect null or error.
-}
-
function createEnv(inner: msg.EnvironRes): { [index: string]: string } {
const env: { [index: string]: string } = {};