├── .gitignore ├── README.md ├── index.js ├── models ├── accounts.js ├── chiaModel.js ├── jodieModel.js ├── khucuyModel.js ├── maxPlotsModel.js ├── model.js ├── pfModel.js ├── priceModel.js └── wa.js ├── package-lock.json ├── package.json ├── routes ├── chia.js ├── jodie.js ├── khucuy.js ├── pf.js └── routes.js └── vercel.json /.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | lerna-debug.log* 8 | .pnpm-debug.log* 9 | 10 | # Diagnostic reports (https://nodejs.org/api/report.html) 11 | report.[0-9]*.[0-9]*.[0-9]*.[0-9]*.json 12 | 13 | # Runtime data 14 | pids 15 | *.pid 16 | *.seed 17 | *.pid.lock 18 | 19 | # Directory for instrumented libs generated by jscoverage/JSCover 20 | lib-cov 21 | 22 | # Coverage directory used by tools like istanbul 23 | coverage 24 | *.lcov 25 | 26 | # nyc test coverage 27 | .nyc_output 28 | 29 | # Grunt intermediate storage (https://gruntjs.com/creating-plugins#storing-task-files) 30 | .grunt 31 | 32 | # Bower dependency directory (https://bower.io/) 33 | bower_components 34 | 35 | # node-waf configuration 36 | .lock-wscript 37 | 38 | # Compiled binary addons (https://nodejs.org/api/addons.html) 39 | build/Release 40 | 41 | # Dependency directories 42 | node_modules/ 43 | jspm_packages/ 44 | 45 | # Snowpack dependency directory (https://snowpack.dev/) 46 | web_modules/ 47 | 48 | # TypeScript cache 49 | *.tsbuildinfo 50 | 51 | # Optional npm cache directory 52 | .npm 53 | 54 | # Optional eslint cache 55 | .eslintcache 56 | 57 | # Optional stylelint cache 58 | .stylelintcache 59 | 60 | # Microbundle cache 61 | .rpt2_cache/ 62 | .rts2_cache_cjs/ 63 | .rts2_cache_es/ 64 | .rts2_cache_umd/ 65 | 66 | # Optional REPL history 67 | .node_repl_history 68 | 69 | # Output of 'npm pack' 70 | *.tgz 71 | 72 | # Yarn Integrity file 73 | .yarn-integrity 74 | 75 | # dotenv environment variable files 76 | .env 77 | .env.development.local 78 | .env.test.local 79 | .env.production.local 80 | .env.local 81 | 82 | # parcel-bundler cache (https://parceljs.org/) 83 | .cache 84 | .parcel-cache 85 | 86 | # Next.js build output 87 | .next 88 | out 89 | 90 | # Nuxt.js build / generate output 91 | .nuxt 92 | dist 93 | 94 | # Gatsby files 95 | .cache/ 96 | # Comment in the public line in if your project uses Gatsby and not Next.js 97 | # https://nextjs.org/blog/next-9-1#public-directory-support 98 | # public 99 | 100 | # vuepress build output 101 | .vuepress/dist 102 | 103 | # vuepress v2.x temp and cache directory 104 | .temp 105 | .cache 106 | 107 | # Docusaurus cache and generated files 108 | .docusaurus 109 | 110 | # Serverless directories 111 | .serverless/ 112 | 113 | # FuseBox cache 114 | .fusebox/ 115 | 116 | # DynamoDB Local files 117 | .dynamodb/ 118 | 119 | # TernJS port file 120 | .tern-port 121 | 122 | # Stores VSCode versions used for testing VSCode extensions 123 | .vscode-test 124 | 125 | # yarn v2 126 | .yarn/cache 127 | .yarn/unplugged 128 | .yarn/build-state.yml 129 | .yarn/install-state.gz 130 | .pnp.* -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # REST-API 2 | 3 | Simple Rest API 4 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | require("dotenv").config(); 2 | const express = require("express"); 3 | const mongoose = require("mongoose"); 4 | const mongoString = process.env.DATABASE_URL; 5 | 6 | mongoose.connect(mongoString); 7 | const database = mongoose.connection; 8 | 9 | database.on("error", (error) => { 10 | console.log(error); 11 | }); 12 | 13 | database.once("connected", () => { 14 | console.log("Database Connected"); 15 | }); 16 | const app = express(); 17 | app.use(express.json()); 18 | 19 | const routes = require("./routes/routes"); 20 | const chia = require("./routes/chia"); 21 | const pf = require("./routes/pf"); 22 | 23 | const jodie = require("./routes/jodie"); 24 | const khucuy = require("./routes/khucuy"); 25 | 26 | app.use("/api", routes); 27 | app.use("/chia", chia); 28 | app.use("/pf", pf); 29 | 30 | app.use("/jodie", jodie); 31 | app.use("/khucuy", khucuy); 32 | 33 | app.use("/", (req, res) => { 34 | res.send("Simple API"); 35 | }); 36 | 37 | app.listen(3000, () => { 38 | console.log(`Server Started at ${3000}`); 39 | }); 40 | -------------------------------------------------------------------------------- /models/accounts.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const Schema = mongoose.Schema; 3 | const model = mongoose.model; 4 | 5 | const accountSchema = new Schema( 6 | { 7 | email: { type: String, required: true }, 8 | password: { type: String, required: true }, 9 | createdAt: { type: Date, default: Date.now, immutable: true }, 10 | subs: { type: Array, default: [] }, 11 | }, 12 | { collection: 'accounts' } 13 | ); 14 | 15 | accountSchema.virtual('id').get(function () { 16 | return this._id.toHexString(); 17 | }); 18 | 19 | accountSchema.set('toJSON', { 20 | virtuals: true, 21 | }); 22 | 23 | const Account = model('Account', accountSchema); 24 | module.exports = Account; 25 | -------------------------------------------------------------------------------- /models/chiaModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const dataSchema = new mongoose.Schema({ 4 | serverid: { 5 | required: true, 6 | type: String, 7 | }, 8 | status: { 9 | required: true, 10 | type: String, 11 | }, 12 | }); 13 | 14 | module.exports = mongoose.model('Chia', dataSchema); 15 | -------------------------------------------------------------------------------- /models/jodieModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const dataSchema = new mongoose.Schema({ 4 | email: { required: true, type: String }, 5 | password: { required: true, type: String }, 6 | status: { type: String, default: "fresh" }, 7 | }); 8 | 9 | module.exports = mongoose.model("jodie", dataSchema); 10 | -------------------------------------------------------------------------------- /models/khucuyModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | const dataSchema = new mongoose.Schema({ 4 | email: { required: true, type: String, unique: true }, 5 | password: { required: true, type: String }, 6 | status: { type: String, default: "fresh" }, 7 | }); 8 | 9 | module.exports = mongoose.model("khucuy", dataSchema); 10 | -------------------------------------------------------------------------------- /models/maxPlotsModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const dataSchema = new mongoose.Schema({ 4 | maxPlots: { 5 | required: true, 6 | type: Number, 7 | }, 8 | }); 9 | 10 | module.exports = mongoose.model('maxPlots', dataSchema); 11 | -------------------------------------------------------------------------------- /models/model.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const dataSchema = new mongoose.Schema({ 4 | serverid: { 5 | required: true, 6 | type: String, 7 | }, 8 | status: { 9 | required: true, 10 | type: String, 11 | }, 12 | }); 13 | 14 | module.exports = mongoose.model('Data', dataSchema); 15 | -------------------------------------------------------------------------------- /models/pfModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | 3 | const pfWLSchema = new mongoose.Schema({ 4 | userId: { 5 | type: [Number], // Assuming Telegram user IDs are strings 6 | required: true, 7 | unique: true, // Optionally, ensure uniqueness of user IDs 8 | // Add more validation if needed, e.g., minlength: 1 9 | }, 10 | }); 11 | 12 | module.exports = mongoose.model('PumpFun', pfWLSchema); 13 | -------------------------------------------------------------------------------- /models/priceModel.js: -------------------------------------------------------------------------------- 1 | const mongoose = require("mongoose"); 2 | 3 | // Define the Price schema and model 4 | const priceSchema = new mongoose.Schema({ 5 | price: Number, 6 | url: String, 7 | }); 8 | 9 | module.exports = mongoose.model("price", priceSchema); 10 | -------------------------------------------------------------------------------- /models/wa.js: -------------------------------------------------------------------------------- 1 | const mongoose = require('mongoose'); 2 | const Schema = mongoose.Schema; 3 | const model = mongoose.model; 4 | 5 | const waSchema = new Schema( 6 | { 7 | nomor: { type: Number, required: true }, 8 | wa_id: { type: String, required: true }, 9 | isBusiness: { type: Boolean, required: true }, 10 | canReceiveMessage: { type: Boolean, required: true }, 11 | numberExists: { type: Boolean, required: true }, 12 | Date: { type: Date, immutable: true, default: Date.now }, 13 | }, 14 | { collection: 'wa' } 15 | ); 16 | 17 | waSchema.virtual('id').get(function () { 18 | return this._id.toHexString(); 19 | }); 20 | 21 | waSchema.set('toJSON', { 22 | virtuals: true, 23 | }); 24 | 25 | const wa = model('wa', waSchema); 26 | module.exports = wa; 27 | -------------------------------------------------------------------------------- /package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest-api", 3 | "version": "1.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@aws-crypto/ie11-detection": { 8 | "version": "3.0.0", 9 | "resolved": "https://registry.npmjs.org/@aws-crypto/ie11-detection/-/ie11-detection-3.0.0.tgz", 10 | "integrity": "sha512-341lBBkiY1DfDNKai/wXM3aujNBkXR7tq1URPQDL9wi3AUbI80NR74uF1TXHMm7po1AcnFk8iu2S2IeU/+/A+Q==", 11 | "optional": true, 12 | "requires": { 13 | "tslib": "^1.11.1" 14 | }, 15 | "dependencies": { 16 | "tslib": { 17 | "version": "1.14.1", 18 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 19 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 20 | "optional": true 21 | } 22 | } 23 | }, 24 | "@aws-crypto/sha256-browser": { 25 | "version": "3.0.0", 26 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-browser/-/sha256-browser-3.0.0.tgz", 27 | "integrity": "sha512-8VLmW2B+gjFbU5uMeqtQM6Nj0/F1bro80xQXCW6CQBWgosFWXTx77aeOF5CAIAmbOK64SdMBJdNr6J41yP5mvQ==", 28 | "optional": true, 29 | "requires": { 30 | "@aws-crypto/ie11-detection": "^3.0.0", 31 | "@aws-crypto/sha256-js": "^3.0.0", 32 | "@aws-crypto/supports-web-crypto": "^3.0.0", 33 | "@aws-crypto/util": "^3.0.0", 34 | "@aws-sdk/types": "^3.222.0", 35 | "@aws-sdk/util-locate-window": "^3.0.0", 36 | "@aws-sdk/util-utf8-browser": "^3.0.0", 37 | "tslib": "^1.11.1" 38 | }, 39 | "dependencies": { 40 | "tslib": { 41 | "version": "1.14.1", 42 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 43 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 44 | "optional": true 45 | } 46 | } 47 | }, 48 | "@aws-crypto/sha256-js": { 49 | "version": "3.0.0", 50 | "resolved": "https://registry.npmjs.org/@aws-crypto/sha256-js/-/sha256-js-3.0.0.tgz", 51 | "integrity": "sha512-PnNN7os0+yd1XvXAy23CFOmTbMaDxgxXtTKHybrJ39Y8kGzBATgBFibWJKH6BhytLI/Zyszs87xCOBNyBig6vQ==", 52 | "optional": true, 53 | "requires": { 54 | "@aws-crypto/util": "^3.0.0", 55 | "@aws-sdk/types": "^3.222.0", 56 | "tslib": "^1.11.1" 57 | }, 58 | "dependencies": { 59 | "tslib": { 60 | "version": "1.14.1", 61 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 62 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 63 | "optional": true 64 | } 65 | } 66 | }, 67 | "@aws-crypto/supports-web-crypto": { 68 | "version": "3.0.0", 69 | "resolved": "https://registry.npmjs.org/@aws-crypto/supports-web-crypto/-/supports-web-crypto-3.0.0.tgz", 70 | "integrity": "sha512-06hBdMwUAb2WFTuGG73LSC0wfPu93xWwo5vL2et9eymgmu3Id5vFAHBbajVWiGhPO37qcsdCap/FqXvJGJWPIg==", 71 | "optional": true, 72 | "requires": { 73 | "tslib": "^1.11.1" 74 | }, 75 | "dependencies": { 76 | "tslib": { 77 | "version": "1.14.1", 78 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 79 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 80 | "optional": true 81 | } 82 | } 83 | }, 84 | "@aws-crypto/util": { 85 | "version": "3.0.0", 86 | "resolved": "https://registry.npmjs.org/@aws-crypto/util/-/util-3.0.0.tgz", 87 | "integrity": "sha512-2OJlpeJpCR48CC8r+uKVChzs9Iungj9wkZrl8Z041DWEWvyIHILYKCPNzJghKsivj+S3mLo6BVc7mBNzdxA46w==", 88 | "optional": true, 89 | "requires": { 90 | "@aws-sdk/types": "^3.222.0", 91 | "@aws-sdk/util-utf8-browser": "^3.0.0", 92 | "tslib": "^1.11.1" 93 | }, 94 | "dependencies": { 95 | "tslib": { 96 | "version": "1.14.1", 97 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", 98 | "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", 99 | "optional": true 100 | } 101 | } 102 | }, 103 | "@aws-sdk/abort-controller": { 104 | "version": "3.254.0", 105 | "resolved": "https://registry.npmjs.org/@aws-sdk/abort-controller/-/abort-controller-3.254.0.tgz", 106 | "integrity": "sha512-ZBJFCCU7mIXGLk5GFXrSReyUR/kOBju0kzd7nVAAQQlfkmHZEuFhKFFMXkfJZG0SC0ezCbmR/EzIqJ2mTI+pRA==", 107 | "optional": true, 108 | "requires": { 109 | "@aws-sdk/types": "3.254.0", 110 | "tslib": "^2.3.1" 111 | } 112 | }, 113 | "@aws-sdk/client-cognito-identity": { 114 | "version": "3.256.0", 115 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-cognito-identity/-/client-cognito-identity-3.256.0.tgz", 116 | "integrity": "sha512-fjpxWJS0QqJmvOhzyYnaPQgJ1T9zSsspjsXvBS1DGCy/BseEICO51wa91KXr2Itswp78SY9VICm8EwlSaxwblA==", 117 | "optional": true, 118 | "requires": { 119 | "@aws-crypto/sha256-browser": "3.0.0", 120 | "@aws-crypto/sha256-js": "3.0.0", 121 | "@aws-sdk/client-sts": "3.256.0", 122 | "@aws-sdk/config-resolver": "3.254.0", 123 | "@aws-sdk/credential-provider-node": "3.256.0", 124 | "@aws-sdk/fetch-http-handler": "3.254.0", 125 | "@aws-sdk/hash-node": "3.254.0", 126 | "@aws-sdk/invalid-dependency": "3.254.0", 127 | "@aws-sdk/middleware-content-length": "3.254.0", 128 | "@aws-sdk/middleware-endpoint": "3.254.0", 129 | "@aws-sdk/middleware-host-header": "3.254.0", 130 | "@aws-sdk/middleware-logger": "3.254.0", 131 | "@aws-sdk/middleware-recursion-detection": "3.254.0", 132 | "@aws-sdk/middleware-retry": "3.254.0", 133 | "@aws-sdk/middleware-serde": "3.254.0", 134 | "@aws-sdk/middleware-signing": "3.254.0", 135 | "@aws-sdk/middleware-stack": "3.254.0", 136 | "@aws-sdk/middleware-user-agent": "3.254.0", 137 | "@aws-sdk/node-config-provider": "3.254.0", 138 | "@aws-sdk/node-http-handler": "3.254.0", 139 | "@aws-sdk/protocol-http": "3.254.0", 140 | "@aws-sdk/smithy-client": "3.254.0", 141 | "@aws-sdk/types": "3.254.0", 142 | "@aws-sdk/url-parser": "3.254.0", 143 | "@aws-sdk/util-base64": "3.208.0", 144 | "@aws-sdk/util-body-length-browser": "3.188.0", 145 | "@aws-sdk/util-body-length-node": "3.208.0", 146 | "@aws-sdk/util-defaults-mode-browser": "3.254.0", 147 | "@aws-sdk/util-defaults-mode-node": "3.254.0", 148 | "@aws-sdk/util-endpoints": "3.254.0", 149 | "@aws-sdk/util-retry": "3.254.0", 150 | "@aws-sdk/util-user-agent-browser": "3.254.0", 151 | "@aws-sdk/util-user-agent-node": "3.254.0", 152 | "@aws-sdk/util-utf8-browser": "3.188.0", 153 | "@aws-sdk/util-utf8-node": "3.208.0", 154 | "tslib": "^2.3.1" 155 | } 156 | }, 157 | "@aws-sdk/client-sso": { 158 | "version": "3.256.0", 159 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso/-/client-sso-3.256.0.tgz", 160 | "integrity": "sha512-e+BNJ95IqUU1nmmX51T3ehy8yqHDN8J4DH6FReK1vrFIMEra/wERGJBcm+pdojyllQ20FQRBvGtOzN/WspH74w==", 161 | "optional": true, 162 | "requires": { 163 | "@aws-crypto/sha256-browser": "3.0.0", 164 | "@aws-crypto/sha256-js": "3.0.0", 165 | "@aws-sdk/config-resolver": "3.254.0", 166 | "@aws-sdk/fetch-http-handler": "3.254.0", 167 | "@aws-sdk/hash-node": "3.254.0", 168 | "@aws-sdk/invalid-dependency": "3.254.0", 169 | "@aws-sdk/middleware-content-length": "3.254.0", 170 | "@aws-sdk/middleware-endpoint": "3.254.0", 171 | "@aws-sdk/middleware-host-header": "3.254.0", 172 | "@aws-sdk/middleware-logger": "3.254.0", 173 | "@aws-sdk/middleware-recursion-detection": "3.254.0", 174 | "@aws-sdk/middleware-retry": "3.254.0", 175 | "@aws-sdk/middleware-serde": "3.254.0", 176 | "@aws-sdk/middleware-stack": "3.254.0", 177 | "@aws-sdk/middleware-user-agent": "3.254.0", 178 | "@aws-sdk/node-config-provider": "3.254.0", 179 | "@aws-sdk/node-http-handler": "3.254.0", 180 | "@aws-sdk/protocol-http": "3.254.0", 181 | "@aws-sdk/smithy-client": "3.254.0", 182 | "@aws-sdk/types": "3.254.0", 183 | "@aws-sdk/url-parser": "3.254.0", 184 | "@aws-sdk/util-base64": "3.208.0", 185 | "@aws-sdk/util-body-length-browser": "3.188.0", 186 | "@aws-sdk/util-body-length-node": "3.208.0", 187 | "@aws-sdk/util-defaults-mode-browser": "3.254.0", 188 | "@aws-sdk/util-defaults-mode-node": "3.254.0", 189 | "@aws-sdk/util-endpoints": "3.254.0", 190 | "@aws-sdk/util-retry": "3.254.0", 191 | "@aws-sdk/util-user-agent-browser": "3.254.0", 192 | "@aws-sdk/util-user-agent-node": "3.254.0", 193 | "@aws-sdk/util-utf8-browser": "3.188.0", 194 | "@aws-sdk/util-utf8-node": "3.208.0", 195 | "tslib": "^2.3.1" 196 | } 197 | }, 198 | "@aws-sdk/client-sso-oidc": { 199 | "version": "3.256.0", 200 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sso-oidc/-/client-sso-oidc-3.256.0.tgz", 201 | "integrity": "sha512-HR57pMdL5zGpxHnKYx1HjgnbVYlhTDZwyBS7k9JfiEDwPnGH8y169aNgVs+iaX0rIRlv6AyVstjqjZXGxODS4w==", 202 | "optional": true, 203 | "requires": { 204 | "@aws-crypto/sha256-browser": "3.0.0", 205 | "@aws-crypto/sha256-js": "3.0.0", 206 | "@aws-sdk/config-resolver": "3.254.0", 207 | "@aws-sdk/fetch-http-handler": "3.254.0", 208 | "@aws-sdk/hash-node": "3.254.0", 209 | "@aws-sdk/invalid-dependency": "3.254.0", 210 | "@aws-sdk/middleware-content-length": "3.254.0", 211 | "@aws-sdk/middleware-endpoint": "3.254.0", 212 | "@aws-sdk/middleware-host-header": "3.254.0", 213 | "@aws-sdk/middleware-logger": "3.254.0", 214 | "@aws-sdk/middleware-recursion-detection": "3.254.0", 215 | "@aws-sdk/middleware-retry": "3.254.0", 216 | "@aws-sdk/middleware-serde": "3.254.0", 217 | "@aws-sdk/middleware-stack": "3.254.0", 218 | "@aws-sdk/middleware-user-agent": "3.254.0", 219 | "@aws-sdk/node-config-provider": "3.254.0", 220 | "@aws-sdk/node-http-handler": "3.254.0", 221 | "@aws-sdk/protocol-http": "3.254.0", 222 | "@aws-sdk/smithy-client": "3.254.0", 223 | "@aws-sdk/types": "3.254.0", 224 | "@aws-sdk/url-parser": "3.254.0", 225 | "@aws-sdk/util-base64": "3.208.0", 226 | "@aws-sdk/util-body-length-browser": "3.188.0", 227 | "@aws-sdk/util-body-length-node": "3.208.0", 228 | "@aws-sdk/util-defaults-mode-browser": "3.254.0", 229 | "@aws-sdk/util-defaults-mode-node": "3.254.0", 230 | "@aws-sdk/util-endpoints": "3.254.0", 231 | "@aws-sdk/util-retry": "3.254.0", 232 | "@aws-sdk/util-user-agent-browser": "3.254.0", 233 | "@aws-sdk/util-user-agent-node": "3.254.0", 234 | "@aws-sdk/util-utf8-browser": "3.188.0", 235 | "@aws-sdk/util-utf8-node": "3.208.0", 236 | "tslib": "^2.3.1" 237 | } 238 | }, 239 | "@aws-sdk/client-sts": { 240 | "version": "3.256.0", 241 | "resolved": "https://registry.npmjs.org/@aws-sdk/client-sts/-/client-sts-3.256.0.tgz", 242 | "integrity": "sha512-6jqaM7/Lw41kuEz8CqLU+fOLDF8C6W+jG30zBQrAC+iYSTB0w9uGOzVxsan1Nesg1FpoBqnWcF7xWi6Ox+OeDg==", 243 | "optional": true, 244 | "requires": { 245 | "@aws-crypto/sha256-browser": "3.0.0", 246 | "@aws-crypto/sha256-js": "3.0.0", 247 | "@aws-sdk/config-resolver": "3.254.0", 248 | "@aws-sdk/credential-provider-node": "3.256.0", 249 | "@aws-sdk/fetch-http-handler": "3.254.0", 250 | "@aws-sdk/hash-node": "3.254.0", 251 | "@aws-sdk/invalid-dependency": "3.254.0", 252 | "@aws-sdk/middleware-content-length": "3.254.0", 253 | "@aws-sdk/middleware-endpoint": "3.254.0", 254 | "@aws-sdk/middleware-host-header": "3.254.0", 255 | "@aws-sdk/middleware-logger": "3.254.0", 256 | "@aws-sdk/middleware-recursion-detection": "3.254.0", 257 | "@aws-sdk/middleware-retry": "3.254.0", 258 | "@aws-sdk/middleware-sdk-sts": "3.254.0", 259 | "@aws-sdk/middleware-serde": "3.254.0", 260 | "@aws-sdk/middleware-signing": "3.254.0", 261 | "@aws-sdk/middleware-stack": "3.254.0", 262 | "@aws-sdk/middleware-user-agent": "3.254.0", 263 | "@aws-sdk/node-config-provider": "3.254.0", 264 | "@aws-sdk/node-http-handler": "3.254.0", 265 | "@aws-sdk/protocol-http": "3.254.0", 266 | "@aws-sdk/smithy-client": "3.254.0", 267 | "@aws-sdk/types": "3.254.0", 268 | "@aws-sdk/url-parser": "3.254.0", 269 | "@aws-sdk/util-base64": "3.208.0", 270 | "@aws-sdk/util-body-length-browser": "3.188.0", 271 | "@aws-sdk/util-body-length-node": "3.208.0", 272 | "@aws-sdk/util-defaults-mode-browser": "3.254.0", 273 | "@aws-sdk/util-defaults-mode-node": "3.254.0", 274 | "@aws-sdk/util-endpoints": "3.254.0", 275 | "@aws-sdk/util-retry": "3.254.0", 276 | "@aws-sdk/util-user-agent-browser": "3.254.0", 277 | "@aws-sdk/util-user-agent-node": "3.254.0", 278 | "@aws-sdk/util-utf8-browser": "3.188.0", 279 | "@aws-sdk/util-utf8-node": "3.208.0", 280 | "fast-xml-parser": "4.0.11", 281 | "tslib": "^2.3.1" 282 | } 283 | }, 284 | "@aws-sdk/config-resolver": { 285 | "version": "3.254.0", 286 | "resolved": "https://registry.npmjs.org/@aws-sdk/config-resolver/-/config-resolver-3.254.0.tgz", 287 | "integrity": "sha512-+t5mi/SrZdAbSgg/5b/q3zVZsNQSyty2XX+znaRvBdANtIWIBdFLEMQp/L5NA+PSiW6VUXu9eXcsj0kJlAhTgQ==", 288 | "optional": true, 289 | "requires": { 290 | "@aws-sdk/signature-v4": "3.254.0", 291 | "@aws-sdk/types": "3.254.0", 292 | "@aws-sdk/util-config-provider": "3.208.0", 293 | "@aws-sdk/util-middleware": "3.254.0", 294 | "tslib": "^2.3.1" 295 | } 296 | }, 297 | "@aws-sdk/credential-provider-cognito-identity": { 298 | "version": "3.256.0", 299 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-cognito-identity/-/credential-provider-cognito-identity-3.256.0.tgz", 300 | "integrity": "sha512-dJEASJ0bjBg+TBAGs2Vx3ixVK2Tk30Hz80lxxHp+URu1KUS+ZfsdXFKIMFpCtzw72tIniGXUlv9Bpx3OYT1xfQ==", 301 | "optional": true, 302 | "requires": { 303 | "@aws-sdk/client-cognito-identity": "3.256.0", 304 | "@aws-sdk/property-provider": "3.254.0", 305 | "@aws-sdk/types": "3.254.0", 306 | "tslib": "^2.3.1" 307 | } 308 | }, 309 | "@aws-sdk/credential-provider-env": { 310 | "version": "3.254.0", 311 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-env/-/credential-provider-env-3.254.0.tgz", 312 | "integrity": "sha512-2CDwb7L1XGTY7Y8N3EsE1xqas0zNvrs4aOEv5XZNrKqE+9bvs8CiUwV4SB6VwSD+EPcOSm3QYEURUmj5EyLEZQ==", 313 | "optional": true, 314 | "requires": { 315 | "@aws-sdk/property-provider": "3.254.0", 316 | "@aws-sdk/types": "3.254.0", 317 | "tslib": "^2.3.1" 318 | } 319 | }, 320 | "@aws-sdk/credential-provider-imds": { 321 | "version": "3.254.0", 322 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-imds/-/credential-provider-imds-3.254.0.tgz", 323 | "integrity": "sha512-sM3N7FLz+svRGjTgwAybKBmu5tVfCJmd5HPEfKR0jfBWB1uq0u0J+65JiO/wfqn/ix+3ZyFfacSJDFjnSPu/KA==", 324 | "optional": true, 325 | "requires": { 326 | "@aws-sdk/node-config-provider": "3.254.0", 327 | "@aws-sdk/property-provider": "3.254.0", 328 | "@aws-sdk/types": "3.254.0", 329 | "@aws-sdk/url-parser": "3.254.0", 330 | "tslib": "^2.3.1" 331 | } 332 | }, 333 | "@aws-sdk/credential-provider-ini": { 334 | "version": "3.256.0", 335 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-ini/-/credential-provider-ini-3.256.0.tgz", 336 | "integrity": "sha512-tZacj/dVnu2GuNSVpYaO6JHrpaWqz9wvOkf/lYxh1Ga993uhF6SWLfENM29gF/EjvV0Nn0beHfyz5Em7dFbw8g==", 337 | "optional": true, 338 | "requires": { 339 | "@aws-sdk/credential-provider-env": "3.254.0", 340 | "@aws-sdk/credential-provider-imds": "3.254.0", 341 | "@aws-sdk/credential-provider-process": "3.254.0", 342 | "@aws-sdk/credential-provider-sso": "3.256.0", 343 | "@aws-sdk/credential-provider-web-identity": "3.254.0", 344 | "@aws-sdk/property-provider": "3.254.0", 345 | "@aws-sdk/shared-ini-file-loader": "3.254.0", 346 | "@aws-sdk/types": "3.254.0", 347 | "tslib": "^2.3.1" 348 | } 349 | }, 350 | "@aws-sdk/credential-provider-node": { 351 | "version": "3.256.0", 352 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-node/-/credential-provider-node-3.256.0.tgz", 353 | "integrity": "sha512-A/C8379FjeDYzfG+KQOyMgUnH/Fr7MFoeyhH9pECp5KWzts6H4IIQ1XUN7H/dmeqGfFxU7E7Hya2k1BX4qrKwQ==", 354 | "optional": true, 355 | "requires": { 356 | "@aws-sdk/credential-provider-env": "3.254.0", 357 | "@aws-sdk/credential-provider-imds": "3.254.0", 358 | "@aws-sdk/credential-provider-ini": "3.256.0", 359 | "@aws-sdk/credential-provider-process": "3.254.0", 360 | "@aws-sdk/credential-provider-sso": "3.256.0", 361 | "@aws-sdk/credential-provider-web-identity": "3.254.0", 362 | "@aws-sdk/property-provider": "3.254.0", 363 | "@aws-sdk/shared-ini-file-loader": "3.254.0", 364 | "@aws-sdk/types": "3.254.0", 365 | "tslib": "^2.3.1" 366 | } 367 | }, 368 | "@aws-sdk/credential-provider-process": { 369 | "version": "3.254.0", 370 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-process/-/credential-provider-process-3.254.0.tgz", 371 | "integrity": "sha512-vNm1AHMu5Lg1kOMk4ucWgaNO4zNAD7aeRssdBMnC7WqRT2xB8CUEWi+zJGNjbxzEeTLXQZuMa1VeRT3nPjYrzg==", 372 | "optional": true, 373 | "requires": { 374 | "@aws-sdk/property-provider": "3.254.0", 375 | "@aws-sdk/shared-ini-file-loader": "3.254.0", 376 | "@aws-sdk/types": "3.254.0", 377 | "tslib": "^2.3.1" 378 | } 379 | }, 380 | "@aws-sdk/credential-provider-sso": { 381 | "version": "3.256.0", 382 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-sso/-/credential-provider-sso-3.256.0.tgz", 383 | "integrity": "sha512-5WV62oxuM1LM9udmouxkGbnkN7sKqF4drYBBt2DetQzq4NStaOtZgcY0fxcX/HFv0Q2wjSWCBtDQ31Jo1CJRew==", 384 | "optional": true, 385 | "requires": { 386 | "@aws-sdk/client-sso": "3.256.0", 387 | "@aws-sdk/property-provider": "3.254.0", 388 | "@aws-sdk/shared-ini-file-loader": "3.254.0", 389 | "@aws-sdk/token-providers": "3.256.0", 390 | "@aws-sdk/types": "3.254.0", 391 | "tslib": "^2.3.1" 392 | } 393 | }, 394 | "@aws-sdk/credential-provider-web-identity": { 395 | "version": "3.254.0", 396 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-provider-web-identity/-/credential-provider-web-identity-3.254.0.tgz", 397 | "integrity": "sha512-R/5qjAoCHEe7xmY5j0vges4xKpFpTgrwzdST822JVNWUobZmiDUqnn+1Xw4Qmomst625NOpgzsV4JuHsA4a8Ig==", 398 | "optional": true, 399 | "requires": { 400 | "@aws-sdk/property-provider": "3.254.0", 401 | "@aws-sdk/types": "3.254.0", 402 | "tslib": "^2.3.1" 403 | } 404 | }, 405 | "@aws-sdk/credential-providers": { 406 | "version": "3.256.0", 407 | "resolved": "https://registry.npmjs.org/@aws-sdk/credential-providers/-/credential-providers-3.256.0.tgz", 408 | "integrity": "sha512-1Fwr966CQ367a9m5Z88TwuRGHx5z7LOJVWsQjoc+c17IbGK8qHkX6VAapb0l0qFchV1xkL2/cE9K2Q3LLrUNbg==", 409 | "optional": true, 410 | "requires": { 411 | "@aws-sdk/client-cognito-identity": "3.256.0", 412 | "@aws-sdk/client-sso": "3.256.0", 413 | "@aws-sdk/client-sts": "3.256.0", 414 | "@aws-sdk/credential-provider-cognito-identity": "3.256.0", 415 | "@aws-sdk/credential-provider-env": "3.254.0", 416 | "@aws-sdk/credential-provider-imds": "3.254.0", 417 | "@aws-sdk/credential-provider-ini": "3.256.0", 418 | "@aws-sdk/credential-provider-node": "3.256.0", 419 | "@aws-sdk/credential-provider-process": "3.254.0", 420 | "@aws-sdk/credential-provider-sso": "3.256.0", 421 | "@aws-sdk/credential-provider-web-identity": "3.254.0", 422 | "@aws-sdk/property-provider": "3.254.0", 423 | "@aws-sdk/shared-ini-file-loader": "3.254.0", 424 | "@aws-sdk/types": "3.254.0", 425 | "tslib": "^2.3.1" 426 | } 427 | }, 428 | "@aws-sdk/fetch-http-handler": { 429 | "version": "3.254.0", 430 | "resolved": "https://registry.npmjs.org/@aws-sdk/fetch-http-handler/-/fetch-http-handler-3.254.0.tgz", 431 | "integrity": "sha512-/bbtNHe5JHFdKnCVr3Zx55sqs4c0F+7f1CC5cvTgH3O46wgIRM/6/rvE0YieXmfm3ho/GOhxBUzy59A0haKQGg==", 432 | "optional": true, 433 | "requires": { 434 | "@aws-sdk/protocol-http": "3.254.0", 435 | "@aws-sdk/querystring-builder": "3.254.0", 436 | "@aws-sdk/types": "3.254.0", 437 | "@aws-sdk/util-base64": "3.208.0", 438 | "tslib": "^2.3.1" 439 | } 440 | }, 441 | "@aws-sdk/hash-node": { 442 | "version": "3.254.0", 443 | "resolved": "https://registry.npmjs.org/@aws-sdk/hash-node/-/hash-node-3.254.0.tgz", 444 | "integrity": "sha512-7FoB6BVbO+Z/NEOHeOAoUTyj8q+Pcdn4QpKvA4epRDrzMNcXy7MUNzzt148nkDssES09rgsN+KM8Zo2qgRYngg==", 445 | "optional": true, 446 | "requires": { 447 | "@aws-sdk/types": "3.254.0", 448 | "@aws-sdk/util-buffer-from": "3.208.0", 449 | "@aws-sdk/util-utf8": "3.254.0", 450 | "tslib": "^2.3.1" 451 | } 452 | }, 453 | "@aws-sdk/invalid-dependency": { 454 | "version": "3.254.0", 455 | "resolved": "https://registry.npmjs.org/@aws-sdk/invalid-dependency/-/invalid-dependency-3.254.0.tgz", 456 | "integrity": "sha512-ueV0tXyGndCTZXnEv+AMeTfu+IqV2QzmGMXcakiwxDjg48H9X/bLnj+C96Sexond8jD8K0ub9HWhkBrvvAXlPA==", 457 | "optional": true, 458 | "requires": { 459 | "@aws-sdk/types": "3.254.0", 460 | "tslib": "^2.3.1" 461 | } 462 | }, 463 | "@aws-sdk/is-array-buffer": { 464 | "version": "3.201.0", 465 | "resolved": "https://registry.npmjs.org/@aws-sdk/is-array-buffer/-/is-array-buffer-3.201.0.tgz", 466 | "integrity": "sha512-UPez5qLh3dNgt0DYnPD/q0mVJY84rA17QE26hVNOW3fAji8W2wrwrxdacWOxyXvlxWsVRcKmr+lay1MDqpAMfg==", 467 | "optional": true, 468 | "requires": { 469 | "tslib": "^2.3.1" 470 | } 471 | }, 472 | "@aws-sdk/middleware-content-length": { 473 | "version": "3.254.0", 474 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-content-length/-/middleware-content-length-3.254.0.tgz", 475 | "integrity": "sha512-IT7nDZA6WsaZSNp9M79xfkk/us4kGV4SIZ2R9gHT9MFqdmpmbr3EGhFLKXUHcAZfCcOdw+JNV/wHJiiN1JD/hg==", 476 | "optional": true, 477 | "requires": { 478 | "@aws-sdk/protocol-http": "3.254.0", 479 | "@aws-sdk/types": "3.254.0", 480 | "tslib": "^2.3.1" 481 | } 482 | }, 483 | "@aws-sdk/middleware-endpoint": { 484 | "version": "3.254.0", 485 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-endpoint/-/middleware-endpoint-3.254.0.tgz", 486 | "integrity": "sha512-9fkDtSJdhEr91tWp4zLyKhHDGVyvUA0gDK+6wGYyorKCae2qX2TL+Fl6vsqY4PxrdTpXRBJDlJnEly9i48YKxg==", 487 | "optional": true, 488 | "requires": { 489 | "@aws-sdk/middleware-serde": "3.254.0", 490 | "@aws-sdk/protocol-http": "3.254.0", 491 | "@aws-sdk/signature-v4": "3.254.0", 492 | "@aws-sdk/types": "3.254.0", 493 | "@aws-sdk/url-parser": "3.254.0", 494 | "@aws-sdk/util-config-provider": "3.208.0", 495 | "@aws-sdk/util-middleware": "3.254.0", 496 | "tslib": "^2.3.1" 497 | } 498 | }, 499 | "@aws-sdk/middleware-host-header": { 500 | "version": "3.254.0", 501 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-host-header/-/middleware-host-header-3.254.0.tgz", 502 | "integrity": "sha512-JG+OoyCMivnqTYiPZxRF+sgYEyQG68+PMl2843owvSxQQ25nH2Ih6DzLqH10c/uAN0PsiA8s/FfJBzhw9Xf0KA==", 503 | "optional": true, 504 | "requires": { 505 | "@aws-sdk/protocol-http": "3.254.0", 506 | "@aws-sdk/types": "3.254.0", 507 | "tslib": "^2.3.1" 508 | } 509 | }, 510 | "@aws-sdk/middleware-logger": { 511 | "version": "3.254.0", 512 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-logger/-/middleware-logger-3.254.0.tgz", 513 | "integrity": "sha512-h3jEw58VUJkfqrwWMmp3Qc8293RFo4LMqxNAVsVwYEG6xb/RQ+JamsOx+t6aDsoOdKqhYngWwDGtgUZQ5wQQvg==", 514 | "optional": true, 515 | "requires": { 516 | "@aws-sdk/types": "3.254.0", 517 | "tslib": "^2.3.1" 518 | } 519 | }, 520 | "@aws-sdk/middleware-recursion-detection": { 521 | "version": "3.254.0", 522 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-recursion-detection/-/middleware-recursion-detection-3.254.0.tgz", 523 | "integrity": "sha512-/4tTvAXmIIMCs3giPIXN9aVJUGMoBMWw+9WS22u7nYNzwTe/k30DhS91uvwj7TLOOpFN0IBNXPCJ+T1OZn+ZXQ==", 524 | "optional": true, 525 | "requires": { 526 | "@aws-sdk/protocol-http": "3.254.0", 527 | "@aws-sdk/types": "3.254.0", 528 | "tslib": "^2.3.1" 529 | } 530 | }, 531 | "@aws-sdk/middleware-retry": { 532 | "version": "3.254.0", 533 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-retry/-/middleware-retry-3.254.0.tgz", 534 | "integrity": "sha512-nHgris8NmtLzsH5iUA8geW6RAT1VRymjlieKFmM3CAYt2h2X8AtAiL/Wod+Pj3+jjRGk9YeGzOOGbzODHiRxnA==", 535 | "optional": true, 536 | "requires": { 537 | "@aws-sdk/protocol-http": "3.254.0", 538 | "@aws-sdk/service-error-classification": "3.254.0", 539 | "@aws-sdk/types": "3.254.0", 540 | "@aws-sdk/util-middleware": "3.254.0", 541 | "@aws-sdk/util-retry": "3.254.0", 542 | "tslib": "^2.3.1", 543 | "uuid": "^8.3.2" 544 | } 545 | }, 546 | "@aws-sdk/middleware-sdk-sts": { 547 | "version": "3.254.0", 548 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-sdk-sts/-/middleware-sdk-sts-3.254.0.tgz", 549 | "integrity": "sha512-Y074nmTp07thuOI6GePv8IKdL/OvkO1tn2l7QvnwQa3Sy/HyNai1V3MVtq4hRi1dgDjheKPVHPE+TnOmF3w5uA==", 550 | "optional": true, 551 | "requires": { 552 | "@aws-sdk/middleware-signing": "3.254.0", 553 | "@aws-sdk/property-provider": "3.254.0", 554 | "@aws-sdk/protocol-http": "3.254.0", 555 | "@aws-sdk/signature-v4": "3.254.0", 556 | "@aws-sdk/types": "3.254.0", 557 | "tslib": "^2.3.1" 558 | } 559 | }, 560 | "@aws-sdk/middleware-serde": { 561 | "version": "3.254.0", 562 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-serde/-/middleware-serde-3.254.0.tgz", 563 | "integrity": "sha512-YuItb2nlKADTBItcn68eA8amX4quuR1+0GyFRkwssKS/iTjbIk+3gJ2s1zxkUhlyozH3U38Jvvqd+W9+gNpYIg==", 564 | "optional": true, 565 | "requires": { 566 | "@aws-sdk/types": "3.254.0", 567 | "tslib": "^2.3.1" 568 | } 569 | }, 570 | "@aws-sdk/middleware-signing": { 571 | "version": "3.254.0", 572 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-signing/-/middleware-signing-3.254.0.tgz", 573 | "integrity": "sha512-HMVGf+yANjlKCUMFZJU2PNzbI9hbCgL+IX/Y4DGuQW9cp7EgZOxQre1LBKpcCqqPVQ4toIdfNH/K8uM2fpO6dg==", 574 | "optional": true, 575 | "requires": { 576 | "@aws-sdk/property-provider": "3.254.0", 577 | "@aws-sdk/protocol-http": "3.254.0", 578 | "@aws-sdk/signature-v4": "3.254.0", 579 | "@aws-sdk/types": "3.254.0", 580 | "@aws-sdk/util-middleware": "3.254.0", 581 | "tslib": "^2.3.1" 582 | } 583 | }, 584 | "@aws-sdk/middleware-stack": { 585 | "version": "3.254.0", 586 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-stack/-/middleware-stack-3.254.0.tgz", 587 | "integrity": "sha512-yPWRnjeLC0lPAEQbiqbC3+hnqXZ+uCSoSevGndU5KWMMiXLxKZn7Y0B3kG8NAnNNuPid+wYFWWU9rKiBRvWR/w==", 588 | "optional": true, 589 | "requires": { 590 | "tslib": "^2.3.1" 591 | } 592 | }, 593 | "@aws-sdk/middleware-user-agent": { 594 | "version": "3.254.0", 595 | "resolved": "https://registry.npmjs.org/@aws-sdk/middleware-user-agent/-/middleware-user-agent-3.254.0.tgz", 596 | "integrity": "sha512-hp5UYRg3ysZXMFMv34nYexyom6Z3pdx+OmisJz4w3AMigT8y57Ps30Vg+1QYaGlQkI4vfvcmdZX2Q+kp+mb9gQ==", 597 | "optional": true, 598 | "requires": { 599 | "@aws-sdk/protocol-http": "3.254.0", 600 | "@aws-sdk/types": "3.254.0", 601 | "tslib": "^2.3.1" 602 | } 603 | }, 604 | "@aws-sdk/node-config-provider": { 605 | "version": "3.254.0", 606 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-config-provider/-/node-config-provider-3.254.0.tgz", 607 | "integrity": "sha512-3Bp3Gp2NOY9gab738xf07TysO5iB0Ib9qRNGDlxX8SX8fZDRnxrF2cn+Tjte42wrO54orwhSyuTaIlAqKeii8Q==", 608 | "optional": true, 609 | "requires": { 610 | "@aws-sdk/property-provider": "3.254.0", 611 | "@aws-sdk/shared-ini-file-loader": "3.254.0", 612 | "@aws-sdk/types": "3.254.0", 613 | "tslib": "^2.3.1" 614 | } 615 | }, 616 | "@aws-sdk/node-http-handler": { 617 | "version": "3.254.0", 618 | "resolved": "https://registry.npmjs.org/@aws-sdk/node-http-handler/-/node-http-handler-3.254.0.tgz", 619 | "integrity": "sha512-DX2WJ3pub+3FF9GpoF5doERCn06MxS/UmmbKnIIokWQHjPZVomNh/1P3Cf9Jn9jeIPgh4UOg0uPD8cUm/cwHQw==", 620 | "optional": true, 621 | "requires": { 622 | "@aws-sdk/abort-controller": "3.254.0", 623 | "@aws-sdk/protocol-http": "3.254.0", 624 | "@aws-sdk/querystring-builder": "3.254.0", 625 | "@aws-sdk/types": "3.254.0", 626 | "tslib": "^2.3.1" 627 | } 628 | }, 629 | "@aws-sdk/property-provider": { 630 | "version": "3.254.0", 631 | "resolved": "https://registry.npmjs.org/@aws-sdk/property-provider/-/property-provider-3.254.0.tgz", 632 | "integrity": "sha512-BLZF/LDFjAgv2ZY0vhThU58k++Aw+SK7qNU7XT0D84q5iWlYRKptQEvSSvIkBSI/rZoppOFhK7W80I8kNNbh+Q==", 633 | "optional": true, 634 | "requires": { 635 | "@aws-sdk/types": "3.254.0", 636 | "tslib": "^2.3.1" 637 | } 638 | }, 639 | "@aws-sdk/protocol-http": { 640 | "version": "3.254.0", 641 | "resolved": "https://registry.npmjs.org/@aws-sdk/protocol-http/-/protocol-http-3.254.0.tgz", 642 | "integrity": "sha512-4o/I/qhMUTp70njwWe3ttyRJSAKegnr8l3oVWAf1/q1ZHpcxbRRZEDvrkx4KSunFeXTTGHcff1oyLSRG/cKMsQ==", 643 | "optional": true, 644 | "requires": { 645 | "@aws-sdk/types": "3.254.0", 646 | "tslib": "^2.3.1" 647 | } 648 | }, 649 | "@aws-sdk/querystring-builder": { 650 | "version": "3.254.0", 651 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-builder/-/querystring-builder-3.254.0.tgz", 652 | "integrity": "sha512-Er+pOGTrPxelrzggibduO+eB1ClaU2BhjA8gd0nORS3kqktQggG3tKmRSIilegi9WOa3awCk6CnnuAf0pBrbUA==", 653 | "optional": true, 654 | "requires": { 655 | "@aws-sdk/types": "3.254.0", 656 | "@aws-sdk/util-uri-escape": "3.201.0", 657 | "tslib": "^2.3.1" 658 | } 659 | }, 660 | "@aws-sdk/querystring-parser": { 661 | "version": "3.254.0", 662 | "resolved": "https://registry.npmjs.org/@aws-sdk/querystring-parser/-/querystring-parser-3.254.0.tgz", 663 | "integrity": "sha512-WwRD99dwGo2aIrRjLHUAXaWCZ+3fj88IhIwciWTqrHBS3TQWXllOOQmYo7f+aMBB4Q1K6KdKITNi8L7aUuDv2g==", 664 | "optional": true, 665 | "requires": { 666 | "@aws-sdk/types": "3.254.0", 667 | "tslib": "^2.3.1" 668 | } 669 | }, 670 | "@aws-sdk/service-error-classification": { 671 | "version": "3.254.0", 672 | "resolved": "https://registry.npmjs.org/@aws-sdk/service-error-classification/-/service-error-classification-3.254.0.tgz", 673 | "integrity": "sha512-8GHqMJBBF9yoMBG/Nf9PusUSMFjG8ygps/cSJPlgcG2vbFn8BCdBZVc4ptXqICZUnBB/6lrxy8nCmNUaru48jg==", 674 | "optional": true 675 | }, 676 | "@aws-sdk/shared-ini-file-loader": { 677 | "version": "3.254.0", 678 | "resolved": "https://registry.npmjs.org/@aws-sdk/shared-ini-file-loader/-/shared-ini-file-loader-3.254.0.tgz", 679 | "integrity": "sha512-UH4YTXuG+q004vA+jNrVhrD5XQCIAgpL/eriObJnQpKUVef1mkkEDHZs8+8+ZPsk4p/iBrIJ3lXNf7iDA/BFzw==", 680 | "optional": true, 681 | "requires": { 682 | "@aws-sdk/types": "3.254.0", 683 | "tslib": "^2.3.1" 684 | } 685 | }, 686 | "@aws-sdk/signature-v4": { 687 | "version": "3.254.0", 688 | "resolved": "https://registry.npmjs.org/@aws-sdk/signature-v4/-/signature-v4-3.254.0.tgz", 689 | "integrity": "sha512-9FoEnipA9hAgEp6oqIT3+hobF+JgIXIn5QV8kAB7QGxEDqs/pdpEbGc9qbxi0ghdjvqzOSDir9gNI3w0cL8Aug==", 690 | "optional": true, 691 | "requires": { 692 | "@aws-sdk/is-array-buffer": "3.201.0", 693 | "@aws-sdk/types": "3.254.0", 694 | "@aws-sdk/util-hex-encoding": "3.201.0", 695 | "@aws-sdk/util-middleware": "3.254.0", 696 | "@aws-sdk/util-uri-escape": "3.201.0", 697 | "@aws-sdk/util-utf8": "3.254.0", 698 | "tslib": "^2.3.1" 699 | } 700 | }, 701 | "@aws-sdk/smithy-client": { 702 | "version": "3.254.0", 703 | "resolved": "https://registry.npmjs.org/@aws-sdk/smithy-client/-/smithy-client-3.254.0.tgz", 704 | "integrity": "sha512-SI0jz9JfWi1IaakDX/26xliKTIMJpzwwDoyQPEfZ/L0KKdpr2gNhljA3sR2pZ2EM1oqOaXpMHAunSzv7EBpBWg==", 705 | "optional": true, 706 | "requires": { 707 | "@aws-sdk/middleware-stack": "3.254.0", 708 | "@aws-sdk/types": "3.254.0", 709 | "tslib": "^2.3.1" 710 | } 711 | }, 712 | "@aws-sdk/token-providers": { 713 | "version": "3.256.0", 714 | "resolved": "https://registry.npmjs.org/@aws-sdk/token-providers/-/token-providers-3.256.0.tgz", 715 | "integrity": "sha512-R8FnhJShIJsvmDzTG2y8WrJYijY7cmK2G4VqqhOx34jCuDFM1/Ml8BzN/o2RvHzJH/7qCqfUMTsJEpt+KOuMPA==", 716 | "optional": true, 717 | "requires": { 718 | "@aws-sdk/client-sso-oidc": "3.256.0", 719 | "@aws-sdk/property-provider": "3.254.0", 720 | "@aws-sdk/shared-ini-file-loader": "3.254.0", 721 | "@aws-sdk/types": "3.254.0", 722 | "tslib": "^2.3.1" 723 | } 724 | }, 725 | "@aws-sdk/types": { 726 | "version": "3.254.0", 727 | "resolved": "https://registry.npmjs.org/@aws-sdk/types/-/types-3.254.0.tgz", 728 | "integrity": "sha512-xDEDk6ZAGFO0URPgB6R2mvQANYlojHLjLC9zzOzl07F+uqYS30yZDIg4UFcqPt/x48v7mxlKZpbaZgYI2ZLgGA==", 729 | "optional": true, 730 | "requires": { 731 | "tslib": "^2.3.1" 732 | } 733 | }, 734 | "@aws-sdk/url-parser": { 735 | "version": "3.254.0", 736 | "resolved": "https://registry.npmjs.org/@aws-sdk/url-parser/-/url-parser-3.254.0.tgz", 737 | "integrity": "sha512-Za0JGUa9p5GQ8t2tVtKaRSjLUxrmEdnBlUiZ2zKm86wFxgQnjbMwzD3mvyJ5OaVsXScU5vzc3CXHIXSvS7h7Ng==", 738 | "optional": true, 739 | "requires": { 740 | "@aws-sdk/querystring-parser": "3.254.0", 741 | "@aws-sdk/types": "3.254.0", 742 | "tslib": "^2.3.1" 743 | } 744 | }, 745 | "@aws-sdk/util-base64": { 746 | "version": "3.208.0", 747 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-base64/-/util-base64-3.208.0.tgz", 748 | "integrity": "sha512-PQniZph5A6N7uuEOQi+1hnMz/FSOK/8kMFyFO+4DgA1dZ5pcKcn5wiFwHkcTb/BsgVqQa3Jx0VHNnvhlS8JyTg==", 749 | "optional": true, 750 | "requires": { 751 | "@aws-sdk/util-buffer-from": "3.208.0", 752 | "tslib": "^2.3.1" 753 | } 754 | }, 755 | "@aws-sdk/util-body-length-browser": { 756 | "version": "3.188.0", 757 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-browser/-/util-body-length-browser-3.188.0.tgz", 758 | "integrity": "sha512-8VpnwFWXhnZ/iRSl9mTf+VKOX9wDE8QtN4bj9pBfxwf90H1X7E8T6NkiZD3k+HubYf2J94e7DbeHs7fuCPW5Qg==", 759 | "optional": true, 760 | "requires": { 761 | "tslib": "^2.3.1" 762 | } 763 | }, 764 | "@aws-sdk/util-body-length-node": { 765 | "version": "3.208.0", 766 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-body-length-node/-/util-body-length-node-3.208.0.tgz", 767 | "integrity": "sha512-3zj50e5g7t/MQf53SsuuSf0hEELzMtD8RX8C76f12OSRo2Bca4FLLYHe0TZbxcfQHom8/hOaeZEyTyMogMglqg==", 768 | "optional": true, 769 | "requires": { 770 | "tslib": "^2.3.1" 771 | } 772 | }, 773 | "@aws-sdk/util-buffer-from": { 774 | "version": "3.208.0", 775 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-buffer-from/-/util-buffer-from-3.208.0.tgz", 776 | "integrity": "sha512-7L0XUixNEFcLUGPeBF35enCvB9Xl+K6SQsmbrPk1P3mlV9mguWSDQqbOBwY1Ir0OVbD6H/ZOQU7hI/9RtRI0Zw==", 777 | "optional": true, 778 | "requires": { 779 | "@aws-sdk/is-array-buffer": "3.201.0", 780 | "tslib": "^2.3.1" 781 | } 782 | }, 783 | "@aws-sdk/util-config-provider": { 784 | "version": "3.208.0", 785 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-config-provider/-/util-config-provider-3.208.0.tgz", 786 | "integrity": "sha512-DSRqwrERUsT34ug+anlMBIFooBEGwM8GejC7q00Y/9IPrQy50KnG5PW2NiTjuLKNi7pdEOlwTSEocJE15eDZIg==", 787 | "optional": true, 788 | "requires": { 789 | "tslib": "^2.3.1" 790 | } 791 | }, 792 | "@aws-sdk/util-defaults-mode-browser": { 793 | "version": "3.254.0", 794 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-browser/-/util-defaults-mode-browser-3.254.0.tgz", 795 | "integrity": "sha512-vj/s+BuqNKTHN9bsZ/HY7vpBWbo3F+4c3/ZoKSZa5Jc7jAuGCbx3zWwHdJFDgvbqLvsTBw80Q9d/CDy9pKj/tQ==", 796 | "optional": true, 797 | "requires": { 798 | "@aws-sdk/property-provider": "3.254.0", 799 | "@aws-sdk/types": "3.254.0", 800 | "bowser": "^2.11.0", 801 | "tslib": "^2.3.1" 802 | } 803 | }, 804 | "@aws-sdk/util-defaults-mode-node": { 805 | "version": "3.254.0", 806 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-defaults-mode-node/-/util-defaults-mode-node-3.254.0.tgz", 807 | "integrity": "sha512-gvD2+Uf60c2BgUYv2d6R4dSpO/CbvybqblgF8lKZCsHkDWzfEdPv9nlJgUWM1cuMKQ0hBZ3cL3ilOwVKRVPyiQ==", 808 | "optional": true, 809 | "requires": { 810 | "@aws-sdk/config-resolver": "3.254.0", 811 | "@aws-sdk/credential-provider-imds": "3.254.0", 812 | "@aws-sdk/node-config-provider": "3.254.0", 813 | "@aws-sdk/property-provider": "3.254.0", 814 | "@aws-sdk/types": "3.254.0", 815 | "tslib": "^2.3.1" 816 | } 817 | }, 818 | "@aws-sdk/util-endpoints": { 819 | "version": "3.254.0", 820 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-endpoints/-/util-endpoints-3.254.0.tgz", 821 | "integrity": "sha512-BzBIOnhVrs4RFTpGZErZfAV1VhqWglxn047VYijmCQe8Aejq4mJAaepSwHYar++XC0+pduD5YO8IidW8z/1vQQ==", 822 | "optional": true, 823 | "requires": { 824 | "@aws-sdk/types": "3.254.0", 825 | "tslib": "^2.3.1" 826 | } 827 | }, 828 | "@aws-sdk/util-hex-encoding": { 829 | "version": "3.201.0", 830 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-hex-encoding/-/util-hex-encoding-3.201.0.tgz", 831 | "integrity": "sha512-7t1vR1pVxKx0motd3X9rI3m/xNp78p3sHtP5yo4NP4ARpxyJ0fokBomY8ScaH2D/B+U5o9ARxldJUdMqyBlJcA==", 832 | "optional": true, 833 | "requires": { 834 | "tslib": "^2.3.1" 835 | } 836 | }, 837 | "@aws-sdk/util-locate-window": { 838 | "version": "3.208.0", 839 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-locate-window/-/util-locate-window-3.208.0.tgz", 840 | "integrity": "sha512-iua1A2+P7JJEDHVgvXrRJSvsnzG7stYSGQnBVphIUlemwl6nN5D+QrgbjECtrbxRz8asYFHSzhdhECqN+tFiBg==", 841 | "optional": true, 842 | "requires": { 843 | "tslib": "^2.3.1" 844 | } 845 | }, 846 | "@aws-sdk/util-middleware": { 847 | "version": "3.254.0", 848 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-middleware/-/util-middleware-3.254.0.tgz", 849 | "integrity": "sha512-gn7vInNTRBo2QatOB+uU99JwV53wf/zlTUnUK0qOuebtSDLMdiO+msiMi2ctz9vMIrtc2XMXNQro1aE0aUPy4w==", 850 | "optional": true, 851 | "requires": { 852 | "tslib": "^2.3.1" 853 | } 854 | }, 855 | "@aws-sdk/util-retry": { 856 | "version": "3.254.0", 857 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-retry/-/util-retry-3.254.0.tgz", 858 | "integrity": "sha512-IVA4wAOJpVssEIbJmeq1fdDYvrkOqYFK9Pz4tERmMz33003fyY92dU468Lulw8MnsSALYiwWUoWSFg9L5RCTug==", 859 | "optional": true, 860 | "requires": { 861 | "@aws-sdk/service-error-classification": "3.254.0", 862 | "tslib": "^2.3.1" 863 | } 864 | }, 865 | "@aws-sdk/util-uri-escape": { 866 | "version": "3.201.0", 867 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-uri-escape/-/util-uri-escape-3.201.0.tgz", 868 | "integrity": "sha512-TeTWbGx4LU2c5rx0obHeDFeO9HvwYwQtMh1yniBz00pQb6Qt6YVOETVQikRZ+XRQwEyCg/dA375UplIpiy54mA==", 869 | "optional": true, 870 | "requires": { 871 | "tslib": "^2.3.1" 872 | } 873 | }, 874 | "@aws-sdk/util-user-agent-browser": { 875 | "version": "3.254.0", 876 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-browser/-/util-user-agent-browser-3.254.0.tgz", 877 | "integrity": "sha512-2HvwH8l7ln4qTDsU3rgH9NvSSo5qhX+2Lenb6XvNnIMkL4r/tPhNIaGKtoQRfpzLH378Mm9XEQnJM5UXFRWuTA==", 878 | "optional": true, 879 | "requires": { 880 | "@aws-sdk/types": "3.254.0", 881 | "bowser": "^2.11.0", 882 | "tslib": "^2.3.1" 883 | } 884 | }, 885 | "@aws-sdk/util-user-agent-node": { 886 | "version": "3.254.0", 887 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-user-agent-node/-/util-user-agent-node-3.254.0.tgz", 888 | "integrity": "sha512-6nc9bmRP+2JqbBJ5oRZZRU8l35X3VcWF5j8XvmamWjIABsanc6Gv6NV4qAa3imPjIyWNiShZn/YkTBYs1exsdg==", 889 | "optional": true, 890 | "requires": { 891 | "@aws-sdk/node-config-provider": "3.254.0", 892 | "@aws-sdk/types": "3.254.0", 893 | "tslib": "^2.3.1" 894 | } 895 | }, 896 | "@aws-sdk/util-utf8": { 897 | "version": "3.254.0", 898 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8/-/util-utf8-3.254.0.tgz", 899 | "integrity": "sha512-14Kso/eIt5/qfIBmhEL9L1IfyUqswjSTqO2mY7KOzUZ9SZbwn3rpxmtkhmATkRjD7XIlLKaxBkI7tU9Zjzj8Kw==", 900 | "optional": true, 901 | "requires": { 902 | "@aws-sdk/util-buffer-from": "3.208.0", 903 | "tslib": "^2.3.1" 904 | } 905 | }, 906 | "@aws-sdk/util-utf8-browser": { 907 | "version": "3.188.0", 908 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-browser/-/util-utf8-browser-3.188.0.tgz", 909 | "integrity": "sha512-jt627x0+jE+Ydr9NwkFstg3cUvgWh56qdaqAMDsqgRlKD21md/6G226z/Qxl7lb1VEW2LlmCx43ai/37Qwcj2Q==", 910 | "optional": true, 911 | "requires": { 912 | "tslib": "^2.3.1" 913 | } 914 | }, 915 | "@aws-sdk/util-utf8-node": { 916 | "version": "3.208.0", 917 | "resolved": "https://registry.npmjs.org/@aws-sdk/util-utf8-node/-/util-utf8-node-3.208.0.tgz", 918 | "integrity": "sha512-jKY87Acv0yWBdFxx6bveagy5FYjz+dtV8IPT7ay1E2WPWH1czoIdMAkc8tSInK31T6CRnHWkLZ1qYwCbgRfERQ==", 919 | "optional": true, 920 | "requires": { 921 | "@aws-sdk/util-buffer-from": "3.208.0", 922 | "tslib": "^2.3.1" 923 | } 924 | }, 925 | "@types/node": { 926 | "version": "18.11.18", 927 | "resolved": "https://registry.npmjs.org/@types/node/-/node-18.11.18.tgz", 928 | "integrity": "sha512-DHQpWGjyQKSHj3ebjFI/wRKcqQcdR+MoFBygntYOZytCqNfkd2ZC4ARDJ2DQqhjH5p85Nnd3jhUJIXrszFX/JA==" 929 | }, 930 | "@types/webidl-conversions": { 931 | "version": "7.0.0", 932 | "resolved": "https://registry.npmjs.org/@types/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 933 | "integrity": "sha512-xTE1E+YF4aWPJJeUzaZI5DRntlkY3+BCVJi0axFptnjGmAoWxkyREIh/XMrfxVLejwQxMCfDXdICo0VLxThrog==" 934 | }, 935 | "@types/whatwg-url": { 936 | "version": "8.2.2", 937 | "resolved": "https://registry.npmjs.org/@types/whatwg-url/-/whatwg-url-8.2.2.tgz", 938 | "integrity": "sha512-FtQu10RWgn3D9U4aazdwIE2yzphmTJREDqNdODHrbrZmmMqI0vMheC/6NE/J1Yveaj8H+ela+YwWTjq5PGmuhA==", 939 | "requires": { 940 | "@types/node": "*", 941 | "@types/webidl-conversions": "*" 942 | } 943 | }, 944 | "abbrev": { 945 | "version": "1.1.1", 946 | "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", 947 | "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==" 948 | }, 949 | "accepts": { 950 | "version": "1.3.8", 951 | "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", 952 | "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", 953 | "requires": { 954 | "mime-types": "~2.1.34", 955 | "negotiator": "0.6.3" 956 | } 957 | }, 958 | "anymatch": { 959 | "version": "3.1.3", 960 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", 961 | "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", 962 | "requires": { 963 | "normalize-path": "^3.0.0", 964 | "picomatch": "^2.0.4" 965 | } 966 | }, 967 | "array-flatten": { 968 | "version": "1.1.1", 969 | "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", 970 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==" 971 | }, 972 | "balanced-match": { 973 | "version": "1.0.2", 974 | "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", 975 | "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" 976 | }, 977 | "base64-js": { 978 | "version": "1.5.1", 979 | "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", 980 | "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==" 981 | }, 982 | "binary-extensions": { 983 | "version": "2.2.0", 984 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 985 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 986 | }, 987 | "body-parser": { 988 | "version": "1.20.1", 989 | "resolved": "https://registry.npmjs.org/body-parser/-/body-parser-1.20.1.tgz", 990 | "integrity": "sha512-jWi7abTbYwajOytWCQc37VulmWiRae5RyTpaCyDcS5/lMdtwSz5lOpDE67srw/HYe35f1z3fDQw+3txg7gNtWw==", 991 | "requires": { 992 | "bytes": "3.1.2", 993 | "content-type": "~1.0.4", 994 | "debug": "2.6.9", 995 | "depd": "2.0.0", 996 | "destroy": "1.2.0", 997 | "http-errors": "2.0.0", 998 | "iconv-lite": "0.4.24", 999 | "on-finished": "2.4.1", 1000 | "qs": "6.11.0", 1001 | "raw-body": "2.5.1", 1002 | "type-is": "~1.6.18", 1003 | "unpipe": "1.0.0" 1004 | } 1005 | }, 1006 | "bowser": { 1007 | "version": "2.11.0", 1008 | "resolved": "https://registry.npmjs.org/bowser/-/bowser-2.11.0.tgz", 1009 | "integrity": "sha512-AlcaJBi/pqqJBIQ8U9Mcpc9i8Aqxn88Skv5d+xBX006BY5u8N3mGLHa5Lgppa7L/HfwgwLgZ6NYs+Ag6uUmJRA==", 1010 | "optional": true 1011 | }, 1012 | "brace-expansion": { 1013 | "version": "1.1.11", 1014 | "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", 1015 | "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", 1016 | "requires": { 1017 | "balanced-match": "^1.0.0", 1018 | "concat-map": "0.0.1" 1019 | } 1020 | }, 1021 | "braces": { 1022 | "version": "3.0.2", 1023 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 1024 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 1025 | "requires": { 1026 | "fill-range": "^7.0.1" 1027 | } 1028 | }, 1029 | "bson": { 1030 | "version": "4.7.2", 1031 | "resolved": "https://registry.npmjs.org/bson/-/bson-4.7.2.tgz", 1032 | "integrity": "sha512-Ry9wCtIZ5kGqkJoi6aD8KjxFZEx78guTQDnpXWiNthsxzrxAK/i8E6pCHAIZTbaEFWcOCvbecMukfK7XUvyLpQ==", 1033 | "requires": { 1034 | "buffer": "^5.6.0" 1035 | } 1036 | }, 1037 | "buffer": { 1038 | "version": "5.7.1", 1039 | "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", 1040 | "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", 1041 | "requires": { 1042 | "base64-js": "^1.3.1", 1043 | "ieee754": "^1.1.13" 1044 | } 1045 | }, 1046 | "bytes": { 1047 | "version": "3.1.2", 1048 | "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", 1049 | "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==" 1050 | }, 1051 | "call-bind": { 1052 | "version": "1.0.2", 1053 | "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", 1054 | "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", 1055 | "requires": { 1056 | "function-bind": "^1.1.1", 1057 | "get-intrinsic": "^1.0.2" 1058 | } 1059 | }, 1060 | "chokidar": { 1061 | "version": "3.5.3", 1062 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 1063 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 1064 | "requires": { 1065 | "anymatch": "~3.1.2", 1066 | "braces": "~3.0.2", 1067 | "fsevents": "~2.3.2", 1068 | "glob-parent": "~5.1.2", 1069 | "is-binary-path": "~2.1.0", 1070 | "is-glob": "~4.0.1", 1071 | "normalize-path": "~3.0.0", 1072 | "readdirp": "~3.6.0" 1073 | } 1074 | }, 1075 | "concat-map": { 1076 | "version": "0.0.1", 1077 | "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", 1078 | "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" 1079 | }, 1080 | "content-disposition": { 1081 | "version": "0.5.4", 1082 | "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", 1083 | "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", 1084 | "requires": { 1085 | "safe-buffer": "5.2.1" 1086 | } 1087 | }, 1088 | "content-type": { 1089 | "version": "1.0.4", 1090 | "resolved": "https://registry.npmjs.org/content-type/-/content-type-1.0.4.tgz", 1091 | "integrity": "sha512-hIP3EEPs8tB9AT1L+NUqtwOAps4mk2Zob89MWXMHjHWg9milF/j4osnnQLXBCBFBk/tvIG/tUc9mOUJiPBhPXA==" 1092 | }, 1093 | "cookie": { 1094 | "version": "0.5.0", 1095 | "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", 1096 | "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==" 1097 | }, 1098 | "cookie-signature": { 1099 | "version": "1.0.6", 1100 | "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", 1101 | "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==" 1102 | }, 1103 | "debug": { 1104 | "version": "2.6.9", 1105 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", 1106 | "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", 1107 | "requires": { 1108 | "ms": "2.0.0" 1109 | } 1110 | }, 1111 | "depd": { 1112 | "version": "2.0.0", 1113 | "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", 1114 | "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==" 1115 | }, 1116 | "destroy": { 1117 | "version": "1.2.0", 1118 | "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", 1119 | "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==" 1120 | }, 1121 | "dotenv": { 1122 | "version": "16.0.3", 1123 | "resolved": "https://registry.npmjs.org/dotenv/-/dotenv-16.0.3.tgz", 1124 | "integrity": "sha512-7GO6HghkA5fYG9TYnNxi14/7K9f5occMlp3zXAuSxn7CKCxt9xbNWG7yF8hTCSUchlfWSe3uLmlPfigevRItzQ==" 1125 | }, 1126 | "ee-first": { 1127 | "version": "1.1.1", 1128 | "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", 1129 | "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" 1130 | }, 1131 | "encodeurl": { 1132 | "version": "1.0.2", 1133 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", 1134 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==" 1135 | }, 1136 | "escape-html": { 1137 | "version": "1.0.3", 1138 | "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", 1139 | "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" 1140 | }, 1141 | "etag": { 1142 | "version": "1.8.1", 1143 | "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", 1144 | "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==" 1145 | }, 1146 | "express": { 1147 | "version": "4.18.2", 1148 | "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", 1149 | "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", 1150 | "requires": { 1151 | "accepts": "~1.3.8", 1152 | "array-flatten": "1.1.1", 1153 | "body-parser": "1.20.1", 1154 | "content-disposition": "0.5.4", 1155 | "content-type": "~1.0.4", 1156 | "cookie": "0.5.0", 1157 | "cookie-signature": "1.0.6", 1158 | "debug": "2.6.9", 1159 | "depd": "2.0.0", 1160 | "encodeurl": "~1.0.2", 1161 | "escape-html": "~1.0.3", 1162 | "etag": "~1.8.1", 1163 | "finalhandler": "1.2.0", 1164 | "fresh": "0.5.2", 1165 | "http-errors": "2.0.0", 1166 | "merge-descriptors": "1.0.1", 1167 | "methods": "~1.1.2", 1168 | "on-finished": "2.4.1", 1169 | "parseurl": "~1.3.3", 1170 | "path-to-regexp": "0.1.7", 1171 | "proxy-addr": "~2.0.7", 1172 | "qs": "6.11.0", 1173 | "range-parser": "~1.2.1", 1174 | "safe-buffer": "5.2.1", 1175 | "send": "0.18.0", 1176 | "serve-static": "1.15.0", 1177 | "setprototypeof": "1.2.0", 1178 | "statuses": "2.0.1", 1179 | "type-is": "~1.6.18", 1180 | "utils-merge": "1.0.1", 1181 | "vary": "~1.1.2" 1182 | } 1183 | }, 1184 | "fast-xml-parser": { 1185 | "version": "4.0.11", 1186 | "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.0.11.tgz", 1187 | "integrity": "sha512-4aUg3aNRR/WjQAcpceODG1C3x3lFANXRo8+1biqfieHmg9pyMt7qB4lQV/Ta6sJCTbA5vfD8fnA8S54JATiFUA==", 1188 | "optional": true, 1189 | "requires": { 1190 | "strnum": "^1.0.5" 1191 | } 1192 | }, 1193 | "fill-range": { 1194 | "version": "7.0.1", 1195 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 1196 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 1197 | "requires": { 1198 | "to-regex-range": "^5.0.1" 1199 | } 1200 | }, 1201 | "finalhandler": { 1202 | "version": "1.2.0", 1203 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", 1204 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", 1205 | "requires": { 1206 | "debug": "2.6.9", 1207 | "encodeurl": "~1.0.2", 1208 | "escape-html": "~1.0.3", 1209 | "on-finished": "2.4.1", 1210 | "parseurl": "~1.3.3", 1211 | "statuses": "2.0.1", 1212 | "unpipe": "~1.0.0" 1213 | } 1214 | }, 1215 | "forwarded": { 1216 | "version": "0.2.0", 1217 | "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", 1218 | "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==" 1219 | }, 1220 | "fresh": { 1221 | "version": "0.5.2", 1222 | "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", 1223 | "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==" 1224 | }, 1225 | "fsevents": { 1226 | "version": "2.3.2", 1227 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 1228 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 1229 | "optional": true 1230 | }, 1231 | "function-bind": { 1232 | "version": "1.1.1", 1233 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 1234 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 1235 | }, 1236 | "get-intrinsic": { 1237 | "version": "1.2.0", 1238 | "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.0.tgz", 1239 | "integrity": "sha512-L049y6nFOuom5wGyRc3/gdTLO94dySVKRACj1RmJZBQXlbTMhtNIgkWkUHq+jYmZvKf14EW1EoJnnjbmoHij0Q==", 1240 | "requires": { 1241 | "function-bind": "^1.1.1", 1242 | "has": "^1.0.3", 1243 | "has-symbols": "^1.0.3" 1244 | } 1245 | }, 1246 | "glob-parent": { 1247 | "version": "5.1.2", 1248 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 1249 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 1250 | "requires": { 1251 | "is-glob": "^4.0.1" 1252 | } 1253 | }, 1254 | "has": { 1255 | "version": "1.0.3", 1256 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 1257 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 1258 | "requires": { 1259 | "function-bind": "^1.1.1" 1260 | } 1261 | }, 1262 | "has-flag": { 1263 | "version": "3.0.0", 1264 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 1265 | "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" 1266 | }, 1267 | "has-symbols": { 1268 | "version": "1.0.3", 1269 | "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", 1270 | "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" 1271 | }, 1272 | "http-errors": { 1273 | "version": "2.0.0", 1274 | "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", 1275 | "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", 1276 | "requires": { 1277 | "depd": "2.0.0", 1278 | "inherits": "2.0.4", 1279 | "setprototypeof": "1.2.0", 1280 | "statuses": "2.0.1", 1281 | "toidentifier": "1.0.1" 1282 | } 1283 | }, 1284 | "iconv-lite": { 1285 | "version": "0.4.24", 1286 | "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", 1287 | "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", 1288 | "requires": { 1289 | "safer-buffer": ">= 2.1.2 < 3" 1290 | } 1291 | }, 1292 | "ieee754": { 1293 | "version": "1.2.1", 1294 | "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", 1295 | "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==" 1296 | }, 1297 | "ignore-by-default": { 1298 | "version": "1.0.1", 1299 | "resolved": "https://registry.npmjs.org/ignore-by-default/-/ignore-by-default-1.0.1.tgz", 1300 | "integrity": "sha512-Ius2VYcGNk7T90CppJqcIkS5ooHUZyIQK+ClZfMfMNFEF9VSE73Fq+906u/CWu92x4gzZMWOwfFYckPObzdEbA==" 1301 | }, 1302 | "inherits": { 1303 | "version": "2.0.4", 1304 | "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", 1305 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" 1306 | }, 1307 | "ip": { 1308 | "version": "2.0.0", 1309 | "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", 1310 | "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==" 1311 | }, 1312 | "ipaddr.js": { 1313 | "version": "1.9.1", 1314 | "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", 1315 | "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==" 1316 | }, 1317 | "is-binary-path": { 1318 | "version": "2.1.0", 1319 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 1320 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 1321 | "requires": { 1322 | "binary-extensions": "^2.0.0" 1323 | } 1324 | }, 1325 | "is-extglob": { 1326 | "version": "2.1.1", 1327 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 1328 | "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" 1329 | }, 1330 | "is-glob": { 1331 | "version": "4.0.3", 1332 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1333 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1334 | "requires": { 1335 | "is-extglob": "^2.1.1" 1336 | } 1337 | }, 1338 | "is-number": { 1339 | "version": "7.0.0", 1340 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1341 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1342 | }, 1343 | "kareem": { 1344 | "version": "2.5.1", 1345 | "resolved": "https://registry.npmjs.org/kareem/-/kareem-2.5.1.tgz", 1346 | "integrity": "sha512-7jFxRVm+jD+rkq3kY0iZDJfsO2/t4BBPeEb2qKn2lR/9KhuksYk5hxzfRYWMPV8P/x2d0kHD306YyWLzjjH+uA==" 1347 | }, 1348 | "media-typer": { 1349 | "version": "0.3.0", 1350 | "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", 1351 | "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==" 1352 | }, 1353 | "memory-pager": { 1354 | "version": "1.5.0", 1355 | "resolved": "https://registry.npmjs.org/memory-pager/-/memory-pager-1.5.0.tgz", 1356 | "integrity": "sha512-ZS4Bp4r/Zoeq6+NLJpP+0Zzm0pR8whtGPf1XExKLJBAczGMnSi3It14OiNCStjQjM6NU1okjQGSxgEZN8eBYKg==", 1357 | "optional": true 1358 | }, 1359 | "merge-descriptors": { 1360 | "version": "1.0.1", 1361 | "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", 1362 | "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==" 1363 | }, 1364 | "methods": { 1365 | "version": "1.1.2", 1366 | "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", 1367 | "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==" 1368 | }, 1369 | "mime": { 1370 | "version": "1.6.0", 1371 | "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", 1372 | "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" 1373 | }, 1374 | "mime-db": { 1375 | "version": "1.52.0", 1376 | "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", 1377 | "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" 1378 | }, 1379 | "mime-types": { 1380 | "version": "2.1.35", 1381 | "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", 1382 | "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", 1383 | "requires": { 1384 | "mime-db": "1.52.0" 1385 | } 1386 | }, 1387 | "minimatch": { 1388 | "version": "3.1.2", 1389 | "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", 1390 | "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", 1391 | "requires": { 1392 | "brace-expansion": "^1.1.7" 1393 | } 1394 | }, 1395 | "mongodb": { 1396 | "version": "4.12.1", 1397 | "resolved": "https://registry.npmjs.org/mongodb/-/mongodb-4.12.1.tgz", 1398 | "integrity": "sha512-koT87tecZmxPKtxRQD8hCKfn+ockEL2xBiUvx3isQGI6mFmagWt4f4AyCE9J4sKepnLhMacoCTQQA6SLAI2L6w==", 1399 | "requires": { 1400 | "@aws-sdk/credential-providers": "^3.186.0", 1401 | "bson": "^4.7.0", 1402 | "mongodb-connection-string-url": "^2.5.4", 1403 | "saslprep": "^1.0.3", 1404 | "socks": "^2.7.1" 1405 | } 1406 | }, 1407 | "mongodb-connection-string-url": { 1408 | "version": "2.6.0", 1409 | "resolved": "https://registry.npmjs.org/mongodb-connection-string-url/-/mongodb-connection-string-url-2.6.0.tgz", 1410 | "integrity": "sha512-WvTZlI9ab0QYtTYnuMLgobULWhokRjtC7db9LtcVfJ+Hsnyr5eo6ZtNAt3Ly24XZScGMelOcGtm7lSn0332tPQ==", 1411 | "requires": { 1412 | "@types/whatwg-url": "^8.2.1", 1413 | "whatwg-url": "^11.0.0" 1414 | } 1415 | }, 1416 | "mongoose": { 1417 | "version": "6.8.4", 1418 | "resolved": "https://registry.npmjs.org/mongoose/-/mongoose-6.8.4.tgz", 1419 | "integrity": "sha512-19Jk2hbSAPcM4u6ErW0UPwaSO2YfP/cXfBS9YEiNgNzZfXd+jkyemqJ+t2aflaicXeU4VdTP33pZYxqjk2hUYw==", 1420 | "requires": { 1421 | "bson": "^4.7.0", 1422 | "kareem": "2.5.1", 1423 | "mongodb": "4.12.1", 1424 | "mpath": "0.9.0", 1425 | "mquery": "4.0.3", 1426 | "ms": "2.1.3", 1427 | "sift": "16.0.1" 1428 | }, 1429 | "dependencies": { 1430 | "ms": { 1431 | "version": "2.1.3", 1432 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1433 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1434 | } 1435 | } 1436 | }, 1437 | "mpath": { 1438 | "version": "0.9.0", 1439 | "resolved": "https://registry.npmjs.org/mpath/-/mpath-0.9.0.tgz", 1440 | "integrity": "sha512-ikJRQTk8hw5DEoFVxHG1Gn9T/xcjtdnOKIU1JTmGjZZlg9LST2mBLmcX3/ICIbgJydT2GOc15RnNy5mHmzfSew==" 1441 | }, 1442 | "mquery": { 1443 | "version": "4.0.3", 1444 | "resolved": "https://registry.npmjs.org/mquery/-/mquery-4.0.3.tgz", 1445 | "integrity": "sha512-J5heI+P08I6VJ2Ky3+33IpCdAvlYGTSUjwTPxkAr8i8EoduPMBX2OY/wa3IKZIQl7MU4SbFk8ndgSKyB/cl1zA==", 1446 | "requires": { 1447 | "debug": "4.x" 1448 | }, 1449 | "dependencies": { 1450 | "debug": { 1451 | "version": "4.3.4", 1452 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 1453 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 1454 | "requires": { 1455 | "ms": "2.1.2" 1456 | } 1457 | }, 1458 | "ms": { 1459 | "version": "2.1.2", 1460 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1461 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" 1462 | } 1463 | } 1464 | }, 1465 | "ms": { 1466 | "version": "2.0.0", 1467 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", 1468 | "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" 1469 | }, 1470 | "negotiator": { 1471 | "version": "0.6.3", 1472 | "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", 1473 | "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==" 1474 | }, 1475 | "nodemon": { 1476 | "version": "2.0.20", 1477 | "resolved": "https://registry.npmjs.org/nodemon/-/nodemon-2.0.20.tgz", 1478 | "integrity": "sha512-Km2mWHKKY5GzRg6i1j5OxOHQtuvVsgskLfigG25yTtbyfRGn/GNvIbRyOf1PSCKJ2aT/58TiuUsuOU5UToVViw==", 1479 | "requires": { 1480 | "chokidar": "^3.5.2", 1481 | "debug": "^3.2.7", 1482 | "ignore-by-default": "^1.0.1", 1483 | "minimatch": "^3.1.2", 1484 | "pstree.remy": "^1.1.8", 1485 | "semver": "^5.7.1", 1486 | "simple-update-notifier": "^1.0.7", 1487 | "supports-color": "^5.5.0", 1488 | "touch": "^3.1.0", 1489 | "undefsafe": "^2.0.5" 1490 | }, 1491 | "dependencies": { 1492 | "debug": { 1493 | "version": "3.2.7", 1494 | "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", 1495 | "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", 1496 | "requires": { 1497 | "ms": "^2.1.1" 1498 | } 1499 | }, 1500 | "ms": { 1501 | "version": "2.1.3", 1502 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1503 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1504 | } 1505 | } 1506 | }, 1507 | "nopt": { 1508 | "version": "1.0.10", 1509 | "resolved": "https://registry.npmjs.org/nopt/-/nopt-1.0.10.tgz", 1510 | "integrity": "sha512-NWmpvLSqUrgrAC9HCuxEvb+PSloHpqVu+FqcO4eeF2h5qYRhA7ev6KvelyQAKtegUbC6RypJnlEOhd8vloNKYg==", 1511 | "requires": { 1512 | "abbrev": "1" 1513 | } 1514 | }, 1515 | "normalize-path": { 1516 | "version": "3.0.0", 1517 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1518 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1519 | }, 1520 | "object-inspect": { 1521 | "version": "1.12.3", 1522 | "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", 1523 | "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==" 1524 | }, 1525 | "on-finished": { 1526 | "version": "2.4.1", 1527 | "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", 1528 | "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", 1529 | "requires": { 1530 | "ee-first": "1.1.1" 1531 | } 1532 | }, 1533 | "parseurl": { 1534 | "version": "1.3.3", 1535 | "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", 1536 | "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" 1537 | }, 1538 | "path-to-regexp": { 1539 | "version": "0.1.7", 1540 | "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", 1541 | "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==" 1542 | }, 1543 | "picomatch": { 1544 | "version": "2.3.1", 1545 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1546 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1547 | }, 1548 | "proxy-addr": { 1549 | "version": "2.0.7", 1550 | "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", 1551 | "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", 1552 | "requires": { 1553 | "forwarded": "0.2.0", 1554 | "ipaddr.js": "1.9.1" 1555 | } 1556 | }, 1557 | "pstree.remy": { 1558 | "version": "1.1.8", 1559 | "resolved": "https://registry.npmjs.org/pstree.remy/-/pstree.remy-1.1.8.tgz", 1560 | "integrity": "sha512-77DZwxQmxKnu3aR542U+X8FypNzbfJ+C5XQDk3uWjWxn6151aIMGthWYRXTqT1E5oJvg+ljaa2OJi+VfvCOQ8w==" 1561 | }, 1562 | "punycode": { 1563 | "version": "2.3.0", 1564 | "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.0.tgz", 1565 | "integrity": "sha512-rRV+zQD8tVFys26lAGR9WUuS4iUAngJScM+ZRSKtvl5tKeZ2t5bvdNFdNHBW9FWR4guGHlgmsZ1G7BSm2wTbuA==" 1566 | }, 1567 | "qs": { 1568 | "version": "6.11.0", 1569 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", 1570 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", 1571 | "requires": { 1572 | "side-channel": "^1.0.4" 1573 | } 1574 | }, 1575 | "range-parser": { 1576 | "version": "1.2.1", 1577 | "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", 1578 | "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" 1579 | }, 1580 | "raw-body": { 1581 | "version": "2.5.1", 1582 | "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", 1583 | "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", 1584 | "requires": { 1585 | "bytes": "3.1.2", 1586 | "http-errors": "2.0.0", 1587 | "iconv-lite": "0.4.24", 1588 | "unpipe": "1.0.0" 1589 | } 1590 | }, 1591 | "readdirp": { 1592 | "version": "3.6.0", 1593 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1594 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1595 | "requires": { 1596 | "picomatch": "^2.2.1" 1597 | } 1598 | }, 1599 | "safe-buffer": { 1600 | "version": "5.2.1", 1601 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", 1602 | "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==" 1603 | }, 1604 | "safer-buffer": { 1605 | "version": "2.1.2", 1606 | "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", 1607 | "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" 1608 | }, 1609 | "saslprep": { 1610 | "version": "1.0.3", 1611 | "resolved": "https://registry.npmjs.org/saslprep/-/saslprep-1.0.3.tgz", 1612 | "integrity": "sha512-/MY/PEMbk2SuY5sScONwhUDsV2p77Znkb/q3nSVstq/yQzYJOH/Azh29p9oJLsl3LnQwSvZDKagDGBsBwSooag==", 1613 | "optional": true, 1614 | "requires": { 1615 | "sparse-bitfield": "^3.0.3" 1616 | } 1617 | }, 1618 | "semver": { 1619 | "version": "5.7.1", 1620 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", 1621 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" 1622 | }, 1623 | "send": { 1624 | "version": "0.18.0", 1625 | "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", 1626 | "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", 1627 | "requires": { 1628 | "debug": "2.6.9", 1629 | "depd": "2.0.0", 1630 | "destroy": "1.2.0", 1631 | "encodeurl": "~1.0.2", 1632 | "escape-html": "~1.0.3", 1633 | "etag": "~1.8.1", 1634 | "fresh": "0.5.2", 1635 | "http-errors": "2.0.0", 1636 | "mime": "1.6.0", 1637 | "ms": "2.1.3", 1638 | "on-finished": "2.4.1", 1639 | "range-parser": "~1.2.1", 1640 | "statuses": "2.0.1" 1641 | }, 1642 | "dependencies": { 1643 | "ms": { 1644 | "version": "2.1.3", 1645 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", 1646 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" 1647 | } 1648 | } 1649 | }, 1650 | "serve-static": { 1651 | "version": "1.15.0", 1652 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", 1653 | "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", 1654 | "requires": { 1655 | "encodeurl": "~1.0.2", 1656 | "escape-html": "~1.0.3", 1657 | "parseurl": "~1.3.3", 1658 | "send": "0.18.0" 1659 | } 1660 | }, 1661 | "setprototypeof": { 1662 | "version": "1.2.0", 1663 | "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", 1664 | "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" 1665 | }, 1666 | "side-channel": { 1667 | "version": "1.0.4", 1668 | "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", 1669 | "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", 1670 | "requires": { 1671 | "call-bind": "^1.0.0", 1672 | "get-intrinsic": "^1.0.2", 1673 | "object-inspect": "^1.9.0" 1674 | } 1675 | }, 1676 | "sift": { 1677 | "version": "16.0.1", 1678 | "resolved": "https://registry.npmjs.org/sift/-/sift-16.0.1.tgz", 1679 | "integrity": "sha512-Wv6BjQ5zbhW7VFefWusVP33T/EM0vYikCaQ2qR8yULbsilAT8/wQaXvuQ3ptGLpoKx+lihJE3y2UTgKDyyNHZQ==" 1680 | }, 1681 | "simple-update-notifier": { 1682 | "version": "1.1.0", 1683 | "resolved": "https://registry.npmjs.org/simple-update-notifier/-/simple-update-notifier-1.1.0.tgz", 1684 | "integrity": "sha512-VpsrsJSUcJEseSbMHkrsrAVSdvVS5I96Qo1QAQ4FxQ9wXFcB+pjj7FB7/us9+GcgfW4ziHtYMc1J0PLczb55mg==", 1685 | "requires": { 1686 | "semver": "~7.0.0" 1687 | }, 1688 | "dependencies": { 1689 | "semver": { 1690 | "version": "7.0.0", 1691 | "resolved": "https://registry.npmjs.org/semver/-/semver-7.0.0.tgz", 1692 | "integrity": "sha512-+GB6zVA9LWh6zovYQLALHwv5rb2PHGlJi3lfiqIHxR0uuwCgefcOJc59v9fv1w8GbStwxuuqqAjI9NMAOOgq1A==" 1693 | } 1694 | } 1695 | }, 1696 | "smart-buffer": { 1697 | "version": "4.2.0", 1698 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", 1699 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==" 1700 | }, 1701 | "socks": { 1702 | "version": "2.7.1", 1703 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", 1704 | "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", 1705 | "requires": { 1706 | "ip": "^2.0.0", 1707 | "smart-buffer": "^4.2.0" 1708 | } 1709 | }, 1710 | "sparse-bitfield": { 1711 | "version": "3.0.3", 1712 | "resolved": "https://registry.npmjs.org/sparse-bitfield/-/sparse-bitfield-3.0.3.tgz", 1713 | "integrity": "sha512-kvzhi7vqKTfkh0PZU+2D2PIllw2ymqJKujUcyPMd9Y75Nv4nPbGJZXNhxsgdQab2BmlDct1YnfQCguEvHr7VsQ==", 1714 | "optional": true, 1715 | "requires": { 1716 | "memory-pager": "^1.0.2" 1717 | } 1718 | }, 1719 | "statuses": { 1720 | "version": "2.0.1", 1721 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", 1722 | "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==" 1723 | }, 1724 | "strnum": { 1725 | "version": "1.0.5", 1726 | "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", 1727 | "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", 1728 | "optional": true 1729 | }, 1730 | "supports-color": { 1731 | "version": "5.5.0", 1732 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1733 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1734 | "requires": { 1735 | "has-flag": "^3.0.0" 1736 | } 1737 | }, 1738 | "to-regex-range": { 1739 | "version": "5.0.1", 1740 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1741 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1742 | "requires": { 1743 | "is-number": "^7.0.0" 1744 | } 1745 | }, 1746 | "toidentifier": { 1747 | "version": "1.0.1", 1748 | "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", 1749 | "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" 1750 | }, 1751 | "touch": { 1752 | "version": "3.1.0", 1753 | "resolved": "https://registry.npmjs.org/touch/-/touch-3.1.0.tgz", 1754 | "integrity": "sha512-WBx8Uy5TLtOSRtIq+M03/sKDrXCLHxwDcquSP2c43Le03/9serjQBIztjRz6FkJez9D/hleyAXTBGLwwZUw9lA==", 1755 | "requires": { 1756 | "nopt": "~1.0.10" 1757 | } 1758 | }, 1759 | "tr46": { 1760 | "version": "3.0.0", 1761 | "resolved": "https://registry.npmjs.org/tr46/-/tr46-3.0.0.tgz", 1762 | "integrity": "sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==", 1763 | "requires": { 1764 | "punycode": "^2.1.1" 1765 | } 1766 | }, 1767 | "tslib": { 1768 | "version": "2.4.1", 1769 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", 1770 | "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", 1771 | "optional": true 1772 | }, 1773 | "type-is": { 1774 | "version": "1.6.18", 1775 | "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", 1776 | "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", 1777 | "requires": { 1778 | "media-typer": "0.3.0", 1779 | "mime-types": "~2.1.24" 1780 | } 1781 | }, 1782 | "undefsafe": { 1783 | "version": "2.0.5", 1784 | "resolved": "https://registry.npmjs.org/undefsafe/-/undefsafe-2.0.5.tgz", 1785 | "integrity": "sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==" 1786 | }, 1787 | "unpipe": { 1788 | "version": "1.0.0", 1789 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", 1790 | "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==" 1791 | }, 1792 | "utils-merge": { 1793 | "version": "1.0.1", 1794 | "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", 1795 | "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==" 1796 | }, 1797 | "uuid": { 1798 | "version": "8.3.2", 1799 | "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", 1800 | "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", 1801 | "optional": true 1802 | }, 1803 | "vary": { 1804 | "version": "1.1.2", 1805 | "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", 1806 | "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==" 1807 | }, 1808 | "webidl-conversions": { 1809 | "version": "7.0.0", 1810 | "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-7.0.0.tgz", 1811 | "integrity": "sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==" 1812 | }, 1813 | "whatwg-url": { 1814 | "version": "11.0.0", 1815 | "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-11.0.0.tgz", 1816 | "integrity": "sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==", 1817 | "requires": { 1818 | "tr46": "^3.0.0", 1819 | "webidl-conversions": "^7.0.0" 1820 | } 1821 | } 1822 | } 1823 | } 1824 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "rest-api", 3 | "version": "1.0.0", 4 | "description": "Simple Rest API", 5 | "main": "index.js", 6 | "scripts": { 7 | "test": "echo \"Error: no test specified\" && exit 1" 8 | }, 9 | "repository": { 10 | "type": "git", 11 | "url": "git+https://github.com/jodiekurnia/REST-API.git" 12 | }, 13 | "author": "", 14 | "license": "ISC", 15 | "bugs": { 16 | "url": "https://github.com/jodiekurnia/REST-API/issues" 17 | }, 18 | "homepage": "https://github.com/jodiekurnia/REST-API#readme", 19 | "dependencies": { 20 | "dotenv": "^16.0.3", 21 | "express": "^4.18.2", 22 | "mongoose": "^6.8.4", 23 | "nodemon": "^2.0.20" 24 | } 25 | } 26 | -------------------------------------------------------------------------------- /routes/chia.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const chiaModel = require('../models/chiaModel'); 3 | const maxPlotsModel = require('../models/maxPlotsModel'); 4 | const router = express.Router(); 5 | 6 | // Post 7 | router.get('/register/:serverid/:status', async (req, res) => { 8 | const { serverid, status } = req.params; 9 | try { 10 | // Find a document with the given serverid 11 | let data = await chiaModel.findOneAndUpdate( 12 | { serverid }, // Search condition 13 | { serverid, status }, // Update or insert data 14 | { upsert: true, new: true } // Options: create if not exists, return updated document 15 | ); 16 | res.status(200).json(data); 17 | } catch (error) { 18 | res.status(400).json({ message: error.message }); 19 | } 20 | }); 21 | 22 | // Get all Method 23 | router.get('/getAll', async (req, res) => { 24 | try { 25 | const data = await chiaModel.find({}, { serverid: 1, status: 1, _id: 0 }); 26 | res.json(data); 27 | } catch (error) { 28 | res.status(500).json({ message: error.message }); 29 | } 30 | }); 31 | 32 | // Get Max Plot 33 | router.get('/getMaxPlot', async (req, res) => { 34 | try { 35 | const data = await maxPlotsModel.findOne(); 36 | if (data) { 37 | res.status(200).json({ status: 'success', maxPlots: data.maxPlots }); 38 | } else { 39 | res.status(404).json({ status: 'error', message: 'No maxPlots found' }); 40 | } 41 | } catch (error) { 42 | res.status(500).json({ status: 'error', message: error.message }); 43 | } 44 | }); 45 | 46 | // Post Max Plot 47 | router.get('/setMaxPlot/:maxPlots', async (req, res) => { 48 | const { maxPlots } = req.params; 49 | try { 50 | const data = await maxPlotsModel.findOneAndUpdate( 51 | {}, 52 | { maxPlots }, 53 | { upsert: true, new: true } 54 | ); 55 | res.status(200).json(data); 56 | } catch (error) { 57 | const message = error.message || 'Internal Server Error'; 58 | res.status(400).json({ message }); 59 | } 60 | }); 61 | 62 | module.exports = router; 63 | -------------------------------------------------------------------------------- /routes/jodie.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const jodieModel = require("../models/jodieModel"); 3 | // const priceModel = require("../models/priceModel"); 4 | const router = express.Router(); 5 | 6 | // Get list of accounts with status 'fresh' and update their status to 'used' 7 | router.get("/get/:amount", async (req, res) => { 8 | const { amount } = req.params; 9 | 10 | try { 11 | const amountNumber = parseInt(amount); 12 | 13 | // Mengambil data dari database dengan status 'fresh' dan limit sesuai parameter amount 14 | const data = await jodieModel.find({ status: "fresh" }).limit(amountNumber); 15 | 16 | // Memeriksa apakah jumlah data yang ditemukan sesuai dengan jumlah yang diminta 17 | if (data.length < amountNumber) { 18 | return res.status(400).json({ 19 | status: "error", 20 | message: `Less than ${amountNumber} entries found.`, 21 | }); 22 | } 23 | 24 | // Memperbarui status data yang diambil menjadi 'used' 25 | await jodieModel.updateMany( 26 | { _id: { $in: data.map((entry) => entry._id) } }, 27 | { $set: { status: "used" } } 28 | ); 29 | 30 | // Memetakan data untuk hanya menyertakan email dan password 31 | const filteredData = data.map((entry) => ({ 32 | email: entry.email, 33 | password: entry.password, 34 | })); 35 | 36 | res.status(200).json({ status: "success", data: filteredData }); 37 | } catch (error) { 38 | res.status(500).json({ status: "error", message: error.message }); 39 | } 40 | }); 41 | 42 | // Endpoint untuk menambah akun, baik secara individu maupun batch 43 | router.post("/add", async (req, res) => { 44 | try { 45 | let accounts = req.body; 46 | 47 | // Jika data bukan array, ubah menjadi array 48 | if (!Array.isArray(accounts)) { 49 | accounts = [accounts]; 50 | } 51 | 52 | // Validasi data 53 | if (accounts.length === 0) { 54 | return res 55 | .status(400) 56 | .json({ status: "error", message: "No account data provided." }); 57 | } 58 | 59 | // Mengecek duplikasi email dalam array dan buat set unik 60 | const emailSet = new Set(); 61 | const duplicateEmailsInArray = new Set(); 62 | const uniqueAccounts = []; 63 | 64 | accounts.forEach((account) => { 65 | if (emailSet.has(account.email)) { 66 | duplicateEmailsInArray.add(account.email); 67 | } else { 68 | emailSet.add(account.email); 69 | uniqueAccounts.push(account); 70 | } 71 | }); 72 | 73 | // Ambil daftar email dari data yang dikirim 74 | const emailList = uniqueAccounts.map((account) => account.email); 75 | 76 | // Cari email yang sudah ada di database 77 | const existingEmails = await jodieModel 78 | .find({ email: { $in: emailList } }) 79 | .select("email"); 80 | 81 | // Buat set dari email yang sudah ada 82 | const existingEmailSet = new Set( 83 | existingEmails.map((emailDoc) => emailDoc.email) 84 | ); 85 | 86 | // Pisahkan data yang belum ada di database 87 | const newAccounts = uniqueAccounts.filter( 88 | (account) => !existingEmailSet.has(account.email) 89 | ); 90 | const existingAccounts = uniqueAccounts.filter((account) => 91 | existingEmailSet.has(account.email) 92 | ); 93 | 94 | // Simpan data yang baru ke database 95 | let result = []; 96 | if (newAccounts.length > 0) { 97 | result = await jodieModel.insertMany(newAccounts); 98 | } 99 | 100 | // Siapkan respons dengan informasi tentang data yang berhasil ditambahkan dan duplikasi 101 | const response = { 102 | status: "success", 103 | message: `Added ${newAccounts.length} new accounts.`, 104 | data: result, 105 | }; 106 | 107 | // Tambahkan informasi tentang duplikasi dalam array 108 | if (duplicateEmailsInArray.size > 0) { 109 | response.message += ` There were ${duplicateEmailsInArray.size} duplicate email addresses in the input data.`; 110 | response.duplicateEmails = Array.from(duplicateEmailsInArray); 111 | } 112 | 113 | // Tambahkan informasi tentang email yang sudah ada di database 114 | if (existingAccounts.length > 0) { 115 | response.message += ` Some email addresses already exist in the database.`; 116 | response.existingAccounts = existingAccounts; 117 | } 118 | 119 | res.status(200).json(response); 120 | } catch (error) { 121 | res.status(500).json({ status: "error", message: error.message }); 122 | } 123 | }); 124 | 125 | // // Combo EndPoint 126 | // router.post("/combo", async (req, res) => { 127 | // try { 128 | // let combo = req.body; 129 | 130 | // // Jika data bukan array, ubah menjadi array 131 | // if (!Array.isArray(combo)) { 132 | // combo = [combo]; 133 | // } 134 | 135 | // // Validasi data 136 | // if (combo.length === 0) { 137 | // return res 138 | // .status(400) 139 | // .json({ status: "error", message: "No data provided." }); 140 | // } 141 | 142 | // // Query the database for each price in the combo array 143 | // const urls = await Promise.all( 144 | // combo.map(async (price) => { 145 | // const result = await priceModel.findOne({ price }); 146 | // return result ? result.url : null; 147 | // }) 148 | // ); 149 | 150 | // // Remove null values from the results 151 | // const filteredUrls = urls.filter((url) => url !== null); 152 | 153 | // // Check if there are any URLs found 154 | // if (filteredUrls.length === 0) { 155 | // return res.status(404).json({ 156 | // status: "error", 157 | // message: "No URLs found for the provided prices.", 158 | // }); 159 | // } 160 | 161 | // // Respond with the found URLs 162 | // res.json({ status: "success", urls: filteredUrls }); 163 | // } catch (error) { 164 | // res.status(500).json({ status: "error", message: error.message }); 165 | // } 166 | // }); 167 | 168 | // // Add Combo EndPoint 169 | // router.post("/combo/add", async (req, res) => { 170 | // try { 171 | // const data = req.body; 172 | 173 | // // Validasi data 174 | // if (!Array.isArray(data) || data.length === 0) { 175 | // return res 176 | // .status(400) 177 | // .json({ status: "error", message: "No valid data provided." }); 178 | // } 179 | 180 | // // Insert data into the database 181 | // await priceModel.insertMany(data); 182 | 183 | // res.json({ status: "success", message: "Data added successfully." }); 184 | // } catch (error) { 185 | // res.status(500).json({ status: "error", message: error.message }); 186 | // } 187 | // }); 188 | 189 | // Endpoint baru untuk menghapus semua data dalam jodieModel 190 | router.get("/deleteall", async (req, res) => { 191 | try { 192 | await jodieModel.deleteMany({}); 193 | res 194 | .status(200) 195 | .json({ status: "success", message: "All records deleted." }); 196 | } catch (error) { 197 | res.status(500).json({ status: "error", message: error.message }); 198 | } 199 | }); 200 | 201 | // Report EndPoint 202 | router.get("/report", async (req, res) => { 203 | try { 204 | // Hitung jumlah email dengan status 'fresh' 205 | const freshCount = await jodieModel.countDocuments({ status: "fresh" }); 206 | 207 | // Hitung jumlah email dengan status 'used' 208 | const usedCount = await jodieModel.countDocuments({ status: "used" }); 209 | 210 | // Mengirimkan laporan sebagai respons 211 | res.status(200).json({ 212 | status: "success", 213 | report: { 214 | fresh: freshCount, 215 | used: usedCount, 216 | }, 217 | }); 218 | } catch (error) { 219 | res.status(500).json({ status: "error", message: error.message }); 220 | } 221 | }); 222 | 223 | module.exports = router; 224 | -------------------------------------------------------------------------------- /routes/khucuy.js: -------------------------------------------------------------------------------- 1 | const express = require("express"); 2 | const khucuyModel = require("../models/khucuyModel"); 3 | const router = express.Router(); 4 | 5 | // Get list of accounts with status 'fresh' and update their status to 'used' 6 | router.get("/get/:amount", async (req, res) => { 7 | const { amount } = req.params; 8 | 9 | try { 10 | const amountNumber = parseInt(amount); 11 | 12 | // Mengambil data dari database dengan status 'fresh' dan limit sesuai parameter amount 13 | const data = await khucuyModel 14 | .find({ status: "fresh" }) 15 | .limit(amountNumber); 16 | 17 | // Memeriksa apakah jumlah data yang ditemukan sesuai dengan jumlah yang diminta 18 | if (data.length < amountNumber) { 19 | return res.status(400).json({ 20 | status: "error", 21 | message: `Less than ${amountNumber} entries found.`, 22 | }); 23 | } 24 | 25 | // Memperbarui status data yang diambil menjadi 'used' 26 | await khucuyModel.updateMany( 27 | { _id: { $in: data.map((entry) => entry._id) } }, 28 | { $set: { status: "used" } } 29 | ); 30 | 31 | // Memetakan data untuk hanya menyertakan email dan password 32 | const filteredData = data.map((entry) => ({ 33 | email: entry.email, 34 | password: entry.password, 35 | })); 36 | 37 | res.status(200).json({ status: "success", data: filteredData }); 38 | } catch (error) { 39 | res.status(500).json({ status: "error", message: error.message }); 40 | } 41 | }); 42 | 43 | // Endpoint untuk menambah akun, baik secara individu maupun batch 44 | router.post("/add", async (req, res) => { 45 | try { 46 | let accounts = req.body; 47 | 48 | // Jika data bukan array, ubah menjadi array 49 | if (!Array.isArray(accounts)) { 50 | accounts = [accounts]; 51 | } 52 | 53 | // Validasi data 54 | if (accounts.length === 0) { 55 | return res 56 | .status(400) 57 | .json({ status: "error", message: "No account data provided." }); 58 | } 59 | 60 | // Mengecek duplikasi email dalam array dan buat set unik 61 | const emailSet = new Set(); 62 | const duplicateEmailsInArray = new Set(); 63 | const uniqueAccounts = []; 64 | 65 | accounts.forEach((account) => { 66 | if (emailSet.has(account.email)) { 67 | duplicateEmailsInArray.add(account.email); 68 | } else { 69 | emailSet.add(account.email); 70 | uniqueAccounts.push(account); 71 | } 72 | }); 73 | 74 | // Ambil daftar email dari data yang dikirim 75 | const emailList = uniqueAccounts.map((account) => account.email); 76 | 77 | // Cari email yang sudah ada di database 78 | const existingEmails = await khucuyModel 79 | .find({ email: { $in: emailList } }) 80 | .select("email"); 81 | 82 | // Buat set dari email yang sudah ada 83 | const existingEmailSet = new Set( 84 | existingEmails.map((emailDoc) => emailDoc.email) 85 | ); 86 | 87 | // Pisahkan data yang belum ada di database 88 | const newAccounts = uniqueAccounts.filter( 89 | (account) => !existingEmailSet.has(account.email) 90 | ); 91 | const existingAccounts = uniqueAccounts.filter((account) => 92 | existingEmailSet.has(account.email) 93 | ); 94 | 95 | // Simpan data yang baru ke database 96 | let result = []; 97 | if (newAccounts.length > 0) { 98 | result = await khucuyModel.insertMany(newAccounts); 99 | } 100 | 101 | // Siapkan respons dengan informasi tentang data yang berhasil ditambahkan dan duplikasi 102 | const response = { 103 | status: "success", 104 | message: `Added ${newAccounts.length} new accounts.`, 105 | data: result, 106 | }; 107 | 108 | // Tambahkan informasi tentang duplikasi dalam array 109 | if (duplicateEmailsInArray.size > 0) { 110 | response.message += ` There were ${duplicateEmailsInArray.size} duplicate email addresses in the input data.`; 111 | response.duplicateEmails = Array.from(duplicateEmailsInArray); 112 | } 113 | 114 | // Tambahkan informasi tentang email yang sudah ada di database 115 | if (existingAccounts.length > 0) { 116 | response.message += ` Some email addresses already exist in the database.`; 117 | response.existingAccounts = existingAccounts; 118 | } 119 | 120 | res.status(200).json(response); 121 | } catch (error) { 122 | res.status(500).json({ status: "error", message: error.message }); 123 | } 124 | }); 125 | 126 | // Report EndPoint 127 | router.get("/report", async (req, res) => { 128 | try { 129 | // Hitung jumlah email dengan status 'fresh' 130 | const freshCount = await khucuyModel.countDocuments({ status: "fresh" }); 131 | 132 | // Hitung jumlah email dengan status 'used' 133 | const usedCount = await khucuyModel.countDocuments({ status: "used" }); 134 | 135 | // Mengirimkan laporan sebagai respons 136 | res.status(200).json({ 137 | status: "success", 138 | report: { 139 | fresh: freshCount, 140 | used: usedCount, 141 | }, 142 | }); 143 | } catch (error) { 144 | res.status(500).json({ status: "error", message: error.message }); 145 | } 146 | }); 147 | 148 | module.exports = router; 149 | -------------------------------------------------------------------------------- /routes/pf.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const pfModel = require('../models/pfModel'); 3 | const router = express.Router(); 4 | 5 | // Get WhiteList (Get list of registered user IDs) 6 | router.get('/whitelist', async (req, res) => { 7 | try { 8 | const data = await pfModel.findOne(); 9 | if (data) { 10 | res.status(200).json({ status: 'success', userIds: data.userId }); 11 | // Expected response if data exists: { "status": "success", "userIds": [123456789, 987654321] } 12 | } else { 13 | res.status(404).json({ status: 'error', message: 'No user IDs found' }); 14 | // Expected response if no data exists: { "status": "error", "message": "No user IDs found" } 15 | } 16 | } catch (error) { 17 | res.status(500).json({ status: 'error', message: error.message }); 18 | // Expected response on server error: { "status": "error", "message": "Internal Server Error" } 19 | } 20 | }); 21 | 22 | // Register WhiteList (Register new user ID) 23 | router.get('/reg/:userId', async (req, res) => { 24 | const userId = Number(req.params.userId); // Convert userId to number 25 | try { 26 | const data = await pfModel.findOneAndUpdate( 27 | {}, 28 | { $addToSet: { userId } }, // Use $addToSet to ensure userId is added only if not already present 29 | { upsert: true, new: true } 30 | ); 31 | res.status(200).json({ status: 'success', data }); 32 | // Expected response after registration: { "status": "success", "data": { "_id": "ObjectId", "userId": [123456789] } } 33 | } catch (error) { 34 | res.status(400).json({ 35 | status: 'error', 36 | message: error.message || 'Internal Server Error', 37 | }); 38 | // Expected response on validation error or server error: { "status": "error", "message": "Validation Error" } 39 | } 40 | }); 41 | 42 | module.exports = router; 43 | -------------------------------------------------------------------------------- /routes/routes.js: -------------------------------------------------------------------------------- 1 | const express = require('express'); 2 | const Model = require('../models/model'); 3 | const Accounts = require('../models/accounts'); 4 | const Wa = require('../models/wa'); 5 | const router = express.Router(); 6 | 7 | //Post 8 | router.get('/post/:serverid/:status', async (req, res) => { 9 | const data = new Model({ 10 | serverid: req.params.serverid, 11 | status: req.params.status, 12 | }); 13 | 14 | try { 15 | const dataToSave = await data.save(); 16 | res.status(200).json(dataToSave); 17 | } catch (error) { 18 | res.status(400).json({ message: error.message }); 19 | } 20 | }); 21 | 22 | //Get all Method 23 | router.get('/getAll', async (req, res) => { 24 | try { 25 | const data = await Model.find().select('serverid status -_id'); 26 | res.json(data); 27 | } catch (error) { 28 | res.status(500).json({ message: error.message }); 29 | } 30 | }); 31 | 32 | //Get all Exclude ID 33 | router.get('/getAllEx/:serverid', async (req, res) => { 34 | try { 35 | const data = await Model.find({ 36 | serverid: { $ne: req.params.serverid }, 37 | }).select('serverid status -_id'); 38 | res.json(data); 39 | } catch (error) { 40 | res.status(500).json({ message: error.message }); 41 | } 42 | }); 43 | 44 | //Get by ID Method 45 | router.get('/getOne/:id', async (req, res) => { 46 | try { 47 | const data = await Model.findById(req.params.id); 48 | res.json(data); 49 | } catch (error) { 50 | res.status(500).json({ message: error.message }); 51 | } 52 | }); 53 | 54 | //Update by serverid 55 | router.get('/update/:serverid/:status', async (req, res) => { 56 | try { 57 | const result = await Model.findOneAndUpdate( 58 | { serverid: req.params.serverid }, 59 | { status: req.params.status } 60 | ); 61 | 62 | res.send(result); 63 | } catch (error) { 64 | res.status(500).json({ message: error.message }); 65 | } 66 | }); 67 | 68 | //Delete by ID Method 69 | router.delete('/delete/:id', async (req, res) => { 70 | try { 71 | const id = req.params.id; 72 | const data = await Model.findByIdAndDelete(id); 73 | res.send(`Document with ${data.name} has been deleted..`); 74 | } catch (error) { 75 | res.status(400).json({ message: error.message }); 76 | } 77 | }); 78 | 79 | /* This is New, All Accounts */ 80 | router.post('/accounts', async (req, res) => { 81 | const { email, password } = req.body; 82 | 83 | try { 84 | // Check if an account with the provided email already exists 85 | const existingAccount = await Accounts.findOne({ email }); 86 | 87 | if (existingAccount) { 88 | return res.status(400).json({ message: 'Account already exists' }); 89 | } 90 | 91 | // If the account doesn't exist, create and save the new account 92 | const account = new Accounts({ 93 | email, 94 | password, 95 | }); 96 | 97 | const dataToSave = await account.save(); 98 | res.status(200).json(dataToSave); 99 | } catch (error) { 100 | res.status(500).json({ message: 'An error occurred' }); 101 | } 102 | }); 103 | router.get('/accounts/:subs', async (req, res) => { 104 | try { 105 | const data = await Accounts.findOne({ subs: { $nin: req.params.subs } }); 106 | if (!data) { 107 | return res.status(404).json({ message: 'No Account Available' }); 108 | } 109 | res.json(data); 110 | } catch (error) { 111 | res.status(500).json({ message: error.message }); 112 | } 113 | }); 114 | router.post('/accounts/:subs', async (req, res) => { 115 | try { 116 | const result = await Accounts.findOneAndUpdate( 117 | { email: req.body.email }, 118 | { $push: { subs: req.params.subs } }, 119 | { new: true } // This option returns the updated document 120 | ); 121 | res.send(result); 122 | } catch (error) { 123 | res.status(500).json({ message: error.message }); 124 | } 125 | }); 126 | 127 | // WA API 128 | router.post('/wa', async (req, res) => { 129 | const { nomor, wa_id, isBusiness, canReceiveMessage, numberExists } = 130 | req.body; 131 | try { 132 | // Check if an WA with the provided email already exists 133 | const existingWA = await Wa.findOne({ wa_id }); 134 | if (existingWA) { 135 | return res.status(400).json({ message: 'This Number Already Exists!' }); 136 | } 137 | // If the account doesn't exist, create and save the new account 138 | const WA = new Wa({ 139 | nomor, 140 | wa_id, 141 | isBusiness, 142 | canReceiveMessage, 143 | numberExists, 144 | }); 145 | 146 | const dataToSave = await WA.save(); 147 | res.status(200).json(dataToSave); 148 | } catch (error) { 149 | res.status(500).json({ message: 'An error occurred' }); 150 | } 151 | }); 152 | router.get('/wa/:number', async (req, res) => { 153 | const number = req.params.number; 154 | try { 155 | const data = await Wa.findOne({ nomor: number }); 156 | if (data) { 157 | return res.status(400).json({ message: 'This Number Already Exists!' }); 158 | } 159 | return res.status(200).json({ message: 'Account Not Exists!' }); 160 | } catch (error) { 161 | res.status(500).json({ message: 'An error occurred' }); 162 | } 163 | }); 164 | module.exports = router; 165 | -------------------------------------------------------------------------------- /vercel.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": 2, 3 | "builds": [ 4 | { 5 | "src": "index.js", 6 | "use": "@now/node" 7 | } 8 | ], 9 | "routes": [ 10 | { 11 | "src": "/(.*)", 12 | "dest": "index.js" 13 | } 14 | ] 15 | } 16 | --------------------------------------------------------------------------------