diff options
Diffstat (limited to 'js/os.ts')
-rw-r--r-- | js/os.ts | 68 |
1 files changed, 24 insertions, 44 deletions
@@ -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 } = {}; |