2020-03-08 08:09:22 -04:00
|
|
|
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
|
|
|
|
|
|
|
import { sendAsync, sendSync } from "./dispatch_json.ts";
|
|
|
|
import { TextDecoder, TextEncoder } from "../web/text_encoding.ts";
|
|
|
|
import { core } from "../core.ts";
|
|
|
|
|
|
|
|
export function resolveModules(
|
|
|
|
specifiers: string[],
|
|
|
|
referrer?: string
|
|
|
|
): string[] {
|
|
|
|
return sendSync("op_resolve_modules", { specifiers, referrer });
|
|
|
|
}
|
|
|
|
|
|
|
|
export function fetchSourceFiles(
|
|
|
|
specifiers: string[],
|
|
|
|
referrer?: string
|
|
|
|
): Promise<
|
|
|
|
Array<{
|
|
|
|
url: string;
|
|
|
|
filename: string;
|
|
|
|
mediaType: number;
|
|
|
|
sourceCode: string;
|
|
|
|
}>
|
|
|
|
> {
|
|
|
|
return sendAsync("op_fetch_source_files", {
|
|
|
|
specifiers,
|
2020-03-28 13:03:49 -04:00
|
|
|
referrer,
|
2020-03-08 08:09:22 -04:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
|
|
|
const encoder = new TextEncoder();
|
|
|
|
const decoder = new TextDecoder();
|
|
|
|
|
|
|
|
export function getAsset(name: string): string {
|
|
|
|
const opId = core.ops()["op_fetch_asset"];
|
|
|
|
// We really don't want to depend on JSON dispatch during snapshotting, so
|
|
|
|
// this op exchanges strings with Rust as raw byte arrays.
|
|
|
|
const sourceCodeBytes = core.dispatch(opId, encoder.encode(name));
|
|
|
|
return decoder.decode(sourceCodeBytes!);
|
|
|
|
}
|
|
|
|
|
|
|
|
export function cache(
|
|
|
|
extension: string,
|
|
|
|
moduleId: string,
|
|
|
|
contents: string
|
|
|
|
): void {
|
|
|
|
sendSync("op_cache", {
|
|
|
|
extension,
|
|
|
|
moduleId,
|
2020-03-28 13:03:49 -04:00
|
|
|
contents,
|
2020-03-08 08:09:22 -04:00
|
|
|
});
|
|
|
|
}
|