From 406456c28b357e7d072b18665f8a2059d8c31901 Mon Sep 17 00:00:00 2001 From: ren Date: Wed, 25 Jun 2025 11:45:56 +0300 Subject: [PATCH] Initial upload --- main.js | 72 ++ package-lock.json | 1306 ++++++++++++++++++++++++++++++++ package.json | 17 + public/elron_normal.png | Bin 0 -> 6431 bytes public/elron_special.png | Bin 0 -> 5434 bytes public/index.html | 176 +++++ public/indexorig.html | 174 +++++ public/stop_marker.png | Bin 0 -> 8017 bytes public/stop_marker_special.png | Bin 0 -> 8231 bytes 9 files changed, 1745 insertions(+) create mode 100644 main.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/elron_normal.png create mode 100644 public/elron_special.png create mode 100644 public/index.html create mode 100644 public/indexorig.html create mode 100644 public/stop_marker.png create mode 100644 public/stop_marker_special.png diff --git a/main.js b/main.js new file mode 100644 index 0000000..62b525a --- /dev/null +++ b/main.js @@ -0,0 +1,72 @@ +const express = require('express'); +const axios = require('axios'); +const NodeCache = require('node-cache'); +const http = require('http'); +const socketIo = require('socket.io'); + +const app = express(); +const PORT = process.env.PORT || 80; + +const stopCache = new NodeCache({ stdTTL: 86400 }); // 1 day + +// Create HTTP server and attach Socket.IO +const server = http.createServer(app); +const io = socketIo(server); + +async function fetchStops() { + try { + const { data } = await axios.get('https://elron.ee/stops_data.json'); + stopCache.set('stops', data.data || []); + } catch (err) { + console.error('Error fetching stops:', err); + } +} + +fetchStops(); +setInterval(fetchStops, 86400 * 1000); + +// Serve static files +app.use(express.static('public')); + +app.get('/api/trip/:id', async (req, res) => { + const tripId = req.params.id; + const response = await fetch(`https://elron.ee/live-map/trip/${tripId}`, { + headers: { 'Accept': 'application/json' } + }); + const data = await response.text(); // if response is not pure JSON + res.set('Access-Control-Allow-Origin', '*'); + res.send(data); +}); + +// Socket.IO connection +io.on('connection', (socket) => { + console.log('New client connected'); + + // Emit stops data to the client + socket.emit('stops', stopCache.get('stops') || []); + + // Emit vehicles data to the client every 2 seconds + const vehicleInterval = setInterval(async () => { + const vehicles = await fetchVehicles(); + socket.emit('vehicles', vehicles); + }, 2000); + + socket.on('disconnect', () => { + console.log('Client disconnected'); + clearInterval(vehicleInterval); + }); +}); + +// Fetch vehicles function +async function fetchVehicles() { + try { + const { data } = await axios.get('https://elron.ee/map_data.json'); + return data.data || []; + } catch (err) { + console.error('Error fetching vehicle data:', err); + return []; + } +} + +// Start the server +server.listen(PORT, () => console.log(`Server running on ${PORT}`)); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..7ebf29a --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1306 @@ +{ + "name": "elron-gps-tracker", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "elron-gps-tracker", + "version": "1.0.0", + "dependencies": { + "axios": "^1.10.0", + "express": "^5.1.0", + "node-cache": "^5.1.2", + "socket.io": "^4.8.1" + } + }, + "node_modules/@socket.io/component-emitter": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@socket.io/component-emitter/-/component-emitter-3.1.2.tgz", + "integrity": "sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==", + "license": "MIT" + }, + "node_modules/@types/cors": { + "version": "2.8.19", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.19.tgz", + "integrity": "sha512-mFNylyeyqN93lfe/9CSxOGREz8cpzAhH+E93xJ4xWQf62V8sQ/24reV2nyzUWM6H6Xji+GGHpkbLe7pVoUEskg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "24.0.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-24.0.3.tgz", + "integrity": "sha512-R4I/kzCYAdRLzfiCabn9hxWfbuHS573x+r0dJMkkzThEa7pbrcDWK+9zu3e7aBOouf+rQAciqPFMnxwr0aWgKg==", + "license": "MIT", + "dependencies": { + "undici-types": "~7.8.0" + } + }, + "node_modules/accepts": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-2.0.0.tgz", + "integrity": "sha512-5cvg6CtKwfgdmVqY1WIiXKc3Q1bkRqGLi+2W/6ao+6Y7gu/RCwRuAhGEzh5B4KlszSuTLgZYuqFqo5bImjNKng==", + "license": "MIT", + "dependencies": { + "mime-types": "^3.0.0", + "negotiator": "^1.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/accepts/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==", + "license": "MIT" + }, + "node_modules/axios": { + "version": "1.10.0", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.10.0.tgz", + "integrity": "sha512-/1xYAC4MP/HEG+3duIhFr4ZQXR4sQXOIe+o6sdqzeykGLx6Upp/1p8MHqhINOvGeP7xyNHe7tsiJByc4SSVUxw==", + "license": "MIT", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "license": "MIT", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/body-parser": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.0.tgz", + "integrity": "sha512-02qvAaxv8tp7fBa/mw1ga98OGm+eCbqzJOKoRt70sLmfEEi+jyBYVTDGfCL/k06/4EMk/z01gCe7HoCH/f2LTg==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.0", + "http-errors": "^2.0.0", + "iconv-lite": "^0.6.3", + "on-finished": "^2.4.1", + "qs": "^6.14.0", + "raw-body": "^3.0.0", + "type-is": "^2.0.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/clone": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/clone/-/clone-2.1.2.tgz", + "integrity": "sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==", + "license": "MIT", + "engines": { + "node": ">=0.8" + } + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "license": "MIT", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/content-disposition": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.0.tgz", + "integrity": "sha512-Au9nRL8VNUut/XSzbQA38+M78dzP4D+eqg3gfJHMIHHYa3bg067xj1KxMUWj+VULbiZMowKngFFbKczUrNJ1mg==", + "license": "MIT", + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/content-type": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.5.tgz", + "integrity": "sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.7.2.tgz", + "integrity": "sha512-yki5XnKuf750l50uGTllt6kKILY4nQ1eNIQatoXEByZ5dWgnKqbnqmTrBE5B4N7lrMJKQ2ytWMiTO2o0v6Ew/w==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.2.2.tgz", + "integrity": "sha512-D76uU73ulSXrD1UXF4KE2TMxVVwhsnCgfAyTg9k8P6KGZjlXKrOLe4dJQKI3Bxi5wjesZoFXJWElNWBjPZMbhg==", + "license": "MIT", + "engines": { + "node": ">=6.6.0" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "license": "MIT", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.1.tgz", + "integrity": "sha512-KcKCqiftBJcZr++7ykoDIEwSa3XWowTfNPo92BYxjXiyYEVrUQh2aLyhxBCwww+heortUFxEJYcRzosstTEBYQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "license": "MIT", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/depd": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==", + "license": "MIT" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.4.tgz", + "integrity": "sha512-ZCkIjSYNDyGn0R6ewHDtXgns/Zre/NT6Agvq1/WobF7JXgFff4SeDroKiCO3fNJreU9YG429Sc81o4w5ok/W5g==", + "license": "MIT", + "dependencies": { + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.17.1" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.2.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.2.3.tgz", + "integrity": "sha512-HqD3yTBfnBxIrbnM1DoD6Pcq8NECnh8d4As1Qgh0z5Gg3jRRIqijury0CL3ghu/edArpUYiYqQiDUQBIs4np3Q==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.1.0.tgz", + "integrity": "sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.6", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==", + "license": "MIT" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/express/-/express-5.1.0.tgz", + "integrity": "sha512-DT9ck5YIRU+8GYzzU5kT3eHGA5iL+1Zd0EutOmTE9Dtk+Tvuzd23VBU+ec7HPNSTxXYO55gPV/hq4pSBJDjFpA==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.0", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "finalhandler": "^2.1.0", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "merge-descriptors": "^2.0.0", + "mime-types": "^3.0.0", + "on-finished": "^2.4.1", + "once": "^1.4.0", + "parseurl": "^1.3.3", + "proxy-addr": "^2.0.7", + "qs": "^6.14.0", + "range-parser": "^1.2.1", + "router": "^2.2.0", + "send": "^1.1.0", + "serve-static": "^2.2.0", + "statuses": "^2.0.1", + "type-is": "^2.0.1", + "vary": "^1.1.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/express/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/express/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/finalhandler": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.0.tgz", + "integrity": "sha512-/t88Ty3d5JWQbWYgaOGCCYfXRwV1+be02WqYYlL6h0lEiUAMPM8o8qKGO01YIkOHzka2up08wvgYD0mDiI+q3Q==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "on-finished": "^2.4.1", + "parseurl": "^1.3.3", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.3.tgz", + "integrity": "sha512-qsITQPfmvMOSAdeyZ+12I1c+CKSstAFAwu+97zrnWAbIr5u8wfsExUzCesVLC8NgHuRUqNN4Zy6UPWUTRGslcA==", + "license": "MIT", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "es-set-tostringtag": "^2.1.0", + "hasown": "^2.0.2", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-2.0.0.tgz", + "integrity": "sha512-Rx/WycZ60HOaqLKAi6cHRKKI7zxWbJ31MhntmtwMoaTeF7XFH9hhBp8vITaMidfljRQ6eYWCKkaTK+ykVJHP2A==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "license": "MIT", + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", + "license": "MIT", + "dependencies": { + "depd": "2.0.0", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": "2.0.1", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/http-errors/node_modules/statuses": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/ipaddr.js": { + "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-promise": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz", + "integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-1.1.0.tgz", + "integrity": "sha512-aisnrDP4GNe06UcKFnV5bfMNPBUw4jsLGaWwWfnH3v02GnBuXX2MCVn5RbrWo0j3pczUilYblq7fQ7Nw2t5XKw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/merge-descriptors": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-2.0.0.tgz", + "integrity": "sha512-Snk314V5ayFLhp3fkUREub6WtjBfPdCPY1Ln8/8munuLuiYhsABgBVWsozAG+MWMbVEvcdcpbi9R7ww22l9Q3g==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/negotiator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-1.0.0.tgz", + "integrity": "sha512-8Ofs/AUQh8MaEcrlq5xOX0CQ9ypTF5dl78mjlMNfOK08fzpgTHQRQPBxcPlEtIw0yRpws+Zo/3r+5WRby7u3Gg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-cache": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/node-cache/-/node-cache-5.1.2.tgz", + "integrity": "sha512-t1QzWwnk4sjLWaQAS8CHgOJ+RAfmHpxFWmc36IWTiWHQfs0w5JDMBS1b1ZxQteo0vVVuWJvIUKHDkkeK7vIGCg==", + "license": "MIT", + "dependencies": { + "clone": "2.x" + }, + "engines": { + "node": ">= 8.0.0" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/on-finished": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", + "license": "MIT", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-to-regexp": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.2.0.tgz", + "integrity": "sha512-TdrF7fW9Rphjq4RjrW0Kp2AW0Ahwu9sRGTkS6bvDi0SCwZlEZYmcfDbEsTz8RVk0EHIS/Vd1bv3JhG+1xZuAyQ==", + "license": "MIT", + "engines": { + "node": ">=16" + } + }, + "node_modules/proxy-addr": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", + "license": "MIT", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==", + "license": "MIT" + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.0.tgz", + "integrity": "sha512-RmkhL8CAyCRPXCE28MMH0z2PNWQBNk2Q09ZdxM9IOOXwxwZbN+qbWaatPkdkWIKL2ZVDImrN/pK5HTRz2PcS4g==", + "license": "MIT", + "dependencies": { + "bytes": "3.1.2", + "http-errors": "2.0.0", + "iconv-lite": "0.6.3", + "unpipe": "1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/router": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/router/-/router-2.2.0.tgz", + "integrity": "sha512-nLTrUKm2UyiL7rlhapu/Zl45FwNgkZGaCpZbIHajDYgwlJCOzLSk+cIPAnsEqV955GjILJnKbdQC1nVPz+gAYQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.0", + "depd": "^2.0.0", + "is-promise": "^4.0.0", + "parseurl": "^1.3.3", + "path-to-regexp": "^8.0.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "license": "MIT" + }, + "node_modules/send": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.0.tgz", + "integrity": "sha512-uaW0WwXKpL9blXE2o0bRhoL2EGXIrZxQ2ZQ4mgcfoBxdFmQold+qWsD2jLrfZ0trjKL6vOw0j//eAwcALFjKSw==", + "license": "MIT", + "dependencies": { + "debug": "^4.3.5", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.0", + "mime-types": "^3.0.1", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.1" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/send/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/send/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/serve-static": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.0.tgz", + "integrity": "sha512-61g9pCh0Vnh7IutZjtLGGpTA355+OPn2TyDv/6ivP2h/AdAVX9azsoxmg2/M6nZeQZNYBEwIcsne1mJd9oQItQ==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==", + "license": "ISC" + }, + "node_modules/side-channel": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/socket.io": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.1.tgz", + "integrity": "sha512-oZ7iUCxph8WYRHHcjBEc9unw3adt5CmSNlppj/5Q4k2RIrhl8Z5yY2Xr4j9zj0+wzVZ0bxmYoGSzKJnRl6A4yg==", + "license": "MIT", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.3.2", + "engine.io": "~6.6.0", + "socket.io-adapter": "~2.5.2", + "socket.io-parser": "~4.2.4" + }, + "engines": { + "node": ">=10.2.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.5.5", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.5.tgz", + "integrity": "sha512-eLDQas5dzPgOWCk9GuuJC2lBqItuhKI4uxGgo9aIV7MYbk2h9Q6uULEh8WBzThoI7l+qU9Ast9fVUmkqPP9wYg==", + "license": "MIT", + "dependencies": { + "debug": "~4.3.4", + "ws": "~8.17.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser": { + "version": "4.2.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.4.tgz", + "integrity": "sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==", + "license": "MIT", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/accepts": { + "version": "1.3.8", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", + "license": "MIT", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/negotiator": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "license": "MIT", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/type-is": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-2.0.1.tgz", + "integrity": "sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==", + "license": "MIT", + "dependencies": { + "content-type": "^1.0.5", + "media-typer": "^1.1.0", + "mime-types": "^3.0.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-db": { + "version": "1.54.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.54.0.tgz", + "integrity": "sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/type-is/node_modules/mime-types": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.1.tgz", + "integrity": "sha512-xRc4oEhT6eaBpU1XF7AjpOFD+xQmXNB5OVKwp4tqCuBpHLS/ZbBDrc07mYTDqVMg6PfxUjjNp85O6Cd2Z/5HWA==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undici-types": { + "version": "7.8.0", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.8.0.tgz", + "integrity": "sha512-9UJ2xGDvQ43tYyVMpuHlsgApydB8ZKfVYTsLDhXkFL/6gfkp+U8xTGdh8pMJv1SpZna0zxG1DwsKZsreLbXBxw==", + "license": "MIT" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", + "license": "MIT", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/ws": { + "version": "8.17.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.17.1.tgz", + "integrity": "sha512-6XQFvXTkbfUOZOKKILFG1PDK2NDQs4azKQl26T0YS5CxqWLgXajbPZ+h4gZekJyRqFU8pvnbAbbs/3TgRPy+GQ==", + "license": "MIT", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": ">=5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..8c630ef --- /dev/null +++ b/package.json @@ -0,0 +1,17 @@ +{ + "name": "elron-gps-tracker", + "version": "1.0.0", + "author": "VELENDEU, eetnaviation", + "license": "MIT", + "homepage": "https://git.velend.eu/VELENDEU/elron-gps-tracker", + "main": "main.js", + "scripts": { + "start": "node main.js" + }, + "dependencies": { + "axios": "^1.10.0", + "express": "^5.1.0", + "node-cache": "^5.1.2", + "socket.io": "^4.8.1" + } +} diff --git a/public/elron_normal.png b/public/elron_normal.png new file mode 100644 index 0000000000000000000000000000000000000000..2f260fb72f9ec27a8ceec53f7267919ca2cae6a6 GIT binary patch literal 6431 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 EH{rgMlmGw# literal 0 HcmV?d00001 diff --git a/public/elron_special.png b/public/elron_special.png new file mode 100644 index 0000000000000000000000000000000000000000..72fc2866b064cf68fa5184bd691c6ea71078386d GIT binary patch literal 5434 zcmdT{30PCtwq7R$3>qda1r;R($0Fnegpia-Wabu-Dk^n=gd{*NWRL_2$Z)8NQ&qGg z6jG&+Tjv6;L$MB=s)ecuR;#GsfLK7Wf-;B-$=$)Bz3;ZKefQn(d*9^?Uv~Ccdkz0u z>tFkBrr)gKd? zOOeF$<^}}4GKPNfnTZ;WipOH5rKP#0dAKQ45?E|5m&?N4S?=zxNWxW}uF#0It_rpD zYYhQXwKzql(#VtwhEby^PMNCVGm)z=W00%fs8y(6;e-%lX+t|lV4{l^0mthcMmr#LM9KfM9%I89OM(|7Q=??1zv_s2(q*q!$uh=p74Sr2V|DYHVq;pR z66ULI*}sgyOSNfox`Rje5k5xVsIlwsYSZ0Ulbt(WO zAAk@b&ZU?G&?fyyY-Ei;0d0>n4JwBdW<)_VpFc4u>*v#ty&FGK(6Gv_@7v&4f+5cr z_K)>!+Jz=d^bc!kMR%PcO%H$T=-VQA2KZp-xM!zbNLit7XTLgjcTCB|is1XOr`zH$ zDUU=gFD!eidZ(PzKT7ER$Ym_F9~YenecI}Vxvw3}2nrG$1^cA|q4ezUe+t^ay&`7w zf(rk=NaYKBAXnZKP+EM;CUOeU4gK`&JI;Qkn|2&jX~BLl>)IW1q0T0?w|IlU3E8b| z*k$I{Qn%-`+DwPHAungK7h5$d;d|{D?f3GLvZlve-^!^@_=5B4*FAx*Urx_1wY9-x zHr%%EFp7^i^S!vi+CHg^)-l@n)5{tE@L+u=md&fMPotyNtRtvB_2-Az|yZODF*e7H&w zyECi0WCYPtZMD)ddL6B!v#cxaGIH*zs0{X}ob2m)zT)O!0%RD5?p|4v(wO5?F#_Le zz31~#&_0gn{h5k6F%cxWq?}*tW6|Lc^uKA;YwZ$ix#<%y zyogrHdwhzn`?zon1k$iXe^R2F6%zq(F)2jjne)$d8_@$(b4+Ne-`jJ8DtMm>cO0{m z_E}(&I?k;8a~mTUQ-l;REWhT$oD~!y(~DZkCF z)oQOTzV4J>$v|VPIe9mkC!92AQs-#Ek_AF4hjG}PV0bxSTv>v`CvdMR7q@!EPoyxm z?Z(JkIv2GKe7lWTIU?b#jwyMQ$e-wjqvnupgOOaFZIU${FME*N z;O%(T2?p{{jfhcCIS>rplMh?j>yw_;5(8VqEw0xeHCIK{g@S6Ug=OZMqc{g6uisKE zFL87~Iz4*jPRzbT*Kh@@HibMZM%-W>0w7>u0J&6j;Trva+_0=|UDi9UIQ?W!^wYc0 zare>v$9RT?s}^z3pU{7DV+`PHj_t19pnuW+Voi_>*3SUKYALUK&QO;r_9GJrd6U9% zpiplZMX`Sm1XWj88h&iFrQmr$M3$Ku7FRSnnUy+Ln}X=kj)~{#hOhUPk6Lig999)c ztDYyq^KL3o>f8roOO{>0$6&CbBt5_W`0_oE5M!3)Y(X~rW2xGN0_;I6j5cykMmB#A z2;bjNH^>)vE-D>~!Kg*cgyq_Bd@B&&9q^g9@T6BqIFNp$%_OHh{j4ZZw24MEnM3rd z&uB~hfTWCGlXKVe^p0P^CGTx@Ts<}R-R8gi0(@AVv+A}<)%HK2X<=N$Q>(HW4X0dX~LEK+};vD{Q4> z&1fLs{UVOMxQ0gs)%N$w$jUW0jIcae{Ch=Lsw}e;l;;e+@GUEZ^8+s`e1loJXSEd4 zI?wmv`5kxX8b{i*LbzZ5>BvLv&RE1_DhOx$mCU2UQtmeRt2JoE1OBo74zV@>qsCyF zL2z-kKdtm_OrXy5{YYx{#O7t;hac@B#yt$YH5z8NlDUf>hQ^E;_UYoPcP;juy>)Lj z2-7U>iRV-h*l(#nVh+pOgt^>n`)RPeRe%+(L6}dzaS&~{FtDNxa3?;`x9+_D!eoF` z>xeK4QR3|lZIhs?xW%foa%T^1cnVjoKV}-eIqTCvP_frg$w7ogHEqy=LTvDM5N7qK zo1wmS7zv%$0LPsN8mEHyhSMN)r4S#}bH0~!RfGd{Pq(Rb!^pzqY{JtVW=RK3n%ZVW z7YvsXVKqJbj%UKD3@UV8>mY-57D)&N)b8EmS6gL%H}*?QjAVIv2`n)n1Dj_Ym<^Tk z5(|qZHJ`A3F=8X#NDL}lj+J^0v?L2r6hQ1hx~`}YXz{I-6{_usVOD)5!oETUr)b+1 zH;cl^-#C&0ns~tE3-8!ACcw3gGz1MTPE6_cgH`xoZj6qjM$sV6)W}wWvi{TORK%5j zFbfGMp0Ws$Q-mTfN4!|Q#|^8TR$@t1Af$>@{O5iQ(fJq5$mtXzJI^ zQ6ej?OGXiDb0W}QPttYsQ(r>+cIlqnPrMJJ0{Hmg7Gf;-Sk23PhK0>G@lfY&oD5T> zt)Lo(LdO;HH8wEjD-luPeYpl5`0{F|Xk1 zlmp)dgUJbgzYzj1{8lTzbUfVz8Vl-$ed$uwLPP5zqu3Ll8P z!Zk5$TR)otaAzYwPoJ>w41ucOAma|)9yfu4aMtoi7#5fLkxC4#<@dTBpY`!EU|j0> z*05#A920~oBjUT3YI#;8YSy)LQwOR$4$nfx_0faVhQQ6KHF`SfdAs?C>aQ@eFMh1P z;;`;r8|>nPKszd^iR%w10tJmM?>+<3 z{RuH?Vnq~Gne_9abn{$9i@i?6Gh^EKwE%|}pt~*~`nxj?c!v4BX{eh>*$UH5znWLu z4?bwX9;PofQnGOdMNNSPSxZbv`~4RRPE_m;gYKODCuCUAvK`qGs9Bb|`UL@09=g7h za%fS`UMLz0ys@$i1O7I2mroR3E!n@l)6EVJo(x$La&kFwHU3@k;)<`Appz~K0|c8> zx6_FaVoLdwV?0ROm4>F6PIQHDT3|4}G4Il0N>pTD^Up`iPd9Y=Zn}B$hAp}a1hYQd zyHDvyyfwcqtSddT-<%v}GMd;P)bI%!`c6sH4AeV;1%6HEJ2(!|)u;0;YbR%7mGaI2 zvcqlyfzr;IA5TW1ot|Jpf!##na=(syrQUF#B5Z2gNc@#G3kr`)^ijS&yXl18!Bv7j z4hHGFED5{${^XqzrTZpRkbY}?0NbP33tIL&RC+eVe<^|ESKgt~Ga=sA29!(3Q_W_< z{G({jpwXoEV|R` T_@eo!H6b)GBB0z)_~G9HNRtox literal 0 HcmV?d00001 diff --git a/public/index.html b/public/index.html new file mode 100644 index 0000000..5f2cdab --- /dev/null +++ b/public/index.html @@ -0,0 +1,176 @@ + + + + + + Elron GPS Tracker + + + + + + +
+
+ + +
+
+ + +
+
+ +
+ + + + + + + diff --git a/public/indexorig.html b/public/indexorig.html new file mode 100644 index 0000000..9756fb4 --- /dev/null +++ b/public/indexorig.html @@ -0,0 +1,174 @@ + + + + + + Elron Gps Tracker + + + + +

Elron Gps Tracker

+
+
+ + +
+
+ + +
+
+ +
+ + + + + + + \ No newline at end of file diff --git a/public/stop_marker.png b/public/stop_marker.png new file mode 100644 index 0000000000000000000000000000000000000000..8d3b7ff85ac90c1a1debeb12c6f657a2862d8b66 GIT binary patch literal 8017 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 LnM<`(*p~kX^=bU6 literal 0 HcmV?d00001