summaryrefslogtreecommitdiff
path: root/cli/js/ops/runtime.ts
diff options
context:
space:
mode:
authorBartek Iwańczuk <biwanczuk@gmail.com>2020-03-08 13:09:22 +0100
committerGitHub <noreply@github.com>2020-03-08 13:09:22 +0100
commit1b6f8318750d319d689f7eeef9e7e1f2e56b94a6 (patch)
treeb2e182b77cfbcd25ee893113de9f61509e16e787 /cli/js/ops/runtime.ts
parentb9037c86ed8d1d55a59a1c1298fa12bbfcae6873 (diff)
reorg: move JS ops implementations to cli/js/ops/, part 1 (#4264)
Following JS ops were moved to separate files in cli/js/ops directory: - compiler - dispatch_json - dispatch_minimal - errors - fetch - fs_events - os - random - repl - resources - runtime_compiler - runtime - tty
Diffstat (limited to 'cli/js/ops/runtime.ts')
-rw-r--r--cli/js/ops/runtime.ts67
1 files changed, 67 insertions, 0 deletions
diff --git a/cli/js/ops/runtime.ts b/cli/js/ops/runtime.ts
new file mode 100644
index 000000000..7538ce12f
--- /dev/null
+++ b/cli/js/ops/runtime.ts
@@ -0,0 +1,67 @@
+// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
+
+import { sendSync } from "./dispatch_json.ts";
+
+// TODO(bartlomieju): these two types are duplicated
+// in `cli/js/build.ts` - deduplicate
+export type OperatingSystem = "mac" | "win" | "linux";
+export type Arch = "x64" | "arm64";
+
+export interface Start {
+ cwd: string;
+ pid: number;
+ args: string[];
+ location: string; // Absolute URL.
+ repl: boolean;
+ debugFlag: boolean;
+ depsFlag: boolean;
+ typesFlag: boolean;
+ versionFlag: boolean;
+ denoVersion: string;
+ v8Version: string;
+ tsVersion: string;
+ noColor: boolean;
+ os: OperatingSystem;
+ arch: Arch;
+}
+
+export function start(): Start {
+ return sendSync("op_start");
+}
+
+export interface Metrics {
+ opsDispatched: number;
+ opsDispatchedSync: number;
+ opsDispatchedAsync: number;
+ opsDispatchedAsyncUnref: number;
+ opsCompleted: number;
+ opsCompletedSync: number;
+ opsCompletedAsync: number;
+ opsCompletedAsyncUnref: number;
+ bytesSentControl: number;
+ bytesSentData: number;
+ bytesReceived: number;
+}
+
+/** Receive metrics from the privileged side of Deno.
+ *
+ * > console.table(Deno.metrics())
+ * ┌─────────────────────────┬────────┐
+ * │ (index) │ Values │
+ * ├─────────────────────────┼────────┤
+ * │ opsDispatched │ 3 │
+ * │ opsDispatchedSync │ 2 │
+ * │ opsDispatchedAsync │ 1 │
+ * │ opsDispatchedAsyncUnref │ 0 │
+ * │ opsCompleted │ 3 │
+ * │ opsCompletedSync │ 2 │
+ * │ opsCompletedAsync │ 1 │
+ * │ opsCompletedAsyncUnref │ 0 │
+ * │ bytesSentControl │ 73 │
+ * │ bytesSentData │ 0 │
+ * │ bytesReceived │ 375 │
+ * └─────────────────────────┴────────┘
+ */
+export function metrics(): Metrics {
+ return sendSync("op_metrics");
+}