From eb61393625095db7a944e00d013b1c123849f7c9 Mon Sep 17 00:00:00 2001 From: 32teeth Date: Wed, 11 Sep 2024 08:04:56 -0400 Subject: [PATCH] build: 0.1.4 --- .env | 2 + CHANGELOG.md | 8 ++++ index.js | 92 +++++++++++++++++++++++++---------- package-lock.json | 120 ++++++++++++++++++++++++++-------------------- package.json | 5 +- 5 files changed, 148 insertions(+), 79 deletions(-) diff --git a/.env b/.env index 2fc80e3..f4db480 100644 --- a/.env +++ b/.env @@ -1 +1,3 @@ PORT=3000 +APP_CRT=LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSURhekNDQWxPZ0F3SUJBZ0lVUk1WclJ1UGJ2T3JicjVlK2ZWdXVOOHJ3MzRjd0RRWUpLb1pJaHZjTkFRRUwKQlFBd1JURUxNQWtHQTFVRUJoTUNRVlV4RXpBUkJnTlZCQWdNQ2xOdmJXVXRVM1JoZEdVeElUQWZCZ05WQkFvTQpHRWx1ZEdWeWJtVjBJRmRwWkdkcGRITWdVSFI1SUV4MFpEQWVGdzB5TkRBNU1URXhNVE00TlRGYUZ3MHlOVEE1Ck1URXhNVE00TlRGYU1FVXhDekFKQmdOVkJBWVRBa0ZWTVJNd0VRWURWUVFJREFwVGIyMWxMVk4wWVhSbE1TRXcKSHdZRFZRUUtEQmhKYm5SbGNtNWxkQ0JYYVdSbmFYUnpJRkIwZVNCTWRHUXdnZ0VpTUEwR0NTcUdTSWIzRFFFQgpBUVVBQTRJQkR3QXdnZ0VLQW9JQkFRQ3gva2pKQVpyUHA3RDVKanRTQWZ4QnYvT2N2ck5KdVAzS1dMdXYrcHcyCjV6cXgzYUJIRklMUk5oYVFYd1RJaXVHemp3UlhJVjVFWVF4b0ltMng5b0U3MTFaRHBhM09zTC8vMW1tUUZZelIKR2lyTjgzRFBhL0RyRG90Sy9KU1llV2NlUHdSTkp6Mi9QV2hRc29KbGN3cVpDSVE0MmJDUlllTUdPY2pvVkhCSwoyWjh1NjIzN1Z6bVg4SUdrQkY4aEg3WWsvNk1YZTh2aE9hbVRpVXBwRnBQOE1WSTBHdkRaNE1UcVoveVhIWTNLClpscCtxUjlsNUZaSkVyT1Y3dnRRV1BWemZSYU5JeG5SNzNpY3RvamovNTg3N24xWTg4QzNXTlloZ3BpREFhaUMKS1o4ZXhGZjJMVkN1dUh6ZzMxbFpaS2V1UG5PYWN1N2h0ZXptR1pkcWExZTVBZ01CQUFHalV6QlJNQjBHQTFVZApEZ1FXQkJSbHhyZG14UEMyT2tZS3RpckVCSGZuc3FHMk5EQWZCZ05WSFNNRUdEQVdnQlJseHJkbXhQQzJPa1lLCnRpckVCSGZuc3FHMk5EQVBCZ05WSFJNQkFmOEVCVEFEQVFIL01BMEdDU3FHU0liM0RRRUJDd1VBQTRJQkFRQncKdFVMSm83MU5ZWnZxaitSOUpjcFBYTmZXeWtiZSttZzlKNzFBYjBLcVp5dlVTaWc2ckhBZW5CYzNld29GUkNKVgoyQWw5aklvbWp1YTV3L2NQQnBaaEtiOFg1VmJUcjBLdVN1TkpZQ3hHTFpZd0ZYSWlzRGN3OEdCbzhPQW1xdTZQCklBUkZlSHlqTWtGdDNjRnZ4dFluRjZiL1gyR1ovbjFWT0d6dXlTcFFTSlpYOXFpa3NZVXZCbzl3cENJcWZOZG0KUG15V2dsRENySytaK2NhQjF2U3R0WFlOb2I1bjdsMUI0dDQ1azJlb3VxZ3lvTFVKWGhIWVAxNXdQaE9FUVNDNwpwZHkwb3lXWnovUUV0M3FQbjNGN09XZjIyRVE3TjRtek1FeEVJa0hmSmQ1WkZEOCt6aEdDOWpmMVhtUUdMbzJDCjF2L3F2eXpqK1I4Ym1ZbWFZNU5qCi0tLS0tRU5EIENFUlRJRklDQVRFLS0tLS0K +APP_KEY=LS0tLS1CRUdJTiBQUklWQVRFIEtFWS0tLS0tCk1JSUV2Z0lCQURBTkJna3Foa2lHOXcwQkFRRUZBQVNDQktnd2dnU2tBZ0VBQW9JQkFRQ3gva2pKQVpyUHA3RDUKSmp0U0FmeEJ2L09jdnJOSnVQM0tXTHV2K3B3MjV6cXgzYUJIRklMUk5oYVFYd1RJaXVHemp3UlhJVjVFWVF4bwpJbTJ4OW9FNzExWkRwYTNPc0wvLzFtbVFGWXpSR2lyTjgzRFBhL0RyRG90Sy9KU1llV2NlUHdSTkp6Mi9QV2hRCnNvSmxjd3FaQ0lRNDJiQ1JZZU1HT2Nqb1ZIQksyWjh1NjIzN1Z6bVg4SUdrQkY4aEg3WWsvNk1YZTh2aE9hbVQKaVVwcEZwUDhNVkkwR3ZEWjRNVHFaL3lYSFkzS1pscCtxUjlsNUZaSkVyT1Y3dnRRV1BWemZSYU5JeG5SNzNpYwp0b2pqLzU4NzduMVk4OEMzV05ZaGdwaURBYWlDS1o4ZXhGZjJMVkN1dUh6ZzMxbFpaS2V1UG5PYWN1N2h0ZXptCkdaZHFhMWU1QWdNQkFBRUNnZ0VBRFFpZ3pjOUhSZE55dXh2WWxpMjlDaGVEUUVRYW50aGtCVEF3TmplMHZyUjUKOE5KWXpUdXNSS09nVFZ3WDNwT0U2WUFjZ2tEWVJVdVIvQUloWkRtM3h1a0MwUnROdWVmcGQxTjlFV2J5azlGRgp0eVVQYXJEdHlGaWRUSlZvVUMzN3BoUlpQVWtWVlc2cXQ5WUtoR0ZETW1lVVB4RjV3M3VXZ3pzeUFnbEUyOFlxCld0RDNwNUN3M3NpWDJoL2pxSisydjVSSHQrSmJ4b2xsOHRWL3A0RGJ2VW9Sc2FocmNUQUxONTloT1FralF4OWIKNzI4Q0pZTllkc3VaK01uSEkxZ1BGRUVUWjVCQnpiNlV3Y0N4R2tpdGRZdXN2QXJiUWhMRUp4K0VINSs4d0pZLwpyQlNtKzgvOW9ZUDd1ZHpib0NSQUhnTENYak1TQjZVTmkzbkhzQ3ppZ1FLQmdRRHN2VWwzYXNFNHVPUUpPdFdmClZRWlltUHZLNGZQRWlPMTZWSjQycytUVXpXT2VGS25qUmFlYUJuS1F5ckF1alVvMi9qM01WTGRkcXBFMGRxWEQKdmZwN1UyTFNjMlFEbWhaUWszaThlYXM0SEtvZEJHK1pPbTY0d3g0OFUzUXo2bkU4R01MOWx4ZlV0WXVNRHhySwp0clFyckM0bXkwN3hPZEFoRVN4S3B1ZUNzUUtCZ1FEQWVYVUZvZ0xiTDA2d3RFNHVQd2xYbkMxRy95dFZqYStsClpDNmphdWxZYnZ5emNhT3I3UjloYlNEMVdnbWFIZm9hRWhzZDZJQStPZVVNdXg1VkF1cFMyT0VtL21ZV3NydTgKb3N2UEl5Qm4yMmZqaE92a3BxNlIvRThyVUpTSHVkeFR2OWNNSk1laGpkMzZZRk9NTG9NRmFNL0pVVGxzVHJPSgpIM3d6YlhDWGlRS0JnUUROWGRjaGRNWnhnbEt2Znc1WnpkUlhmejdPWFB5dWZXb2xPTXFYQWE5OHV6K3pucEZSCnl0YjkwcUlINFF5OUZXeFFFSFZqa0FvUmd5bTdyVUZYY0xLZDBWUms1QnphMHd5UWtaMm5RcFM1ZElSTjc4OHYKeVhUTGF0Z0wxUWwxRCtkekRyZjRiTjRMZEFHK1drd1BsamJ0dTh1OWM1amp3aGMrMkRybjk2blZ3UUtCZ0FyUgpDSTJIZkVlYkVmNEdNL3FQV2xRTkY5Sk1sci9aRll6aTQyZ1Zvd1Z3UDAxS1RwdGoyUWFkbm1PTGFzeTVjSXUwCmhzZVlnRlIrNW10ZnZLV2tZMHpDbVd5YWtWd25NVHU1bm1DR3BkU1FWUGRKU2dSd2haRDRyKzVNT2Z5aXFrb2UKbHRRODRPY29WTmcwUDUyNkkyelRaaEgzT1pYbm1sbFRacVJ4T3dtWkFvR0JBTU8rYTdySGszalo1eFh2by81SwpzNU02L29SS2RqV1lHek1sdmY5MXZrV3VwWWNDWjdlT2M5c0xBSzdybEw5aklqSDVuOGdYODZDYlR6ODBXTnE4CmZQREpFN3hsNnFRc2Y2WU5FbUVmSVhhdkNSY3MyU25LY0lXbklQbzJCWTFPWWVEay8rR1JhNVArMkxEL3o3cnYKN2JsWklOcGVaZkpBRG9pQmhhdEZQcmpuCi0tLS0tRU5EIFBSSVZBVEUgS0VZLS0tLS0K diff --git a/CHANGELOG.md b/CHANGELOG.md index 299f084..009abbf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,13 @@ # Changelog +### 0.1.4 + +What changed in this version? + +* Change 1 +* Change 2 +* Change 3 + ### 0.1.3 What changed in this version? diff --git a/index.js b/index.js index a271213..fba1ea9 100755 --- a/index.js +++ b/index.js @@ -1,12 +1,8 @@ 'use strict'; -if(!process.env.HEROKU) { +if (!process.env.HEROKU) { require('dotenv').config(); } -/** - * npm packages - */ -const fs = require('fs'); const express = require('express'); const app = require('express')(); const base64 = require('base-64'); @@ -28,27 +24,27 @@ if (process.env.HTTPS) { const server = process.env.HTTPS ? require('https').createServer(options, app) : require('http').createServer(app); const port = process.env.PORT; const cors = require('cors'); -const ip = require("ip"); - -global.os = require('os'); -global.ifaces = os.networkInterfaces(); -Object.keys(ifaces).forEach(function (ifname) { - var alias = 0; - - ifaces[ifname].forEach(function (iface) { - if ('IPv4' !== iface.family || iface.internal !== false) { - return; +/** + * Replace ip package with custom IP class + */ +class IP { + address() { + const os = require('os'); + const networkInterfaces = os.networkInterfaces(); + for (const interfaceName of Object.keys(networkInterfaces)) { + for (const iface of networkInterfaces[interfaceName]) { + // Skip over internal (i.e., 127.0.0.1) and non-IPv4 addresses + if (iface.family === 'IPv4' && !iface.internal) { + return iface.address; + } + } } + return '127.0.0.1'; + } +} - if (alias >= 1) { - console.log(ifname + ':' + alias, iface.address); - } else { - console.log(ifname, iface.address); - } - ++alias; - }); -}); +const ip = new IP(); /** * router @@ -125,8 +121,54 @@ app.all('*', (req, res) => { res.redirect('/404'); }); +const convert = (collection) => { + if (collection instanceof Map) { + let obj = {}; + for (let [k, v] of collection) { + obj[k] = convert(v); + } + return obj; + } else if (collection instanceof Set) { + let arr = []; + for (let value of collection) { + arr.push(convert(value)); + } + return arr; + } else { + return collection; + } +}; + +const stringify = (data) => { + return JSON.stringify(data); +}; + +const wss = require('ws').Server; +const socket = new wss({ server: server }); +socket.broadcast = (obj) => socket.clients.forEach((client) => client.json(obj)); + +socket.on('connection', (ws) => { + ws.json = (obj) => ws.send(JSON.stringify(obj)); + ws.broadcast = socket.broadcast; + ws.id = uuid() + + ws.on('message', (message) => { + message = JSON.parse(message); + const { service, data } = message; + + switch (service) { + default: + log(chalk`{bgWhite.bold ${service}} {white.bold ${stringify(data)}}`); + break; + } + }); +}); + module.exports = server.listen(port, () => { - log(chalk`{bgBlue.bold Web:} {blue.bold ${process.env.HTTPS ? 'https' : 'http'}://localhost:${port}} {cyan.bold ${process.env.HTTPS ? 'https' : 'http'}://${ip.address()}:${port}}`) - log(chalk`{bgBlue.bold API:} {blue.bold ${process.env.HTTPS ? 'https' : 'http'}://api.localhost:${port}} {cyan.bold ${process.env.HTTPS ? 'https' : 'http'}://api.${ip.address()}:${port}}`) + log(chalk` +{bgBlue.bold Web:}\t{blue.bold ${process.env.HTTPS ? 'https' : 'http'}://localhost:${port}} {cyan.bold ${process.env.HTTPS ? 'https' : 'http'}://${ip.address()}:${port}} +{bgBlue.bold API:}\t{blue.bold ${process.env.HTTPS ? 'https' : 'http'}://api.localhost:${port}} {cyan.bold ${process.env.HTTPS ? 'https' : 'http'}://api.${ip.address()}:${port}} +{bgBlue.bold Socket:}\t{blue.bold ${process.env.HTTPS ? 'wss' : 'ws'}://localhost:${port}} {cyan.bold ${process.env.HTTPS ? 'wss' : 'ws'}://${ip.address()}:${port}} +`); chalk.reset(); }); diff --git a/package-lock.json b/package-lock.json index 561127e..59cab2f 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,20 +1,19 @@ { - "name": "generic-nodejs-express-api", - "version": "0.0.6", + "name": "@32teeth/generic-nodejs-express-api", + "version": "0.1.3", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "generic-nodejs-express-api", - "version": "0.0.6", - "license": "ISC", + "name": "@32teeth/generic-nodejs-express-api", + "version": "0.1.3", + "license": "CC-BY-SA-4.0", "dependencies": { "base-64": "^1.0.0", "cors": "^2.8.5", "dotenv": "^16.3.1", "ejs": "^3.1.10", "express": "^4.18.2", - "ip": "^2.0.1", "ws": "^8.16.0" }, "bin": { @@ -236,9 +235,9 @@ } }, "node_modules/body-parser": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.2.tgz", - "integrity": "sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==", + "version": "1.20.3", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.3.tgz", + "integrity": "sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.5", @@ -248,7 +247,7 @@ "http-errors": "2.0.0", "iconv-lite": "0.4.24", "on-finished": "2.4.1", - "qs": "6.11.0", + "qs": "6.13.0", "raw-body": "2.5.2", "type-is": "~1.6.18", "unpipe": "1.0.0" @@ -258,20 +257,6 @@ "npm": "1.2.8000 || >= 1.4.16" } }, - "node_modules/body-parser/node_modules/qs": { - "version": "6.11.0", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", - "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, "node_modules/brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -960,36 +945,36 @@ } }, "node_modules/express": { - "version": "4.19.2", - "resolved": "https://registry.npmjs.org/express/-/express-4.19.2.tgz", - "integrity": "sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==", + "version": "4.20.0", + "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", + "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", - "body-parser": "1.20.2", + "body-parser": "1.20.3", "content-disposition": "0.5.4", "content-type": "~1.0.4", "cookie": "0.6.0", "cookie-signature": "1.0.6", "debug": "2.6.9", "depd": "2.0.0", - "encodeurl": "~1.0.2", + "encodeurl": "~2.0.0", "escape-html": "~1.0.3", "etag": "~1.8.1", "finalhandler": "1.2.0", "fresh": "0.5.2", "http-errors": "2.0.0", - "merge-descriptors": "1.0.1", + "merge-descriptors": "1.0.3", "methods": "~1.1.2", "on-finished": "2.4.1", "parseurl": "~1.3.3", - "path-to-regexp": "0.1.7", + "path-to-regexp": "0.1.10", "proxy-addr": "~2.0.7", "qs": "6.11.0", "range-parser": "~1.2.1", "safe-buffer": "5.2.1", - "send": "0.18.0", - "serve-static": "1.15.0", + "send": "0.19.0", + "serve-static": "1.16.0", "setprototypeof": "1.2.0", "statuses": "2.0.1", "type-is": "~1.6.18", @@ -1000,6 +985,14 @@ "node": ">= 0.10.0" } }, + "node_modules/express/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/express/node_modules/qs": { "version": "6.11.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", @@ -1517,11 +1510,6 @@ "node": ">= 0.4" } }, - "node_modules/ip": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.1.tgz", - "integrity": "sha512-lJUL9imLTNi1ZfXT+DU6rBBdbiKGBuay9B6xGSPVjUeQwaH1RIGqef8RZkUtHioLmSNpPR5M4HVKJGm1j8FWVQ==" - }, "node_modules/ip-regex": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/ip-regex/-/ip-regex-2.1.0.tgz", @@ -1975,9 +1963,12 @@ } }, "node_modules/merge-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", - "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" + "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/methods": { "version": "1.1.2", @@ -2490,9 +2481,9 @@ "dev": true }, "node_modules/path-to-regexp": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", - "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" + "version": "0.1.10", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz", + "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==" }, "node_modules/path-type": { "version": "3.0.0", @@ -2626,7 +2617,6 @@ "version": "6.13.0", "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", - "dev": true, "dependencies": { "side-channel": "^1.0.6" }, @@ -2854,9 +2844,9 @@ } }, "node_modules/send": { - "version": "0.18.0", - "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", - "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "version": "0.19.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.19.0.tgz", + "integrity": "sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -2891,9 +2881,9 @@ } }, "node_modules/serve-static": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", - "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", + "version": "1.16.0", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", + "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -2904,6 +2894,34 @@ "node": ">= 0.8.0" } }, + "node_modules/serve-static/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/node_modules/send": { + "version": "0.18.0", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", + "dependencies": { + "debug": "2.6.9", + "depd": "2.0.0", + "destroy": "1.2.0", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "2.0.0", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "2.4.1", + "range-parser": "~1.2.1", + "statuses": "2.0.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, "node_modules/set-function-length": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", diff --git a/package.json b/package.json index 68866a4..ead3f0f 100644 --- a/package.json +++ b/package.json @@ -10,7 +10,7 @@ "url": "git+https://github.com/32teeth/generic-nodejs-express-api.git" }, "license": "CC-BY-SA-4.0", - "version": "0.1.3", + "version": "0.1.4", "keywords": [ "nodejs", "express", @@ -71,7 +71,6 @@ "dotenv": "^16.3.1", "ejs": "^3.1.10", "express": "^4.18.2", - "ip": "^2.0.1", "ws": "^8.16.0" }, "devDependencies": { @@ -91,4 +90,4 @@ "directories": { "test": "test" } -} \ No newline at end of file +}