summaryrefslogtreecommitdiff
path: root/js/os.ts
diff options
context:
space:
mode:
Diffstat (limited to 'js/os.ts')
-rw-r--r--js/os.ts65
1 files changed, 65 insertions, 0 deletions
diff --git a/js/os.ts b/js/os.ts
new file mode 100644
index 000000000..a51c6ec5d
--- /dev/null
+++ b/js/os.ts
@@ -0,0 +1,65 @@
+// Copyright 2018 Ryan Dahl <ry@tinyclouds.org>
+// All rights reserved. MIT License.
+import { ModuleInfo } from "./types";
+import { pubInternal } from "./dispatch";
+import { deno as pb } from "./msg.pb";
+import { assert } from "./util";
+
+export function exit(exitCode = 0): void {
+ pubInternal("os", {
+ command: pb.Msg.Command.EXIT,
+ exitCode
+ });
+}
+
+export function codeFetch(
+ moduleSpecifier: string,
+ containingFile: string
+): ModuleInfo {
+ const res = pubInternal("os", {
+ command: pb.Msg.Command.CODE_FETCH,
+ codeFetchModuleSpecifier: moduleSpecifier,
+ codeFetchContainingFile: containingFile
+ });
+ assert(res.command === pb.Msg.Command.CODE_FETCH_RES);
+ return {
+ moduleName: res.codeFetchResModuleName,
+ filename: res.codeFetchResFilename,
+ sourceCode: res.codeFetchResSourceCode,
+ outputCode: res.codeFetchResOutputCode
+ };
+}
+
+export function codeCache(
+ filename: string,
+ sourceCode: string,
+ outputCode: string
+): void {
+ pubInternal("os", {
+ command: pb.Msg.Command.CODE_CACHE,
+ codeCacheFilename: filename,
+ codeCacheSourceCode: sourceCode,
+ codeCacheOutputCode: outputCode
+ });
+}
+
+export function readFileSync(filename: string): Uint8Array {
+ const res = pubInternal("os", {
+ command: pb.Msg.Command.READ_FILE_SYNC,
+ readFileSyncFilename: filename
+ });
+ return res.readFileSyncData;
+}
+
+export function writeFileSync(
+ filename: string,
+ data: Uint8Array,
+ perm: number
+): void {
+ pubInternal("os", {
+ command: pb.Msg.Command.WRITE_FILE_SYNC,
+ writeFileSyncFilename: filename,
+ writeFileSyncData: data,
+ writeFileSyncPerm: perm
+ });
+}