aboutsummaryrefslogtreecommitdiffhomepage
path: root/worker/exec.mjs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2025-09-05 20:12:41 +0900
committernsfisis <nsfisis@gmail.com>2025-09-05 20:52:56 +0900
commitc7941d027be068f6e563a17e882232580fe15334 (patch)
tree40479fdff8903af289f8a2a02c6f58ba1c69a82c /worker/exec.mjs
parent0f91e938442b22e54ba2f1b29e25d678cf0acdd3 (diff)
downloadiosdc-japan-2025-albatross-c7941d027be068f6e563a17e882232580fe15334.tar.gz
iosdc-japan-2025-albatross-c7941d027be068f6e563a17e882232580fe15334.tar.zst
iosdc-japan-2025-albatross-c7941d027be068f6e563a17e882232580fe15334.zip
feat(worker): move directory worker/ to worker/php/
Diffstat (limited to 'worker/exec.mjs')
-rw-r--r--worker/exec.mjs85
1 files changed, 0 insertions, 85 deletions
diff --git a/worker/exec.mjs b/worker/exec.mjs
deleted file mode 100644
index d8ca899..0000000
--- a/worker/exec.mjs
+++ /dev/null
@@ -1,85 +0,0 @@
-import PHPWasm from "./php-wasm.js";
-
-process.once("message", async ({ code: originalCode, input }) => {
- const PRELUDE = `
- define('STDIN', fopen('php://stdin', 'r'));
- define('STDOUT', fopen('php://stdout', 'r'));
- define('STDERR', fopen('php://stderr', 'r'));
-
- error_reporting(E_ALL & ~E_WARNING & ~E_NOTICE & ~E_DEPRECATED);
-
- `;
-
- // remove php tag
- let code;
- if (originalCode.startsWith("<?php")) {
- code = PRELUDE + originalCode.slice(5);
- } else if (originalCode.startsWith("<?")) {
- code = PRELUDE + originalCode.slice(2);
- } else {
- code = PRELUDE + originalCode;
- }
-
- const BUFFER_MAX = 10 * 1024;
-
- let stdinPos = 0; // bytewise
- const stdinBuf = Buffer.from(input);
- let stdoutPos = 0; // bytewise
- const stdoutBuf = Buffer.alloc(BUFFER_MAX);
- let stderrPos = 0; // bytewise
- const stderrBuf = Buffer.alloc(BUFFER_MAX);
-
- const { ccall } = await PHPWasm({
- stdin: () => {
- if (stdinBuf.length <= stdinPos) {
- return null;
- }
- return stdinBuf.readUInt8(stdinPos++);
- },
- stdout: (asciiCode) => {
- if (asciiCode === null) {
- return; // flush
- }
- if (BUFFER_MAX <= stdoutPos) {
- return; // ignore
- }
- stdoutBuf.writeUInt8(
- asciiCode < 0 ? asciiCode + 256 : asciiCode,
- stdoutPos++,
- );
- },
- stderr: (asciiCode) => {
- if (asciiCode === null) {
- return; // flush
- }
- if (BUFFER_MAX <= stderrPos) {
- return; // ignore
- }
- stderrBuf.writeUInt8(
- asciiCode < 0 ? asciiCode + 256 : asciiCode,
- stderrPos++,
- );
- },
- });
-
- let err;
- let result;
- try {
- result = ccall("php_wasm_run", "number", ["string"], [code]);
- } catch (e) {
- err = e;
- }
- if (err) {
- process.send({
- status: "runtime_error",
- stdout: stdoutBuf.subarray(0, stdoutPos).toString(),
- stderr: `${stderrBuf.subarray(0, stderrPos).toString()}\n${err.toString()}`,
- });
- } else {
- process.send({
- status: result === 0 ? "success" : "runtime_error",
- stdout: stdoutBuf.subarray(0, stdoutPos).toString(),
- stderr: stderrBuf.subarray(0, stderrPos).toString(),
- });
- }
-});