summaryrefslogtreecommitdiff
path: root/ext/node/polyfills
diff options
context:
space:
mode:
Diffstat (limited to 'ext/node/polyfills')
-rw-r--r--ext/node/polyfills/internal/process/report.ts84
-rw-r--r--ext/node/polyfills/process.ts5
2 files changed, 89 insertions, 0 deletions
diff --git a/ext/node/polyfills/internal/process/report.ts b/ext/node/polyfills/internal/process/report.ts
new file mode 100644
index 000000000..7d178626c
--- /dev/null
+++ b/ext/node/polyfills/internal/process/report.ts
@@ -0,0 +1,84 @@
+// Copyright 2018-2023 the Deno authors. All rights reserved. MIT license.
+
+import { arch, versions } from "ext:deno_node/_process/process.ts";
+import { cpus, hostname, networkInterfaces } from "node:os";
+
+const primordials = globalThis.__bootstrap.primordials;
+const {
+ Error,
+ StringPrototypeToUpperCase,
+ StringPrototypeCharAt,
+ StringPrototypeSlice,
+ Date,
+ DatePrototypeGetTime,
+} = primordials;
+
+function writeReport(_filename: string, _err: typeof Error) {
+ return "";
+}
+
+const todoUndefined = undefined;
+
+function getReport(_err: typeof Error) {
+ const dumpEventTime = new Date();
+ return {
+ header: {
+ reportVersion: 3,
+ event: "JavaScript API",
+ trigger: "GetReport",
+ filename: report.filename, // assumption!
+ dumpEventTime,
+ dumpEventTimeStamp: DatePrototypeGetTime(dumpEventTime),
+ processId: Deno.pid, // I am not sure if it should be Deno.pid or Deno.ppid
+ threadId: 0,
+ cwd: Deno.cwd(),
+ commandLine: ["node"],
+ nodejsVersion: `v${versions.node}`,
+ glibcVersionRuntime: "2.38",
+ glibcVersionCompiler: "2.38",
+ wordSize: 64,
+ arch: arch(),
+ platform: Deno.build.os,
+ componentVersions: versions,
+ release: {
+ name: "node",
+ headersUrl:
+ "https://nodejs.org/download/release/v21.2.0/node-v21.2.0-headers.tar.gz",
+ sourceUrl:
+ "https://nodejs.org/download/release/v21.2.0/node-v21.2.0.tar.gz",
+ },
+ osName:
+ StringPrototypeToUpperCase(StringPrototypeCharAt(Deno.build.os, 0)) +
+ StringPrototypeSlice(Deno.build.os, 1),
+ osRelease: todoUndefined,
+ osVersion: todoUndefined,
+ osMachine: Deno.build.arch,
+ cpus: cpus(),
+ networkInterfaces: networkInterfaces(),
+ host: hostname(),
+ },
+ javascriptStack: todoUndefined,
+ javascriptHeap: todoUndefined,
+ nativeStack: todoUndefined,
+ resourceUsage: todoUndefined,
+ uvthreadResourceUsage: todoUndefined,
+ libuv: todoUndefined,
+ workers: [],
+ environmentVariables: todoUndefined,
+ userLimits: todoUndefined,
+ sharedObjects: todoUndefined,
+ };
+}
+
+// https://nodejs.org/api/process.html#processreport
+export const report = {
+ compact: false,
+ directory: "",
+ filename: "",
+ getReport,
+ reportOnFatalError: false,
+ reportOnSignal: false,
+ reportOnUncaughtException: false,
+ signal: "SIGUSR2",
+ writeReport,
+};
diff --git a/ext/node/polyfills/process.ts b/ext/node/polyfills/process.ts
index 860825b3e..c495a90bb 100644
--- a/ext/node/polyfills/process.ts
+++ b/ext/node/polyfills/process.ts
@@ -10,6 +10,7 @@ const { ops } = core;
import { notImplemented, warnNotImplemented } from "ext:deno_node/_utils.ts";
import { EventEmitter } from "node:events";
import Module from "node:module";
+import { report } from "ext:deno_node/internal/process/report.ts";
import { validateString } from "ext:deno_node/internal/validators.mjs";
import {
ERR_INVALID_ARG_TYPE,
@@ -362,6 +363,10 @@ class Process extends EventEmitter {
return arch;
}
+ get report() {
+ return report;
+ }
+
get title() {
return "deno";
}