From cb369cfef97bd9453b1c6fab3cc06ca9bda566b1 Mon Sep 17 00:00:00 2001 From: Siau Pheng Date: Thu, 29 Oct 2026 14:13:06 +0700 Subject: [PATCH] first commit --- .env.example | 7 + .gitignore | 10 + README.md | 36 + index.js | 124 +++ package-lock.json | 1866 +++++++++++++++++++++++++++++++++++++ package.json | 14 + public/images/logo300.png | Bin 0 -> 69818 bytes public/index.html | 34 + 8 files changed, 2091 insertions(+) create mode 100644 .env.example create mode 100644 .gitignore create mode 100644 README.md create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json create mode 100644 public/images/logo300.png create mode 100644 public/index.html diff --git a/.env.example b/.env.example new file mode 100644 index 0000000..ece82de --- /dev/null +++ b/.env.example @@ -0,0 +1,7 @@ +APP_PORT=0 + +DB_HOST= +DB_USER= +DB_PASSWORD= +DB_NAME= +DB_PORT= diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..8196209 --- /dev/null +++ b/.gitignore @@ -0,0 +1,10 @@ +# ignore visual studio code +/.vs/ + +# dotenv environment variable files +.env +.env.* +!.env.example + +# Dependency directories +node_modules/ diff --git a/README.md b/README.md new file mode 100644 index 0000000..dc6638d --- /dev/null +++ b/README.md @@ -0,0 +1,36 @@ +# INVESA-NODE + +Aplikasi INVESA Service + +## Deskripsi + +Aplikasi basis NodeJS untuk Web Aplikasi INVESA, pengontrol supervisi dan lalu lintas data monitor pada display depan kasir. + +## Install + +``` +$ git clone https://git.trifonia.cloud/CMASA-MEMPAWAH/invesa-node.git +$ cd invesa-node +$ npm install +``` + +## Penggunaan + +Jalankan service dengan perintah : + +```$ npm start``` + +## Authors + +Developer dan programmer + +[@siaupheng](mailto:siaupheng@3fonia.com) + +## Version History + +* 1.0 + * Initial Release + +## License + +This project is licensed. diff --git a/index.js b/index.js new file mode 100644 index 0000000..00ef9f1 --- /dev/null +++ b/index.js @@ -0,0 +1,124 @@ +const express = require('express'); +const { createServer } = require('node:http'); +const { join } = require('node:path'); +const { Server } = require('socket.io'); +const mysql = require('mysql2/promise'); +const dotenv = require('@dotenvx/dotenvx'); +const { PoolConnection } = require('mysql2'); + +const app = express(); +const server = createServer(app); +const io = new Server(server, { 'path': '/io' }); + +dotenv.config(); + +const db = mysql.createPool({ + host: process.env.DB_HOST || '127.0.0.1', + user: process.env.DB_USER || 'mariadb', + password: process.env.DB_PASSWORD || '', + database: process.env.DB_NAME || '', + port: process.env.DB_PORT || 3306, +}); + +const app_port = process.env.APP_PORT || 3000; + +io.on('connection', (socket) => { + let pollPPOB = null; + let pollSuper = null; + let pollMonitor = null; + // get ip address + const forwardedIp = socket.handshake.headers["x-forwarded-for"]; + //const cloudflareIp = socket.handshake.headers["cf-connecting-ip"]; + const clientIp = forwardedIp ? forwardedIp.split(',')[0] : socket.handshake.address; + //console.log("Real Client IP:", clientIp); + + // PPOB + socket.on('ppob-check', (ajson) => { + if (!ajson || typeof ajson !== 'object') return socket.emit('ppob-error', { 'message': 'Invalid payload format' }); + const { CabID, UserID } = ajson; + if (!CabID || !UserID) return socket.emit('ppob-error', { 'message': 'Missing required CabID and UserID' }); + + if (pollPPOB) clearInterval(pollPPOB); + pollPPOB = setInterval(async () => { + try { + const [rows, fields] = await db.query("SELECT No_TX,Status FROM ppob_tx WHERE No_TX IN (SELECT No_TX FROM ppob_pend WHERE CabID=? AND UserID=?)", [ CabID, UserID ]); + socket.emit('ppob-data', { 'prabayar': rows }); + } catch (error) { + console.error("db query failed :", error); + } + }, 1500); + }); + socket.on('ppob-update', (ajson) => { + if (!ajson || typeof ajson !== 'object') return socket.emit('ppob-error', { 'message': 'Invalid payload format' }); + const { CabID, UserID } = ajson; + if (!CabID || !UserID) return socket.emit('ppob-error', { 'message': 'Missing required CabID and UserID' }); + try { + db.execute("DELETE FROM ppob_pend WHERE Status=4 AND CabID=? AND UserID=?", [ CabID, UserID ]); + } catch (error) { + console.error("db execute failed :", error); + } + }); + socket.on('ppob-done', () => { + if (pollPPOB) clearInterval(pollPPOB); + pollPPOB = null; + }); + + // SUPERVISI + socket.on('super-check', (ajson) => { + if (pollSuper) return; + pollSuper = setInterval(async () => { + try { + const [rows, fields] = await db.query({sql: "SELECT A.AuthID,O.Nama Nama_User,A.Tanggal,M.Judul,A.Catatan,A.REQ,'' Aksi FROM (SELECT AuthID,UserID,Kode,DATE_FORMAT(Tanggal,'%d-%m-%Y %H:%i:%s') Tanggal,REQ,Catatan FROM app_auth WHERE Auth=0) A LEFT JOIN app_operator O ON (A.UserID=O.UserID) LEFT JOIN app_menu M ON (A.Kode=M.Kode)", rowsAsArray: true}); + socket.emit('super-data', { 'data': rows }); + } catch (error) { + console.error("db query failed :", error); + } + }, 1500); + }); + socket.on('super-done', () => { + if (pollSuper) clearInterval(pollSuper); + pollSuper = null; + }); + + // MONITOR + socket.on('monitor-check', (ajson) => { + if (!ajson || typeof ajson !== 'object') return socket.emit('monitor-error', { 'message': 'Invalid payload format' }); + const { CabID, UserID } = ajson; + if (pollMonitor) return; + pollMonitor = setInterval(async () => { + try { + const adata = { 'total': 0, 'thank': 0 }; + const [row_pos, fields_pos] = await db.query("SELECT * FROM disp_login WHERE CabID=? AND IP=? ORDER BY Date DESC", [ CabID, clientIp ]); + if (row_pos.length) { + const [row_total, fields_total] = await db.query("SELECT SUM(-Qty*(Harga_Jual-Disk_Rupiah)) Total FROM tmp_inv_detail WHERE No_Ref=? AND Unix=?", [ row_pos[0].No_Pos, row_pos[0].Unix ]); + const [row_thank, fields_thank] = await db.query("SELECT IF(No_Cetak='',0,1) Ada FROM disp_login WHERE CabID=? AND UserID=? AND Unix=?", [ CabID, row_pos[0].UserID, row_pos[0].Unix ]); + if (row_total.length) adata.total = row_total[0].Total || 0; + if (row_thank.length) adata.thank = row_thank[0].Ada || 0; + } + socket.emit('monitor-data', { 'data': adata }); + } catch (error) { + console.error("db query failed :", error); + } + }, 1500); + }); + socket.on('monitor-done', () => { + if (pollMonitor) clearInterval(pollMonitor); + pollMonitor = null; + }); + + // DISCONNECT + socket.on('disconnect', () => { + if (pollPPOB) clearInterval(pollPPOB); + if (pollSuper) clearInterval(pollSuper); + if (pollMonitor) clearInterval(pollMonitor); + }); +}); + +app.get('/', (req, res) => { + res.sendFile(join(__dirname, 'public', 'index.html')); +}); +app.use(express.static('public')); + +server.listen(app_port, () => { + console.log('Server running at http://localhost:' + app_port); +}); diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..bf81f76 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,1866 @@ +{ + "name": "invesa-ppob", + "version": "0.0.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "invesa-ppob", + "version": "0.0.1", + "dependencies": { + "@dotenvx/dotenvx": "^1.69.1", + "express": "^4.22.2", + "mysql2": "^3.22.4", + "socket.io": "^4.8.3" + }, + "devDependencies": { + "nodemon": "^3.1.14" + } + }, + "node_modules/@dotenvx/dotenvx": { + "version": "1.69.1", + "resolved": "https://registry.npmjs.org/@dotenvx/dotenvx/-/dotenvx-1.69.1.tgz", + "integrity": "sha512-kwQB5KcAegxw/+NGUgXAo5ovyOSjlMhoXSSnSEpDhoHJwzMcMO0HE1U0VCYZ7jbAeCMGamed9XdWzOA5ixtTNg==", + "dependencies": { + "commander": "^11.1.0", + "dotenv": "^17.2.1", + "eciesjs": "^0.4.10", + "enquirer": "^2.4.1", + "execa": "^5.1.1", + "fdir": "^6.2.0", + "ignore": "^5.3.0", + "object-treeify": "1.1.33", + "picomatch": "^4.0.4", + "which": "^4.0.0", + "yocto-spinner": "^1.1.0" + }, + "bin": { + "dotenvx": "src/cli/dotenvx.js" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "node_modules/@ecies/ciphers": { + "version": "0.2.6", + "resolved": "https://registry.npmjs.org/@ecies/ciphers/-/ciphers-0.2.6.tgz", + "integrity": "sha512-patgsRPKGkhhoBjETV4XxD0En4ui5fbX0hzayqI3M8tvNMGUoUvmyYAIWwlxBc1KX5cturfqByYdj5bYGRpN9g==", + "engines": { + "bun": ">=1", + "deno": ">=2.7.10", + "node": ">=16" + }, + "peerDependencies": { + "@noble/ciphers": "^1.0.0" + } + }, + "node_modules/@noble/ciphers": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@noble/ciphers/-/ciphers-1.3.0.tgz", + "integrity": "sha512-2I0gnIVPtfnMw9ee9h1dJG7tp81+8Ob3OJb3Mv37rx5L40/b0i7djjCVvGOVqc9AEIQyvyu1i6ypKdFw8R8gQw==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/curves": { + "version": "1.9.7", + "resolved": "https://registry.npmjs.org/@noble/curves/-/curves-1.9.7.tgz", + "integrity": "sha512-gbKGcRUYIjA3/zCCNaWDciTMFI0dCkvou3TL8Zmy5Nc7sJ47a0jtOeZoTaMxkuqRo9cRhjOdZJXegxYE5FN/xw==", + "dependencies": { + "@noble/hashes": "1.8.0" + }, + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "node_modules/@noble/hashes": { + "version": "1.8.0", + "resolved": "https://registry.npmjs.org/@noble/hashes/-/hashes-1.8.0.tgz", + "integrity": "sha512-jCs9ldd7NwzpgXDIf6P3+NrHh9/sD6CQdxHyjQI+h/6rDNo88ypBxxz45UDuZHz9r3tNz7N/VInSVoVdtXEI4A==", + "engines": { + "node": "^14.21.3 || >=16" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + } + }, + "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==" + }, + "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==", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/node": { + "version": "25.9.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", + "integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", + "dependencies": { + "undici-types": ">=7.24.0 <7.24.7" + } + }, + "node_modules/@types/ws": { + "version": "8.18.1", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.18.1.tgz", + "integrity": "sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==", + "dependencies": { + "@types/node": "*" + } + }, + "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==", + "dependencies": { + "mime-types": "~2.1.34", + "negotiator": "0.6.3" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/anymatch/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/array-flatten": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" + }, + "node_modules/aws-ssl-profiles": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/aws-ssl-profiles/-/aws-ssl-profiles-1.1.2.tgz", + "integrity": "sha512-NZKeq9AfyQvEeNlN0zSYAaWrmBffJh3IELMZfRpJVWgrpEbtEpnjvzqBPf+mxoI287JohRDoa+/nsfqqiZmF6g==", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "dev": true, + "engines": { + "node": "18 || 20 || >=22" + } + }, + "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==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/body-parser": { + "version": "1.20.5", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.5.tgz", + "integrity": "sha512-3grm+/2tUOvu2cjJkvsIxrv/wVpfXQW4PsQHYm7yk4vfpu7Ekl6nEsYBoJUL6qDwZUx8wUhQ8tR2qz+ad9c9OA==", + "dependencies": { + "bytes": "~3.1.2", + "content-type": "~1.0.5", + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "~1.2.0", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "on-finished": "~2.4.1", + "qs": "~6.15.1", + "raw-body": "~2.5.3", + "type-is": "~1.6.18", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/brace-expansion": { + "version": "5.0.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.12.tgz", + "integrity": "sha512-YovQ3rzhaLMIrDjNDMkNS01tea93qhEhG5xy8f6+R0l+dw3Ki+5sCoIoI942iuLZTHWogWktgwVDhU09iNEimQ==", + "dev": true, + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "20 || >=22" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/bytes": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", + "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==", + "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==", + "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/chokidar": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "dev": true, + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/commander": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.1.0.tgz", + "integrity": "sha512-yPVavfyCcRhmorC7rWlkHn15b4wDVgVmBA7kV4QVBsF7kv/9TKJAbAXVTxvTnwP8HHKjRCJDClKbciiYS7p0DQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "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==", + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cookie-signature": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.7.tgz", + "integrity": "sha512-NXdYc3dLr47pBkpUCHtKSwIOQXLVn8dZEuywboCOJY/osA0wFSLlSawr3KN8qXJEyX66FcONTH8EIlVuK0yyFA==" + }, + "node_modules/cors": { + "version": "2.8.6", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.6.tgz", + "integrity": "sha512-tJtZBBHA6vjIAaF6EnIaq6laBBP9aq/Y3ouVJjEfoHbRBcHBAHYcMh/w8LDrk2PvIMMq8gmopa5D4V8RmbrxGw==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/cross-spawn/node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/cross-spawn/node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/denque": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/denque/-/denque-2.1.0.tgz", + "integrity": "sha512-HVQE3AAb/pxF8fQAoiqpvg9i3evqug3hoiwakOyZAwJm+6vZehbkYXZ0l4JxS+I3QxM97v5aaRNhj8v5oBhekw==", + "engines": { + "node": ">=0.10" + } + }, + "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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/destroy": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", + "engines": { + "node": ">= 0.8", + "npm": "1.2.8000 || >= 1.4.16" + } + }, + "node_modules/dotenv": { + "version": "17.4.2", + "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-17.4.2.tgz", + "integrity": "sha512-nI4U3TottKAcAD9LLud4Cb7b2QztQMUEfHbvhTH09bqXTxnSie8WnjPALV/WMCrJZ6UV/qHJ6L03OqO3LcdYZw==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://dotenvx.com" + } + }, + "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==", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eciesjs": { + "version": "0.4.18", + "resolved": "https://registry.npmjs.org/eciesjs/-/eciesjs-0.4.18.tgz", + "integrity": "sha512-wG99Zcfcys9fZux7Cft8BAX/YrOJLJSZ3jyYPfhZHqN2E+Ffx+QXBDsv3gubEgPtV6dTzJMSQUwk1H98/t/0wQ==", + "dependencies": { + "@ecies/ciphers": "^0.2.5", + "@noble/ciphers": "^1.3.0", + "@noble/curves": "^1.9.7", + "@noble/hashes": "^1.8.0" + }, + "engines": { + "bun": ">=1", + "deno": ">=2", + "node": ">=16" + } + }, + "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==" + }, + "node_modules/encodeurl": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", + "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.6.8", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.6.8.tgz", + "integrity": "sha512-2agL3ueZhqxoVrfmntO8yuVj+uNSlIOnhykYHk3Cq0ShYPdUjjUiSJrQvXjq01I9jAuI0Zl2YO8Evv5Mqytm5g==", + "dependencies": { + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "@types/ws": "^8.5.12", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.7.2", + "cors": "~2.8.5", + "debug": "~4.4.1", + "engine.io-parser": "~5.2.1", + "ws": "~8.20.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==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/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==" + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.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==", + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.2.tgz", + "integrity": "sha512-HWcBoN6NileqtSydK2FqHbS/LoDd2pqrnQHLyJzBj4kOp/ky2MWMN694xOfkK8/SnUsW2DH7EfyVlydKCsm1Zw==", + "dependencies": { + "es-errors": "^1.3.0" + }, + "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==" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/express": { + "version": "4.22.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.22.2.tgz", + "integrity": "sha512-IuL+Elrou2ZvCFHs18/CIzy2Nzvo25nZ1/D2eIZlz7c+QUayAcYoiM2BthCjs+EBHVpjYjcuLDAiCWgeIX3X1Q==", + "dependencies": { + "accepts": "~1.3.8", + "array-flatten": "1.1.1", + "body-parser": "~1.20.5", + "content-disposition": "~0.5.4", + "content-type": "~1.0.4", + "cookie": "~0.7.1", + "cookie-signature": "~1.0.6", + "debug": "2.6.9", + "depd": "2.0.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "finalhandler": "~1.3.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.0", + "merge-descriptors": "1.0.3", + "methods": "~1.1.2", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "path-to-regexp": "~0.1.12", + "proxy-addr": "~2.0.7", + "qs": "~6.15.1", + "range-parser": "~1.2.1", + "safe-buffer": "5.2.1", + "send": "~0.19.0", + "serve-static": "~1.16.2", + "setprototypeof": "1.2.0", + "statuses": "~2.0.1", + "type-is": "~1.6.18", + "utils-merge": "1.0.1", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/fdir": { + "version": "6.5.0", + "resolved": "https://registry.npmjs.org/fdir/-/fdir-6.5.0.tgz", + "integrity": "sha512-tIbYtZbucOs0BRGqPJkshJUYdL+SDH7dVM8gjy+ERp3WAUjLEFJE+02kanyHtwjWOnwrKYBiwAmM0p4kLJAnXg==", + "engines": { + "node": ">=12.0.0" + }, + "peerDependencies": { + "picomatch": "^3 || ^4" + }, + "peerDependenciesMeta": { + "picomatch": { + "optional": true + } + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/finalhandler": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.2.tgz", + "integrity": "sha512-aA4RyPcd3badbdABGDuTXCMTtOneUCAYH/gxoYRTZlIJdF0YPWuGqiAsIrhNnnqdXGswYk6dGujem4w80UJFhg==", + "dependencies": { + "debug": "2.6.9", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "on-finished": "~2.4.1", + "parseurl": "~1.3.3", + "statuses": "~2.0.2", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/forwarded": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "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==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/generate-function": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/generate-function/-/generate-function-2.3.1.tgz", + "integrity": "sha512-eeB5GfMNeevm/GRYq20ShmsaGcmI81kIX2K9XQx5miC8KdHaC6Jm0qQ8ZNeGOi7wYB8OsdxKs+Y2oVuTFuVwKQ==", + "dependencies": { + "is-property": "^1.0.2" + } + }, + "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==", + "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==", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.3.tgz", + "integrity": "sha512-ej4AhfhfL2Q2zpMmLo7U1Uv9+PyhIZpgQLGT1F9miIGmiCJIoCgSmczFdrc97mWT4kVY72KA+WnnhJ5pghSvSg==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-errors": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "dependencies": { + "depd": "~2.0.0", + "inherits": "~2.0.4", + "setprototypeof": "~1.2.0", + "statuses": "~2.0.2", + "toidentifier": "~1.0.1" + }, + "engines": { + "node": ">= 0.8" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.4.24", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/ignore-by-default": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", + "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==", + "dev": true + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "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==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-property": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-property/-/is-property-1.0.2.tgz", + "integrity": "sha512-Ks/IoX00TtClbGQr4TWXemAnktAQvYB7HzcCxDGqEZU6oCmb2INHuOoKxbtR+HFkmYWBKv/dOZtGRiAjDhj92g==" + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.5.tgz", + "integrity": "sha512-6B3tLtFqtQS4ekarvLVMZ+X+VlvQekbe4taUkf/rhVO3d/h0M2rfARm/pXLcPEsjjMsFgrFgSrhQIxcSVrBz8w==", + "engines": { + "node": ">=18" + } + }, + "node_modules/long": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/long/-/long-5.3.2.tgz", + "integrity": "sha512-mNAgZ1GmyNhD7AuqnTG3/VQ26o760+ZYBPKjPvugO8+nLbYfX6TVpJPseBvopbdY+qpZ/lKUnmEc1LeZYS3QAA==" + }, + "node_modules/lru.min": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/lru.min/-/lru.min-1.1.4.tgz", + "integrity": "sha512-DqC6n3QQ77zdFpCMASA1a3Jlb64Hv2N2DciFGkO/4L9+q/IpIAuRlKOvCXabtRW6cQf8usbmM6BE/TOPysCdIA==", + "engines": { + "bun": ">=1.0.0", + "deno": ">=1.30.0", + "node": ">=8.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wellwelwel" + } + }, + "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==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/media-typer": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/merge-descriptors": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.3.tgz", + "integrity": "sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==", + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" + }, + "node_modules/methods": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "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==", + "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==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "10.2.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz", + "integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==", + "dev": true, + "dependencies": { + "brace-expansion": "^5.0.8" + }, + "engines": { + "node": "18 || 20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" + }, + "node_modules/mysql2": { + "version": "3.22.4", + "resolved": "https://registry.npmjs.org/mysql2/-/mysql2-3.22.4.tgz", + "integrity": "sha512-CtXYlmL7ZamiYKbmqkamQHWJROUHSfm+f3kByzGfknw7kW51mcB2ouMUqYq1XfYxbXmnWo6RhPydx6OCqdgcmQ==", + "dependencies": { + "aws-ssl-profiles": "^1.1.2", + "denque": "^2.1.0", + "generate-function": "^2.3.1", + "iconv-lite": "^0.7.2", + "long": "^5.3.2", + "lru.min": "^1.1.4", + "named-placeholders": "^1.1.6", + "sql-escaper": "^1.3.3" + }, + "engines": { + "node": ">= 8.0" + }, + "peerDependencies": { + "@types/node": ">= 8" + } + }, + "node_modules/mysql2/node_modules/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/named-placeholders": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/named-placeholders/-/named-placeholders-1.1.6.tgz", + "integrity": "sha512-Tz09sEL2EEuv5fFowm419c1+a/jSMiBjI9gHxVLrVdbUkkNUUfjsVYs9pVZu5oCon/kmRh9TfLEObFtkVxmY0w==", + "dependencies": { + "lru.min": "^1.1.0" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/nodemon": { + "version": "3.1.14", + "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-3.1.14.tgz", + "integrity": "sha512-jakjZi93UtB3jHMWsXL68FXSAosbLfY0In5gtKq3niLSkrWznrVBzXFNOEMJUfc9+Ke7SHWoAZsiMkNP3vq6Jw==", + "dev": true, + "dependencies": { + "chokidar": "^3.5.2", + "debug": "^4", + "ignore-by-default": "^1.0.1", + "minimatch": "^10.2.1", + "pstree.remy": "^1.1.8", + "semver": "^7.5.3", + "simple-update-notifier": "^2.0.0", + "supports-color": "^5.5.0", + "touch": "^3.1.0", + "undefsafe": "^2.0.5" + }, + "bin": { + "nodemon": "bin/nodemon.js" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/nodemon" + } + }, + "node_modules/nodemon/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dev": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/nodemon/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==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "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==", + "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==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-treeify": { + "version": "1.1.33", + "resolved": "https://registry.npmjs.org/object-treeify/-/object-treeify-1.1.33.tgz", + "integrity": "sha512-EFVjAYfzWqWsBMRHPMAXLCDIJnpMhdWAqR7xG6M6a2cs6PMFpl/+Z20w9zDW4vkxOFfddegBKq9Rehd0bxWE7A==", + "engines": { + "node": ">= 10" + } + }, + "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==", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-to-regexp": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.13.tgz", + "integrity": "sha512-A/AGNMFN3c8bOlvV9RreMdrv7jsmF9XIfDeCd87+I8RNg6s78BhJxMu69NEMHBSJFxKidViTEdruRwEk/WIKqA==" + }, + "node_modules/picomatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.4.tgz", + "integrity": "sha512-QP88BAKvMam/3NxH6vj2o21R6MjxZUAd6nlwAS/pnGvN9IVLocLHxGYIzFhg6fUQ+5th6P4dv4eW9jX3DSIj7A==", + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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==", + "dependencies": { + "forwarded": "0.2.0", + "ipaddr.js": "1.9.1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/pstree.remy": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", + "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==", + "dev": true + }, + "node_modules/qs": { + "version": "6.15.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.2.tgz", + "integrity": "sha512-Rzq0KEyX/w/tEybncDgdkZrJgVUsUMk3xjh3t5bv3S1HTAtg+uOYt72+ZfwiQwKdysThkTBdL/rTi6HDmX9Ddw==", + "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==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/raw-body": { + "version": "2.5.3", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.3.tgz", + "integrity": "sha512-s4VSOf6yN0rvbRZGxs8Om5CWj6seneMwK3oDb4lWDH0UPhWcxwOWw5+qk24bxq87szX1ydrwylIOp2uG1ojUpA==", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.4.24", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/readdirp/node_modules/picomatch": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.2.tgz", + "integrity": "sha512-V7+vQEJ06Z+c5tSye8S+nHUfI51xoXIXjHQ99cQtKUkQqqO1kO/KCJUfZXuB47h/YBlDhah2H3hdUGXn8ie0oA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "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" + } + ] + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.8.5", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.8.5.tgz", + "integrity": "sha512-Y7/KDsb8LjooZpwaqGyulO6DQlksgCncchHGk+sZIY4SBvUocMBEFH5Ur1fI4dV+Jvl0w6cjvucaIi40puRioA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/send": { + "version": "0.19.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.2.tgz", + "integrity": "sha512-VMbMxbDeehAxpOtWJXlcUS5E8iXh6QmN+BkRX1GARS3wRaXEEgzCcB10gTQazO42tpNIya8xIyNx8fll1OFPrg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "~0.5.2", + "http-errors": "~2.0.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.4.1", + "range-parser": "~1.2.1", + "statuses": "~2.0.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/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==" + }, + "node_modules/serve-static": { + "version": "1.16.3", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.3.tgz", + "integrity": "sha512-x0RTqQel6g5SY7Lg6ZreMmsOzncHFU7nhnRWkKgWuMTu5NN0DR5oruckMqRvacAN9d5w6ARnRBXl9xhDCgfMeA==", + "dependencies": { + "encodeurl": "~2.0.0", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "~0.19.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "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==", + "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.1", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.1.tgz", + "integrity": "sha512-mjn/0bi/oUURjc5Xl7IaWi/OJJJumuoJFQJfDDyO46+hBWsfaVM65TBHq2eoZBhzl9EchxOijpkbRC8SVBQU0w==", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.4" + }, + "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==", + "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==", + "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/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" + }, + "node_modules/simple-update-notifier": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-2.0.0.tgz", + "integrity": "sha512-a2B9Y0KlNXl9u/vsW6sTIu9vGEpfKu2wRV6l1H3XEas/0gUIzGzBoP/IouTcUQbm9JWZLH3COxyn03TYlFax6w==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/socket.io": { + "version": "4.8.3", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.8.3.tgz", + "integrity": "sha512-2Dd78bqzzjE6KPkD5fHZmDAKRNe3J15q+YHDrIsy9WEkqttc7GY+kT9OBLSMaPbQaEd0x1BjcmtMtXkfpc+T5A==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "cors": "~2.8.5", + "debug": "~4.4.1", + "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.7", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.5.7.tgz", + "integrity": "sha512-e0LyK91f3cUxTmv95/KzoLg47+zF+s/sbxRGDNsyG4dmIP8ZSX8ax6byOxfJXeNNtS/8AZlfD+uP7gBeR7DLlg==", + "dependencies": { + "debug": "~4.4.1", + "ws": "~8.20.1" + } + }, + "node_modules/socket.io-adapter/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-adapter/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==" + }, + "node_modules/socket.io-parser": { + "version": "4.2.6", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.2.6.tgz", + "integrity": "sha512-asJqbVBDsBCJx0pTqw3WfesSY0iRX+2xzWEWzrpcH7L6fLzrhyF8WPI8UaeM4YCuDfpwA/cgsdugMsmtz8EJeg==", + "dependencies": { + "@socket.io/component-emitter": "~3.1.0", + "debug": "~4.4.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/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==" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/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==" + }, + "node_modules/sql-escaper": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/sql-escaper/-/sql-escaper-1.3.3.tgz", + "integrity": "sha512-BsTCV265VpTp8tm1wyIm1xqQCS+Q9NHx2Sr+WcnUrgLrQ6yiDIvHYJV5gHxsj1lMBy2zm5twLaZao8Jd+S8JJw==", + "engines": { + "bun": ">=1.0.0", + "deno": ">=2.0.0", + "node": ">=12.0.0" + }, + "funding": { + "type": "github", + "url": "https://github.com/mysqljs/sql-escaper?sponsor=1" + } + }, + "node_modules/statuses": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.2.tgz", + "integrity": "sha512-DvEy55V3DB7uknRo+4iOGT5fP1slR8wQohVdknigZPMpMstaKJQWhwiYBACJE3Ul2pTnATihhBYnRhZQHGBiRw==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "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==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/touch": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.1.tgz", + "integrity": "sha512-r0eojU4bI8MnHr8c5bNo7lJDdI2qXlWWJk6a9EAFG7vbhTjElYhBVS3/miuE0uOuoLdb8Mc/rVfsmm6eo5o9GA==", + "dev": true, + "bin": { + "nodetouch": "bin/nodetouch.js" + } + }, + "node_modules/type-is": { + "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", + "dependencies": { + "media-typer": "0.3.0", + "mime-types": "~2.1.24" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/undefsafe": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", + "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==", + "dev": true + }, + "node_modules/undici-types": { + "version": "7.24.6", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", + "integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==" + }, + "node_modules/unpipe": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/utils-merge": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", + "engines": { + "node": ">= 0.4.0" + } + }, + "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==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/ws": { + "version": "8.20.1", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.20.1.tgz", + "integrity": "sha512-It4dO0K5v//JtTXuPkfEOaI3uUN87iYPnqo/ZzqCoG3g8uhA66QUMs/SrM0YK7/NAu+r4LMh/9dq2A7k+rHs+w==", + "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 + } + } + }, + "node_modules/yocto-spinner": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/yocto-spinner/-/yocto-spinner-1.2.0.tgz", + "integrity": "sha512-Yw0hUB6UA3o4YUgKy3oSe9a4cxoaZ9sBfYDw+JSxo6Id0KoJGoxzPA24qqUXYKBWABs/zDSGTz9kww7t3F0XGw==", + "dependencies": { + "yoctocolors": "^2.1.1" + }, + "engines": { + "node": ">=18.19" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/yoctocolors": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yoctocolors/-/yoctocolors-2.1.2.tgz", + "integrity": "sha512-CzhO+pFNo8ajLM2d2IW/R93ipy99LWjtwblvC1RsoSUMZgyLbYFr221TnSNT7GjGdYui6P459mw9JH/g/zW2ug==", + "engines": { + "node": ">=18" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..e194c06 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "invesa-node", + "version": "0.0.1", + "description": "service apps for invesa", + "dependencies": { + "@dotenvx/dotenvx": "^1.69.1", + "express": "^4.22.2", + "mysql2": "^3.22.4", + "socket.io": "^4.8.3" + }, + "devDependencies": { + "nodemon": "^3.1.14" + } +} diff --git a/public/images/logo300.png b/public/images/logo300.png new file mode 100644 index 0000000000000000000000000000000000000000..80a1fd36734baeec410e374e5f6a377dcde56dcd GIT binary patch literal 69818 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%0DoI*j* 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 + + + Socket.IO for INVESA + + + + + + + + +

INVESA Socket.IO

+
power by 3fonia Software, a web-base software house
+ +