mirror of
https://github.com/denoland/deno.git
synced 2024-12-29 02:29:06 -05:00
53 lines
1.2 KiB
TypeScript
53 lines
1.2 KiB
TypeScript
|
// 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,
|
||
|
referrer
|
||
|
});
|
||
|
}
|
||
|
|
||
|
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,
|
||
|
contents
|
||
|
});
|
||
|
}
|