summaryrefslogtreecommitdiff
path: root/cli/js/ops/runtime.ts
diff options
context:
space:
mode:
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");
+}