From b2a1f90af2375b6c0c5e719cb6441a732c3f39ac Mon Sep 17 00:00:00 2001 From: John Caruso Date: Sat, 24 Jan 2026 14:03:10 -0500 Subject: [PATCH] initial add of basic nodejs app, Dockerfile and CloudronManifest.json --- .gitignore | 1 + CloudronManifest.json | 19 + Dockerfile | 12 + README.md | 21 ++ icon.png | Bin 0 -> 50399 bytes index.js | 12 + package-lock.json | 827 ++++++++++++++++++++++++++++++++++++++++++ package.json | 14 + 8 files changed, 906 insertions(+) create mode 100644 .gitignore create mode 100644 CloudronManifest.json create mode 100644 Dockerfile create mode 100644 README.md create mode 100644 icon.png create mode 100644 index.js create mode 100644 package-lock.json create mode 100644 package.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/CloudronManifest.json b/CloudronManifest.json new file mode 100644 index 0000000..e763a12 --- /dev/null +++ b/CloudronManifest.json @@ -0,0 +1,19 @@ +{ + "id": "ca.cosocial.web-demo", + "title": "Nodejs Based Web Demo", + "author": "John Caruso ", + "description": "This is an example app", + "tagline": "Experimental app that will potentially open up huge possibilities", + "version": "0.0.2", + "healthCheckPath": "/", + "httpPort": 80, + "addons": { + "localstorage": {} + }, + "manifestVersion": 2, + "website": "https://www.cosocial.ca", + "contactEmail": "john@cosocial.ca", + "icon": "file://icon.png", + "tags": [ "test", "collaboration" ], + "mediaLinks": [] +} diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..22dd325 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,12 @@ +FROM node:25-alpine + +WORKDIR /app + +COPY package*.json ./ + +RUN npm ci --only=production && npm cache clean --force + +COPY . . + +CMD ["node", "index.js"] + diff --git a/README.md b/README.md new file mode 100644 index 0000000..23e75eb --- /dev/null +++ b/README.md @@ -0,0 +1,21 @@ +# web-demo + +A docker container and Cloudron app definition example. + +## To run locally +``` +docker build -t web-demo . +docker run -p 3000:80 web-demo +``` + +## To build multi-arch image for deployment + +``` +docker buildx build --platform linux/amd64,linux/arm64 -t container-registry.cosocial.info/web-demo -t container-registry.cosocial.info/web-demo: --push . +``` + +### if it doesn't actually push, run this to push "for real" +``` +docker push container-registry.cosocial.info/web-demo +docker push container-registry.cosocial.info/web-demo: +``` diff --git a/icon.png b/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..d4cf4437e265b76736205a93caf1194a9dcd5adb GIT binary patch literal 50399 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 { + res.send('Hello World! This is a custom nodejs app running in a docker container as a cloudron app') +}) + +app.listen(port, () => { + console.log(`Example app listening on port ${port}`) +}) + diff --git a/package-lock.json b/package-lock.json new file mode 100644 index 0000000..0454e19 --- /dev/null +++ b/package-lock.json @@ -0,0 +1,827 @@ +{ + "name": "web-demo", + "version": "1.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "web-demo", + "version": "1.0.0", + "license": "ISC", + "dependencies": { + "express": "^5.2.1" + } + }, + "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/body-parser": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-2.2.2.tgz", + "integrity": "sha512-oP5VkATKlNwcgvxi0vM0p/D3n2C3EReYVX+DNYs5TjZFn/oQt2j+4sVJtSMr18pdRr8wjTcBl6LoV+FUwzPmNA==", + "license": "MIT", + "dependencies": { + "bytes": "^3.1.2", + "content-type": "^1.0.5", + "debug": "^4.4.3", + "http-errors": "^2.0.0", + "iconv-lite": "^0.7.0", + "on-finished": "^2.4.1", + "qs": "^6.14.1", + "raw-body": "^3.0.1", + "type-is": "^2.0.1" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/content-disposition": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-1.0.1.tgz", + "integrity": "sha512-oIXISMynqSqm241k6kcQ5UwttDILMK4BiurCfGEREw6+X9jkkpEe5T9FZaApyLGGOnFuyMWZpdolTXMtvEJ08Q==", + "license": "MIT", + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "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/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/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.2.1", + "resolved": "https://registry.npmjs.org/express/-/express-5.2.1.tgz", + "integrity": "sha512-hIS4idWWai69NezIdRt2xFVofaF4j+6INOpJlVOLDO8zXGpUVEVzIYk12UUi2JzjEzWL3IOAxcTubgz9Po0yXw==", + "license": "MIT", + "dependencies": { + "accepts": "^2.0.0", + "body-parser": "^2.2.1", + "content-disposition": "^1.0.0", + "content-type": "^1.0.5", + "cookie": "^0.7.1", + "cookie-signature": "^1.2.1", + "debug": "^4.4.0", + "depd": "^2.0.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/finalhandler": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-2.1.1.tgz", + "integrity": "sha512-S8KoZgRZN+a5rNwqTxlZZePjT/4cnm0ROV70LedRHZ0p8u9fRID0hJUZQpkKLzro8LfmC8sx23bY6tVNxv8pQA==", + "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": ">= 18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/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.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.1.tgz", + "integrity": "sha512-4FbRdAX+bSdmo4AUFuS0WNiPz8NgFt+r8ThgNWmlrjQjt1Q7ZR9+zTlce2859x4KSXrwIsaeTqDoKQmtP8pLmQ==", + "license": "MIT", + "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/iconv-lite": { + "version": "0.7.2", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.7.2.tgz", + "integrity": "sha512-im9DjEDQ55s9fL4EYzOAv0yMqmMBSZp6G0VvFyTMPKWxiSBHUj9NW/qqLmXUwXrrM7AvqSlTCfvqRb0cM8yYqw==", + "license": "MIT", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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.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/mime-types": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-3.0.2.tgz", + "integrity": "sha512-Lbgzdk0h4juoQ9fCKXW4by0UJqj+nOOrI9MJ1sSj4nI8aI2eo1qmvQEie4VD1glsS250n15LsWsYtCugiStS5A==", + "license": "MIT", + "dependencies": { + "mime-db": "^1.54.0" + }, + "engines": { + "node": ">=18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/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.3.0", + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-8.3.0.tgz", + "integrity": "sha512-7jdwVIRtsP8MYpdXSwOS0YdD0Du+qOoF/AEPIt88PcCFrZCzx41oxku1jD88hZBwbNUIEfpqvuhjFaMAqMTWnA==", + "license": "MIT", + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/qs": { + "version": "6.14.1", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.1.tgz", + "integrity": "sha512-4EK3+xJl8Ts67nLYNwqw/dsFVnCf+qR7RgXSK9jEEm9unao3njwMDdmsdvoKBKHzxd7tCYz5e5M+SnMjdtXGQQ==", + "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.2", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-3.0.2.tgz", + "integrity": "sha512-K5zQjDllxWkf7Z5xJdV0/B0WTNqx6vxG70zJE4N0kBs4LovmEYWJzQGxC9bS9RAKu3bgM40lrd5zoLJ12MQ5BA==", + "license": "MIT", + "dependencies": { + "bytes": "~3.1.2", + "http-errors": "~2.0.1", + "iconv-lite": "~0.7.0", + "unpipe": "~1.0.0" + }, + "engines": { + "node": ">= 0.10" + } + }, + "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/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.1", + "resolved": "https://registry.npmjs.org/send/-/send-1.2.1.tgz", + "integrity": "sha512-1gnZf7DFcoIcajTjTwjwuDjzuz4PPcY2StKPlsGAQ1+YH20IRVrBaXSWmdjowTJ6u8Rc01PoYOGHXfP1mYcZNQ==", + "license": "MIT", + "dependencies": { + "debug": "^4.4.3", + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "etag": "^1.8.1", + "fresh": "^2.0.0", + "http-errors": "^2.0.1", + "mime-types": "^3.0.2", + "ms": "^2.1.3", + "on-finished": "^2.4.1", + "range-parser": "^1.2.1", + "statuses": "^2.0.2" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "node_modules/serve-static": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-2.2.1.tgz", + "integrity": "sha512-xRXBn0pPqQTVQiC8wyQrKs2MOlX24zQ0POGaj0kultvoOCstBQM5yvOhAVSUwOMjQtTvsPWoNCHfPGwaaQJhTw==", + "license": "MIT", + "dependencies": { + "encodeurl": "^2.0.0", + "escape-html": "^1.0.3", + "parseurl": "^1.3.3", + "send": "^1.2.0" + }, + "engines": { + "node": ">= 18" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/express" + } + }, + "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/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/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" + } + } +} diff --git a/package.json b/package.json new file mode 100644 index 0000000..2e8ff02 --- /dev/null +++ b/package.json @@ -0,0 +1,14 @@ +{ + "name": "web-demo", + "version": "1.0.0", + "description": "", + "main": "index.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "author": "", + "license": "ISC", + "dependencies": { + "express": "^5.2.1" + } +}