From 9849a39f2b828f3e515628ecb3bf86fdd9b8fd6e Mon Sep 17 00:00:00 2001 From: Rebbouh-Mohamed Date: Fri, 20 Dec 2024 17:03:11 +0100 Subject: [PATCH 1/8] Update index.js --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 6ddc5f7..a6740fb 100644 --- a/src/index.js +++ b/src/index.js @@ -44,4 +44,4 @@ app.get('/list', async (req, res) => { sendResponse(res, 200, {supportedLanguages: body}) }) -app.listen(port); +app.listen(port,'0.0.0.0'); From dfe3e1b6c20a3e5f842067a81cd98f9ff5313f62 Mon Sep 17 00:00:00 2001 From: Rebbouh-Mohamed Date: Sat, 13 Dec 2025 13:23:22 +0100 Subject: [PATCH 2/8] add run scripte --- src/logs/express.log | 0 src/run.sh | 295 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 295 insertions(+) create mode 100644 src/logs/express.log create mode 100755 src/run.sh diff --git a/src/logs/express.log b/src/logs/express.log new file mode 100644 index 0000000..e69de29 diff --git a/src/run.sh b/src/run.sh new file mode 100755 index 0000000..2800e8d --- /dev/null +++ b/src/run.sh @@ -0,0 +1,295 @@ +#!/bin/bash + +# Configuration +ENTRY_FILE="index.js" # Change to your entry point (server.js, app.js, etc.) +PORT="8080" # Your Express server port +PID_FILE="/tmp/express_pids.sh" +LOG_DIR="logs" + +# Auto-detect entry file if not found +detect_entry_file() { + if [ -f "$ENTRY_FILE" ]; then + echo "$ENTRY_FILE" + return + fi + + # Common entry point names + for file in index.js server.js app.js main.js src/index.js src/server.js; do + if [ -f "$file" ]; then + echo "$file" + return + fi + done + + # Check package.json for main field + if [ -f "package.json" ]; then + MAIN=$(node -pe "try { require('./package.json').main } catch(e) { '' }" 2>/dev/null) + if [ -n "$MAIN" ] && [ -f "$MAIN" ]; then + echo "$MAIN" + return + fi + fi + + echo "" +} + +# Detect the actual entry file +DETECTED_ENTRY=$(detect_entry_file) +if [ -z "$DETECTED_ENTRY" ]; then + echo "✗ Error: Could not find entry file" + echo " Checked: index.js, server.js, app.js, main.js, package.json main field" + echo " Please update ENTRY_FILE in the script" + exit 1 +fi +ENTRY_FILE="$DETECTED_ENTRY" + +# Create logs directory if it doesn't exist +mkdir -p "$LOG_DIR" + +# Function to check if Node.js is installed +check_node() { + if ! command -v node &> /dev/null; then + echo "✗ Error: Node.js is not installed" + echo " Install from: https://nodejs.org/" + exit 1 + fi + echo "✓ Node.js $(node --version) detected" +} + +# Function to check if package.json exists +check_package_json() { + if [ ! -f "package.json" ]; then + echo "⚠ Warning: No package.json found" + echo " Continuing anyway..." + return + fi + echo "✓ package.json found" +} + +# Function to check if dependencies are installed +check_dependencies() { + if [ ! -d "node_modules" ]; then + echo "⚠ node_modules not found. Installing dependencies..." + + # Detect package manager + if [ -f "pnpm-lock.yaml" ]; then + pnpm install + elif [ -f "yarn.lock" ]; then + yarn install + else + npm install + fi + + if [ $? -ne 0 ]; then + echo "✗ Failed to install dependencies" + exit 1 + fi + echo "✓ Dependencies installed" + else + echo "✓ node_modules found" + fi +} + +# Function to start Express server +start_server() { + echo "Starting Express server ($ENTRY_FILE)..." + + # Start the server + nohup node "$ENTRY_FILE" > "$LOG_DIR/express.log" 2>&1 & + EXPRESS_PID=$! + sleep 2 + + # Check if process is still running + if ps -p $EXPRESS_PID > /dev/null; then + echo "✓ Express server started with PID: $EXPRESS_PID" + echo "EXPRESS_PID=$EXPRESS_PID" > "$PID_FILE" + echo "ENTRY_FILE=$ENTRY_FILE" >> "$PID_FILE" + echo "✓ PID saved to $PID_FILE" + echo "" + echo "=== Express Server Running ===" + echo "• Entry: $ENTRY_FILE" + echo "• Port: $PORT (if configured)" + echo "• Logs: $LOG_DIR/express.log" + echo "" + echo "To view logs: tail -f $LOG_DIR/express.log" + echo "To stop: $0 0" + else + echo "✗ Failed to start Express server" + echo "" + echo "Last few lines of log:" + tail -n 10 "$LOG_DIR/express.log" + exit 1 + fi +} + +# Function to stop Express server +stop_server() { + echo "=== Stopping Express Server ===" + + STOPPED=false + + if [ -f "$PID_FILE" ]; then + source "$PID_FILE" + + if [ -n "$EXPRESS_PID" ]; then + if ps -p $EXPRESS_PID > /dev/null 2>&1; then + kill $EXPRESS_PID + sleep 1 + # Force kill if still running + if ps -p $EXPRESS_PID > /dev/null 2>&1; then + kill -9 $EXPRESS_PID 2>/dev/null + fi + echo "✓ Stopped Express server (PID: $EXPRESS_PID)" + STOPPED=true + else + echo "• Express process not running (PID: $EXPRESS_PID)" + fi + fi + + rm -f "$PID_FILE" + echo "✓ Removed PID file" + fi + + if [ "$STOPPED" = false ]; then + echo "• No PID file found. Checking for running processes..." + + # Try to kill by port + if command -v lsof &> /dev/null; then + PORT_PID=$(lsof -ti:$PORT 2>/dev/null) + if [ -n "$PORT_PID" ]; then + kill $PORT_PID 2>/dev/null + sleep 1 + kill -9 $PORT_PID 2>/dev/null + echo "✓ Killed process on port $PORT (PID: $PORT_PID)" + STOPPED=true + fi + fi + + # Try to kill by process name + NODE_PIDS=$(pgrep -f "node.*$ENTRY_FILE" 2>/dev/null) + if [ -n "$NODE_PIDS" ]; then + kill $NODE_PIDS 2>/dev/null + sleep 1 + kill -9 $NODE_PIDS 2>/dev/null + echo "✓ Killed Node processes: $NODE_PIDS" + STOPPED=true + fi + fi + + if [ "$STOPPED" = false ]; then + echo "• No Express server found running" + fi + + echo "=== Stop operation completed ===" +} + +# Function to start the process +start_process() { + echo "=== Starting Express Server ===" + + # Check if already running + if [ -f "$PID_FILE" ]; then + source "$PID_FILE" + if ps -p $EXPRESS_PID > /dev/null 2>&1; then + echo "⚠ Express server is already running (PID: $EXPRESS_PID)!" + echo "Run '$0 0' to stop it first" + exit 1 + fi + fi + + # Check if port is already in use + if command -v lsof &> /dev/null; then + if lsof -Pi :$PORT -sTCP:LISTEN -t >/dev/null 2>&1; then + echo "⚠ Port $PORT is already in use!" + echo "Stop the process using the port or change PORT in the script" + exit 1 + fi + fi + + # Check Node.js + check_node + + # Check package.json + check_package_json + + # Check dependencies + check_dependencies + + # Start server + start_server +} + +# Function to show status +show_status() { + echo "=== Express Server Status ===" + + if [ -f "$PID_FILE" ]; then + source "$PID_FILE" + if ps -p $EXPRESS_PID > /dev/null 2>&1; then + echo "✓ Express server is running (PID: $EXPRESS_PID)" + echo "• Entry: $ENTRY_FILE" + echo "• Port: $PORT" + echo "• Logs: $LOG_DIR/express.log" + else + echo "✗ Server not running (stale PID file)" + fi + else + if command -v lsof &> /dev/null; then + PORT_PID=$(lsof -ti:$PORT 2>/dev/null) + if [ -n "$PORT_PID" ]; then + echo "⚠ Something running on port $PORT (PID: $PORT_PID)" + echo " But no PID file found. May not be managed by this script." + else + echo "• Express server is not running" + fi + else + echo "• Cannot check port status (lsof not available)" + echo "• No PID file found" + fi + fi +} + +# Function to show usage +show_usage() { + echo "Usage: $0 [1|0|status]" + echo " 1 - Start Express server" + echo " 0 - Stop Express server" + echo " status - Show server status" + echo "" + echo "Configuration:" + echo " Entry file: $ENTRY_FILE" + echo " Port: $PORT" + echo "" + echo "Examples:" + echo " $0 1 # Start server" + echo " $0 0 # Stop server" + echo " $0 status # Check status" +} + +# Main execution +main() { + if [ $# -eq 0 ]; then + show_usage + exit 1 + fi + + case "$1" in + 1) + start_process + ;; + 0) + stop_server + ;; + status) + show_status + ;; + *) + echo "✗ Invalid argument: $1" + show_usage + exit 1 + ;; + esac +} + +# Run main function with arguments +main "$@" \ No newline at end of file From 56424bd18541d079229b3cd36ffed2bbd4bcd037 Mon Sep 17 00:00:00 2001 From: yacine Date: Sun, 14 Dec 2025 14:27:21 +0100 Subject: [PATCH 3/8] added pascal --- Dockerfile | 2 +- src/run-code/index.js | 6 ++++++ src/run-code/instructions.js | 14 +++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 49770e8..a841e12 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ENV NODE_VERSION 16 # Update and install dependencies, including Node 16 directly RUN apt-get update && apt-get -y install gcc mono-mcs golang-go \ - default-jre default-jdk python3-pip python3 curl && \ + default-jre default-jdk python3-pip python3 curl fpc && \ curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \ apt-get install -y nodejs && \ rm -rf /var/lib/apt/lists/* diff --git a/src/run-code/index.js b/src/run-code/index.js index 5d6ad54..fe2505f 100644 --- a/src/run-code/index.js +++ b/src/run-code/index.js @@ -27,6 +27,12 @@ async function runCode({language = "", code = "", input = ""}) { await new Promise((resolve, reject) => { const compileCode = spawn(compileCodeCommand, compilationArgs || []) compileCode.stderr.on('data', (error) => { + const msg = error.toString(); + + if (language === 'pas' && msg.includes("link.res contains output sections")) { + return; + } + reject({ status: 200, output: '', diff --git a/src/run-code/instructions.js b/src/run-code/instructions.js index d20a45c..f712dd5 100644 --- a/src/run-code/instructions.js +++ b/src/run-code/instructions.js @@ -76,9 +76,21 @@ const commandMap = (jobID, language) => { outputExt: 'exe', compilerInfoCommand: 'mcs --version' } + case 'pas': + return { + compileCodeCommand: 'fpc', + compilationArgs: [ + `${CODES_DIR}/${jobID}.pas`, + `-FE${OUTPUTS_DIR}`, + `-o${jobID}` + ], + executeCodeCommand: `${OUTPUTS_DIR}/${jobID}`, + outputExt: '', + compilerInfoCommand: 'fpc -iV' + }; } } -const supportedLanguages = ['java', 'cpp', 'py', 'c', 'js', 'go', 'cs']; +const supportedLanguages = ['java', 'cpp', 'py', 'c', 'js', 'go', 'cs','pas']; module.exports = {commandMap, supportedLanguages} From 34dfd32fa22a79bd956571ca29fe9e5f54132764 Mon Sep 17 00:00:00 2001 From: yacine Date: Sun, 14 Dec 2025 14:27:21 +0100 Subject: [PATCH 4/8] added pascal --- Dockerfile | 2 +- src/run-code/index.js | 6 ++++++ src/run-code/instructions.js | 14 +++++++++++++- 3 files changed, 20 insertions(+), 2 deletions(-) diff --git a/Dockerfile b/Dockerfile index 49770e8..a841e12 100644 --- a/Dockerfile +++ b/Dockerfile @@ -8,7 +8,7 @@ ENV NODE_VERSION 16 # Update and install dependencies, including Node 16 directly RUN apt-get update && apt-get -y install gcc mono-mcs golang-go \ - default-jre default-jdk python3-pip python3 curl && \ + default-jre default-jdk python3-pip python3 curl fpc && \ curl -fsSL https://deb.nodesource.com/setup_16.x | bash - && \ apt-get install -y nodejs && \ rm -rf /var/lib/apt/lists/* diff --git a/src/run-code/index.js b/src/run-code/index.js index 5d6ad54..fe2505f 100644 --- a/src/run-code/index.js +++ b/src/run-code/index.js @@ -27,6 +27,12 @@ async function runCode({language = "", code = "", input = ""}) { await new Promise((resolve, reject) => { const compileCode = spawn(compileCodeCommand, compilationArgs || []) compileCode.stderr.on('data', (error) => { + const msg = error.toString(); + + if (language === 'pas' && msg.includes("link.res contains output sections")) { + return; + } + reject({ status: 200, output: '', diff --git a/src/run-code/instructions.js b/src/run-code/instructions.js index d20a45c..f712dd5 100644 --- a/src/run-code/instructions.js +++ b/src/run-code/instructions.js @@ -76,9 +76,21 @@ const commandMap = (jobID, language) => { outputExt: 'exe', compilerInfoCommand: 'mcs --version' } + case 'pas': + return { + compileCodeCommand: 'fpc', + compilationArgs: [ + `${CODES_DIR}/${jobID}.pas`, + `-FE${OUTPUTS_DIR}`, + `-o${jobID}` + ], + executeCodeCommand: `${OUTPUTS_DIR}/${jobID}`, + outputExt: '', + compilerInfoCommand: 'fpc -iV' + }; } } -const supportedLanguages = ['java', 'cpp', 'py', 'c', 'js', 'go', 'cs']; +const supportedLanguages = ['java', 'cpp', 'py', 'c', 'js', 'go', 'cs','pas']; module.exports = {commandMap, supportedLanguages} From 6ec5e6716aee25000b45404c466b451c9e4a0e44 Mon Sep 17 00:00:00 2001 From: Rebbouh-Mohamed Date: Wed, 17 Dec 2025 00:05:06 +0100 Subject: [PATCH 5/8] fix pascal --- src/file-system/removeCodeFile.js | 11 ++++++ src/logs/express.log | 20 +++++++++++ src/run-code/index.js | 58 +++++++++++++++++++------------ src/run-code/instructions.js | 14 ++++---- 4 files changed, 73 insertions(+), 30 deletions(-) diff --git a/src/file-system/removeCodeFile.js b/src/file-system/removeCodeFile.js index 02b1b52..de1ba90 100644 --- a/src/file-system/removeCodeFile.js +++ b/src/file-system/removeCodeFile.js @@ -21,6 +21,17 @@ const removeCodeFile = async (uuid, lang, outputExt) => { console.error(`Failed to delete output file: ${outputFile}`, err); } } + + if (lang === 'pas') { + const objectFile = join(OUTPUTS_DIR, `${uuid}.o`); + try { + if (require("fs").existsSync(objectFile)) { + unlinkSync(objectFile); + } + } catch (err) { + console.error(`Failed to delete object file: ${objectFile}`, err); + } + } }; module.exports = { diff --git a/src/logs/express.log b/src/logs/express.log index e69de29..73746b6 100644 --- a/src/logs/express.log +++ b/src/logs/express.log @@ -0,0 +1,20 @@ +node:events:495 + throw er; // Unhandled 'error' event + ^ + +Error: spawn /tmp/outputs/f98d55d8-9120-4179-8cc5-aad2576e4bb4 ENOENT + at ChildProcess._handle.onexit (node:internal/child_process:284:19) + at onErrorNT (node:internal/child_process:477:16) + at process.processTicksAndRejections (node:internal/process/task_queues:82:21) +Emitted 'error' event on ChildProcess instance at: + at ChildProcess._handle.onexit (node:internal/child_process:290:12) + at onErrorNT (node:internal/child_process:477:16) + at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { + errno: -2, + code: 'ENOENT', + syscall: 'spawn /tmp/outputs/f98d55d8-9120-4179-8cc5-aad2576e4bb4', + path: '/tmp/outputs/f98d55d8-9120-4179-8cc5-aad2576e4bb4', + spawnargs: [] +} + +Node.js v18.19.1 diff --git a/src/run-code/index.js b/src/run-code/index.js index fe2505f..6c6e5de 100644 --- a/src/run-code/index.js +++ b/src/run-code/index.js @@ -1,11 +1,11 @@ -const {commandMap, supportedLanguages} = require("./instructions") -const {createCodeFile} = require("../file-system/createCodeFile") -const {removeCodeFile} = require("../file-system/removeCodeFile") -const {info} = require("./info") +const { commandMap, supportedLanguages } = require("./instructions") +const { createCodeFile } = require("../file-system/createCodeFile") +const { removeCodeFile } = require("../file-system/removeCodeFile") +const { info } = require("./info") -const {spawn} = require("child_process"); +const { spawn } = require("child_process"); -async function runCode({language = "", code = "", input = ""}) { +async function runCode({ language = "", code = "", input = "" }) { const timeout = 30; if (code === "") @@ -20,28 +20,33 @@ async function runCode({language = "", code = "", input = ""}) { error: `Please enter a valid language. Check documentation for more details: https://github.com/Jaagrav/CodeX-API#readme. The languages currently supported are: ${supportedLanguages.join(', ')}.` } - const {jobID} = await createCodeFile(language, code); - const {compileCodeCommand, compilationArgs, executeCodeCommand, executionArgs, outputExt} = commandMap(jobID, language); + const { jobID } = await createCodeFile(language, code); + const { compileCodeCommand, compilationArgs, executeCodeCommand, executionArgs, outputExt } = commandMap(jobID, language); if (compileCodeCommand) { await new Promise((resolve, reject) => { const compileCode = spawn(compileCodeCommand, compilationArgs || []) - compileCode.stderr.on('data', (error) => { - const msg = error.toString(); + let stderr = ""; - if (language === 'pas' && msg.includes("link.res contains output sections")) { - return; - } + compileCode.stdout.on('data', (data) => { + stderr += data.toString(); + }); - reject({ - status: 200, - output: '', - error: error.toString(), - language - }) + compileCode.stderr.on('data', (data) => { + stderr += data.toString(); }); - compileCode.on('exit', () => { - resolve() + + compileCode.on('close', (code) => { + if (code !== 0) { + reject({ + status: 200, + output: '', + error: stderr, + language + }) + } else { + resolve() + } }) }) } @@ -50,6 +55,13 @@ async function runCode({language = "", code = "", input = ""}) { const executeCode = spawn(executeCodeCommand, executionArgs || []); let output = "", error = ""; + executeCode.on('error', (err) => { + reject({ + status: 500, + error: `Failed to execute code: ${err.message}` + }); + }); + const timer = setTimeout(async () => { executeCode.kill("SIGHUP"); @@ -82,7 +94,7 @@ async function runCode({language = "", code = "", input = ""}) { executeCode.on('exit', (err) => { clearTimeout(timer); - resolve({output, error}); + resolve({ output, error }); }); }) @@ -95,4 +107,4 @@ async function runCode({language = "", code = "", input = ""}) { } } -module.exports = {runCode} \ No newline at end of file +module.exports = { runCode } \ No newline at end of file diff --git a/src/run-code/instructions.js b/src/run-code/instructions.js index f712dd5..a1571f5 100644 --- a/src/run-code/instructions.js +++ b/src/run-code/instructions.js @@ -1,4 +1,4 @@ -const {join} = require('path') +const { join } = require('path') const CODES_DIR = process.env.CODES_DIR || "/tmp/codes"; const OUTPUTS_DIR = process.env.OUTPUTS_DIR || "/tmp/outputs"; @@ -81,16 +81,16 @@ const commandMap = (jobID, language) => { compileCodeCommand: 'fpc', compilationArgs: [ `${CODES_DIR}/${jobID}.pas`, - `-FE${OUTPUTS_DIR}`, - `-o${jobID}` + `-FE${OUTPUTS_DIR}`, + `-o${jobID}.out` ], - executeCodeCommand: `${OUTPUTS_DIR}/${jobID}`, - outputExt: '', + executeCodeCommand: `${OUTPUTS_DIR}/${jobID}.out`, + outputExt: 'out', compilerInfoCommand: 'fpc -iV' }; } } -const supportedLanguages = ['java', 'cpp', 'py', 'c', 'js', 'go', 'cs','pas']; +const supportedLanguages = ['java', 'cpp', 'py', 'c', 'js', 'go', 'cs', 'pas']; -module.exports = {commandMap, supportedLanguages} +module.exports = { commandMap, supportedLanguages } From 0b254e3e29b0b41ac41247435df0220d0493903e Mon Sep 17 00:00:00 2001 From: Rebbouh-Mohamed Date: Thu, 18 Dec 2025 20:22:53 +0100 Subject: [PATCH 6/8] yacine commits --- src/logs/express.log | 20 -------------------- 1 file changed, 20 deletions(-) diff --git a/src/logs/express.log b/src/logs/express.log index 73746b6..e69de29 100644 --- a/src/logs/express.log +++ b/src/logs/express.log @@ -1,20 +0,0 @@ -node:events:495 - throw er; // Unhandled 'error' event - ^ - -Error: spawn /tmp/outputs/f98d55d8-9120-4179-8cc5-aad2576e4bb4 ENOENT - at ChildProcess._handle.onexit (node:internal/child_process:284:19) - at onErrorNT (node:internal/child_process:477:16) - at process.processTicksAndRejections (node:internal/process/task_queues:82:21) -Emitted 'error' event on ChildProcess instance at: - at ChildProcess._handle.onexit (node:internal/child_process:290:12) - at onErrorNT (node:internal/child_process:477:16) - at process.processTicksAndRejections (node:internal/process/task_queues:82:21) { - errno: -2, - code: 'ENOENT', - syscall: 'spawn /tmp/outputs/f98d55d8-9120-4179-8cc5-aad2576e4bb4', - path: '/tmp/outputs/f98d55d8-9120-4179-8cc5-aad2576e4bb4', - spawnargs: [] -} - -Node.js v18.19.1 From acac26434242f21eca321a57237fb23714d66090 Mon Sep 17 00:00:00 2001 From: Ubuntu Date: Tue, 23 Dec 2025 15:17:35 +0000 Subject: [PATCH 7/8] last commit 25 --- logs/express.log | 0 src/run-code/index.js | 60 ++++++++++++++++++++++--------------------- 2 files changed, 31 insertions(+), 29 deletions(-) create mode 100644 logs/express.log diff --git a/logs/express.log b/logs/express.log new file mode 100644 index 0000000..e69de29 diff --git a/src/run-code/index.js b/src/run-code/index.js index 1884231..675c8b3 100644 --- a/src/run-code/index.js +++ b/src/run-code/index.js @@ -23,42 +23,44 @@ async function runCode({ language = "", code = "", input = "" }) { const { jobID } = await createCodeFile(language, code); const { compileCodeCommand, compilationArgs, executeCodeCommand, executionArgs, outputExt } = commandMap(jobID, language); - if (compileCodeCommand) { - await new Promise((resolve, reject) => { - const compileCode = spawn(compileCodeCommand, compilationArgs || []) - compileCode.stderr.on('data', (error) => { - const msg = error.toString(); - - if (language === 'pas' && msg.includes("link.res contains output sections")) { - return; - } - +if (compileCodeCommand) { + await new Promise((resolve, reject) => { + const compileCode = spawn(compileCodeCommand, compilationArgs || []) + let compileError = ""; + + compileCode.stderr.on('data', (data) => { + const msg = data.toString(); + compileError += msg; // Accumulate error output + + if (language === 'pas' && msg.includes("link.res contains output sections")) { + return; + } + + // Only reject on critical errors immediately + if (msg.includes("error:") || msg.includes("Error:")) { reject({ status: 200, output: '', - error: error.toString(), + error: compileError, language }) - }); - - compileCode.stderr.on('data', (data) => { - stderr += data.toString(); - }); + } + }); - compileCode.on('close', (code) => { - if (code !== 0) { - reject({ - status: 200, - output: '', - error: stderr, - language - }) - } else { - resolve() - } - }) + compileCode.on('close', (code) => { + if (code !== 0) { + reject({ + status: 200, + output: '', + error: compileError, + language + }) + } else { + resolve() + } }) - } + }) +} const result = await new Promise((resolve, reject) => { const executeCode = spawn(executeCodeCommand, executionArgs || []); From a727736c65b5af9d3f781d13482b638ae1150f62 Mon Sep 17 00:00:00 2001 From: Rebbouh-Mohamed Date: Thu, 25 Dec 2025 13:54:54 +0100 Subject: [PATCH 8/8] Add Pascal language entry to README Added Pascal programming language entry to the table and example. --- README.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/README.md b/README.md index e5590a8..a4f6f38 100644 --- a/README.md +++ b/README.md @@ -34,6 +34,7 @@ Whichever language you might mention in the language field, it would be automati | GoLang | go | | C# | cs | | NodeJS | js | +| Pascal | pas | More coming very soon! @@ -119,6 +120,10 @@ This endpoint allows you to list all languages supported and their versions. "language": "cs", "info": "Mono C# compiler version 4.6.2.0\n" } + { + "language": "pas", + "info": "fpc" + } ] } ```