diff --git a/.docker/puppeteer/.gitignore b/.docker/puppeteer/.gitignore deleted file mode 100644 index 504afef..0000000 --- a/.docker/puppeteer/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -node_modules/ -package-lock.json diff --git a/.docker/puppeteer/Dockerfile b/.docker/puppeteer/Dockerfile deleted file mode 100644 index dffa38e..0000000 --- a/.docker/puppeteer/Dockerfile +++ /dev/null @@ -1,18 +0,0 @@ -FROM linuxserver/rdesktop:alpine-icewm -# FROM linuxserver/rdesktop:alpine-openbox -# FROM alpine:3.18 - -RUN apk update --no-cache -RUN apk add --no-cache npm chromium - -RUN mkdir /puppeteer -WORKDIR /puppeteer - -COPY ./puppeteer.js /puppeteer/puppeteer.js -COPY ./server.js /puppeteer/server.js - -USER root -COPY ./puppeteer.sh /puppeteer.sh -RUN chmod +x /puppeteer.sh - -CMD [ "sh", "/puppeteer.sh" ] diff --git a/.docker/puppeteer/puppeteer.sh b/.docker/puppeteer/puppeteer.sh deleted file mode 100644 index ab91c7d..0000000 --- a/.docker/puppeteer/puppeteer.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh -sudo chown abc:abc -R /puppeteer/chrome-profiles -npm i puppeteer -node server.js diff --git a/.docker/puppeteer/server.js b/.docker/puppeteer/server.js deleted file mode 100644 index 1081bbd..0000000 --- a/.docker/puppeteer/server.js +++ /dev/null @@ -1,55 +0,0 @@ -const http = require('http'); -const url = require('url'); -const fs = require('fs'); -const puppeteer = require('./puppeteer'); - -// Create an HTTP server -const server = http.createServer((req, res) => { - const parseUrl = url.parse(req.url, true); - - const fail = (error) => { - res.writeHead(200, {'Content-Type': 'application/json'}); - res.end(JSON.stringify({ - status: false, - message: error - })) - } - - const config = { - screenshotPath: './screenshot2.jpg' - } - - if (parseUrl.query.url) { - config.url = parseUrl.query.url - } - - - try { - puppeteer(config) - .then(function() { - fs.readFile(config.screenshotPath, (err, data) => { - if (err) { - res.writeHead(500); - res.end('Internal Server Error'); - } else { - res.writeHead(200, {'Content-Type': 'image/jpeg'}); - res.end(data); - } - }); - }) - .catch(function(error) { - fail(error.toString()) - }); - } catch (error) { - fail(error.toString()) - } -}); - -// Set the port to listen to -const port = process.env.PORT || 4000; -const host = '0.0.0.0'; // Listen on all network interfaces - -// Start the server -server.listen(port, host, () => { - console.log(`Server running at http://${host}:${port}/`); -}); diff --git a/.docker/rabbitmq/.gitignore b/.docker/rabbitmq/.gitignore new file mode 100644 index 0000000..ad2cb87 --- /dev/null +++ b/.docker/rabbitmq/.gitignore @@ -0,0 +1,2 @@ +data/ +log/ diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..dca5221 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "svg.preview.background": "editor" +} diff --git a/README.md b/README.md index 11c1f2b..24e97cf 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ You should change the /src/.env.example file name to .env and run ``` -docker network create laravel +docker network create producer docker compose up rabbitmq socketio -d ``` @@ -32,7 +32,7 @@ Version: 1 http://localhost:8001/horizon ``` -Rabbitmq: rabbit/rabbit@123 +Rabbitmq: rabbit/rabbit123 ``` http://localhost:15672 ``` diff --git a/consumer/.gitignore b/consumer/.gitignore new file mode 100644 index 0000000..c2658d7 --- /dev/null +++ b/consumer/.gitignore @@ -0,0 +1 @@ +node_modules/ diff --git a/consumer/Dockerfile b/consumer/Dockerfile new file mode 100644 index 0000000..0a30788 --- /dev/null +++ b/consumer/Dockerfile @@ -0,0 +1,19 @@ +# FROM linuxserver/rdesktop:alpine-icewm +# # FROM linuxserver/rdesktop:alpine-openbox +FROM alpine:3.18 + +RUN apk update --no-cache +RUN apk add --no-cache npm chromium + +RUN mkdir /consumer +WORKDIR /consumer + +COPY ./consumer.js /consumer/consumer.js +COPY ./puppeteer.js /consumer/puppeteer.js +COPY ./package.json /consumer/package.json + +USER root +COPY ./docker.sh /docker.sh +RUN chmod +x /docker.sh + +CMD [ "sh", "/docker.sh" ] diff --git a/consumer/consumer.js b/consumer/consumer.js new file mode 100644 index 0000000..5ccc44e --- /dev/null +++ b/consumer/consumer.js @@ -0,0 +1,47 @@ +const amqplib = require("amqplib"); +const connectStr = "amqp://rabbit:rabbit123@localhost"; + +(async () => { + const conn = await amqplib.connect(connectStr); + const channel = await conn.createChannel(); + const queue = "process1"; + + process.once("SIGINT", async () => { + await channel.close(); + await connection.close(); + }); + + await channel.assertQueue(queue); + await channel.prefetch(1); + + await channel.consume( + queue, + async (message) => { + try { + await processMessage(channel, message); + } catch (error) { + console.error("Error processing message:", error.message); + // If processing fails, you can choose to requeue or acknowledge the message + // Here, we're acknowledging the message even if an error occurs to remove it from the queue + channel.ack(message); + } + }, + {noAck: false} + ); + + console.log("[*] Waiting for messages. To exit press CTRL+C"); +})(); + + +async function processMessage(channel, message) { + try { + const response = JSON.parse(message.content.toString()) + console.log("[x] Received", response); + await require('./puppeteer')({}) + console.log("[x] Done"); + // After successful processing, acknowledge the message to delete it from the queue + channel.ack(message); + } catch (error) { + throw new Error("Error during processing: " + error.message); + } +} diff --git a/consumer/docker.sh b/consumer/docker.sh new file mode 100644 index 0000000..8edf2d0 --- /dev/null +++ b/consumer/docker.sh @@ -0,0 +1,4 @@ +#!/bin/sh +# sudo chown abc:abc -R /puppeteer/chrome-profiles +npm i +node consumer.js diff --git a/consumer/package-lock.json b/consumer/package-lock.json new file mode 100644 index 0000000..07be2a3 --- /dev/null +++ b/consumer/package-lock.json @@ -0,0 +1,1347 @@ +{ + "name": "consumer", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "dependencies": { + "amqplib": "^0.10.3", + "bramqp": "^0.6.1", + "puppeteer": "^22.3.0" + } + }, + "node_modules/@acuminous/bitsyntax": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@acuminous/bitsyntax/-/bitsyntax-0.1.2.tgz", + "integrity": "sha512-29lUK80d1muEQqiUsSo+3A0yP6CdspgC95EnKBMi22Xlwt79i/En4Vr67+cXhU+cZjbti3TgGGC5wy1stIywVQ==", + "dependencies": { + "buffer-more-ints": "~1.0.0", + "debug": "^4.3.4", + "safe-buffer": "~5.1.2" + }, + "engines": { + "node": ">=0.8" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.23.5", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", + "dependencies": { + "@babel/highlight": "^7.23.4", + "chalk": "^2.4.2" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.22.20", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.23.4", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.22.20", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@puppeteer/browsers": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/@puppeteer/browsers/-/browsers-2.1.0.tgz", + "integrity": "sha512-xloWvocjvryHdUjDam/ZuGMh7zn4Sn3ZAaV4Ah2e2EwEt90N3XphZlSsU3n0VDc1F7kggCjMuH0UuxfPQ5mD9w==", + "dependencies": { + "debug": "4.3.4", + "extract-zip": "2.0.1", + "progress": "2.0.3", + "proxy-agent": "6.4.0", + "semver": "7.6.0", + "tar-fs": "3.0.5", + "unbzip2-stream": "1.4.3", + "yargs": "17.7.2" + }, + "bin": { + "browsers": "lib/cjs/main-cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/@tootallnate/quickjs-emscripten": { + "version": "0.23.0", + "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", + "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==" + }, + "node_modules/@types/node": { + "version": "20.11.24", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.11.24.tgz", + "integrity": "sha512-Kza43ewS3xoLgCEpQrsT+xRo/EJej1y0kVYGiLFE1NEODXGzTfwiC6tXTLMQskn1X4/Rjlh0MQUvx9W+L9long==", + "optional": true, + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/yauzl": { + "version": "2.10.3", + "resolved": "https://registry.npmjs.org/@types/yauzl/-/yauzl-2.10.3.tgz", + "integrity": "sha512-oJoftv0LSuaDZE3Le4DbKX+KS9G36NzOeSap90UIK0yMA/NhKJhqlSGtNDORNRaIbQfzjXDrQa0ytJ6mNRGz/Q==", + "optional": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/agent-base": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", + "dependencies": { + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/amqplib": { + "version": "0.10.3", + "resolved": "https://registry.npmjs.org/amqplib/-/amqplib-0.10.3.tgz", + "integrity": "sha512-UHmuSa7n8vVW/a5HGh2nFPqAEr8+cD4dEZ6u9GjP91nHfr1a54RyAKyra7Sb5NH7NBKOUlyQSMXIp0qAixKexw==", + "dependencies": { + "@acuminous/bitsyntax": "^0.1.2", + "buffer-more-ints": "~1.0.0", + "readable-stream": "1.x >=1.1.9", + "url-parse": "~1.5.10" + }, + "engines": { + "node": ">=10" + } + }, + "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/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/ast-types": { + "version": "0.13.4", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", + "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", + "dependencies": { + "tslib": "^2.0.1" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/async": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/async/-/async-3.1.1.tgz", + "integrity": "sha512-X5Dj8hK1pJNC2Wzo2Rcp9FBVdJMGRR/S7V+lH46s8GVFhtbo5O4Le5GECCF/8PISVdkUA6mMPvgz7qTTD1rf1g==" + }, + "node_modules/b4a": { + "version": "1.6.6", + "resolved": "https://registry.npmjs.org/b4a/-/b4a-1.6.6.tgz", + "integrity": "sha512-5Tk1HLk6b6ctmjIkAcU/Ujv/1WqiDl0F0JdRCR80VsOcUlHcu7pWeWRlOqQLHfDEsVx9YH/aif5AG4ehoCtTmg==" + }, + "node_modules/bare-events": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.2.1.tgz", + "integrity": "sha512-9GYPpsPFvrWBkelIhOhTWtkeZxVxZOdb3VnFTCzlOo3OjvmTvzLoZFUT8kNFACx0vJej6QPney1Cf9BvzCNE/A==", + "optional": true + }, + "node_modules/bare-fs": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/bare-fs/-/bare-fs-2.2.1.tgz", + "integrity": "sha512-+CjmZANQDFZWy4PGbVdmALIwmt33aJg8qTkVjClU6X4WmZkTPBDxRHiBn7fpqEWEfF3AC2io++erpViAIQbSjg==", + "optional": true, + "dependencies": { + "bare-events": "^2.0.0", + "bare-os": "^2.0.0", + "bare-path": "^2.0.0", + "streamx": "^2.13.0" + } + }, + "node_modules/bare-os": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/bare-os/-/bare-os-2.2.0.tgz", + "integrity": "sha512-hD0rOPfYWOMpVirTACt4/nK8mC55La12K5fY1ij8HAdfQakD62M+H4o4tpfKzVGLgRDTuk3vjA4GqGXXCeFbag==", + "optional": true + }, + "node_modules/bare-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/bare-path/-/bare-path-2.1.0.tgz", + "integrity": "sha512-DIIg7ts8bdRKwJRJrUMy/PICEaQZaPGZ26lsSx9MJSwIhSrcdHn7/C8W+XmnG/rKi6BaRcz+JO00CjZteybDtw==", + "optional": true, + "dependencies": { + "bare-os": "^2.1.0" + } + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "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/basic-ftp": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", + "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/bramqp": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/bramqp/-/bramqp-0.6.1.tgz", + "integrity": "sha512-SMQnVoeUThLRIaId+E1qVecmIhEMRK4maSS3DYZmwHwjkB3wA6DBSHVKlQcflduW74wytv1NwhX2m1CI4a4akQ==", + "dependencies": { + "async": "~3.1.0", + "buffer-more-ints": "~1.0.0", + "pkginfo": "~0.4.1", + "xml2js": "~0.4.19" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/buffer": { + "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.1.13" + } + }, + "node_modules/buffer-crc32": { + "version": "0.2.13", + "resolved": "https://registry.npmjs.org/buffer-crc32/-/buffer-crc32-0.2.13.tgz", + "integrity": "sha512-VO9Ht/+p3SN7SKWqcrgEzjGbRSJYTx+Q1pTQC0wrWqHx0vpJraQ6GtHx8tvcg1rlK1byhU5gccxgOgj7B0TDkQ==", + "engines": { + "node": "*" + } + }, + "node_modules/buffer-more-ints": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/buffer-more-ints/-/buffer-more-ints-1.0.0.tgz", + "integrity": "sha512-EMetuGFz5SLsT0QTnXzINh4Ksr+oo4i+UGTXEshiGCQWnsgSs7ZhJ8fzlwQ+OzEMs0MpDAMr1hxnblp5a4vcHg==" + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chromium-bidi": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/chromium-bidi/-/chromium-bidi-0.5.10.tgz", + "integrity": "sha512-4hsPE1VaLLM/sgNK/SlLbI24Ra7ZOuWAjA3rhw1lVCZ8ZiUgccS6cL5L/iqo4hjRcl5vwgYJ8xTtbXdulA9b6Q==", + "dependencies": { + "mitt": "3.0.1", + "urlpattern-polyfill": "10.0.0" + }, + "peerDependencies": { + "devtools-protocol": "*" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/core-util-is": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "node_modules/cosmiconfig": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-9.0.0.tgz", + "integrity": "sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==", + "dependencies": { + "env-paths": "^2.2.1", + "import-fresh": "^3.3.0", + "js-yaml": "^4.1.0", + "parse-json": "^5.2.0" + }, + "engines": { + "node": ">=14" + }, + "funding": { + "url": "https://github.com/sponsors/d-fischer" + }, + "peerDependencies": { + "typescript": ">=4.9.5" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/cross-fetch": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", + "dependencies": { + "node-fetch": "^2.6.12" + } + }, + "node_modules/data-uri-to-buffer": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", + "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", + "engines": { + "node": ">= 14" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/degenerator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", + "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", + "dependencies": { + "ast-types": "^0.13.4", + "escodegen": "^2.1.0", + "esprima": "^4.0.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/devtools-protocol": { + "version": "0.0.1249869", + "resolved": "https://registry.npmjs.org/devtools-protocol/-/devtools-protocol-0.0.1249869.tgz", + "integrity": "sha512-Ctp4hInA0BEavlUoRy9mhGq0i+JSo/AwVyX2EFgZmV1kYB+Zq+EMBAn52QWu6FbRr10hRb6pBl420upbp4++vg==" + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", + "dependencies": { + "once": "^1.4.0" + } + }, + "node_modules/env-paths": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", + "engines": { + "node": ">=6" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/escodegen": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", + "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", + "dependencies": { + "esprima": "^4.0.1", + "estraverse": "^5.2.0", + "esutils": "^2.0.2" + }, + "bin": { + "escodegen": "bin/escodegen.js", + "esgenerate": "bin/esgenerate.js" + }, + "engines": { + "node": ">=6.0" + }, + "optionalDependencies": { + "source-map": "~0.6.1" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/extract-zip": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extract-zip/-/extract-zip-2.0.1.tgz", + "integrity": "sha512-GDhU9ntwuKyGXdZBUgTIe+vXnWj0fppUEtMDL0+idd5Sta8TGpHssn/eusA9mrPr9qNDym6SxAYZjNvCn/9RBg==", + "dependencies": { + "debug": "^4.1.1", + "get-stream": "^5.1.0", + "yauzl": "^2.10.0" + }, + "bin": { + "extract-zip": "cli.js" + }, + "engines": { + "node": ">= 10.17.0" + }, + "optionalDependencies": { + "@types/yauzl": "^2.9.1" + } + }, + "node_modules/fast-fifo": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/fast-fifo/-/fast-fifo-1.3.2.tgz", + "integrity": "sha512-/d9sfos4yxzpwkDkuN7k2SqFKtYNmCTzgfEpz82x34IM9/zc8KGxQoXg1liNC/izpRM/MBdt44Nmx41ZWqk+FQ==" + }, + "node_modules/fd-slicer": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/fd-slicer/-/fd-slicer-1.1.0.tgz", + "integrity": "sha512-cE1qsB/VwyQozZ+q1dGxR8LBYNZeofhEdUNGSMbQD3Gw2lAzX9Zb3uIU6Ebc/Fmyjo9AWWfnn0AUCHqtevs/8g==", + "dependencies": { + "pend": "~1.2.0" + } + }, + "node_modules/fs-extra": { + "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-uri": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", + "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", + "dependencies": { + "basic-ftp": "^5.0.2", + "data-uri-to-buffer": "^6.0.2", + "debug": "^4.3.4", + "fs-extra": "^11.2.0" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" + }, + "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==", + "engines": { + "node": ">=4" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "7.0.4", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.4.tgz", + "integrity": "sha512-wlwpilI7YdjSkWaQ/7omYBMTliDcmCN8OLihO6I9B86g06lMyAoqgoDpV0XqoaPOKj+0DIdAvnsWfyAAhmimcg==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "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/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "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/ip-address": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", + "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", + "dependencies": { + "jsbn": "1.1.0", + "sprintf-js": "^1.1.3" + }, + "engines": { + "node": ">= 12" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==" + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/isarray": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsbn": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", + "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==" + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dependencies": { + "universalify": "^2.0.0" + }, + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" + }, + "node_modules/lru-cache": { + "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/mitt": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/mitt/-/mitt-3.0.1.tgz", + "integrity": "sha512-vKivATfr97l2/QBCYAkXYDbrIWPM2IIKEl7YPhjCvKlG3kE2gm+uBo6nEXK3M5/Ffh/FLpKExzOQ3JJoJGFKBw==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/netmask": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", + "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "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==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/pac-proxy-agent": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.1.tgz", + "integrity": "sha512-ASV8yU4LLKBAjqIPMbrgtaKIvxQri/yh2OpI+S6hVa9JRkUI3Y3NPFbfngDtY7oFtSMD3w31Xns89mDa3Feo5A==", + "dependencies": { + "@tootallnate/quickjs-emscripten": "^0.23.0", + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "get-uri": "^6.0.1", + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.2", + "pac-resolver": "^7.0.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/pac-resolver": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", + "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", + "dependencies": { + "degenerator": "^5.0.0", + "netmask": "^2.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pend": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/pend/-/pend-1.2.0.tgz", + "integrity": "sha512-F3asv42UuXchdzt+xXqfW1OGlVBe+mxa2mqI0pg5yAHZPvFmY3Y6drSf/GQ1A86WgWEN9Kzh/WrgKa6iGcHXLg==" + }, + "node_modules/pkginfo": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/pkginfo/-/pkginfo-0.4.1.tgz", + "integrity": "sha512-8xCNE/aT/EXKenuMDZ+xTVwkT8gsoHN2z/Q29l80u0ppGEXVvsKRzNMbtKhg8LS8k1tJLAHHylf6p4VFmP6XUQ==", + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/proxy-agent": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", + "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "http-proxy-agent": "^7.0.1", + "https-proxy-agent": "^7.0.3", + "lru-cache": "^7.14.1", + "pac-proxy-agent": "^7.0.1", + "proxy-from-env": "^1.1.0", + "socks-proxy-agent": "^8.0.2" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "dependencies": { + "end-of-stream": "^1.1.0", + "once": "^1.3.1" + } + }, + "node_modules/puppeteer": { + "version": "22.3.0", + "resolved": "https://registry.npmjs.org/puppeteer/-/puppeteer-22.3.0.tgz", + "integrity": "sha512-GC+tyjzYKjaNjhlDAuqRgDM+IOsqOG75Da4L28G4eULNLLxKDt+79x2OOSQ47HheJBgGq7ATSExNE6gayxP6cg==", + "hasInstallScript": true, + "dependencies": { + "@puppeteer/browsers": "2.1.0", + "cosmiconfig": "9.0.0", + "puppeteer-core": "22.3.0" + }, + "bin": { + "puppeteer": "lib/esm/puppeteer/node/cli.js" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/puppeteer-core": { + "version": "22.3.0", + "resolved": "https://registry.npmjs.org/puppeteer-core/-/puppeteer-core-22.3.0.tgz", + "integrity": "sha512-Ho5Vdpdro05ZyCx/l5Hkc5vHiibKTaY37fIAD9NF9Gi/vDxkVTeX40U/mFnEmeoxyuYALvWCJfi7JTT82R6Tuw==", + "dependencies": { + "@puppeteer/browsers": "2.1.0", + "chromium-bidi": "0.5.10", + "cross-fetch": "4.0.0", + "debug": "4.3.4", + "devtools-protocol": "0.0.1249869", + "ws": "8.16.0" + }, + "engines": { + "node": ">=18" + } + }, + "node_modules/querystringify": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/querystringify/-/querystringify-2.2.0.tgz", + "integrity": "sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==" + }, + "node_modules/queue-tick": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/queue-tick/-/queue-tick-1.0.1.tgz", + "integrity": "sha512-kJt5qhMxoszgU/62PLP1CJytzd2NKetjSRnyuj31fDd3Rlcz3fzlFdFLD1SItunPwyqEOkca6GbV612BWfaBag==" + }, + "node_modules/readable-stream": { + "version": "1.1.14", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.1.14.tgz", + "integrity": "sha512-+MeVjFf4L44XUkhM1eYbD8fyEsxcV81pqMSR5gblfcLCHfZvbrqy4/qYHE+/R5HoBUT11WV5O08Cr1n3YXkWVQ==", + "dependencies": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.1", + "isarray": "0.0.1", + "string_decoder": "~0.10.x" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/requires-port": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==" + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/sax": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" + }, + "node_modules/semver": { + "version": "7.6.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.0.tgz", + "integrity": "sha512-EnwXhrlwXMk9gKu5/flx5sv/an57AkRplG3hTK68W7FRDN+k+OWBj65M7719OkA82XLBxrcX0KSHj+X5COhOVg==", + "dependencies": { + "lru-cache": "^6.0.0" + }, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/semver/node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "dependencies": { + "yallist": "^4.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/smart-buffer": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", + "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", + "engines": { + "node": ">= 6.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.1.tgz", + "integrity": "sha512-B6w7tkwNid7ToxjZ08rQMT8M9BJAf8DKx8Ft4NivzH0zBUfd6jldGcisJn/RLgxcX3FPNDdNQCUEMMT79b+oCQ==", + "dependencies": { + "ip-address": "^9.0.5", + "smart-buffer": "^4.2.0" + }, + "engines": { + "node": ">= 10.0.0", + "npm": ">= 3.0.0" + } + }, + "node_modules/socks-proxy-agent": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.2.tgz", + "integrity": "sha512-8zuqoLv1aP/66PHF5TqwJ7Czm3Yv32urJQHrVyhD7mmA6d61Zv8cIXQYPTWwmg6qlupnPvs/QKDmfa4P/qct2g==", + "dependencies": { + "agent-base": "^7.0.2", + "debug": "^4.3.4", + "socks": "^2.7.1" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "optional": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", + "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==" + }, + "node_modules/streamx": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.16.1.tgz", + "integrity": "sha512-m9QYj6WygWyWa3H1YY69amr4nVgy61xfjys7xO7kviL5rfIEc2naf+ewFiOA+aEJD7y0JO3h2GoiUv4TDwEGzQ==", + "dependencies": { + "fast-fifo": "^1.1.0", + "queue-tick": "^1.0.1" + }, + "optionalDependencies": { + "bare-events": "^2.2.0" + } + }, + "node_modules/string_decoder": { + "version": "0.10.31", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=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/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/tar-fs": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/tar-fs/-/tar-fs-3.0.5.tgz", + "integrity": "sha512-JOgGAmZyMgbqpLwct7ZV8VzkEB6pxXFBVErLtb+XCOqzc6w1xiWKI9GVd6bwk68EX7eJ4DWmfXVmq8K2ziZTGg==", + "dependencies": { + "pump": "^3.0.0", + "tar-stream": "^3.1.5" + }, + "optionalDependencies": { + "bare-fs": "^2.1.1", + "bare-path": "^2.1.0" + } + }, + "node_modules/tar-stream": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/tar-stream/-/tar-stream-3.1.7.tgz", + "integrity": "sha512-qJj60CXt7IU1Ffyc3NJMjh6EkuCFej46zUqJ4J7pqYlThyd9bO0XBTmcOIhSzZJVWfsLks0+nle/j538YAW9RQ==", + "dependencies": { + "b4a": "^1.6.4", + "fast-fifo": "^1.2.0", + "streamx": "^2.15.0" + } + }, + "node_modules/through": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" + }, + "node_modules/unbzip2-stream": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/unbzip2-stream/-/unbzip2-stream-1.4.3.tgz", + "integrity": "sha512-mlExGW4w71ebDJviH16lQLtZS32VKqsSfk80GCfUlwT/4/hNRFsoscrF/c++9xinkMzECL1uL9DDwXqFWkruPg==", + "dependencies": { + "buffer": "^5.2.1", + "through": "^2.3.8" + } + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", + "optional": true + }, + "node_modules/universalify": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", + "engines": { + "node": ">= 10.0.0" + } + }, + "node_modules/url-parse": { + "version": "1.5.10", + "resolved": "https://registry.npmjs.org/url-parse/-/url-parse-1.5.10.tgz", + "integrity": "sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==", + "dependencies": { + "querystringify": "^2.1.1", + "requires-port": "^1.0.0" + } + }, + "node_modules/urlpattern-polyfill": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/urlpattern-polyfill/-/urlpattern-polyfill-10.0.0.tgz", + "integrity": "sha512-H/A06tKD7sS1O1X2SshBVeA5FLycRpjqiBeqGKmBwBDBy28EnRjORxTNe269KSSr5un5qyWi1iL61wLxpd+ZOg==" + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/wrap-ansi/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/wrap-ansi/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "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==" + }, + "node_modules/ws": { + "version": "8.16.0", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz", + "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==", + "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/xml2js": { + "version": "0.4.23", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.23.tgz", + "integrity": "sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/yauzl": { + "version": "2.10.0", + "resolved": "https://registry.npmjs.org/yauzl/-/yauzl-2.10.0.tgz", + "integrity": "sha512-p4a9I6X6nu6IhoGmBqAcbJy1mlC4j27vEPZX9F4L4/vZT3Lyq1VkFHw/V/PUcB9Buo+DG3iHkT0x3Qya58zc3g==", + "dependencies": { + "buffer-crc32": "~0.2.3", + "fd-slicer": "~1.1.0" + } + } + } +} diff --git a/consumer/package.json b/consumer/package.json new file mode 100644 index 0000000..ecc3c93 --- /dev/null +++ b/consumer/package.json @@ -0,0 +1,7 @@ +{ + "dependencies": { + "amqplib": "^0.10.3", + "bramqp": "^0.6.1", + "puppeteer": "^22.3.0" + } +} diff --git a/.docker/puppeteer/puppeteer.js b/consumer/puppeteer.js similarity index 83% rename from .docker/puppeteer/puppeteer.js rename to consumer/puppeteer.js index 169886b..73c63b5 100644 --- a/.docker/puppeteer/puppeteer.js +++ b/consumer/puppeteer.js @@ -3,15 +3,14 @@ const puppeteer = require('puppeteer'); const launch = async ( config = { url: '', screenshotPath: '', executablePath: '', timeout: 1000 } ) => { - config = Object.assign({ - url: 'https://scrapingbee.com', - screenshotPath: './screenshot.jpg', + url: 'https://www.timeanddate.com/', + screenshotPath: `./screenshot/${Date.now()}.jpg`, executablePath: '/usr/bin/chromium', timeout: 1000, }, config) - const profile = { + const PROFILE = { data: [ // 'wormlazy199210', 'wormlazy199211', @@ -28,7 +27,7 @@ const launch = async ( '--no-sandbox', '--headless', '--disable-gpu', - `--user-data-dir=/puppeteer/chrome-profiles/${profile.select()}` + `--user-data-dir=/puppeteer/chrome-profiles/${PROFILE.select()}` ] }); const page = await browser.newPage(); @@ -51,6 +50,9 @@ const launch = async ( console.log(`Error: ${err.message}`); } finally { await browser.close(); + await Object.assign(config, { + status: true, + }) } }; module.exports = launch diff --git a/.docker/rabbitmq/data/.gitignore b/consumer/screenshot/.gitignore similarity index 100% rename from .docker/rabbitmq/data/.gitignore rename to consumer/screenshot/.gitignore diff --git a/docker-compose.yml b/docker-compose.yml index 777f0d4..a304bed 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -3,42 +3,28 @@ version : '3' name: laravel-rabbitmq${VERSION} networks: - laravel: + producer: external: true - puppeteer: + rabbitmq: + driver: bridge + socketio: driver: bridge redis: driver: bridge services: - app: - tty: true - image: bitnami/laravel:9 - volumes: - - ./src:/app - command: "sh /app/laravel-entrypoint.sh" - ports: - - 800${VERSION}:8000 - networks: - - laravel - - puppeteer - - redis - depends_on: - - redis - - puppeteer - - puppeteer: + consumer: build: - context: ./.docker/puppeteer + context: ./consumer dockerfile: Dockerfile shm_size: '1GB' volumes: - - ./chrome-profiles:/puppeteer/chrome-profiles + - ./chrome-profiles:/consumer/chrome-profiles ports: - :3389 - :4000 networks: - - puppeteer + - rabbitmq privileged: true restart: always @@ -50,6 +36,21 @@ services: - redis # ----COMMON---- # + producer: + tty: true + image: bitnami/laravel:9 + volumes: + - ./producer:/producer + command: "sh /producer/producer.sh" + ports: + - 800${VERSION}:8000 + networks: + - rabbitmq + - socketio + - redis + depends_on: + - redis + socketio: container_name: socketio build: @@ -58,7 +59,7 @@ services: ports: - 3000:3000 networks: - - laravel + - socketio rabbitmq: image: rabbitmq:3-management @@ -69,9 +70,9 @@ services: - 15672:15672 environment: - RABBITMQ_DEFAULT_USER=rabbit - - RABBITMQ_DEFAULT_PASS=rabbit@123 + - RABBITMQ_DEFAULT_PASS=rabbit123 volumes: - ./.docker/rabbitmq/data:/var/lib/rabbitmq/ - ./.docker/rabbitmq/log:/var/log/rabbitmq networks: - - laravel + - rabbitmq diff --git a/src/.buildcomplete b/producer/.buildcomplete similarity index 100% rename from src/.buildcomplete rename to producer/.buildcomplete diff --git a/src/.editorconfig b/producer/.editorconfig similarity index 100% rename from src/.editorconfig rename to producer/.editorconfig diff --git a/src/.env.example b/producer/.env.example similarity index 97% rename from src/.env.example rename to producer/.env.example index 4dc9063..c90f508 100644 --- a/src/.env.example +++ b/producer/.env.example @@ -63,7 +63,7 @@ VITE_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}" RABBITMQ_HOST=rabbitmq RABBITMQ_PORT=5672 RABBITMQ_USER=rabbit -RABBITMQ_PASSWORD=rabbit@123 +RABBITMQ_PASSWORD=rabbit123 RABBITMQ_VHOST=/ HORIZON_QUEUES='["default", "process1", "process2", "process3"]' diff --git a/src/.gitattributes b/producer/.gitattributes similarity index 100% rename from src/.gitattributes rename to producer/.gitattributes diff --git a/src/.gitignore b/producer/.gitignore similarity index 100% rename from src/.gitignore rename to producer/.gitignore diff --git a/src/.horizon/horizon.sh b/producer/.horizon/horizon.sh similarity index 100% rename from src/.horizon/horizon.sh rename to producer/.horizon/horizon.sh diff --git a/src/.spdx-laravel.spdx b/producer/.spdx-laravel.spdx similarity index 100% rename from src/.spdx-laravel.spdx rename to producer/.spdx-laravel.spdx diff --git a/src/README.md b/producer/README.md similarity index 100% rename from src/README.md rename to producer/README.md diff --git a/src/app/Console/Commands/JobRun.php b/producer/app/Console/Commands/JobRun.php similarity index 100% rename from src/app/Console/Commands/JobRun.php rename to producer/app/Console/Commands/JobRun.php diff --git a/src/app/Console/Commands/SendSocket.php b/producer/app/Console/Commands/SendSocket.php similarity index 100% rename from src/app/Console/Commands/SendSocket.php rename to producer/app/Console/Commands/SendSocket.php diff --git a/src/app/Console/Commands/Socket.php b/producer/app/Console/Commands/Socket.php similarity index 100% rename from src/app/Console/Commands/Socket.php rename to producer/app/Console/Commands/Socket.php diff --git a/src/app/Console/Kernel.php b/producer/app/Console/Kernel.php similarity index 100% rename from src/app/Console/Kernel.php rename to producer/app/Console/Kernel.php diff --git a/src/app/Exceptions/Handler.php b/producer/app/Exceptions/Handler.php similarity index 100% rename from src/app/Exceptions/Handler.php rename to producer/app/Exceptions/Handler.php diff --git a/src/app/Http/Controllers/Controller.php b/producer/app/Http/Controllers/Controller.php similarity index 100% rename from src/app/Http/Controllers/Controller.php rename to producer/app/Http/Controllers/Controller.php diff --git a/src/app/Http/Kernel.php b/producer/app/Http/Kernel.php similarity index 100% rename from src/app/Http/Kernel.php rename to producer/app/Http/Kernel.php diff --git a/src/app/Http/Middleware/Authenticate.php b/producer/app/Http/Middleware/Authenticate.php similarity index 100% rename from src/app/Http/Middleware/Authenticate.php rename to producer/app/Http/Middleware/Authenticate.php diff --git a/src/app/Http/Middleware/EncryptCookies.php b/producer/app/Http/Middleware/EncryptCookies.php similarity index 100% rename from src/app/Http/Middleware/EncryptCookies.php rename to producer/app/Http/Middleware/EncryptCookies.php diff --git a/src/app/Http/Middleware/PreventRequestsDuringMaintenance.php b/producer/app/Http/Middleware/PreventRequestsDuringMaintenance.php similarity index 100% rename from src/app/Http/Middleware/PreventRequestsDuringMaintenance.php rename to producer/app/Http/Middleware/PreventRequestsDuringMaintenance.php diff --git a/src/app/Http/Middleware/RedirectIfAuthenticated.php b/producer/app/Http/Middleware/RedirectIfAuthenticated.php similarity index 100% rename from src/app/Http/Middleware/RedirectIfAuthenticated.php rename to producer/app/Http/Middleware/RedirectIfAuthenticated.php diff --git a/src/app/Http/Middleware/TrimStrings.php b/producer/app/Http/Middleware/TrimStrings.php similarity index 100% rename from src/app/Http/Middleware/TrimStrings.php rename to producer/app/Http/Middleware/TrimStrings.php diff --git a/src/app/Http/Middleware/TrustHosts.php b/producer/app/Http/Middleware/TrustHosts.php similarity index 100% rename from src/app/Http/Middleware/TrustHosts.php rename to producer/app/Http/Middleware/TrustHosts.php diff --git a/src/app/Http/Middleware/TrustProxies.php b/producer/app/Http/Middleware/TrustProxies.php similarity index 100% rename from src/app/Http/Middleware/TrustProxies.php rename to producer/app/Http/Middleware/TrustProxies.php diff --git a/src/app/Http/Middleware/ValidateSignature.php b/producer/app/Http/Middleware/ValidateSignature.php similarity index 100% rename from src/app/Http/Middleware/ValidateSignature.php rename to producer/app/Http/Middleware/ValidateSignature.php diff --git a/src/app/Http/Middleware/VerifyCsrfToken.php b/producer/app/Http/Middleware/VerifyCsrfToken.php similarity index 100% rename from src/app/Http/Middleware/VerifyCsrfToken.php rename to producer/app/Http/Middleware/VerifyCsrfToken.php diff --git a/src/app/Jobs/ScreenshotJob.php b/producer/app/Jobs/ScreenshotJob.php similarity index 100% rename from src/app/Jobs/ScreenshotJob.php rename to producer/app/Jobs/ScreenshotJob.php diff --git a/src/app/Models/User.php b/producer/app/Models/User.php similarity index 100% rename from src/app/Models/User.php rename to producer/app/Models/User.php diff --git a/src/app/Providers/AppServiceProvider.php b/producer/app/Providers/AppServiceProvider.php similarity index 100% rename from src/app/Providers/AppServiceProvider.php rename to producer/app/Providers/AppServiceProvider.php diff --git a/src/app/Providers/AuthServiceProvider.php b/producer/app/Providers/AuthServiceProvider.php similarity index 100% rename from src/app/Providers/AuthServiceProvider.php rename to producer/app/Providers/AuthServiceProvider.php diff --git a/src/app/Providers/BroadcastServiceProvider.php b/producer/app/Providers/BroadcastServiceProvider.php similarity index 100% rename from src/app/Providers/BroadcastServiceProvider.php rename to producer/app/Providers/BroadcastServiceProvider.php diff --git a/src/app/Providers/EventServiceProvider.php b/producer/app/Providers/EventServiceProvider.php similarity index 100% rename from src/app/Providers/EventServiceProvider.php rename to producer/app/Providers/EventServiceProvider.php diff --git a/src/app/Providers/HorizonServiceProvider.php b/producer/app/Providers/HorizonServiceProvider.php similarity index 100% rename from src/app/Providers/HorizonServiceProvider.php rename to producer/app/Providers/HorizonServiceProvider.php diff --git a/src/app/Providers/RouteServiceProvider.php b/producer/app/Providers/RouteServiceProvider.php similarity index 100% rename from src/app/Providers/RouteServiceProvider.php rename to producer/app/Providers/RouteServiceProvider.php diff --git a/src/artisan b/producer/artisan old mode 100755 new mode 100644 similarity index 100% rename from src/artisan rename to producer/artisan diff --git a/src/bootstrap/app.php b/producer/bootstrap/app.php similarity index 100% rename from src/bootstrap/app.php rename to producer/bootstrap/app.php diff --git a/.docker/rabbitmq/log/.gitignore b/producer/bootstrap/cache/.gitignore similarity index 100% rename from .docker/rabbitmq/log/.gitignore rename to producer/bootstrap/cache/.gitignore diff --git a/src/composer.json b/producer/composer.json similarity index 100% rename from src/composer.json rename to producer/composer.json diff --git a/src/composer.lock b/producer/composer.lock similarity index 100% rename from src/composer.lock rename to producer/composer.lock diff --git a/src/config/app.php b/producer/config/app.php similarity index 100% rename from src/config/app.php rename to producer/config/app.php diff --git a/src/config/auth.php b/producer/config/auth.php similarity index 100% rename from src/config/auth.php rename to producer/config/auth.php diff --git a/src/config/broadcasting.php b/producer/config/broadcasting.php similarity index 100% rename from src/config/broadcasting.php rename to producer/config/broadcasting.php diff --git a/src/config/cache.php b/producer/config/cache.php similarity index 100% rename from src/config/cache.php rename to producer/config/cache.php diff --git a/src/config/cors.php b/producer/config/cors.php similarity index 100% rename from src/config/cors.php rename to producer/config/cors.php diff --git a/src/config/database.php b/producer/config/database.php similarity index 100% rename from src/config/database.php rename to producer/config/database.php diff --git a/src/config/filesystems.php b/producer/config/filesystems.php similarity index 100% rename from src/config/filesystems.php rename to producer/config/filesystems.php diff --git a/src/config/hashing.php b/producer/config/hashing.php similarity index 100% rename from src/config/hashing.php rename to producer/config/hashing.php diff --git a/src/config/horizon.php b/producer/config/horizon.php similarity index 100% rename from src/config/horizon.php rename to producer/config/horizon.php diff --git a/src/config/logging.php b/producer/config/logging.php similarity index 100% rename from src/config/logging.php rename to producer/config/logging.php diff --git a/src/config/mail.php b/producer/config/mail.php similarity index 100% rename from src/config/mail.php rename to producer/config/mail.php diff --git a/src/config/queue.php b/producer/config/queue.php similarity index 100% rename from src/config/queue.php rename to producer/config/queue.php diff --git a/src/config/sanctum.php b/producer/config/sanctum.php similarity index 100% rename from src/config/sanctum.php rename to producer/config/sanctum.php diff --git a/src/config/services.php b/producer/config/services.php similarity index 100% rename from src/config/services.php rename to producer/config/services.php diff --git a/src/config/session.php b/producer/config/session.php similarity index 100% rename from src/config/session.php rename to producer/config/session.php diff --git a/src/config/terminal.php b/producer/config/terminal.php similarity index 100% rename from src/config/terminal.php rename to producer/config/terminal.php diff --git a/src/config/view.php b/producer/config/view.php similarity index 100% rename from src/config/view.php rename to producer/config/view.php diff --git a/src/database/.gitignore b/producer/database/.gitignore similarity index 100% rename from src/database/.gitignore rename to producer/database/.gitignore diff --git a/src/database/factories/UserFactory.php b/producer/database/factories/UserFactory.php similarity index 100% rename from src/database/factories/UserFactory.php rename to producer/database/factories/UserFactory.php diff --git a/src/database/migrations/2014_10_12_000000_create_users_table.php b/producer/database/migrations/2014_10_12_000000_create_users_table.php similarity index 100% rename from src/database/migrations/2014_10_12_000000_create_users_table.php rename to producer/database/migrations/2014_10_12_000000_create_users_table.php diff --git a/src/database/migrations/2014_10_12_100000_create_password_resets_table.php b/producer/database/migrations/2014_10_12_100000_create_password_resets_table.php similarity index 100% rename from src/database/migrations/2014_10_12_100000_create_password_resets_table.php rename to producer/database/migrations/2014_10_12_100000_create_password_resets_table.php diff --git a/src/database/migrations/2019_08_19_000000_create_failed_jobs_table.php b/producer/database/migrations/2019_08_19_000000_create_failed_jobs_table.php similarity index 100% rename from src/database/migrations/2019_08_19_000000_create_failed_jobs_table.php rename to producer/database/migrations/2019_08_19_000000_create_failed_jobs_table.php diff --git a/src/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php b/producer/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php similarity index 100% rename from src/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php rename to producer/database/migrations/2019_12_14_000001_create_personal_access_tokens_table.php diff --git a/src/database/migrations/2024_01_25_041909_create_jobs_table.php b/producer/database/migrations/2024_01_25_041909_create_jobs_table.php similarity index 100% rename from src/database/migrations/2024_01_25_041909_create_jobs_table.php rename to producer/database/migrations/2024_01_25_041909_create_jobs_table.php diff --git a/src/database/migrations/2024_01_29_014825_create_job_batches_table.php b/producer/database/migrations/2024_01_29_014825_create_job_batches_table.php similarity index 100% rename from src/database/migrations/2024_01_29_014825_create_job_batches_table.php rename to producer/database/migrations/2024_01_29_014825_create_job_batches_table.php diff --git a/src/database/migrations/2024_02_24_023630_create_sessions_table.php b/producer/database/migrations/2024_02_24_023630_create_sessions_table.php similarity index 100% rename from src/database/migrations/2024_02_24_023630_create_sessions_table.php rename to producer/database/migrations/2024_02_24_023630_create_sessions_table.php diff --git a/src/database/migrations/2024_02_24_023812_create_cache_table.php b/producer/database/migrations/2024_02_24_023812_create_cache_table.php similarity index 100% rename from src/database/migrations/2024_02_24_023812_create_cache_table.php rename to producer/database/migrations/2024_02_24_023812_create_cache_table.php diff --git a/src/database/seeders/DatabaseSeeder.php b/producer/database/seeders/DatabaseSeeder.php similarity index 100% rename from src/database/seeders/DatabaseSeeder.php rename to producer/database/seeders/DatabaseSeeder.php diff --git a/src/lang/en/auth.php b/producer/lang/en/auth.php similarity index 100% rename from src/lang/en/auth.php rename to producer/lang/en/auth.php diff --git a/src/lang/en/pagination.php b/producer/lang/en/pagination.php similarity index 100% rename from src/lang/en/pagination.php rename to producer/lang/en/pagination.php diff --git a/src/lang/en/passwords.php b/producer/lang/en/passwords.php similarity index 100% rename from src/lang/en/passwords.php rename to producer/lang/en/passwords.php diff --git a/src/lang/en/validation.php b/producer/lang/en/validation.php similarity index 100% rename from src/lang/en/validation.php rename to producer/lang/en/validation.php diff --git a/src/licenses/laravel-9.5.2.txt b/producer/licenses/laravel-9.5.2.txt similarity index 100% rename from src/licenses/laravel-9.5.2.txt rename to producer/licenses/laravel-9.5.2.txt diff --git a/src/package.json b/producer/package.json similarity index 100% rename from src/package.json rename to producer/package.json diff --git a/src/phpunit.xml b/producer/phpunit.xml similarity index 100% rename from src/phpunit.xml rename to producer/phpunit.xml diff --git a/producer/producer.sh b/producer/producer.sh new file mode 100644 index 0000000..d612db7 --- /dev/null +++ b/producer/producer.sh @@ -0,0 +1,20 @@ +#!/bin/sh +php -v + +# COMPOSER +if [ ! -d "/producer/vendor" ] +then + composer install +fi + +# DATABASE +if [ ! -f "/producer/database/database.sqlite" ] +then + touch /producer/database/database.sqlite + php artisan migrate +fi + +# HORIZON +sh /producer/.horizon/horizon.sh + +php /producer/artisan serve --host "0.0.0.0" diff --git a/src/public/.htaccess b/producer/public/.htaccess similarity index 100% rename from src/public/.htaccess rename to producer/public/.htaccess diff --git a/src/public/favicon.ico b/producer/public/favicon.ico similarity index 100% rename from src/public/favicon.ico rename to producer/public/favicon.ico diff --git a/src/public/index.php b/producer/public/index.php similarity index 100% rename from src/public/index.php rename to producer/public/index.php diff --git a/src/bootstrap/cache/.gitignore b/producer/public/pupeteer/.gitignore similarity index 100% rename from src/bootstrap/cache/.gitignore rename to producer/public/pupeteer/.gitignore diff --git a/src/public/robots.txt b/producer/public/robots.txt similarity index 100% rename from src/public/robots.txt rename to producer/public/robots.txt diff --git a/src/public/vendor/horizon/app-dark.css b/producer/public/vendor/horizon/app-dark.css similarity index 100% rename from src/public/vendor/horizon/app-dark.css rename to producer/public/vendor/horizon/app-dark.css diff --git a/src/public/vendor/horizon/app.css b/producer/public/vendor/horizon/app.css similarity index 100% rename from src/public/vendor/horizon/app.css rename to producer/public/vendor/horizon/app.css diff --git a/src/public/vendor/horizon/app.js b/producer/public/vendor/horizon/app.js similarity index 100% rename from src/public/vendor/horizon/app.js rename to producer/public/vendor/horizon/app.js diff --git a/src/public/vendor/horizon/img/favicon.png b/producer/public/vendor/horizon/img/favicon.png similarity index 100% rename from src/public/vendor/horizon/img/favicon.png rename to producer/public/vendor/horizon/img/favicon.png diff --git a/src/public/vendor/horizon/img/horizon.svg b/producer/public/vendor/horizon/img/horizon.svg similarity index 100% rename from src/public/vendor/horizon/img/horizon.svg rename to producer/public/vendor/horizon/img/horizon.svg diff --git a/src/public/vendor/horizon/img/sprite.svg b/producer/public/vendor/horizon/img/sprite.svg similarity index 100% rename from src/public/vendor/horizon/img/sprite.svg rename to producer/public/vendor/horizon/img/sprite.svg diff --git a/src/public/vendor/horizon/mix-manifest.json b/producer/public/vendor/horizon/mix-manifest.json similarity index 100% rename from src/public/vendor/horizon/mix-manifest.json rename to producer/public/vendor/horizon/mix-manifest.json diff --git a/src/public/vendor/terminal/css/terminal.css b/producer/public/vendor/terminal/css/terminal.css similarity index 100% rename from src/public/vendor/terminal/css/terminal.css rename to producer/public/vendor/terminal/css/terminal.css diff --git a/src/public/vendor/terminal/js/terminal.js b/producer/public/vendor/terminal/js/terminal.js similarity index 100% rename from src/public/vendor/terminal/js/terminal.js rename to producer/public/vendor/terminal/js/terminal.js diff --git a/src/public/vendor/terminal/js/terminal.js.LICENSE.txt b/producer/public/vendor/terminal/js/terminal.js.LICENSE.txt similarity index 100% rename from src/public/vendor/terminal/js/terminal.js.LICENSE.txt rename to producer/public/vendor/terminal/js/terminal.js.LICENSE.txt diff --git a/src/resources/css/app.css b/producer/resources/css/app.css similarity index 100% rename from src/resources/css/app.css rename to producer/resources/css/app.css diff --git a/src/resources/js/app.js b/producer/resources/js/app.js similarity index 100% rename from src/resources/js/app.js rename to producer/resources/js/app.js diff --git a/src/resources/js/bootstrap.js b/producer/resources/js/bootstrap.js similarity index 100% rename from src/resources/js/bootstrap.js rename to producer/resources/js/bootstrap.js diff --git a/src/resources/views/queue.blade.php b/producer/resources/views/queue.blade.php similarity index 100% rename from src/resources/views/queue.blade.php rename to producer/resources/views/queue.blade.php diff --git a/src/resources/views/vendor/terminal/index.blade.php b/producer/resources/views/vendor/terminal/index.blade.php similarity index 100% rename from src/resources/views/vendor/terminal/index.blade.php rename to producer/resources/views/vendor/terminal/index.blade.php diff --git a/src/resources/views/vendor/terminal/panel.blade.php b/producer/resources/views/vendor/terminal/panel.blade.php similarity index 100% rename from src/resources/views/vendor/terminal/panel.blade.php rename to producer/resources/views/vendor/terminal/panel.blade.php diff --git a/src/resources/views/welcome.blade.php b/producer/resources/views/welcome.blade.php similarity index 100% rename from src/resources/views/welcome.blade.php rename to producer/resources/views/welcome.blade.php diff --git a/src/routes/api.php b/producer/routes/api.php similarity index 100% rename from src/routes/api.php rename to producer/routes/api.php diff --git a/src/routes/channels.php b/producer/routes/channels.php similarity index 100% rename from src/routes/channels.php rename to producer/routes/channels.php diff --git a/src/routes/console.php b/producer/routes/console.php similarity index 100% rename from src/routes/console.php rename to producer/routes/console.php diff --git a/src/routes/web.php b/producer/routes/web.php similarity index 100% rename from src/routes/web.php rename to producer/routes/web.php diff --git a/src/storage/app/.gitignore b/producer/storage/app/.gitignore similarity index 100% rename from src/storage/app/.gitignore rename to producer/storage/app/.gitignore diff --git a/src/public/pupeteer/.gitignore b/producer/storage/app/public/.gitignore similarity index 100% rename from src/public/pupeteer/.gitignore rename to producer/storage/app/public/.gitignore diff --git a/src/storage/framework/.gitignore b/producer/storage/framework/.gitignore similarity index 100% rename from src/storage/framework/.gitignore rename to producer/storage/framework/.gitignore diff --git a/src/storage/framework/cache/.gitignore b/producer/storage/framework/cache/.gitignore similarity index 100% rename from src/storage/framework/cache/.gitignore rename to producer/storage/framework/cache/.gitignore diff --git a/src/storage/app/public/.gitignore b/producer/storage/framework/cache/data/.gitignore similarity index 100% rename from src/storage/app/public/.gitignore rename to producer/storage/framework/cache/data/.gitignore diff --git a/src/storage/framework/cache/data/.gitignore b/producer/storage/framework/sessions/.gitignore similarity index 100% rename from src/storage/framework/cache/data/.gitignore rename to producer/storage/framework/sessions/.gitignore diff --git a/src/storage/framework/sessions/.gitignore b/producer/storage/framework/testing/.gitignore similarity index 100% rename from src/storage/framework/sessions/.gitignore rename to producer/storage/framework/testing/.gitignore diff --git a/src/storage/framework/testing/.gitignore b/producer/storage/framework/views/.gitignore similarity index 100% rename from src/storage/framework/testing/.gitignore rename to producer/storage/framework/views/.gitignore diff --git a/src/storage/framework/views/.gitignore b/producer/storage/logs/.gitignore similarity index 100% rename from src/storage/framework/views/.gitignore rename to producer/storage/logs/.gitignore diff --git a/src/tests/CreatesApplication.php b/producer/tests/CreatesApplication.php similarity index 100% rename from src/tests/CreatesApplication.php rename to producer/tests/CreatesApplication.php diff --git a/src/tests/Feature/ExampleTest.php b/producer/tests/Feature/ExampleTest.php similarity index 100% rename from src/tests/Feature/ExampleTest.php rename to producer/tests/Feature/ExampleTest.php diff --git a/src/tests/TestCase.php b/producer/tests/TestCase.php similarity index 100% rename from src/tests/TestCase.php rename to producer/tests/TestCase.php diff --git a/src/tests/Unit/ExampleTest.php b/producer/tests/Unit/ExampleTest.php similarity index 100% rename from src/tests/Unit/ExampleTest.php rename to producer/tests/Unit/ExampleTest.php diff --git a/src/vite.config.js b/producer/vite.config.js similarity index 100% rename from src/vite.config.js rename to producer/vite.config.js diff --git a/src/laravel-entrypoint.sh b/src/laravel-entrypoint.sh deleted file mode 100755 index 79daae9..0000000 --- a/src/laravel-entrypoint.sh +++ /dev/null @@ -1,20 +0,0 @@ -#!/bin/sh -php -v - -# COMPOSER -if [ ! -d "/app/vendor" ] -then - composer install -fi - -# DATABASE -if [ ! -f "/app/database/database.sqlite" ] -then - touch /app/database/database.sqlite - php artisan migrate -fi - -# HORIZON -sh /app/.horizon/horizon.sh - -php /app/artisan serve --host "0.0.0.0" diff --git a/src/storage/logs/.gitignore b/src/storage/logs/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/src/storage/logs/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore